diff --git a/Content.Client/Construction/FlatpackSystem.cs b/Content.Client/Construction/FlatpackSystem.cs
new file mode 100644
index 0000000000..911ff1279c
--- /dev/null
+++ b/Content.Client/Construction/FlatpackSystem.cs
@@ -0,0 +1,48 @@
+using Content.Shared.Construction;
+using Content.Shared.Construction.Components;
+using Robust.Client.GameObjects;
+using Robust.Shared.Prototypes;
+
+namespace Content.Client.Construction;
+
+///
+public sealed class FlatpackSystem : SharedFlatpackSystem
+{
+ [Dependency] private readonly AppearanceSystem _appearance = default!;
+
+ ///
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ SubscribeLocalEvent(OnAppearanceChange);
+ }
+
+ private void OnAppearanceChange(Entity ent, ref AppearanceChangeEvent args)
+ {
+ var (_, comp) = ent;
+ if (!_appearance.TryGetData(ent, FlatpackVisuals.Machine, out var machineBoardId) || args.Sprite == null)
+ return;
+
+ if (!PrototypeManager.TryIndex(machineBoardId, out var machineBoardPrototype))
+ return;
+
+ if (!machineBoardPrototype.TryGetComponent(out var sprite))
+ return;
+
+ Color? color = null;
+ foreach (var layer in sprite.AllLayers)
+ {
+ if (layer.RsiState.Name is not { } spriteState)
+ continue;
+
+ if (!comp.BoardColors.TryGetValue(spriteState, out var c))
+ continue;
+ color = c;
+ break;
+ }
+
+ if (color != null)
+ args.Sprite.LayerSetColor(FlatpackVisualLayers.Overlay, color.Value);
+ }
+}
diff --git a/Content.Client/Construction/UI/FlatpackCreatorBoundUserInterface.cs b/Content.Client/Construction/UI/FlatpackCreatorBoundUserInterface.cs
new file mode 100644
index 0000000000..86f1b8b83c
--- /dev/null
+++ b/Content.Client/Construction/UI/FlatpackCreatorBoundUserInterface.cs
@@ -0,0 +1,40 @@
+using Content.Shared.Construction.Components;
+using JetBrains.Annotations;
+
+namespace Content.Client.Construction.UI
+{
+ [UsedImplicitly]
+ public sealed class FlatpackCreatorBoundUserInterface : BoundUserInterface
+ {
+ [ViewVariables]
+ private FlatpackCreatorMenu? _menu;
+
+ public FlatpackCreatorBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
+ {
+ }
+
+ protected override void Open()
+ {
+ base.Open();
+
+ _menu = new FlatpackCreatorMenu(Owner);
+ _menu.OnClose += Close;
+
+ _menu.PackButtonPressed += () =>
+ {
+ SendMessage(new FlatpackCreatorStartPackBuiMessage());
+ };
+
+ _menu.OpenCentered();
+ }
+
+ protected override void Dispose(bool disposing)
+ {
+ base.Dispose(disposing);
+ if (!disposing)
+ return;
+
+ _menu?.Dispose();
+ }
+ }
+}
diff --git a/Content.Client/Construction/UI/FlatpackCreatorMenu.xaml b/Content.Client/Construction/UI/FlatpackCreatorMenu.xaml
new file mode 100644
index 0000000000..5dffc5aa7f
--- /dev/null
+++ b/Content.Client/Construction/UI/FlatpackCreatorMenu.xaml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Content.Client/Construction/UI/FlatpackCreatorMenu.xaml.cs b/Content.Client/Construction/UI/FlatpackCreatorMenu.xaml.cs
new file mode 100644
index 0000000000..3041f6a504
--- /dev/null
+++ b/Content.Client/Construction/UI/FlatpackCreatorMenu.xaml.cs
@@ -0,0 +1,147 @@
+using System.Linq;
+using Content.Client.Materials;
+using Content.Client.Message;
+using Content.Client.UserInterface.Controls;
+using Content.Shared.Construction.Components;
+using Content.Shared.Containers.ItemSlots;
+using Content.Shared.Materials;
+using Robust.Client.AutoGenerated;
+using Robust.Client.GameObjects;
+using Robust.Client.UserInterface.XAML;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Timing;
+using Robust.Shared.Utility;
+
+namespace Content.Client.Construction.UI;
+
+[GenerateTypedNameReferences]
+public sealed partial class FlatpackCreatorMenu : FancyWindow
+{
+ [Dependency] private readonly IEntityManager _entityManager = default!;
+ [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
+
+ private readonly ItemSlotsSystem _itemSlots;
+ private readonly FlatpackSystem _flatpack;
+ private readonly MaterialStorageSystem _materialStorage;
+ private readonly SpriteSystem _spriteSystem;
+
+ private readonly EntityUid _owner;
+
+ private EntityUid? _currentBoard = EntityUid.Invalid;
+ private EntityUid? _machinePreview;
+
+ public event Action? PackButtonPressed;
+
+ public FlatpackCreatorMenu(EntityUid uid)
+ {
+ RobustXamlLoader.Load(this);
+ IoCManager.InjectDependencies(this);
+
+ _itemSlots = _entityManager.System();
+ _flatpack = _entityManager.System();
+ _materialStorage = _entityManager.System();
+ _spriteSystem = _entityManager.System();
+
+ _owner = uid;
+
+ PackButton.OnPressed += _ => PackButtonPressed?.Invoke();
+
+ MaterialStorageControl.SetOwner(uid);
+ }
+
+ protected override void FrameUpdate(FrameEventArgs args)
+ {
+ base.FrameUpdate(args);
+
+ if (_machinePreview is not { } && _entityManager.Deleted(_machinePreview))
+ {
+ _machinePreview = null;
+ MachineSprite.SetEntity(_machinePreview);
+ }
+
+ if (!_entityManager.TryGetComponent(_owner, out var flatpacker) ||
+ !_itemSlots.TryGetSlot(_owner, flatpacker.SlotId, out var itemSlot))
+ return;
+
+ if (flatpacker.Packing)
+ {
+ PackButton.Disabled = true;
+ }
+ else if (_currentBoard != null)
+ {
+ //todo double trycomp is kinda stinky.
+ if (_entityManager.TryGetComponent(_currentBoard, out var board) &&
+ board.Prototype != null)
+ {
+ var cost = _flatpack.GetFlatpackCreationCost((_owner, flatpacker),
+ (_currentBoard.Value, board));
+ PackButton.Disabled = !_materialStorage.CanChangeMaterialAmount(_owner, cost);
+ }
+ }
+
+ if (_currentBoard == itemSlot.Item)
+ return;
+
+ if (_machinePreview != null)
+ _entityManager.DeleteEntity(_machinePreview);
+
+ _currentBoard = itemSlot.Item;
+ CostHeaderLabel.Visible = _currentBoard != null;
+
+ if (_currentBoard != null &&
+ _entityManager.TryGetComponent(_currentBoard, out var machineBoard) &&
+ machineBoard.Prototype != null)
+ {
+ var proto = _prototypeManager.Index(machineBoard.Prototype);
+ _machinePreview = _entityManager.Spawn(proto.ID);
+ _spriteSystem.ForceUpdate(_machinePreview.Value);
+ MachineNameLabel.SetMessage(proto.Name);
+ var cost = _flatpack.GetFlatpackCreationCost((_owner, flatpacker),
+ (_currentBoard.Value, machineBoard));
+ CostLabel.SetMarkup(GetCostString(cost));
+ }
+ else
+ {
+ _machinePreview = null;
+ MachineNameLabel.SetMessage(" ");
+ CostLabel.SetMessage(Loc.GetString("flatpacker-ui-no-board-label"));
+ PackButton.Disabled = true;
+ }
+
+ MachineSprite.SetEntity(_machinePreview);
+ }
+
+ //todo beautify
+ private string GetCostString(Dictionary costs)
+ {
+ var orderedCosts = costs.OrderBy(p => p.Value);
+ var msg = new FormattedMessage();
+ foreach (var (mat, amount) in orderedCosts)
+ {
+ var matProto = _prototypeManager.Index(mat);
+
+ var sheetVolume = _materialStorage.GetSheetVolume(matProto);
+ var sheets = (float) -amount / sheetVolume;
+ var amountText = Loc.GetString("lathe-menu-material-amount",
+ ("amount", sheets),
+ ("unit", Loc.GetString(matProto.Unit)));
+ var text = Loc.GetString("lathe-menu-tooltip-display",
+ ("amount", amountText),
+ ("material", Loc.GetString(matProto.Name)));
+
+ msg.AddMarkup(text);
+ msg.PushNewline();
+ }
+ msg.Pop();
+
+ return msg.ToMarkup();
+ }
+
+ public override void Close()
+ {
+ base.Close();
+
+ _entityManager.DeleteEntity(_machinePreview);
+ _machinePreview = null;
+ }
+}
diff --git a/Content.Client/Eye/Blinding/BlindOverlay.cs b/Content.Client/Eye/Blinding/BlindOverlay.cs
index 1730db59c6..0e380a515f 100644
--- a/Content.Client/Eye/Blinding/BlindOverlay.cs
+++ b/Content.Client/Eye/Blinding/BlindOverlay.cs
@@ -82,8 +82,10 @@ namespace Content.Client.Eye.Blinding
if (_entityManager.TryGetComponent(playerEntity, out var content))
{
- _circleMaskShader?.SetParameter("ZOOM", content.Zoom.X);
+ _circleMaskShader?.SetParameter("Zoom", content.Zoom.X);
}
+
+ _circleMaskShader?.SetParameter("SCREEN_TEXTURE", ScreenTexture);
_greyscaleShader?.SetParameter("SCREEN_TEXTURE", ScreenTexture);
var worldHandle = args.WorldHandle;
diff --git a/Content.Client/Eye/Blinding/BlurryVisionOverlay.cs b/Content.Client/Eye/Blinding/BlurryVisionOverlay.cs
index 7d0e7916da..b56b091309 100644
--- a/Content.Client/Eye/Blinding/BlurryVisionOverlay.cs
+++ b/Content.Client/Eye/Blinding/BlurryVisionOverlay.cs
@@ -1,9 +1,10 @@
using Robust.Client.Graphics;
using Robust.Client.Player;
+using Content.Shared.CCVar;
using Robust.Shared.Enums;
using Robust.Shared.Prototypes;
-using Content.Shared.Eye.Blinding;
using Content.Shared.Eye.Blinding.Components;
+using Robust.Shared.Configuration;
namespace Content.Client.Eye.Blinding
{
@@ -11,24 +12,45 @@ namespace Content.Client.Eye.Blinding
{
[Dependency] private readonly IEntityManager _entityManager = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!;
+ [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
+ [Dependency] private readonly IConfigurationManager _configManager = default!;
+ public override bool RequestScreenTexture => true;
public override OverlaySpace Space => OverlaySpace.WorldSpace;
+ private readonly ShaderInstance _cataractsShader;
+ private readonly ShaderInstance _circleMaskShader;
private float _magnitude;
+ private float _correctionPower = 2.0f;
+
+ private const float Distortion_Pow = 2.0f; // Exponent for the distortion effect
+ private const float Cloudiness_Pow = 1.0f; // Exponent for the cloudiness effect
+
+ private const float NoMotion_Radius = 30.0f; // Base radius for the nomotion variant at its full strength
+ private const float NoMotion_Pow = 0.2f; // Exponent for the nomotion variant's gradient
+ private const float NoMotion_Max = 8.0f; // Max value for the nomotion variant's gradient
+ private const float NoMotion_Mult = 0.75f; // Multiplier for the nomotion variant
public BlurryVisionOverlay()
{
IoCManager.InjectDependencies(this);
+ _cataractsShader = _prototypeManager.Index("Cataracts").InstanceUnique();
+ _circleMaskShader = _prototypeManager.Index("CircleMask").InstanceUnique();
+
+ _circleMaskShader.SetParameter("CircleMinDist", 0.0f);
+ _circleMaskShader.SetParameter("CirclePow", NoMotion_Pow);
+ _circleMaskShader.SetParameter("CircleMax", NoMotion_Max);
+ _circleMaskShader.SetParameter("CircleMult", NoMotion_Mult);
}
protected override bool BeforeDraw(in OverlayDrawArgs args)
{
- if (!_entityManager.TryGetComponent(_playerManager.LocalPlayer?.ControlledEntity, out EyeComponent? eyeComp))
+ if (!_entityManager.TryGetComponent(_playerManager.LocalSession?.AttachedEntity, out EyeComponent? eyeComp))
return false;
if (args.Viewport.Eye != eyeComp.Eye)
return false;
- var playerEntity = _playerManager.LocalPlayer?.ControlledEntity;
+ var playerEntity = _playerManager.LocalSession?.AttachedEntity;
if (playerEntity == null)
return false;
@@ -44,21 +66,52 @@ namespace Content.Client.Eye.Blinding
return false;
_magnitude = blurComp.Magnitude;
+ _correctionPower = blurComp.CorrectionPower;
return true;
}
protected override void Draw(in OverlayDrawArgs args)
{
- // TODO make this better.
- // This is a really shitty effect.
- // Maybe gradually shrink the view-size?
- // Make the effect only apply to the edge of the viewport?
- // Actually make it blurry??
- var opacity = 1f * _magnitude / BlurryVisionComponent.MaxMagnitude;
+ if (ScreenTexture == null)
+ return;
+
+ var playerEntity = _playerManager.LocalSession?.AttachedEntity;
+
var worldHandle = args.WorldHandle;
var viewport = args.WorldBounds;
- worldHandle.SetTransform(Matrix3.Identity);
- worldHandle.DrawRect(viewport, Color.Black.WithAlpha(opacity));
+ var strength = (float) Math.Pow(Math.Min(_magnitude / BlurryVisionComponent.MaxMagnitude, 1.0f), _correctionPower);
+
+ var zoom = 1.0f;
+ if (_entityManager.TryGetComponent(playerEntity, out var eyeComponent))
+ {
+ zoom = eyeComponent.Zoom.X;
+ }
+
+ // While the cataracts shader is designed to be tame enough to keep motion sickness at bay, the general waviness means that those who are particularly sensitive to motion sickness will probably hurl.
+ // So the reasonable alternative here is to replace it with a static effect! Specifically, one that replicates the blindness effect seen across most SS13 servers.
+ if (_configManager.GetCVar(CCVars.ReducedMotion))
+ {
+ _circleMaskShader.SetParameter("SCREEN_TEXTURE", ScreenTexture);
+ _circleMaskShader.SetParameter("Zoom", zoom);
+ _circleMaskShader.SetParameter("CircleRadius", NoMotion_Radius / strength);
+
+ worldHandle.UseShader(_circleMaskShader);
+ worldHandle.DrawRect(viewport, Color.White);
+ worldHandle.UseShader(null);
+ return;
+ }
+
+ _cataractsShader.SetParameter("SCREEN_TEXTURE", ScreenTexture);
+ _cataractsShader.SetParameter("LIGHT_TEXTURE", args.Viewport.LightRenderTarget.Texture); // this is a little hacky but we spent way longer than we'd like to admit trying to do this a cleaner way to no avail
+
+ _cataractsShader.SetParameter("Zoom", zoom);
+
+ _cataractsShader.SetParameter("DistortionScalar", (float) Math.Pow(strength, Distortion_Pow));
+ _cataractsShader.SetParameter("CloudinessScalar", (float) Math.Pow(strength, Cloudiness_Pow));
+
+ worldHandle.UseShader(_cataractsShader);
+ worldHandle.DrawRect(viewport, Color.White);
+ worldHandle.UseShader(null);
}
}
}
diff --git a/Content.Client/Light/Visualizers/PoweredLightVisualizerSystem.cs b/Content.Client/Light/Visualizers/PoweredLightVisualizerSystem.cs
index e7fcf7e219..db703128a3 100644
--- a/Content.Client/Light/Visualizers/PoweredLightVisualizerSystem.cs
+++ b/Content.Client/Light/Visualizers/PoweredLightVisualizerSystem.cs
@@ -30,6 +30,9 @@ public sealed class PoweredLightVisualizerSystem : VisualizerSystem
diff --git a/Content.Client/Materials/UI/MaterialStorageControl.xaml.cs b/Content.Client/Materials/UI/MaterialStorageControl.xaml.cs
index c95bd1957f..3ef247d529 100644
--- a/Content.Client/Materials/UI/MaterialStorageControl.xaml.cs
+++ b/Content.Client/Materials/UI/MaterialStorageControl.xaml.cs
@@ -37,9 +37,9 @@ public sealed partial class MaterialStorageControl : BoxContainer
if (_owner == null)
return;
- if (!_entityManager.TryGetComponent(_owner, out var materialStorage))
+ if (_entityManager.Deleted(_owner) || !_entityManager.TryGetComponent(_owner, out var materialStorage))
{
- Dispose();
+ _owner = null;
return;
}
diff --git a/Content.Client/Options/UI/Tabs/MiscTab.xaml b/Content.Client/Options/UI/Tabs/MiscTab.xaml
index 34712e5e2f..e37333b0e4 100644
--- a/Content.Client/Options/UI/Tabs/MiscTab.xaml
+++ b/Content.Client/Options/UI/Tabs/MiscTab.xaml
@@ -18,6 +18,10 @@
+
+
diff --git a/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs b/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs
index cdf8df4ee7..1d6975722e 100644
--- a/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs
+++ b/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs
@@ -62,6 +62,7 @@ namespace Content.Client.Options.UI.Tabs
OpaqueStorageWindowCheckBox.OnToggled += OnCheckBoxToggled;
FancySpeechBubblesCheckBox.OnToggled += OnCheckBoxToggled;
FancyNameBackgroundsCheckBox.OnToggled += OnCheckBoxToggled;
+ ReducedMotionCheckBox.OnToggled += OnCheckBoxToggled;
// ToggleWalk.OnToggled += OnCheckBoxToggled;
StaticStorageUI.OnToggled += OnCheckBoxToggled;
@@ -109,6 +110,7 @@ namespace Content.Client.Options.UI.Tabs
_cfg.SetCVar(CCVars.LoocAboveHeadShow, ShowLoocAboveHeadCheckBox.Pressed);
_cfg.SetCVar(CCVars.ChatEnableFancyBubbles, FancySpeechBubblesCheckBox.Pressed);
_cfg.SetCVar(CCVars.ChatFancyNameBackground, FancyNameBackgroundsCheckBox.Pressed);
+ _cfg.SetCVar(CCVars.ReducedMotion, ReducedMotionCheckBox.Pressed);
// _cfg.SetCVar(CCVars.ToggleWalk, ToggleWalk.Pressed);
_cfg.SetCVar(CCVars.StaticStorageUI, StaticStorageUI.Pressed);
@@ -132,6 +134,7 @@ namespace Content.Client.Options.UI.Tabs
var isLoocShowSame = ShowLoocAboveHeadCheckBox.Pressed == _cfg.GetCVar(CCVars.LoocAboveHeadShow);
var isFancyChatSame = FancySpeechBubblesCheckBox.Pressed == _cfg.GetCVar(CCVars.ChatEnableFancyBubbles);
var isFancyBackgroundSame = FancyNameBackgroundsCheckBox.Pressed == _cfg.GetCVar(CCVars.ChatFancyNameBackground);
+ var isReducedMotionSame = ReducedMotionCheckBox.Pressed == _cfg.GetCVar(CCVars.ReducedMotion);
// var isToggleWalkSame = ToggleWalk.Pressed == _cfg.GetCVar(CCVars.ToggleWalk);
var isStaticStorageUISame = StaticStorageUI.Pressed == _cfg.GetCVar(CCVars.StaticStorageUI);
@@ -144,6 +147,7 @@ namespace Content.Client.Options.UI.Tabs
isLoocShowSame &&
isFancyChatSame &&
isFancyBackgroundSame &&
+ isReducedMotionSame &&
// isToggleWalkSame &&
isStaticStorageUISame;
}
diff --git a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml
index 8a10f17e59..a0f143bbe7 100644
--- a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml
+++ b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml
@@ -54,6 +54,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -72,30 +96,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Content.Client/Tools/UI/WelderStatusControl.cs b/Content.Client/Tools/UI/WelderStatusControl.cs
index 8da7a1448b..f1c5999453 100644
--- a/Content.Client/Tools/UI/WelderStatusControl.cs
+++ b/Content.Client/Tools/UI/WelderStatusControl.cs
@@ -5,6 +5,7 @@ using Content.Shared.Item;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
using Robust.Shared.Timing;
+using ItemToggleComponent = Content.Shared.Item.ItemToggle.Components.ItemToggleComponent;
namespace Content.Client.Tools.UI;
diff --git a/Content.Client/Weapons/Reflect/ReflectSystem.cs b/Content.Client/Weapons/Reflect/ReflectSystem.cs
deleted file mode 100644
index 46f00a4d70..0000000000
--- a/Content.Client/Weapons/Reflect/ReflectSystem.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using Content.Shared.Weapons.Reflect;
-
-namespace Content.Client.Weapons.Reflect;
-
-public sealed class ReflectSystem : SharedReflectSystem
-{
-}
diff --git a/Content.IntegrationTests/Tests/ConfigPresetTests.cs b/Content.IntegrationTests/Tests/ConfigPresetTests.cs
index 9defdcee99..ebeea7f391 100644
--- a/Content.IntegrationTests/Tests/ConfigPresetTests.cs
+++ b/Content.IntegrationTests/Tests/ConfigPresetTests.cs
@@ -27,9 +27,9 @@ public sealed class ConfigPresetTests
originalCVars.Add((cvar, value));
}
- var originalCvarsStream = new MemoryStream();
- config.SaveToTomlStream(originalCvarsStream, config.GetRegisteredCVars());
- originalCvarsStream.Position = 0;
+ var originalCVarsStream = new MemoryStream();
+ config.SaveToTomlStream(originalCVarsStream, config.GetRegisteredCVars());
+ originalCVarsStream.Position = 0;
var presets = resources.ContentFindFiles(EntryPoint.ConfigPresetsDir);
Assert.Multiple(() =>
@@ -41,7 +41,12 @@ public sealed class ConfigPresetTests
}
});
- config.LoadDefaultsFromTomlStream(originalCvarsStream);
+ config.LoadDefaultsFromTomlStream(originalCVarsStream);
+
+ foreach (var (cvar, value) in originalCVars)
+ {
+ config.SetCVar(cvar, value);
+ }
foreach (var originalCVar in originalCVars)
{
diff --git a/Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs b/Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs
index 9aa0157c8a..42d58a88c9 100644
--- a/Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs
+++ b/Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs
@@ -23,6 +23,7 @@ using Robust.Shared.Input;
using Robust.Shared.Map;
using Robust.Shared.Map.Components;
using Robust.Shared.Maths;
+using ItemToggleComponent = Content.Shared.Item.ItemToggle.Components.ItemToggleComponent;
namespace Content.IntegrationTests.Tests.Interaction;
diff --git a/Content.Server/Ame/Components/AmePartComponent.cs b/Content.Server/Ame/Components/AmePartComponent.cs
deleted file mode 100644
index 2d294747d7..0000000000
--- a/Content.Server/Ame/Components/AmePartComponent.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using Content.Shared.Tools;
-using Robust.Shared.Audio;
-using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
-
-namespace Content.Server.Ame.Components;
-
-///
-/// Packaged AME machinery that can be deployed to construct an AME.
-///
-[RegisterComponent]
-public sealed partial class AmePartComponent : Component
-{
- ///
- /// The sound played when the AME shielding is unpacked.
- ///
- [DataField("unwrapSound")]
- public SoundSpecifier UnwrapSound = new SoundPathSpecifier("/Audio/Effects/unwrap.ogg");
-
- ///
- /// The tool quality required to deploy the packaged AME shielding.
- ///
- [DataField("qualityNeeded", customTypeSerializer: typeof(PrototypeIdSerializer))]
- public string QualityNeeded = "Pulsing";
-}
diff --git a/Content.Server/Ame/EntitySystems/AmePartSystem.cs b/Content.Server/Ame/EntitySystems/AmePartSystem.cs
deleted file mode 100644
index a75c092e2e..0000000000
--- a/Content.Server/Ame/EntitySystems/AmePartSystem.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-using System.Linq;
-using Content.Server.Administration.Logs;
-using Content.Server.Ame.Components;
-using Content.Server.Popups;
-using Content.Server.Tools;
-using Content.Shared.Database;
-using Content.Shared.Hands.Components;
-using Content.Shared.Interaction;
-using Robust.Shared.Audio;
-using Robust.Shared.Audio.Systems;
-using Robust.Shared.Map;
-
-namespace Content.Server.Ame.EntitySystems;
-
-public sealed class AmePartSystem : EntitySystem
-{
- [Dependency] private readonly IMapManager _mapManager = default!;
- [Dependency] private readonly SharedAudioSystem _audioSystem = default!;
- [Dependency] private readonly PopupSystem _popupSystem = default!;
- [Dependency] private readonly ToolSystem _toolSystem = default!;
- [Dependency] private readonly IAdminLogManager _adminLogger = default!;
-
- public override void Initialize()
- {
- base.Initialize();
-
- SubscribeLocalEvent(OnPartInteractUsing);
- }
-
- private void OnPartInteractUsing(EntityUid uid, AmePartComponent component, InteractUsingEvent args)
- {
- if (!_toolSystem.HasQuality(args.Used, component.QualityNeeded))
- return;
-
- if (!_mapManager.TryGetGrid(args.ClickLocation.GetGridUid(EntityManager), out var mapGrid))
- return; // No AME in space.
-
- var snapPos = mapGrid.TileIndicesFor(args.ClickLocation);
- if (mapGrid.GetAnchoredEntities(snapPos).Any(sc => HasComp(sc)))
- {
- _popupSystem.PopupEntity(Loc.GetString("ame-part-component-shielding-already-present"), uid, args.User);
- return;
- }
-
- var ent = Spawn("AmeShielding", mapGrid.GridTileToLocal(snapPos));
-
- _adminLogger.Add(LogType.Construction, LogImpact.Low, $"{ToPrettyString(args.User):player} unpacked {ToPrettyString(ent)} at {Transform(ent).Coordinates} from {ToPrettyString(uid)}");
-
- _audioSystem.PlayPvs(component.UnwrapSound, uid);
-
- QueueDel(uid);
- }
-}
diff --git a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs
index 492d8cb0bd..f38e0299a0 100644
--- a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs
+++ b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs
@@ -36,7 +36,7 @@ namespace Content.Server.Atmos.Piping.Trinary.EntitySystems
SubscribeLocalEvent(OnInit);
SubscribeLocalEvent(OnFilterUpdated);
SubscribeLocalEvent(OnFilterLeaveAtmosphere);
- SubscribeLocalEvent(OnFilterInteractHand);
+ SubscribeLocalEvent(OnFilterActivate);
SubscribeLocalEvent(OnFilterAnalyzed);
// Bound UI subscriptions
SubscribeLocalEvent(OnTransferRateChangeMessage);
@@ -101,7 +101,7 @@ namespace Content.Server.Atmos.Piping.Trinary.EntitySystems
_userInterfaceSystem.TryCloseAll(uid, GasFilterUiKey.Key);
}
- private void OnFilterInteractHand(EntityUid uid, GasFilterComponent filter, InteractHandEvent args)
+ private void OnFilterActivate(EntityUid uid, GasFilterComponent filter, ActivateInWorldEvent args)
{
if (!EntityManager.TryGetComponent(args.User, out ActorComponent? actor))
return;
diff --git a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasMixerSystem.cs b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasMixerSystem.cs
index 6d03c86248..fb65c17f61 100644
--- a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasMixerSystem.cs
+++ b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasMixerSystem.cs
@@ -35,7 +35,7 @@ namespace Content.Server.Atmos.Piping.Trinary.EntitySystems
SubscribeLocalEvent(OnInit);
SubscribeLocalEvent(OnMixerUpdated);
- SubscribeLocalEvent(OnMixerInteractHand);
+ SubscribeLocalEvent(OnMixerActivate);
SubscribeLocalEvent(OnMixerAnalyzed);
// Bound UI subscriptions
SubscribeLocalEvent(OnOutputPressureChangeMessage);
@@ -147,7 +147,7 @@ namespace Content.Server.Atmos.Piping.Trinary.EntitySystems
_userInterfaceSystem.TryCloseAll(uid, GasFilterUiKey.Key);
}
- private void OnMixerInteractHand(EntityUid uid, GasMixerComponent mixer, InteractHandEvent args)
+ private void OnMixerActivate(EntityUid uid, GasMixerComponent mixer, ActivateInWorldEvent args)
{
if (!EntityManager.TryGetComponent(args.User, out ActorComponent? actor))
return;
diff --git a/Content.Server/Chemistry/Components/SolutionInjectOnCollideComponent.cs b/Content.Server/Chemistry/Components/SolutionInjectOnCollideComponent.cs
index 073bc1167c..c1d0fec05a 100644
--- a/Content.Server/Chemistry/Components/SolutionInjectOnCollideComponent.cs
+++ b/Content.Server/Chemistry/Components/SolutionInjectOnCollideComponent.cs
@@ -1,29 +1,27 @@
using Content.Shared.FixedPoint;
using Content.Shared.Inventory;
-namespace Content.Server.Chemistry.Components
+namespace Content.Server.Chemistry.Components;
+
+///
+/// On colliding with an entity that has a bloodstream will dump its solution onto them.
+///
+[RegisterComponent]
+public sealed partial class SolutionInjectOnCollideComponent : Component
{
+ [ViewVariables(VVAccess.ReadWrite)]
+ [DataField("transferAmount")]
+ public FixedPoint2 TransferAmount = FixedPoint2.New(1);
+
+ [ViewVariables(VVAccess.ReadWrite)]
+ public float TransferEfficiency { get => _transferEfficiency; set => _transferEfficiency = Math.Clamp(value, 0, 1); }
+
+ [DataField("transferEfficiency")]
+ private float _transferEfficiency = 1f;
+
///
- /// On colliding with an entity that has a bloodstream will dump its solution onto them.
+ /// If anything covers any of these slots then the injection fails.
///
- [RegisterComponent]
- internal sealed partial class SolutionInjectOnCollideComponent : Component
- {
-
- [ViewVariables(VVAccess.ReadWrite)]
- [DataField("transferAmount")]
- public FixedPoint2 TransferAmount { get; set; } = FixedPoint2.New(1);
-
- [ViewVariables(VVAccess.ReadWrite)]
- public float TransferEfficiency { get => _transferEfficiency; set => _transferEfficiency = Math.Clamp(value, 0, 1); }
-
- [DataField("transferEfficiency")]
- private float _transferEfficiency = 1f;
-
- ///
- /// If anything covers any of these slots then the injection fails.
- ///
- [DataField("blockSlots"), ViewVariables(VVAccess.ReadWrite)]
- public SlotFlags BlockSlots = SlotFlags.MASK;
- }
+ [DataField("blockSlots"), ViewVariables(VVAccess.ReadWrite)]
+ public SlotFlags BlockSlots = SlotFlags.MASK;
}
diff --git a/Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs
index f881240a09..446be0ca77 100644
--- a/Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs
+++ b/Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs
@@ -6,48 +6,47 @@ using Content.Shared.Inventory;
using JetBrains.Annotations;
using Robust.Shared.Physics.Events;
-namespace Content.Server.Chemistry.EntitySystems
+namespace Content.Server.Chemistry.EntitySystems;
+
+public sealed class SolutionInjectOnCollideSystem : EntitySystem
{
- [UsedImplicitly]
- internal sealed class SolutionInjectOnCollideSystem : EntitySystem
+ [Dependency] private readonly SolutionContainerSystem _solutionContainersSystem = default!;
+ [Dependency] private readonly BloodstreamSystem _bloodstreamSystem = default!;
+ [Dependency] private readonly InventorySystem _inventorySystem = default!;
+
+ public override void Initialize()
{
- [Dependency] private readonly SolutionContainerSystem _solutionContainersSystem = default!;
- [Dependency] private readonly BloodstreamSystem _bloodstreamSystem = default!;
- [Dependency] private readonly InventorySystem _inventorySystem = default!;
+ base.Initialize();
+ SubscribeLocalEvent(HandleInjection);
+ }
- public override void Initialize()
+ private void HandleInjection(Entity ent, ref StartCollideEvent args)
+ {
+ var component = ent.Comp;
+ var target = args.OtherEntity;
+
+ if (!args.OtherBody.Hard ||
+ !args.OurBody.Hard ||
+ !EntityManager.TryGetComponent(target, out var bloodstream) ||
+ !_solutionContainersSystem.TryGetInjectableSolution(ent.Owner, out var solution, out _))
{
- base.Initialize();
- SubscribeLocalEvent(HandleInjection);
+ return;
}
- private void HandleInjection(Entity ent, ref StartCollideEvent args)
+ if (component.BlockSlots != 0x0)
{
- var component = ent.Comp;
- var target = args.OtherEntity;
+ var containerEnumerator = _inventorySystem.GetSlotEnumerator(target, component.BlockSlots);
- if (!args.OtherBody.Hard ||
- !EntityManager.TryGetComponent(target, out var bloodstream) ||
- !_solutionContainersSystem.TryGetInjectableSolution(ent.Owner, out var solution, out _))
- {
+ // TODO add a helper method for this?
+ if (containerEnumerator.MoveNext(out _))
return;
- }
-
- if (component.BlockSlots != 0x0)
- {
- var containerEnumerator = _inventorySystem.GetSlotEnumerator(target, component.BlockSlots);
-
- // TODO add a helper method for this?
- if (containerEnumerator.MoveNext(out _))
- return;
- }
-
- var solRemoved = _solutionContainersSystem.SplitSolution(solution.Value, component.TransferAmount);
- var solRemovedVol = solRemoved.Volume;
-
- var solToInject = solRemoved.SplitSolution(solRemovedVol * component.TransferEfficiency);
-
- _bloodstreamSystem.TryAddToChemicals(target, solToInject, bloodstream);
}
+
+ var solRemoved = _solutionContainersSystem.SplitSolution(solution.Value, component.TransferAmount);
+ var solRemovedVol = solRemoved.Volume;
+
+ var solToInject = solRemoved.SplitSolution(solRemovedVol * component.TransferEfficiency);
+
+ _bloodstreamSystem.TryAddToChemicals(target, solToInject, bloodstream);
}
}
diff --git a/Content.Server/Construction/FlatpackSystem.cs b/Content.Server/Construction/FlatpackSystem.cs
new file mode 100644
index 0000000000..b5f9228158
--- /dev/null
+++ b/Content.Server/Construction/FlatpackSystem.cs
@@ -0,0 +1,98 @@
+using Content.Server.Audio;
+using Content.Server.Power.Components;
+using Content.Server.Power.EntitySystems;
+using Content.Shared.Construction;
+using Content.Shared.Construction.Components;
+using Content.Shared.Containers.ItemSlots;
+using Robust.Shared.Timing;
+
+namespace Content.Server.Construction;
+
+///
+public sealed class FlatpackSystem : SharedFlatpackSystem
+{
+ [Dependency] private readonly IGameTiming _timing = default!;
+ [Dependency] private readonly AmbientSoundSystem _ambientSound = default!;
+ [Dependency] private readonly ItemSlotsSystem _itemSlots = default!;
+
+ ///
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ SubscribeLocalEvent(OnStartPack);
+ SubscribeLocalEvent(OnPowerChanged);
+ }
+
+ private void OnStartPack(Entity ent, ref FlatpackCreatorStartPackBuiMessage args)
+ {
+ var (uid, comp) = ent;
+ if (!this.IsPowered(ent, EntityManager) || comp.Packing)
+ return;
+
+ if (!_itemSlots.TryGetSlot(uid, comp.SlotId, out var itemSlot) || itemSlot.Item is not { } machineBoard)
+ return;
+
+ if (!TryComp(machineBoard, out var boardComp))
+ return;
+
+ if (!MaterialStorage.CanChangeMaterialAmount(uid, GetFlatpackCreationCost(ent, (machineBoard, boardComp))))
+ return;
+
+ comp.Packing = true;
+ comp.PackEndTime = _timing.CurTime + comp.PackDuration;
+ Appearance.SetData(uid, FlatpackCreatorVisuals.Packing, true);
+ _ambientSound.SetAmbience(uid, true);
+ Dirty(uid, comp);
+ }
+
+ private void OnPowerChanged(Entity ent, ref PowerChangedEvent args)
+ {
+ if (args.Powered)
+ return;
+ FinishPacking(ent, true);
+ }
+
+ private void FinishPacking(Entity ent, bool interrupted)
+ {
+ var (uid, comp) = ent;
+
+ comp.Packing = false;
+ Appearance.SetData(uid, FlatpackCreatorVisuals.Packing, false);
+ _ambientSound.SetAmbience(uid, false);
+ Dirty(uid, comp);
+
+ if (interrupted)
+ return;
+
+ if (!_itemSlots.TryGetSlot(uid, comp.SlotId, out var itemSlot) || itemSlot.Item is not { } machineBoard)
+ return;
+
+ if (!TryComp(machineBoard, out var boardComp))
+ return;
+
+ var materialCost = GetFlatpackCreationCost(ent, (machineBoard, boardComp));
+ if (!MaterialStorage.TryChangeMaterialAmount((ent, null), materialCost))
+ return;
+
+ var flatpack = Spawn(comp.BaseFlatpackPrototype, Transform(ent).Coordinates);
+ SetupFlatpack(flatpack, (machineBoard, boardComp));
+ }
+
+ public override void Update(float frameTime)
+ {
+ base.Update(frameTime);
+
+ var query = EntityQueryEnumerator();
+ while (query.MoveNext(out var uid, out var comp))
+ {
+ if (!comp.Packing)
+ continue;
+
+ if (_timing.CurTime < comp.PackEndTime)
+ continue;
+
+ FinishPacking((uid, comp), false);
+ }
+ }
+}
diff --git a/Content.Server/Damage/Systems/DamageOnToolInteractSystem.cs b/Content.Server/Damage/Systems/DamageOnToolInteractSystem.cs
index c12c71a850..cac59f9b75 100644
--- a/Content.Server/Damage/Systems/DamageOnToolInteractSystem.cs
+++ b/Content.Server/Damage/Systems/DamageOnToolInteractSystem.cs
@@ -6,6 +6,7 @@ using Content.Shared.Damage;
using Content.Shared.Database;
using Content.Shared.Interaction;
using Content.Shared.Tools.Components;
+using ItemToggleComponent = Content.Shared.Item.ItemToggle.Components.ItemToggleComponent;
namespace Content.Server.Damage.Systems
{
diff --git a/Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs b/Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs
index 1b6a5bb930..2fae9dd3c3 100644
--- a/Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs
+++ b/Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs
@@ -5,6 +5,7 @@ using Content.Shared.Eye.Blinding.Components;
using Content.Shared.Eye.Blinding.Systems;
using Content.Shared.Tools.Components;
using Content.Shared.Item.ItemToggle;
+using Content.Shared.Item.ItemToggle.Components;
namespace Content.Server.Eye.Blinding.EyeProtection
{
@@ -18,7 +19,7 @@ namespace Content.Server.Eye.Blinding.EyeProtection
{
base.Initialize();
SubscribeLocalEvent(OnUseAttempt);
- SubscribeLocalEvent(OnWelderToggled);
+ SubscribeLocalEvent(OnWelderToggled);
SubscribeLocalEvent(OnGetProtection);
SubscribeLocalEvent>(OnGetRelayedProtection);
@@ -52,12 +53,12 @@ namespace Content.Server.Eye.Blinding.EyeProtection
// Add permanent eye damage if they had zero protection, also somewhat scale their temporary blindness by
// how much damage they already accumulated.
- _blindingSystem.AdjustEyeDamage(args.User, 1, blindable);
+ _blindingSystem.AdjustEyeDamage((args.User, blindable), 1);
var statusTimeSpan = TimeSpan.FromSeconds(time * MathF.Sqrt(blindable.EyeDamage));
_statusEffectsSystem.TryAddStatusEffect(args.User, TemporaryBlindnessSystem.BlindingStatusEffect,
statusTimeSpan, false, TemporaryBlindnessSystem.BlindingStatusEffect);
}
- private void OnWelderToggled(EntityUid uid, RequiresEyeProtectionComponent component, ItemToggleDoneEvent args)
+ private void OnWelderToggled(EntityUid uid, RequiresEyeProtectionComponent component, ItemToggledEvent args)
{
component.Toggled = _itemToggle.IsActivated(uid);
}
diff --git a/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs b/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs
index 2759e93118..d8d3177267 100644
--- a/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs
@@ -7,7 +7,6 @@ using Content.Server.GameTicking.Rules.Components;
using Content.Server.Mind;
using Content.Server.NPC.Components;
using Content.Server.NPC.Systems;
-using Content.Server.Objectives;
using Content.Server.Popups;
using Content.Server.Revolutionary.Components;
using Content.Server.Roles;
@@ -43,7 +42,6 @@ public sealed class RevolutionaryRuleSystem : GameRuleSystem(player)?.ConvertedCount ?? 0;
- ev.AddLine(Loc.GetString("rev-headrev-player", ("title", title), ("count", count)));
+ var count = CompOrNull(player.Value)?.ConvertedCount ?? 0;
+
+ _mind.TryGetSession(player.Value, out var session);
+ var username = session?.Name;
+ if (username != null)
+ {
+ ev.AddLine(Loc.GetString("rev-headrev-name-user",
+ ("name", player.Key),
+ ("username", username), ("count", count)));
+ }
+ else
+ {
+ ev.AddLine(Loc.GetString("rev-headrev-name",
+ ("name", player.Key), ("count", count)));
+ }
// TODO: someone suggested listing all alive? revs maybe implement at some point
}
diff --git a/Content.Server/Item/ItemToggle/ItemToggleSystem.cs b/Content.Server/Item/ItemToggle/ItemToggleSystem.cs
index 8a6903dd49..4507ace9d2 100644
--- a/Content.Server/Item/ItemToggle/ItemToggleSystem.cs
+++ b/Content.Server/Item/ItemToggle/ItemToggleSystem.cs
@@ -2,6 +2,8 @@ using Content.Shared.Item;
using Content.Server.CombatMode.Disarm;
using Content.Server.Kitchen.Components;
using Content.Shared.Item.ItemToggle;
+using Content.Shared.Item.ItemToggle.Components;
+using ItemToggleComponent = Content.Shared.Item.ItemToggle.Components.ItemToggleComponent;
namespace Content.Server.Item;
@@ -11,10 +13,10 @@ public sealed class ItemToggleSystem : SharedItemToggleSystem
{
base.Initialize();
- SubscribeLocalEvent(Toggle);
+ SubscribeLocalEvent(Toggle);
}
- private void Toggle(EntityUid uid, ItemToggleComponent comp, ref ItemToggleDoneEvent args)
+ private void Toggle(EntityUid uid, ItemToggleComponent comp, ref ItemToggledEvent args)
{
if (args.Activated == true)
{
diff --git a/Content.Server/Light/EntitySystems/ExpendableLightSystem.cs b/Content.Server/Light/EntitySystems/ExpendableLightSystem.cs
index 40d212c6ad..0bbdf88d3c 100644
--- a/Content.Server/Light/EntitySystems/ExpendableLightSystem.cs
+++ b/Content.Server/Light/EntitySystems/ExpendableLightSystem.cs
@@ -78,7 +78,7 @@ namespace Content.Server.Light.EntitySystems
if (TryComp(ent, out var item))
{
- _item.SetHeldPrefix(ent, "unlit", item);
+ _item.SetHeldPrefix(ent, "unlit", component: item);
}
break;
@@ -96,7 +96,7 @@ namespace Content.Server.Light.EntitySystems
{
if (TryComp(ent, out var item))
{
- _item.SetHeldPrefix(ent, "lit", item);
+ _item.SetHeldPrefix(ent, "lit", component: item);
}
component.CurrentState = ExpendableLightState.Lit;
@@ -163,7 +163,7 @@ namespace Content.Server.Light.EntitySystems
{
if (TryComp(uid, out var item))
{
- _item.SetHeldPrefix(uid, "unlit", item);
+ _item.SetHeldPrefix(uid, "unlit", component: item);
}
component.CurrentState = ExpendableLightState.BrandNew;
diff --git a/Content.Server/Light/EntitySystems/MatchstickSystem.cs b/Content.Server/Light/EntitySystems/MatchstickSystem.cs
index 2195c69b18..96e4695784 100644
--- a/Content.Server/Light/EntitySystems/MatchstickSystem.cs
+++ b/Content.Server/Light/EntitySystems/MatchstickSystem.cs
@@ -107,10 +107,10 @@ namespace Content.Server.Light.EntitySystems
switch (component.CurrentState)
{
case SmokableState.Lit:
- _item.SetHeldPrefix(uid, "lit", item);
+ _item.SetHeldPrefix(uid, "lit", component: item);
break;
default:
- _item.SetHeldPrefix(uid, "unlit", item);
+ _item.SetHeldPrefix(uid, "unlit", component: item);
break;
}
}
diff --git a/Content.Server/Spreader/SpreaderSystem.cs b/Content.Server/Spreader/SpreaderSystem.cs
index 545d2cf3f1..ad3033a14b 100644
--- a/Content.Server/Spreader/SpreaderSystem.cs
+++ b/Content.Server/Spreader/SpreaderSystem.cs
@@ -70,7 +70,8 @@ public sealed class SpreaderSystem : EntitySystem
foreach (var neighbor in neighbors)
{
- EnsureComp(neighbor);
+ if (!TerminatingOrDeleted(neighbor))
+ EnsureComp(neighbor);
}
}
diff --git a/Content.Server/Stunnable/Systems/StunbatonSystem.cs b/Content.Server/Stunnable/Systems/StunbatonSystem.cs
index 8064434031..436559e43b 100644
--- a/Content.Server/Stunnable/Systems/StunbatonSystem.cs
+++ b/Content.Server/Stunnable/Systems/StunbatonSystem.cs
@@ -7,6 +7,7 @@ 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;
using Content.Shared.Stunnable;
@@ -28,7 +29,7 @@ namespace Content.Server.Stunnable.Systems
SubscribeLocalEvent(OnSolutionChange);
SubscribeLocalEvent(OnStaminaHitAttempt);
SubscribeLocalEvent(TryTurnOn);
- SubscribeLocalEvent(ToggleDone);
+ SubscribeLocalEvent(ToggleDone);
}
private void OnStaminaHitAttempt(Entity entity, ref StaminaDamageOnHitAttemptEvent args)
@@ -58,12 +59,12 @@ namespace Content.Server.Stunnable.Systems
args.PushMarkup(chargeMessage);
}
- private void ToggleDone(Entity entity, ref ItemToggleDoneEvent args)
+ private void ToggleDone(Entity entity, ref ItemToggledEvent args)
{
if (!TryComp(entity, out var item))
return;
- _item.SetHeldPrefix(entity.Owner, args.Activated ? "on" : "off", item);
+ _item.SetHeldPrefix(entity.Owner, args.Activated ? "on" : "off", component: item);
}
private void TryTurnOn(Entity entity, ref ItemToggleActivateAttemptEvent args)
diff --git a/Content.Server/Tools/ToolSystem.Welder.cs b/Content.Server/Tools/ToolSystem.Welder.cs
index 88037cedb4..510dd3bfe0 100644
--- a/Content.Server/Tools/ToolSystem.Welder.cs
+++ b/Content.Server/Tools/ToolSystem.Welder.cs
@@ -12,6 +12,7 @@ using Content.Shared.Item.ItemToggle;
using Content.Shared.Tools.Components;
using Robust.Shared.GameStates;
using System.Linq;
+using Content.Shared.Item.ItemToggle.Components;
namespace Content.Server.Tools
{
diff --git a/Content.Server/Weapons/Reflect/ReflectSystem.cs b/Content.Server/Weapons/Reflect/ReflectSystem.cs
deleted file mode 100644
index 5c1939478e..0000000000
--- a/Content.Server/Weapons/Reflect/ReflectSystem.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using Content.Shared.Item;
-using Content.Shared.Weapons.Reflect;
-
-namespace Content.Server.Weapons.Reflect;
-
-public sealed class ReflectSystem : SharedReflectSystem
-{
- public override void Initialize()
- {
- base.Initialize();
-
- SubscribeLocalEvent(ToggleReflect);
- }
-
- private void ToggleReflect(EntityUid uid, ReflectComponent comp, ref ItemToggleReflectUpdateEvent args)
- {
- comp.Enabled = args.Activated;
- Dirty(uid, comp);
- }
-}
diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs
index 5222c49153..997b499ce9 100644
--- a/Content.Shared/CCVar/CCVars.cs
+++ b/Content.Shared/CCVar/CCVars.cs
@@ -258,7 +258,7 @@ namespace Content.Shared.CCVar
/// Whether or not panic bunker is currently enabled.
///
public static readonly CVarDef PanicBunkerEnabled =
- CVarDef.Create("game.panic_bunker.enabled", false, CVar.NOTIFY | CVar.REPLICATED);
+ CVarDef.Create("game.panic_bunker.enabled", false, CVar.NOTIFY | CVar.REPLICATED | CVar.SERVER);
///
/// Whether or not the panic bunker will disable when an admin comes online.
@@ -1505,6 +1505,18 @@ namespace Content.Shared.CCVar
CVarDef.Create("ui.separated_chat_size", "0.6,0", CVar.CLIENTONLY | CVar.ARCHIVE);
+ /*
+ * Accessibility
+ */
+
+ ///
+ /// Toggle for visual effects that may potentially cause motion sickness.
+ /// Where reasonable, effects affected by this CVar should use an alternate effect.
+ /// Please do not use this CVar as a bandaid for effects that could otherwise be made accessible without issue.
+ ///
+ public static readonly CVarDef ReducedMotion =
+ CVarDef.Create("accessibility.reduced_motion", false, CVar.CLIENTONLY | CVar.ARCHIVE);
+
/*
* CHAT
*/
diff --git a/Content.Shared/Clothing/Components/LoadoutComponent.cs b/Content.Shared/Clothing/Components/LoadoutComponent.cs
index e4a02760d3..a3c6efe2a0 100644
--- a/Content.Shared/Clothing/Components/LoadoutComponent.cs
+++ b/Content.Shared/Clothing/Components/LoadoutComponent.cs
@@ -4,7 +4,7 @@ using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototy
namespace Content.Shared.Clothing.Components;
-[RegisterComponent, NetworkedComponent]
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class LoadoutComponent : Component
{
///
diff --git a/Content.Shared/Clothing/SharedMagbootsSystem.cs b/Content.Shared/Clothing/SharedMagbootsSystem.cs
index 7a6da7c992..27fb0c1a50 100644
--- a/Content.Shared/Clothing/SharedMagbootsSystem.cs
+++ b/Content.Shared/Clothing/SharedMagbootsSystem.cs
@@ -57,7 +57,7 @@ public abstract class SharedMagbootsSystem : EntitySystem
if (TryComp(uid, out var item))
{
- _item.SetHeldPrefix(uid, magboots.On ? "on" : null, item);
+ _item.SetHeldPrefix(uid, magboots.On ? "on" : null, component: item);
_clothing.SetEquippedPrefix(uid, magboots.On ? "on" : null);
}
diff --git a/Content.Shared/Construction/Components/FlatpackComponent.cs b/Content.Shared/Construction/Components/FlatpackComponent.cs
new file mode 100644
index 0000000000..5cb178075b
--- /dev/null
+++ b/Content.Shared/Construction/Components/FlatpackComponent.cs
@@ -0,0 +1,51 @@
+using Content.Shared.Tools;
+using Robust.Shared.Audio;
+using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization;
+
+namespace Content.Shared.Construction.Components;
+
+///
+/// This is used for an object that can instantly create a machine upon having a tool applied to it.
+///
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
+[Access(typeof(SharedFlatpackSystem))]
+public sealed partial class FlatpackComponent : Component
+{
+ ///
+ /// The tool quality that, upon used to interact with this object, will create the
+ ///
+ [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
+ public ProtoId QualityNeeded = "Pulsing";
+
+ ///
+ /// The entity that is spawned when this object is unpacked.
+ ///
+ [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
+ public EntProtoId? Entity;
+
+ ///
+ /// Sound effect played upon the object being unpacked.
+ ///
+ [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
+ public SoundSpecifier UnpackSound = new SoundPathSpecifier("/Audio/Effects/unwrap.ogg");
+
+ ///
+ /// A dictionary relating a machine board sprite state to a color used for the overlay.
+ /// Kinda shitty but it gets the job done.
+ ///
+ [DataField]
+ public Dictionary BoardColors = new();
+}
+
+[Serializable, NetSerializable]
+public enum FlatpackVisuals : byte
+{
+ Machine
+}
+
+public enum FlatpackVisualLayers : byte
+{
+ Overlay
+}
diff --git a/Content.Shared/Construction/Components/FlatpackCreatorComponent.cs b/Content.Shared/Construction/Components/FlatpackCreatorComponent.cs
new file mode 100644
index 0000000000..0f52d63628
--- /dev/null
+++ b/Content.Shared/Construction/Components/FlatpackCreatorComponent.cs
@@ -0,0 +1,69 @@
+using Content.Shared.Materials;
+using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
+
+namespace Content.Shared.Construction.Components;
+
+///
+/// This is used for a machine that creates flatpacks at the cost of materials
+///
+[RegisterComponent, NetworkedComponent]
+[Access(typeof(SharedFlatpackSystem))]
+[AutoGenerateComponentState]
+public sealed partial class FlatpackCreatorComponent : Component
+{
+ ///
+ /// Whether or not packing is occuring
+ ///
+ [DataField, ViewVariables(VVAccess.ReadWrite)]
+ [AutoNetworkedField]
+ public bool Packing;
+
+ ///
+ /// The time at which packing ends
+ ///
+ [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)]
+ [AutoNetworkedField]
+ public TimeSpan PackEndTime;
+
+ ///
+ /// How long packing lasts.
+ ///
+ [DataField, ViewVariables(VVAccess.ReadWrite)]
+ public TimeSpan PackDuration = TimeSpan.FromSeconds(3);
+
+ ///
+ /// The prototype used when spawning a flatpack.
+ ///
+ [DataField, ViewVariables(VVAccess.ReadWrite)]
+ public EntProtoId BaseFlatpackPrototype = "BaseFlatpack";
+
+ ///
+ /// A default cost applied to all flatpacks outside of the cost of constructing the machine.
+ ///
+ [DataField]
+ public Dictionary, int> BaseMaterialCost = new();
+
+ [DataField, ViewVariables(VVAccess.ReadWrite)]
+ public string SlotId = "board_slot";
+}
+
+[Serializable, NetSerializable]
+public enum FlatpackCreatorUIKey : byte
+{
+ Key
+}
+
+[Serializable, NetSerializable]
+public enum FlatpackCreatorVisuals : byte
+{
+ Packing
+}
+
+[Serializable, NetSerializable]
+public sealed class FlatpackCreatorStartPackBuiMessage : BoundUserInterfaceMessage
+{
+
+}
diff --git a/Content.Shared/Construction/MachinePartSystem.cs b/Content.Shared/Construction/MachinePartSystem.cs
index d84557b2de..b13dc20c6d 100644
--- a/Content.Shared/Construction/MachinePartSystem.cs
+++ b/Content.Shared/Construction/MachinePartSystem.cs
@@ -1,6 +1,10 @@
+using System.Linq;
using Content.Shared.Construction.Components;
using Content.Shared.Construction.Prototypes;
using Content.Shared.Examine;
+using Content.Shared.Lathe;
+using Content.Shared.Materials;
+using Content.Shared.Stacks;
using Robust.Shared.Prototypes;
namespace Content.Shared.Construction
@@ -11,6 +15,7 @@ namespace Content.Shared.Construction
public sealed class MachinePartSystem : EntitySystem
{
[Dependency] private readonly IPrototypeManager _prototype = default!;
+ [Dependency] private readonly SharedLatheSystem _lathe = default!;
public override void Initialize()
{
@@ -61,5 +66,87 @@ namespace Content.Shared.Construction
args.PushMarkup(Loc.GetString("machine-part-component-on-examine-type-text", ("type",
Loc.GetString(_prototype.Index(component.PartType).Name))));
}
+
+ public Dictionary GetMachineBoardMaterialCost(Entity entity, int coefficient = 1)
+ {
+ var (_, comp) = entity;
+
+ var materials = new Dictionary();
+ foreach (var (partId, amount) in comp.Requirements)
+ {
+ var partProto = _prototype.Index(partId);
+
+ if (!_lathe.TryGetRecipesFromEntity(partProto.StockPartPrototype, out var recipes))
+ continue;
+
+ var partRecipe = recipes[0];
+ if (recipes.Count > 1)
+ partRecipe = recipes.MinBy(p => p.RequiredMaterials.Values.Sum());
+
+ foreach (var (mat, matAmount) in partRecipe!.RequiredMaterials)
+ {
+ materials.TryAdd(mat, 0);
+ materials[mat] += matAmount * amount * coefficient;
+ }
+ }
+
+ foreach (var (stackId, amount) in comp.MaterialIdRequirements)
+ {
+ var stackProto = _prototype.Index(stackId);
+
+ if (_prototype.TryIndex(stackProto.Spawn, out var defaultProto) &&
+ defaultProto.TryGetComponent(out var physComp))
+ {
+ foreach (var (mat, matAmount) in physComp.MaterialComposition)
+ {
+ materials.TryAdd(mat, 0);
+ materials[mat] += matAmount * amount * coefficient;
+ }
+ }
+ else if (_lathe.TryGetRecipesFromEntity(stackProto.Spawn, out var recipes))
+ {
+ var partRecipe = recipes[0];
+ if (recipes.Count > 1)
+ partRecipe = recipes.MinBy(p => p.RequiredMaterials.Values.Sum());
+
+ foreach (var (mat, matAmount) in partRecipe!.RequiredMaterials)
+ {
+ materials.TryAdd(mat, 0);
+ materials[mat] += matAmount * amount * coefficient;
+ }
+ }
+ }
+
+ var genericPartInfo = comp.ComponentRequirements.Values.Concat(comp.ComponentRequirements.Values);
+ foreach (var info in genericPartInfo)
+ {
+ var amount = info.Amount;
+ var defaultProtoId = info.DefaultPrototype;
+
+ if (_lathe.TryGetRecipesFromEntity(defaultProtoId, out var recipes))
+ {
+ var partRecipe = recipes[0];
+ if (recipes.Count > 1)
+ partRecipe = recipes.MinBy(p => p.RequiredMaterials.Values.Sum());
+
+ foreach (var (mat, matAmount) in partRecipe!.RequiredMaterials)
+ {
+ materials.TryAdd(mat, 0);
+ materials[mat] += matAmount * amount * coefficient;
+ }
+ }
+ else if (_prototype.TryIndex(defaultProtoId, out var defaultProto) &&
+ defaultProto.TryGetComponent(out var physComp))
+ {
+ foreach (var (mat, matAmount) in physComp.MaterialComposition)
+ {
+ materials.TryAdd(mat, 0);
+ materials[mat] += matAmount * amount * coefficient;
+ }
+ }
+ }
+
+ return materials;
+ }
}
}
diff --git a/Content.Shared/Construction/SharedFlatpackSystem.cs b/Content.Shared/Construction/SharedFlatpackSystem.cs
new file mode 100644
index 0000000000..094f9d86d5
--- /dev/null
+++ b/Content.Shared/Construction/SharedFlatpackSystem.cs
@@ -0,0 +1,150 @@
+using System.Numerics;
+using Content.Shared.Construction.Components;
+using Content.Shared.Administration.Logs;
+using Content.Shared.Database;
+using Content.Shared.Examine;
+using Content.Shared.Interaction;
+using Content.Shared.Materials;
+using Content.Shared.Popups;
+using Content.Shared.Tools.Systems;
+using Robust.Shared.Audio.Systems;
+using Robust.Shared.Containers;
+using Robust.Shared.Map;
+using Robust.Shared.Map.Components;
+using Robust.Shared.Network;
+using Robust.Shared.Physics.Components;
+using Robust.Shared.Prototypes;
+
+namespace Content.Shared.Construction;
+
+public abstract class SharedFlatpackSystem : EntitySystem
+{
+ [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!;
+ [Dependency] private readonly IMapManager _mapManager = default!;
+ [Dependency] private readonly INetManager _net = default!;
+ [Dependency] protected readonly IPrototypeManager PrototypeManager = default!;
+ [Dependency] protected readonly SharedAppearanceSystem Appearance = default!;
+ [Dependency] private readonly SharedAudioSystem _audio = default!;
+ [Dependency] private readonly SharedContainerSystem _container = default!;
+ [Dependency] private readonly EntityLookupSystem _entityLookup = default!;
+ [Dependency] private readonly SharedMapSystem _map = default!;
+ [Dependency] protected readonly MachinePartSystem MachinePart = default!;
+ [Dependency] protected readonly SharedMaterialStorageSystem MaterialStorage = default!;
+ [Dependency] private readonly MetaDataSystem _metaData = default!;
+ [Dependency] private readonly SharedPopupSystem _popup = default!;
+ [Dependency] private readonly SharedToolSystem _tool = default!;
+
+ ///
+ public override void Initialize()
+ {
+ SubscribeLocalEvent(OnFlatpackInteractUsing);
+ SubscribeLocalEvent(OnFlatpackExamined);
+
+ SubscribeLocalEvent(OnCreatorRemovingAttempt);
+ SubscribeLocalEvent(OnCreatorUnpaused);
+ }
+
+ private void OnFlatpackInteractUsing(Entity ent, ref InteractUsingEvent args)
+ {
+ var (uid, comp) = ent;
+ if (!_tool.HasQuality(args.Used, comp.QualityNeeded) || _container.IsEntityInContainer(ent))
+ return;
+
+ var xform = Transform(ent);
+
+ if (xform.GridUid is not { } grid || !TryComp(grid, out var gridComp))
+ return;
+
+ args.Handled = true;
+
+ if (comp.Entity == null)
+ {
+ Log.Error($"No entity prototype present for flatpack {ToPrettyString(ent)}.");
+
+ if (_net.IsServer)
+ QueueDel(ent);
+ return;
+ }
+
+ var buildPos = _map.TileIndicesFor(grid, gridComp, xform.Coordinates);
+ var intersecting = _entityLookup.GetEntitiesIntersecting(buildPos.ToEntityCoordinates(grid, _mapManager).Offset(new Vector2(0.5f, 0.5f))
+ , LookupFlags.Dynamic | LookupFlags.Static);
+
+ // todo make this logic smarter.
+ // This should eventually allow for shit like building microwaves on tables and such.
+ foreach (var intersect in intersecting)
+ {
+ if (!TryComp(intersect, out var intersectBody))
+ continue;
+
+ if (!intersectBody.Hard || !intersectBody.CanCollide)
+ continue;
+
+ // this popup is on the server because the mispredicts on the intersection is crazy
+ if (_net.IsServer)
+ _popup.PopupEntity(Loc.GetString("flatpack-unpack-no-room"), uid, args.User);
+ return;
+ }
+
+ if (_net.IsServer)
+ {
+ var spawn = Spawn(comp.Entity, _map.GridTileToLocal(grid, gridComp, buildPos));
+ _adminLogger.Add(LogType.Construction, LogImpact.Low,
+ $"{ToPrettyString(args.User):player} unpacked {ToPrettyString(spawn):entity} at {xform.Coordinates} from {ToPrettyString(uid):entity}");
+ QueueDel(uid);
+ }
+
+ _audio.PlayPredicted(comp.UnpackSound, args.Used, args.User);
+ }
+
+ private void OnFlatpackExamined(Entity ent, ref ExaminedEvent args)
+ {
+ if (!args.IsInDetailsRange)
+ return;
+ args.PushMarkup(Loc.GetString("flatpack-examine"));
+ }
+
+ private void OnCreatorRemovingAttempt(Entity ent, ref ContainerIsRemovingAttemptEvent args)
+ {
+ if (args.Container.ID == ent.Comp.SlotId && ent.Comp.Packing)
+ args.Cancel();
+ }
+
+ private void OnCreatorUnpaused(Entity ent, ref EntityUnpausedEvent args)
+ {
+ ent.Comp.PackEndTime += args.PausedTime;
+ }
+
+ public void SetupFlatpack(Entity ent, Entity machineBoard)
+ {
+ if (!Resolve(ent, ref ent.Comp) || !Resolve(machineBoard, ref machineBoard.Comp))
+ return;
+
+ if (machineBoard.Comp.Prototype is not { } machinePrototypeId)
+ return;
+
+ var comp = ent.Comp!;
+ var machinePrototype = PrototypeManager.Index(machinePrototypeId);
+
+ var meta = MetaData(ent);
+ _metaData.SetEntityName(ent, Loc.GetString("flatpack-entity-name", ("name", machinePrototype.Name)), meta);
+ _metaData.SetEntityDescription(ent, Loc.GetString("flatpack-entity-description", ("name", machinePrototype.Name)), meta);
+
+ comp.Entity = machinePrototypeId;
+ Dirty(ent, comp);
+
+ Appearance.SetData(ent, FlatpackVisuals.Machine, MetaData(machineBoard).EntityPrototype?.ID ?? string.Empty);
+ }
+
+ public Dictionary GetFlatpackCreationCost(Entity entity, Entity machineBoard)
+ {
+ var cost = MachinePart.GetMachineBoardMaterialCost(machineBoard, -1);
+ foreach (var (mat, amount) in entity.Comp.BaseMaterialCost)
+ {
+ cost.TryAdd(mat, 0);
+ cost[mat] -= amount;
+ }
+
+ return cost;
+ }
+}
diff --git a/Content.Shared/ContainerHeld/ContainerHeldComponent.cs b/Content.Shared/ContainerHeld/ContainerHeldComponent.cs
index cc6d2bf872..3d7643b42c 100644
--- a/Content.Shared/ContainerHeld/ContainerHeldComponent.cs
+++ b/Content.Shared/ContainerHeld/ContainerHeldComponent.cs
@@ -1,6 +1,8 @@
+using Robust.Shared.GameStates;
+
namespace Content.Shared.ContainerHeld;
-[RegisterComponent]
+[RegisterComponent, NetworkedComponent]
public sealed partial class ContainerHeldComponent: Component
{
///
diff --git a/Content.Shared/ContainerHeld/ContainerHeldSystem.cs b/Content.Shared/ContainerHeld/ContainerHeldSystem.cs
index db8ad5e5e1..f2ce5b44a5 100644
--- a/Content.Shared/ContainerHeld/ContainerHeldSystem.cs
+++ b/Content.Shared/ContainerHeld/ContainerHeldSystem.cs
@@ -23,7 +23,7 @@ public sealed class ContainerHeldSystem : EntitySystem
private void OnContainerModified(EntityUid uid, ContainerHeldComponent comp, ContainerModifiedMessage args)
{
- if (!(TryComp(uid, out var storage)
+ if (!(HasComp(uid)
&& TryComp(uid, out var appearance)
&& TryComp(uid, out var item)))
{
@@ -31,12 +31,12 @@ public sealed class ContainerHeldSystem : EntitySystem
}
if (_storage.GetCumulativeItemAreas(uid) >= comp.Threshold)
{
- _item.SetHeldPrefix(uid, "full", item);
+ _item.SetHeldPrefix(uid, "full", component: item);
_appearance.SetData(uid, ToggleVisuals.Toggled, true, appearance);
}
else
{
- _item.SetHeldPrefix(uid, "empty", item);
+ _item.SetHeldPrefix(uid, "empty", component: item);
_appearance.SetData(uid, ToggleVisuals.Toggled, false, appearance);
}
}
diff --git a/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs b/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs
index bc2225a94c..d832cdfef8 100644
--- a/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs
+++ b/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs
@@ -265,6 +265,9 @@ namespace Content.Shared.Containers.ItemSlots
return false;
}
+ if (swap && slot.HasItem && !CanEject(uid, user, slot))
+ return false;
+
var ev = new ItemSlotInsertAttemptEvent(uid, usedUid, user, slot);
RaiseLocalEvent(uid, ref ev);
RaiseLocalEvent(usedUid, ref ev);
diff --git a/Content.Shared/Examine/ExamineSystemShared.cs b/Content.Shared/Examine/ExamineSystemShared.cs
index 1e6f121aae..f4d89ecf26 100644
--- a/Content.Shared/Examine/ExamineSystemShared.cs
+++ b/Content.Shared/Examine/ExamineSystemShared.cs
@@ -38,6 +38,8 @@ namespace Content.Shared.Examine
public const float ExamineRange = 16f;
protected const float ExamineDetailsRange = 3f;
+ protected const float ExamineBlurrinessMult = 2.5f;
+
///
/// Creates a new examine tooltip with arbitrary info.
///
@@ -125,7 +127,7 @@ namespace Content.Shared.Examine
return CritExamineRange;
if (TryComp(examiner, out var blurry))
- return Math.Clamp(ExamineRange - blurry.Magnitude, 2, ExamineRange);
+ return Math.Clamp(ExamineRange - blurry.Magnitude * ExamineBlurrinessMult, 2, ExamineRange);
}
return ExamineRange;
}
diff --git a/Content.Shared/Eye/Blinding/Components/BlindableComponent.cs b/Content.Shared/Eye/Blinding/Components/BlindableComponent.cs
index 15f008e6ea..4379d309bc 100644
--- a/Content.Shared/Eye/Blinding/Components/BlindableComponent.cs
+++ b/Content.Shared/Eye/Blinding/Components/BlindableComponent.cs
@@ -24,7 +24,7 @@ public sealed partial class BlindableComponent : Component
[ViewVariables(VVAccess.ReadWrite), DataField("EyeDamage"), AutoNetworkedField]
public int EyeDamage = 0;
- public const int MaxDamage = 3;
+ public const int MaxDamage = 9;
///
/// Used to ensure that this doesn't break with sandbox or admin tools.
diff --git a/Content.Shared/Eye/Blinding/Components/BlurryVisionComponent.cs b/Content.Shared/Eye/Blinding/Components/BlurryVisionComponent.cs
index a0a64ba46e..faff4b9e52 100644
--- a/Content.Shared/Eye/Blinding/Components/BlurryVisionComponent.cs
+++ b/Content.Shared/Eye/Blinding/Components/BlurryVisionComponent.cs
@@ -17,5 +17,12 @@ public sealed partial class BlurryVisionComponent : Component
[ViewVariables(VVAccess.ReadWrite), DataField("magnitude"), AutoNetworkedField]
public float Magnitude;
- public const float MaxMagnitude = 3;
+ ///
+ /// Exponent that controls the magnitude of the effect.
+ ///
+ [ViewVariables(VVAccess.ReadWrite), DataField("correctionPower"), AutoNetworkedField]
+ public float CorrectionPower;
+
+ public const float MaxMagnitude = 6;
+ public const float DefaultCorrectionPower = 2f;
}
diff --git a/Content.Shared/Eye/Blinding/Components/EyeClosingComponent.cs b/Content.Shared/Eye/Blinding/Components/EyeClosingComponent.cs
new file mode 100644
index 0000000000..c687e96688
--- /dev/null
+++ b/Content.Shared/Eye/Blinding/Components/EyeClosingComponent.cs
@@ -0,0 +1,50 @@
+using Content.Shared.Eye.Blinding.Systems;
+using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
+
+namespace Content.Shared.Eye.Blinding.Components;
+
+///
+/// Allows mobs to toggle their eyes between being closed and being not closed.
+///
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)]
+public sealed partial class EyeClosingComponent : Component
+{
+ ///
+ /// The prototype to grant to enable eye-toggling action.
+ ///
+ [DataField("eyeToggleAction", customTypeSerializer: typeof(PrototypeIdSerializer))]
+ public string EyeToggleAction = "ActionToggleEyes";
+
+ ///
+ /// The actual eye toggling action entity itself.
+ ///
+ [DataField]
+ public EntityUid? EyeToggleActionEntity;
+
+ ///
+ /// Path to sound to play when opening eyes
+ ///
+ [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
+ public string EyeOpenSound = "/Audio/Effects/eye_open.ogg";
+
+ ///
+ /// Path to sound to play when closing eyes
+ ///
+ [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
+ public string EyeCloseSound = "/Audio/Effects/eye_close.ogg";
+
+ ///
+ /// Toggles whether the eyes are open or closed. This is really just exactly what it says on the tin. Honest.
+ ///
+ [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
+ public bool EyesClosed;
+
+ [ViewVariables(VVAccess.ReadOnly), DataField]
+ public bool PreviousEyelidPosition;
+
+ [ViewVariables(VVAccess.ReadOnly), DataField]
+ public bool NaturallyCreated;
+}
diff --git a/Content.Shared/Eye/Blinding/Components/VisionCorrectionComponent.cs b/Content.Shared/Eye/Blinding/Components/VisionCorrectionComponent.cs
index 54f0833c37..47bac52795 100644
--- a/Content.Shared/Eye/Blinding/Components/VisionCorrectionComponent.cs
+++ b/Content.Shared/Eye/Blinding/Components/VisionCorrectionComponent.cs
@@ -9,6 +9,15 @@ namespace Content.Shared.Eye.Blinding.Components;
[NetworkedComponent, AutoGenerateComponentState]
public sealed partial class VisionCorrectionComponent : Component
{
+ ///
+ /// Amount of effective eye damage to add when this item is worn
+ ///
[ViewVariables(VVAccess.ReadWrite), DataField("visionBonus"), AutoNetworkedField]
- public float VisionBonus = 3f;
+ public float VisionBonus = 0f;
+
+ ///
+ /// Controls the exponent of the blur effect when worn
+ ///
+ [ViewVariables(VVAccess.ReadWrite), DataField("correctionPower"), AutoNetworkedField]
+ public float CorrectionPower = 2f;
}
diff --git a/Content.Shared/Eye/Blinding/Systems/BlindableSystem.cs b/Content.Shared/Eye/Blinding/Systems/BlindableSystem.cs
index 65ecc1deec..5f24ff2018 100644
--- a/Content.Shared/Eye/Blinding/Systems/BlindableSystem.cs
+++ b/Content.Shared/Eye/Blinding/Systems/BlindableSystem.cs
@@ -7,57 +7,67 @@ namespace Content.Shared.Eye.Blinding.Systems;
public sealed class BlindableSystem : EntitySystem
{
+ [Dependency] private readonly BlurryVisionSystem _blurriness = default!;
+ [Dependency] private readonly EyeClosingSystem _eyelids = default!;
+
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent(OnRejuvenate);
+ SubscribeLocalEvent(OnDamageChanged);
}
- private void OnRejuvenate(EntityUid uid, BlindableComponent component, RejuvenateEvent args)
+ private void OnRejuvenate(Entity ent, ref RejuvenateEvent args)
{
- AdjustEyeDamage(uid, -component.EyeDamage, component);
+ AdjustEyeDamage((ent.Owner, ent.Comp), -ent.Comp.EyeDamage);
+ }
+
+ private void OnDamageChanged(Entity ent, ref EyeDamageChangedEvent args)
+ {
+ _blurriness.UpdateBlurMagnitude((ent.Owner, ent.Comp));
+ _eyelids.UpdateEyesClosable((ent.Owner, ent.Comp));
}
[PublicAPI]
- public void UpdateIsBlind(EntityUid uid, BlindableComponent? blindable = null)
+ public void UpdateIsBlind(Entity blindable)
{
- if (!Resolve(uid, ref blindable, false))
+ if (!Resolve(blindable, ref blindable.Comp, false))
return;
- var old = blindable.IsBlind;
+ var old = blindable.Comp.IsBlind;
// Don't bother raising an event if the eye is too damaged.
- if (blindable.EyeDamage >= BlindableComponent.MaxDamage)
+ if (blindable.Comp.EyeDamage >= BlindableComponent.MaxDamage)
{
- blindable.IsBlind = true;
+ blindable.Comp.IsBlind = true;
}
else
{
var ev = new CanSeeAttemptEvent();
- RaiseLocalEvent(uid, ev);
- blindable.IsBlind = ev.Blind;
+ RaiseLocalEvent(blindable.Owner, ev);
+ blindable.Comp.IsBlind = ev.Blind;
}
- if (old == blindable.IsBlind)
+ if (old == blindable.Comp.IsBlind)
return;
- var changeEv = new BlindnessChangedEvent(blindable.IsBlind);
- RaiseLocalEvent(uid, ref changeEv);
+ var changeEv = new BlindnessChangedEvent(blindable.Comp.IsBlind);
+ RaiseLocalEvent(blindable.Owner, ref changeEv);
Dirty(blindable);
}
- public void AdjustEyeDamage(EntityUid uid, int amount, BlindableComponent? blindable = null)
+ public void AdjustEyeDamage(Entity blindable, int amount)
{
- if (!Resolve(uid, ref blindable, false) || amount == 0)
+ if (!Resolve(blindable, ref blindable.Comp, false) || amount == 0)
return;
- blindable.EyeDamage += amount;
- blindable.EyeDamage = Math.Clamp(blindable.EyeDamage, 0, BlindableComponent.MaxDamage);
+ blindable.Comp.EyeDamage += amount;
+ blindable.Comp.EyeDamage = Math.Clamp(blindable.Comp.EyeDamage, 0, BlindableComponent.MaxDamage);
Dirty(blindable);
- UpdateIsBlind(uid, blindable);
+ UpdateIsBlind(blindable);
- var ev = new EyeDamageChangedEvent(blindable.EyeDamage);
- RaiseLocalEvent(uid, ref ev);
+ var ev = new EyeDamageChangedEvent(blindable.Comp.EyeDamage);
+ RaiseLocalEvent(blindable.Owner, ref ev);
}
}
@@ -71,7 +81,7 @@ public record struct BlindnessChangedEvent(bool Blind);
/// This event is raised when an entity's eye damage changes
///
[ByRefEvent]
-public record struct EyeDamageChangedEvent(int Damage);
+public record struct EyeDamageChangedEvent(int Damage);
///
/// Raised directed at an entity to see whether the entity is currently blind or not.
diff --git a/Content.Shared/Eye/Blinding/Systems/BlindfoldSystem.cs b/Content.Shared/Eye/Blinding/Systems/BlindfoldSystem.cs
index b875c13f64..a2ecb4d034 100644
--- a/Content.Shared/Eye/Blinding/Systems/BlindfoldSystem.cs
+++ b/Content.Shared/Eye/Blinding/Systems/BlindfoldSystem.cs
@@ -17,17 +17,17 @@ public sealed class BlindfoldSystem : EntitySystem
SubscribeLocalEvent>(OnBlindfoldTrySee);
}
- private void OnBlindfoldTrySee(EntityUid uid, BlindfoldComponent component, InventoryRelayedEvent args)
+ private void OnBlindfoldTrySee(Entity blindfold, ref InventoryRelayedEvent args)
{
args.Args.Cancel();
}
- private void OnEquipped(EntityUid uid, BlindfoldComponent component, GotEquippedEvent args)
+ private void OnEquipped(Entity blindfold, ref GotEquippedEvent args)
{
_blindableSystem.UpdateIsBlind(args.Equipee);
}
- private void OnUnequipped(EntityUid uid, BlindfoldComponent component, GotUnequippedEvent args)
+ private void OnUnequipped(Entity blindfold, ref GotUnequippedEvent args)
{
_blindableSystem.UpdateIsBlind(args.Equipee);
}
diff --git a/Content.Shared/Eye/Blinding/Systems/BlurryVisionSystem.cs b/Content.Shared/Eye/Blinding/Systems/BlurryVisionSystem.cs
index 4c9fb02afa..4577bcda99 100644
--- a/Content.Shared/Eye/Blinding/Systems/BlurryVisionSystem.cs
+++ b/Content.Shared/Eye/Blinding/Systems/BlurryVisionSystem.cs
@@ -6,54 +6,52 @@ namespace Content.Shared.Eye.Blinding.Systems;
public sealed class BlurryVisionSystem : EntitySystem
{
+ [Dependency] private readonly IEntityManager _entityManager = default!;
+
public override void Initialize()
{
base.Initialize();
- SubscribeLocalEvent(OnDamageChanged);
SubscribeLocalEvent(OnGlassesEquipped);
SubscribeLocalEvent(OnGlassesUnequipped);
SubscribeLocalEvent>(OnGetBlur);
}
- private void OnGetBlur(EntityUid uid, VisionCorrectionComponent component, InventoryRelayedEvent args)
+ private void OnGetBlur(Entity glasses, ref InventoryRelayedEvent args)
{
- args.Args.Blur += component.VisionBonus;
+ args.Args.Blur += glasses.Comp.VisionBonus;
+ args.Args.CorrectionPower *= glasses.Comp.CorrectionPower;
}
- private void OnDamageChanged(EntityUid uid, BlindableComponent component, ref EyeDamageChangedEvent args)
+ public void UpdateBlurMagnitude(Entity ent)
{
- UpdateBlurMagnitude(uid, component);
- }
-
- private void UpdateBlurMagnitude(EntityUid uid, BlindableComponent? component = null)
- {
- if (!Resolve(uid, ref component, false))
+ if (!Resolve(ent.Owner, ref ent.Comp, false))
return;
- var ev = new GetBlurEvent(component.EyeDamage);
- RaiseLocalEvent(uid, ev);
+ var ev = new GetBlurEvent(ent.Comp.EyeDamage);
+ RaiseLocalEvent(ent, ev);
- var blur = Math.Clamp(0, ev.Blur, BlurryVisionComponent.MaxMagnitude);
+ var blur = Math.Clamp(ev.Blur, 0, BlurryVisionComponent.MaxMagnitude);
if (blur <= 0)
{
- RemCompDeferred(uid);
+ RemCompDeferred(ent);
return;
}
- var blurry = EnsureComp(uid);
+ var blurry = EnsureComp(ent);
blurry.Magnitude = blur;
- Dirty(blurry);
+ blurry.CorrectionPower = ev.CorrectionPower;
+ Dirty(ent, blurry);
}
- private void OnGlassesEquipped(EntityUid uid, VisionCorrectionComponent component, GotEquippedEvent args)
+ private void OnGlassesEquipped(Entity glasses, ref GotEquippedEvent args)
{
- UpdateBlurMagnitude(uid);
+ UpdateBlurMagnitude(args.Equipee);
}
- private void OnGlassesUnequipped(EntityUid uid, VisionCorrectionComponent component, GotUnequippedEvent args)
+ private void OnGlassesUnequipped(Entity glasses, ref GotUnequippedEvent args)
{
- UpdateBlurMagnitude(uid);
+ UpdateBlurMagnitude(args.Equipee);
}
}
@@ -61,6 +59,7 @@ public sealed class GetBlurEvent : EntityEventArgs, IInventoryRelayEvent
{
public readonly float BaseBlur;
public float Blur;
+ public float CorrectionPower = BlurryVisionComponent.DefaultCorrectionPower;
public GetBlurEvent(float blur)
{
diff --git a/Content.Shared/Eye/Blinding/Systems/EyeClosingSystem.cs b/Content.Shared/Eye/Blinding/Systems/EyeClosingSystem.cs
new file mode 100644
index 0000000000..5326af9636
--- /dev/null
+++ b/Content.Shared/Eye/Blinding/Systems/EyeClosingSystem.cs
@@ -0,0 +1,141 @@
+
+using Content.Shared.Actions;
+using Content.Shared.Eye.Blinding.Components;
+using Robust.Shared.Audio.Systems;
+using Robust.Shared.Network;
+using Robust.Shared.Player;
+using Robust.Shared.Timing;
+
+namespace Content.Shared.Eye.Blinding.Systems;
+
+public sealed class EyeClosingSystem : EntitySystem
+{
+ [Dependency] private readonly INetManager _net = default!;
+ [Dependency] private readonly IGameTiming _timing = default!;
+ [Dependency] private readonly BlindableSystem _blindableSystem = default!;
+ [Dependency] private readonly SharedActionsSystem _actionsSystem = default!;
+ [Dependency] private readonly SharedAudioSystem _audio = default!;
+ [Dependency] private readonly ISharedPlayerManager _playerManager = default!;
+ [Dependency] private readonly IEntityManager _entityManager = default!;
+
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ SubscribeLocalEvent(OnMapInit);
+ SubscribeLocalEvent(OnShutdown);
+ SubscribeLocalEvent(OnToggleAction);
+ SubscribeLocalEvent(OnTrySee);
+ SubscribeLocalEvent(OnHandleState);
+ }
+
+ private void OnMapInit(Entity eyelids, ref MapInitEvent args)
+ {
+ _actionsSystem.AddAction(eyelids, ref eyelids.Comp.EyeToggleActionEntity, eyelids.Comp.EyeToggleAction);
+ Dirty(eyelids);
+ }
+
+ private void OnShutdown(Entity eyelids, ref ComponentShutdown args)
+ {
+ _actionsSystem.RemoveAction(eyelids, eyelids.Comp.EyeToggleActionEntity);
+
+ SetEyelids((eyelids.Owner, eyelids.Comp), false);
+ }
+
+ private void OnToggleAction(Entity eyelids, ref ToggleEyesActionEvent args)
+ {
+ if (args.Handled)
+ return;
+
+ args.Handled = true;
+ SetEyelids((eyelids.Owner, eyelids.Comp), !eyelids.Comp.EyesClosed);
+ }
+
+ private void OnHandleState(Entity eyelids, ref AfterAutoHandleStateEvent args)
+ {
+ DoAudioFeedback((eyelids.Owner, eyelids.Comp), eyelids.Comp.EyesClosed);
+ }
+
+ private void OnTrySee(Entity eyelids, ref CanSeeAttemptEvent args)
+ {
+ if (eyelids.Comp.EyesClosed)
+ args.Cancel();
+ }
+
+ ///
+ /// Checks whether or not the entity's eyelids are closed.
+ ///
+ /// The entity that contains an EyeClosingComponent
+ /// Exactly what this function says on the tin. True if eyes are closed, false if they're open.
+ public bool AreEyesClosed(Entity eyelids)
+ {
+ return Resolve(eyelids, ref eyelids.Comp, false) && eyelids.Comp.EyesClosed;
+ }
+
+ ///
+ /// Sets whether or not the entity's eyelids are closed.
+ ///
+ /// The entity that contains an EyeClosingComponent
+ /// Set to true to close the entity's eyes. Set to false to open them
+ public void SetEyelids(Entity eyelids, bool value)
+ {
+ if (!Resolve(eyelids, ref eyelids.Comp))
+ return;
+
+ if (eyelids.Comp.EyesClosed == value)
+ return;
+
+ eyelids.Comp.EyesClosed = value;
+ Dirty(eyelids);
+
+ if (eyelids.Comp.EyeToggleActionEntity != null)
+ _actionsSystem.SetToggled(eyelids.Comp.EyeToggleActionEntity, eyelids.Comp.EyesClosed);
+
+ _blindableSystem.UpdateIsBlind(eyelids.Owner);
+
+ DoAudioFeedback(eyelids, eyelids.Comp.EyesClosed);
+ }
+
+ public void DoAudioFeedback(Entity eyelids, bool eyelidTarget)
+ {
+ if (!Resolve(eyelids, ref eyelids.Comp))
+ return;
+
+ if (!_net.IsClient || !_timing.IsFirstTimePredicted)
+ return;
+
+ if (eyelids.Comp.PreviousEyelidPosition == eyelidTarget)
+ return;
+
+ eyelids.Comp.PreviousEyelidPosition = eyelidTarget;
+
+ if (_playerManager.TryGetSessionByEntity(eyelids, out var session))
+ _audio.PlayGlobal(eyelidTarget ? eyelids.Comp.EyeCloseSound : eyelids.Comp.EyeOpenSound, session);
+ }
+
+ public void UpdateEyesClosable(Entity blindable)
+ {
+ if (!Resolve(blindable, ref blindable.Comp, false))
+ return;
+
+ var ev = new GetBlurEvent(blindable.Comp.EyeDamage);
+ RaiseLocalEvent(blindable.Owner, ev);
+
+ if (_entityManager.TryGetComponent(blindable, out var eyelids) && !eyelids.NaturallyCreated)
+ return;
+
+ if (ev.Blur < BlurryVisionComponent.MaxMagnitude || ev.Blur >= BlindableComponent.MaxDamage)
+ {
+ RemCompDeferred(blindable);
+ return;
+ }
+
+ var naturalEyelids = EnsureComp(blindable);
+ naturalEyelids.NaturallyCreated = true;
+ Dirty(blindable);
+ }
+}
+
+public sealed partial class ToggleEyesActionEvent : InstantActionEvent
+{
+}
diff --git a/Content.Shared/Item/ItemComponent.cs b/Content.Shared/Item/ItemComponent.cs
index 1cb51b6ea0..1ef6592b08 100644
--- a/Content.Shared/Item/ItemComponent.cs
+++ b/Content.Shared/Item/ItemComponent.cs
@@ -12,10 +12,10 @@ namespace Content.Shared.Item;
///
[RegisterComponent]
[NetworkedComponent]
-[Access(typeof(SharedItemSystem))]
+[Access(typeof(SharedItemSystem)), AutoGenerateComponentState(true)]
public sealed partial class ItemComponent : Component
{
- [DataField, ViewVariables(VVAccess.ReadWrite)]
+ [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
[Access(typeof(SharedItemSystem))]
public ProtoId Size = "Small";
@@ -25,7 +25,7 @@ public sealed partial class ItemComponent : Component
[Access(typeof(SharedItemSystem))]
[ViewVariables(VVAccess.ReadWrite)]
- [DataField]
+ [DataField, AutoNetworkedField]
public string? HeldPrefix;
///
@@ -56,19 +56,6 @@ public sealed partial class ItemComponent : Component
public float StoredRotation = 0;
}
-[Serializable, NetSerializable]
-public sealed class ItemComponentState : ComponentState
-{
- public ProtoId Size { get; }
- public string? HeldPrefix { get; }
-
- public ItemComponentState(ProtoId size, string? heldPrefix)
- {
- Size = size;
- HeldPrefix = heldPrefix;
- }
-}
-
///
/// Raised when an item's visual state is changed. The event is directed at the entity that contains this item, so
/// that it can properly update its hands or inventory sprites and GUI.
diff --git a/Content.Shared/Item/ItemToggle/Components/ItemToggleActiveSoundComponent.cs b/Content.Shared/Item/ItemToggle/Components/ItemToggleActiveSoundComponent.cs
index eb992975b3..6d53471357 100644
--- a/Content.Shared/Item/ItemToggle/Components/ItemToggleActiveSoundComponent.cs
+++ b/Content.Shared/Item/ItemToggle/Components/ItemToggleActiveSoundComponent.cs
@@ -1,16 +1,16 @@
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
-namespace Content.Shared.Item;
+namespace Content.Shared.Item.ItemToggle.Components;
///
/// Handles the active sound being played continuously with some items that are activated (ie e-sword hum).
///
-[RegisterComponent, NetworkedComponent]
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class ItemToggleActiveSoundComponent : Component
{
///
- /// The continuous noise this item makes when it's activated (like an e-sword's hum). This loops.
+ /// The continuous noise this item makes when it's activated (like an e-sword's hum).
///
[ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
public SoundSpecifier? ActiveSound;
@@ -18,17 +18,6 @@ public sealed partial class ItemToggleActiveSoundComponent : Component
///
/// Used when the item emits sound while active.
///
- [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
+ [ViewVariables(VVAccess.ReadWrite), DataField]
public EntityUid? PlayingStream;
}
-
-///
-/// Raised in order to effect changes upon the ActiveSound of the entity.
-///
-[ByRefEvent]
-public record struct ItemToggleActiveSoundUpdateEvent(bool Activated, bool Predicted, EntityUid? User)
-{
- public bool Activated = Activated;
- public bool Predicted = Predicted;
- public EntityUid? User = User;
-}
diff --git a/Content.Shared/Item/ItemToggle/Components/ItemToggleComponent.cs b/Content.Shared/Item/ItemToggle/Components/ItemToggleComponent.cs
index 6d27d9ee12..3ea80ec735 100644
--- a/Content.Shared/Item/ItemToggle/Components/ItemToggleComponent.cs
+++ b/Content.Shared/Item/ItemToggle/Components/ItemToggleComponent.cs
@@ -1,7 +1,7 @@
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
-namespace Content.Shared.Item;
+namespace Content.Shared.Item.ItemToggle.Components;
///
/// Handles generic item toggles, like a welder turning on and off, or an e-sword.
@@ -54,7 +54,7 @@ public sealed partial class ItemToggleComponent : Component
public record struct ItemToggleActivateAttemptEvent(EntityUid? User)
{
public bool Cancelled = false;
- public EntityUid? User = User;
+ public readonly EntityUid? User = User;
}
///
@@ -64,63 +64,34 @@ public record struct ItemToggleActivateAttemptEvent(EntityUid? User)
public record struct ItemToggleDeactivateAttemptEvent(EntityUid? User)
{
public bool Cancelled = false;
- public EntityUid? User = User;
+ public readonly EntityUid? User = User;
}
///
/// Raised directed on an entity any sort of toggle is complete.
///
[ByRefEvent]
-public record struct ItemToggleDoneEvent(bool Activated, EntityUid? User)
+public readonly record struct ItemToggledEvent(bool Predicted, bool Activated, EntityUid? User)
{
- public bool Activated = Activated;
- public EntityUid? User = User;
+ public readonly bool Predicted = Predicted;
+ public readonly bool Activated = Activated;
+ public readonly EntityUid? User = User;
}
///
-/// Raised in order to play a toggle sound effect.
+/// Raised directed on an entity when an itemtoggle is activated.
///
[ByRefEvent]
-public record struct ItemTogglePlayToggleSoundEvent(bool Activated, bool Predicted, EntityUid? User)
+public readonly record struct ItemToggleActivatedEvent(EntityUid? User)
{
- public bool Activated = Activated;
- public bool Predicted = Predicted;
- public EntityUid? User = User;
+ public readonly EntityUid? User = User;
}
///
-/// Raised in order to play a failure to toggle sound effect.
+/// Raised directed on an entity when an itemtoggle is deactivated.
///
[ByRefEvent]
-public record struct ItemTogglePlayFailSoundEvent(bool Predicted, EntityUid? User)
+public readonly record struct ItemToggleDeactivatedEvent(EntityUid? User)
{
- public bool Predicted = Predicted;
- public EntityUid? User = User;
-}
-
-///
-/// Raised in order to effect changes upon the Light component of the entity.
-///
-[ByRefEvent]
-public record struct ItemToggleLightUpdateEvent(bool Activated)
-{
- public bool Activated = Activated;
-}
-
-///
-/// Raised in order to effect changes upon the Appearance component of the entity.
-///
-[ByRefEvent]
-public record struct ItemToggleAppearanceUpdateEvent(bool Activated)
-{
- public bool Activated = Activated;
-}
-
-///
-/// Raised in order to effect changes upon the Reflect component of the entity.
-///
-[ByRefEvent]
-public record struct ItemToggleReflectUpdateEvent(bool Activated)
-{
- public bool Activated = Activated;
+ public readonly EntityUid? User = User;
}
diff --git a/Content.Shared/Item/ItemToggle/Components/ItemToggleHotComponent.cs b/Content.Shared/Item/ItemToggle/Components/ItemToggleHotComponent.cs
index b35adfadac..c3eb1d1e58 100644
--- a/Content.Shared/Item/ItemToggle/Components/ItemToggleHotComponent.cs
+++ b/Content.Shared/Item/ItemToggle/Components/ItemToggleHotComponent.cs
@@ -1,11 +1,11 @@
using Robust.Shared.GameStates;
-namespace Content.Shared.Item;
+namespace Content.Shared.Item.ItemToggle.Components;
///
-/// Handles whether the item is hot when toggled on.
+/// Handles whether the item is hot when toggled on.
///
-[RegisterComponent, NetworkedComponent]
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class ItemToggleHotComponent : Component
{
///
diff --git a/Content.Shared/Item/ItemToggle/Components/ItemToggleMeleeWeaponComponent.cs b/Content.Shared/Item/ItemToggle/Components/ItemToggleMeleeWeaponComponent.cs
index 5e57491af0..a51e90be60 100644
--- a/Content.Shared/Item/ItemToggle/Components/ItemToggleMeleeWeaponComponent.cs
+++ b/Content.Shared/Item/ItemToggle/Components/ItemToggleMeleeWeaponComponent.cs
@@ -1,16 +1,16 @@
-using Robust.Shared.GameStates;
-using Robust.Shared.Audio;
using Content.Shared.Damage;
+using Robust.Shared.Audio;
+using Robust.Shared.GameStates;
-namespace Content.Shared.Item;
+namespace Content.Shared.Item.ItemToggle.Components;
///
-/// Handles the changes to the melee weapon component when the item is toggled.
+/// Handles the changes to the melee weapon component when the item is toggled.
///
///
/// You can change the damage, sound on hit, on swing, as well as hidden status while activated.
///
-[RegisterComponent, NetworkedComponent]
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class ItemToggleMeleeWeaponComponent : Component
{
///
@@ -67,13 +67,3 @@ public sealed partial class ItemToggleMeleeWeaponComponent : Component
[ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
public bool DeactivatedSecret = false;
}
-
-///
-/// Raised in order to effect changes upon the MeleeWeaponComponent of the entity.
-///
-[ByRefEvent]
-public record struct ItemToggleMeleeWeaponUpdateEvent(bool Activated)
-{
- public bool Activated = Activated;
-}
-
diff --git a/Content.Shared/Item/ItemToggle/Components/ItemToggleSizeComponent.cs b/Content.Shared/Item/ItemToggle/Components/ItemToggleSizeComponent.cs
index f280934f1b..353f3d6fd5 100644
--- a/Content.Shared/Item/ItemToggle/Components/ItemToggleSizeComponent.cs
+++ b/Content.Shared/Item/ItemToggle/Components/ItemToggleSizeComponent.cs
@@ -1,15 +1,15 @@
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
-namespace Content.Shared.Item;
+namespace Content.Shared.Item.ItemToggle.Components;
///
-/// Handles the changes to the item size when toggled.
+/// Handles the changes to the item size when toggled.
///
///
/// You can change the size when activated or not. By default the sizes are copied from the item.
///
-[RegisterComponent, NetworkedComponent]
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class ItemToggleSizeComponent : Component
{
///
@@ -24,12 +24,3 @@ public sealed partial class ItemToggleSizeComponent : Component
[ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
public ProtoId? DeactivatedSize = null;
}
-
-///
-/// Raised in order to effect changes upon the MeleeWeaponComponent of the entity.
-///
-[ByRefEvent]
-public record struct ItemToggleSizeUpdateEvent(bool Activated)
-{
- public bool Activated = Activated;
-}
diff --git a/Content.Shared/Item/ItemToggle/SharedItemToggleSystem.cs b/Content.Shared/Item/ItemToggle/SharedItemToggleSystem.cs
index e44d135bf2..c502f845dd 100644
--- a/Content.Shared/Item/ItemToggle/SharedItemToggleSystem.cs
+++ b/Content.Shared/Item/ItemToggle/SharedItemToggleSystem.cs
@@ -1,11 +1,10 @@
using Content.Shared.Interaction.Events;
-using Content.Shared.Toggleable;
+using Content.Shared.Item.ItemToggle.Components;
using Content.Shared.Temperature;
+using Content.Shared.Toggleable;
using Content.Shared.Wieldable;
-using Content.Shared.Wieldable.Components;
using Robust.Shared.Audio;
using Robust.Shared.Audio.Systems;
-using Robust.Shared.Prototypes;
using Robust.Shared.Network;
namespace Content.Shared.Item.ItemToggle;
@@ -29,12 +28,10 @@ public abstract class SharedItemToggleSystem : EntitySystem
SubscribeLocalEvent(TurnOffonUnwielded);
SubscribeLocalEvent(TurnOnonWielded);
SubscribeLocalEvent(OnUseInHand);
+
SubscribeLocalEvent(OnIsHotEvent);
- SubscribeLocalEvent(UpdateActiveSound);
- SubscribeLocalEvent(UpdateAppearance);
- SubscribeLocalEvent(UpdateLight);
- SubscribeLocalEvent(PlayToggleSound);
- SubscribeLocalEvent(PlayFailToggleSound);
+
+ SubscribeLocalEvent(UpdateActiveSound);
}
private void OnUseInHand(EntityUid uid, ItemToggleComponent itemToggle, UseInHandEvent args)
@@ -48,7 +45,7 @@ public abstract class SharedItemToggleSystem : EntitySystem
}
///
- /// Used when an item is attempted to be toggled.
+ /// Used when an item is attempted to be toggled.
///
public void Toggle(EntityUid uid, EntityUid? user = null, bool predicted = true, ItemToggleComponent? itemToggle = null)
{
@@ -81,9 +78,10 @@ public abstract class SharedItemToggleSystem : EntitySystem
if (attempt.Cancelled)
{
- //Raises the event to play the failure to activate noise.
- var evPlayFailToggleSound = new ItemTogglePlayFailSoundEvent(Predicted: predicted, user);
- RaiseLocalEvent(uid, ref evPlayFailToggleSound);
+ if (predicted)
+ _audio.PlayPredicted(itemToggle.SoundFailToActivate, uid, user);
+ else
+ _audio.PlayPvs(itemToggle.SoundFailToActivate, uid);
return false;
}
@@ -92,16 +90,7 @@ public abstract class SharedItemToggleSystem : EntitySystem
if (predicted == false && _netManager.IsClient)
return true;
- Activate(uid, itemToggle);
-
- var evPlayToggleSound = new ItemTogglePlayToggleSoundEvent(Activated: true, Predicted: predicted, user);
- RaiseLocalEvent(uid, ref evPlayToggleSound);
-
- var evActiveSound = new ItemToggleActiveSoundUpdateEvent(Activated: true, Predicted: predicted, user);
- RaiseLocalEvent(uid, ref evActiveSound);
-
- var toggleUsed = new ItemToggleDoneEvent(Activated: true, user);
- RaiseLocalEvent(uid, ref toggleUsed);
+ Activate(uid, itemToggle, predicted, user);
return true;
}
@@ -129,61 +118,78 @@ public abstract class SharedItemToggleSystem : EntitySystem
if (predicted == false && _netManager.IsClient)
return true;
- Deactivate(uid, itemToggle);
-
- var evPlayToggleSound = new ItemTogglePlayToggleSoundEvent(Activated: false, Predicted: predicted, user);
- RaiseLocalEvent(uid, ref evPlayToggleSound);
-
- var evActiveSound = new ItemToggleActiveSoundUpdateEvent(Activated: false, Predicted: predicted, user);
- RaiseLocalEvent(uid, ref evActiveSound);
-
- var toggleUsed = new ItemToggleDoneEvent(Activated: false, user);
- RaiseLocalEvent(uid, ref toggleUsed);
-
+ Deactivate(uid, itemToggle, predicted, user);
return true;
}
- ///
- /// Used to make the actual changes to the item's components on activation.
- ///
- private void Activate(EntityUid uid, ItemToggleComponent itemToggle)
+ private void Activate(EntityUid uid, ItemToggleComponent itemToggle, bool predicted, EntityUid? user = null)
{
- UpdateComponents(uid, itemToggle.Activated = true);
+ // TODO: Fix this hardcoding
+ TryComp(uid, out AppearanceComponent? appearance);
+ _appearance.SetData(uid, ToggleableLightVisuals.Enabled, true, appearance);
+ _appearance.SetData(uid, ToggleVisuals.Toggled, true, appearance);
+ if (_light.TryGetLight(uid, out var light))
+ {
+ _light.SetEnabled(uid, true, light);
+ }
+
+ SoundSpecifier? soundToPlay = itemToggle.SoundActivate;
+
+ if (soundToPlay == null)
+ return;
+
+ if (predicted)
+ _audio.PlayPredicted(soundToPlay, uid, user);
+ else
+ _audio.PlayPvs(soundToPlay, uid);
+
+ // END FIX HARDCODING
+
+ var toggleUsed = new ItemToggledEvent(predicted, Activated: true, user);
+ RaiseLocalEvent(uid, ref toggleUsed);
+
+ var activev = new ItemToggleActivatedEvent(user);
+ RaiseLocalEvent(uid, ref activev);
+
+ itemToggle.Activated = true;
Dirty(uid, itemToggle);
}
///
/// Used to make the actual changes to the item's components on deactivation.
///
- private void Deactivate(EntityUid uid, ItemToggleComponent itemToggle)
+ private void Deactivate(EntityUid uid, ItemToggleComponent itemToggle, bool predicted, EntityUid? user = null)
{
- UpdateComponents(uid, itemToggle.Activated = false);
+ // TODO: Fix this hardcoding
+ TryComp(uid, out AppearanceComponent? appearance);
+ _appearance.SetData(uid, ToggleableLightVisuals.Enabled, false, appearance);
+ _appearance.SetData(uid, ToggleVisuals.Toggled, false, appearance);
+ if (_light.TryGetLight(uid, out var light))
+ {
+ _light.SetEnabled(uid, false, light);
+ }
+
+ var soundToPlay = itemToggle.SoundDeactivate;
+
+ if (predicted)
+ _audio.PlayPredicted(soundToPlay, uid, user);
+ else
+ _audio.PlayPvs(soundToPlay, uid);
+
+ // END FIX HARDCODING
+
+ var toggleUsed = new ItemToggledEvent(predicted, Activated: false, user);
+ RaiseLocalEvent(uid, ref toggleUsed);
+
+ var activev = new ItemToggleDeactivatedEvent(user);
+ RaiseLocalEvent(uid, ref activev);
+
+ itemToggle.Activated = false;
Dirty(uid, itemToggle);
}
- ///
- /// Used to raise events to update components on toggle.
- ///
- private void UpdateComponents(EntityUid uid, bool activated)
- {
- var evSize = new ItemToggleSizeUpdateEvent(activated);
- RaiseLocalEvent(uid, ref evSize);
-
- var evMelee = new ItemToggleMeleeWeaponUpdateEvent(activated);
- RaiseLocalEvent(uid, ref evMelee);
-
- var evAppearance = new ItemToggleAppearanceUpdateEvent(activated);
- RaiseLocalEvent(uid, ref evAppearance);
-
- var evLight = new ItemToggleLightUpdateEvent(activated);
- RaiseLocalEvent(uid, ref evLight);
-
- var evReflect = new ItemToggleReflectUpdateEvent(activated);
- RaiseLocalEvent(uid, ref evReflect);
- }
-
///
/// Used for items that require to be wielded in both hands to activate. For instance the dual energy sword will turn off if not wielded.
///
@@ -219,30 +225,10 @@ public abstract class SharedItemToggleSystem : EntitySystem
args.IsHot = IsActivated(uid);
}
- ///
- /// Used to update item appearance.
- ///
- private void UpdateAppearance(EntityUid uid, AppearanceComponent appearance, ref ItemToggleAppearanceUpdateEvent args)
- {
- _appearance.SetData(uid, ToggleableLightVisuals.Enabled, args.Activated, appearance);
- _appearance.SetData(uid, ToggleVisuals.Toggled, args.Activated, appearance);
- }
-
- ///
- /// Used to update light settings.
- ///
- private void UpdateLight(EntityUid uid, ItemToggleComponent comp, ref ItemToggleLightUpdateEvent args)
- {
- if (!_light.TryGetLight(uid, out var light))
- return;
-
- _light.SetEnabled(uid, args.Activated, light);
- }
-
///
/// Used to update the looping active sound linked to the entity.
///
- private void UpdateActiveSound(EntityUid uid, ItemToggleActiveSoundComponent activeSound, ref ItemToggleActiveSoundUpdateEvent args)
+ private void UpdateActiveSound(EntityUid uid, ItemToggleActiveSoundComponent activeSound, ref ItemToggledEvent args)
{
if (args.Activated)
{
@@ -259,35 +245,4 @@ public abstract class SharedItemToggleSystem : EntitySystem
activeSound.PlayingStream = _audio.Stop(activeSound.PlayingStream);
}
}
-
- ///
- /// Used to play a toggle sound.
- ///
- private void PlayToggleSound(EntityUid uid, ItemToggleComponent itemToggle, ref ItemTogglePlayToggleSoundEvent args)
- {
- SoundSpecifier? soundToPlay;
- if (args.Activated)
- soundToPlay = itemToggle.SoundActivate;
- else
- soundToPlay = itemToggle.SoundDeactivate;
-
- if (soundToPlay == null)
- return;
-
- if (args.Predicted)
- _audio.PlayPredicted(soundToPlay, uid, args.User);
- else
- _audio.PlayPvs(soundToPlay, uid);
- }
-
- ///
- /// Used to play a failure to toggle sound.
- ///
- private void PlayFailToggleSound(EntityUid uid, ItemToggleComponent itemToggle, ref ItemTogglePlayFailSoundEvent args)
- {
- if (args.Predicted)
- _audio.PlayPredicted(itemToggle.SoundFailToActivate, uid, args.User);
- else
- _audio.PlayPvs(itemToggle.SoundFailToActivate, uid);
- }
}
diff --git a/Content.Shared/Item/SharedItemSystem.cs b/Content.Shared/Item/SharedItemSystem.cs
index fe925c5547..13b98d8533 100644
--- a/Content.Shared/Item/SharedItemSystem.cs
+++ b/Content.Shared/Item/SharedItemSystem.cs
@@ -2,6 +2,7 @@ using Content.Shared.Hands.EntitySystems;
using Content.Shared.Interaction;
using Content.Shared.Verbs;
using Content.Shared.Examine;
+using Content.Shared.Item.ItemToggle.Components;
using Content.Shared.Storage;
using JetBrains.Annotations;
using Robust.Shared.Containers;
@@ -21,14 +22,17 @@ public abstract class SharedItemSystem : EntitySystem
{
base.Initialize();
SubscribeLocalEvent>(AddPickupVerb);
- SubscribeLocalEvent(OnHandInteract, before: new []{typeof(SharedItemSystem)});
-
- SubscribeLocalEvent(OnGetState);
- SubscribeLocalEvent(OnHandleState);
+ SubscribeLocalEvent(OnHandInteract);
+ SubscribeLocalEvent(OnItemAutoState);
SubscribeLocalEvent(OnExamine);
- SubscribeLocalEvent(OnItemToggle);
+ SubscribeLocalEvent(OnItemToggle);
+ }
+
+ private void OnItemAutoState(EntityUid uid, ItemComponent component, ref AfterAutoHandleStateEvent args)
+ {
+ SetHeldPrefix(uid, component.HeldPrefix, force: true, component);
}
#region Public API
@@ -42,12 +46,12 @@ public abstract class SharedItemSystem : EntitySystem
Dirty(uid, component);
}
- public void SetHeldPrefix(EntityUid uid, string? heldPrefix, ItemComponent? component = null)
+ public void SetHeldPrefix(EntityUid uid, string? heldPrefix, bool force = false, ItemComponent? component = null)
{
if (!Resolve(uid, ref component, false))
return;
- if (component.HeldPrefix == heldPrefix)
+ if (!force && component.HeldPrefix == heldPrefix)
return;
component.HeldPrefix = heldPrefix;
@@ -81,20 +85,6 @@ public abstract class SharedItemSystem : EntitySystem
args.Handled = _handsSystem.TryPickup(args.User, uid, animateUser: false);
}
- private void OnHandleState(EntityUid uid, ItemComponent component, ref ComponentHandleState args)
- {
- if (args.Current is not ItemComponentState state)
- return;
-
- component.Size = state.Size;
- SetHeldPrefix(uid, state.HeldPrefix, component);
- }
-
- private void OnGetState(EntityUid uid, ItemComponent component, ref ComponentGetState args)
- {
- args.State = new ItemComponentState(component.Size, component.HeldPrefix);
- }
-
private void AddPickupVerb(EntityUid uid, ItemComponent component, GetVerbsEvent args)
{
if (args.Hands == null ||
@@ -211,7 +201,7 @@ public abstract class SharedItemSystem : EntitySystem
///
/// Used to update the Item component on item toggle (specifically size).
///
- private void OnItemToggle(EntityUid uid, ItemToggleSizeComponent itemToggleSize, ItemToggleSizeUpdateEvent args)
+ private void OnItemToggle(EntityUid uid, ItemToggleSizeComponent itemToggleSize, ItemToggledEvent args)
{
if (!TryComp(uid, out ItemComponent? item))
return;
diff --git a/Content.Shared/Lathe/SharedLatheSystem.cs b/Content.Shared/Lathe/SharedLatheSystem.cs
index 9debaa7719..b41a91f9c3 100644
--- a/Content.Shared/Lathe/SharedLatheSystem.cs
+++ b/Content.Shared/Lathe/SharedLatheSystem.cs
@@ -1,8 +1,10 @@
+using System.Diagnostics.CodeAnalysis;
using Content.Shared.Emag.Systems;
using Content.Shared.Materials;
using Content.Shared.Research.Prototypes;
using JetBrains.Annotations;
using Robust.Shared.Prototypes;
+using Robust.Shared.Utility;
namespace Content.Shared.Lathe;
@@ -14,11 +16,15 @@ public abstract class SharedLatheSystem : EntitySystem
[Dependency] private readonly IPrototypeManager _proto = default!;
[Dependency] private readonly SharedMaterialStorageSystem _materialStorage = default!;
+ private readonly Dictionary> _inverseRecipeDictionary = new();
+
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent(OnEmagged);
+ SubscribeLocalEvent(OnPrototypesReloaded);
+ BuildInverseRecipeDictionary();
}
[PublicAPI]
@@ -53,4 +59,28 @@ public abstract class SharedLatheSystem : EntitySystem
=> reduce ? (int) MathF.Ceiling(original * multiplier) : original;
protected abstract bool HasRecipe(EntityUid uid, LatheRecipePrototype recipe, LatheComponent component);
+
+ private void OnPrototypesReloaded(PrototypesReloadedEventArgs obj)
+ {
+ if (!obj.WasModified())
+ return;
+ BuildInverseRecipeDictionary();
+ }
+
+ private void BuildInverseRecipeDictionary()
+ {
+ _inverseRecipeDictionary.Clear();
+ foreach (var latheRecipe in _proto.EnumeratePrototypes())
+ {
+ _inverseRecipeDictionary.GetOrNew(latheRecipe.Result).Add(latheRecipe);
+ }
+ }
+
+ public bool TryGetRecipesFromEntity(string prototype, [NotNullWhen(true)] out List? recipes)
+ {
+ recipes = new();
+ if (_inverseRecipeDictionary.TryGetValue(prototype, out var r))
+ recipes.AddRange(r);
+ return recipes.Count != 0;
+ }
}
diff --git a/Content.Shared/Light/SharedPoweredLightVisuals.cs b/Content.Shared/Light/SharedPoweredLightVisuals.cs
index 6b954a8bf6..90c15bb373 100644
--- a/Content.Shared/Light/SharedPoweredLightVisuals.cs
+++ b/Content.Shared/Light/SharedPoweredLightVisuals.cs
@@ -21,6 +21,7 @@ namespace Content.Shared.Light
public enum PoweredLightLayers : byte
{
- Base
+ Base,
+ Glow
}
}
diff --git a/Content.Shared/Materials/SharedMaterialStorageSystem.cs b/Content.Shared/Materials/SharedMaterialStorageSystem.cs
index a0cd7a9e45..9f7c87df3c 100644
--- a/Content.Shared/Materials/SharedMaterialStorageSystem.cs
+++ b/Content.Shared/Materials/SharedMaterialStorageSystem.cs
@@ -81,7 +81,7 @@ public abstract class SharedMaterialStorageSystem : EntitySystem
{
if (!Resolve(uid, ref component))
return 0; //you have nothing
- return !component.Storage.TryGetValue(material, out var amount) ? 0 : amount;
+ return component.Storage.GetValueOrDefault(material, 0);
}
///
@@ -123,9 +123,35 @@ public abstract class SharedMaterialStorageSystem : EntitySystem
{
if (!Resolve(uid, ref component))
return false;
- return CanTakeVolume(uid, volume, component) &&
- (component.MaterialWhiteList == null || component.MaterialWhiteList.Contains(materialId)) &&
- (!component.Storage.TryGetValue(materialId, out var amount) || amount + volume >= 0);
+
+ if (!CanTakeVolume(uid, volume, component))
+ return false;
+
+ if (component.MaterialWhiteList != null && !component.MaterialWhiteList.Contains(materialId))
+ return false;
+
+ var amount = component.Storage.GetValueOrDefault(materialId);
+ return amount + volume >= 0;
+ }
+
+ ///
+ /// Checks if the specified materials can be changed by the specified volumes.
+ ///
+ ///
+ ///
+ /// If the amount can be changed
+ public bool CanChangeMaterialAmount(Entity entity, Dictionary materials)
+ {
+ if (!Resolve(entity, ref entity.Comp))
+ return false;
+
+ foreach (var (material, amount) in materials)
+ {
+ if (!CanChangeMaterialAmount(entity, material, amount, entity.Comp))
+ return false;
+ }
+
+ return true;
}
///
@@ -136,20 +162,47 @@ public abstract class SharedMaterialStorageSystem : EntitySystem
///
///
///
+ ///
/// If it was successful
- public bool TryChangeMaterialAmount(EntityUid uid, string materialId, int volume, MaterialStorageComponent? component = null)
+ public bool TryChangeMaterialAmount(EntityUid uid, string materialId, int volume, MaterialStorageComponent? component = null, bool dirty = true)
{
if (!Resolve(uid, ref component))
return false;
if (!CanChangeMaterialAmount(uid, materialId, volume, component))
return false;
- if (!component.Storage.ContainsKey(materialId))
- component.Storage.Add(materialId, 0);
+ component.Storage.TryAdd(materialId, 0);
component.Storage[materialId] += volume;
var ev = new MaterialAmountChangedEvent();
RaiseLocalEvent(uid, ref ev);
- Dirty(component);
+
+ if (dirty)
+ Dirty(uid, component);
+ return true;
+ }
+
+ ///
+ /// 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)
+ {
+ 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))
+ return false;
+ }
+
+ Dirty(entity, entity.Comp);
return true;
}
@@ -225,7 +278,7 @@ public abstract class SharedMaterialStorageSystem : EntitySystem
insertingComp.MaterialColor = lastMat?.Color;
}
_appearance.SetData(receiver, MaterialStorageVisuals.Inserting, true);
- Dirty(insertingComp);
+ Dirty(receiver, insertingComp);
var ev = new MaterialEntityInsertedEvent(material);
RaiseLocalEvent(receiver, ref ev);
@@ -245,7 +298,7 @@ public abstract class SharedMaterialStorageSystem : EntitySystem
var ev = new GetMaterialWhitelistEvent(uid);
RaiseLocalEvent(uid, ref ev);
component.MaterialWhiteList = ev.Whitelist;
- Dirty(component);
+ Dirty(uid, component);
}
private void OnInteractUsing(EntityUid uid, MaterialStorageComponent component, InteractUsingEvent args)
diff --git a/Content.Shared/Ninja/Components/NinjaSuitComponent.cs b/Content.Shared/Ninja/Components/NinjaSuitComponent.cs
index 73de252690..381728ae28 100644
--- a/Content.Shared/Ninja/Components/NinjaSuitComponent.cs
+++ b/Content.Shared/Ninja/Components/NinjaSuitComponent.cs
@@ -13,7 +13,7 @@ namespace Content.Shared.Ninja.Components;
/// Component for ninja suit abilities and power consumption.
/// As an implementation detail, dashing with katana is a suit action which isn't ideal.
///
-[RegisterComponent, NetworkedComponent, Access(typeof(SharedNinjaSuitSystem))]
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedNinjaSuitSystem)), AutoGenerateComponentState]
public sealed partial class NinjaSuitComponent : Component
{
///
diff --git a/Content.Shared/Sericulture/SericultureComponent.cs b/Content.Shared/Sericulture/SericultureComponent.cs
index c98a2171b0..e0cc2b7d91 100644
--- a/Content.Shared/Sericulture/SericultureComponent.cs
+++ b/Content.Shared/Sericulture/SericultureComponent.cs
@@ -9,7 +9,7 @@ namespace Content.Shared.Sericulture;
/// Should be applied to any mob that you want to be able to produce any material with an action and the cost of hunger.
/// TODO: Probably adjust this to utilize organs?
///
-[RegisterComponent, NetworkedComponent, Access(typeof(SharedSericultureSystem))]
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedSericultureSystem)), AutoGenerateComponentState]
public sealed partial class SericultureComponent : Component
{
///
diff --git a/Content.Shared/Teleportation/Components/PortalComponent.cs b/Content.Shared/Teleportation/Components/PortalComponent.cs
index 42fe8e5b70..1e2c2e6428 100644
--- a/Content.Shared/Teleportation/Components/PortalComponent.cs
+++ b/Content.Shared/Teleportation/Components/PortalComponent.cs
@@ -7,7 +7,7 @@ namespace Content.Shared.Teleportation.Components;
/// Marks an entity as being a 'portal' which teleports entities sent through it to linked entities.
/// Relies on being set up.
///
-[RegisterComponent, NetworkedComponent]
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class PortalComponent : Component
{
///
diff --git a/Content.Shared/Traits/Assorted/PermanentBlindnessSystem.cs b/Content.Shared/Traits/Assorted/PermanentBlindnessSystem.cs
index a9bdb28168..9fd5db8497 100644
--- a/Content.Shared/Traits/Assorted/PermanentBlindnessSystem.cs
+++ b/Content.Shared/Traits/Assorted/PermanentBlindnessSystem.cs
@@ -1,5 +1,5 @@
using Content.Shared.Examine;
-using Content.Shared.Eye.Blinding;
+using Content.Shared.Eye.Blinding.Components;
using Content.Shared.Eye.Blinding.Systems;
using Content.Shared.IdentityManagement;
using Robust.Shared.Network;
@@ -12,6 +12,7 @@ namespace Content.Shared.Traits.Assorted;
public sealed class PermanentBlindnessSystem : EntitySystem
{
[Dependency] private readonly INetManager _net = default!;
+ [Dependency] private readonly IEntityManager _entityManager = default!;
[Dependency] private readonly BlindableSystem _blinding = default!;
///
@@ -19,31 +20,45 @@ public sealed class PermanentBlindnessSystem : EntitySystem
{
SubscribeLocalEvent(OnStartup);
SubscribeLocalEvent(OnShutdown);
- SubscribeLocalEvent(OnTrySee);
+ SubscribeLocalEvent(OnDamageChanged);
SubscribeLocalEvent(OnExamined);
}
- private void OnExamined(EntityUid uid, PermanentBlindnessComponent component, ExaminedEvent args)
+ private void OnExamined(Entity blindness, ref ExaminedEvent args)
{
if (args.IsInDetailsRange && !_net.IsClient)
{
- args.PushMarkup(Loc.GetString("permanent-blindness-trait-examined", ("target", Identity.Entity(uid, EntityManager))));
+ args.PushMarkup(Loc.GetString("permanent-blindness-trait-examined", ("target", Identity.Entity(blindness, EntityManager))));
}
}
- private void OnShutdown(EntityUid uid, PermanentBlindnessComponent component, ComponentShutdown args)
+ private void OnShutdown(Entity blindness, ref ComponentShutdown args)
{
- _blinding.UpdateIsBlind(uid);
+ _blinding.UpdateIsBlind(blindness.Owner);
}
- private void OnStartup(EntityUid uid, PermanentBlindnessComponent component, ComponentStartup args)
+ private void OnStartup(Entity blindness, ref ComponentStartup args)
{
- _blinding.UpdateIsBlind(uid);
+ if (!_entityManager.TryGetComponent(blindness, out var blindable))
+ return;
+
+ var damageToDeal = (int) BlurryVisionComponent.MaxMagnitude - blindable.EyeDamage;
+
+ if (damageToDeal <= 0)
+ return;
+
+ _blinding.AdjustEyeDamage(blindness.Owner, damageToDeal);
}
- private void OnTrySee(EntityUid uid, PermanentBlindnessComponent component, CanSeeAttemptEvent args)
+ private void OnDamageChanged(Entity blindness, ref EyeDamageChangedEvent args)
{
- if (component.LifeStage <= ComponentLifeStage.Running)
- args.Cancel();
+ if (args.Damage >= BlurryVisionComponent.MaxMagnitude)
+ return;
+
+ if (!_entityManager.TryGetComponent(blindness, out var blindable))
+ return;
+
+ var damageRestoration = (int) BlurryVisionComponent.MaxMagnitude - args.Damage;
+ _blinding.AdjustEyeDamage(blindness.Owner, damageRestoration);
}
}
diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs
index 4824672974..c6adf00113 100644
--- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs
+++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs
@@ -13,6 +13,7 @@ using Content.Shared.Hands.Components;
using Content.Shared.Interaction;
using Content.Shared.Inventory;
using Content.Shared.Item;
+using Content.Shared.Item.ItemToggle.Components;
using Content.Shared.Physics;
using Content.Shared.Popups;
using Content.Shared.Weapons.Melee.Components;
@@ -29,6 +30,7 @@ using Robust.Shared.Player;
using Robust.Shared.Prototypes;
using Robust.Shared.Timing;
using Robust.Shared.Toolshed.Syntax;
+using ItemToggleMeleeWeaponComponent = Content.Shared.Item.ItemToggle.Components.ItemToggleMeleeWeaponComponent;
namespace Content.Shared.Weapons.Melee;
@@ -74,7 +76,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
SubscribeLocalEvent(OnGetBonusHeavyDamageModifier);
SubscribeLocalEvent(OnGetBonusMeleeAttackRate);
- SubscribeLocalEvent(OnItemToggle);
+ SubscribeLocalEvent(OnItemToggle);
SubscribeAllEvent(OnHeavyAttack);
SubscribeAllEvent(OnLightAttack);
@@ -864,7 +866,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
///
/// Used to update the MeleeWeapon component on item toggle.
///
- private void OnItemToggle(EntityUid uid, ItemToggleMeleeWeaponComponent itemToggleMelee, ItemToggleMeleeWeaponUpdateEvent args)
+ private void OnItemToggle(EntityUid uid, ItemToggleMeleeWeaponComponent itemToggleMelee, ItemToggledEvent args)
{
if (!TryComp(uid, out MeleeWeaponComponent? meleeWeapon))
return;
diff --git a/Content.Shared/Weapons/Reflect/SharedReflectSystem.cs b/Content.Shared/Weapons/Reflect/ReflectSystem.cs
similarity index 96%
rename from Content.Shared/Weapons/Reflect/SharedReflectSystem.cs
rename to Content.Shared/Weapons/Reflect/ReflectSystem.cs
index b9dead8231..4a7c2f6b6a 100644
--- a/Content.Shared/Weapons/Reflect/SharedReflectSystem.cs
+++ b/Content.Shared/Weapons/Reflect/ReflectSystem.cs
@@ -6,6 +6,7 @@ using Content.Shared.Database;
using Content.Shared.Hands;
using Content.Shared.Inventory;
using Content.Shared.Inventory.Events;
+using Content.Shared.Item.ItemToggle.Components;
using Content.Shared.Popups;
using Content.Shared.Projectiles;
using Content.Shared.Weapons.Ranged.Components;
@@ -23,7 +24,7 @@ namespace Content.Shared.Weapons.Reflect;
///
/// This handles reflecting projectiles and hitscan shots.
///
-public abstract class SharedReflectSystem : EntitySystem
+public sealed class ReflectSystem : EntitySystem
{
[Dependency] private readonly INetManager _netManager = default!;
[Dependency] private readonly IRobustRandom _random = default!;
@@ -41,13 +42,14 @@ public abstract class SharedReflectSystem : EntitySystem
SubscribeLocalEvent(OnReflectCollide);
SubscribeLocalEvent(OnReflectHitscan);
- SubscribeLocalEvent(OnReflectUserCollide);
- SubscribeLocalEvent(OnReflectUserHitscan);
-
SubscribeLocalEvent(OnReflectEquipped);
SubscribeLocalEvent(OnReflectUnequipped);
SubscribeLocalEvent(OnReflectHandEquipped);
SubscribeLocalEvent(OnReflectHandUnequipped);
+ SubscribeLocalEvent(OnToggleReflect);
+
+ SubscribeLocalEvent(OnReflectUserCollide);
+ SubscribeLocalEvent(OnReflectUserHitscan);
}
private void OnReflectUserHitscan(EntityUid uid, ReflectUserComponent component, ref HitScanReflectAttemptEvent args)
@@ -209,6 +211,12 @@ public abstract class SharedReflectSystem : EntitySystem
RefreshReflectUser(args.User);
}
+ private void OnToggleReflect(EntityUid uid, ReflectComponent comp, ref ItemToggledEvent args)
+ {
+ comp.Enabled = args.Activated;
+ Dirty(uid, comp);
+ }
+
///
/// Refreshes whether someone has reflection potential so we can raise directed events on them.
///
diff --git a/Content.Shared/Wieldable/WieldableSystem.cs b/Content.Shared/Wieldable/WieldableSystem.cs
index 399d9b5168..72db0c4a3a 100644
--- a/Content.Shared/Wieldable/WieldableSystem.cs
+++ b/Content.Shared/Wieldable/WieldableSystem.cs
@@ -177,7 +177,7 @@ public sealed class WieldableSystem : EntitySystem
if (TryComp(used, out var item))
{
component.OldInhandPrefix = item.HeldPrefix;
- _itemSystem.SetHeldPrefix(used, component.WieldedInhandPrefix, item);
+ _itemSystem.SetHeldPrefix(used, component.WieldedInhandPrefix, component: item);
}
component.Wielded = true;
@@ -229,7 +229,7 @@ public sealed class WieldableSystem : EntitySystem
if (TryComp(uid, out var item))
{
- _itemSystem.SetHeldPrefix(uid, component.OldInhandPrefix, item);
+ _itemSystem.SetHeldPrefix(uid, component.OldInhandPrefix, component: item);
}
component.Wielded = false;
diff --git a/Resources/Audio/Effects/attributions.yml b/Resources/Audio/Effects/attributions.yml
index 15293bf0f8..bbda0e9bec 100644
--- a/Resources/Audio/Effects/attributions.yml
+++ b/Resources/Audio/Effects/attributions.yml
@@ -196,3 +196,8 @@
copyright: 'Sound effects from https://quicksounds.com"'
license: CC0-1.0
source: https://quicksounds.com/library/sounds/grenade
+
+- files: ["eye_open.ogg", "eye_close.ogg"]
+ copyright: Bhijn and Myr (github username deathride58)
+ license: CC0-1.0
+ source: https://github.com/space-wizards/space-station-14/pull/23212
diff --git a/Resources/Audio/Effects/eye_close.ogg b/Resources/Audio/Effects/eye_close.ogg
new file mode 100644
index 0000000000..f655b9c06f
Binary files /dev/null and b/Resources/Audio/Effects/eye_close.ogg differ
diff --git a/Resources/Audio/Effects/eye_open.ogg b/Resources/Audio/Effects/eye_open.ogg
new file mode 100644
index 0000000000..dfad366075
Binary files /dev/null and b/Resources/Audio/Effects/eye_open.ogg differ
diff --git a/Resources/Audio/Weapons/attributions.yml b/Resources/Audio/Weapons/attributions.yml
index b29f498fee..310b01b728 100644
--- a/Resources/Audio/Weapons/attributions.yml
+++ b/Resources/Audio/Weapons/attributions.yml
@@ -82,3 +82,8 @@
license: "CC0-1.0"
copyright: "Taken from ScreamStudio on freesound.org"
source: "https://freesound.org/people/ScreamStudio/sounds/392617/"
+
+- files: ["pop.ogg"]
+ license: "CC0-1.0"
+ copyright: "Taken from 0ne_one111yt on freesound.org"
+ source: "https://freesound.org/people/0ne_one111yt/sounds/478213/"
diff --git a/Resources/Audio/Weapons/pop.ogg b/Resources/Audio/Weapons/pop.ogg
new file mode 100644
index 0000000000..99b58b26d3
Binary files /dev/null and b/Resources/Audio/Weapons/pop.ogg differ
diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml
index a98f7371b3..48eb57c004 100644
--- a/Resources/Changelog/Changelog.yml
+++ b/Resources/Changelog/Changelog.yml
@@ -1,29 +1,4 @@
Entries:
-- author: Vasilis
- changes:
- - message: Pneumatic Cannons can no longer shoot arrows.
- type: Tweak
- id: 5016
- time: '2023-10-17T22:58:05.0000000+00:00'
-- author: Vasilis
- changes:
- - message: Spears and arrows can now only hold up to 2u of liquids instead of 5u.
- type: Tweak
- id: 5017
- time: '2023-10-17T23:01:25.0000000+00:00'
-- author: notquitehadouken
- changes:
- - message: The grey stick that shows up when you wide swing a weapon now looks like
- the weapon used.
- type: Tweak
- id: 5018
- time: '2023-10-18T01:12:00.0000000+00:00'
-- author: metalgearsloth
- changes:
- - message: Fix vaulting mispredict.
- type: Fix
- id: 5019
- time: '2023-10-18T05:11:33.0000000+00:00'
- author: daerSeebaer
changes:
- message: The AME controller now shows the current load and maximum capacity.
@@ -3586,3 +3561,35 @@ Entries:
id: 5516
time: '2024-01-02T18:53:35.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/23319
+- author: themias
+ changes:
+ - message: Welders can be refilled directly from wall fuel dispensers
+ type: Tweak
+ id: 5517
+ time: '2024-01-02T21:11:10.0000000+00:00'
+ url: https://api.github.com/repos/space-wizards/space-station-14/pulls/23376
+- author: Admiral-Obvious-001
+ changes:
+ - message: Added a few words to body bag descriptor so you know they stop rot.
+ type: Add
+ id: 5518
+ time: '2024-01-03T01:36:18.0000000+00:00'
+ url: https://api.github.com/repos/space-wizards/space-station-14/pulls/23407
+- author: CaasGit
+ changes:
+ - message: Give slimes their custom speech bubble!
+ type: Tweak
+ id: 5519
+ time: '2024-01-03T05:12:56.0000000+00:00'
+ url: https://api.github.com/repos/space-wizards/space-station-14/pulls/23415
+- author: zzylex
+ changes:
+ - message: You can now make plungers stick to walls.
+ type: Tweak
+ - message: A sound is made when a plunger gets stuck to something.
+ type: Add
+ - message: You can now shoot plungers with bows.
+ type: Tweak
+ id: 5520
+ time: '2024-01-03T05:36:17.0000000+00:00'
+ url: https://api.github.com/repos/space-wizards/space-station-14/pulls/23406
diff --git a/Resources/ConfigPresets/WizardsDen/leviathan.toml b/Resources/ConfigPresets/WizardsDen/leviathan.toml
index 2bf39cfd84..ed90992975 100644
--- a/Resources/ConfigPresets/WizardsDen/leviathan.toml
+++ b/Resources/ConfigPresets/WizardsDen/leviathan.toml
@@ -4,6 +4,9 @@
[game]
hostname = "[EN] Wizard's Den Leviathan [US East 1]"
+panic_bunker.enabled = false
+panic_bunker.disable_with_admins = false
+panic_bunker.enable_without_admins = false
[hub]
tags = "lang:en,region:am_n_e,rp:low"
diff --git a/Resources/ConfigPresets/WizardsDen/lizard.toml b/Resources/ConfigPresets/WizardsDen/lizard.toml
index 2e3809a87d..be65cf0269 100644
--- a/Resources/ConfigPresets/WizardsDen/lizard.toml
+++ b/Resources/ConfigPresets/WizardsDen/lizard.toml
@@ -4,6 +4,9 @@
[game]
hostname = "[EN] Wizard's Den Lizard [US West]"
+panic_bunker.enabled = false
+panic_bunker.disable_with_admins = false
+panic_bunker.enable_without_admins = false
[hub]
tags = "lang:en,region:am_n_w,rp:low"
diff --git a/Resources/ConfigPresets/WizardsDen/wizardsDen.toml b/Resources/ConfigPresets/WizardsDen/wizardsDen.toml
index 07d4ab5e10..e3826b4678 100644
--- a/Resources/ConfigPresets/WizardsDen/wizardsDen.toml
+++ b/Resources/ConfigPresets/WizardsDen/wizardsDen.toml
@@ -5,6 +5,11 @@
desc = "Official English Space Station 14 servers. Vanilla, low roleplay."
lobbyenabled = true
soft_max_players = 80
+panic_bunker.enabled = true
+panic_bunker.disable_with_admins = true
+panic_bunker.enable_without_admins = true
+panic_bunker.show_reason = true
+panic_bunker.custom_reason = "You have not played on Wizard's Den server long enough to connect to this server. Please play on Wizard's Den Lizard or Wizard's Den Leviathan until you have more playtime."
[infolinks]
bug_report = "https://github.com/space-wizards/space-station-14/issues/new/choose"
diff --git a/Resources/Locale/en-US/construction/components/flatpack.ftl b/Resources/Locale/en-US/construction/components/flatpack.ftl
new file mode 100644
index 0000000000..8449da7048
--- /dev/null
+++ b/Resources/Locale/en-US/construction/components/flatpack.ftl
@@ -0,0 +1,11 @@
+flatpack-unpack-no-room = No room to unpack!
+flatpack-examine = Use a [color=yellow]multitool[/color] to unpack this.
+flatpack-entity-name = {$name} flatpack
+flatpack-entity-description = A flatpack used for constructing {INDEFINITE($name)} {$name}.
+
+flatpacker-item-slot-name = Machine board slot
+flatpacker-ui-title = Flatpacker 1001
+flatpacker-ui-materials-label = Materials
+flatpacker-ui-cost-label = Packing Cost
+flatpacker-ui-no-board-label = No board present!
+flatpacker-ui-pack-button = Pack
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 d0b16e91b2..a0f90845b8 100644
--- a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl
+++ b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl
@@ -19,6 +19,7 @@ ui-options-general-discord = Discord
ui-options-general-cursor = Cursor
ui-options-general-speech = Speech
ui-options-general-storage = Storage
+ui-options-general-accessibility = Accessibility
## Audio menu
@@ -44,6 +45,7 @@ ui-options-opaque-storage-window = Opaque storage window
ui-options-show-looc-on-head = Show LOOC chat above characters head
ui-options-fancy-speech = Show names in speech bubbles
ui-options-fancy-name-background = Add background to speech bubble names
+ui-options-reduced-motion = Reduce motion of visual effects
ui-options-vsync = VSync
ui-options-fullscreen = Fullscreen
ui-options-lighting-label = Lighting Quality:
diff --git a/Resources/Locale/en-US/game-ticking/game-presets/preset-revolutionary.ftl b/Resources/Locale/en-US/game-ticking/game-presets/preset-revolutionary.ftl
index ba2e3e554a..4ace8f96d2 100644
--- a/Resources/Locale/en-US/game-ticking/game-presets/preset-revolutionary.ftl
+++ b/Resources/Locale/en-US/game-ticking/game-presets/preset-revolutionary.ftl
@@ -55,7 +55,12 @@ rev-headrev-count = {$initialCount ->
*[other] There were {$initialCount} Head Revolutionaries:
}
-rev-headrev-player = {$title} converted {$count} {$count ->
+rev-headrev-name-user = [color=#5e9cff]{$name}[/color] ([color=gray]{$username}[/color]) converted {$count} {$count ->
[one] person
*[other] people
-}.
+}
+
+rev-headrev-name = [color=#5e9cff]{$name}[/color] converted {$count} {$count ->
+ [one] person
+ *[other] people
+}
diff --git a/Resources/Locale/en-US/game-ticking/game-presets/preset-traitor.ftl b/Resources/Locale/en-US/game-ticking/game-presets/preset-traitor.ftl
index 7f515fc97d..ded6f57a46 100644
--- a/Resources/Locale/en-US/game-ticking/game-presets/preset-traitor.ftl
+++ b/Resources/Locale/en-US/game-ticking/game-presets/preset-traitor.ftl
@@ -3,7 +3,7 @@
traitor-round-end-codewords = The codewords were: [color=White]{$codewords}[/color]
traitor-round-end-agent-name = traitor
-objective-issuer-syndicate = [color=#87cefa]The Syndicate[/color]
+objective-issuer-syndicate = [color=crimson]The Syndicate[/color]
# Shown at the end of a round of Traitor
diff --git a/Resources/Locale/en-US/research/technologies.ftl b/Resources/Locale/en-US/research/technologies.ftl
index 9693c5be41..c978aeaa58 100644
--- a/Resources/Locale/en-US/research/technologies.ftl
+++ b/Resources/Locale/en-US/research/technologies.ftl
@@ -8,6 +8,7 @@ research-discipline-civilian-services = Civilian Services
research-technology-fulton = Fultons
research-technology-salvage-equipment = Salvage Equipment
research-technology-advanced-powercells = Advanced Powercells
+research-technology-mechanical-compression = Mechanical Compression
research-technology-compact-power = Compact Power
research-technology-industrial-engineering = Industrial Engineering
research-technology-power-generation = Power Generation
diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl
index 524d249e92..b9435dd9cf 100644
--- a/Resources/Locale/en-US/traits/traits.ftl
+++ b/Resources/Locale/en-US/traits/traits.ftl
@@ -1,12 +1,12 @@
trait-blindness-name = Blindness
-trait-blindness-desc = You lack vision
+trait-blindness-desc = You are legally blind, and can't see clearly past a few meters in front of you.
trait-narcolepsy-name = Narcolepsy
trait-narcolepsy-decs = You fall asleep randomly
trait-pacifist-name = Pacifist
-permanent-blindness-trait-examined = [color=lightblue]{CAPITALIZE(POSS-ADJ($target))} eyes are glassy and unfocused. It doesn't seem like {SUBJECT($target)} can see you.[/color]
+permanent-blindness-trait-examined = [color=lightblue]{CAPITALIZE(POSS-ADJ($target))} eyes are glassy and unfocused. It doesn't seem like {SUBJECT($target)} can see you well, if at all.[/color]
trait-lightweight-name = Lightweight Drunk
trait-lightweight-desc = Alcohol has a stronger effect on you
diff --git a/Resources/Locale/en-US/wires/wire-names.ftl b/Resources/Locale/en-US/wires/wire-names.ftl
index 4a94dc9ac6..041d07d130 100644
--- a/Resources/Locale/en-US/wires/wire-names.ftl
+++ b/Resources/Locale/en-US/wires/wire-names.ftl
@@ -36,6 +36,7 @@ wires-board-name-firelock = Firelock Control
wires-board-name-windoor = Windoor Control
wires-board-name-mech = Mech
wires-board-name-fatextractor = FatExtractor
+wires-board-name-flatpacker = Flatpacker
# names that get displayed in the wire hacking hud & admin logs.
diff --git a/Resources/Maps/atlas.yml b/Resources/Maps/atlas.yml
index 06fa2b4a55..99d7a1e158 100644
--- a/Resources/Maps/atlas.yml
+++ b/Resources/Maps/atlas.yml
@@ -21758,13 +21758,6 @@ entities:
type: Transform
- canCollide: False
type: Physics
-- proto: Dresser
- entities:
- - uid: 2458
- components:
- - pos: -19.5,-10.5
- parent: 30
- type: Transform
- proto: DresserCaptainFilled
entities:
- uid: 1639
@@ -21824,6 +21817,13 @@ entities:
- pos: -26.5,21.5
parent: 30
type: Transform
+- proto: DresserResearchDirectorFilled
+ entities:
+ - uid: 2458
+ components:
+ - pos: -19.5,-10.5
+ parent: 30
+ type: Transform
- proto: DrinkBottleOfNothingFull
entities:
- uid: 1601
diff --git a/Resources/Maps/bagel.yml b/Resources/Maps/bagel.yml
index 30d4a56e39..694093a458 100644
--- a/Resources/Maps/bagel.yml
+++ b/Resources/Maps/bagel.yml
@@ -301,11 +301,11 @@ entities:
version: 6
-1,3:
ind: -1,3
- tiles: TwAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ tiles: TwAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
version: 6
-1,2:
ind: -1,2
- tiles: WQAAAAAAWQAAAAADeQAAAAAAWQAAAAACWQAAAAADWQAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAWQAAAAABaAAAAAAAWQAAAAADWQAAAAADeQAAAAAAeQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAWQAAAAADaAAAAAAAWQAAAAADWQAAAAAAWQAAAAADWQAAAAAAWQAAAAABWQAAAAABeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABaAAAAAAAWQAAAAADWQAAAAAAWQAAAAABWQAAAAACWQAAAAACWQAAAAABeQAAAAAAMQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAWQAAAAADaAAAAAAAHQAAAAABHQAAAAADHQAAAAABHQAAAAACHQAAAAABHQAAAAADeQAAAAAAMQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAA
+ tiles: WQAAAAAAWQAAAAADeQAAAAAAWQAAAAACWQAAAAADWQAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAWQAAAAABaAAAAAAAWQAAAAADWQAAAAADeQAAAAAAeQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAWQAAAAADaAAAAAAAWQAAAAADWQAAAAAAWQAAAAADWQAAAAAAWQAAAAABWQAAAAABeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAABaAAAAAAAWQAAAAADWQAAAAAAWQAAAAABWQAAAAACWQAAAAACWQAAAAABeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaQAAAAAAWQAAAAADaAAAAAAAHQAAAAABHQAAAAADHQAAAAABHQAAAAACHQAAAAABHQAAAAADeQAAAAAATQAAAAAATQAAAAAATQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAA
version: 6
-3,2:
ind: -3,2
@@ -313,7 +313,7 @@ entities:
version: 6
0,3:
ind: 0,3
- tiles: eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ tiles: eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
version: 6
-3,3:
ind: -3,3
@@ -325,7 +325,7 @@ entities:
version: 6
0,2:
ind: 0,2
- tiles: aAAAAAAAaAAAAAAAWQAAAAABeQAAAAAAWQAAAAABWQAAAAADWQAAAAADWQAAAAACWQAAAAABeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAaAAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAaAAAAAAAWQAAAAABWQAAAAACeQAAAAAAaQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAaAAAAAAAaAAAAAAAWQAAAAADWQAAAAACeQAAAAAAaQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAWQAAAAACWQAAAAAAWQAAAAAAWQAAAAACaQAAAAAAaQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAA
+ tiles: aAAAAAAAaAAAAAAAWQAAAAABeQAAAAAAWQAAAAABWQAAAAADWQAAAAADWQAAAAACWQAAAAABeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAaAAAAAAAWQAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAaAAAAAAAWQAAAAABWQAAAAACeQAAAAAAaQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAaAAAAAAAaAAAAAAAWQAAAAADWQAAAAACeQAAAAAAaQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAWQAAAAACWQAAAAAAWQAAAAAAWQAAAAACaQAAAAAAaQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAA
version: 6
-4,2:
ind: -4,2
@@ -503,6 +503,8 @@ entities:
3350: -40,44
3352: -36,30
3773: -39,-8
+ 3825: 8,43
+ 3826: 8,51
- node:
color: '#FFFFFFFF'
id: Arrows
@@ -524,6 +526,15 @@ entities:
3362: -26,38
3770: 47,-23
3774: -40,-4
+ 3821: -8,51
+ 3822: -8,43
+ - node:
+ angle: 3.141592653589793 rad
+ color: '#FFFFFFFF'
+ id: Arrows
+ decals:
+ 3823: -4,39
+ 3824: 4,39
- node:
color: '#FFFFFFFF'
id: ArrowsGreyscale
@@ -547,6 +558,17 @@ entities:
decals:
3353: -20,41
3356: -13,39
+ - node:
+ angle: -1.5707963267948966 rad
+ color: '#FFFFFFFF'
+ id: Bot
+ decals:
+ 3827: -7,46
+ 3828: -7,47
+ 3829: -7,48
+ 3830: 7,46
+ 3831: 7,47
+ 3832: 7,48
- node:
color: '#FFFFFFFF'
id: Bot
@@ -757,6 +779,10 @@ entities:
1608: 38,10
2045: -26,0
2046: -28,0
+ 3817: -6,41
+ 3818: 6,41
+ 3819: 6,53
+ 3820: -6,53
- node:
color: '#52B4E996'
id: BoxGreyscale
@@ -2034,7 +2060,6 @@ entities:
color: '#FFFFFFFF'
id: Bushb3
decals:
- 442: -8.918216,35.06559
962: 5.128752,-67.43338
- node:
color: '#FFFFFFFF'
@@ -2081,7 +2106,6 @@ entities:
decals:
219: 32.840233,-26.000742
394: 8.857405,4.0894966
- 445: -8.808841,36.12809
933: 48.025013,28.959341
3332: 28.940447,-35.765743
- node:
@@ -2133,7 +2157,6 @@ entities:
color: '#FFFFFFFF'
id: Caution
decals:
- 440: -7,31
1081: -27,-1
1693: -9,-21
2546: -55,17
@@ -3281,7 +3304,6 @@ entities:
decals:
216: 33.933983,-26.047617
390: 12.076155,3.7926216
- 444: -9.011966,36.081215
984: -0.76651984,-68.074005
1351: 11.038567,-68.22813
- node:
@@ -3572,7 +3594,6 @@ entities:
209: 33.683983,-26.016367
383: 9.31053,4.0426216
384: 11.357405,4.8394966
- 443: -8.980716,36.081215
925: 49,23
926: 49,29
1344: 11.007317,-67.97813
@@ -5282,7 +5303,6 @@ entities:
id: StandClear
decals:
336: -40,-1
- 441: -6,31
1760: -23,-20
1814: -22,26
- node:
@@ -5496,6 +5516,7 @@ entities:
1377: -2,31
3343: -2,24
3403: -19,40
+ 3838: -8,29
- node:
color: '#FFFFFFFF'
id: WarnCornerSmallNW
@@ -5505,6 +5526,7 @@ entities:
2148: 2,24
3391: -27,38
3402: -15,40
+ 3837: -5,29
- node:
color: '#FFFFFFFF'
id: WarnCornerSmallSE
@@ -5892,6 +5914,8 @@ entities:
3392: -18,42
3393: -17,42
3394: -16,42
+ 3833: -7,31
+ 3834: -6,31
- node:
color: '#DE3A3A96'
id: WarnLineS
@@ -6010,6 +6034,8 @@ entities:
3397: -17,40
3398: -18,40
3404: -43,-2
+ 3835: -7,29
+ 3836: -6,29
- node:
angle: -3.141592653589793 rad
color: '#FFFFFFFF'
@@ -6043,8 +6069,6 @@ entities:
292: -34,11
295: -43,0
296: -42,0
- 436: -6,31
- 437: -7,31
582: 24,15
583: 23,15
584: 22,15
@@ -11728,6 +11752,36 @@ entities:
1435:
- DoorStatus: DoorBolt
type: DeviceLinkSource
+- proto: AirlockExternalEngineeringLocked
+ entities:
+ - uid: 15517
+ components:
+ - flags: PvsPriority
+ type: MetaData
+ - pos: -2.5,35.5
+ parent: 60
+ type: Transform
+ - links:
+ - 16168
+ type: DeviceLinkSink
+ - linkedPorts:
+ 16168:
+ - DoorStatus: DoorBolt
+ type: DeviceLinkSource
+ - uid: 16168
+ components:
+ - flags: PvsPriority
+ type: MetaData
+ - pos: -4.5,37.5
+ parent: 60
+ type: Transform
+ - links:
+ - 15517
+ type: DeviceLinkSink
+ - linkedPorts:
+ 15517:
+ - DoorStatus: DoorBolt
+ type: DeviceLinkSource
- proto: AirlockExternalGlass
entities:
- uid: 227
@@ -11954,18 +12008,6 @@ entities:
5497:
- DoorStatus: DoorBolt
type: DeviceLinkSource
- - uid: 13256
- components:
- - pos: -2.5,35.5
- parent: 60
- type: Transform
- - links:
- - 18800
- type: DeviceLinkSink
- - linkedPorts:
- 18800:
- - DoorStatus: DoorBolt
- type: DeviceLinkSource
- uid: 15525
components:
- name: Heat Room Airlock
@@ -12011,18 +12053,6 @@ entities:
17481:
- DoorStatus: DoorBolt
type: DeviceLinkSource
- - uid: 18800
- components:
- - pos: -5.5,37.5
- parent: 60
- type: Transform
- - links:
- - 13256
- type: DeviceLinkSink
- - linkedPorts:
- 13256:
- - DoorStatus: DoorBolt
- type: DeviceLinkSource
- uid: 20107
components:
- pos: 64.5,-38.5
@@ -16319,6 +16349,39 @@ entities:
type: Transform
- proto: BlastDoor
entities:
+ - uid: 327
+ components:
+ - flags: PvsPriority
+ type: MetaData
+ - pos: -23.5,34.5
+ parent: 60
+ type: Transform
+ - links:
+ - 16396
+ - 14910
+ type: DeviceLinkSink
+ - uid: 2404
+ components:
+ - flags: PvsPriority
+ type: MetaData
+ - pos: -23.5,35.5
+ parent: 60
+ type: Transform
+ - links:
+ - 16396
+ - 14910
+ type: DeviceLinkSink
+ - uid: 2506
+ components:
+ - flags: PvsPriority
+ type: MetaData
+ - pos: -23.5,36.5
+ parent: 60
+ type: Transform
+ - links:
+ - 16396
+ - 14910
+ type: DeviceLinkSink
- uid: 7728
components:
- flags: PvsPriority
@@ -16419,36 +16482,6 @@ entities:
- links:
- 14622
type: DeviceLinkSink
- - uid: 14910
- components:
- - flags: PvsPriority
- type: MetaData
- - pos: -23.5,34.5
- parent: 60
- type: Transform
- - links:
- - 15261
- type: DeviceLinkSink
- - uid: 14911
- components:
- - flags: PvsPriority
- type: MetaData
- - pos: -23.5,35.5
- parent: 60
- type: Transform
- - links:
- - 15261
- type: DeviceLinkSink
- - uid: 14912
- components:
- - flags: PvsPriority
- type: MetaData
- - pos: -23.5,36.5
- parent: 60
- type: Transform
- - links:
- - 15261
- type: DeviceLinkSink
- uid: 15089
components:
- flags: PvsPriority
@@ -19757,6 +19790,11 @@ entities:
- pos: 40.5,-8.5
parent: 60
type: Transform
+ - uid: 9393
+ components:
+ - pos: -7.5,34.5
+ parent: 60
+ type: Transform
- uid: 9438
components:
- pos: -46.5,14.5
@@ -26242,6 +26280,11 @@ entities:
- pos: -9.5,-15.5
parent: 60
type: Transform
+ - uid: 13737
+ components:
+ - pos: -6.5,33.5
+ parent: 60
+ type: Transform
- uid: 13747
components:
- pos: -5.5,-16.5
@@ -27007,6 +27050,11 @@ entities:
- pos: -23.5,46.5
parent: 60
type: Transform
+ - uid: 14911
+ components:
+ - pos: -4.5,36.5
+ parent: 60
+ type: Transform
- uid: 14999
components:
- pos: -17.5,46.5
@@ -27252,6 +27300,16 @@ entities:
- pos: -25.5,48.5
parent: 60
type: Transform
+ - uid: 15521
+ components:
+ - pos: -4.5,38.5
+ parent: 60
+ type: Transform
+ - uid: 15522
+ components:
+ - pos: -5.5,38.5
+ parent: 60
+ type: Transform
- uid: 15536
components:
- pos: -10.5,46.5
@@ -27397,6 +27455,16 @@ entities:
- pos: -3.5,35.5
parent: 60
type: Transform
+ - uid: 16399
+ components:
+ - pos: -4.5,37.5
+ parent: 60
+ type: Transform
+ - uid: 16401
+ components:
+ - pos: -7.5,33.5
+ parent: 60
+ type: Transform
- uid: 16407
components:
- pos: -2.5,35.5
@@ -27507,31 +27575,6 @@ entities:
- pos: 2.5,31.5
parent: 60
type: Transform
- - uid: 16531
- components:
- - pos: -5.5,35.5
- parent: 60
- type: Transform
- - uid: 16532
- components:
- - pos: -5.5,36.5
- parent: 60
- type: Transform
- - uid: 16533
- components:
- - pos: -5.5,38.5
- parent: 60
- type: Transform
- - uid: 16534
- components:
- - pos: -5.5,39.5
- parent: 60
- type: Transform
- - uid: 16535
- components:
- - pos: -5.5,37.5
- parent: 60
- type: Transform
- uid: 16721
components:
- pos: 2.5,22.5
@@ -37583,6 +37626,11 @@ entities:
- pos: -16.5,36.5
parent: 60
type: Transform
+ - uid: 15261
+ components:
+ - pos: -4.5,37.5
+ parent: 60
+ type: Transform
- uid: 15454
components:
- pos: -22.5,42.5
@@ -37683,6 +37731,11 @@ entities:
- pos: -21.5,35.5
parent: 60
type: Transform
+ - uid: 15523
+ components:
+ - pos: -4.5,36.5
+ parent: 60
+ type: Transform
- uid: 15706
components:
- pos: -10.5,25.5
@@ -38928,6 +38981,11 @@ entities:
- pos: 3.5,29.5
parent: 60
type: Transform
+ - uid: 16166
+ components:
+ - pos: -4.5,38.5
+ parent: 60
+ type: Transform
- uid: 16231
components:
- pos: -6.5,40.5
@@ -39283,19 +39341,9 @@ entities:
- pos: -3.5,35.5
parent: 60
type: Transform
- - uid: 16363
+ - uid: 16367
components:
- - pos: -5.5,39.5
- parent: 60
- type: Transform
- - uid: 16364
- components:
- - pos: -5.5,37.5
- parent: 60
- type: Transform
- - uid: 16365
- components:
- - pos: -5.5,35.5
+ - pos: -4.5,39.5
parent: 60
type: Transform
- uid: 16394
@@ -39303,16 +39351,6 @@ entities:
- pos: -4.5,35.5
parent: 60
type: Transform
- - uid: 16397
- components:
- - pos: -5.5,38.5
- parent: 60
- type: Transform
- - uid: 16398
- components:
- - pos: -5.5,36.5
- parent: 60
- type: Transform
- uid: 16528
components:
- pos: -2.5,35.5
@@ -46097,36 +46135,11 @@ entities:
- pos: -3.5,35.5
parent: 60
type: Transform
- - uid: 16366
- components:
- - pos: -5.5,38.5
- parent: 60
- type: Transform
- - uid: 16367
- components:
- - pos: -5.5,36.5
- parent: 60
- type: Transform
- uid: 16368
components:
- pos: 4.5,36.5
parent: 60
type: Transform
- - uid: 16369
- components:
- - pos: 4.5,37.5
- parent: 60
- type: Transform
- - uid: 16370
- components:
- - pos: 4.5,38.5
- parent: 60
- type: Transform
- - uid: 16371
- components:
- - pos: 4.5,39.5
- parent: 60
- type: Transform
- uid: 16372
components:
- pos: 4.5,35.5
@@ -46172,19 +46185,24 @@ entities:
- pos: -4.5,35.5
parent: 60
type: Transform
- - uid: 16399
+ - uid: 16422
components:
- - pos: -5.5,39.5
+ - pos: -4.5,36.5
parent: 60
type: Transform
- - uid: 16400
+ - uid: 16426
components:
- - pos: -5.5,37.5
+ - pos: -4.5,38.5
parent: 60
type: Transform
- - uid: 16401
+ - uid: 16427
components:
- - pos: -5.5,35.5
+ - pos: -4.5,39.5
+ parent: 60
+ type: Transform
+ - uid: 16431
+ components:
+ - pos: -4.5,37.5
parent: 60
type: Transform
- uid: 16449
@@ -52213,6 +52231,11 @@ entities:
- pos: -60.5,-5.5
parent: 60
type: Transform
+ - uid: 15163
+ components:
+ - pos: -4.5,35.5
+ parent: 60
+ type: Transform
- uid: 16028
components:
- pos: 6.5,28.5
@@ -52243,6 +52266,11 @@ entities:
- pos: -41.5,41.5
parent: 60
type: Transform
+ - uid: 16153
+ components:
+ - pos: -3.5,35.5
+ parent: 60
+ type: Transform
- uid: 16287
components:
- pos: -6.5,40.5
@@ -52343,19 +52371,9 @@ entities:
- pos: 7.5,45.5
parent: 60
type: Transform
- - uid: 16307
- components:
- - pos: 7.5,46.5
- parent: 60
- type: Transform
- uid: 16308
components:
- - pos: 7.5,47.5
- parent: 60
- type: Transform
- - uid: 16309
- components:
- - pos: 7.5,48.5
+ - pos: -4.5,36.5
parent: 60
type: Transform
- uid: 16310
@@ -52483,21 +52501,6 @@ entities:
- pos: -6.5,49.5
parent: 60
type: Transform
- - uid: 16335
- components:
- - pos: -6.5,48.5
- parent: 60
- type: Transform
- - uid: 16336
- components:
- - pos: -6.5,47.5
- parent: 60
- type: Transform
- - uid: 16337
- components:
- - pos: -6.5,46.5
- parent: 60
- type: Transform
- uid: 16338
components:
- pos: -6.5,45.5
@@ -52528,26 +52531,6 @@ entities:
- pos: -81.5,17.5
parent: 60
type: Transform
- - uid: 16392
- components:
- - pos: -3.5,35.5
- parent: 60
- type: Transform
- - uid: 16418
- components:
- - pos: -4.5,35.5
- parent: 60
- type: Transform
- - uid: 16427
- components:
- - pos: -5.5,35.5
- parent: 60
- type: Transform
- - uid: 16450
- components:
- - pos: -5.5,36.5
- parent: 60
- type: Transform
- uid: 17685
components:
- pos: -30.5,17.5
@@ -57542,6 +57525,11 @@ entities:
- 0
- 0
type: EntityStorage
+ - uid: 14912
+ components:
+ - pos: -3.5,36.5
+ parent: 60
+ type: Transform
- uid: 17783
components:
- pos: -41.5,19.5
@@ -62271,7 +62259,7 @@ entities:
components:
- name: Antique Cryostasis Beaker
type: MetaData
- - pos: -40.50437,9.594639
+ - pos: -40.227905,7.513591
parent: 60
type: Transform
- proto: CryoxadoneBeakerSmall
@@ -67659,6 +67647,13 @@ entities:
- pos: 45.5,15.5
parent: 60
type: Transform
+- proto: DresserResearchDirectorFilled
+ entities:
+ - uid: 16400
+ components:
+ - pos: -40.5,9.5
+ parent: 60
+ type: Transform
- proto: DrinkDoctorsDelightGlass
entities:
- uid: 16136
@@ -68333,16 +68328,6 @@ entities:
pos: 7.5,51.5
parent: 60
type: Transform
- - uid: 16166
- components:
- - pos: 4.5,54.5
- parent: 60
- type: Transform
- - uid: 16168
- components:
- - pos: -3.5,54.5
- parent: 60
- type: Transform
- uid: 16169
components:
- rot: 1.5707963267948966 rad
@@ -99394,11 +99379,6 @@ entities:
- pos: -62.5,-21.5
parent: 60
type: Transform
- - uid: 5409
- components:
- - pos: -4.5,33.5
- parent: 60
- type: Transform
- uid: 23888
components:
- pos: 10.5,-60.5
@@ -103945,21 +103925,6 @@ entities:
pos: 4.5,37.5
parent: 60
type: Transform
- - uid: 16416
- components:
- - pos: -7.5,35.5
- parent: 60
- type: Transform
- - uid: 16422
- components:
- - pos: -4.5,37.5
- parent: 60
- type: Transform
- - uid: 16431
- components:
- - pos: -7.5,36.5
- parent: 60
- type: Transform
- uid: 16433
components:
- pos: 0.5,37.5
@@ -103975,11 +103940,6 @@ entities:
- pos: 2.5,37.5
parent: 60
type: Transform
- - uid: 16530
- components:
- - pos: -2.5,36.5
- parent: 60
- type: Transform
- uid: 17034
components:
- pos: -39.5,22.5
@@ -105550,16 +105510,6 @@ entities:
- pos: 60.5,-42.5
parent: 60
type: Transform
- - uid: 21421
- components:
- - pos: -9.5,35.5
- parent: 60
- type: Transform
- - uid: 21422
- components:
- - pos: -9.5,36.5
- parent: 60
- type: Transform
- uid: 21426
components:
- pos: -8.5,-36.5
@@ -109033,11 +108983,6 @@ entities:
type: EntityStorage
- proto: LockerEngineerFilledHardsuit
entities:
- - uid: 5542
- components:
- - pos: -1.5,25.5
- parent: 60
- type: Transform
- uid: 6543
components:
- pos: -4.5,13.5
@@ -111627,11 +111572,12 @@ entities:
- pos: -8.500896,-50.426304
parent: 60
type: Transform
-- proto: ParticleAcceleratorControlBoxUnfinished
+- proto: ParticleAcceleratorControlBox
entities:
- - uid: 16456
+ - uid: 5542
components:
- - pos: 2.5,27.5
+ - rot: 3.141592653589793 rad
+ pos: 1.5,33.5
parent: 60
type: Transform
- proto: ParticleAcceleratorEmitterForeUnfinished
@@ -111668,10 +111614,10 @@ entities:
type: Transform
- proto: ParticleAcceleratorFuelChamberUnfinished
entities:
- - uid: 16406
+ - uid: 15520
components:
- rot: 3.141592653589793 rad
- pos: -0.5,33.5
+ pos: 0.5,33.5
parent: 60
type: Transform
- proto: ParticleAcceleratorPowerBoxUnfinished
@@ -111910,6 +111856,13 @@ entities:
type: Transform
- joinedGrid: 60
type: AtmosDevice
+ - uid: 16418
+ components:
+ - pos: -5.5,33.5
+ parent: 60
+ type: Transform
+ - joinedGrid: 60
+ type: AtmosDevice
- proto: PlasmaOre1
entities:
- uid: 4711
@@ -112117,6 +112070,11 @@ entities:
- pos: 3.5,-3.5
parent: 60
type: Transform
+ - uid: 8262
+ components:
+ - pos: -7.5,29.5
+ parent: 60
+ type: Transform
- uid: 8933
components:
- pos: 13.5,-20.5
@@ -112174,16 +112132,16 @@ entities:
type: Transform
- proto: PortableGeneratorPacman
entities:
+ - uid: 7864
+ components:
+ - pos: -8.5,33.5
+ parent: 60
+ type: Transform
- uid: 8063
components:
- pos: -12.5,-2.5
parent: 7536
type: Transform
- - uid: 16551
- components:
- - pos: -8.5,33.5
- parent: 60
- type: Transform
- uid: 20011
components:
- pos: 29.5,3.5
@@ -112193,7 +112151,7 @@ entities:
entities:
- uid: 4828
components:
- - pos: -7.5,33.5
+ - pos: -8.5,34.5
parent: 60
type: Transform
- proto: PortableScrubber
@@ -113273,6 +113231,11 @@ entities:
type: ContainerContainer
- proto: PottedPlant4
entities:
+ - uid: 15519
+ components:
+ - pos: -9.5,29.5
+ parent: 60
+ type: Transform
- uid: 23073
components:
- pos: -106.5,18.5
@@ -117146,11 +117109,6 @@ entities:
pos: 12.5,-17.5
parent: 60
type: Transform
- - uid: 9393
- components:
- - pos: -6.5,36.5
- parent: 60
- type: Transform
- uid: 9597
components:
- rot: 1.5707963267948966 rad
@@ -117339,11 +117297,6 @@ entities:
pos: 12.5,18.5
parent: 60
type: Transform
- - uid: 15319
- components:
- - pos: -5.5,33.5
- parent: 60
- type: Transform
- uid: 15361
components:
- rot: -1.5707963267948966 rad
@@ -117385,6 +117338,18 @@ entities:
type: Transform
- powerLoad: 0
type: ApcPowerReceiver
+ - uid: 16084
+ components:
+ - rot: 1.5707963267948966 rad
+ pos: -8.5,33.5
+ parent: 60
+ type: Transform
+ - uid: 16416
+ components:
+ - rot: 1.5707963267948966 rad
+ pos: -4.5,35.5
+ parent: 60
+ type: Transform
- uid: 16679
components:
- rot: 3.141592653589793 rad
@@ -119753,11 +119718,6 @@ entities:
- pos: -56.5,2.5
parent: 60
type: Transform
- - uid: 13737
- components:
- - pos: -7.5,35.5
- parent: 60
- type: Transform
- uid: 14807
components:
- rot: 1.5707963267948966 rad
@@ -119874,11 +119834,6 @@ entities:
- pos: -10.5,47.5
parent: 60
type: Transform
- - uid: 15320
- components:
- - pos: -9.5,35.5
- parent: 60
- type: Transform
- uid: 15391
components:
- pos: -22.5,47.5
@@ -119914,16 +119869,6 @@ entities:
- pos: -20.5,47.5
parent: 60
type: Transform
- - uid: 16155
- components:
- - pos: -7.5,36.5
- parent: 60
- type: Transform
- - uid: 16396
- components:
- - pos: -9.5,36.5
- parent: 60
- type: Transform
- uid: 16972
components:
- pos: -12.5,47.5
@@ -122808,11 +122753,6 @@ entities:
- pos: 21.5,12.5
parent: 60
type: Transform
- - uid: 13269
- components:
- - pos: -2.5,36.5
- parent: 60
- type: Transform
- uid: 13547
components:
- pos: 65.5,-39.5
@@ -123224,11 +123164,6 @@ entities:
- pos: 4.5,37.5
parent: 60
type: Transform
- - uid: 16421
- components:
- - pos: -4.5,37.5
- parent: 60
- type: Transform
- uid: 16436
components:
- pos: -1.5,37.5
@@ -124930,62 +124865,6 @@ entities:
- links:
- 14551
type: DeviceLinkSink
- - uid: 15517
- components:
- - pos: -10.5,33.5
- parent: 60
- type: Transform
- - links:
- - 16426
- type: DeviceLinkSink
- - uid: 15518
- components:
- - pos: -12.5,33.5
- parent: 60
- type: Transform
- - links:
- - 16426
- type: DeviceLinkSink
- - uid: 15519
- components:
- - pos: -15.5,31.5
- parent: 60
- type: Transform
- - links:
- - 16426
- type: DeviceLinkSink
- - uid: 15520
- components:
- - pos: -16.5,31.5
- parent: 60
- type: Transform
- - links:
- - 16426
- type: DeviceLinkSink
- - uid: 15521
- components:
- - pos: -17.5,31.5
- parent: 60
- type: Transform
- - links:
- - 16426
- type: DeviceLinkSink
- - uid: 15522
- components:
- - pos: -20.5,33.5
- parent: 60
- type: Transform
- - links:
- - 16426
- type: DeviceLinkSink
- - uid: 15523
- components:
- - pos: -22.5,33.5
- parent: 60
- type: Transform
- - links:
- - 16426
- type: DeviceLinkSink
- uid: 15575
components:
- pos: 13.5,21.5
@@ -125211,57 +125090,77 @@ entities:
type: DeviceLinkSink
- proto: ShuttersRadiationOpen
entities:
- - uid: 4785
+ - uid: 16309
components:
- - rot: -1.5707963267948966 rad
- pos: -7.5,35.5
+ - pos: -10.5,33.5
parent: 60
type: Transform
- links:
- - 16426
+ - 16397
type: DeviceLinkSink
- - uid: 4794
+ - uid: 16335
components:
- - rot: -1.5707963267948966 rad
- pos: -7.5,36.5
+ - pos: -12.5,33.5
parent: 60
type: Transform
- links:
- - 16426
+ - 16397
type: DeviceLinkSink
- - uid: 13248
+ - uid: 16336
+ components:
+ - pos: -15.5,31.5
+ parent: 60
+ type: Transform
+ - links:
+ - 16397
+ type: DeviceLinkSink
+ - uid: 16337
+ components:
+ - pos: -16.5,31.5
+ parent: 60
+ type: Transform
+ - links:
+ - 16397
+ type: DeviceLinkSink
+ - uid: 16363
+ components:
+ - pos: -17.5,31.5
+ parent: 60
+ type: Transform
+ - links:
+ - 16397
+ type: DeviceLinkSink
+ - uid: 16364
+ components:
+ - pos: -20.5,33.5
+ parent: 60
+ type: Transform
+ - links:
+ - 16397
+ type: DeviceLinkSink
+ - uid: 16365
+ components:
+ - pos: -22.5,33.5
+ parent: 60
+ type: Transform
+ - links:
+ - 16397
+ type: DeviceLinkSink
+ - uid: 16369
components:
- pos: -0.5,30.5
parent: 60
type: Transform
- links:
- - 21778
+ - 16370
type: DeviceLinkSink
- - uid: 13266
+ - uid: 16398
components:
- pos: 1.5,30.5
parent: 60
type: Transform
- links:
- - 21778
- type: DeviceLinkSink
- - uid: 21690
- components:
- - rot: 1.5707963267948966 rad
- pos: -9.5,35.5
- parent: 60
- type: Transform
- - links:
- - 16426
- type: DeviceLinkSink
- - uid: 21698
- components:
- - rot: 1.5707963267948966 rad
- pos: -9.5,36.5
- parent: 60
- type: Transform
- - links:
- - 16426
+ - 16370
type: DeviceLinkSink
- proto: ShuttersWindow
entities:
@@ -125648,19 +125547,6 @@ entities:
15089:
- Pressed: Toggle
type: DeviceLinkSource
- - uid: 15261
- components:
- - pos: -23.5,37.5
- parent: 60
- type: Transform
- - linkedPorts:
- 14912:
- - Pressed: Toggle
- 14911:
- - Pressed: Toggle
- 14910:
- - Pressed: Toggle
- type: DeviceLinkSource
- uid: 15424
components:
- name: Heat Room 2 to Space
@@ -126097,34 +125983,66 @@ entities:
21766:
- Pressed: Toggle
type: DeviceLinkSource
- - uid: 16426
+ - uid: 14910
+ components:
+ - rot: 3.141592653589793 rad
+ pos: -26.5,33.5
+ parent: 60
+ type: Transform
+ - linkedPorts:
+ 327:
+ - Pressed: Toggle
+ 2404:
+ - Pressed: Toggle
+ 2506:
+ - Pressed: Toggle
+ type: DeviceLinkSource
+ - uid: 16370
+ components:
+ - rot: 1.5707963267948966 rad
+ pos: -2.5,31.5
+ parent: 60
+ type: Transform
+ - linkedPorts:
+ 16369:
+ - Pressed: Toggle
+ 16398:
+ - Pressed: Toggle
+ type: DeviceLinkSource
+ - uid: 16396
+ components:
+ - rot: 1.5707963267948966 rad
+ pos: -23.5,37.5
+ parent: 60
+ type: Transform
+ - linkedPorts:
+ 2506:
+ - Pressed: Toggle
+ 2404:
+ - Pressed: Toggle
+ 327:
+ - Pressed: Toggle
+ type: DeviceLinkSource
+ - uid: 16397
components:
- rot: 3.141592653589793 rad
pos: -13.5,33.5
parent: 60
type: Transform
- linkedPorts:
- 15518:
+ 16335:
- Pressed: Toggle
- 15517:
+ 16309:
- Pressed: Toggle
- 21690:
+ 16336:
- Pressed: Toggle
- 21698:
+ 16337:
- Pressed: Toggle
- 15519:
+ 16363:
- Pressed: Toggle
- 15520:
+ 16364:
- Pressed: Toggle
- 15521:
- - Pressed: Toggle
- 15522:
- - Pressed: Toggle
- 15523:
- - Pressed: Toggle
- 4785:
- - Pressed: Toggle
- 4794:
+ 16365:
- Pressed: Toggle
type: DeviceLinkSource
- uid: 18295
@@ -126293,19 +126211,6 @@ entities:
24337:
- Pressed: Toggle
type: DeviceLinkSource
-- proto: SignalButtonExt2
- entities:
- - uid: 21778
- components:
- - pos: -2.5,33.5
- parent: 60
- type: Transform
- - linkedPorts:
- 13248:
- - Pressed: Toggle
- 13266:
- - Pressed: Toggle
- type: DeviceLinkSource
- proto: SignalButtonWindows
entities:
- uid: 21786
@@ -127772,6 +127677,11 @@ entities:
- pos: -46.5,-35.5
parent: 60
type: Transform
+ - uid: 16366
+ components:
+ - pos: -2.5,36.5
+ parent: 60
+ type: Transform
- uid: 18803
components:
- pos: 57.5,13.5
@@ -127837,9 +127747,9 @@ entities:
type: Transform
- proto: SingularityGenerator
entities:
- - uid: 19162
+ - uid: 4785
components:
- - pos: -5.5,33.5
+ - pos: -6.5,36.5
parent: 60
type: Transform
- proto: Sink
@@ -131707,6 +131617,13 @@ entities:
- pos: 12.5,20.5
parent: 60
type: Transform
+- proto: SuitStorageEngi
+ entities:
+ - uid: 15518
+ components:
+ - pos: -8.5,36.5
+ parent: 60
+ type: Transform
- proto: SuitStorageEVA
entities:
- uid: 1885
@@ -135736,11 +135653,6 @@ entities:
- pos: -10.5,13.5
parent: 60
type: Transform
- - uid: 15163
- components:
- - pos: -40.5,9.5
- parent: 60
- type: Transform
- uid: 17372
components:
- pos: -65.5,21.5
@@ -136087,41 +135999,41 @@ entities:
type: Transform
- proto: TeslaCoil
entities:
- - uid: 2404
+ - uid: 13248
components:
- pos: -6.5,46.5
parent: 60
type: Transform
- - uid: 2506
- components:
- - pos: -6.5,48.5
- parent: 60
- type: Transform
- - uid: 18683
- components:
- - pos: 7.5,48.5
- parent: 60
- type: Transform
- - uid: 18693
+ - uid: 13256
components:
- pos: 7.5,46.5
parent: 60
type: Transform
- - uid: 18697
+ - uid: 13266
components:
- pos: 7.5,47.5
parent: 60
type: Transform
- - uid: 18698
+ - uid: 13269
+ components:
+ - pos: 7.5,48.5
+ parent: 60
+ type: Transform
+ - uid: 16406
components:
- pos: -6.5,47.5
parent: 60
type: Transform
+ - uid: 16421
+ components:
+ - pos: -6.5,48.5
+ parent: 60
+ type: Transform
- proto: TeslaGenerator
entities:
- - uid: 327
+ - uid: 4794
components:
- - pos: -6.5,33.5
+ - pos: -7.5,36.5
parent: 60
type: Transform
- proto: TeslaGroundingRod
@@ -137488,13 +137400,6 @@ entities:
- pos: -40.5,16.5
parent: 60
type: Transform
-- proto: VendingMachineTankDispenserEngineering
- entities:
- - uid: 7864
- components:
- - pos: 5.5,34.5
- parent: 60
- type: Transform
- proto: VendingMachineTankDispenserEVA
entities:
- uid: 1327
@@ -144742,13 +144647,6 @@ entities:
- pos: -42.5,15.5
parent: 60
type: Transform
- - uid: 8262
- components:
- - flags: PvsPriority
- type: MetaData
- - pos: -7.5,34.5
- parent: 60
- type: Transform
- uid: 8266
components:
- flags: PvsPriority
@@ -147789,6 +147687,20 @@ entities:
- pos: -9.5,37.5
parent: 60
type: Transform
+ - uid: 15319
+ components:
+ - flags: PvsPriority
+ type: MetaData
+ - pos: -2.5,36.5
+ parent: 60
+ type: Transform
+ - uid: 15320
+ components:
+ - flags: PvsPriority
+ type: MetaData
+ - pos: -9.5,35.5
+ parent: 60
+ type: Transform
- uid: 15321
components:
- flags: PvsPriority
@@ -148162,13 +148074,6 @@ entities:
- pos: 9.5,23.5
parent: 60
type: Transform
- - uid: 16084
- components:
- - flags: PvsPriority
- type: MetaData
- - pos: -6.5,34.5
- parent: 60
- type: Transform
- uid: 16091
components:
- flags: PvsPriority
@@ -148239,11 +148144,11 @@ entities:
- pos: -8.5,30.5
parent: 60
type: Transform
- - uid: 16153
+ - uid: 16155
components:
- flags: PvsPriority
type: MetaData
- - pos: -8.5,34.5
+ - pos: -9.5,36.5
parent: 60
type: Transform
- uid: 16157
@@ -148253,6 +148158,20 @@ entities:
- pos: -40.5,22.5
parent: 60
type: Transform
+ - uid: 16307
+ components:
+ - flags: PvsPriority
+ type: MetaData
+ - pos: -5.5,35.5
+ parent: 60
+ type: Transform
+ - uid: 16371
+ components:
+ - flags: PvsPriority
+ type: MetaData
+ - pos: -5.5,37.5
+ parent: 60
+ type: Transform
- uid: 16373
components:
- flags: PvsPriority
@@ -148295,6 +148214,13 @@ entities:
- pos: 5.5,37.5
parent: 60
type: Transform
+ - uid: 16392
+ components:
+ - flags: PvsPriority
+ type: MetaData
+ - pos: -5.5,36.5
+ parent: 60
+ type: Transform
- uid: 16413
components:
- flags: PvsPriority
@@ -158859,6 +158785,11 @@ entities:
- pos: 56.5,-40.5
parent: 60
type: Transform
+ - uid: 5409
+ components:
+ - pos: -4.5,33.5
+ parent: 60
+ type: Transform
- uid: 6242
components:
- pos: -28.5,-36.5
diff --git a/Resources/Maps/box.yml b/Resources/Maps/box.yml
index b15bca4c94..59ac11c086 100644
--- a/Resources/Maps/box.yml
+++ b/Resources/Maps/box.yml
@@ -71431,13 +71431,6 @@ entities:
- pos: -29.5,-12.5
parent: 8364
type: Transform
-- proto: CrateEngineeringAMEJar
- entities:
- - uid: 17715
- components:
- - pos: -10.5,-72.5
- parent: 8364
- type: Transform
- proto: CrateEngineeringAMEShielding
entities:
- uid: 17716
@@ -81811,6 +81804,13 @@ entities:
- pos: -30.5,-24.5
parent: 8364
type: Transform
+- proto: DresserResearchDirectorFilled
+ entities:
+ - uid: 17575
+ components:
+ - pos: 71.5,-33.5
+ parent: 8364
+ type: Transform
- proto: DrinkBeerBottleFull
entities:
- uid: 27600
@@ -82191,6 +82191,11 @@ entities:
pos: 7.5,-90.5
parent: 8364
type: Transform
+ - uid: 15509
+ components:
+ - pos: -9.5,-65.5
+ parent: 8364
+ type: Transform
- uid: 17158
components:
- rot: -1.5707963267948966 rad
@@ -144989,11 +144994,6 @@ entities:
- pos: -24.5,-68.5
parent: 8364
type: Transform
- - uid: 21527
- components:
- - pos: -9.5,-65.5
- parent: 8364
- type: Transform
- uid: 22090
components:
- pos: -22.5,-71.5
@@ -150285,11 +150285,6 @@ entities:
- pos: 30.5,-30.5
parent: 8364
type: Transform
- - uid: 19213
- components:
- - pos: 71.5,-33.5
- parent: 8364
- type: Transform
- uid: 19286
components:
- rot: -1.5707963267948966 rad
@@ -180760,13 +180755,6 @@ entities:
type: Transform
- proto: WarpPoint
entities:
- - uid: 22214
- components:
- - pos: 66.5,-23.5
- parent: 8364
- type: Transform
- - location: science
- type: WarpPoint
- uid: 22219
components:
- pos: -49.5,18.5
@@ -180825,20 +180813,6 @@ entities:
type: Transform
- location: Showroom
type: WarpPoint
- - uid: 27706
- components:
- - pos: 70.5,-35.5
- parent: 8364
- type: Transform
- - location: RD Office
- type: WarpPoint
- - uid: 27744
- components:
- - pos: -0.5,-12.5
- parent: 8364
- type: Transform
- - location: AI Upload
- type: WarpPoint
- proto: WaterCooler
entities:
- uid: 5522
diff --git a/Resources/Maps/fland.yml b/Resources/Maps/fland.yml
index 07f22d2544..fbd2ed4af6 100644
--- a/Resources/Maps/fland.yml
+++ b/Resources/Maps/fland.yml
@@ -17041,7 +17041,6 @@ entities:
- 25004
- 25944
- 23661
- - 23792
type: DeviceList
- joinedGrid: 13329
type: AtmosDevice
@@ -100266,29 +100265,6 @@ entities:
type: Transform
- proto: CrateEngineeringAMEJar
entities:
- - uid: 23453
- components:
- - pos: 83.5,5.5
- parent: 13329
- type: Transform
- - air:
- volume: 200
- immutable: False
- temperature: 293.1495
- moles:
- - 3.0981817
- - 11.655066
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
- uid: 26563
components:
- pos: 74.5,-1.5
@@ -111720,13 +111696,6 @@ entities:
- pos: 27.5,64.5
parent: 13329
type: Transform
-- proto: DresserFilled
- entities:
- - uid: 26271
- components:
- - pos: 52.5,-37.5
- parent: 13329
- type: Transform
- proto: DresserHeadOfPersonnelFilled
entities:
- uid: 18915
@@ -111748,6 +111717,13 @@ entities:
- pos: -5.5,-23.5
parent: 13329
type: Transform
+- proto: DresserResearchDirectorFilled
+ entities:
+ - uid: 23453
+ components:
+ - pos: 52.5,-37.5
+ parent: 13329
+ type: Transform
- proto: DrinkAbsintheBottleFull
entities:
- uid: 1176
@@ -118268,21 +118244,6 @@ entities:
type: Transform
- joinedGrid: 13329
type: AtmosDevice
- - uid: 23670
- components:
- - name: Air Mixer
- type: MetaData
- - rot: 1.5707963267948966 rad
- pos: 76.5,-35.5
- parent: 13329
- type: Transform
- - inletTwoConcentration: 0.22000003
- inletOneConcentration: 0.78
- type: GasMixer
- - joinedGrid: 13329
- type: AtmosDevice
- - color: '#03FCD3FF'
- type: AtmosPipeColor
- proto: GasOutletInjector
entities:
- uid: 5631
@@ -120052,25 +120013,14 @@ entities:
type: Transform
- color: '#FF1212FF'
type: AtmosPipeColor
- - uid: 23667
- components:
- - rot: 1.5707963267948966 rad
- pos: 72.5,-35.5
- parent: 13329
- type: Transform
- - uid: 23678
- components:
- - pos: 78.5,-35.5
- parent: 13329
- type: Transform
- - color: '#03FCD3FF'
- type: AtmosPipeColor
- - uid: 23680
+ - uid: 23665
components:
- rot: -1.5707963267948966 rad
- pos: 77.5,-38.5
+ pos: 80.5,-32.5
parent: 13329
type: Transform
+ - color: '#0335FCFF'
+ type: AtmosPipeColor
- uid: 23696
components:
- rot: -1.5707963267948966 rad
@@ -120095,30 +120045,6 @@ entities:
type: Transform
- color: '#FF1212FF'
type: AtmosPipeColor
- - uid: 23719
- components:
- - rot: -1.5707963267948966 rad
- pos: 81.5,-38.5
- parent: 13329
- type: Transform
- - color: '#03FCD3FF'
- type: AtmosPipeColor
- - uid: 23736
- components:
- - rot: -1.5707963267948966 rad
- pos: 83.5,-35.5
- parent: 13329
- type: Transform
- - color: '#0335FCFF'
- type: AtmosPipeColor
- - uid: 23737
- components:
- - rot: 1.5707963267948966 rad
- pos: 81.5,-35.5
- parent: 13329
- type: Transform
- - color: '#03FCD3FF'
- type: AtmosPipeColor
- uid: 23738
components:
- rot: 1.5707963267948966 rad
@@ -120164,6 +120090,8 @@ entities:
pos: 79.5,-29.5
parent: 13329
type: Transform
+ - color: '#FF1212FF'
+ type: AtmosPipeColor
- uid: 23833
components:
- pos: 101.5,-35.5
@@ -141926,12 +141854,6 @@ entities:
type: Transform
- color: '#FF1212FF'
type: AtmosPipeColor
- - uid: 23662
- components:
- - rot: 3.141592653589793 rad
- pos: 72.5,-38.5
- parent: 13329
- type: Transform
- uid: 23663
components:
- rot: 3.141592653589793 rad
@@ -141940,50 +141862,26 @@ entities:
type: Transform
- color: '#FF1212FF'
type: AtmosPipeColor
- - uid: 23671
+ - uid: 23667
components:
- - rot: 1.5707963267948966 rad
- pos: 74.5,-35.5
+ - pos: 80.5,-29.5
parent: 13329
type: Transform
- - color: '#03FCD3FF'
+ - color: '#0335FCFF'
type: AtmosPipeColor
- - uid: 23672
+ - uid: 23668
components:
- - rot: 1.5707963267948966 rad
- pos: 75.5,-35.5
+ - pos: 80.5,-30.5
parent: 13329
type: Transform
- - color: '#03FCD3FF'
+ - color: '#0335FCFF'
type: AtmosPipeColor
- uid: 23673
components:
- - pos: 76.5,-36.5
+ - pos: 80.5,-31.5
parent: 13329
type: Transform
- - uid: 23674
- components:
- - rot: -1.5707963267948966 rad
- pos: 77.5,-35.5
- parent: 13329
- type: Transform
- - color: '#03FCD3FF'
- type: AtmosPipeColor
- - uid: 23675
- components:
- - rot: 3.141592653589793 rad
- pos: 78.5,-36.5
- parent: 13329
- type: Transform
- - color: '#03FCD3FF'
- type: AtmosPipeColor
- - uid: 23676
- components:
- - rot: 3.141592653589793 rad
- pos: 78.5,-37.5
- parent: 13329
- type: Transform
- - color: '#03FCD3FF'
+ - color: '#0335FCFF'
type: AtmosPipeColor
- uid: 23682
components:
@@ -142015,22 +141913,6 @@ entities:
pos: 90.5,-41.5
parent: 13329
type: Transform
- - uid: 23720
- components:
- - rot: 3.141592653589793 rad
- pos: 81.5,-37.5
- parent: 13329
- type: Transform
- - color: '#03FCD3FF'
- type: AtmosPipeColor
- - uid: 23721
- components:
- - rot: 3.141592653589793 rad
- pos: 81.5,-36.5
- parent: 13329
- type: Transform
- - color: '#03FCD3FF'
- type: AtmosPipeColor
- uid: 23722
components:
- rot: 1.5707963267948966 rad
@@ -142075,49 +141957,6 @@ entities:
type: Transform
- color: '#0335FCFF'
type: AtmosPipeColor
- - uid: 23729
- components:
- - pos: 83.5,-29.5
- parent: 13329
- type: Transform
- - color: '#0335FCFF'
- type: AtmosPipeColor
- - uid: 23730
- components:
- - pos: 83.5,-30.5
- parent: 13329
- type: Transform
- - color: '#0335FCFF'
- type: AtmosPipeColor
- - uid: 23731
- components:
- - pos: 83.5,-31.5
- parent: 13329
- type: Transform
- - color: '#0335FCFF'
- type: AtmosPipeColor
- - uid: 23733
- components:
- - pos: 83.5,-33.5
- parent: 13329
- type: Transform
- - color: '#0335FCFF'
- type: AtmosPipeColor
- - uid: 23734
- components:
- - pos: 83.5,-34.5
- parent: 13329
- type: Transform
- - color: '#0335FCFF'
- type: AtmosPipeColor
- - uid: 23743
- components:
- - rot: -1.5707963267948966 rad
- pos: 80.5,-28.5
- parent: 13329
- type: Transform
- - color: '#0335FCFF'
- type: AtmosPipeColor
- uid: 23744
components:
- rot: -1.5707963267948966 rad
@@ -142392,30 +142231,6 @@ entities:
type: Transform
- color: '#FF1212FF'
type: AtmosPipeColor
- - uid: 23789
- components:
- - rot: -1.5707963267948966 rad
- pos: 82.5,-32.5
- parent: 13329
- type: Transform
- - color: '#0335FCFF'
- type: AtmosPipeColor
- - uid: 23790
- components:
- - rot: -1.5707963267948966 rad
- pos: 81.5,-32.5
- parent: 13329
- type: Transform
- - color: '#0335FCFF'
- type: AtmosPipeColor
- - uid: 23791
- components:
- - rot: -1.5707963267948966 rad
- pos: 80.5,-32.5
- parent: 13329
- type: Transform
- - color: '#0335FCFF'
- type: AtmosPipeColor
- uid: 23821
components:
- rot: 1.5707963267948966 rad
@@ -151621,18 +151436,13 @@ entities:
type: Transform
- color: '#FF1212FF'
type: AtmosPipeColor
- - uid: 23666
+ - uid: 23670
components:
- - rot: 1.5707963267948966 rad
- pos: 72.5,-36.5
- parent: 13329
- type: Transform
- - uid: 23679
- components:
- - rot: 1.5707963267948966 rad
- pos: 76.5,-38.5
+ - pos: 80.5,-28.5
parent: 13329
type: Transform
+ - color: '#0335FCFF'
+ type: AtmosPipeColor
- uid: 23681
components:
- rot: 1.5707963267948966 rad
@@ -151641,14 +151451,6 @@ entities:
type: Transform
- color: '#FF1212FF'
type: AtmosPipeColor
- - uid: 23685
- components:
- - rot: 1.5707963267948966 rad
- pos: 80.5,-38.5
- parent: 13329
- type: Transform
- - color: '#03FCD3FF'
- type: AtmosPipeColor
- uid: 23701
components:
- rot: 3.141592653589793 rad
@@ -151665,14 +151467,6 @@ entities:
type: Transform
- color: '#0335FCFF'
type: AtmosPipeColor
- - uid: 23732
- components:
- - rot: -1.5707963267948966 rad
- pos: 83.5,-32.5
- parent: 13329
- type: Transform
- - color: '#0335FCFF'
- type: AtmosPipeColor
- uid: 23741
components:
- rot: 3.141592653589793 rad
@@ -152869,72 +152663,54 @@ entities:
type: AtmosDevice
- color: '#FF1212FF'
type: AtmosPipeColor
+ - uid: 23662
+ components:
+ - rot: 3.141592653589793 rad
+ pos: 72.5,-38.5
+ parent: 13329
+ type: Transform
+ - joinedGrid: 13329
+ type: AtmosDevice
- uid: 23664
components:
- - name: Nitro Pump
- type: MetaData
- - rot: 3.141592653589793 rad
- pos: 72.5,-37.5
+ - pos: 70.5,-38.5
parent: 13329
type: Transform
- joinedGrid: 13329
type: AtmosDevice
- - uid: 23665
+ - uid: 23666
components:
- - name: Oxygen to Air Mixer
- type: MetaData
- rot: 3.141592653589793 rad
- pos: 76.5,-37.5
+ pos: 83.5,-29.5
parent: 13329
type: Transform
- joinedGrid: 13329
type: AtmosDevice
- - uid: 23668
- components:
- - name: Nitro to Mix
- type: MetaData
- - rot: 1.5707963267948966 rad
- pos: 73.5,-36.5
- parent: 13329
- type: Transform
- - joinedGrid: 13329
- type: AtmosDevice
- - color: '#947507FF'
+ - color: '#0335FCFF'
type: AtmosPipeColor
- uid: 23669
components:
- - name: Nitro to Air Mixer
- type: MetaData
- - rot: 1.5707963267948966 rad
- pos: 73.5,-35.5
+ - pos: 74.5,-38.5
parent: 13329
type: Transform
- joinedGrid: 13329
type: AtmosDevice
- - color: '#03FCD3FF'
- type: AtmosPipeColor
- - uid: 23684
+ - uid: 23672
components:
- - name: Oxygen to Mix
- type: MetaData
- rot: 3.141592653589793 rad
- pos: 77.5,-37.5
+ pos: 76.5,-38.5
parent: 13329
type: Transform
- joinedGrid: 13329
type: AtmosDevice
- - uid: 23686
+ - uid: 23674
components:
- - name: Air to Mix
- type: MetaData
- rot: 3.141592653589793 rad
- pos: 80.5,-37.5
+ pos: 80.5,-38.5
parent: 13329
type: Transform
- joinedGrid: 13329
type: AtmosDevice
- - color: '#03FCD3FF'
- type: AtmosPipeColor
- uid: 23700
components:
- name: CO2 Pump
@@ -152961,6 +152737,8 @@ entities:
type: Transform
- joinedGrid: 13329
type: AtmosDevice
+ - color: '#FF1212FF'
+ type: AtmosPipeColor
- uid: 23709
components:
- name: H2O Pump
@@ -153007,18 +152785,6 @@ entities:
type: AtmosDevice
- color: '#03FCD3FF'
type: AtmosPipeColor
- - uid: 23735
- components:
- - name: Distro Pump
- type: MetaData
- - rot: 1.5707963267948966 rad
- pos: 82.5,-35.5
- parent: 13329
- type: Transform
- - joinedGrid: 13329
- type: AtmosDevice
- - color: '#0335FCFF'
- type: AtmosPipeColor
- uid: 23817
components:
- rot: -1.5707963267948966 rad
@@ -153027,6 +152793,8 @@ entities:
type: Transform
- joinedGrid: 13329
type: AtmosDevice
+ - color: '#FF1212FF'
+ type: AtmosPipeColor
- uid: 23838
components:
- rot: -1.5707963267948966 rad
@@ -153035,6 +152803,8 @@ entities:
type: Transform
- joinedGrid: 13329
type: AtmosDevice
+ - color: '#FF1212FF'
+ type: AtmosPipeColor
- uid: 23861
components:
- name: Mixer Out Pump
@@ -154911,7 +154681,7 @@ entities:
type: AtmosDevice
- color: '#0335FCFF'
type: AtmosPipeColor
- - uid: 23792
+ - uid: 23671
components:
- rot: 1.5707963267948966 rad
pos: 79.5,-32.5
@@ -170172,32 +169942,36 @@ entities:
- pos: 29.527367,-48.423893
parent: 13329
type: Transform
-- proto: ParticleAcceleratorControlBoxUnfinished
+- proto: ParticleAcceleratorControlBox
entities:
- - uid: 23875
+ - uid: 23675
components:
- - pos: 98.5,-8.5
+ - rot: 1.5707963267948966 rad
+ pos: 95.5,-6.5
parent: 13329
type: Transform
- proto: ParticleAcceleratorEmitterForeUnfinished
entities:
- - uid: 23881
+ - uid: 23680
components:
- - pos: 96.5,-8.5
+ - rot: 1.5707963267948966 rad
+ pos: 97.5,-5.5
parent: 13329
type: Transform
- proto: ParticleAcceleratorEmitterPortUnfinished
entities:
- - uid: 23882
+ - uid: 23679
components:
- - pos: 97.5,-8.5
+ - rot: 1.5707963267948966 rad
+ pos: 97.5,-4.5
parent: 13329
type: Transform
- proto: ParticleAcceleratorEmitterStarboardUnfinished
entities:
- - uid: 23884
+ - uid: 23676
components:
- - pos: 95.5,-8.5
+ - rot: 1.5707963267948966 rad
+ pos: 97.5,-6.5
parent: 13329
type: Transform
- proto: ParticleAcceleratorEndCapUnfinished
@@ -170218,9 +169992,10 @@ entities:
type: Transform
- proto: ParticleAcceleratorPowerBoxUnfinished
entities:
- - uid: 23874
+ - uid: 23678
components:
- - pos: 97.5,-2.5
+ - rot: 1.5707963267948966 rad
+ pos: 96.5,-5.5
parent: 13329
type: Transform
- proto: PartRodMetal
diff --git a/Resources/Maps/marathon.yml b/Resources/Maps/marathon.yml
index 092622ab35..760945569c 100644
--- a/Resources/Maps/marathon.yml
+++ b/Resources/Maps/marathon.yml
@@ -55416,35 +55416,6 @@ entities:
- pos: 23.5,-3.5
parent: 30
type: Transform
-- proto: CrateEngineeringAMEJar
- entities:
- - uid: 9475
- components:
- - pos: -15.5,-28.5
- parent: 30
- type: Transform
- - containers:
- - EntityStorageComponent
- - entity_storage
- type: Construction
- - air:
- volume: 200
- immutable: False
- temperature: 293.1496
- moles:
- - 3.4430928
- - 12.952587
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- type: EntityStorage
- proto: CrateEngineeringAMEShielding
entities:
- uid: 9478
@@ -55692,6 +55663,27 @@ entities:
- 0
- 0
type: EntityStorage
+- proto: CrateEngineeringTeslaCoil
+ entities:
+ - uid: 20617
+ components:
+ - pos: -12.5,-69.5
+ parent: 30
+ type: Transform
+- proto: CrateEngineeringTeslaGenerator
+ entities:
+ - uid: 9475
+ components:
+ - pos: -13.5,-69.5
+ parent: 30
+ type: Transform
+- proto: CrateEngineeringTeslaGroundingRod
+ entities:
+ - uid: 20618
+ components:
+ - pos: -11.5,-69.5
+ parent: 30
+ type: Transform
- proto: CrateFilledSpawner
entities:
- uid: 3505
@@ -62232,13 +62224,6 @@ entities:
- pos: -12.5,-16.5
parent: 30
type: Transform
-- proto: DresserFilled
- entities:
- - uid: 20615
- components:
- - pos: 29.5,15.5
- parent: 30
- type: Transform
- proto: DresserHeadOfPersonnelFilled
entities:
- uid: 5715
@@ -62260,6 +62245,13 @@ entities:
- pos: 23.5,2.5
parent: 30
type: Transform
+- proto: DresserResearchDirectorFilled
+ entities:
+ - uid: 20615
+ components:
+ - pos: 29.5,15.5
+ parent: 30
+ type: Transform
- proto: DrinkBeepskySmashGlass
entities:
- uid: 21365
diff --git a/Resources/Maps/meta.yml b/Resources/Maps/meta.yml
index d55ed3457b..ca0f33f9e9 100644
--- a/Resources/Maps/meta.yml
+++ b/Resources/Maps/meta.yml
@@ -481,14 +481,14 @@ entities:
color: '#52B4E996'
id: ArrowsGreyscale
decals:
- 2669: -5,-26
- 2670: -5,-25
+ 2630: -5,-26
+ 2631: -5,-25
- node:
color: '#52B4E996'
id: ArrowsGreyscale
decals:
- 2671: -9,-23
- 2672: -10,-23
+ 2632: -9,-23
+ 2633: -10,-23
- node:
color: '#FFFFFFFF'
id: Bot
@@ -533,131 +533,131 @@ entities:
758: 0,39
778: 17,46
898: -37,33
- 965: 45,0
- 966: 45,1
- 967: 45,-4
- 968: 45,-3
- 969: 46,-12
- 970: 46,-11
- 971: 46,-10
- 972: 47,-10
- 973: 47,-11
- 974: 47,-12
- 975: 48,-12
- 976: 48,-11
- 977: 48,-10
- 978: 49,-10
- 979: 49,-11
- 980: 49,-12
- 1014: 47,-4
- 1026: 51,-19
- 1049: 29,12
- 1050: 28,12
- 1051: 27,53
- 1052: 29,49
- 1053: 30,49
- 1054: 32,49
- 1055: 33,49
- 1079: 27,12
- 1080: 26,12
- 1095: -24,26
- 1097: -29,28
- 1370: -14,-38
- 1391: -38,-37
- 1395: -15,-52
- 1497: -47,-38
- 1501: -46,-36
- 1502: -46,-34
- 1503: -47,-34
- 1508: -42,-37
- 1529: -58,-12
- 1530: -59,-12
- 1683: 2,-42
- 1684: 4,-42
- 1685: 4,-40
- 1686: 2,-40
- 1691: 24,-49
- 1692: 25,-49
- 1693: 26,-49
- 1694: 27,-49
- 1695: 24,-53
- 1696: 24,-52
- 1697: 24,-51
- 1698: 25,-51
- 1699: 25,-52
- 1700: 25,-53
- 1701: 26,-53
- 1702: 26,-52
- 1703: 26,-51
- 1704: 27,-51
- 1705: 27,-52
- 1706: 27,-53
- 1732: 11,-49
- 1831: -12,-71
- 1832: -10,-71
- 1833: -4,-71
- 1848: 47,12
- 2022: 34,-44
- 2023: 35,-44
- 2024: 39,-44
- 2025: 37,-44
- 2026: 36,-44
- 2028: 38,-44
- 2033: 37,-40
- 2034: 38,-39
- 2035: 39,-40
- 2036: 38,-41
- 2583: 15,-32
- 2625: 34,-41
- 2626: 34,-40
- 2627: 34,-39
- 2911: -40,23
- 2912: -40,24
- 2913: -40,25
- 3245: 53,19
- 3246: 53,21
- 3247: 56,16
- 3248: 56,24
- 3265: 48,28
- 3266: 48,29
- 3267: 52,28
- 3268: 52,30
- 3299: 48,18
- 3360: 45,16
- 3361: 45,17
- 3364: 49,7
- 3365: 49,9
+ 962: 45,0
+ 963: 45,1
+ 964: 45,-4
+ 965: 45,-3
+ 966: 46,-12
+ 967: 46,-11
+ 968: 46,-10
+ 969: 47,-10
+ 970: 47,-11
+ 971: 47,-12
+ 972: 48,-12
+ 973: 48,-11
+ 974: 48,-10
+ 975: 49,-10
+ 976: 49,-11
+ 977: 49,-12
+ 985: 47,-4
+ 987: 51,-19
+ 1010: 29,12
+ 1011: 28,12
+ 1012: 27,53
+ 1013: 29,49
+ 1014: 30,49
+ 1015: 32,49
+ 1016: 33,49
+ 1040: 27,12
+ 1041: 26,12
+ 1056: -24,26
+ 1058: -29,28
+ 1331: -14,-38
+ 1352: -38,-37
+ 1356: -15,-52
+ 1458: -47,-38
+ 1462: -46,-36
+ 1463: -46,-34
+ 1464: -47,-34
+ 1469: -42,-37
+ 1490: -58,-12
+ 1491: -59,-12
+ 1644: 2,-42
+ 1645: 4,-42
+ 1646: 4,-40
+ 1647: 2,-40
+ 1652: 24,-49
+ 1653: 25,-49
+ 1654: 26,-49
+ 1655: 27,-49
+ 1656: 24,-53
+ 1657: 24,-52
+ 1658: 24,-51
+ 1659: 25,-51
+ 1660: 25,-52
+ 1661: 25,-53
+ 1662: 26,-53
+ 1663: 26,-52
+ 1664: 26,-51
+ 1665: 27,-51
+ 1666: 27,-52
+ 1667: 27,-53
+ 1693: 11,-49
+ 1792: -12,-71
+ 1793: -10,-71
+ 1794: -4,-71
+ 1809: 47,12
+ 1983: 34,-44
+ 1984: 35,-44
+ 1985: 39,-44
+ 1986: 37,-44
+ 1987: 36,-44
+ 1989: 38,-44
+ 1994: 37,-40
+ 1995: 38,-39
+ 1996: 39,-40
+ 1997: 38,-41
+ 2544: 15,-32
+ 2586: 34,-41
+ 2587: 34,-40
+ 2588: 34,-39
+ 2872: -40,23
+ 2873: -40,24
+ 2874: -40,25
+ 3203: 53,19
+ 3204: 53,21
+ 3205: 56,16
+ 3206: 56,24
+ 3223: 48,28
+ 3224: 48,29
+ 3225: 52,28
+ 3226: 52,30
+ 3255: 48,18
+ 3261: 45,16
+ 3262: 45,17
+ 3263: 49,7
+ 3264: 49,9
- node:
color: '#FFFFFFFF'
id: BotGreyscale
decals:
- 1102: 56,41
- 1103: 55,40
- 1104: 56,39
- 1105: 57,40
- 1715: 23,-49
- 1716: 22,-49
- 1717: 21,-49
+ 1063: 56,41
+ 1064: 55,40
+ 1065: 56,39
+ 1066: 57,40
+ 1676: 23,-49
+ 1677: 22,-49
+ 1678: 21,-49
- node:
color: '#FFFFFFFF'
id: BotLeft
decals:
- 1392: -37,-37
- 1393: -36,-37
- 1394: -38,-32
- 2031: 37,-41
- 2032: 39,-39
- 2582: 14,-32
+ 1353: -37,-37
+ 1354: -36,-37
+ 1355: -38,-32
+ 1992: 37,-41
+ 1993: 39,-39
+ 2543: 14,-32
- node:
color: '#FFFFFFFF'
id: BotLeftGreyscale
decals:
- 1098: 55,39
- 1099: 57,41
- 2635: -16,-45
- 3231: 33,-22
- 3232: 34,-22
- 3233: 35,-22
+ 1059: 55,39
+ 1060: 57,41
+ 2596: -16,-45
+ 3189: 33,-22
+ 3190: 34,-22
+ 3191: 35,-22
- node:
color: '#FFFFFFFF'
id: BotRight
@@ -667,622 +667,666 @@ entities:
149: 10,-13
644: -7,36
645: -5,36
- 1371: -14,-35
- 1372: -14,-34
- 2029: 39,-41
- 2030: 37,-39
+ 1332: -14,-35
+ 1333: -14,-34
+ 1990: 39,-41
+ 1991: 37,-39
- node:
color: '#D381C996'
id: BotRightGreyscale
decals:
- 2620: 8,-31
+ 2581: 8,-31
- node:
color: '#FFFFFFFF'
id: BotRightGreyscale
decals:
- 1100: 57,39
- 1101: 55,41
+ 1061: 57,39
+ 1062: 55,41
- node:
color: '#FFFFFFFF'
id: Box
decals:
777: 17,40
- 3234: 76,26
- 3235: 64,26
- 3236: 64,14
- 3237: 76,14
+ 3192: 76,26
+ 3193: 64,26
+ 3194: 64,14
+ 3195: 76,14
- node:
color: '#FFFFFFFF'
id: BoxGreyscale
decals:
- 2636: -16,-41
- 2637: -18,-41
- 2638: -14,-41
+ 2597: -16,-41
+ 2598: -18,-41
+ 2599: -14,-41
- node:
color: '#FFFFFFFF'
id: BrickTileDarkEndE
decals:
- 2942: 7,45
+ 2903: 7,45
- node:
color: '#FFFFFFFF'
id: BrickTileDarkEndW
decals:
- 2943: 11,45
+ 2904: 11,45
- node:
color: '#FFFFFFFF'
id: BrickTileDarkInnerSe
decals:
- 2947: 6,45
+ 2908: 6,45
- node:
color: '#FFFFFFFF'
id: BrickTileDarkInnerSw
decals:
- 2945: 12,45
+ 2906: 12,45
- node:
color: '#FFFFFFFF'
id: BrickTileDarkLineE
decals:
- 2946: 6,44
- 3191: 0,-6
- 3192: 0,-5
- 3193: 0,-4
+ 2907: 6,44
+ 3149: 0,-6
+ 3150: 0,-5
+ 3151: 0,-4
- node:
color: '#FFFFFFFF'
id: BrickTileDarkLineN
decals:
- 2952: 12,45
- 2953: 6,45
+ 2913: 12,45
+ 2914: 6,45
- node:
color: '#FFFFFFFF'
id: BrickTileDarkLineS
decals:
- 2948: 12,47
- 2949: 11,47
- 2950: 7,47
- 2951: 6,47
+ 2909: 12,47
+ 2910: 11,47
+ 2911: 7,47
+ 2912: 6,47
- node:
color: '#FFFFFFFF'
id: BrickTileDarkLineW
decals:
- 2944: 12,44
- 3194: -6,-6
- 3195: -6,-5
- 3196: -6,-4
+ 2905: 12,44
+ 3152: -6,-6
+ 3153: -6,-5
+ 3154: -6,-4
- node:
color: '#D381C996'
id: BrickTileSteelCornerNe
decals:
- 1903: 24,-58
+ 1864: 24,-58
- node:
color: '#FFFFFFFF'
id: BrickTileSteelCornerNe
decals:
- 3066: 22,-20
- 3087: 21,-25
+ 3027: 22,-20
+ 3048: 21,-25
- node:
color: '#D381C996'
id: BrickTileSteelCornerNw
decals:
- 1904: 21,-58
+ 1865: 21,-58
- node:
color: '#FFFFFFFF'
id: BrickTileSteelCornerNw
decals:
- 3225: 30,-20
+ 3183: 30,-20
- node:
color: '#FFFFFFFF'
id: BrickTileSteelCornerSe
decals:
- 3068: 22,-23
+ 3029: 22,-23
- node:
color: '#FFFFFFFF'
id: BrickTileSteelCornerSw
decals:
- 3078: 30,-23
- 3081: 19,-23
- 3088: 28,-16
- 3096: 32,-21
+ 3039: 30,-23
+ 3042: 19,-23
+ 3049: 28,-16
+ 3057: 32,-21
- node:
color: '#FFFFFFFF'
id: BrickTileSteelEndE
decals:
- 3089: 31,-20
- 3116: 31,-23
+ 3050: 31,-20
+ 3074: 31,-23
- node:
color: '#FFFFFFFF'
id: BrickTileSteelInnerNe
decals:
- 3084: 17,-25
- 3117: 30,-23
+ 3045: 17,-25
+ 3075: 30,-23
- node:
color: '#FFFFFFFF'
id: BrickTileSteelInnerNw
decals:
- 3093: 27,-25
+ 3054: 27,-25
- node:
color: '#FFFFFFFF'
id: BrickTileSteelInnerSe
decals:
- 3094: 22,-22
- 3095: 22,-20
- 3226: 30,-20
+ 3055: 22,-22
+ 3056: 22,-20
+ 3184: 30,-20
- node:
color: '#FFFFFFFF'
id: BrickTileSteelInnerSw
decals:
- 3092: 28,-16
+ 3053: 28,-16
- node:
color: '#52B4E996'
id: BrickTileSteelLineE
decals:
- 3201: -28,-45
- 3202: -28,-44
- 3203: -28,-43
+ 3159: -28,-45
+ 3160: -28,-44
+ 3161: -28,-43
- node:
color: '#D381C996'
id: BrickTileSteelLineE
decals:
- 1899: 24,-60
- 1900: 24,-59
+ 1860: 24,-60
+ 1861: 24,-59
- node:
color: '#FFFFFFFF'
id: BrickTileSteelLineE
decals:
- 3067: 22,-22
- 3085: 17,-24
- 3086: 17,-23
- 3118: 30,-22
- 3119: 30,-21
- 3230: 31,-19
+ 3028: 22,-22
+ 3046: 17,-24
+ 3047: 17,-23
+ 3076: 30,-22
+ 3077: 30,-21
+ 3188: 31,-19
- node:
color: '#D381C996'
id: BrickTileSteelLineN
decals:
- 1901: 23,-58
- 1902: 22,-58
+ 1862: 23,-58
+ 1863: 22,-58
- node:
color: '#FFFFFFFF'
id: BrickTileSteelLineN
decals:
- 3076: 27,-25
- 3077: 29,-25
- 3082: 19,-25
- 3083: 18,-25
- 3227: 33,-22
- 3228: 34,-22
- 3229: 35,-22
+ 3037: 27,-25
+ 3038: 29,-25
+ 3043: 19,-25
+ 3044: 18,-25
+ 3185: 33,-22
+ 3186: 34,-22
+ 3187: 35,-22
- node:
color: '#FFFFFFFF'
id: BrickTileSteelLineS
decals:
- 3049: 29,-16
- 3050: 30,-16
- 3051: 24,-16
- 3052: 23,-16
- 3053: 22,-16
- 3054: 22,-18
- 3055: 23,-18
- 3056: 29,-18
- 3057: 30,-18
- 3058: 31,-18
- 3059: 28,-23
- 3060: 27,-23
- 3061: 25,-23
- 3062: 24,-23
- 3098: 33,-21
- 3099: 35,-21
+ 3010: 29,-16
+ 3011: 30,-16
+ 3012: 24,-16
+ 3013: 23,-16
+ 3014: 22,-16
+ 3015: 22,-18
+ 3016: 23,-18
+ 3017: 29,-18
+ 3018: 30,-18
+ 3019: 31,-18
+ 3020: 28,-23
+ 3021: 27,-23
+ 3022: 25,-23
+ 3023: 24,-23
+ 3059: 33,-21
+ 3060: 35,-21
- node:
color: '#52B4E996'
id: BrickTileSteelLineW
decals:
- 3204: -29,-45
- 3205: -29,-44
- 3206: -29,-43
+ 3162: -29,-45
+ 3163: -29,-44
+ 3164: -29,-43
- node:
color: '#D381C996'
id: BrickTileSteelLineW
decals:
- 1905: 21,-59
- 1906: 21,-60
+ 1866: 21,-59
+ 1867: 21,-60
- node:
color: '#FFFFFFFF'
id: BrickTileSteelLineW
decals:
- 3079: 30,-22
- 3080: 30,-21
- 3097: 32,-20
+ 3040: 30,-22
+ 3041: 30,-21
+ 3058: 32,-20
- node:
color: '#52B4E996'
id: BrickTileWhiteCornerNe
decals:
- 2860: -6,-32
+ 2821: -6,-32
- node:
color: '#D381C996'
id: BrickTileWhiteCornerNe
decals:
- 2557: 11,-24
- 2593: 22,-29
+ 2518: 11,-24
+ 2554: 22,-29
+ - node:
+ color: '#EFB34196'
+ id: BrickTileWhiteCornerNe
+ decals:
+ 3498: 55,5
- node:
color: '#FFFF0085'
id: BrickTileWhiteCornerNe
decals:
- 3272: 51,29
- 3282: 60,22
+ 3229: 51,29
+ 3238: 60,22
- node:
color: '#FFFFFFFF'
id: BrickTileWhiteCornerNe
decals:
- 3143: 6,-25
+ 3101: 6,-25
- node:
color: '#52B4E996'
id: BrickTileWhiteCornerNw
decals:
- 2796: -30,-27
- 2863: -10,-32
- 2900: -17,-29
+ 2757: -30,-27
+ 2824: -10,-32
+ 2861: -17,-29
- node:
color: '#D381C996'
id: BrickTileWhiteCornerNw
decals:
- 2556: 10,-24
+ 2517: 10,-24
+ - node:
+ color: '#EFB34196'
+ id: BrickTileWhiteCornerNw
+ decals:
+ 3494: 49,5
- node:
color: '#FFFF0085'
id: BrickTileWhiteCornerNw
decals:
- 3271: 49,29
- 3293: 55,22
+ 3228: 49,29
+ 3249: 55,22
- node:
color: '#FFFFFFFF'
id: BrickTileWhiteCornerNw
decals:
- 3142: 1,-25
+ 3100: 1,-25
- node:
color: '#52B4E996'
id: BrickTileWhiteCornerSe
decals:
- 2792: -26,-28
- 2856: -6,-36
+ 2753: -26,-28
+ 2817: -6,-36
- node:
color: '#FFFF0085'
id: BrickTileWhiteCornerSe
decals:
- 3274: 51,27
- 3286: 60,18
+ 3231: 51,27
+ 3242: 60,18
- node:
color: '#FFFFFFFF'
id: BrickTileWhiteCornerSe
decals:
- 3144: 6,-26
+ 3102: 6,-26
- node:
color: '#52B4E996'
id: BrickTileWhiteCornerSw
decals:
- 2795: -30,-28
- 2855: -10,-36
- 2903: -17,-32
+ 2756: -30,-28
+ 2816: -10,-36
+ 2864: -17,-32
+ - node:
+ color: '#EFB34196'
+ id: BrickTileWhiteCornerSw
+ decals:
+ 3485: 49,-4
- node:
color: '#FFFF0085'
id: BrickTileWhiteCornerSw
decals:
- 3275: 49,27
- 3290: 55,18
+ 3232: 49,27
+ 3246: 55,18
- node:
color: '#FFFFFFFF'
id: BrickTileWhiteCornerSw
decals:
- 3145: 1,-26
+ 3103: 1,-26
- node:
color: '#52B4E996'
id: BrickTileWhiteEndN
decals:
- 2790: -26,-26
+ 2751: -26,-26
- node:
color: '#D381C996'
id: BrickTileWhiteInnerNe
decals:
- 2567: 11,-29
- 2608: 11,-46
+ 2528: 11,-29
+ 2569: 11,-46
- node:
color: '#EFD57C8F'
id: BrickTileWhiteInnerNe
decals:
- 2719: -22,-27
+ 2680: -22,-27
- node:
color: '#52B4E996'
id: BrickTileWhiteInnerNw
decals:
- 2800: -26,-27
+ 2761: -26,-27
- node:
color: '#D381C996'
id: BrickTileWhiteInnerNw
decals:
- 2607: 14,-46
+ 2568: 14,-46
- node:
color: '#D381C996'
id: BrickTileWhiteInnerSe
decals:
- 2571: 11,-30
- 2610: 11,-43
+ 2532: 11,-30
+ 2571: 11,-43
- node:
color: '#DE3A3A96'
id: BrickTileWhiteInnerSe
decals:
- 3011: -2,-67
+ 2972: -2,-67
- node:
color: '#EFD57C8F'
id: BrickTileWhiteInnerSe
decals:
- 2717: -22,-24
+ 2678: -22,-24
- node:
color: '#D381C996'
id: BrickTileWhiteInnerSw
decals:
- 2586: 20,-30
- 2609: 14,-43
+ 2547: 20,-30
+ 2570: 14,-43
- node:
color: '#52B4E996'
id: BrickTileWhiteLineE
decals:
- 2534: 105,-11
- 2791: -26,-27
- 2857: -6,-35
- 2858: -6,-34
- 2859: -6,-33
- 2896: -12,-31
- 3017: -39,-46
- 3018: -39,-48
+ 2495: 105,-11
+ 2752: -26,-27
+ 2818: -6,-35
+ 2819: -6,-34
+ 2820: -6,-33
+ 2857: -12,-31
+ 2978: -39,-46
+ 2979: -39,-48
- node:
color: '#D381C996'
id: BrickTileWhiteLineE
decals:
- 1885: 19,-51
- 1886: 19,-50
- 1887: 19,-49
- 2535: 105,-12
- 2558: 11,-25
- 2559: 11,-26
- 2560: 11,-27
- 2561: 11,-28
- 2568: 11,-33
- 2569: 11,-32
- 2570: 11,-31
- 2594: 22,-30
- 2595: 22,-31
- 2596: 22,-33
- 2599: 11,-45
- 2600: 11,-44
- 2616: 7,-33
- 2617: 7,-32
- 2618: 7,-30
- 2619: 7,-29
- 2631: 23,-53
- 2632: 23,-52
- 2633: 23,-51
+ 1846: 19,-51
+ 1847: 19,-50
+ 1848: 19,-49
+ 2496: 105,-12
+ 2519: 11,-25
+ 2520: 11,-26
+ 2521: 11,-27
+ 2522: 11,-28
+ 2529: 11,-33
+ 2530: 11,-32
+ 2531: 11,-31
+ 2555: 22,-30
+ 2556: 22,-31
+ 2557: 22,-33
+ 2560: 11,-45
+ 2561: 11,-44
+ 2577: 7,-33
+ 2578: 7,-32
+ 2579: 7,-30
+ 2580: 7,-29
+ 2592: 23,-53
+ 2593: 23,-52
+ 2594: 23,-51
- node:
color: '#D4D4D428'
id: BrickTileWhiteLineE
decals:
- 2542: 107,-9
- 2543: 107,-8
+ 2503: 107,-9
+ 2504: 107,-8
- node:
color: '#D4D4D496'
id: BrickTileWhiteLineE
decals:
- 2540: 101,-9
- 2541: 101,-8
+ 2501: 101,-9
+ 2502: 101,-8
- node:
color: '#DE3A3A96'
id: BrickTileWhiteLineE
decals:
- 2536: 104,-14
- 3007: -2,-72
- 3008: -2,-71
- 3009: -2,-69
- 3010: -2,-68
+ 2497: 104,-14
+ 2968: -2,-72
+ 2969: -2,-71
+ 2970: -2,-69
+ 2971: -2,-68
+ - node:
+ color: '#EFB34196'
+ id: BrickTileWhiteLineE
+ decals:
+ 3499: 55,4
+ 3500: 55,3
+ 3501: 55,2
+ 3502: 55,1
+ 3503: 55,0
+ 3504: 55,-1
- node:
color: '#EFD57C8F'
id: BrickTileWhiteLineE
decals:
- 2715: -22,-26
- 2716: -22,-25
+ 2676: -22,-26
+ 2677: -22,-25
- node:
color: '#FFFF0085'
id: BrickTileWhiteLineE
decals:
- 3273: 51,28
- 3283: 60,21
- 3284: 60,20
- 3285: 60,19
+ 3230: 51,28
+ 3239: 60,21
+ 3240: 60,20
+ 3241: 60,19
- node:
color: '#52B4E996'
id: BrickTileWhiteLineN
decals:
- 2797: -29,-27
- 2798: -28,-27
- 2799: -27,-27
- 2861: -7,-32
- 2862: -9,-32
- 2897: -14,-29
- 2898: -15,-29
- 2899: -16,-29
+ 2758: -29,-27
+ 2759: -28,-27
+ 2760: -27,-27
+ 2822: -7,-32
+ 2823: -9,-32
+ 2858: -14,-29
+ 2859: -15,-29
+ 2860: -16,-29
- node:
color: '#D381C996'
id: BrickTileWhiteLineN
decals:
- 1908: 29,-55
- 1909: 28,-55
- 1910: 27,-55
- 1911: 26,-55
- 1912: 25,-55
- 1913: 24,-55
- 1914: 21,-55
- 1915: 22,-55
- 2562: 12,-29
- 2563: 13,-29
- 2564: 14,-29
- 2565: 15,-29
- 2566: 16,-29
- 2590: 18,-29
- 2591: 19,-29
- 2592: 21,-29
- 2605: 13,-46
- 2606: 12,-46
+ 1869: 29,-55
+ 1870: 28,-55
+ 1871: 27,-55
+ 1872: 26,-55
+ 1873: 25,-55
+ 1874: 24,-55
+ 1875: 21,-55
+ 1876: 22,-55
+ 2523: 12,-29
+ 2524: 13,-29
+ 2525: 14,-29
+ 2526: 15,-29
+ 2527: 16,-29
+ 2551: 18,-29
+ 2552: 19,-29
+ 2553: 21,-29
+ 2566: 13,-46
+ 2567: 12,-46
+ - node:
+ color: '#EFB34196'
+ id: BrickTileWhiteLineN
+ decals:
+ 3495: 51,5
+ 3496: 52,5
+ 3497: 53,5
- node:
color: '#EFD57C8F'
id: BrickTileWhiteLineN
decals:
- 2718: -21,-27
+ 2679: -21,-27
- node:
color: '#FFFF0085'
id: BrickTileWhiteLineN
decals:
- 3270: 50,29
- 3279: 57,22
- 3280: 58,22
- 3281: 59,22
+ 3227: 50,29
+ 3235: 57,22
+ 3236: 58,22
+ 3237: 59,22
- node:
color: '#FFFFFFFF'
id: BrickTileWhiteLineN
decals:
- 3146: 2,-25
- 3147: 3,-25
- 3148: 4,-25
- 3149: 5,-25
+ 3104: 2,-25
+ 3105: 3,-25
+ 3106: 4,-25
+ 3107: 5,-25
- node:
color: '#52B4E996'
id: BrickTileWhiteLineS
decals:
- 2793: -27,-28
- 2794: -29,-28
- 2867: -7,-36
- 2868: -8,-36
- 2869: -9,-36
- 2904: -16,-32
- 2905: -15,-32
- 2906: -14,-32
- 2907: -13,-32
+ 2754: -27,-28
+ 2755: -29,-28
+ 2828: -7,-36
+ 2829: -8,-36
+ 2830: -9,-36
+ 2865: -16,-32
+ 2866: -15,-32
+ 2867: -14,-32
+ 2868: -13,-32
- node:
color: '#D381C996'
id: BrickTileWhiteLineS
decals:
- 1888: 10,-56
- 1889: 9,-56
- 1890: 8,-56
- 1891: 7,-56
- 1892: 6,-56
- 1907: 25,-60
- 2572: 12,-30
- 2573: 14,-30
- 2574: 15,-30
- 2584: 18,-30
- 2585: 19,-30
- 2603: 13,-43
- 2604: 12,-43
+ 1849: 10,-56
+ 1850: 9,-56
+ 1851: 8,-56
+ 1852: 7,-56
+ 1853: 6,-56
+ 1868: 25,-60
+ 2533: 12,-30
+ 2534: 14,-30
+ 2535: 15,-30
+ 2545: 18,-30
+ 2546: 19,-30
+ 2564: 13,-43
+ 2565: 12,-43
+ - node:
+ color: '#EFB34196'
+ id: BrickTileWhiteLineS
+ decals:
+ 3486: 50,-4
- node:
color: '#EFD57C8F'
id: BrickTileWhiteLineS
decals:
- 2712: -19,-24
- 2713: -20,-24
- 2714: -21,-24
+ 2673: -19,-24
+ 2674: -20,-24
+ 2675: -21,-24
- node:
color: '#FFFF0085'
id: BrickTileWhiteLineS
decals:
- 3287: 59,18
- 3288: 57,18
- 3289: 58,18
+ 3243: 59,18
+ 3244: 57,18
+ 3245: 58,18
- node:
color: '#FFFFFFFF'
id: BrickTileWhiteLineS
decals:
- 3150: 5,-26
- 3151: 4,-26
- 3152: 3,-26
- 3153: 2,-26
+ 3108: 5,-26
+ 3109: 4,-26
+ 3110: 3,-26
+ 3111: 2,-26
- node:
color: '#334E6DC8'
id: BrickTileWhiteLineW
decals:
- 2537: 104,-14
+ 2498: 104,-14
- node:
color: '#52B4E996'
id: BrickTileWhiteLineW
decals:
- 2864: -10,-33
- 2865: -10,-34
- 2866: -10,-35
- 3019: -40,-48
- 3020: -40,-46
+ 2825: -10,-33
+ 2826: -10,-34
+ 2827: -10,-35
+ 2980: -40,-48
+ 2981: -40,-46
- node:
color: '#9FED5896'
id: BrickTileWhiteLineW
decals:
- 2538: 101,-9
- 2539: 101,-8
+ 2499: 101,-9
+ 2500: 101,-8
- node:
color: '#A4610696'
id: BrickTileWhiteLineW
decals:
- 2533: 103,-12
+ 2494: 103,-12
- node:
color: '#D381C996'
id: BrickTileWhiteLineW
decals:
- 1882: 17,-51
- 1883: 17,-50
- 1884: 17,-49
- 2547: 10,-33
- 2548: 10,-32
- 2549: 10,-31
- 2550: 10,-30
- 2551: 10,-29
- 2552: 10,-28
- 2553: 10,-27
- 2554: 10,-26
- 2555: 10,-25
- 2587: 20,-33
- 2588: 20,-32
- 2589: 20,-31
- 2601: 14,-45
- 2602: 14,-44
- 2611: 6,-33
- 2612: 6,-32
- 2613: 6,-31
- 2614: 6,-30
- 2615: 6,-29
- 2628: 21,-53
- 2629: 21,-52
- 2630: 21,-51
+ 1843: 17,-51
+ 1844: 17,-50
+ 1845: 17,-49
+ 2508: 10,-33
+ 2509: 10,-32
+ 2510: 10,-31
+ 2511: 10,-30
+ 2512: 10,-29
+ 2513: 10,-28
+ 2514: 10,-27
+ 2515: 10,-26
+ 2516: 10,-25
+ 2548: 20,-33
+ 2549: 20,-32
+ 2550: 20,-31
+ 2562: 14,-45
+ 2563: 14,-44
+ 2572: 6,-33
+ 2573: 6,-32
+ 2574: 6,-31
+ 2575: 6,-30
+ 2576: 6,-29
+ 2589: 21,-53
+ 2590: 21,-52
+ 2591: 21,-51
- node:
color: '#D4D4D428'
id: BrickTileWhiteLineW
decals:
- 2544: 107,-9
- 2545: 107,-8
+ 2505: 107,-9
+ 2506: 107,-8
- node:
color: '#EFB34196'
id: BrickTileWhiteLineW
decals:
- 2532: 103,-11
+ 2493: 103,-11
+ 3487: 49,-3
+ 3488: 49,-2
+ 3489: 49,-1
+ 3490: 49,0
+ 3491: 49,1
+ 3492: 49,2
+ 3493: 49,4
- node:
color: '#FFFF0085'
id: BrickTileWhiteLineW
decals:
- 3276: 49,28
- 3291: 55,19
- 3292: 55,21
+ 3233: 49,28
+ 3247: 55,19
+ 3248: 55,21
- node:
color: '#FFFFFFFF'
id: Busha2
decals:
155: 19,-22
- 1475: -46.96055,-56.174328
+ 1436: -46.96055,-56.174328
- node:
color: '#FFFFFFFF'
id: Bushb2
decals:
- 1474: -46.9918,-55.299328
+ 1435: -46.9918,-55.299328
- node:
color: '#FFFFFFFF'
id: Bushb3
@@ -1290,14 +1334,14 @@ entities:
6: 12.498397,2.9949365
15: -15.967909,-6.9661565
512: -54.00393,-1.0674171
- 1338: -28,-34
+ 1299: -28,-34
- node:
color: '#FFFFFFFF'
id: Bushd4
decals:
153: 17,-22
- 1073: 33.982124,53.777065
- 1075: 33.93525,52.66769
+ 1034: 33.982124,53.777065
+ 1036: 33.93525,52.66769
- node:
color: '#FFFFFFFF'
id: Bushe1
@@ -1322,36 +1366,36 @@ entities:
color: '#FFFFFFFF'
id: Bushi3
decals:
- 1072: 28.997751,52.82394
+ 1033: 28.997751,52.82394
- node:
color: '#FFFFFFFF'
id: Bushi4
decals:
16: -15.124159,-7.0286565
163: 19.95085,-17.649254
- 1071: 33.81025,51.35519
+ 1032: 33.81025,51.35519
- node:
color: '#FFFFFFFF'
id: Bushj2
decals:
- 1557: -7,-68
+ 1518: -7,-68
- node:
color: '#FFFFFFFF'
id: Bushj3
decals:
- 1074: 29.044626,51.152065
- 1556: -7,-66
+ 1035: 29.044626,51.152065
+ 1517: -7,-66
- node:
color: '#FFFFFFFF'
id: Bushk2
decals:
- 1483: -47.351173,-52.268078
+ 1444: -47.351173,-52.268078
- node:
color: '#FFFFFFFF'
id: Bushk3
decals:
157: 19,-22
- 1078: 28.950876,54.10519
+ 1039: 28.950876,54.10519
- node:
color: '#FFFFFFFF'
id: Bushl2
@@ -1367,7 +1411,7 @@ entities:
id: Bushm2
decals:
184: 31.019064,-21.428595
- 1076: 31.341501,54.027065
+ 1037: 31.341501,54.027065
- node:
color: '#FFFFFFFF'
id: Bushn1
@@ -1377,33 +1421,33 @@ entities:
color: '#34333785'
id: CheckerNESW
decals:
- 1531: 16,-37
- 1532: 16,-38
- 1533: 16,-39
- 1534: 17,-39
- 1535: 17,-38
- 1536: 17,-37
- 1537: 17,-36
- 1538: 17,-35
- 1539: 16,-35
- 1540: 16,-36
- 1541: 15,-35
- 1542: 15,-36
- 1543: 14,-35
- 1544: 14,-36
- 1545: 14,-37
- 1546: 15,-37
- 1547: 15,-38
- 1548: 14,-38
- 1549: 14,-39
- 1550: 15,-39
- 1551: 13,-36
+ 1492: 16,-37
+ 1493: 16,-38
+ 1494: 16,-39
+ 1495: 17,-39
+ 1496: 17,-38
+ 1497: 17,-37
+ 1498: 17,-36
+ 1499: 17,-35
+ 1500: 16,-35
+ 1501: 16,-36
+ 1502: 15,-35
+ 1503: 15,-36
+ 1504: 14,-35
+ 1505: 14,-36
+ 1506: 14,-37
+ 1507: 15,-37
+ 1508: 15,-38
+ 1509: 14,-38
+ 1510: 14,-39
+ 1511: 15,-39
+ 1512: 13,-36
- node:
color: '#52B4E996'
id: CheckerNESW
decals:
- 984: 51,-14
- 985: 51,-13
+ 981: 51,-14
+ 982: 51,-13
- node:
color: '#A4823196'
id: CheckerNESW
@@ -1414,117 +1458,117 @@ entities:
color: '#D381C996'
id: CheckerNESW
decals:
- 1085: -28,26
- 1086: -28,27
- 1087: -27,27
- 1088: -27,26
- 1089: -26,26
- 1090: -26,27
- 1091: -25,27
- 1092: -25,26
- 1093: -24,26
- 1094: -24,27
+ 1046: -28,26
+ 1047: -28,27
+ 1048: -27,27
+ 1049: -27,26
+ 1050: -26,26
+ 1051: -26,27
+ 1052: -25,27
+ 1053: -25,26
+ 1054: -24,26
+ 1055: -24,27
- node:
color: '#D4D4D428'
id: CheckerNESW
decals:
- 3410: 50,15
- 3411: 50,16
- 3412: 50,17
- 3413: 51,15
- 3414: 51,16
- 3415: 51,17
- 3416: 51,18
- 3417: 50,18
- 3418: 50,19
- 3419: 51,19
- 3420: 50,20
- 3421: 51,20
- 3422: 51,21
- 3423: 50,21
- 3424: 51,22
- 3425: 50,22
- 3426: 50,23
- 3427: 51,23
- 3428: 51,24
- 3429: 50,24
- 3430: 50,25
- 3431: 51,25
- 3432: 50,14
- 3433: 51,14
- 3434: 51,13
- 3435: 50,13
- 3436: 50,12
- 3437: 51,12
- 3438: 51,11
- 3439: 50,11
- 3440: 52,15
- 3441: 53,15
- 3442: 54,15
- 3443: 55,15
- 3444: 56,15
- 3445: 56,14
- 3446: 56,13
- 3447: 56,12
- 3448: 56,11
- 3449: 55,11
- 3450: 54,11
- 3451: 53,11
- 3452: 52,11
- 3453: 52,25
- 3454: 53,25
- 3455: 54,25
- 3456: 54,26
- 3457: 54,27
- 3458: 54,28
- 3459: 54,29
- 3460: 54,30
- 3461: 55,25
- 3462: 55,26
- 3463: 55,27
- 3464: 55,28
- 3465: 55,29
- 3466: 55,30
+ 3294: 50,15
+ 3295: 50,16
+ 3296: 50,17
+ 3297: 51,15
+ 3298: 51,16
+ 3299: 51,17
+ 3300: 51,18
+ 3301: 50,18
+ 3302: 50,19
+ 3303: 51,19
+ 3304: 50,20
+ 3305: 51,20
+ 3306: 51,21
+ 3307: 50,21
+ 3308: 51,22
+ 3309: 50,22
+ 3310: 50,23
+ 3311: 51,23
+ 3312: 51,24
+ 3313: 50,24
+ 3314: 50,25
+ 3315: 51,25
+ 3316: 50,14
+ 3317: 51,14
+ 3318: 51,13
+ 3319: 50,13
+ 3320: 50,12
+ 3321: 51,12
+ 3322: 51,11
+ 3323: 50,11
+ 3324: 52,15
+ 3325: 53,15
+ 3326: 54,15
+ 3327: 55,15
+ 3328: 56,15
+ 3329: 56,14
+ 3330: 56,13
+ 3331: 56,12
+ 3332: 56,11
+ 3333: 55,11
+ 3334: 54,11
+ 3335: 53,11
+ 3336: 52,11
+ 3337: 52,25
+ 3338: 53,25
+ 3339: 54,25
+ 3340: 54,26
+ 3341: 54,27
+ 3342: 54,28
+ 3343: 54,29
+ 3344: 54,30
+ 3345: 55,25
+ 3346: 55,26
+ 3347: 55,27
+ 3348: 55,28
+ 3349: 55,29
+ 3350: 55,30
- node:
color: '#52B4E996'
id: CheckerNWSE
decals:
- 963: 45,0
- 964: 45,1
- 1194: -31,-44
- 1195: -31,-43
- 1196: -32,-43
- 1197: -32,-44
- 1198: -26,-44
- 1199: -26,-43
- 1200: -25,-43
- 1201: -25,-44
- 1276: -22,-58
- 2881: -10,-30
- 2882: -10,-29
- 2883: -9,-29
- 2884: -9,-30
- 2885: -8,-30
- 2886: -8,-29
- 2887: -7,-29
- 2888: -7,-30
- 2889: -6,-30
- 2890: -6,-29
+ 960: 45,0
+ 961: 45,1
+ 1155: -31,-44
+ 1156: -31,-43
+ 1157: -32,-43
+ 1158: -32,-44
+ 1159: -26,-44
+ 1160: -26,-43
+ 1161: -25,-43
+ 1162: -25,-44
+ 1237: -22,-58
+ 2842: -10,-30
+ 2843: -10,-29
+ 2844: -9,-29
+ 2845: -9,-30
+ 2846: -8,-30
+ 2847: -8,-29
+ 2848: -7,-29
+ 2849: -7,-30
+ 2850: -6,-30
+ 2851: -6,-29
- node:
color: '#9FED5896'
id: CheckerNWSE
decals:
- 1449: -48,-47
- 1450: -47,-47
- 1451: -46,-47
- 1452: -54,-53
- 1453: -55,-53
- 1454: -55,-52
- 1455: -54,-52
- 1456: -54,-56
- 1457: -55,-56
- 1458: -55,-55
- 1459: -54,-55
+ 1410: -48,-47
+ 1411: -47,-47
+ 1412: -46,-47
+ 1413: -54,-53
+ 1414: -55,-53
+ 1415: -55,-52
+ 1416: -54,-52
+ 1417: -54,-56
+ 1418: -55,-56
+ 1419: -55,-55
+ 1420: -54,-55
- node:
color: '#A4610696'
id: CheckerNWSE
@@ -1545,58 +1589,74 @@ entities:
color: '#D4D4D40F'
id: CheckerNWSE
decals:
- 1760: 21,-40
- 1761: 21,-39
- 1762: 20,-39
- 1763: 20,-40
- 1764: 19,-40
- 1765: 19,-39
- 1766: 19,-38
- 1767: 20,-38
- 1768: 21,-38
- 1769: 22,-38
- 1770: 22,-39
- 1771: 22,-40
- 1772: 22,-37
- 1773: 21,-37
- 1774: 20,-37
- 1775: 19,-37
- 1776: 19,-36
- 1777: 20,-36
- 1778: 21,-36
- 1779: 22,-36
- 1780: 22,-35
- 1781: 21,-35
- 1782: 20,-35
- 1783: 19,-35
+ 1721: 21,-40
+ 1722: 21,-39
+ 1723: 20,-39
+ 1724: 20,-40
+ 1725: 19,-40
+ 1726: 19,-39
+ 1727: 19,-38
+ 1728: 20,-38
+ 1729: 21,-38
+ 1730: 22,-38
+ 1731: 22,-39
+ 1732: 22,-40
+ 1733: 22,-37
+ 1734: 21,-37
+ 1735: 20,-37
+ 1736: 19,-37
+ 1737: 19,-36
+ 1738: 20,-36
+ 1739: 21,-36
+ 1740: 22,-36
+ 1741: 22,-35
+ 1742: 21,-35
+ 1743: 20,-35
+ 1744: 19,-35
- node:
color: '#D4D4D496'
id: CheckerNWSE
decals:
- 986: 51,-14
- 987: 51,-13
+ 983: 51,-14
+ 984: 51,-13
- node:
color: '#DE3A3A96'
id: CheckerNWSE
decals:
- 961: 45,-4
- 962: 45,-3
+ 958: 45,-4
+ 959: 45,-3
- node:
color: '#EFB34196'
id: CheckerNWSE
decals:
- 1037: 43,7
- 1038: 43,8
- 1039: 43,9
- 1040: 44,9
- 1041: 44,8
- 1042: 44,7
- 1043: 45,7
- 1044: 45,8
- 1045: 45,9
- 1046: 46,9
- 1047: 46,8
- 1048: 46,7
+ 998: 43,7
+ 999: 43,8
+ 1000: 43,9
+ 1001: 44,9
+ 1002: 44,8
+ 1003: 44,7
+ 1004: 45,7
+ 1005: 45,8
+ 1006: 45,9
+ 1007: 46,9
+ 1008: 46,8
+ 1009: 46,7
+ 3457: 51,-1
+ 3458: 51,0
+ 3459: 51,1
+ 3460: 51,2
+ 3461: 51,3
+ 3462: 52,3
+ 3463: 53,3
+ 3464: 54,3
+ 3465: 54,2
+ 3466: 54,1
+ 3467: 54,0
+ 3468: 54,-1
+ 3469: 54,-2
+ 3470: 53,-2
+ 3471: 52,-2
+ 3472: 51,-2
- node:
color: '#FFFFFFFF'
id: Delivery
@@ -1639,82 +1699,82 @@ entities:
904: 42,-27
905: 42,-26
906: 46,-24
- 1016: 46,-4
- 1498: -48,-38
- 1499: -45,-38
- 1500: -45,-36
- 1504: -48,-34
- 1505: -48,-31
- 1506: -47,-31
- 1674: 4,-38
- 1687: 12,-28
- 1729: 8,-49
- 1730: 9,-49
- 1731: 10,-49
- 1745: 8,-33
- 1746: 8,-29
- 1828: -12,-72
- 1829: -10,-72
- 1830: -4,-72
- 1847: 46,12
- 2580: 14,-31
- 2581: 14,-33
- 2939: -4,38
- 2940: -5,38
- 2941: -6,38
- 2976: -2,-61
- 2977: -3,-61
- 2978: -4,-61
- 3238: 57,14
- 3239: 57,15
- 3240: 57,16
- 3241: 57,24
- 3242: 57,25
- 3243: 57,26
- 3244: 53,20
- 3249: 55,16
- 3250: 54,16
- 3251: 53,16
- 3252: 53,17
- 3253: 53,18
- 3254: 53,22
- 3255: 53,23
- 3256: 53,24
- 3257: 54,24
- 3258: 55,24
- 3259: 52,27
- 3260: 52,29
- 3261: 49,30
- 3262: 50,30
- 3263: 51,30
- 3264: 48,30
- 3300: 47,18
- 3301: 46,18
- 3358: 45,15
- 3359: 45,18
- 3570: 54,-4
- 3571: 55,-4
- 3572: 53,-4
+ 986: 46,-4
+ 1459: -48,-38
+ 1460: -45,-38
+ 1461: -45,-36
+ 1465: -48,-34
+ 1466: -48,-31
+ 1467: -47,-31
+ 1635: 4,-38
+ 1648: 12,-28
+ 1690: 8,-49
+ 1691: 9,-49
+ 1692: 10,-49
+ 1706: 8,-33
+ 1707: 8,-29
+ 1789: -12,-72
+ 1790: -10,-72
+ 1791: -4,-72
+ 1808: 46,12
+ 2541: 14,-31
+ 2542: 14,-33
+ 2900: -4,38
+ 2901: -5,38
+ 2902: -6,38
+ 2937: -2,-61
+ 2938: -3,-61
+ 2939: -4,-61
+ 3196: 57,14
+ 3197: 57,15
+ 3198: 57,16
+ 3199: 57,24
+ 3200: 57,25
+ 3201: 57,26
+ 3202: 53,20
+ 3207: 55,16
+ 3208: 54,16
+ 3209: 53,16
+ 3210: 53,17
+ 3211: 53,18
+ 3212: 53,22
+ 3213: 53,23
+ 3214: 53,24
+ 3215: 54,24
+ 3216: 55,24
+ 3217: 52,27
+ 3218: 52,29
+ 3219: 49,30
+ 3220: 50,30
+ 3221: 51,30
+ 3222: 48,30
+ 3256: 47,18
+ 3257: 46,18
+ 3259: 45,15
+ 3260: 45,18
+ 3454: 54,-4
+ 3455: 55,-4
+ 3456: 53,-4
- node:
color: '#52B4E996'
id: DeliveryGreyscale
decals:
- 2891: -8,-31
- 2892: -11,-32
- 2893: -11,-30
- 2908: -12,-33
- 3211: -28,-42
- 3212: -29,-42
+ 2852: -8,-31
+ 2853: -11,-32
+ 2854: -11,-30
+ 2869: -12,-33
+ 3169: -28,-42
+ 3170: -29,-42
- node:
cleanable: True
color: '#A4610696'
id: Dirt
decals:
- 1402: -9,-49
- 1403: -12,-50
- 1404: -13,-50
- 1405: -15,-49
- 1406: -15,-47
+ 1363: -9,-49
+ 1364: -12,-50
+ 1365: -13,-50
+ 1366: -15,-49
+ 1367: -15,-47
- node:
cleanable: True
color: '#FFFFFFFF'
@@ -1745,18 +1805,18 @@ entities:
917: 42,-27
918: 42,-28
919: 42,-29
- 3532: 56,9
- 3533: 57,9
- 3534: 57,7
- 3535: 61,8
- 3536: 67,7
- 3537: 54,7
- 3538: 58,3
+ 3416: 56,9
+ 3417: 57,9
+ 3418: 57,7
+ 3419: 61,8
+ 3420: 67,7
+ 3421: 54,7
+ 3422: 58,3
- node:
color: '#FFFFFFFF'
id: DirtHeavy
decals:
- 1869: -44,28
+ 1830: -44,28
- node:
cleanable: True
color: '#FFFFFFFF'
@@ -1780,11 +1840,11 @@ entities:
color: '#FFFFFFFF'
id: DirtLight
decals:
- 1870: -43,28
- 1871: -44,27
- 1872: -41,28
- 1873: -40,26
- 1874: -44,26
+ 1831: -43,28
+ 1832: -44,27
+ 1833: -41,28
+ 1834: -40,26
+ 1835: -44,26
- node:
cleanable: True
color: '#FFFFFFFF'
@@ -1889,62 +1949,62 @@ entities:
615: -20,9
616: -19,23
617: -16,24
- 1396: -10,-51
- 1397: -9,-50
- 1398: -12,-47
- 1399: -15,-50
- 1401: -13,-51
- 3481: 51,18
- 3482: 52,17
- 3483: 50,18
- 3484: 50,19
- 3485: 50,20
- 3486: 51,20
- 3487: 50,21
- 3488: 50,22
- 3489: 51,22
- 3490: 52,20
- 3491: 52,19
- 3492: 53,20
- 3493: 52,21
- 3494: 52,21
- 3495: 56,19
- 3496: 56,18
- 3497: 54,20
- 3498: 55,19
- 3499: 55,20
- 3500: 56,19
- 3501: 55,25
- 3502: 54,26
- 3503: 55,27
- 3504: 55,29
- 3505: 55,29
- 3506: 54,28
- 3507: 55,27
- 3508: 56,26
- 3509: 49,16
- 3510: 50,15
- 3511: 50,16
- 3512: 51,15
- 3513: 51,17
- 3514: 52,16
- 3515: 52,15
- 3516: 50,14
- 3517: 48,15
- 3518: 49,12
- 3519: 50,12
- 3520: 51,11
- 3521: 48,8
- 3522: 49,8
- 3523: 50,9
- 3524: 50,7
- 3525: 47,9
- 3526: 46,10
- 3527: 45,16
- 3528: 45,17
- 3529: 44,15
- 3530: 43,14
- 3531: 51,14
+ 1357: -10,-51
+ 1358: -9,-50
+ 1359: -12,-47
+ 1360: -15,-50
+ 1362: -13,-51
+ 3365: 51,18
+ 3366: 52,17
+ 3367: 50,18
+ 3368: 50,19
+ 3369: 50,20
+ 3370: 51,20
+ 3371: 50,21
+ 3372: 50,22
+ 3373: 51,22
+ 3374: 52,20
+ 3375: 52,19
+ 3376: 53,20
+ 3377: 52,21
+ 3378: 52,21
+ 3379: 56,19
+ 3380: 56,18
+ 3381: 54,20
+ 3382: 55,19
+ 3383: 55,20
+ 3384: 56,19
+ 3385: 55,25
+ 3386: 54,26
+ 3387: 55,27
+ 3388: 55,29
+ 3389: 55,29
+ 3390: 54,28
+ 3391: 55,27
+ 3392: 56,26
+ 3393: 49,16
+ 3394: 50,15
+ 3395: 50,16
+ 3396: 51,15
+ 3397: 51,17
+ 3398: 52,16
+ 3399: 52,15
+ 3400: 50,14
+ 3401: 48,15
+ 3402: 49,12
+ 3403: 50,12
+ 3404: 51,11
+ 3405: 48,8
+ 3406: 49,8
+ 3407: 50,9
+ 3408: 50,7
+ 3409: 47,9
+ 3410: 46,10
+ 3411: 45,16
+ 3412: 45,17
+ 3413: 44,15
+ 3414: 43,14
+ 3415: 51,14
- node:
cleanable: True
color: '#FFFFFFFF'
@@ -1986,64 +2046,64 @@ entities:
594: -28,21
595: -26,22
613: -19,12
- 1400: -9,-51
- 3467: 50,11
- 3468: 49,15
- 3469: 51,16
- 3470: 52,14
- 3471: 53,12
- 3472: 54,13
- 3473: 51,16
- 3474: 51,19
- 3475: 51,21
- 3476: 52,18
- 3477: 49,22
- 3478: 51,24
- 3479: 54,25
- 3480: 55,26
+ 1361: -9,-51
+ 3351: 50,11
+ 3352: 49,15
+ 3353: 51,16
+ 3354: 52,14
+ 3355: 53,12
+ 3356: 54,13
+ 3357: 51,16
+ 3358: 51,19
+ 3359: 51,21
+ 3360: 52,18
+ 3361: 49,22
+ 3362: 51,24
+ 3363: 54,25
+ 3364: 55,26
- node:
color: '#FFFFFFFF'
id: FlowersBRTwo
decals:
- 3109: 34.316673,-19.011337
+ 3070: 34.316673,-19.011337
- node:
color: '#FFFFFFFF'
id: Flowersbr1
decals:
156: 19,-22
- 1064: 29.841501,51.10519
- 1555: -7,-66
- 1564: 12.525944,-44.196365
+ 1025: 29.841501,51.10519
+ 1516: -7,-66
+ 1525: 12.525944,-44.196365
- node:
color: '#FFFFFFFF'
id: Flowersbr2
decals:
177: 25.464628,-21.003279
- 1065: 33.107124,51.07394
- 1337: -28,-34
- 1563: 12.057194,-44.696365
+ 1026: 33.107124,51.07394
+ 1298: -28,-34
+ 1524: 12.057194,-44.696365
- node:
color: '#FFFFFFFF'
id: Flowersbr3
decals:
- 1066: 32.18525,53.51144
- 1562: 12.932194,-44.86824
- 1793: 33,-55
+ 1027: 32.18525,53.51144
+ 1523: 12.932194,-44.86824
+ 1754: 33,-55
- node:
color: '#FFFFFFFF'
id: Flowerspv1
decals:
178: 26.980253,-20.518904
- 1069: 32.263374,51.88644
+ 1030: 32.263374,51.88644
- node:
color: '#FFFFFFFF'
id: Flowerspv3
decals:
165: 19.987902,-17.161049
- 1070: 29.107126,51.73019
- 1479: -46.351173,-56.908703
- 1480: -47.8043,-52.564953
- 3108: 32.425682,-19.714462
+ 1031: 29.107126,51.73019
+ 1440: -46.351173,-56.908703
+ 1441: -47.8043,-52.564953
+ 3069: 32.425682,-19.714462
- node:
color: '#FFFFFFFF'
id: Flowersy1
@@ -2057,113 +2117,113 @@ entities:
id: Flowersy2
decals:
12: -14.717909,-6.9817815
- 1067: 30.935251,52.66769
- 1068: 29.138376,53.277065
- 1554: -7,-68
- 1794: 33,-56
- 3107: 34.175682,-20.698837
+ 1028: 30.935251,52.66769
+ 1029: 29.138376,53.277065
+ 1515: -7,-68
+ 1755: 33,-56
+ 3068: 34.175682,-20.698837
- node:
color: '#FFFFFFFF'
id: Flowersy3
decals:
3: 12.795272,2.9949365
- 1481: -46.069923,-52.846203
+ 1442: -46.069923,-52.846203
- node:
color: '#FFFFFFFF'
id: Flowersy4
decals:
- 1482: -47.851173,-54.533703
+ 1443: -47.851173,-54.533703
- node:
color: '#00000041'
id: FullTileOverlayGreyscale
decals:
- 1283: -16,-50
- 1284: -16,-49
- 1285: -17,-49
- 1286: -17,-50
- 1287: -16,-51
- 1288: -17,-51
- 1289: -16,-52
- 1290: -17,-52
- 1291: -18,-52
- 1292: -18,-51
- 1293: -18,-50
- 1294: -18,-49
- 1295: -18,-48
- 1296: -17,-48
- 1297: -16,-48
- 1298: -16,-47
- 1299: -17,-47
- 1300: -18,-47
- 1301: -19,-49
+ 1244: -16,-50
+ 1245: -16,-49
+ 1246: -17,-49
+ 1247: -17,-50
+ 1248: -16,-51
+ 1249: -17,-51
+ 1250: -16,-52
+ 1251: -17,-52
+ 1252: -18,-52
+ 1253: -18,-51
+ 1254: -18,-50
+ 1255: -18,-49
+ 1256: -18,-48
+ 1257: -17,-48
+ 1258: -16,-48
+ 1259: -16,-47
+ 1260: -17,-47
+ 1261: -18,-47
+ 1262: -19,-49
- node:
color: '#47362B4A'
id: FullTileOverlayGreyscale
decals:
- 1509: -36,-10
- 1510: -35,-10
- 1511: -35,-11
- 1512: -36,-11
- 1513: -34,-11
- 1514: -34,-13
- 1515: -35,-13
- 1516: -36,-13
- 1517: -36,-14
- 1518: -35,-14
- 1519: -29,-6
- 1520: -29,-5
- 1521: -29,-4
- 1522: -28,-4
- 1523: -28,-5
- 1524: -26,-6
- 1525: -26,-5
- 1526: -26,-4
- 1527: -25,-4
- 1528: -25,-5
+ 1470: -36,-10
+ 1471: -35,-10
+ 1472: -35,-11
+ 1473: -36,-11
+ 1474: -34,-11
+ 1475: -34,-13
+ 1476: -35,-13
+ 1477: -36,-13
+ 1478: -36,-14
+ 1479: -35,-14
+ 1480: -29,-6
+ 1481: -29,-5
+ 1482: -29,-4
+ 1483: -28,-4
+ 1484: -28,-5
+ 1485: -26,-6
+ 1486: -26,-5
+ 1487: -26,-4
+ 1488: -25,-4
+ 1489: -25,-5
- node:
color: '#52B4E996'
id: FullTileOverlayGreyscale
decals:
- 1150: -24,-30
- 1151: -25,-30
- 1152: -24,-31
- 1153: -26,-30
- 1154: -32,-31
- 1155: -32,-30
- 1156: -31,-30
- 1157: -30,-30
- 1158: -32,-37
- 1159: -32,-38
- 1160: -31,-38
- 1161: -25,-38
- 1162: -24,-38
- 1163: -24,-37
- 1172: -27,-35
- 1173: -28,-35
- 1174: -29,-35
- 1175: -29,-34
- 1176: -29,-33
- 1177: -28,-33
- 1178: -27,-33
- 1179: -27,-34
- 1306: -14,-36
- 1319: -19,-35
- 1320: -15,-45
- 1321: -14,-45
- 1325: -19,-43
- 1326: -19,-42
- 2850: -8,-35
- 2851: -8,-34
- 2852: -8,-33
- 2853: -7,-34
- 2854: -9,-34
+ 1111: -24,-30
+ 1112: -25,-30
+ 1113: -24,-31
+ 1114: -26,-30
+ 1115: -32,-31
+ 1116: -32,-30
+ 1117: -31,-30
+ 1118: -30,-30
+ 1119: -32,-37
+ 1120: -32,-38
+ 1121: -31,-38
+ 1122: -25,-38
+ 1123: -24,-38
+ 1124: -24,-37
+ 1133: -27,-35
+ 1134: -28,-35
+ 1135: -29,-35
+ 1136: -29,-34
+ 1137: -29,-33
+ 1138: -28,-33
+ 1139: -27,-33
+ 1140: -27,-34
+ 1267: -14,-36
+ 1280: -19,-35
+ 1281: -15,-45
+ 1282: -14,-45
+ 1286: -19,-43
+ 1287: -19,-42
+ 2811: -8,-35
+ 2812: -8,-34
+ 2813: -8,-33
+ 2814: -7,-34
+ 2815: -9,-34
- node:
color: '#9FED5896'
id: FullTileOverlayGreyscale
decals:
- 1446: -45,-47
- 1447: -49,-47
- 1448: -51,-51
+ 1407: -45,-47
+ 1408: -49,-47
+ 1409: -51,-51
- node:
color: '#A4610696'
id: FullTileOverlayGreyscale
@@ -2179,87 +2239,87 @@ entities:
color: '#D381C996'
id: FullTileOverlayGreyscale
decals:
- 1756: 30,-43
+ 1717: 30,-43
- node:
cleanable: True
color: '#D4D4D409'
id: FullTileOverlayGreyscale
decals:
- 3539: 48,14
- 3540: 47,16
- 3541: 49,18
- 3542: 49,21
- 3543: 49,21
- 3544: 52,24
- 3545: 56,26
- 3546: 56,28
- 3547: 56,29
- 3548: 55,12
- 3549: 54,12
- 3550: 54,13
- 3551: 53,13
- 3552: 52,14
- 3553: 52,14
- 3554: 52,12
- 3555: 48,14
- 3556: 47,14
- 3557: 47,13
- 3558: 47,12
+ 3423: 48,14
+ 3424: 47,16
+ 3425: 49,18
+ 3426: 49,21
+ 3427: 49,21
+ 3428: 52,24
+ 3429: 56,26
+ 3430: 56,28
+ 3431: 56,29
+ 3432: 55,12
+ 3433: 54,12
+ 3434: 54,13
+ 3435: 53,13
+ 3436: 52,14
+ 3437: 52,14
+ 3438: 52,12
+ 3439: 48,14
+ 3440: 47,14
+ 3441: 47,13
+ 3442: 47,12
- node:
color: '#DE3A3A96'
id: FullTileOverlayGreyscale
decals:
849: 0,49
- 982: 51,-16
- 983: 51,-15
+ 979: 51,-16
+ 980: 51,-15
- node:
color: '#EFD57C8F'
id: FullTileOverlayGreyscale
decals:
- 2677: -21,-29
- 2706: -21,-26
- 2707: -21,-25
- 2708: -20,-25
- 2709: -19,-25
+ 2638: -21,-29
+ 2667: -21,-26
+ 2668: -21,-25
+ 2669: -20,-25
+ 2670: -19,-25
- node:
color: '#FFFF007F'
id: FullTileOverlayGreyscale
decals:
- 3366: 51,-17
+ 3265: 51,-17
- node:
color: '#FFFFFFFF'
id: Grassa1
decals:
- 1809: 31,-56
+ 1770: 31,-56
- node:
color: '#FFFFFFFF'
id: Grassa2
decals:
- 1803: 35,-57
- 1810: 31,-58
+ 1764: 35,-57
+ 1771: 31,-58
- node:
color: '#FFFFFFFF'
id: Grassa3
decals:
- 1804: 35,-56
+ 1765: 35,-56
- node:
color: '#FFFFFFFF'
id: Grassa4
decals:
175: 26.964628,-19.97662
- 1805: 35,-55
+ 1766: 35,-55
- node:
color: '#FFFFFFFF'
id: Grassa5
decals:
- 1807: 35,-58
- 1808: 31,-57
+ 1768: 35,-58
+ 1769: 31,-57
- node:
color: '#FFFFFFFF'
id: Grassb1
decals:
- 1473: -45.9918,-51.877453
- 1476: -45.96055,-56.064953
+ 1434: -45.9918,-51.877453
+ 1437: -45.96055,-56.064953
- node:
color: '#FFFFFFFF'
id: Grassb2
@@ -2267,8 +2327,8 @@ entities:
4: 11.998397,2.9949365
151: 17,-22
174: 24.917753,-21.067398
- 1472: -48.02305,-57.002453
- 1806: 35,-54
+ 1433: -48.02305,-57.002453
+ 1767: 35,-54
- node:
color: '#FFFFFFFF'
id: Grassb3
@@ -2276,56 +2336,56 @@ entities:
5: 13.014022,3.0261865
26: 13.178476,2.9728556
173: 26.949003,-21.004898
- 1470: -46.101173,-57.080578
+ 1431: -46.101173,-57.080578
- node:
color: '#FFFFFFFF'
id: Grassb4
decals:
160: 19.997725,-18.258629
180: 24.995878,-19.956404
- 1478: -47.83555,-55.971203
+ 1439: -47.83555,-55.971203
- node:
color: '#FFFFFFFF'
id: Grassb5
decals:
515: -48.03518,-1.0361671
- 1471: -48.02305,-51.955578
- 1477: -47.101173,-56.971203
+ 1432: -48.02305,-51.955578
+ 1438: -47.101173,-56.971203
- node:
color: '#FFFFFFFF'
id: Grassd1
decals:
10: -15.577284,-6.9349065
- 1061: 33.93525,53.91769
- 1077: 31.247751,52.01144
- 3104: 34.394432,-19.886337
+ 1022: 33.93525,53.91769
+ 1038: 31.247751,52.01144
+ 3065: 34.394432,-19.886337
- node:
color: '#FFFFFFFF'
id: Grassd2
decals:
8: -13.983534,-6.9349065
169: 26.980253,-19.911148
- 1062: 32.029,51.32394
- 1063: 28.982126,54.120815
- 1466: -46.069923,-54.346203
- 1467: -47.89805,-52.080578
+ 1023: 32.029,51.32394
+ 1024: 28.982126,54.120815
+ 1427: -46.069923,-54.346203
+ 1428: -47.89805,-52.080578
- node:
color: '#FFFFFFFF'
id: Grassd3
decals:
9: -14.858534,-6.9349065
- 1468: -48.0543,-53.002453
- 1469: -47.9918,-55.283703
- 1561: 12.760319,-44.77449
- 3105: 34.878807,-18.964462
+ 1429: -48.0543,-53.002453
+ 1430: -47.9918,-55.283703
+ 1522: 12.760319,-44.77449
+ 3066: 34.878807,-18.964462
- node:
color: '#FFFFFFFF'
id: Grasse1
decals:
1: 12.951522,3.0418115
172: 25.480253,-20.239273
- 1060: 30.654001,53.339565
- 1560: 12.150944,-44.21199
+ 1021: 30.654001,53.339565
+ 1521: 12.150944,-44.21199
- node:
color: '#FFFFFFFF'
id: Grasse2
@@ -2337,16 +2397,16 @@ entities:
164: 19.972277,-17.082924
171: 25.855253,-21.020523
182: 30.987814,-21.06922
- 1058: 32.607124,52.183315
- 1059: 29.122751,52.245815
- 1464: -46.14805,-53.361828
- 1465: -46.14805,-56.799328
- 1552: -7,-68
- 1553: -7,-66
- 1559: 12.838444,-44.227615
- 1792: 33,-55
- 3103: 34.894432,-20.698837
- 3106: 32.863182,-20.339462
+ 1019: 32.607124,52.183315
+ 1020: 29.122751,52.245815
+ 1425: -46.14805,-53.361828
+ 1426: -46.14805,-56.799328
+ 1513: -7,-68
+ 1514: -7,-66
+ 1520: 12.838444,-44.227615
+ 1753: 33,-55
+ 3064: 34.894432,-20.698837
+ 3067: 32.863182,-20.339462
- node:
color: '#FFFFFFFF'
id: Grasse3
@@ -2355,14 +2415,14 @@ entities:
158: 19.9196,-19.024254
168: 25.089628,-21.036148
170: 26.620878,-20.895523
- 1056: 28.997751,51.058315
- 1057: 33.700874,52.07394
- 1336: -28,-34
- 1462: -47.632423,-56.314953
- 1463: -46.4293,-52.424328
- 1558: 12,-45
- 1791: 33,-56
- 3102: 32.535057,-19.073837
+ 1017: 28.997751,51.058315
+ 1018: 33.700874,52.07394
+ 1297: -28,-34
+ 1423: -47.632423,-56.314953
+ 1424: -46.4293,-52.424328
+ 1519: 12,-45
+ 1752: 33,-56
+ 3063: 32.535057,-19.073837
- node:
color: '#334E6DC8'
id: HalfTileOverlayGreyscale
@@ -2377,62 +2437,62 @@ entities:
color: '#52B4E92E'
id: HalfTileOverlayGreyscale
decals:
- 1236: -33,-50
- 1237: -34,-50
- 1238: -35,-50
- 1239: -36,-50
- 1240: -24,-50
- 1241: -25,-50
- 1242: -26,-50
- 1243: -27,-50
- 1244: -34,-46
+ 1197: -33,-50
+ 1198: -34,-50
+ 1199: -35,-50
+ 1200: -36,-50
+ 1201: -24,-50
+ 1202: -25,-50
+ 1203: -26,-50
+ 1204: -27,-50
+ 1205: -34,-46
- node:
color: '#52B4E996'
id: HalfTileOverlayGreyscale
decals:
- 1127: -11,-24
- 1128: -8,-24
- 1129: -7,-24
- 1141: -20,-39
- 1142: -21,-39
- 1143: -22,-39
- 1144: -20,-53
- 1145: -21,-53
- 1146: -22,-53
- 1182: -27,-36
- 1183: -29,-36
- 1188: -25,-40
- 1189: -26,-40
- 1190: -28,-40
- 1191: -30,-40
- 1192: -31,-40
- 1193: -32,-40
- 1222: -26,-51
- 1223: -25,-51
- 1234: -35,-51
- 1235: -34,-51
- 1317: -16,-34
- 1318: -17,-34
- 1327: -15,-42
- 1328: -16,-42
- 1329: -17,-42
- 1340: -28,-36
- 1389: -35,-32
- 1390: -36,-32
- 2641: -5,-25
- 2784: -12,-24
+ 1088: -11,-24
+ 1089: -8,-24
+ 1090: -7,-24
+ 1102: -20,-39
+ 1103: -21,-39
+ 1104: -22,-39
+ 1105: -20,-53
+ 1106: -21,-53
+ 1107: -22,-53
+ 1143: -27,-36
+ 1144: -29,-36
+ 1149: -25,-40
+ 1150: -26,-40
+ 1151: -28,-40
+ 1152: -30,-40
+ 1153: -31,-40
+ 1154: -32,-40
+ 1183: -26,-51
+ 1184: -25,-51
+ 1195: -35,-51
+ 1196: -34,-51
+ 1278: -16,-34
+ 1279: -17,-34
+ 1288: -15,-42
+ 1289: -16,-42
+ 1290: -17,-42
+ 1301: -28,-36
+ 1350: -35,-32
+ 1351: -36,-32
+ 2602: -5,-25
+ 2745: -12,-24
- node:
color: '#9FED5896'
id: HalfTileOverlayGreyscale
decals:
83: -7,4
84: -6,4
- 1424: -43,-46
- 1425: -51,-46
- 1426: -52,-46
- 1427: -53,-46
- 1428: -54,-46
- 1429: -51,-52
+ 1385: -43,-46
+ 1386: -51,-46
+ 1387: -52,-46
+ 1388: -53,-46
+ 1389: -54,-46
+ 1390: -51,-52
- node:
color: '#A4610696'
id: HalfTileOverlayGreyscale
@@ -2457,73 +2517,73 @@ entities:
389: -19,19
396: -18,11
397: -19,11
- 1863: -41,28
- 1864: -42,28
- 1865: -43,28
+ 1824: -41,28
+ 1825: -42,28
+ 1826: -43,28
- node:
color: '#D381C996'
id: HalfTileOverlayGreyscale
decals:
- 1572: 1,-24
- 1573: 2,-24
- 1574: 5,-24
- 1575: 6,-24
- 1576: 7,-24
- 1588: 11,-40
- 1589: 10,-37
- 1590: 9,-37
- 1591: 8,-37
- 1592: 7,-37
- 1619: 10,-47
- 1620: 9,-47
- 1621: 8,-47
- 1622: 7,-47
- 1623: 6,-47
- 1624: 5,-47
- 1625: 4,-47
- 1626: 18,-44
- 1627: 19,-44
- 1628: 20,-44
- 1629: 21,-44
- 1630: 22,-44
- 1631: 23,-44
- 1632: 24,-44
- 1633: 25,-44
- 1634: 26,-44
- 1635: 27,-44
- 1636: 28,-44
- 1787: 24,-35
- 1788: 23,-35
- 2011: 34,-44
- 2012: 35,-44
- 2013: 36,-44
- 2014: 37,-44
- 2015: 39,-44
- 2027: 38,-44
- 2818: -1,-25
+ 1533: 1,-24
+ 1534: 2,-24
+ 1535: 5,-24
+ 1536: 6,-24
+ 1537: 7,-24
+ 1549: 11,-40
+ 1550: 10,-37
+ 1551: 9,-37
+ 1552: 8,-37
+ 1553: 7,-37
+ 1580: 10,-47
+ 1581: 9,-47
+ 1582: 8,-47
+ 1583: 7,-47
+ 1584: 6,-47
+ 1585: 5,-47
+ 1586: 4,-47
+ 1587: 18,-44
+ 1588: 19,-44
+ 1589: 20,-44
+ 1590: 21,-44
+ 1591: 22,-44
+ 1592: 23,-44
+ 1593: 24,-44
+ 1594: 25,-44
+ 1595: 26,-44
+ 1596: 27,-44
+ 1597: 28,-44
+ 1748: 24,-35
+ 1749: 23,-35
+ 1972: 34,-44
+ 1973: 35,-44
+ 1974: 36,-44
+ 1975: 37,-44
+ 1976: 39,-44
+ 1988: 38,-44
+ 2779: -1,-25
- node:
color: '#D4D4D428'
id: HalfTileOverlayGreyscale
decals:
- 2037: -3,-19
- 2038: -5,-19
- 2039: -4,-19
- 2040: -2,-19
- 2041: -1,-19
- 2042: -6,-19
- 2045: 0,-19
- 2093: -3,-8
- 2094: -4,-8
- 2095: -2,-8
- 2096: -1,-8
- 2097: -5,-8
- 2187: -46,3
- 2431: -50,3
- 2432: -51,3
- 2433: -52,3
- 2434: -50,-4
- 2435: -51,-4
- 2436: -52,-4
+ 1998: -3,-19
+ 1999: -5,-19
+ 2000: -4,-19
+ 2001: -2,-19
+ 2002: -1,-19
+ 2003: -6,-19
+ 2006: 0,-19
+ 2054: -3,-8
+ 2055: -4,-8
+ 2056: -2,-8
+ 2057: -1,-8
+ 2058: -5,-8
+ 2148: -46,3
+ 2392: -50,3
+ 2393: -51,3
+ 2394: -52,3
+ 2395: -50,-4
+ 2396: -51,-4
+ 2397: -52,-4
- node:
color: '#DE3A3A96'
id: HalfTileOverlayGreyscale
@@ -2552,8 +2612,8 @@ entities:
846: 1,53
847: 0,53
848: -1,53
- 1816: 2,-68
- 1817: 1,-68
+ 1777: 2,-68
+ 1778: 1,-68
- node:
color: '#EFB34196'
id: HalfTileOverlayGreyscale
@@ -2563,26 +2623,26 @@ entities:
77: -3,4
78: -4,4
79: -5,4
- 1035: 22,8
- 1036: 20,8
+ 996: 22,8
+ 997: 20,8
- node:
color: '#EFD57C8F'
id: HalfTileOverlayGreyscale
decals:
- 2673: -22,-30
- 2674: -21,-30
- 2675: -20,-30
- 2676: -19,-30
- 2686: -23,-23
- 2687: -22,-23
- 2688: -21,-23
- 2689: -20,-23
- 2690: -19,-23
- 2691: -18,-23
- 2692: -17,-23
- 2693: -16,-23
- 2710: -20,-26
- 2711: -19,-26
+ 2634: -22,-30
+ 2635: -21,-30
+ 2636: -20,-30
+ 2637: -19,-30
+ 2647: -23,-23
+ 2648: -22,-23
+ 2649: -21,-23
+ 2650: -20,-23
+ 2651: -19,-23
+ 2652: -18,-23
+ 2653: -17,-23
+ 2654: -16,-23
+ 2671: -20,-26
+ 2672: -19,-26
- node:
color: '#334E6DC8'
id: HalfTileOverlayGreyscale180
@@ -2600,54 +2660,54 @@ entities:
color: '#52B4E92E'
id: HalfTileOverlayGreyscale180
decals:
- 1255: -32,-48
- 1256: -28,-48
+ 1216: -32,-48
+ 1217: -28,-48
- node:
color: '#52B4E996'
id: HalfTileOverlayGreyscale180
decals:
- 1125: -10,-27
- 1126: -11,-27
- 1138: -22,-37
- 1139: -21,-37
- 1140: -20,-37
- 1147: -20,-51
- 1148: -21,-51
- 1149: -22,-51
- 1180: -29,-32
- 1181: -27,-32
- 1220: -26,-53
- 1221: -25,-53
- 1232: -34,-53
- 1233: -35,-53
- 1277: -21,-58
- 1280: -17,-56
- 1315: -17,-39
- 1316: -16,-39
- 1322: -15,-44
- 1323: -16,-44
- 1324: -17,-44
- 1339: -28,-32
- 1383: -36,-36
- 1384: -35,-36
- 2642: -5,-26
- 2665: -7,-27
- 2666: -8,-27
- 2667: -9,-27
- 2815: -28,-38
- 3207: -32,-41
- 3208: -30,-41
- 3209: -27,-41
- 3210: -25,-41
+ 1086: -10,-27
+ 1087: -11,-27
+ 1099: -22,-37
+ 1100: -21,-37
+ 1101: -20,-37
+ 1108: -20,-51
+ 1109: -21,-51
+ 1110: -22,-51
+ 1141: -29,-32
+ 1142: -27,-32
+ 1181: -26,-53
+ 1182: -25,-53
+ 1193: -34,-53
+ 1194: -35,-53
+ 1238: -21,-58
+ 1241: -17,-56
+ 1276: -17,-39
+ 1277: -16,-39
+ 1283: -15,-44
+ 1284: -16,-44
+ 1285: -17,-44
+ 1300: -28,-32
+ 1344: -36,-36
+ 1345: -35,-36
+ 2603: -5,-26
+ 2626: -7,-27
+ 2627: -8,-27
+ 2628: -9,-27
+ 2776: -28,-38
+ 3165: -32,-41
+ 3166: -30,-41
+ 3167: -27,-41
+ 3168: -25,-41
- node:
color: '#9FED5896'
id: HalfTileOverlayGreyscale180
decals:
- 1419: -43,-48
- 1420: -51,-57
- 1421: -51,-50
- 1422: -52,-50
- 1423: -54,-50
+ 1380: -43,-48
+ 1381: -51,-57
+ 1382: -51,-50
+ 1383: -52,-50
+ 1384: -54,-50
- node:
color: '#A4610696'
id: HalfTileOverlayGreyscale180
@@ -2679,51 +2739,51 @@ entities:
color: '#D381C996'
id: HalfTileOverlayGreyscale180
decals:
- 1579: 4,-27
- 1580: 5,-27
- 1581: 6,-27
- 1582: 7,-27
- 1583: 7,-35
- 1584: 8,-35
- 1585: 9,-35
- 1586: 10,-35
- 1587: 11,-35
- 1610: 10,-45
- 1611: 9,-45
- 1612: 8,-45
- 1613: 7,-45
- 1614: 6,-45
- 1615: 5,-45
- 1616: 4,-45
- 1643: 18,-42
- 1644: 19,-42
- 1645: 20,-42
- 1646: 21,-42
- 1647: 22,-42
- 1648: 23,-42
- 1649: 24,-42
- 1650: 25,-42
- 1651: 26,-42
- 1652: 27,-42
- 1653: 28,-42
- 1784: 23,-37
- 1785: 24,-37
- 2016: 39,-42
- 2017: 38,-42
- 2018: 37,-42
- 2019: 36,-42
- 2020: 35,-42
- 2021: 34,-42
- 2819: -1,-26
+ 1540: 4,-27
+ 1541: 5,-27
+ 1542: 6,-27
+ 1543: 7,-27
+ 1544: 7,-35
+ 1545: 8,-35
+ 1546: 9,-35
+ 1547: 10,-35
+ 1548: 11,-35
+ 1571: 10,-45
+ 1572: 9,-45
+ 1573: 8,-45
+ 1574: 7,-45
+ 1575: 6,-45
+ 1576: 5,-45
+ 1577: 4,-45
+ 1604: 18,-42
+ 1605: 19,-42
+ 1606: 20,-42
+ 1607: 21,-42
+ 1608: 22,-42
+ 1609: 23,-42
+ 1610: 24,-42
+ 1611: 25,-42
+ 1612: 26,-42
+ 1613: 27,-42
+ 1614: 28,-42
+ 1745: 23,-37
+ 1746: 24,-37
+ 1977: 39,-42
+ 1978: 38,-42
+ 1979: 37,-42
+ 1980: 36,-42
+ 1981: 35,-42
+ 1982: 34,-42
+ 2780: -1,-26
- node:
color: '#D4D4D428'
id: HalfTileOverlayGreyscale180
decals:
- 2138: -3,-12
- 2188: -46,-5
- 2437: -52,-5
- 2438: -51,-5
- 2439: -50,-5
+ 2099: -3,-12
+ 2149: -46,-5
+ 2398: -52,-5
+ 2399: -51,-5
+ 2400: -50,-5
- node:
color: '#DE3A3A96'
id: HalfTileOverlayGreyscale180
@@ -2748,31 +2808,31 @@ entities:
843: 1,50
844: 0,50
845: -1,50
- 1818: 1,-74
+ 1779: 1,-74
- node:
color: '#EFB34196'
id: HalfTileOverlayGreyscale180
decals:
- 1033: 22,6
- 1034: 20,6
+ 994: 22,6
+ 995: 20,6
- node:
color: '#EFD57C47'
id: HalfTileOverlayGreyscale180
decals:
- 2720: -18,-21
- 2721: -17,-21
- 2722: -19,-21
+ 2681: -18,-21
+ 2682: -17,-21
+ 2683: -19,-21
- node:
color: '#EFD57C8F'
id: HalfTileOverlayGreyscale180
decals:
- 2678: -21,-28
- 2679: -20,-28
- 2680: -22,-28
- 2681: -23,-28
- 2701: -18,-27
- 2702: -17,-27
- 2703: -16,-27
+ 2639: -21,-28
+ 2640: -20,-28
+ 2641: -22,-28
+ 2642: -23,-28
+ 2662: -18,-27
+ 2663: -17,-27
+ 2664: -16,-27
- node:
color: '#334E6DC8'
id: HalfTileOverlayGreyscale270
@@ -2784,54 +2844,54 @@ entities:
color: '#52B4E92E'
id: HalfTileOverlayGreyscale270
decals:
- 1251: -29,-53
- 1252: -29,-52
+ 1212: -29,-53
+ 1213: -29,-52
- node:
color: '#52B4E996'
id: HalfTileOverlayGreyscale270
decals:
- 1133: -22,-35
- 1134: -22,-34
- 1135: -22,-33
- 1171: -32,-34
- 1184: -26,-35
- 1185: -26,-33
- 1202: -22,-47
- 1203: -22,-46
- 1213: -23,-41
- 1224: -27,-52
- 1227: -36,-52
- 1275: -22,-57
- 1302: -18,-35
- 1303: -18,-36
- 1304: -18,-37
- 1305: -18,-38
- 1334: -18,-43
- 1341: -26,-34
- 1378: -37,-36
- 1379: -37,-35
- 1380: -37,-34
- 1381: -37,-33
- 1382: -37,-32
- 2640: -10,-23
+ 1094: -22,-35
+ 1095: -22,-34
+ 1096: -22,-33
+ 1132: -32,-34
+ 1145: -26,-35
+ 1146: -26,-33
+ 1163: -22,-47
+ 1164: -22,-46
+ 1174: -23,-41
+ 1185: -27,-52
+ 1188: -36,-52
+ 1236: -22,-57
+ 1263: -18,-35
+ 1264: -18,-36
+ 1265: -18,-37
+ 1266: -18,-38
+ 1295: -18,-43
+ 1302: -26,-34
+ 1339: -37,-36
+ 1340: -37,-35
+ 1341: -37,-34
+ 1342: -37,-33
+ 1343: -37,-32
+ 2601: -10,-23
- node:
color: '#9FED582B'
id: HalfTileOverlayGreyscale270
decals:
- 1264: -37,-47
+ 1225: -37,-47
- node:
color: '#9FED5896'
id: HalfTileOverlayGreyscale270
decals:
82: -8,3
- 1430: -44,-47
- 1431: -55,-49
- 1432: -55,-48
- 1433: -55,-47
- 1434: -52,-56
- 1435: -52,-55
- 1436: -52,-54
- 1437: -52,-53
+ 1391: -44,-47
+ 1392: -55,-49
+ 1393: -55,-48
+ 1394: -55,-47
+ 1395: -52,-56
+ 1396: -52,-55
+ 1397: -52,-54
+ 1398: -52,-53
- node:
color: '#A4610696'
id: HalfTileOverlayGreyscale270
@@ -2857,32 +2917,32 @@ entities:
381: -25,16
382: -25,17
383: -25,18
- 1855: -44,26
- 1856: -44,27
- 1857: -44,28
+ 1816: -44,26
+ 1817: -44,27
+ 1818: -44,28
- node:
color: '#D381C996'
id: HalfTileOverlayGreyscale270
decals:
- 1597: 12,-39
- 1598: 12,-38
- 1599: 12,-37
- 1600: 12,-36
- 1618: 11,-46
- 1638: 29,-43
- 1753: 31,-44
- 1754: 31,-43
- 1755: 31,-42
- 2817: 3,-23
+ 1558: 12,-39
+ 1559: 12,-38
+ 1560: 12,-37
+ 1561: 12,-36
+ 1579: 11,-46
+ 1599: 29,-43
+ 1714: 31,-44
+ 1715: 31,-43
+ 1716: 31,-42
+ 2778: 3,-23
- node:
color: '#D4D4D428'
id: HalfTileOverlayGreyscale270
decals:
- 2191: -46,1
- 2192: -46,0
- 2193: -46,-1
- 2194: -46,-2
- 2195: -46,-3
+ 2152: -46,1
+ 2153: -46,0
+ 2154: -46,-1
+ 2155: -46,-2
+ 2156: -46,-3
- node:
color: '#DE3A3A96'
id: HalfTileOverlayGreyscale270
@@ -2902,28 +2962,28 @@ entities:
852: 4,38
853: 4,40
854: 4,41
- 1824: 0,-73
- 1825: 0,-72
- 1826: 0,-71
- 1827: 0,-69
+ 1785: 0,-73
+ 1786: 0,-72
+ 1787: 0,-71
+ 1788: 0,-69
- node:
color: '#EFB34196'
id: HalfTileOverlayGreyscale270
decals:
- 1032: 19,7
+ 993: 19,7
- node:
color: '#EFD57C88'
id: HalfTileOverlayGreyscale270
decals:
- 2782: -13,-26
+ 2743: -13,-26
- node:
color: '#EFD57C8F'
id: HalfTileOverlayGreyscale270
decals:
- 2683: -24,-27
- 2684: -24,-26
- 2685: -24,-25
- 2705: -24,-24
+ 2644: -24,-27
+ 2645: -24,-26
+ 2646: -24,-25
+ 2666: -24,-24
- node:
color: '#334E6DC8'
id: HalfTileOverlayGreyscale90
@@ -2935,47 +2995,47 @@ entities:
color: '#52B4E92E'
id: HalfTileOverlayGreyscale90
decals:
- 1249: -31,-52
- 1250: -31,-53
- 1261: -24,-47
- 1262: -24,-46
+ 1210: -31,-52
+ 1211: -31,-53
+ 1222: -24,-47
+ 1223: -24,-46
- node:
color: '#52B4E996'
id: HalfTileOverlayGreyscale90
decals:
- 1130: -20,-35
- 1170: -24,-34
- 1186: -30,-35
- 1187: -30,-33
- 1206: -20,-49
- 1209: -20,-43
- 1210: -20,-42
- 1225: -24,-52
- 1226: -33,-52
- 1307: -15,-38
- 1308: -15,-37
- 1309: -15,-36
- 1310: -15,-35
- 1335: -14,-43
- 1342: -30,-34
- 1375: -34,-34
- 1376: -34,-32
- 1377: -34,-36
- 2639: -9,-23
+ 1091: -20,-35
+ 1131: -24,-34
+ 1147: -30,-35
+ 1148: -30,-33
+ 1167: -20,-49
+ 1170: -20,-43
+ 1171: -20,-42
+ 1186: -24,-52
+ 1187: -33,-52
+ 1268: -15,-38
+ 1269: -15,-37
+ 1270: -15,-36
+ 1271: -15,-35
+ 1296: -14,-43
+ 1303: -30,-34
+ 1336: -34,-34
+ 1337: -34,-32
+ 1338: -34,-36
+ 2600: -9,-23
- node:
color: '#9FED5896'
id: HalfTileOverlayGreyscale90
decals:
- 1438: -50,-56
- 1439: -50,-55
- 1440: -50,-54
- 1441: -50,-53
- 1442: -50,-49
- 1443: -50,-48
- 1444: -50,-47
- 1445: -42,-47
- 1460: -53,-55
- 1461: -53,-53
+ 1399: -50,-56
+ 1400: -50,-55
+ 1401: -50,-54
+ 1402: -50,-53
+ 1403: -50,-49
+ 1404: -50,-48
+ 1405: -50,-47
+ 1406: -42,-47
+ 1421: -53,-55
+ 1422: -53,-53
- node:
color: '#A4610696'
id: HalfTileOverlayGreyscale90
@@ -3014,39 +3074,39 @@ entities:
393: -18,15
394: -18,13
395: -18,14
- 1858: -40,26
- 1859: -40,27
- 1860: -40,28
+ 1819: -40,26
+ 1820: -40,27
+ 1821: -40,28
- node:
color: '#D381C996'
id: HalfTileOverlayGreyscale90
decals:
- 1569: -2,-31
- 1594: 10,-38
- 1595: 10,-39
- 1596: 6,-36
- 1617: 3,-46
- 1642: 17,-43
- 1654: 8,-43
- 1655: 8,-42
- 1656: 8,-41
- 1657: 8,-40
- 1658: 8,-39
- 1757: -1,-52
- 1758: -1,-50
- 1759: -1,-51
- 1786: 25,-36
- 2816: 4,-23
- 2842: 8,-26
- 2843: 8,-25
+ 1530: -2,-31
+ 1555: 10,-38
+ 1556: 10,-39
+ 1557: 6,-36
+ 1578: 3,-46
+ 1603: 17,-43
+ 1615: 8,-43
+ 1616: 8,-42
+ 1617: 8,-41
+ 1618: 8,-40
+ 1619: 8,-39
+ 1718: -1,-52
+ 1719: -1,-50
+ 1720: -1,-51
+ 1747: 25,-36
+ 2777: 4,-23
+ 2803: 8,-26
+ 2804: 8,-25
- node:
color: '#D4D4D428'
id: HalfTileOverlayGreyscale90
decals:
- 2196: -45,-4
- 2197: -45,-3
- 2198: -45,1
- 2199: -45,2
+ 2157: -45,-4
+ 2158: -45,-3
+ 2159: -45,1
+ 2160: -45,2
- node:
color: '#DE3A3A96'
id: HalfTileOverlayGreyscale90
@@ -3070,36 +3130,36 @@ entities:
857: 14,38
858: 14,37
859: 14,36
- 1820: 3,-72
- 1821: 3,-71
- 1822: 3,-70
- 1823: 3,-69
+ 1781: 3,-72
+ 1782: 3,-71
+ 1783: 3,-70
+ 1784: 3,-69
- node:
color: '#EFB34196'
id: HalfTileOverlayGreyscale90
decals:
- 1031: 23,7
+ 992: 23,7
- node:
color: '#EFD57C8F'
id: HalfTileOverlayGreyscale90
decals:
- 2695: -15,-24
- 2696: -15,-25
- 2697: -15,-26
+ 2656: -15,-24
+ 2657: -15,-25
+ 2658: -15,-26
- node:
color: '#FFFF007F'
id: HalfTileOverlayGreyscale90
decals:
- 3367: 54,-17
- 3368: 54,-16
- 3369: 54,-15
+ 3266: 54,-17
+ 3267: 54,-16
+ 3268: 54,-15
- node:
angle: -3.141592653589793 rad
color: '#FFFFFFFF'
id: LoadingArea
decals:
19: -18,-7
- 1486: -66,-41
+ 1447: -66,-41
- node:
angle: -1.5707963267948966 rad
color: '#FFFFFFFF'
@@ -3111,112 +3171,112 @@ entities:
id: LoadingArea
decals:
18: -13,-7
- 1507: -48,-32
+ 1468: -48,-32
- node:
angle: 1.5707963267948966 rad
color: '#FFFFFFFF'
id: LoadingArea
decals:
328: -42,19
- 1681: 1,-40
- 1682: 1,-42
+ 1642: 1,-40
+ 1643: 1,-42
- node:
color: '#52B4E996'
id: LoadingAreaGreyscale
decals:
- 3199: -31,-42
- 3200: -26,-42
+ 3157: -31,-42
+ 3158: -26,-42
- node:
color: '#FFFFFFFF'
id: LoadingAreaGreyscale
decals:
- 3197: -26,-45
- 3198: -31,-45
+ 3155: -26,-45
+ 3156: -31,-45
- node:
color: '#FFFFFFFF'
id: MiniTileSteelCornerNw
decals:
- 3090: 23,-25
+ 3051: 23,-25
- node:
color: '#FFFFFFFF'
id: MiniTileSteelCornerSe
decals:
- 3091: 26,-16
+ 3052: 26,-16
- node:
color: '#FFFFFFFF'
id: MiniTileSteelLineE
decals:
- 3063: 22,-21
- 3064: 23,-18
+ 3024: 22,-21
+ 3025: 23,-18
- node:
color: '#FFFFFFFF'
id: MiniTileSteelLineN
decals:
- 3070: 31,-25
- 3071: 30,-25
- 3072: 28,-25
- 3073: 26,-25
- 3074: 25,-25
- 3075: 24,-25
+ 3031: 31,-25
+ 3032: 30,-25
+ 3033: 28,-25
+ 3034: 26,-25
+ 3035: 25,-25
+ 3036: 24,-25
- node:
color: '#FFFFFFFF'
id: MiniTileSteelLineS
decals:
- 3065: 25,-16
- 3069: 21,-23
- 3100: 34,-21
+ 3026: 25,-16
+ 3030: 21,-23
+ 3061: 34,-21
- node:
color: '#FFFFFFFF'
id: MiniTileSteelLineW
decals:
- 3101: 32,-19
+ 3062: 32,-19
- node:
color: '#D4D4D412'
id: PavementCheckerAOverlay
decals:
- 3044: 29,-20
- 3045: 30,-19
- 3046: 28,-19
- 3047: 29,-17
- 3048: 27,-16
- 3110: 34,-23
+ 3005: 29,-20
+ 3006: 30,-19
+ 3007: 28,-19
+ 3008: 29,-17
+ 3009: 27,-16
+ 3071: 34,-23
- node:
color: '#D4D4D428'
id: PavementCheckerAOverlay
decals:
- 3021: 29,-22
- 3022: 29,-23
- 3023: 25,-24
- 3024: 23,-22
- 3025: 24,-19
- 3026: 24,-18
- 3027: 27,-17
- 3028: 28,-17
- 3029: 28,-18
- 3030: 18,-24
+ 2982: 29,-22
+ 2983: 29,-23
+ 2984: 25,-24
+ 2985: 23,-22
+ 2986: 24,-19
+ 2987: 24,-18
+ 2988: 27,-17
+ 2989: 28,-17
+ 2990: 28,-18
+ 2991: 18,-24
- node:
color: '#D4D4D412'
id: PavementCheckerBOverlay
decals:
- 3111: 33,-24
- 3112: 33,-23
+ 3072: 33,-24
+ 3073: 33,-23
- node:
color: '#D4D4D428'
id: PavementCheckerBOverlay
decals:
- 3031: 28,-22
- 3032: 29,-21
- 3033: 29,-24
- 3034: 27,-24
- 3035: 23,-24
- 3036: 23,-21
- 3037: 19,-24
- 3038: 18,-23
- 3039: 29,-19
- 3040: 25,-17
- 3041: 23,-17
- 3042: 22,-19
- 3043: 30,-17
+ 2992: 28,-22
+ 2993: 29,-21
+ 2994: 29,-24
+ 2995: 27,-24
+ 2996: 23,-24
+ 2997: 23,-21
+ 2998: 19,-24
+ 2999: 18,-23
+ 3000: 29,-19
+ 3001: 25,-17
+ 3002: 23,-17
+ 3003: 22,-19
+ 3004: 30,-17
- node:
color: '#334E6DC8'
id: QuarterTileOverlayGreyscale
@@ -3230,50 +3290,50 @@ entities:
86: -18,-11
87: -18,-12
88: -18,-13
- 1983: 102,1
- 1984: 103,1
- 1985: 103,2
- 1989: 100,1
- 1990: 99,1
- 1991: 98,1
- 1992: 96,1
- 1993: 95,1
- 1994: 94,1
- 1995: 93,1
- 1996: 92,1
- 1997: 91,1
+ 1944: 102,1
+ 1945: 103,1
+ 1946: 103,2
+ 1950: 100,1
+ 1951: 99,1
+ 1952: 98,1
+ 1953: 96,1
+ 1954: 95,1
+ 1955: 94,1
+ 1956: 93,1
+ 1957: 92,1
+ 1958: 91,1
- node:
color: '#52B4E92E'
id: QuarterTileOverlayGreyscale
decals:
- 1254: -33,-46
+ 1215: -33,-46
- node:
color: '#52B4E947'
id: QuarterTileOverlayGreyscale
decals:
- 1916: -57,4
- 1917: -57,3
- 1918: -57,2
- 1919: -57,1
- 1920: -57,0
- 1921: -57,-1
- 1922: -57,-2
- 1923: -57,-3
- 1924: -57,-4
- 1925: -57,-5
- 1926: -57,-6
- 1927: -57,-7
- 1928: -57,5
- 1938: -69,-8
- 1939: -68,-8
- 1940: -67,-8
- 1941: -66,-8
- 1942: -62,-8
- 1943: -61,-8
- 1944: -60,-8
- 1945: -59,-8
- 1946: -58,-8
- 1947: -57,-8
+ 1877: -57,4
+ 1878: -57,3
+ 1879: -57,2
+ 1880: -57,1
+ 1881: -57,0
+ 1882: -57,-1
+ 1883: -57,-2
+ 1884: -57,-3
+ 1885: -57,-4
+ 1886: -57,-5
+ 1887: -57,-6
+ 1888: -57,-7
+ 1889: -57,5
+ 1899: -69,-8
+ 1900: -68,-8
+ 1901: -67,-8
+ 1902: -66,-8
+ 1903: -62,-8
+ 1904: -61,-8
+ 1905: -60,-8
+ 1906: -59,-8
+ 1907: -58,-8
+ 1908: -57,-8
- node:
color: '#52B4E996'
id: QuarterTileOverlayGreyscale
@@ -3282,30 +3342,30 @@ entities:
526: -18,25
527: -16,25
528: -20,25
- 1136: -22,-36
- 1204: -22,-48
- 1214: -23,-42
- 1267: -18,-58
- 1268: -18,-59
- 1269: -18,-60
- 1270: -18,-61
- 1343: -26,-36
- 1385: -34,-32
- 2643: -4,-25
- 2657: -4,-27
- 2658: -4,-28
- 2659: -10,-24
- 2785: -13,-25
- 2876: -4,-29
- 2877: -4,-30
- 2878: -4,-31
- 2879: -4,-32
- 2880: -4,-33
+ 1097: -22,-36
+ 1165: -22,-48
+ 1175: -23,-42
+ 1228: -18,-58
+ 1229: -18,-59
+ 1230: -18,-60
+ 1231: -18,-61
+ 1304: -26,-36
+ 1346: -34,-32
+ 2604: -4,-25
+ 2618: -4,-27
+ 2619: -4,-28
+ 2620: -10,-24
+ 2746: -13,-25
+ 2837: -4,-29
+ 2838: -4,-30
+ 2839: -4,-31
+ 2840: -4,-32
+ 2841: -4,-33
- node:
color: '#9FED582B'
id: QuarterTileOverlayGreyscale
decals:
- 1266: -37,-48
+ 1227: -37,-48
- node:
color: '#9FED5896'
id: QuarterTileOverlayGreyscale
@@ -3314,7 +3374,7 @@ entities:
895: -29,27
896: -29,26
897: -29,25
- 1096: -29,28
+ 1057: -29,28
- node:
color: '#A4610696'
id: QuarterTileOverlayGreyscale
@@ -3328,165 +3388,165 @@ entities:
583: -29,23
584: -28,23
585: -27,23
- 1862: -40,28
+ 1823: -40,28
- node:
color: '#D381C996'
id: QuarterTileOverlayGreyscale
decals:
- 1084: 38,30
- 1601: 12,-40
- 1609: 11,-47
- 1637: 29,-44
- 2837: 0,-25
- 3121: 1,-35
- 3122: 1,-36
- 3123: 1,-37
- 3124: 1,-38
- 3138: 0,-33
- 3139: 0,-32
+ 1045: 38,30
+ 1562: 12,-40
+ 1570: 11,-47
+ 1598: 29,-44
+ 2798: 0,-25
+ 3079: 1,-35
+ 3080: 1,-36
+ 3081: 1,-37
+ 3082: 1,-38
+ 3096: 0,-33
+ 3097: 0,-32
- node:
color: '#D4D4D428'
id: QuarterTileOverlayGreyscale
decals:
- 2043: 1,-19
- 2046: 2,-19
- 2047: 3,-19
- 2048: 4,-19
- 2049: 5,-19
- 2050: 6,-19
- 2051: 7,-19
- 2052: 8,-19
- 2053: 10,-19
- 2054: 11,-19
- 2055: 12,-19
- 2056: 13,-19
- 2057: 14,-19
- 2058: 15,-19
- 2059: 15,-18
- 2060: 15,-17
- 2061: 15,-16
- 2062: 15,-15
- 2063: 15,-14
- 2064: 15,-13
- 2065: 15,-12
- 2066: 15,-11
- 2067: -19,-8
- 2068: -18,-8
- 2069: -17,-8
- 2070: -16,-8
- 2071: -14,-8
- 2072: -15,-8
- 2073: -13,-8
- 2074: -12,-8
- 2075: -11,-8
- 2076: -10,-8
- 2077: -9,-8
- 2078: -8,-8
- 2079: -7,-8
- 2099: 0,-8
- 2189: -46,-4
- 2202: -44,0
- 2203: -43,0
- 2204: -42,0
- 2205: -41,0
- 2206: -40,0
- 2207: -39,0
- 2208: -38,0
- 2209: -37,0
- 2210: -36,0
- 2211: -35,0
- 2212: -34,0
- 2213: -33,0
- 2214: -32,0
- 2215: -31,0
- 2216: -30,0
- 2217: -29,0
- 2218: -25,0
- 2219: -24,0
- 2220: -23,0
- 2221: -23,1
- 2222: -23,2
- 2223: -23,7
- 2224: -23,8
- 2225: -23,9
- 2226: -23,10
- 2227: -22,10
- 2228: -21,10
- 2229: -20,10
- 2230: -19,10
- 2231: -18,10
- 2232: -17,10
- 2233: -16,10
- 2234: -15,10
- 2235: -14,10
- 2236: -13,10
- 2237: -6,11
- 2238: -7,11
- 2239: -8,11
- 2240: -8,10
- 2361: 15,-8
- 2362: 15,-10
- 2440: -4,-38
- 2441: -4,-39
- 2442: -4,-40
- 2443: -4,-41
- 2444: -4,-42
- 2445: -4,-43
- 2446: -4,-44
- 2447: -4,-45
- 2448: -4,-46
- 2449: -4,-47
- 2450: -4,-48
- 2451: -4,-49
- 2452: -4,-50
- 2453: -4,-51
- 2454: -4,-52
- 2455: -4,-53
- 2456: -4,-54
- 2457: -4,-55
- 2458: -4,-56
- 2459: -4,-57
- 2460: -4,-58
- 2461: -4,-59
- 3155: 10,12
- 3156: 10,13
- 3157: 10,14
- 3158: 10,15
- 3159: 11,15
- 3160: 12,15
- 3161: 13,15
- 3162: 14,15
- 3163: 17,18
- 3164: 18,18
- 3165: 19,18
- 3166: 20,18
- 3167: 22,18
- 3168: 23,18
- 3169: 24,18
- 3170: 25,18
- 3171: 26,18
+ 2004: 1,-19
+ 2007: 2,-19
+ 2008: 3,-19
+ 2009: 4,-19
+ 2010: 5,-19
+ 2011: 6,-19
+ 2012: 7,-19
+ 2013: 8,-19
+ 2014: 10,-19
+ 2015: 11,-19
+ 2016: 12,-19
+ 2017: 13,-19
+ 2018: 14,-19
+ 2019: 15,-19
+ 2020: 15,-18
+ 2021: 15,-17
+ 2022: 15,-16
+ 2023: 15,-15
+ 2024: 15,-14
+ 2025: 15,-13
+ 2026: 15,-12
+ 2027: 15,-11
+ 2028: -19,-8
+ 2029: -18,-8
+ 2030: -17,-8
+ 2031: -16,-8
+ 2032: -14,-8
+ 2033: -15,-8
+ 2034: -13,-8
+ 2035: -12,-8
+ 2036: -11,-8
+ 2037: -10,-8
+ 2038: -9,-8
+ 2039: -8,-8
+ 2040: -7,-8
+ 2060: 0,-8
+ 2150: -46,-4
+ 2163: -44,0
+ 2164: -43,0
+ 2165: -42,0
+ 2166: -41,0
+ 2167: -40,0
+ 2168: -39,0
+ 2169: -38,0
+ 2170: -37,0
+ 2171: -36,0
+ 2172: -35,0
+ 2173: -34,0
+ 2174: -33,0
+ 2175: -32,0
+ 2176: -31,0
+ 2177: -30,0
+ 2178: -29,0
+ 2179: -25,0
+ 2180: -24,0
+ 2181: -23,0
+ 2182: -23,1
+ 2183: -23,2
+ 2184: -23,7
+ 2185: -23,8
+ 2186: -23,9
+ 2187: -23,10
+ 2188: -22,10
+ 2189: -21,10
+ 2190: -20,10
+ 2191: -19,10
+ 2192: -18,10
+ 2193: -17,10
+ 2194: -16,10
+ 2195: -15,10
+ 2196: -14,10
+ 2197: -13,10
+ 2198: -6,11
+ 2199: -7,11
+ 2200: -8,11
+ 2201: -8,10
+ 2322: 15,-8
+ 2323: 15,-10
+ 2401: -4,-38
+ 2402: -4,-39
+ 2403: -4,-40
+ 2404: -4,-41
+ 2405: -4,-42
+ 2406: -4,-43
+ 2407: -4,-44
+ 2408: -4,-45
+ 2409: -4,-46
+ 2410: -4,-47
+ 2411: -4,-48
+ 2412: -4,-49
+ 2413: -4,-50
+ 2414: -4,-51
+ 2415: -4,-52
+ 2416: -4,-53
+ 2417: -4,-54
+ 2418: -4,-55
+ 2419: -4,-56
+ 2420: -4,-57
+ 2421: -4,-58
+ 2422: -4,-59
+ 3113: 10,12
+ 3114: 10,13
+ 3115: 10,14
+ 3116: 10,15
+ 3117: 11,15
+ 3118: 12,15
+ 3119: 13,15
+ 3120: 14,15
+ 3121: 17,18
+ 3122: 18,18
+ 3123: 19,18
+ 3124: 20,18
+ 3125: 22,18
+ 3126: 23,18
+ 3127: 24,18
+ 3128: 25,18
+ 3129: 26,18
- node:
color: '#D4D4D496'
id: QuarterTileOverlayGreyscale
decals:
- 2965: -12,-62
- 2966: -11,-62
- 2967: -10,-62
- 2968: -9,-62
- 2969: -8,-62
- 2970: -7,-62
- 2971: -6,-62
- 2972: -5,-62
- 2973: -4,-62
- 2974: -3,-62
- 2975: -2,-62
- 2979: -6,-70
- 2980: -7,-70
- 2981: -6,-69
- 2982: -6,-68
- 2983: -6,-67
- 2984: -6,-66
- 2985: -6,-65
+ 2926: -12,-62
+ 2927: -11,-62
+ 2928: -10,-62
+ 2929: -9,-62
+ 2930: -8,-62
+ 2931: -7,-62
+ 2932: -6,-62
+ 2933: -5,-62
+ 2934: -4,-62
+ 2935: -3,-62
+ 2936: -2,-62
+ 2940: -6,-70
+ 2941: -7,-70
+ 2942: -6,-69
+ 2943: -6,-68
+ 2944: -6,-67
+ 2945: -6,-66
+ 2946: -6,-65
- node:
color: '#DE3A3A96'
id: QuarterTileOverlayGreyscale
@@ -3523,15 +3583,15 @@ entities:
color: '#EFE54193'
id: QuarterTileOverlayGreyscale
decals:
- 3396: 45,-9
- 3397: 45,-8
- 3398: 45,-7
- 3399: 45,-6
- 3400: 46,-6
- 3401: 47,-6
- 3402: 48,-6
- 3403: 49,-6
- 3404: 50,-6
+ 3280: 45,-9
+ 3281: 45,-8
+ 3282: 45,-7
+ 3283: 45,-6
+ 3284: 46,-6
+ 3285: 47,-6
+ 3286: 48,-6
+ 3287: 49,-6
+ 3288: 50,-6
- node:
color: '#334E6DC8'
id: QuarterTileOverlayGreyscale180
@@ -3547,28 +3607,28 @@ entities:
93: -16,-16
94: -16,-15
95: -16,-17
- 2009: 106,-1
- 2010: 105,-1
+ 1970: 106,-1
+ 1971: 105,-1
- node:
color: '#52B4E92E'
id: QuarterTileOverlayGreyscale180
decals:
- 1259: -29,-48
- 1260: -33,-48
+ 1220: -29,-48
+ 1221: -33,-48
- node:
color: '#52B4E996'
id: QuarterTileOverlayGreyscale180
decals:
- 1132: -20,-34
- 1208: -20,-48
- 1211: -20,-41
- 1282: -18,-56
- 1345: -30,-32
- 1387: -37,-36
- 2646: -9,-22
- 2647: -11,-22
- 2648: -12,-22
- 2663: -6,-26
+ 1093: -20,-34
+ 1169: -20,-48
+ 1172: -20,-41
+ 1243: -18,-56
+ 1306: -30,-32
+ 1348: -37,-36
+ 2607: -9,-22
+ 2608: -11,-22
+ 2609: -12,-22
+ 2624: -6,-26
- node:
color: '#A4610696'
id: QuarterTileOverlayGreyscale180
@@ -3585,150 +3645,150 @@ entities:
color: '#D381C996'
id: QuarterTileOverlayGreyscale180
decals:
- 1083: 37,31
- 1571: -2,-30
- 1593: 10,-37
- 1605: 6,-35
- 1606: 3,-45
- 1640: 17,-42
- 2820: 4,-22
- 2821: 2,-22
- 2827: 1,-22
- 2828: 0,-22
- 2829: -2,-22
- 2830: -1,-22
- 2831: -2,-23
- 2832: -2,-24
- 2835: -2,-26
- 3136: 1,-33
- 3137: 0,-33
+ 1044: 37,31
+ 1532: -2,-30
+ 1554: 10,-37
+ 1566: 6,-35
+ 1567: 3,-45
+ 1601: 17,-42
+ 2781: 4,-22
+ 2782: 2,-22
+ 2788: 1,-22
+ 2789: 0,-22
+ 2790: -2,-22
+ 2791: -1,-22
+ 2792: -2,-23
+ 2793: -2,-24
+ 2796: -2,-26
+ 3094: 1,-33
+ 3095: 0,-33
- node:
color: '#D4D4D428'
id: QuarterTileOverlayGreyscale180
decals:
- 1565: -2,-28
- 1566: -2,-29
- 1567: -2,-32
- 1568: -2,-33
- 2119: -4,-12
- 2120: -1,-12
- 2121: 0,-12
- 2122: 0,-11
- 2123: 0,-10
- 2124: 0,-9
- 2125: 1,-9
- 2126: 2,-9
- 2127: 3,-9
- 2128: 4,-9
- 2129: 5,-9
- 2130: 6,-9
- 2131: 7,-9
- 2132: 8,-9
- 2133: 9,-9
- 2134: 10,-9
- 2135: 11,-9
- 2136: 12,-9
- 2137: 13,-9
- 2200: -45,-2
- 2290: 23,2
- 2291: 22,2
- 2292: 21,2
- 2293: 20,2
- 2294: 19,2
- 2295: 18,2
- 2296: 17,2
- 2297: 17,1
- 2298: 17,0
- 2299: 17,-1
- 2300: 17,-2
- 2364: -21,-9
- 2365: -21,-7
- 2390: -21,-6
- 2391: -21,-5
- 2392: -21,-4
- 2393: -21,-3
- 2394: -21,-2
- 2395: -21,-1
- 2396: -21,0
- 2397: -21,1
- 2398: -21,2
- 2399: -21,3
- 2400: -21,4
- 2401: -21,5
- 2402: -21,6
- 2403: -21,8
- 2404: -21,7
- 2405: -20,8
- 2406: -19,8
- 2407: -18,8
- 2408: -17,8
- 2409: -16,8
- 2410: -15,8
- 2411: -14,8
- 2412: -13,8
- 2413: -12,8
- 2414: -11,8
- 2415: -10,8
- 2416: -9,8
- 2417: -7,8
- 2418: -8,8
- 2419: -6,8
- 2420: -5,8
- 2421: -4,8
- 2483: -61,-19
- 2484: -62,-19
- 2485: -61,-18
- 2486: -61,-16
- 2487: -61,-17
- 2488: -61,-15
- 2489: -61,-14
- 2490: -61,-13
- 2491: -61,-12
- 2492: -61,-11
- 2493: -61,-10
- 2494: -60,-10
- 2495: -59,-10
- 2496: -58,-10
- 2497: -57,-10
- 2498: -56,-10
- 2499: -55,-10
- 2500: -55,-8
- 2501: -55,-9
- 2502: -55,-7
- 2503: -55,-6
- 2504: -55,-5
- 3172: 28,13
- 3173: 29,13
- 3174: 27,13
- 3175: 26,13
- 3176: 25,12
- 3177: 25,13
- 3188: 13,12
- 3189: 13,13
- 3190: 14,13
+ 1526: -2,-28
+ 1527: -2,-29
+ 1528: -2,-32
+ 1529: -2,-33
+ 2080: -4,-12
+ 2081: -1,-12
+ 2082: 0,-12
+ 2083: 0,-11
+ 2084: 0,-10
+ 2085: 0,-9
+ 2086: 1,-9
+ 2087: 2,-9
+ 2088: 3,-9
+ 2089: 4,-9
+ 2090: 5,-9
+ 2091: 6,-9
+ 2092: 7,-9
+ 2093: 8,-9
+ 2094: 9,-9
+ 2095: 10,-9
+ 2096: 11,-9
+ 2097: 12,-9
+ 2098: 13,-9
+ 2161: -45,-2
+ 2251: 23,2
+ 2252: 22,2
+ 2253: 21,2
+ 2254: 20,2
+ 2255: 19,2
+ 2256: 18,2
+ 2257: 17,2
+ 2258: 17,1
+ 2259: 17,0
+ 2260: 17,-1
+ 2261: 17,-2
+ 2325: -21,-9
+ 2326: -21,-7
+ 2351: -21,-6
+ 2352: -21,-5
+ 2353: -21,-4
+ 2354: -21,-3
+ 2355: -21,-2
+ 2356: -21,-1
+ 2357: -21,0
+ 2358: -21,1
+ 2359: -21,2
+ 2360: -21,3
+ 2361: -21,4
+ 2362: -21,5
+ 2363: -21,6
+ 2364: -21,8
+ 2365: -21,7
+ 2366: -20,8
+ 2367: -19,8
+ 2368: -18,8
+ 2369: -17,8
+ 2370: -16,8
+ 2371: -15,8
+ 2372: -14,8
+ 2373: -13,8
+ 2374: -12,8
+ 2375: -11,8
+ 2376: -10,8
+ 2377: -9,8
+ 2378: -7,8
+ 2379: -8,8
+ 2380: -6,8
+ 2381: -5,8
+ 2382: -4,8
+ 2444: -61,-19
+ 2445: -62,-19
+ 2446: -61,-18
+ 2447: -61,-16
+ 2448: -61,-17
+ 2449: -61,-15
+ 2450: -61,-14
+ 2451: -61,-13
+ 2452: -61,-12
+ 2453: -61,-11
+ 2454: -61,-10
+ 2455: -60,-10
+ 2456: -59,-10
+ 2457: -58,-10
+ 2458: -57,-10
+ 2459: -56,-10
+ 2460: -55,-10
+ 2461: -55,-8
+ 2462: -55,-9
+ 2463: -55,-7
+ 2464: -55,-6
+ 2465: -55,-5
+ 3130: 28,13
+ 3131: 29,13
+ 3132: 27,13
+ 3133: 26,13
+ 3134: 25,12
+ 3135: 25,13
+ 3146: 13,12
+ 3147: 13,13
+ 3148: 14,13
- node:
color: '#D4D4D496'
id: QuarterTileOverlayGreyscale180
decals:
- 1852: -4,-60
- 1853: -3,-60
- 1854: -2,-60
- 1970: -62,6
- 1971: -61,6
- 1972: -60,6
- 1973: -59,6
- 1974: -58,6
- 1975: -66,6
- 1976: -67,6
- 1977: -68,6
- 1978: -69,6
- 2986: -8,-69
- 2987: -8,-68
- 2988: -8,-67
- 2989: -8,-66
- 2990: -8,-65
- 2991: -8,-64
- 2992: -7,-64
+ 1813: -4,-60
+ 1814: -3,-60
+ 1815: -2,-60
+ 1931: -62,6
+ 1932: -61,6
+ 1933: -60,6
+ 1934: -59,6
+ 1935: -58,6
+ 1936: -66,6
+ 1937: -67,6
+ 1938: -68,6
+ 1939: -69,6
+ 2947: -8,-69
+ 2948: -8,-68
+ 2949: -8,-67
+ 2950: -8,-66
+ 2951: -8,-65
+ 2952: -8,-64
+ 2953: -7,-64
- node:
color: '#DE3A3A96'
id: QuarterTileOverlayGreyscale180
@@ -3758,18 +3818,18 @@ entities:
890: -2,15
891: -2,13
892: -2,12
- 1819: 2,-73
+ 1780: 2,-73
- node:
color: '#EFD57C47'
id: QuarterTileOverlayGreyscale180
decals:
- 2725: -20,-21
- 2726: -21,-21
+ 2686: -20,-21
+ 2687: -21,-21
- node:
color: '#EFD57C8F'
id: QuarterTileOverlayGreyscale180
decals:
- 2700: -19,-27
+ 2661: -19,-27
- node:
color: '#334E6DC8'
id: QuarterTileOverlayGreyscale270
@@ -3779,76 +3839,76 @@ entities:
96: -18,-15
97: -18,-16
98: -18,-17
- 1998: 91,-1
- 1999: 92,-1
- 2000: 93,-1
- 2001: 94,-1
- 2002: 95,-1
- 2003: 96,-1
- 2004: 98,-1
- 2005: 99,-1
- 2006: 100,-1
- 2007: 102,-1
- 2008: 103,-1
+ 1959: 91,-1
+ 1960: 92,-1
+ 1961: 93,-1
+ 1962: 94,-1
+ 1963: 95,-1
+ 1964: 96,-1
+ 1965: 98,-1
+ 1966: 99,-1
+ 1967: 100,-1
+ 1968: 102,-1
+ 1969: 103,-1
- node:
color: '#52B4E92E'
id: QuarterTileOverlayGreyscale270
decals:
- 1257: -27,-48
- 1258: -31,-48
+ 1218: -27,-48
+ 1219: -31,-48
- node:
color: '#52B4E947'
id: QuarterTileOverlayGreyscale270
decals:
- 1929: -58,6
- 1930: -59,6
- 1931: -60,6
- 1932: -61,6
- 1933: -62,6
- 1934: -66,6
- 1935: -67,6
- 1936: -68,6
- 1937: -69,6
+ 1890: -58,6
+ 1891: -59,6
+ 1892: -60,6
+ 1893: -61,6
+ 1894: -62,6
+ 1895: -66,6
+ 1896: -67,6
+ 1897: -68,6
+ 1898: -69,6
- node:
color: '#52B4E996'
id: QuarterTileOverlayGreyscale270
decals:
- 1137: -22,-32
- 1205: -22,-45
- 1215: -23,-40
- 1278: -20,-58
- 1279: -22,-56
- 1281: -16,-56
- 1346: -26,-32
- 1388: -34,-36
- 2644: -4,-26
- 2645: -10,-22
- 2650: -8,-22
- 2651: -7,-22
- 2652: -6,-22
- 2653: -5,-22
- 2654: -4,-22
- 2655: -4,-24
- 2656: -4,-23
+ 1098: -22,-32
+ 1166: -22,-45
+ 1176: -23,-40
+ 1239: -20,-58
+ 1240: -22,-56
+ 1242: -16,-56
+ 1307: -26,-32
+ 1349: -34,-36
+ 2605: -4,-26
+ 2606: -10,-22
+ 2611: -8,-22
+ 2612: -7,-22
+ 2613: -6,-22
+ 2614: -5,-22
+ 2615: -4,-22
+ 2616: -4,-24
+ 2617: -4,-23
- node:
color: '#79150096'
id: QuarterTileOverlayGreyscale270
decals:
- 1849: -4,-60
- 1850: -3,-60
- 1851: -2,-60
- 3000: -7,-64
- 3001: -6,-64
- 3002: -6,-65
- 3003: -6,-66
- 3004: -6,-67
- 3005: -6,-68
- 3006: -6,-69
+ 1810: -4,-60
+ 1811: -3,-60
+ 1812: -2,-60
+ 2961: -7,-64
+ 2962: -6,-64
+ 2963: -6,-65
+ 2964: -6,-66
+ 2965: -6,-67
+ 2966: -6,-68
+ 2967: -6,-69
- node:
color: '#9FED582B'
id: QuarterTileOverlayGreyscale270
decals:
- 1265: -37,-46
+ 1226: -37,-46
- node:
color: '#A4610696'
id: QuarterTileOverlayGreyscale270
@@ -3875,165 +3935,165 @@ entities:
color: '#D381C996'
id: QuarterTileOverlayGreyscale270
decals:
- 1604: 12,-35
- 1607: 11,-45
- 1639: 29,-42
- 2822: 3,-22
- 2823: 5,-22
- 2824: 6,-22
- 2825: 7,-22
- 2840: 0,-26
- 3134: 4,-33
- 3135: 3,-33
- 3140: 0,-30
- 3141: 0,-29
+ 1565: 12,-35
+ 1568: 11,-45
+ 1600: 29,-42
+ 2783: 3,-22
+ 2784: 5,-22
+ 2785: 6,-22
+ 2786: 7,-22
+ 2801: 0,-26
+ 3092: 4,-33
+ 3093: 3,-33
+ 3098: 0,-30
+ 3099: 0,-29
- node:
color: '#D4D4D428'
id: QuarterTileOverlayGreyscale270
decals:
- 1081: 38,31
- 2100: -19,-9
- 2101: -18,-9
- 2102: -17,-9
- 2103: -16,-9
- 2104: -15,-9
- 2105: -14,-9
- 2106: -13,-9
- 2107: -12,-9
- 2108: -11,-9
- 2109: -10,-9
- 2110: -9,-9
- 2111: -8,-9
- 2112: -7,-9
- 2113: -6,-9
- 2114: -6,-10
- 2115: -6,-11
- 2116: -5,-12
- 2117: -6,-12
- 2118: -2,-12
- 2139: -22,-21
- 2140: -23,-21
- 2141: -23,-20
- 2142: -23,-19
- 2143: -23,-18
- 2144: -23,-17
- 2145: -23,-16
- 2146: -23,-15
- 2147: -23,-14
- 2148: -23,-13
- 2149: -23,-12
- 2150: -23,-11
- 2151: -23,-10
- 2152: -23,-9
- 2153: -23,-8
- 2154: -23,-7
- 2155: -23,-6
- 2156: -23,-5
- 2157: -23,-4
- 2158: -23,-3
- 2159: -23,-2
- 2160: -24,-2
- 2161: -25,-2
- 2162: -26,-2
- 2163: -27,-2
- 2164: -28,-2
- 2165: -30,-2
- 2166: -29,-2
- 2167: -31,-2
- 2168: -32,-2
- 2169: -33,-2
- 2170: -34,-2
- 2171: -35,-2
- 2172: -36,-2
- 2173: -37,-2
- 2174: -38,-2
- 2175: -39,-2
- 2176: -40,-2
- 2177: -41,-2
- 2178: -42,-2
- 2179: -43,-2
- 2180: -44,-2
- 2190: -46,2
- 2282: 33,2
- 2283: 32,2
- 2284: 31,2
- 2285: 30,2
- 2286: 29,2
- 2287: 28,2
- 2288: 27,2
- 2289: 26,2
- 2319: 18,-21
- 2320: 17,-21
- 2321: 16,-21
- 2322: 15,-21
- 2323: 14,-21
- 2324: 13,-21
- 2325: 12,-21
- 2326: 11,-21
- 2327: 10,-21
- 2328: -2,8
- 2329: -1,8
- 2330: 0,8
- 2331: 1,8
- 2332: 2,8
- 2333: 3,8
- 2334: 4,8
- 2335: 5,8
- 2336: 6,8
- 2337: 7,8
- 2338: 8,8
- 2339: 9,8
- 2340: 10,8
- 2341: 11,8
- 2342: 12,8
- 2343: 13,8
- 2344: 14,8
- 2345: 15,8
- 2346: 15,7
- 2347: 15,6
- 2348: 15,5
- 2349: 15,4
- 2350: 15,3
- 2351: 15,2
- 2352: 15,1
- 2353: 15,0
- 2354: 15,-1
- 2355: 15,-2
- 2356: 15,-4
- 2357: 15,-3
- 2358: 15,-5
- 2359: 15,-6
- 2360: 15,-7
- 2363: 15,-9
- 2909: -4,-37
- 2910: -4,-38
- 3178: 24,12
- 3179: 24,13
- 3180: 23,13
- 3181: 22,13
- 3182: 21,13
- 3183: 20,13
- 3184: 19,13
- 3185: 18,13
- 3186: 17,13
- 3187: 16,13
+ 1042: 38,31
+ 2061: -19,-9
+ 2062: -18,-9
+ 2063: -17,-9
+ 2064: -16,-9
+ 2065: -15,-9
+ 2066: -14,-9
+ 2067: -13,-9
+ 2068: -12,-9
+ 2069: -11,-9
+ 2070: -10,-9
+ 2071: -9,-9
+ 2072: -8,-9
+ 2073: -7,-9
+ 2074: -6,-9
+ 2075: -6,-10
+ 2076: -6,-11
+ 2077: -5,-12
+ 2078: -6,-12
+ 2079: -2,-12
+ 2100: -22,-21
+ 2101: -23,-21
+ 2102: -23,-20
+ 2103: -23,-19
+ 2104: -23,-18
+ 2105: -23,-17
+ 2106: -23,-16
+ 2107: -23,-15
+ 2108: -23,-14
+ 2109: -23,-13
+ 2110: -23,-12
+ 2111: -23,-11
+ 2112: -23,-10
+ 2113: -23,-9
+ 2114: -23,-8
+ 2115: -23,-7
+ 2116: -23,-6
+ 2117: -23,-5
+ 2118: -23,-4
+ 2119: -23,-3
+ 2120: -23,-2
+ 2121: -24,-2
+ 2122: -25,-2
+ 2123: -26,-2
+ 2124: -27,-2
+ 2125: -28,-2
+ 2126: -30,-2
+ 2127: -29,-2
+ 2128: -31,-2
+ 2129: -32,-2
+ 2130: -33,-2
+ 2131: -34,-2
+ 2132: -35,-2
+ 2133: -36,-2
+ 2134: -37,-2
+ 2135: -38,-2
+ 2136: -39,-2
+ 2137: -40,-2
+ 2138: -41,-2
+ 2139: -42,-2
+ 2140: -43,-2
+ 2141: -44,-2
+ 2151: -46,2
+ 2243: 33,2
+ 2244: 32,2
+ 2245: 31,2
+ 2246: 30,2
+ 2247: 29,2
+ 2248: 28,2
+ 2249: 27,2
+ 2250: 26,2
+ 2280: 18,-21
+ 2281: 17,-21
+ 2282: 16,-21
+ 2283: 15,-21
+ 2284: 14,-21
+ 2285: 13,-21
+ 2286: 12,-21
+ 2287: 11,-21
+ 2288: 10,-21
+ 2289: -2,8
+ 2290: -1,8
+ 2291: 0,8
+ 2292: 1,8
+ 2293: 2,8
+ 2294: 3,8
+ 2295: 4,8
+ 2296: 5,8
+ 2297: 6,8
+ 2298: 7,8
+ 2299: 8,8
+ 2300: 9,8
+ 2301: 10,8
+ 2302: 11,8
+ 2303: 12,8
+ 2304: 13,8
+ 2305: 14,8
+ 2306: 15,8
+ 2307: 15,7
+ 2308: 15,6
+ 2309: 15,5
+ 2310: 15,4
+ 2311: 15,3
+ 2312: 15,2
+ 2313: 15,1
+ 2314: 15,0
+ 2315: 15,-1
+ 2316: 15,-2
+ 2317: 15,-4
+ 2318: 15,-3
+ 2319: 15,-5
+ 2320: 15,-6
+ 2321: 15,-7
+ 2324: 15,-9
+ 2870: -4,-37
+ 2871: -4,-38
+ 3136: 24,12
+ 3137: 24,13
+ 3138: 23,13
+ 3139: 22,13
+ 3140: 21,13
+ 3141: 20,13
+ 3142: 19,13
+ 3143: 18,13
+ 3144: 17,13
+ 3145: 16,13
- node:
color: '#D4D4D496'
id: QuarterTileOverlayGreyscale270
decals:
- 1957: -57,-7
- 1958: -57,-6
- 1959: -57,-5
- 1960: -57,-4
- 1961: -57,-3
- 1962: -57,-2
- 1963: -57,-1
- 1964: -57,0
- 1965: -57,1
- 1966: -57,2
- 1967: -57,3
- 1968: -57,4
- 1969: -57,5
+ 1918: -57,-7
+ 1919: -57,-6
+ 1920: -57,-5
+ 1921: -57,-4
+ 1922: -57,-3
+ 1923: -57,-2
+ 1924: -57,-1
+ 1925: -57,0
+ 1926: -57,1
+ 1927: -57,2
+ 1928: -57,3
+ 1929: -57,4
+ 1930: -57,5
- node:
color: '#DE3A3A96'
id: QuarterTileOverlayGreyscale270
@@ -4113,30 +4173,30 @@ entities:
color: '#EFB34196'
id: QuarterTileOverlayGreyscale270
decals:
- 931: 47,-4
- 932: 46,-4
- 933: 45,-4
- 934: 45,-3
- 935: 45,-1
- 936: 45,0
- 937: 45,1
- 938: 45,2
- 939: 44,2
- 940: 43,2
- 941: 42,2
- 942: 41,2
- 943: 40,2
- 944: 39,2
- 945: 38,2
- 958: 37,2
- 959: 36,2
- 960: 35,2
+ 928: 47,-4
+ 929: 46,-4
+ 930: 45,-4
+ 931: 45,-3
+ 932: 45,-1
+ 933: 45,0
+ 934: 45,1
+ 935: 45,2
+ 936: 44,2
+ 937: 43,2
+ 938: 42,2
+ 939: 41,2
+ 940: 40,2
+ 941: 39,2
+ 942: 38,2
+ 955: 37,2
+ 956: 36,2
+ 957: 35,2
- node:
color: '#EFD57C47'
id: QuarterTileOverlayGreyscale270
decals:
- 2723: -16,-21
- 2724: -15,-21
+ 2684: -16,-21
+ 2685: -15,-21
- node:
color: '#334E6DC8'
id: QuarterTileOverlayGreyscale90
@@ -4144,52 +4204,52 @@ entities:
85: -16,-11
89: -16,-12
90: -16,-13
- 1986: 106,1
- 1987: 105,1
- 1988: 105,2
+ 1947: 106,1
+ 1948: 105,1
+ 1949: 105,2
- node:
color: '#52B4E92E'
id: QuarterTileOverlayGreyscale90
decals:
- 1253: -35,-46
- 1263: -24,-48
+ 1214: -35,-46
+ 1224: -24,-48
- node:
color: '#52B4E996'
id: QuarterTileOverlayGreyscale90
decals:
- 1131: -20,-36
- 1207: -20,-50
- 1212: -20,-44
- 1271: -16,-61
- 1272: -16,-60
- 1273: -16,-59
- 1274: -16,-58
- 1344: -30,-36
- 1386: -37,-32
- 2660: -9,-24
- 2661: -6,-25
+ 1092: -20,-36
+ 1168: -20,-50
+ 1173: -20,-44
+ 1232: -16,-61
+ 1233: -16,-60
+ 1234: -16,-59
+ 1235: -16,-58
+ 1305: -30,-36
+ 1347: -37,-32
+ 2621: -9,-24
+ 2622: -6,-25
- node:
color: '#79150096'
id: QuarterTileOverlayGreyscale90
decals:
- 2954: -2,-62
- 2955: -3,-62
- 2956: -4,-62
- 2957: -5,-62
- 2958: -6,-62
- 2959: -7,-62
- 2960: -8,-62
- 2961: -9,-62
- 2962: -10,-62
- 2963: -11,-62
- 2964: -12,-62
- 2993: -8,-70
- 2994: -8,-69
- 2995: -8,-68
- 2996: -7,-70
- 2997: -8,-67
- 2998: -8,-66
- 2999: -8,-65
+ 2915: -2,-62
+ 2916: -3,-62
+ 2917: -4,-62
+ 2918: -5,-62
+ 2919: -6,-62
+ 2920: -7,-62
+ 2921: -8,-62
+ 2922: -9,-62
+ 2923: -10,-62
+ 2924: -11,-62
+ 2925: -12,-62
+ 2954: -8,-70
+ 2955: -8,-69
+ 2956: -8,-68
+ 2957: -7,-70
+ 2958: -8,-67
+ 2959: -8,-66
+ 2960: -8,-65
- node:
color: '#A4610696'
id: QuarterTileOverlayGreyscale90
@@ -4199,7 +4259,7 @@ entities:
197: -25,5
360: -32,21
361: -32,22
- 1861: -44,28
+ 1822: -44,28
- node:
color: '#A4823196'
id: QuarterTileOverlayGreyscale90
@@ -4212,189 +4272,189 @@ entities:
color: '#D381C996'
id: QuarterTileOverlayGreyscale90
decals:
- 1570: -2,-32
- 1602: 10,-40
- 1603: 6,-37
- 1608: 3,-47
- 1641: 17,-44
- 2833: -2,-25
- 2834: -2,-27
- 2836: -2,-28
- 3125: 4,-37
- 3126: 4,-36
- 3127: 4,-35
- 3128: 3,-35
- 3129: 4,-29
- 3130: 4,-30
- 3131: 4,-31
- 3132: 4,-32
- 3133: 4,-33
+ 1531: -2,-32
+ 1563: 10,-40
+ 1564: 6,-37
+ 1569: 3,-47
+ 1602: 17,-44
+ 2794: -2,-25
+ 2795: -2,-27
+ 2797: -2,-28
+ 3083: 4,-37
+ 3084: 4,-36
+ 3085: 4,-35
+ 3086: 3,-35
+ 3087: 4,-29
+ 3088: 4,-30
+ 3089: 4,-31
+ 3090: 4,-32
+ 3091: 4,-33
- node:
color: '#D4D4D428'
id: QuarterTileOverlayGreyscale90
decals:
- 1082: 37,30
- 2044: -7,-19
- 2080: 13,-8
- 2081: 12,-8
- 2082: 11,-8
- 2083: 10,-8
- 2084: 9,-8
- 2085: 8,-8
- 2086: 7,-8
- 2087: 6,-8
- 2088: 5,-8
- 2089: 4,-8
- 2090: 3,-8
- 2091: 2,-8
- 2092: 1,-8
- 2098: -6,-8
- 2201: -45,0
- 2241: 0,11
- 2242: 1,11
- 2243: 2,11
- 2244: 2,10
- 2245: 3,10
- 2246: 4,10
- 2247: 5,10
- 2248: 6,10
- 2249: 7,10
- 2250: 8,10
- 2251: 10,10
- 2252: 9,10
- 2253: 11,10
- 2254: 12,10
- 2255: 13,10
- 2256: 14,10
- 2257: 15,10
- 2258: 16,10
- 2259: 17,10
- 2260: 17,9
- 2261: 17,8
- 2262: 17,7
- 2263: 17,6
- 2264: 17,5
- 2265: 17,4
- 2266: 18,4
- 2267: 19,4
- 2268: 20,4
- 2269: 22,4
- 2270: 21,4
- 2271: 23,4
- 2272: 24,4
- 2273: 25,4
- 2274: 26,4
- 2275: 27,4
- 2276: 28,4
- 2277: 29,4
- 2278: 30,4
- 2279: 31,4
- 2280: 32,4
- 2281: 33,4
- 2301: 17,-5
- 2302: 17,-6
- 2303: 17,-7
- 2304: 17,-8
- 2305: 17,-9
- 2306: 17,-10
- 2307: 17,-11
- 2308: 17,-12
- 2309: 17,-13
- 2310: 17,-14
- 2311: 17,-15
- 2312: 17,-16
- 2313: 18,-16
- 2314: 18,-17
- 2315: 18,-18
- 2316: 18,-19
- 2317: 18,-20
- 2318: 18,-21
- 2366: -21,-8
- 2367: -21,-10
- 2368: -21,-11
- 2369: -21,-12
- 2370: -21,-13
- 2371: -21,-14
- 2372: -21,-15
- 2373: -21,-16
- 2374: -21,-17
- 2375: -21,-19
- 2376: -20,-19
- 2377: -21,-18
- 2378: -19,-19
- 2379: -18,-19
- 2380: -17,-19
- 2381: -16,-19
- 2382: -15,-19
- 2383: -14,-19
- 2384: -13,-19
- 2385: -12,-19
- 2386: -11,-19
- 2387: -10,-19
- 2388: -9,-19
- 2389: -8,-19
- 2422: -9,10
- 2462: -2,-59
- 2463: -2,-58
- 2464: -2,-57
- 2465: -2,-56
- 2466: -2,-55
- 2467: -2,-54
- 2468: -2,-53
- 2469: -2,-52
- 2470: -2,-51
- 2471: -2,-50
- 2472: -2,-49
- 2473: -2,-48
- 2474: -2,-47
- 2475: -2,-46
- 2476: -2,-45
- 2477: -2,-44
- 2478: -2,-43
- 2479: -2,-42
- 2480: -2,-41
- 2481: -2,-40
- 2482: -2,-39
- 2505: -55,3
- 2506: -55,4
- 2507: -55,5
- 2508: -55,6
- 2509: -55,7
- 2510: -55,8
- 2511: -56,8
- 2512: -57,8
- 2513: -58,8
- 2514: -59,8
- 2515: -60,8
- 2516: -61,8
- 2517: -62,8
- 2518: -63,8
- 2519: -64,8
- 2520: -65,8
- 2521: -66,8
- 2522: -67,8
- 2523: -68,8
- 2524: -69,8
- 2525: -70,8
- 2526: -71,8
- 2527: -72,8
- 2528: -73,8
- 2529: -74,8
- 2530: -75,8
- 2531: -76,8
+ 1043: 37,30
+ 2005: -7,-19
+ 2041: 13,-8
+ 2042: 12,-8
+ 2043: 11,-8
+ 2044: 10,-8
+ 2045: 9,-8
+ 2046: 8,-8
+ 2047: 7,-8
+ 2048: 6,-8
+ 2049: 5,-8
+ 2050: 4,-8
+ 2051: 3,-8
+ 2052: 2,-8
+ 2053: 1,-8
+ 2059: -6,-8
+ 2162: -45,0
+ 2202: 0,11
+ 2203: 1,11
+ 2204: 2,11
+ 2205: 2,10
+ 2206: 3,10
+ 2207: 4,10
+ 2208: 5,10
+ 2209: 6,10
+ 2210: 7,10
+ 2211: 8,10
+ 2212: 10,10
+ 2213: 9,10
+ 2214: 11,10
+ 2215: 12,10
+ 2216: 13,10
+ 2217: 14,10
+ 2218: 15,10
+ 2219: 16,10
+ 2220: 17,10
+ 2221: 17,9
+ 2222: 17,8
+ 2223: 17,7
+ 2224: 17,6
+ 2225: 17,5
+ 2226: 17,4
+ 2227: 18,4
+ 2228: 19,4
+ 2229: 20,4
+ 2230: 22,4
+ 2231: 21,4
+ 2232: 23,4
+ 2233: 24,4
+ 2234: 25,4
+ 2235: 26,4
+ 2236: 27,4
+ 2237: 28,4
+ 2238: 29,4
+ 2239: 30,4
+ 2240: 31,4
+ 2241: 32,4
+ 2242: 33,4
+ 2262: 17,-5
+ 2263: 17,-6
+ 2264: 17,-7
+ 2265: 17,-8
+ 2266: 17,-9
+ 2267: 17,-10
+ 2268: 17,-11
+ 2269: 17,-12
+ 2270: 17,-13
+ 2271: 17,-14
+ 2272: 17,-15
+ 2273: 17,-16
+ 2274: 18,-16
+ 2275: 18,-17
+ 2276: 18,-18
+ 2277: 18,-19
+ 2278: 18,-20
+ 2279: 18,-21
+ 2327: -21,-8
+ 2328: -21,-10
+ 2329: -21,-11
+ 2330: -21,-12
+ 2331: -21,-13
+ 2332: -21,-14
+ 2333: -21,-15
+ 2334: -21,-16
+ 2335: -21,-17
+ 2336: -21,-19
+ 2337: -20,-19
+ 2338: -21,-18
+ 2339: -19,-19
+ 2340: -18,-19
+ 2341: -17,-19
+ 2342: -16,-19
+ 2343: -15,-19
+ 2344: -14,-19
+ 2345: -13,-19
+ 2346: -12,-19
+ 2347: -11,-19
+ 2348: -10,-19
+ 2349: -9,-19
+ 2350: -8,-19
+ 2383: -9,10
+ 2423: -2,-59
+ 2424: -2,-58
+ 2425: -2,-57
+ 2426: -2,-56
+ 2427: -2,-55
+ 2428: -2,-54
+ 2429: -2,-53
+ 2430: -2,-52
+ 2431: -2,-51
+ 2432: -2,-50
+ 2433: -2,-49
+ 2434: -2,-48
+ 2435: -2,-47
+ 2436: -2,-46
+ 2437: -2,-45
+ 2438: -2,-44
+ 2439: -2,-43
+ 2440: -2,-42
+ 2441: -2,-41
+ 2442: -2,-40
+ 2443: -2,-39
+ 2466: -55,3
+ 2467: -55,4
+ 2468: -55,5
+ 2469: -55,6
+ 2470: -55,7
+ 2471: -55,8
+ 2472: -56,8
+ 2473: -57,8
+ 2474: -58,8
+ 2475: -59,8
+ 2476: -60,8
+ 2477: -61,8
+ 2478: -62,8
+ 2479: -63,8
+ 2480: -64,8
+ 2481: -65,8
+ 2482: -66,8
+ 2483: -67,8
+ 2484: -68,8
+ 2485: -69,8
+ 2486: -70,8
+ 2487: -71,8
+ 2488: -72,8
+ 2489: -73,8
+ 2490: -74,8
+ 2491: -75,8
+ 2492: -76,8
- node:
color: '#D4D4D496'
id: QuarterTileOverlayGreyscale90
decals:
- 1948: -69,-8
- 1949: -68,-8
- 1950: -67,-8
- 1951: -66,-8
- 1952: -62,-8
- 1953: -61,-8
- 1954: -60,-8
- 1955: -59,-8
- 1956: -58,-8
+ 1909: -69,-8
+ 1910: -68,-8
+ 1911: -67,-8
+ 1912: -66,-8
+ 1913: -62,-8
+ 1914: -61,-8
+ 1915: -60,-8
+ 1916: -59,-8
+ 1917: -58,-8
- node:
color: '#DE3A3A96'
id: QuarterTileOverlayGreyscale90
@@ -4453,42 +4513,42 @@ entities:
color: '#EFB34196'
id: QuarterTileOverlayGreyscale90
decals:
- 923: 47,4
- 924: 47,3
- 925: 47,2
- 926: 47,1
- 927: 47,-1
- 928: 47,-2
- 929: 47,-3
- 930: 47,-4
- 946: 46,4
- 947: 45,4
- 948: 44,4
- 949: 43,4
- 950: 42,4
- 951: 41,4
- 952: 40,4
- 953: 39,4
- 954: 38,4
- 955: 37,4
- 956: 36,4
- 957: 35,4
- 981: 47,0
+ 920: 47,4
+ 921: 47,3
+ 922: 47,2
+ 923: 47,1
+ 924: 47,-1
+ 925: 47,-2
+ 926: 47,-3
+ 927: 47,-4
+ 943: 46,4
+ 944: 45,4
+ 945: 44,4
+ 946: 43,4
+ 947: 42,4
+ 948: 41,4
+ 949: 40,4
+ 950: 39,4
+ 951: 38,4
+ 952: 37,4
+ 953: 36,4
+ 954: 35,4
+ 978: 47,0
- node:
color: '#EFE54193'
id: QuarterTileOverlayGreyscale90
decals:
- 3405: 52,-6
- 3406: 53,-6
- 3407: 54,-6
- 3408: 55,-6
- 3409: 55,-7
+ 3289: 52,-6
+ 3290: 53,-6
+ 3291: 54,-6
+ 3292: 55,-6
+ 3293: 55,-7
- node:
cleanable: True
color: '#FFFFFFFF'
id: Remains
decals:
- 1846: -11,-56
+ 1807: -11,-56
- node:
color: '#FFFFFFFF'
id: Rock01
@@ -4499,7 +4559,7 @@ entities:
id: Rock02
decals:
511: -54.03518,-0.067417145
- 1484: -46.069923,-54.486828
+ 1445: -46.069923,-54.486828
- node:
color: '#FFFFFFFF'
id: Rock03
@@ -4512,57 +4572,57 @@ entities:
decals:
14: -14.092909,-6.9817815
183: 30.987814,-20.959845
- 1485: -47.8668,-53.252453
+ 1446: -47.8668,-53.252453
- node:
color: '#FFFFFFFF'
id: Rock05
decals:
514: -48.019554,-0.083042145
- 3120: 30.989725,-21.999695
+ 3078: 30.989725,-21.999695
- node:
color: '#FFFFFFFF'
id: SpaceStationSign1
decals:
- 1875: -6,-21
+ 1836: -6,-21
- node:
color: '#FFFFFFFF'
id: SpaceStationSign2
decals:
- 1876: -5,-21
+ 1837: -5,-21
- node:
color: '#FFFFFFFF'
id: SpaceStationSign3
decals:
- 1877: -4,-21
+ 1838: -4,-21
- node:
color: '#FFFFFFFF'
id: SpaceStationSign4
decals:
- 1878: -3,-21
+ 1839: -3,-21
- node:
color: '#FFFFFFFF'
id: SpaceStationSign5
decals:
- 1879: -2,-21
+ 1840: -2,-21
- node:
color: '#FFFFFFFF'
id: SpaceStationSign6
decals:
- 1880: -1,-21
+ 1841: -1,-21
- node:
color: '#FFFFFFFF'
id: SpaceStationSign7
decals:
- 1881: 0,-21
+ 1842: 0,-21
- node:
color: '#FFFFFFFF'
id: StandClear
decals:
146: 8,-11
356: -29,4
- 3154: 28,-63
- 3297: 56,17
- 3298: 56,23
+ 3112: 28,-63
+ 3253: 56,17
+ 3254: 56,23
- node:
color: '#334E6DC8'
id: ThreeQuarterTileOverlayGreyscale
@@ -4572,28 +4632,28 @@ entities:
color: '#52B4E92E'
id: ThreeQuarterTileOverlayGreyscale
decals:
- 1245: -28,-50
- 1246: -29,-51
+ 1206: -28,-50
+ 1207: -29,-51
- node:
color: '#52B4E996'
id: ThreeQuarterTileOverlayGreyscale
decals:
- 1123: -9,-26
- 1166: -32,-32
- 1167: -29,-30
- 1216: -27,-51
- 1230: -36,-51
- 1311: -18,-34
- 1331: -18,-42
- 2783: -13,-24
+ 1084: -9,-26
+ 1127: -32,-32
+ 1128: -29,-30
+ 1177: -27,-51
+ 1191: -36,-51
+ 1272: -18,-34
+ 1292: -18,-42
+ 2744: -13,-24
- node:
color: '#9FED5896'
id: ThreeQuarterTileOverlayGreyscale
decals:
81: -8,4
- 1407: -44,-46
- 1408: -55,-46
- 1409: -52,-52
+ 1368: -44,-46
+ 1369: -55,-46
+ 1370: -52,-52
- node:
color: '#A4610696'
id: ThreeQuarterTileOverlayGreyscale
@@ -4607,32 +4667,32 @@ entities:
color: '#D381C996'
id: ThreeQuarterTileOverlayGreyscale
decals:
- 2838: 0,-24
+ 2799: 0,-24
- node:
color: '#D4D4D428'
id: ThreeQuarterTileOverlayGreyscale
decals:
- 2182: -47,-4
- 2183: -47,3
- 2423: -53,3
- 2424: -53,-4
+ 2143: -47,-4
+ 2144: -47,3
+ 2384: -53,3
+ 2385: -53,-4
- node:
color: '#DE3A3A96'
id: ThreeQuarterTileOverlayGreyscale
decals:
657: 0,28
739: -13,42
- 1814: 0,-68
+ 1775: 0,-68
- node:
color: '#EFB34196'
id: ThreeQuarterTileOverlayGreyscale
decals:
- 1027: 19,8
+ 988: 19,8
- node:
color: '#EFD57C8F'
id: ThreeQuarterTileOverlayGreyscale
decals:
- 2704: -24,-23
+ 2665: -24,-23
- node:
color: '#334E6DC8'
id: ThreeQuarterTileOverlayGreyscale180
@@ -4644,21 +4704,21 @@ entities:
color: '#52B4E996'
id: ThreeQuarterTileOverlayGreyscale180
decals:
- 1121: -10,-25
- 1164: -24,-36
- 1218: -24,-53
- 1231: -33,-53
- 1313: -15,-39
- 1332: -14,-44
- 2664: -6,-27
- 2808: -26,-38
+ 1082: -10,-25
+ 1125: -24,-36
+ 1179: -24,-53
+ 1192: -33,-53
+ 1274: -15,-39
+ 1293: -14,-44
+ 2625: -6,-27
+ 2769: -26,-38
- node:
color: '#9FED5896'
id: ThreeQuarterTileOverlayGreyscale180
decals:
- 1416: -42,-48
- 1417: -50,-57
- 1418: -50,-50
+ 1377: -42,-48
+ 1378: -50,-57
+ 1379: -50,-50
- node:
color: '#A4610696'
id: ThreeQuarterTileOverlayGreyscale180
@@ -4673,16 +4733,16 @@ entities:
color: '#D381C996'
id: ThreeQuarterTileOverlayGreyscale180
decals:
- 1578: 8,-27
- 1790: 25,-37
- 2826: 8,-22
+ 1539: 8,-27
+ 1751: 25,-37
+ 2787: 8,-22
- node:
color: '#D4D4D428'
id: ThreeQuarterTileOverlayGreyscale180
decals:
- 2181: -45,-5
- 2425: -49,-5
- 2426: -49,2
+ 2142: -45,-5
+ 2386: -49,-5
+ 2387: -49,2
- node:
color: '#DE3A3A96'
id: ThreeQuarterTileOverlayGreyscale180
@@ -4690,19 +4750,19 @@ entities:
649: 1,45
656: 2,27
783: 6,40
- 1812: 2,-74
- 1813: 3,-73
+ 1773: 2,-74
+ 1774: 3,-73
- node:
color: '#EFB34196'
id: ThreeQuarterTileOverlayGreyscale180
decals:
- 1029: 23,6
+ 990: 23,6
- node:
color: '#EFD57C8F'
id: ThreeQuarterTileOverlayGreyscale180
decals:
- 2698: -15,-27
- 2699: -19,-28
+ 2659: -15,-27
+ 2660: -19,-28
- node:
color: '#334E6DC8'
id: ThreeQuarterTileOverlayGreyscale270
@@ -4714,21 +4774,21 @@ entities:
color: '#52B4E996'
id: ThreeQuarterTileOverlayGreyscale270
decals:
- 1124: -9,-25
- 1165: -32,-36
- 1219: -27,-53
- 1228: -36,-53
- 1314: -18,-39
- 1333: -18,-44
- 2649: -13,-22
- 2807: -30,-38
+ 1085: -9,-25
+ 1126: -32,-36
+ 1180: -27,-53
+ 1189: -36,-53
+ 1275: -18,-39
+ 1294: -18,-44
+ 2610: -13,-22
+ 2768: -30,-38
- node:
color: '#9FED5896'
id: ThreeQuarterTileOverlayGreyscale270
decals:
- 1413: -52,-57
- 1414: -55,-50
- 1415: -44,-48
+ 1374: -52,-57
+ 1375: -55,-50
+ 1376: -44,-48
- node:
color: '#A4610696'
id: ThreeQuarterTileOverlayGreyscale270
@@ -4743,15 +4803,15 @@ entities:
color: '#D381C996'
id: ThreeQuarterTileOverlayGreyscale270
decals:
- 2839: 0,-27
+ 2800: 0,-27
- node:
color: '#D4D4D428'
id: ThreeQuarterTileOverlayGreyscale270
decals:
- 2185: -47,-5
- 2186: -47,2
- 2427: -53,-5
- 2428: -53,2
+ 2146: -47,-5
+ 2147: -47,2
+ 2388: -53,-5
+ 2389: -53,2
- node:
color: '#DE3A3A96'
id: ThreeQuarterTileOverlayGreyscale270
@@ -4759,17 +4819,17 @@ entities:
650: -4,45
658: 0,27
784: 12,40
- 1811: 0,-74
+ 1772: 0,-74
- node:
color: '#EFB34196'
id: ThreeQuarterTileOverlayGreyscale270
decals:
- 1030: 19,6
+ 991: 19,6
- node:
color: '#EFD57C8F'
id: ThreeQuarterTileOverlayGreyscale270
decals:
- 2682: -24,-28
+ 2643: -24,-28
- node:
color: '#334E6DC8'
id: ThreeQuarterTileOverlayGreyscale90
@@ -4779,27 +4839,27 @@ entities:
color: '#52B4E92E'
id: ThreeQuarterTileOverlayGreyscale90
decals:
- 1247: -32,-50
- 1248: -31,-51
+ 1208: -32,-50
+ 1209: -31,-51
- node:
color: '#52B4E996'
id: ThreeQuarterTileOverlayGreyscale90
decals:
- 1122: -10,-26
- 1168: -27,-30
- 1169: -24,-32
- 1217: -24,-51
- 1229: -33,-51
- 1312: -15,-34
- 1330: -14,-42
- 2662: -6,-24
+ 1083: -10,-26
+ 1129: -27,-30
+ 1130: -24,-32
+ 1178: -24,-51
+ 1190: -33,-51
+ 1273: -15,-34
+ 1291: -14,-42
+ 2623: -6,-24
- node:
color: '#9FED5896'
id: ThreeQuarterTileOverlayGreyscale90
decals:
- 1410: -42,-46
- 1411: -50,-46
- 1412: -50,-52
+ 1371: -42,-46
+ 1372: -50,-46
+ 1373: -50,-52
- node:
color: '#A4610696'
id: ThreeQuarterTileOverlayGreyscale90
@@ -4813,15 +4873,15 @@ entities:
color: '#D381C996'
id: ThreeQuarterTileOverlayGreyscale90
decals:
- 1577: 8,-24
- 1789: 25,-35
+ 1538: 8,-24
+ 1750: 25,-35
- node:
color: '#D4D4D428'
id: ThreeQuarterTileOverlayGreyscale90
decals:
- 2184: -45,3
- 2429: -49,3
- 2430: -49,-4
+ 2145: -45,3
+ 2390: -49,3
+ 2391: -49,-4
- node:
color: '#DE3A3A96'
id: ThreeQuarterTileOverlayGreyscale90
@@ -4830,88 +4890,88 @@ entities:
655: 2,28
740: -11,42
752: -10,40
- 1815: 3,-68
+ 1776: 3,-68
- node:
color: '#EFB34196'
id: ThreeQuarterTileOverlayGreyscale90
decals:
- 1028: 23,8
+ 989: 23,8
- node:
color: '#EFD57C8F'
id: ThreeQuarterTileOverlayGreyscale90
decals:
- 2694: -15,-23
+ 2655: -15,-23
- node:
color: '#FFFFFFFF'
id: WarnBox
decals:
- 2546: -64,-14
+ 2507: -64,-14
- node:
color: '#FFFFFFFF'
id: WarnCornerSE
decals:
- 2789: -27,-26
+ 2750: -27,-26
- node:
color: '#FFFFFFFF'
id: WarnCornerSmallGreyscaleNE
decals:
- 1723: 6,-52
+ 1684: 6,-52
- node:
color: '#FFFFFFFF'
id: WarnCornerSmallNE
decals:
903: -13,10
- 1667: 0,-29
- 3395: 42,15
+ 1628: 0,-29
+ 3279: 42,15
- node:
color: '#FFFFFFFF'
id: WarnCornerSmallNW
decals:
902: -9,10
- 1488: -65,-42
- 1666: 4,-29
- 1868: -42,28
- 3394: 44,15
- 3569: 46,14
+ 1449: -65,-42
+ 1627: 4,-29
+ 1829: -42,28
+ 3278: 44,15
+ 3453: 46,14
- node:
color: '#FFFFFFFF'
id: WarnCornerSmallSE
decals:
- 1840: -5,-72
- 2841: 0,-27
- 3563: 53,11
- 3564: 49,11
+ 1801: -5,-72
+ 2802: 0,-27
+ 3447: 53,11
+ 3448: 49,11
- node:
color: '#FFFFFFFF'
id: WarnCornerSmallSW
decals:
- 1662: 4,-27
- 1838: -9,-72
- 1839: -3,-72
- 1842: 0,-73
- 3561: 51,11
- 3562: 55,11
+ 1623: 4,-27
+ 1799: -9,-72
+ 1800: -3,-72
+ 1803: 0,-73
+ 3445: 51,11
+ 3446: 55,11
- node:
color: '#52B4E996'
id: WarnFullGreyscale
decals:
- 2802: -28,-29
- 2803: -33,-35
- 2804: -33,-33
- 2805: -23,-33
- 2806: -23,-35
- 2813: -27,-39
- 2814: -29,-39
- 2848: -12,-28
- 2849: -13,-28
- 2870: -5,-36
- 2871: -5,-35
- 2872: -5,-34
+ 2763: -28,-29
+ 2764: -33,-35
+ 2765: -33,-33
+ 2766: -23,-33
+ 2767: -23,-35
+ 2774: -27,-39
+ 2775: -29,-39
+ 2809: -12,-28
+ 2810: -13,-28
+ 2831: -5,-36
+ 2832: -5,-35
+ 2833: -5,-34
- node:
color: '#DE3A3A96'
id: WarnFullGreyscale
decals:
- 3013: -1,-70
+ 2974: -1,-70
- node:
color: '#FFFFFFFF'
id: WarnLineE
@@ -4922,197 +4982,197 @@ entities:
768: 18,45
769: 18,46
770: 18,47
- 1114: 55,32
- 1115: 55,33
- 1676: 0,-43
- 1677: 0,-42
- 1678: 0,-41
- 1679: 0,-40
- 1680: 0,-39
- 1727: 6,-50
- 1728: 6,-49
- 1795: 34,-58
- 1796: 34,-57
- 1797: 34,-56
- 1798: 34,-55
- 1799: 34,-54
- 1893: 27,-61
- 1894: 27,-60
- 1895: 27,-59
- 2730: -14,-21
- 2731: -14,-20
- 2732: -14,-19
- 2749: -17,8
- 2750: -17,9
- 2751: -17,10
- 2752: 9,8
- 2753: 9,9
- 2754: 9,10
- 2779: 9,-21
- 2780: 9,-20
- 2781: 9,-19
- 3388: 42,16
- 3389: 42,17
- 3390: 42,18
+ 1075: 55,32
+ 1076: 55,33
+ 1637: 0,-43
+ 1638: 0,-42
+ 1639: 0,-41
+ 1640: 0,-40
+ 1641: 0,-39
+ 1688: 6,-50
+ 1689: 6,-49
+ 1756: 34,-58
+ 1757: 34,-57
+ 1758: 34,-56
+ 1759: 34,-55
+ 1760: 34,-54
+ 1854: 27,-61
+ 1855: 27,-60
+ 1856: 27,-59
+ 2691: -14,-21
+ 2692: -14,-20
+ 2693: -14,-19
+ 2710: -17,8
+ 2711: -17,9
+ 2712: -17,10
+ 2713: 9,8
+ 2714: 9,9
+ 2715: 9,10
+ 2740: 9,-21
+ 2741: 9,-20
+ 2742: 9,-19
+ 3272: 42,16
+ 3273: 42,17
+ 3274: 42,18
- node:
color: '#52B4E996'
id: WarnLineGreyscaleE
decals:
- 1347: -24,-35
- 1348: -24,-33
- 1356: -11,-26
- 1357: -11,-25
- 1373: -34,-35
- 1374: -34,-33
- 2894: -12,-32
- 2895: -12,-30
- 3015: -39,-47
+ 1308: -24,-35
+ 1309: -24,-33
+ 1317: -11,-26
+ 1318: -11,-25
+ 1334: -34,-35
+ 1335: -34,-33
+ 2855: -12,-32
+ 2856: -12,-30
+ 2976: -39,-47
- node:
color: '#D381C996'
id: WarnLineGreyscaleE
decals:
- 2597: 22,-32
- 2621: 7,-31
+ 2558: 22,-32
+ 2582: 7,-31
- node:
color: '#DE3A3A96'
id: WarnLineGreyscaleE
decals:
- 3014: -2,-70
+ 2975: -2,-70
- node:
color: '#FFFFFFFF'
id: WarnLineGreyscaleE
decals:
- 1722: 6,-51
- 1742: 16,-44
- 1743: 16,-43
- 1744: 16,-42
+ 1683: 6,-51
+ 1703: 16,-44
+ 1704: 16,-43
+ 1705: 16,-42
- node:
color: '#52B4E996'
id: WarnLineGreyscaleN
decals:
- 1353: -10,-27
- 1358: -20,-39
- 1359: -21,-39
- 1360: -22,-39
- 1367: -20,-53
- 1368: -21,-53
- 1369: -22,-53
- 2634: -28,-30
- 2668: -9,-27
- 2811: -27,-40
- 2812: -29,-40
- 2846: -12,-29
- 2847: -13,-29
+ 1314: -10,-27
+ 1319: -20,-39
+ 1320: -21,-39
+ 1321: -22,-39
+ 1328: -20,-53
+ 1329: -21,-53
+ 1330: -22,-53
+ 2595: -28,-30
+ 2629: -9,-27
+ 2772: -27,-40
+ 2773: -29,-40
+ 2807: -12,-29
+ 2808: -13,-29
- node:
color: '#D381C996'
id: WarnLineGreyscaleN
decals:
- 2598: 20,-29
+ 2559: 20,-29
- node:
color: '#FFFF0085'
id: WarnLineGreyscaleN
decals:
- 3296: 56,22
+ 3252: 56,22
- node:
color: '#FFFFFFFF'
id: WarnLineGreyscaleN
decals:
- 1711: 27,-50
- 1712: 26,-50
- 1713: 25,-50
- 1714: 24,-50
- 1718: 10,-52
- 1719: 9,-52
- 1720: 8,-52
- 1721: 7,-52
- 1726: 6,-51
- 1733: 10,-41
- 1734: 11,-41
- 1735: 12,-41
+ 1672: 27,-50
+ 1673: 26,-50
+ 1674: 25,-50
+ 1675: 24,-50
+ 1679: 10,-52
+ 1680: 9,-52
+ 1681: 8,-52
+ 1682: 7,-52
+ 1687: 6,-51
+ 1694: 10,-41
+ 1695: 11,-41
+ 1696: 12,-41
- node:
color: '#52B4E996'
id: WarnLineGreyscaleS
decals:
- 1351: -9,-24
- 1352: -10,-24
- 1361: -20,-37
- 1362: -21,-37
- 1363: -22,-37
- 1364: -20,-51
- 1365: -21,-51
- 1366: -22,-51
- 2801: -28,-28
- 2809: -29,-38
- 2810: -27,-38
- 2844: -12,-27
- 2845: -13,-27
+ 1312: -9,-24
+ 1313: -10,-24
+ 1322: -20,-37
+ 1323: -21,-37
+ 1324: -22,-37
+ 1325: -20,-51
+ 1326: -21,-51
+ 1327: -22,-51
+ 2762: -28,-28
+ 2770: -29,-38
+ 2771: -27,-38
+ 2805: -12,-27
+ 2806: -13,-27
- node:
color: '#D381C996'
id: WarnLineGreyscaleS
decals:
- 2575: 16,-30
- 2576: 13,-30
- 2622: 36,-41
- 2623: 35,-41
- 2624: 34,-41
+ 2536: 16,-30
+ 2537: 13,-30
+ 2583: 36,-41
+ 2584: 35,-41
+ 2585: 34,-41
- node:
color: '#FFFF0085'
id: WarnLineGreyscaleS
decals:
- 3277: 50,27
- 3294: 56,18
+ 3234: 50,27
+ 3250: 56,18
- node:
color: '#FFFFFFFF'
id: WarnLineGreyscaleS
decals:
- 1707: 24,-50
- 1708: 25,-50
- 1709: 26,-50
- 1710: 27,-50
- 1736: 12,-41
- 1737: 11,-41
- 1738: 10,-41
+ 1668: 24,-50
+ 1669: 25,-50
+ 1670: 26,-50
+ 1671: 27,-50
+ 1697: 12,-41
+ 1698: 11,-41
+ 1699: 10,-41
- node:
color: '#52B4E996'
id: WarnLineGreyscaleW
decals:
- 1349: -32,-35
- 1350: -32,-33
- 1354: -8,-26
- 1355: -8,-25
- 2873: -4,-36
- 2874: -4,-35
- 2875: -4,-34
- 2901: -17,-30
- 2902: -17,-31
- 3016: -40,-47
+ 1310: -32,-35
+ 1311: -32,-33
+ 1315: -8,-26
+ 1316: -8,-25
+ 2834: -4,-36
+ 2835: -4,-35
+ 2836: -4,-34
+ 2862: -17,-30
+ 2863: -17,-31
+ 2977: -40,-47
- node:
color: '#DE3A3A96'
id: WarnLineGreyscaleW
decals:
- 3012: 0,-70
+ 2973: 0,-70
- node:
color: '#FFFF0085'
id: WarnLineGreyscaleW
decals:
- 3295: 55,20
+ 3251: 55,20
- node:
color: '#FFFFFFFF'
id: WarnLineGreyscaleW
decals:
- 1724: 12,-51
- 1725: 12,-50
- 1739: 16,-44
- 1740: 16,-43
- 1741: 16,-42
+ 1685: 12,-51
+ 1686: 12,-50
+ 1700: 16,-44
+ 1701: 16,-43
+ 1702: 16,-42
- node:
color: '#DE3A3A96'
id: WarnLineN
decals:
- 1493: -66,-40
- 1494: -67,-40
- 1495: -68,-40
- 1496: -69,-40
+ 1454: -66,-40
+ 1455: -67,-40
+ 1456: -68,-40
+ 1457: -69,-40
- node:
color: '#FFFFFFFF'
id: WarnLineN
@@ -5129,50 +5189,50 @@ entities:
759: 18,42
760: 17,42
761: 16,42
- 1118: 55,32
- 1119: 54,32
- 1120: 53,32
- 1659: 1,-27
- 1660: 2,-27
- 1661: 3,-27
- 1671: 3,-38
- 1672: 2,-38
- 1673: 1,-38
- 1675: 4,-38
- 1688: 13,-49
- 1689: 14,-49
- 1690: 15,-49
- 1752: 8,-30
- 1834: -4,-72
- 1835: -10,-72
- 1836: -12,-72
- 1837: -11,-72
- 2733: -21,-15
- 2734: -22,-15
- 2735: -23,-15
- 2743: -21,1
- 2744: -22,1
- 2745: -23,1
- 2758: 17,6
- 2759: 16,6
- 2760: 15,6
- 2770: 17,-10
- 2771: 16,-10
- 2772: 15,-10
- 2773: 17,0
- 2774: 16,0
- 2775: 15,0
- 2786: -30,-26
- 2787: -29,-26
- 2788: -28,-26
- 3216: -2,-53
- 3217: -3,-53
- 3218: -4,-53
- 3219: -2,-39
- 3220: -3,-39
- 3221: -4,-39
- 3559: 50,11
- 3560: 54,11
+ 1079: 55,32
+ 1080: 54,32
+ 1081: 53,32
+ 1620: 1,-27
+ 1621: 2,-27
+ 1622: 3,-27
+ 1632: 3,-38
+ 1633: 2,-38
+ 1634: 1,-38
+ 1636: 4,-38
+ 1649: 13,-49
+ 1650: 14,-49
+ 1651: 15,-49
+ 1713: 8,-30
+ 1795: -4,-72
+ 1796: -10,-72
+ 1797: -12,-72
+ 1798: -11,-72
+ 2694: -21,-15
+ 2695: -22,-15
+ 2696: -23,-15
+ 2704: -21,1
+ 2705: -22,1
+ 2706: -23,1
+ 2719: 17,6
+ 2720: 16,6
+ 2721: 15,6
+ 2731: 17,-10
+ 2732: 16,-10
+ 2733: 15,-10
+ 2734: 17,0
+ 2735: 16,0
+ 2736: 15,0
+ 2747: -30,-26
+ 2748: -29,-26
+ 2749: -28,-26
+ 3174: -2,-53
+ 3175: -3,-53
+ 3176: -4,-53
+ 3177: -2,-39
+ 3178: -3,-39
+ 3179: -4,-39
+ 3443: 50,11
+ 3444: 54,11
- node:
color: '#FFFFFFFF'
id: WarnLineS
@@ -5183,55 +5243,55 @@ entities:
774: 16,45
775: 16,46
776: 16,47
- 1116: 53,32
- 1117: 53,33
- 1668: 6,-41
- 1669: 6,-40
- 1670: 6,-39
- 1747: 8,-33
- 1748: 8,-32
- 1749: 8,-30
- 1750: 8,-29
- 1800: 32,-58
- 1801: 32,-57
- 1802: 32,-56
- 1841: 0,-74
- 1896: 29,-61
- 1897: 29,-60
- 1898: 29,-59
- 2577: 12,-33
- 2578: 12,-32
- 2579: 12,-31
- 2727: -14,-21
- 2728: -14,-20
- 2729: -14,-19
- 2746: -17,8
- 2747: -17,9
- 2748: -17,10
- 2755: 9,8
- 2756: 9,9
- 2757: 9,10
- 2776: 9,-21
- 2777: 9,-20
- 2778: 9,-19
- 3370: 54,-17
- 3371: 54,-16
- 3372: 54,-15
- 3391: 44,16
- 3392: 44,17
- 3393: 44,18
- 3565: 46,18
- 3566: 46,17
- 3567: 46,16
- 3568: 46,15
+ 1077: 53,32
+ 1078: 53,33
+ 1629: 6,-41
+ 1630: 6,-40
+ 1631: 6,-39
+ 1708: 8,-33
+ 1709: 8,-32
+ 1710: 8,-30
+ 1711: 8,-29
+ 1761: 32,-58
+ 1762: 32,-57
+ 1763: 32,-56
+ 1802: 0,-74
+ 1857: 29,-61
+ 1858: 29,-60
+ 1859: 29,-59
+ 2538: 12,-33
+ 2539: 12,-32
+ 2540: 12,-31
+ 2688: -14,-21
+ 2689: -14,-20
+ 2690: -14,-19
+ 2707: -17,8
+ 2708: -17,9
+ 2709: -17,10
+ 2716: 9,8
+ 2717: 9,9
+ 2718: 9,10
+ 2737: 9,-21
+ 2738: 9,-20
+ 2739: 9,-19
+ 3269: 54,-17
+ 3270: 54,-16
+ 3271: 54,-15
+ 3275: 44,16
+ 3276: 44,17
+ 3277: 44,18
+ 3449: 46,18
+ 3450: 46,17
+ 3451: 46,16
+ 3452: 46,15
- node:
color: '#DE3A3A96'
id: WarnLineW
decals:
- 1489: -66,-40
- 1490: -67,-40
- 1491: -68,-40
- 1492: -69,-40
+ 1450: -66,-40
+ 1451: -67,-40
+ 1452: -68,-40
+ 1453: -69,-40
- node:
color: '#FFFFFFFF'
id: WarnLineW
@@ -5248,48 +5308,48 @@ entities:
899: -11,10
900: -12,10
901: -10,10
- 1106: 58,36
- 1107: 57,36
- 1108: 56,36
- 1109: 55,36
- 1110: 54,36
- 1111: 53,33
- 1112: 54,33
- 1113: 55,33
- 1487: -66,-42
- 1663: 1,-29
- 1664: 2,-29
- 1665: 3,-29
- 1751: 8,-32
- 1866: -44,28
- 1867: -43,28
- 1979: 108,1
- 1980: 109,1
- 1981: 110,1
- 1982: 111,1
- 2736: -21,-15
- 2737: -22,-15
- 2738: -23,-15
- 2739: -21,1
- 2740: -22,1
- 2741: -23,1
- 2742: -21,1
- 2761: 17,6
- 2762: 16,6
- 2763: 15,6
- 2764: 17,0
- 2765: 16,0
- 2766: 15,0
- 2767: 17,-10
- 2768: 16,-10
- 2769: 15,-10
- 3213: -2,-53
- 3214: -3,-53
- 3215: -4,-53
- 3222: -2,-39
- 3223: -3,-39
- 3224: -4,-39
- 3308: 43,15
+ 1067: 58,36
+ 1068: 57,36
+ 1069: 56,36
+ 1070: 55,36
+ 1071: 54,36
+ 1072: 53,33
+ 1073: 54,33
+ 1074: 55,33
+ 1448: -66,-42
+ 1624: 1,-29
+ 1625: 2,-29
+ 1626: 3,-29
+ 1712: 8,-32
+ 1827: -44,28
+ 1828: -43,28
+ 1940: 108,1
+ 1941: 109,1
+ 1942: 110,1
+ 1943: 111,1
+ 2697: -21,-15
+ 2698: -22,-15
+ 2699: -23,-15
+ 2700: -21,1
+ 2701: -22,1
+ 2702: -23,1
+ 2703: -21,1
+ 2722: 17,6
+ 2723: 16,6
+ 2724: 15,6
+ 2725: 17,0
+ 2726: 16,0
+ 2727: 15,0
+ 2728: 17,-10
+ 2729: 16,-10
+ 2730: 15,-10
+ 3171: -2,-53
+ 3172: -3,-53
+ 3173: -4,-53
+ 3180: -2,-39
+ 3181: -3,-39
+ 3182: -4,-39
+ 3258: 43,15
- node:
angle: -3.141592653589793 rad
color: '#FFFFFFFF'
@@ -5373,47 +5433,47 @@ entities:
color: '#FFFFFFFF'
id: WoodTrimThinCornerNw
decals:
- 2923: 7,-1
+ 2884: 7,-1
- node:
color: '#FFFFFFFF'
id: WoodTrimThinCornerSw
decals:
- 2918: 7,-6
+ 2879: 7,-6
- node:
color: '#FFFFFFFF'
id: WoodTrimThinLineN
decals:
- 2924: 8,-1
- 2925: 9,-1
- 2926: 11,-1
- 2927: 10,-1
- 2928: 13,2
- 2929: 12,2
- 2930: 11,2
- 2931: 10,2
+ 2885: 8,-1
+ 2886: 9,-1
+ 2887: 11,-1
+ 2888: 10,-1
+ 2889: 13,2
+ 2890: 12,2
+ 2891: 11,2
+ 2892: 10,2
- node:
color: '#FFFFFFFF'
id: WoodTrimThinLineS
decals:
- 2914: 11,-6
- 2915: 10,-6
- 2916: 9,-6
- 2917: 8,-6
- 2932: 13,6
- 2933: 12,6
- 2934: 11,6
- 2935: 10,6
- 2936: 9,6
- 2937: 8,6
- 2938: 7,6
+ 2875: 11,-6
+ 2876: 10,-6
+ 2877: 9,-6
+ 2878: 8,-6
+ 2893: 13,6
+ 2894: 12,6
+ 2895: 11,6
+ 2896: 10,6
+ 2897: 9,6
+ 2898: 8,6
+ 2899: 7,6
- node:
color: '#FFFFFFFF'
id: WoodTrimThinLineW
decals:
- 2919: 7,-5
- 2920: 7,-4
- 2921: 7,-3
- 2922: 7,-2
+ 2880: 7,-5
+ 2881: 7,-4
+ 2882: 7,-3
+ 2883: 7,-2
- node:
color: '#FFFFFFFF'
id: bushsnowa1
@@ -5424,19 +5484,19 @@ entities:
color: '#DE3A3A96'
id: rune1
decals:
- 1843: -12,-56
+ 1804: -12,-56
- node:
cleanable: True
color: '#DE3A3A96'
id: rune4
decals:
- 1845: -13,-55
+ 1806: -13,-55
- node:
cleanable: True
color: '#DE3A3A96'
id: rune5
decals:
- 1844: -11,-55
+ 1805: -11,-55
type: DecalGrid
- version: 2
data:
@@ -6716,7 +6776,7 @@ entities:
15,1:
0: 65535
15,2:
- 0: 65471
+ 0: 65535
15,3:
0: 65535
16,0:
@@ -6724,9 +6784,9 @@ entities:
16,1:
0: 65535
17,0:
- 0: 7983
+ 0: 65327
17,1:
- 0: 32529
+ 0: 65535
-8,8:
0: 65535
-8,9:
@@ -6946,21 +7006,21 @@ entities:
10,13:
0: 112
16,2:
- 0: 65359
+ 0: 65535
17,2:
- 0: 65367
+ 0: 65535
17,3:
- 0: 65471
+ 0: 65535
18,0:
- 0: 3855
+ 0: 65295
18,1:
- 0: 40704
+ 0: 65535
18,2:
- 0: 65433
+ 0: 65535
18,3:
0: 32767
19,0:
- 0: 7967
+ 0: 16159
-4,-11:
0: 65535
-4,-10:
@@ -7102,7 +7162,7 @@ entities:
17,7:
0: 65535
18,7:
- 0: 16383
+ 0: 65535
12,12:
0: 61441
-8,-10:
@@ -7757,41 +7817,41 @@ entities:
16,3:
0: 65471
19,2:
- 0: 32655
+ 0: 32767
19,3:
- 0: 63351
+ 0: 65535
16,4:
- 0: 4383
+ 0: 21855
16,5:
- 0: 4383
+ 0: 21855
16,6:
0: 49151
17,4:
- 0: 4383
+ 0: 21855
17,5:
- 0: 4383
+ 0: 21855
17,6:
- 0: 49151
+ 0: 65535
18,4:
0: 65399
18,5:
0: 32767
18,6:
- 0: 12151
+ 0: 44919
19,4:
- 0: 30583
+ 0: 65535
19,5:
- 0: 30583
+ 0: 65535
19,6:
- 0: 30583
+ 0: 65535
19,7:
- 0: 1911
+ 0: 6015
-12,10:
0: 34952
-12,11:
0: 2184
20,2:
- 0: 3855
+ 0: 7951
21,0:
0: 36623
21,2:
@@ -7993,7 +8053,7 @@ entities:
10,15:
0: 3
20,3:
- 0: 62532
+ 0: 62805
21,3:
0: 62532
22,3:
@@ -8005,7 +8065,7 @@ entities:
22,-4:
0: 15
20,4:
- 0: 1092
+ 0: 5461
21,4:
0: 1092
22,4:
@@ -8014,6 +8074,16 @@ entities:
0: 34944
21,-5:
0: 34944
+ 19,1:
+ 0: 13107
+ 19,8:
+ 0: 1
+ 20,5:
+ 0: 4371
+ 20,6:
+ 0: 7987
+ 20,7:
+ 0: 4369
uniqueMixes:
- volume: 2500
temperature: 293.15
@@ -13043,8 +13113,6 @@ entities:
- deviceLists:
- 23905
type: DeviceNetwork
- - joinedGrid: 5350
- type: AtmosDevice
- uid: 23909
components:
- pos: 44.5,22.5
@@ -13053,8 +13121,6 @@ entities:
- deviceLists:
- 23906
type: DeviceNetwork
- - joinedGrid: 5350
- type: AtmosDevice
- uid: 23910
components:
- pos: 52.5,1.5
@@ -13063,8 +13129,6 @@ entities:
- deviceLists:
- 23907
type: DeviceNetwork
- - joinedGrid: 5350
- type: AtmosDevice
- uid: 24271
components:
- pos: -17.5,-13.5
@@ -33663,6 +33727,31 @@ entities:
- pos: 58.5,4.5
parent: 5350
type: Transform
+ - uid: 24051
+ components:
+ - pos: 48.5,27.5
+ parent: 5350
+ type: Transform
+ - uid: 24052
+ components:
+ - pos: 49.5,27.5
+ parent: 5350
+ type: Transform
+ - uid: 24053
+ components:
+ - pos: 50.5,27.5
+ parent: 5350
+ type: Transform
+ - uid: 24055
+ components:
+ - pos: 50.5,28.5
+ parent: 5350
+ type: Transform
+ - uid: 24069
+ components:
+ - pos: 50.5,29.5
+ parent: 5350
+ type: Transform
- uid: 24132
components:
- pos: 35.5,22.5
@@ -49908,6 +49997,151 @@ entities:
- pos: 65.5,12.5
parent: 5350
type: Transform
+ - uid: 24015
+ components:
+ - pos: 68.5,6.5
+ parent: 5350
+ type: Transform
+ - uid: 24016
+ components:
+ - pos: 69.5,6.5
+ parent: 5350
+ type: Transform
+ - uid: 24017
+ components:
+ - pos: 69.5,7.5
+ parent: 5350
+ type: Transform
+ - uid: 24018
+ components:
+ - pos: 69.5,8.5
+ parent: 5350
+ type: Transform
+ - uid: 24022
+ components:
+ - pos: 68.5,8.5
+ parent: 5350
+ type: Transform
+ - uid: 24023
+ components:
+ - pos: 67.5,8.5
+ parent: 5350
+ type: Transform
+ - uid: 24024
+ components:
+ - pos: 66.5,8.5
+ parent: 5350
+ type: Transform
+ - uid: 24025
+ components:
+ - pos: 65.5,8.5
+ parent: 5350
+ type: Transform
+ - uid: 24026
+ components:
+ - pos: 64.5,8.5
+ parent: 5350
+ type: Transform
+ - uid: 24027
+ components:
+ - pos: 63.5,8.5
+ parent: 5350
+ type: Transform
+ - uid: 24028
+ components:
+ - pos: 62.5,8.5
+ parent: 5350
+ type: Transform
+ - uid: 24029
+ components:
+ - pos: 61.5,8.5
+ parent: 5350
+ type: Transform
+ - uid: 24030
+ components:
+ - pos: 60.5,8.5
+ parent: 5350
+ type: Transform
+ - uid: 24033
+ components:
+ - pos: 59.5,8.5
+ parent: 5350
+ type: Transform
+ - uid: 24034
+ components:
+ - pos: 58.5,8.5
+ parent: 5350
+ type: Transform
+ - uid: 24035
+ components:
+ - pos: 57.5,8.5
+ parent: 5350
+ type: Transform
+ - uid: 24036
+ components:
+ - pos: 56.5,8.5
+ parent: 5350
+ type: Transform
+ - uid: 24037
+ components:
+ - pos: 55.5,8.5
+ parent: 5350
+ type: Transform
+ - uid: 24038
+ components:
+ - pos: 54.5,8.5
+ parent: 5350
+ type: Transform
+ - uid: 24039
+ components:
+ - pos: 41.5,24.5
+ parent: 5350
+ type: Transform
+ - uid: 24040
+ components:
+ - pos: 42.5,24.5
+ parent: 5350
+ type: Transform
+ - uid: 24041
+ components:
+ - pos: 43.5,24.5
+ parent: 5350
+ type: Transform
+ - uid: 24042
+ components:
+ - pos: 44.5,24.5
+ parent: 5350
+ type: Transform
+ - uid: 24043
+ components:
+ - pos: 45.5,24.5
+ parent: 5350
+ type: Transform
+ - uid: 24044
+ components:
+ - pos: 46.5,24.5
+ parent: 5350
+ type: Transform
+ - uid: 24047
+ components:
+ - pos: 47.5,24.5
+ parent: 5350
+ type: Transform
+ - uid: 24048
+ components:
+ - pos: 47.5,23.5
+ parent: 5350
+ type: Transform
+ - uid: 24049
+ components:
+ - pos: 48.5,23.5
+ parent: 5350
+ type: Transform
+ - uid: 24050
+ components:
+ - pos: 49.5,23.5
+ parent: 5350
+ type: Transform
- uid: 24604
components:
- pos: -48.5,-57.5
@@ -70223,13 +70457,6 @@ entities:
- pos: -15.5,-38.5
parent: 5350
type: Transform
-- proto: DresserFilled
- entities:
- - uid: 1333
- components:
- - pos: 25.5,-38.5
- parent: 5350
- type: Transform
- proto: DresserHeadOfPersonnelFilled
entities:
- uid: 1023
@@ -70251,6 +70478,13 @@ entities:
- pos: -30.5,14.5
parent: 5350
type: Transform
+- proto: DresserResearchDirectorFilled
+ entities:
+ - uid: 1333
+ components:
+ - pos: 25.5,-38.5
+ parent: 5350
+ type: Transform
- proto: DrinkBottleOfNothingFull
entities:
- uid: 3219
@@ -106018,6 +106252,8 @@ entities:
pos: 60.5,-0.5
parent: 5350
type: Transform
+ - joinedGrid: 5350
+ type: AtmosDevice
- color: '#0335FCFF'
type: AtmosPipeColor
- uid: 11242
@@ -106049,6 +106285,8 @@ entities:
- deviceLists:
- 23907
type: DeviceNetwork
+ - joinedGrid: 5350
+ type: AtmosDevice
- color: '#0335FCFF'
type: AtmosPipeColor
- uid: 12049
@@ -107971,6 +108209,8 @@ entities:
pos: 60.5,-1.5
parent: 5350
type: Transform
+ - joinedGrid: 5350
+ type: AtmosDevice
- color: '#FF1212FF'
type: AtmosPipeColor
- uid: 11834
@@ -107982,6 +108222,8 @@ entities:
- deviceLists:
- 23907
type: DeviceNetwork
+ - joinedGrid: 5350
+ type: AtmosDevice
- color: '#FF1212FF'
type: AtmosPipeColor
- uid: 12032
@@ -108107,6 +108349,8 @@ entities:
pos: 51.5,8.5
parent: 5350
type: Transform
+ - joinedGrid: 5350
+ type: AtmosDevice
- color: '#FF1212FF'
type: AtmosPipeColor
- uid: 12586
diff --git a/Resources/Maps/saltern.yml b/Resources/Maps/saltern.yml
index deaa1e3a13..7a955f62a7 100644
--- a/Resources/Maps/saltern.yml
+++ b/Resources/Maps/saltern.yml
@@ -31933,6 +31933,13 @@ entities:
- pos: 26.5,10.5
parent: 31
type: Transform
+- proto: DresserResearchDirectorFilled
+ entities:
+ - uid: 5153
+ components:
+ - pos: -5.5,-19.5
+ parent: 31
+ type: Transform
- proto: DrinkBottleRum
entities:
- uid: 10630
@@ -33185,7 +33192,7 @@ entities:
- pos: 38.5,-5.5
parent: 31
type: Transform
- - secondsUntilStateChange: -5658.055
+ - secondsUntilStateChange: -5678.821
state: Closing
type: Door
- uid: 4019
@@ -50126,11 +50133,6 @@ entities:
type: AtmosDevice
- proto: NitrogenTankFilled
entities:
- - uid: 9624
- components:
- - pos: -5.613141,-19.356611
- parent: 31
- type: Transform
- uid: 10652
components:
- pos: 43.475277,-13.455894
@@ -53709,11 +53711,6 @@ entities:
- pos: 59.5,6.5
parent: 31
type: Transform
- - uid: 5153
- components:
- - pos: -5.5,-19.5
- parent: 31
- type: Transform
- uid: 6853
components:
- pos: 29.5,16.5
@@ -74531,11 +74528,6 @@ entities:
- pos: 59.472126,6.503501
parent: 31
type: Transform
- - uid: 7422
- components:
- - pos: -5.4065356,-19.504105
- parent: 31
- type: Transform
- uid: 7794
components:
- pos: -23.521854,22.535301
diff --git a/Resources/Prototypes/Actions/types.yml b/Resources/Prototypes/Actions/types.yml
index 6fb907ce30..6200d8b381 100644
--- a/Resources/Prototypes/Actions/types.yml
+++ b/Resources/Prototypes/Actions/types.yml
@@ -274,3 +274,15 @@
icon: { sprite: Objects/Fun/bikehorn.rsi, state: icon }
event: !type:ActivateImplantEvent
useDelay: 1
+
+- type: entity
+ id: ActionToggleEyes
+ name: Open/Close eyes
+ description: Close your eyes to protect your peepers, or open your eyes to enjoy the pretty lights.
+ noSpawn: true
+ components:
+ - type: InstantAction
+ icon: Interface/Actions/eyeopen.png
+ iconOn: Interface/Actions/eyeclose.png
+ event: !type:ToggleEyesActionEvent
+ useDelay: 1 # so u cant give yourself and observers eyestrain by rapidly spamming the action
diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml
index cdf768465a..c606676191 100644
--- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml
+++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml
@@ -200,6 +200,7 @@
tags:
- ShoesRequiredStepTriggerImmune
- DoorBumpOpener
+ - CanPilot
- type: Emoting
- type: GuideHelp
guides:
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml
index 905b102f2c..e2e962a582 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml
@@ -120,6 +120,8 @@
description: ghost-role-information-slimes-description
- type: Speech
speechVerb: Slime
+ - type: TypingIndicator
+ proto: slime
- type: TTS # Corvax-TTS
voice: Chen
diff --git a/Resources/Prototypes/Entities/Mobs/Species/slime.yml b/Resources/Prototypes/Entities/Mobs/Species/slime.yml
index d53ece5061..7ca25d682b 100644
--- a/Resources/Prototypes/Entities/Mobs/Species/slime.yml
+++ b/Resources/Prototypes/Entities/Mobs/Species/slime.yml
@@ -20,6 +20,8 @@
- type: Speech
speechVerb: Slime
speechSounds: Slime
+ - type: TypingIndicator
+ proto: slime
- type: Vocal
sounds:
Male: MaleSlime
diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml
index 8a9b3f16b3..d683195f2f 100644
--- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml
+++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml
@@ -982,6 +982,19 @@
DefaultPrototype: ForkPlastic
ExamineName: Utensil
+- type: entity
+ parent: BaseMachineCircuitboard
+ id: FlatpackerMachineCircuitboard
+ name: Flatpacker 1001 machine board
+ components:
+ - type: MachineBoard
+ prototype: MachineFlatpacker
+ requirements:
+ Manipulator: 2
+ MatterBin: 1
+ materialRequirements:
+ Steel: 1
+
- type: entity
id: EmitterCircuitboard
parent: BaseMachineCircuitboard
diff --git a/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml b/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml
new file mode 100644
index 0000000000..31578bdd9c
--- /dev/null
+++ b/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml
@@ -0,0 +1,33 @@
+- type: entity
+ parent: BaseItem
+ id: BaseFlatpack
+ name: base flatpack
+ description: A flatpack used for constructing something.
+ categories:
+ - hideSpawnMenu
+ components:
+ - type: Item
+ size: Normal
+ - type: Sprite
+ sprite: Objects/Devices/flatpack.rsi
+ layers:
+ - state: base
+ - state: overlay
+ color: "#cec8ac"
+ map: ["enum.FlatpackVisualLayers.Overlay"]
+ - state: icon-default
+ - type: Appearance
+ - type: Flatpack
+ boardColors:
+ command: "#334E6D"
+ medical: "#52B4E9"
+ service: "#9FED58"
+ engineering: "#EFB341"
+ security: "#DE3A3A"
+ science: "#D381C9"
+ supply: "#A46106"
+ - type: StaticPrice
+ price: 500
+ - type: Tag
+ tags:
+ - DroneUsable
diff --git a/Resources/Prototypes/Entities/Objects/Devices/station_beacon.yml b/Resources/Prototypes/Entities/Objects/Devices/station_beacon.yml
index da389bc0a7..5f1a06a283 100644
--- a/Resources/Prototypes/Entities/Objects/Devices/station_beacon.yml
+++ b/Resources/Prototypes/Entities/Objects/Devices/station_beacon.yml
@@ -97,7 +97,7 @@
- type: entity
parent: BaseItem
id: StationBeaconPart
- name: station beacon assembly
+ name: station beacon flatpack
description: A flatpack used for constructing a station beacon.
components:
- type: Item
diff --git a/Resources/Prototypes/Entities/Objects/Fun/toys.yml b/Resources/Prototypes/Entities/Objects/Fun/toys.yml
index b2ba859d06..ae6d37b554 100644
--- a/Resources/Prototypes/Entities/Objects/Fun/toys.yml
+++ b/Resources/Prototypes/Entities/Objects/Fun/toys.yml
@@ -168,6 +168,7 @@
components:
- type: Sprite
state: plushie_rouny
+ - type: Rotatable
- type: entity
parent: BasePlushie
diff --git a/Resources/Prototypes/Entities/Objects/Power/antimatter_part.yml b/Resources/Prototypes/Entities/Objects/Power/antimatter_part.yml
index a3674178bf..62aa0dccdd 100644
--- a/Resources/Prototypes/Entities/Objects/Power/antimatter_part.yml
+++ b/Resources/Prototypes/Entities/Objects/Power/antimatter_part.yml
@@ -1,8 +1,8 @@
- type: entity
parent: BaseItem
id: AmePart
- name: AME part
- description: A flatpack used for constructing an antimatter engine reactor. Use a multitool to unpack it.
+ name: AME flatpack
+ description: A flatpack used for constructing an antimatter engine reactor.
components:
- type: Item
size: Normal
@@ -10,7 +10,8 @@
- type: Sprite
sprite: Objects/Power/AME/ame_part.rsi
state: box
- - type: AmePart
+ - type: Flatpack
+ entity: AmeShielding
- type: StaticPrice
price: 500
- type: GuideHelp
diff --git a/Resources/Prototypes/Entities/Objects/Power/solar_parts.yml b/Resources/Prototypes/Entities/Objects/Power/solar_parts.yml
index 7c8e7fa495..0fcd11f9b0 100644
--- a/Resources/Prototypes/Entities/Objects/Power/solar_parts.yml
+++ b/Resources/Prototypes/Entities/Objects/Power/solar_parts.yml
@@ -1,14 +1,16 @@
- type: entity
parent: BaseItem
id: SolarAssemblyPart
- name: solar assembly part
+ name: solar assembly flatpack
+ description: A flatpack used for constructing a solar assembly.
components:
- type: Item
size: Normal
+ - type: Flatpack
+ entity: SolarAssembly
- type: Sprite
sprite: Objects/Power/solar_parts.rsi
state: solar_assembly_parts
- type: Tag
tags:
- - SolarAssemblyPart
- - DroneUsable
+ - DroneUsable
diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml
index 8774dbf60e..e819d6c39f 100644
--- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml
+++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml
@@ -552,28 +552,59 @@
parent: BaseItem
description: A plunger with a red plastic suction-cup and a wooden handle. Used to unclog drains.
components:
- - type: Tag
- tags:
- - Plunger
- - WhitelistChameleon
- - type: Sprite
- sprite: Objects/Specific/Janitorial/plunger.rsi
- state: plunger
- - type: Item
- sprite: Objects/Specific/Janitorial/plunger.rsi
- heldPrefix: plunger
- - type: ItemCooldown
- - type: GuideHelp
- guides:
- - Janitorial
- - type: Clothing
- sprite: Objects/Specific/Janitorial/plunger.rsi
- slots:
- - HEAD
- clothingVisuals:
- head:
- - state: equipped-HELMET
- offset: "0, 0.15625"
+ - type: Tag
+ tags:
+ - Plunger
+ - WhitelistChameleon
+ - type: Sprite
+ sprite: Objects/Specific/Janitorial/plunger.rsi
+ state: plunger
+ - type: Item
+ sprite: Objects/Specific/Janitorial/plunger.rsi
+ heldPrefix: plunger
+ - type: ItemCooldown
+ - type: GuideHelp
+ guides:
+ - Janitorial
+ - type: Clothing
+ sprite: Objects/Specific/Janitorial/plunger.rsi
+ slots:
+ - HEAD
+ clothingVisuals:
+ head:
+ - state: equipped-HELMET
+ offset: "0, 0.15625"
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape: !type:PhysShapeCircle
+ radius: 0.2
+ density: 5
+ mask:
+ - ItemMask
+ restitution: 0.3
+ friction: 0.2
+ projectile:
+ shape:
+ !type:PhysShapeAabb
+ bounds: "-0.1,-0.1,0.1,0.1"
+ hard: false
+ mask:
+ - Impassable
+ - BulletImpassable
+ - type: EmbeddableProjectile
+ sound: /Audio/Weapons/pop.ogg
+ embedOnThrow: True
+ - type: ThrowingAngle
+ angle: 0
+ - type: Ammo
+ muzzleFlash: null
+ - type: Projectile
+ deleteOnCollide: false
+ onlyCollideWhenShot: true
+ damage:
+ types:
+ Blunt: 3
- type: entity
parent: BaseItem
diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml
index 1ef73f2396..c34ca70c45 100644
--- a/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml
+++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml
@@ -2,7 +2,7 @@
id: BodyBag_Container
parent: BaseFoldable
name: body bag
- description: A plastic bag designed for the storage and transportation of cadavers.
+ description: A plastic bag designed for the storage and transportation of cadavers to stop body decomposition.
components:
- type: Item
size: Small
@@ -85,7 +85,7 @@
- type: entity
id: BodyBag_Folded
name: body bag
- description: A plastic bag designed for the storage and transportation of cadavers.
+ description: A plastic bag designed for the storage and transportation of cadavers to stop body decomposition.
parent: BodyBag_Container
suffix: folded
components:
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml
index 4b7125f571..db98c6eabe 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml
@@ -1,4 +1,4 @@
-- type: entity
+- type: entity
name: bow
parent: BaseItem
id: BaseBow
@@ -31,18 +31,19 @@
soundEmpty: null
- type: ItemSlots
slots:
- arrow:
- name: Arrow
+ projectiles:
+ name: Projectiles
startingItem: null
insertSound: /Audio/Weapons/Guns/Misc/arrow_nock.ogg
whitelist:
tags:
- Arrow
+ - Plunger
- type: ContainerContainer
containers:
- arrow: !type:ContainerSlot
+ projectiles: !type:ContainerSlot
- type: ContainerAmmoProvider
- container: arrow
+ container: projectiles
- type: entity
id: BowImprovised
@@ -55,6 +56,9 @@
- state: unwielded-arrow
map: [ arrow ]
visible: false
+ - state: unwielded-plunger
+ map: [ plunger ]
+ visible: false
# to elucidate whats intended here:
# arrow is inserted -> ItemMapper sets layer with map `arrow` to visible
# bow is wielded -> generic vis sets states of layers with map `arrow` and `base`
@@ -63,17 +67,25 @@
- type: ItemMapper
spriteLayers:
- arrow
+ - plunger
mapLayers:
arrow:
whitelist:
tags:
- Arrow
+ plunger:
+ whitelist:
+ tags:
+ - Plunger
- type: GenericVisualizer
visuals:
enum.WieldableVisuals.Wielded:
arrow:
True: { state: wielded-arrow }
False: { state: unwielded-arrow }
+ plunger:
+ True: { state: wielded-plunger }
+ False: { state: unwielded-plunger }
base:
True: { state: wielded }
False: { state: unwielded }
diff --git a/Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml b/Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml
index a146e9ddcf..667c5a139e 100644
--- a/Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml
+++ b/Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml
@@ -26,9 +26,12 @@
sprite: Structures/Wallmounts/Lighting/light_tube.rsi
drawdepth: WallMountedItems
layers:
- - state: on
- map: ["enum.PoweredLightLayers.Base"]
- state: on
+ - map: ["enum.PoweredLightLayers.Base"]
+ state: base
+ - map: ["enum.PoweredLightLayers.Glow"]
+ state: glow
+ shader: unshaded
+ state: base
- type: PointLight
radius: 10
energy: 0.8
@@ -98,6 +101,12 @@
- type: PoweredLightVisuals
blinkingSound:
path: "/Audio/Machines/light_tube_on.ogg"
+ spriteStateMap:
+ empty: empty
+ off: base
+ on: base
+ broken: broken
+ burned: burned
- type: entity
id: Poweredlight
@@ -106,7 +115,7 @@
parent: PoweredlightEmpty
components:
- type: Sprite
- state: off
+ state: base
- type: PointLight
enabled: true
- type: PoweredLight
@@ -208,7 +217,7 @@
path: /Audio/Ambience/Objects/light_hum.ogg
- type: Sprite
sprite: Structures/Wallmounts/Lighting/light_small.rsi
- state: on
+ state: base
- type: PointLight
energy: 1.0
radius: 6
@@ -272,6 +281,12 @@
range: 200
- type: Appearance
- type: PoweredLightVisuals
+ spriteStateMap:
+ empty: empty
+ off: base
+ on: base
+ broken: broken
+ burned: burned
- type: DeviceLinkSink
ports:
- On
@@ -284,7 +299,7 @@
parent: PoweredSmallLightEmpty
components:
- type: Sprite
- state: off
+ state: base
- type: PointLight
enabled: true
- type: PoweredLight
diff --git a/Resources/Prototypes/Entities/Structures/Machines/flatpacker.yml b/Resources/Prototypes/Entities/Structures/Machines/flatpacker.yml
new file mode 100644
index 0000000000..529d2ee9f0
--- /dev/null
+++ b/Resources/Prototypes/Entities/Structures/Machines/flatpacker.yml
@@ -0,0 +1,82 @@
+- type: entity
+ id: MachineFlatpacker
+ parent: [ BaseMachinePowered, ConstructibleMachine ]
+ name: Flatpacker 1001
+ description: An industrial machine used for expediting machine construction across the station.
+ components:
+ - type: Sprite
+ sprite: Structures/Machines/flatpacker.rsi
+ snapCardinals: true
+ layers:
+ - state: base
+ - state: screen
+ map: ["enum.PowerDeviceVisualLayers.Powered"]
+ shader: unshaded
+ - state: panel
+ map: ["enum.WiresVisualLayers.MaintenancePanel"]
+ - state: packing
+ map: ["anim"]
+ visible: false
+ - state: inserting
+ visible: false
+ map: ["enum.MaterialStorageVisualLayers.Inserting"]
+ - type: GenericVisualizer
+ visuals:
+ enum.PowerDeviceVisuals.Powered:
+ enum.PowerDeviceVisualLayers.Powered:
+ True: { visible: true }
+ False: { visible: false }
+ enum.FlatpackCreatorVisuals.Packing:
+ anim:
+ True: { visible: true }
+ False: { visible: false }
+ - type: FlatpackCreator
+ baseMaterialCost:
+ Steel: 600
+ Plastic: 200
+ - type: Machine
+ board: FlatpackerMachineCircuitboard
+ - type: MaterialStorage
+ whitelist:
+ tags:
+ - Sheet
+ - RawMaterial
+ - Ingot
+ - type: AmbientSound
+ enabled: false
+ volume: 5
+ range: 3
+ sound:
+ path: /Audio/Items/rped.ogg
+ - type: WiresPanel
+ - type: WiresVisuals
+ - type: Wires
+ boardName: wires-board-name-flatpacker
+ layoutId: Flatpacker
+ - type: Appearance
+ - type: ActivatableUI
+ key: enum.FlatpackCreatorUIKey.Key
+ - type: ActivatableUIRequiresPower
+ - type: UserInterface
+ interfaces:
+ - key: enum.FlatpackCreatorUIKey.Key
+ type: FlatpackCreatorBoundUserInterface
+ - type: ItemSlots
+ slots:
+ board_slot:
+ name: flatpacker-item-slot-name
+ whitelist:
+ components:
+ - MachineBoard
+ - type: ContainerContainer
+ containers:
+ machine_board: !type:Container
+ machine_parts: !type:Container
+ board_slot: !type:ContainerSlot
+ - type: Construction
+ containers:
+ - machine_parts
+ - machine_board
+ - board_slot
+ - type: StaticPrice
+ price: 2000
diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
index 171f3fcbdd..0b545c499c 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
@@ -389,6 +389,7 @@
- MicrowaveMachineCircuitboard
- ElectricGrillMachineCircuitboard
- FatExtractorMachineCircuitboard
+ - FlatpackerMachineCircuitboard
- SheetifierMachineCircuitboard
- ShuttleConsoleCircuitboard
- RadarConsoleCircuitboard
diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/solar.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/solar.yml
index 750bdadf06..445ee0728d 100644
--- a/Resources/Prototypes/Entities/Structures/Power/Generation/solar.yml
+++ b/Resources/Prototypes/Entities/Structures/Power/Generation/solar.yml
@@ -41,7 +41,7 @@
loadNode: output
sprite: Structures/Power/Generation/solar_panel.rsi
state: static
- collectionName: SolarPanel
+ collectionName: SolarPanel
- type: Anchorable
- type: Pullable
- type: Electrified
@@ -157,6 +157,7 @@
- type: Construction
graph: SolarPanel
node: solarassembly
+ defaultTarget: solarpanel
- type: entity
id: SolarTracker
diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/service_light.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/service_light.yml
index 80b92b94fd..903b9a7005 100644
--- a/Resources/Prototypes/Entities/Structures/Wallmounts/service_light.yml
+++ b/Resources/Prototypes/Entities/Structures/Wallmounts/service_light.yml
@@ -8,9 +8,12 @@
sprite: Structures/Wallmounts/service_light.rsi
drawdepth: WallMountedItems
layers:
- - state: off
- map: ["enum.PoweredLightLayers.Base"]
- state: off
+ - map: ["enum.PoweredLightLayers.Base"]
+ state: base
+ - map: ["enum.PoweredLightLayers.Glow"]
+ state: glow
+ shader: unshaded
+ state: base
- type: PointLight
radius: 1
energy: 1
diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/walldispenser.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/walldispenser.yml
index 3a1e0d3d98..fae044e729 100644
--- a/Resources/Prototypes/Entities/Structures/Wallmounts/walldispenser.yml
+++ b/Resources/Prototypes/Entities/Structures/Wallmounts/walldispenser.yml
@@ -79,3 +79,5 @@
reagents:
- ReagentId: WeldingFuel
Quantity: 1000
+ - type: ReagentTank
+ tankType: Fuel
diff --git a/Resources/Prototypes/Recipes/Construction/structures.yml b/Resources/Prototypes/Recipes/Construction/structures.yml
index 75c3efcffb..c9c7a8fe45 100644
--- a/Resources/Prototypes/Recipes/Construction/structures.yml
+++ b/Resources/Prototypes/Recipes/Construction/structures.yml
@@ -1045,7 +1045,7 @@
description: A wall light fixture. Use light tubes.
icon:
sprite: Structures/Wallmounts/Lighting/light_tube.rsi
- state: off
+ state: base
objectType: Structure
placementMode: SnapgridCenter
canRotate: true
@@ -1065,7 +1065,7 @@
description: A wall light fixture. Use light bulbs.
icon:
sprite: Structures/Wallmounts/Lighting/light_small.rsi
- state: off
+ state: base
objectType: Structure
placementMode: SnapgridCenter
canRotate: true
diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml
index 38c4c247ac..3b5c04f4fe 100644
--- a/Resources/Prototypes/Recipes/Lathes/electronics.yml
+++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml
@@ -619,6 +619,15 @@
Steel: 100
Glass: 900
+- type: latheRecipe
+ id: FlatpackerMachineCircuitboard
+ result: FlatpackerMachineCircuitboard
+ completetime: 4
+ materials:
+ Steel: 100
+ Glass: 900
+ Gold: 100
+
- type: latheRecipe
id: SheetifierMachineCircuitboard
result: SheetifierMachineCircuitboard
diff --git a/Resources/Prototypes/Research/industrial.yml b/Resources/Prototypes/Research/industrial.yml
index f287bcd953..d991645be0 100644
--- a/Resources/Prototypes/Research/industrial.yml
+++ b/Resources/Prototypes/Research/industrial.yml
@@ -27,6 +27,18 @@
recipeUnlocks:
- PowerCellHigh
+- type: technology
+ id: MechanicalCompression
+ name: research-technology-mechanical-compression
+ icon:
+ sprite: Structures/Machines/flatpacker.rsi
+ state: base
+ discipline: Industrial
+ tier: 1
+ cost: 10000
+ recipeUnlocks:
+ - FlatpackerMachineCircuitboard
+
- type: technology
id: CompactPower
name: research-technology-compact-power
diff --git a/Resources/Prototypes/Shaders/shaders.yml b/Resources/Prototypes/Shaders/shaders.yml
index 700ad32536..560f6b576d 100644
--- a/Resources/Prototypes/Shaders/shaders.yml
+++ b/Resources/Prototypes/Shaders/shaders.yml
@@ -2,6 +2,12 @@
id: CircleMask
kind: source
path: "/Textures/Shaders/circle_mask.swsl"
+ params:
+ CircleRadius: 15.0
+ CircleMinDist: 0.25
+ CirclePow: 0.5
+ CircleMax: 4.0
+ CircleMult: 0.5
- type: shader
id: GradientCircleMask
@@ -87,3 +93,9 @@
id: HorizontalCut
kind: source
path: "/Textures/Shaders/hcut.swsl"
+
+# Stylized simulation of blindness
+- type: shader
+ id: Cataracts
+ kind: source
+ path: "/Textures/Shaders/cataracts.swsl"
diff --git a/Resources/Prototypes/Species/arachnid.yml b/Resources/Prototypes/Species/arachnid.yml
index 4b96f81478..84ee5c7e2d 100644
--- a/Resources/Prototypes/Species/arachnid.yml
+++ b/Resources/Prototypes/Species/arachnid.yml
@@ -64,6 +64,12 @@
Chest:
points: 1
required: false
+ Legs:
+ points: 2
+ required: false
+ Arms:
+ points: 2
+ required: false
- type: humanoidBaseSprite
id: MobArachnidHead
diff --git a/Resources/Prototypes/Species/diona.yml b/Resources/Prototypes/Species/diona.yml
index c7cb4ea678..778d549cc3 100644
--- a/Resources/Prototypes/Species/diona.yml
+++ b/Resources/Prototypes/Species/diona.yml
@@ -47,6 +47,12 @@
Chest:
points: 1
required: false
+ Legs:
+ points: 2
+ required: false
+ Arms:
+ points: 2
+ required: false
Overlay:
points: 1
required: true
diff --git a/Resources/Prototypes/Species/reptilian.yml b/Resources/Prototypes/Species/reptilian.yml
index 33d5306ccd..daed0f9fd1 100644
--- a/Resources/Prototypes/Species/reptilian.yml
+++ b/Resources/Prototypes/Species/reptilian.yml
@@ -55,6 +55,15 @@
HeadSide:
points: 1
required: false
+ Chest:
+ points: 1
+ required: false
+ Legs:
+ points: 2
+ required: false
+ Arms:
+ points: 2
+ required: false
- type: humanoidBaseSprite
id: MobReptilianHead
diff --git a/Resources/Prototypes/Species/slime.yml b/Resources/Prototypes/Species/slime.yml
index 1cfd0667db..035d6bbc81 100644
--- a/Resources/Prototypes/Species/slime.yml
+++ b/Resources/Prototypes/Species/slime.yml
@@ -43,6 +43,9 @@
HeadTop: # :skull:
points: 1 # Corvax Sponsors
required: false
+ Chest:
+ points: 1
+ required: false
Legs:
points: 2
required: false
diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml
index a8e8ef1488..44e8d9593f 100644
--- a/Resources/Prototypes/tags.yml
+++ b/Resources/Prototypes/tags.yml
@@ -1011,9 +1011,6 @@
- type: Tag
id: Soap
-- type: Tag
- id: SolarAssemblyPart
-
- type: Tag
id: SolarTrackerElectronics
diff --git a/Resources/Prototypes/typing_indicator.yml b/Resources/Prototypes/typing_indicator.yml
index 74844699dc..43c5d12858 100644
--- a/Resources/Prototypes/typing_indicator.yml
+++ b/Resources/Prototypes/typing_indicator.yml
@@ -41,3 +41,8 @@
typingState: spider0
idleState: spider3 # Corvax-TypingIndicator
offset: 0, 0.125
+
+- type: typingIndicator
+ id: slime
+ typingState: slime0
+ offset: 0, 0.125
diff --git a/Resources/Textures/Interface/Actions/eyeclose.png b/Resources/Textures/Interface/Actions/eyeclose.png
new file mode 100644
index 0000000000..3e88902ae7
Binary files /dev/null and b/Resources/Textures/Interface/Actions/eyeclose.png differ
diff --git a/Resources/Textures/Interface/Actions/eyeopen.png b/Resources/Textures/Interface/Actions/eyeopen.png
new file mode 100644
index 0000000000..6bcb4d6bf2
Binary files /dev/null and b/Resources/Textures/Interface/Actions/eyeopen.png differ
diff --git a/Resources/Textures/Interface/Actions/meta.json b/Resources/Textures/Interface/Actions/meta.json
index 9998f66234..4a9cb8f91b 100644
--- a/Resources/Textures/Interface/Actions/meta.json
+++ b/Resources/Textures/Interface/Actions/meta.json
@@ -5,7 +5,7 @@
"y": 32
},
"license": "CC-BY-SA-3.0",
- "copyright": "Taken from https://github.com/tgstation/tgstation/commit/3d049e69fe71a0be2133005e65ea469135d648c8. Harm and disarm heavily modified. Web made by jackfrost (github) for SS14. disarm, disarmOff, harm, harmOff localized by discord: jerryimmouse(848188612293951506)",
+ "copyright": "Taken from https://github.com/tgstation/tgstation/commit/3d049e69fe71a0be2133005e65ea469135d648c8. Harm and disarm heavily modified. Web made by jackfrost (github) for SS14. disarm, disarmOff, harm, harmOff localized by discord: jerryimmouse(848188612293951506). Eyeclose and Eyeopen by Bhijn and Myr (deathride58 on Github), under CC0.",
"states": [
{
"name": "internal0"
@@ -51,6 +51,12 @@
},
{
"name": "ghostHearingToggled"
+ },
+ {
+ "name": "eyeopen"
+ },
+ {
+ "name": "eyeclose"
}
]
}
diff --git a/Resources/Textures/Interface/Alerts/human_alive.rsi/meta.json b/Resources/Textures/Interface/Alerts/human_alive.rsi/meta.json
index 93c2b2dd1f..b1db844f8c 100644
--- a/Resources/Textures/Interface/Alerts/human_alive.rsi/meta.json
+++ b/Resources/Textures/Interface/Alerts/human_alive.rsi/meta.json
@@ -1,7 +1,7 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
- "copyright": "https://github.com/tgstation/tgstation/commits/50689f89a40e5e7a2732a0c5fb38c787b69f7d28/icons/hud/screen_gen.dmi and translated by KREKS",
+ "copyright": "https://github.com/tgstation/tgstation/commits/50689f89a40e5e7a2732a0c5fb38c787b69f7d28/icons/hud/screen_gen.dmi and translated by KREKS, health4 modified by Errant",
"size": {
"x": 32,
"y": 32
diff --git a/Resources/Textures/Objects/Devices/flatpack.rsi/base.png b/Resources/Textures/Objects/Devices/flatpack.rsi/base.png
new file mode 100644
index 0000000000..628808adc7
Binary files /dev/null and b/Resources/Textures/Objects/Devices/flatpack.rsi/base.png differ
diff --git a/Resources/Textures/Objects/Devices/flatpack.rsi/icon-default.png b/Resources/Textures/Objects/Devices/flatpack.rsi/icon-default.png
new file mode 100644
index 0000000000..da9da035a0
Binary files /dev/null and b/Resources/Textures/Objects/Devices/flatpack.rsi/icon-default.png differ
diff --git a/Resources/Textures/Objects/Devices/flatpack.rsi/meta.json b/Resources/Textures/Objects/Devices/flatpack.rsi/meta.json
new file mode 100644
index 0000000000..6381b5c80b
--- /dev/null
+++ b/Resources/Textures/Objects/Devices/flatpack.rsi/meta.json
@@ -0,0 +1,20 @@
+{
+ "version": 1,
+ "license": "CC0-1.0",
+ "copyright": "Created by EmoGarbage404 (github) for SS14",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "base"
+ },
+ {
+ "name": "overlay"
+ },
+ {
+ "name": "icon-default"
+ }
+ ]
+}
diff --git a/Resources/Textures/Objects/Devices/flatpack.rsi/overlay.png b/Resources/Textures/Objects/Devices/flatpack.rsi/overlay.png
new file mode 100644
index 0000000000..c066933cd5
Binary files /dev/null and b/Resources/Textures/Objects/Devices/flatpack.rsi/overlay.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/meta.json
index f19b1121c1..71e01e8b14 100644
--- a/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/meta.json
+++ b/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/meta.json
@@ -12,12 +12,18 @@
},
{
"name": "unwielded-arrow"
+ },
+ {
+ "name": "unwielded-plunger"
},
{
"name": "wielded"
},
{
"name": "wielded-arrow"
+ },
+ {
+ "name": "wielded-plunger"
},
{
"name": "equipped-BACKPACK",
diff --git a/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/unwielded-plunger.png b/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/unwielded-plunger.png
new file mode 100644
index 0000000000..9b1c3a79b5
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/unwielded-plunger.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/wielded-plunger.png b/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/wielded-plunger.png
new file mode 100644
index 0000000000..4c2ec4441b
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/wielded-plunger.png differ
diff --git a/Resources/Textures/Shaders/cataracts.swsl b/Resources/Textures/Shaders/cataracts.swsl
new file mode 100644
index 0000000000..5ba33db9e5
--- /dev/null
+++ b/Resources/Textures/Shaders/cataracts.swsl
@@ -0,0 +1,76 @@
+// This is a shader simulation of cataracts. Not exactly a realistic/faithful one (the faithful route would be bloom and blur strong enough to make anyone's eyes bleed), but rather, a stylized one!
+// This description and explainer here is mostly for the sake of future reference, and to make sure the artistic intent doesn't end up lost throughout the years to come.
+// The effects this goes for are based largely off reports from blind friends and colleagues alike. Mostly reported experiences of cataracts, but also other forms of blindness, such as neuro-opthalmic injuries.
+// The distortion here does the bulk of the work. This simulates the most common thing that those with the condition report: of everything being an amorphous blur, of seeing double even out of one eye, and more.
+// Of course, it'd be incredibly straight-forward to go for blur. However, this runs into a notable issue: making a blur strong enough to actually be debilitating would be pretty intense on GPU performance.
+// There's additional issues with blur as well, but the main sour point is that it *really* doesn't work well in 2D, where everything has the same effective focal point.
+// However, distortion is surprisingly suitable for the purpose of making everything amorphous, even if it's less a blur and more a haze.
+// This distortion also moves a bit. This definitely leans far more towards simulating neuro-opthalmic injuries than cataracts specifically (this is effectively oscillopsia), but it does make sure you can't negate the effect by memorizing what part of the screen correlates to exactly where.
+// As a bonus: this also simulates less-talked-about experiences, such as always seeing multiple, and attempts to rely on far-sighted vision being immensely disorienting.
+// But being unable to make out what's happening in your vision is far from the only pain that blind folks have to put up with.
+// Notably: another very common report is that it can be hard (but not impossible) to make out color, and that every light source is incredibly *bright* to the point of causing pain.
+// This, too, would be far more straight-forward to implement by slapping a heavy bloom filter on the effect.
+// ... However, this is a bad idea for a pretty obvious reason: heavy bloom almost always causes eyestrain. The idea here is to simulate blindness, not *cause* blindness!
+// So instead, this takes a slightly more creative route: aggressively tonemapping the distorted output, and pulling in a distorted lightmap to blend on top.
+// These two steps combined create a foggy and surprisingly blurry image. The result is deliberately muted a bit to reduce eyestrain, but it does lead to any amount of light overpowering everything else, which lines up with reported experiences.
+// All of this in combination manages to achieve an experience that hits the same notes of what's common for blind folks to report, but in a *very* stylized manner.
+// And of course, more importantly: the combination ensures that if your character is blind, then you simply can't see shit. You can certainly *try*, just as blind folks IRL are able to, but that'll be fruitless!
+// Oh. God. We're already at 18 lines of header comments. We rambled, huh? Anyway, thank you for coming to our TED talk. - Bhijn & Myr
+
+// Boilerplate vars
+uniform sampler2D SCREEN_TEXTURE;
+uniform sampler2D LIGHT_TEXTURE;
+uniform highp float Zoom;
+
+// Base distortion
+uniform highp float DistortionScalar; // Scales the total distortion applied to the final image.
+const highp float DistortionCenterRadius = 200.0; // radius of the gradient used to tone down the distortion effect
+const highp float DistortionCenterMinDist = 0.25; // minimum distance from the center of the screen for the distortion to appear at all
+const highp float DistortionCenterPow = 1.1; // the exponent used for the distortion center
+const highp float DistortionGradientMax = 8.0; // Maximum value for the gradient used for the distortion
+const highp float DistortionZoomPow = 0.5; // exponent for the zoom uniform when applied to distortion. The math is funky
+const highp float NoiseScalar = 10.0; // Multiplies the size of the FBM noise
+
+// Base cloudiness
+uniform highp float CloudinessScalar;
+const highp float CloudinessCenterRadius = 125.0; // radius of the gradient used to tone down the cloudiness
+const highp float CloudinessCenterMinDist = 0.2; // minimum distance from the center of the screen for cloudiness to appear at all
+const highp float CloudinessCenterPow = 2.0; // the exponent used for the distortion center
+const highp float CloudinessGradientMax = 8.0; // Maximum value for the gradient used for cloudiness
+const highp float CloudinessGrayscaleMax = 0.8; // maximum desaturation for the cloudiness effect
+const highp float CloudinessGrayscaleMult = 0.15; // multiplier applied to the gradient for the desaturation scalar
+const highp float CloudinessZoomPow = 0.85; // exponent for the zoom uniform when applied to cloudiness
+
+// Additional lightmap pass for the cloudiness
+const highp float CloudyLightDistortionMult = 0.5; // multiplier applied to the total amount of distortion added to the lightmap during the lightmap pass
+const highp float CloudyLightMult = 0.05; // multiplier for scaling the lightmap's brightness
+const highp float CloudyLightGrayscaleMax = 0.25; // maximum amount of grayscale effect for the lightmap
+const highp float CloudyLightGrayscaleMult = 0.15; // multiplier used to scale the grayscale effect
+
+const highp float TimeScale = 0.25;
+
+
+void fragment() {
+ highp vec2 aspect = vec2(1.0/SCREEN_PIXEL_SIZE.x, 1.0/SCREEN_PIXEL_SIZE.y);
+
+ highp float timesin = (sin(TIME * TimeScale) + 0.5) * 0.2;
+ highp float timecos = (cos(TIME * TimeScale) + 0.5) * 0.2;
+
+ highp float distortionZoom = pow(Zoom, DistortionZoomPow);
+
+ highp float centergradient = zCircleGradient(aspect * 0.5, FRAGCOORD.xy, DistortionGradientMax, DistortionCenterRadius / distortionZoom, DistortionCenterMinDist / distortionZoom, DistortionCenterPow);
+ highp vec2 coord = (FRAGCOORD.xy * SCREEN_PIXEL_SIZE.xy) * aspect * centergradient * 0.0001; // That magic number on the end there is due to how tiny the FBM noise is. It's incredibly noisy.
+ highp vec2 offset = vec2((zFBM(coord * NoiseScalar + timesin) - 0.5) * centergradient, (zFBM(coord * NoiseScalar + timecos) - 0.5) * centergradient);
+ COLOR = zTextureSpec(SCREEN_TEXTURE, Pos + (offset * DistortionScalar));
+
+ highp float cloudyZoom = pow(Zoom, CloudinessZoomPow);
+
+ highp float cloudygradient = zCircleGradient(aspect * 0.5, FRAGCOORD.xy, CloudinessGradientMax, CloudinessCenterRadius / cloudyZoom, CloudinessCenterMinDist / cloudyZoom, CloudinessCenterPow) * CloudinessScalar;
+ COLOR.rgb = mix(COLOR.rgb, vec3(zGrayscale(COLOR.rgb)), min(cloudygradient * CloudinessGrayscaleMult, CloudinessGrayscaleMax));
+ COLOR.rgb = pow(COLOR.rgb, vec3((cloudygradient * CloudinessScalar + 1.0)));
+
+ //technically the highp makes this higher-quality than the actual default frag shader's lightmap sampling but shushhhhhh it looks prettier without as much banding
+ highp vec3 lightsample = (texture2D(LIGHT_TEXTURE, Pos + (offset * DistortionScalar * CloudyLightDistortionMult)).rgb * pow(cloudygradient, 1.0 / CloudinessCenterPow) * CloudyLightMult);
+ lightsample = mix(lightsample, vec3(zGrayscale(lightsample)), min(cloudygradient * CloudyLightGrayscaleMult, CloudyLightGrayscaleMax));
+ COLOR.rgb = COLOR.rgb + lightsample;
+}
diff --git a/Resources/Textures/Shaders/circle_mask.swsl b/Resources/Textures/Shaders/circle_mask.swsl
index a28d4a9a21..872e48989b 100644
--- a/Resources/Textures/Shaders/circle_mask.swsl
+++ b/Resources/Textures/Shaders/circle_mask.swsl
@@ -1,19 +1,17 @@
-uniform highp float ZOOM;
+uniform sampler2D SCREEN_TEXTURE;
+uniform highp float Zoom;
+
+uniform highp float CircleRadius; //= 15.0; // radius of the circular gradient
+uniform highp float CircleMinDist; //= 0.25; // minimum distance from the center of the screen for the gradient
+uniform highp float CirclePow; //= 0.5; // the exponent used for the gradient
+uniform highp float CircleMax; //= 4.0; // Maximum value for the gradient used for the gradient. Don't worry, the end result gets clamped.
+uniform highp float CircleMult; //= 0.5; // Multiplier for the total value of the circle gradient.
+
-highp vec4 circle(in highp vec2 uv, in highp vec2 pos, highp float rad, in highp vec3 color) {
- highp float d = length(pos - uv) - rad;
- highp float t = clamp(d, 0.0, 1.0);
- return vec4(color, t);
-}
void fragment(){
- highp vec2 uv = FRAGCOORD.xy;
- highp vec2 res_xy = vec2(1.0/SCREEN_PIXEL_SIZE.x, 1.0/SCREEN_PIXEL_SIZE.y);
- highp vec2 center = res_xy*0.5;
- highp float radius = 0.05 * res_xy.y / ZOOM;
+ highp vec2 aspect = vec2(1.0/SCREEN_PIXEL_SIZE.x, 1.0/SCREEN_PIXEL_SIZE.y);
+ highp float actualZoom = Zoom;
- highp vec4 layer1 = vec4(vec3(0.0), 0.0);
-
- highp vec4 layer2 = circle(uv, center, radius, vec3(0.0));
-
- COLOR = mix(layer1, layer2, layer2.a);
+ highp float circle = zCircleGradient(aspect * 0.5, FRAGCOORD.xy, CircleMax, CircleRadius / actualZoom, /*CircleMinDist / actualZoom*/ 0.0, CirclePow) * CircleMult;
+ COLOR = mix(vec4(0.0), vec4(vec3(0.0), 1.0), clamp(circle, 0.0, 1.0));
}
diff --git a/Resources/Textures/Shaders/greyscale.swsl b/Resources/Textures/Shaders/greyscale.swsl
index 918f86ae00..4ffdb1334b 100644
--- a/Resources/Textures/Shaders/greyscale.swsl
+++ b/Resources/Textures/Shaders/greyscale.swsl
@@ -1,6 +1,5 @@
void fragment() {
highp vec4 color = zTexture(UV);
- highp float grey = dot(color.rgb, vec3(0.299, 0.587, 0.114));
- COLOR = vec4(vec3(grey), color.a);
+ COLOR = vec4(vec3(zGrayscale(color.rgb)), color.a);
}
diff --git a/Resources/Textures/Shaders/greyscale_fullscreen.swsl b/Resources/Textures/Shaders/greyscale_fullscreen.swsl
index 40c0f72b59..1d43fef028 100644
--- a/Resources/Textures/Shaders/greyscale_fullscreen.swsl
+++ b/Resources/Textures/Shaders/greyscale_fullscreen.swsl
@@ -3,7 +3,5 @@ uniform sampler2D SCREEN_TEXTURE;
void fragment() {
highp vec4 color = zTextureSpec(SCREEN_TEXTURE, UV);
- highp float grey = dot(color.rgb, vec3(0.299, 0.587, 0.114));
-
- COLOR = vec4(vec3(grey), color.a);
+ COLOR = vec4(vec3(zGrayscale(color.rgb)), color.a);
}
diff --git a/Resources/Textures/Shaders/outline.swsl b/Resources/Textures/Shaders/outline.swsl
index bef244555c..df031d7d6e 100644
--- a/Resources/Textures/Shaders/outline.swsl
+++ b/Resources/Textures/Shaders/outline.swsl
@@ -34,10 +34,6 @@ uniform highp float light_boost; // = 4.0;
uniform highp float light_gamma; // = 1.0;
uniform highp float light_whitepoint; // = 1.0;
-highp float grayscale(highp vec3 col) {
- return mix(0.0, 1.0, (col.r * 0.299) + (col.g * 0.587) + (col.b * 0.114)); //These luminance values are taken from Rec. ITU-R BT.601-7. This isn't suitable for player-facing grayscaling due to SDTV having a funky colorspace, but it's perfect for outlines.
-}
-
void fragment() {
highp vec4 col = zTexture(UV);
highp vec2 ps = TEXTURE_PIXEL_SIZE;
@@ -78,7 +74,7 @@ void fragment() {
maxa = max(a, maxa);
mina = min(a, mina);
- lowp float sampledLight = outline_fullbright ? 1.0 : clamp( (pow( grayscale(lightSample.rgb) * light_whitepoint, light_gamma) / light_whitepoint ) * light_boost, 0.0, 1.0);
+ lowp float sampledLight = outline_fullbright ? 1.0 : clamp( (pow( zGrayscale_BT601(lightSample.rgb) * light_whitepoint, light_gamma) / light_whitepoint ) * light_boost, 0.0, 1.0);
COLOR = mix(col, outline_color * vec4(vec3(1.0), sampledLight), maxa - col.a);
lightSample = vec3(1.0);
}
diff --git a/Resources/Textures/Shaders/paperstamp.swsl b/Resources/Textures/Shaders/paperstamp.swsl
index 1f2349970f..f50330c24c 100644
--- a/Resources/Textures/Shaders/paperstamp.swsl
+++ b/Resources/Textures/Shaders/paperstamp.swsl
@@ -3,30 +3,6 @@
// affected by the widget layout/position.
uniform highp vec2 objCoord;
-// Magic, well-known 2d random function; makes perlin-like noise
-highp vec2 random(highp vec2 uv){
- uv = vec2( dot(uv, vec2(127.1,311.7) ),
- dot(uv, vec2(269.5,183.3) ) );
- return -1.0 + 2.0 * fract(sin(uv) * 43758.5453123);
-}
-
-highp float noise(highp vec2 uv) {
- highp vec2 uv_i = floor(uv);
- highp vec2 uv_f = fract(uv);
-
- highp vec2 t = smoothstep(0.0, 1.0, uv_f);
-
- // Sample the random function and run a bilinear filter to smooth it out
- highp float tl = dot( random(uv_i + vec2(0.0,0.0) ), uv_f - vec2(0.0,0.0) );
- highp float tr = dot( random(uv_i + vec2(1.0,0.0) ), uv_f - vec2(1.0,0.0) );
- highp float bl = dot( random(uv_i + vec2(0.0,1.0) ), uv_f - vec2(0.0,1.0) );
- highp float br = dot( random(uv_i + vec2(1.0,1.0) ), uv_f - vec2(1.0,1.0) );
-
- highp float tA = mix( tl, tr, t.x );
- highp float tB = mix( bl, br, t.x );
- return mix( tA, tB, t.y ) + 0.5;
-}
-
void fragment() {
// Stamps have orientation, and the texture sampling is nearest
// pixel, so run a bilinear filter to smooth out the edges.
@@ -45,8 +21,8 @@ void fragment() {
// Add a bit of noise to mimic imperfect contact with the paper
{
- highp float stampNoise = noise((FRAGCOORD.xy - objCoord) * vec2(0.03, 0.03)) *
- noise((FRAGCOORD.xy - objCoord) * vec2(0.08, 0.08));
+ highp float stampNoise = zNoise((FRAGCOORD.xy - objCoord) * vec2(0.03, 0.03)) *
+ zNoise((FRAGCOORD.xy - objCoord) * vec2(0.08, 0.08));
COLOR.a *= min(0.9, 0.4 + smoothstep(0.05, 0.3, stampNoise));
}
}
diff --git a/Resources/Textures/Shaders/radiation.swsl b/Resources/Textures/Shaders/radiation.swsl
index 0daf1c24df..0214b207a8 100644
--- a/Resources/Textures/Shaders/radiation.swsl
+++ b/Resources/Textures/Shaders/radiation.swsl
@@ -6,46 +6,14 @@ uniform highp vec2 renderScale;
uniform highp float life;
uniform highp float range;
-highp vec2 random(highp vec2 uv){
- uv = vec2( dot(uv, vec2(127.1,311.7) ),
- dot(uv, vec2(269.5,183.3) ) );
- return -1.0 + 2.0 * fract(sin(uv) * 43758.5453123);
-}
-
-highp float noise(highp vec2 uv) {
- highp vec2 uv_index = floor(uv);
- highp vec2 uv_fract = fract(uv);
-
- highp vec2 blur = smoothstep(0.0, 1.0, uv_fract);
-
- return mix( mix( dot( random(uv_index + vec2(0.0,0.0) ), uv_fract - vec2(0.0,0.0) ),
- dot( random(uv_index + vec2(1.0,0.0) ), uv_fract - vec2(1.0,0.0) ), blur.x),
- mix( dot( random(uv_index + vec2(0.0,1.0) ), uv_fract - vec2(0.0,1.0) ),
- dot( random(uv_index + vec2(1.0,1.0) ), uv_fract - vec2(1.0,1.0) ), blur.x), blur.y) * 0.5 + 0.5;
-}
-
-highp float fbm(highp vec2 uv) {
- const int octaves = 6;
- highp float amplitude = 0.5;
- highp float frequency = 3.0;
- highp float value = 0.0;
-
- for(int i = 0; i < octaves; i++) {
- value += amplitude * noise(frequency * uv);
- amplitude *= 0.5;
- frequency *= 2.0;
- }
- return value;
-}
-
void fragment() {
highp vec2 finalCoords = (FRAGCOORD.xy - positionInput) / (renderScale * 32.0);
highp float distanceToCenter = length(finalCoords);
highp float nlife = pow(sin(clamp(life, 0.0, 1.0) * 3.141592), 0.5);
highp float on = ((range - distanceToCenter) / range);
highp float n = on;
- highp vec2 fcOffset = vec2(fbm(finalCoords.xy + life / 2.0),fbm(finalCoords.yx + life / 2.0));
- n *= fbm((finalCoords + fcOffset) / (nlife / (n * 1.5))) * 1.1;
+ highp vec2 fcOffset = vec2(zFBM(finalCoords.xy + life / 2.0),zFBM(finalCoords.yx + life / 2.0));
+ n *= zFBM((finalCoords + fcOffset) / (nlife / (n * 1.5))) * 1.1;
n *= clamp(nlife, 0.0, 1.0);
highp float a = 0.0; // Alpha
highp float p = 0.0; // Position between L and R stops
diff --git a/Resources/Textures/Shaders/rainbow.swsl b/Resources/Textures/Shaders/rainbow.swsl
index 85c984ee12..6e474abb1a 100644
--- a/Resources/Textures/Shaders/rainbow.swsl
+++ b/Resources/Textures/Shaders/rainbow.swsl
@@ -14,48 +14,44 @@ const highp float CenterColorRadius = 250.0; // radius of the gradient used to t
const highp float CenterColorMinDist = 0.2; // minimum distance from the center of the screen for the color to appear at all
const highp float CenterColorPow = 1.25; // the exponent used for the color's center
-// hash(), noise(), and hsv2rgb_smooth() were converted from shadertoy examples, which were released under the MIT License:
+// noise() and hsv2rgb_smooth() were converted from shadertoy examples, which were released under the MIT License:
// The MIT License
// Copyright © 2013 Inigo Quilez
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// https://www.youtube.com/c/InigoQuilez
// https://iquilezles.org
-highp vec2 hash( highp vec2 p ) {
- p = vec2( dot(p,vec2(127.1,311.7)), dot(p,vec2(269.5,183.3)) );
- return -1.0 + 2.0*fract(sin(p)*43758.5453123);
-}
highp float noise( highp vec2 p ) {
const highp float K1 = 0.366025404;
const highp float K2 = 0.211324865;
- highp vec2 i = floor( p + (p.x+p.y)*K1 );
+ highp vec2 i = floor( p + (p.x+p.y)*K1 );
highp vec2 a = p - i + (i.x+i.y)*K2;
highp float m = step(a.y,a.x);
highp vec2 o = vec2(m,1.0-m);
highp vec2 b = a - o + K2;
- highp vec2 c = a - 1.0 + 2.0*K2;
+ highp vec2 c = a - 1.0 + 2.0*K2;
highp vec3 h = max( 0.5-vec3(dot(a,a), dot(b,b), dot(c,c) ), 0.0 );
- highp vec3 n = h*h*h*h*vec3( dot(a,hash(i+0.0)), dot(b,hash(i+o)), dot(c,hash(i+1.0)));
+ highp vec3 n = h*h*h*h*vec3( dot(a,zRandom(i+0.0)), dot(b,zRandom(i+o)), dot(c,zRandom(i+1.0)));
return dot( n, vec3(70.0) );
}
highp vec3 hsv2rgb_smooth( highp vec3 c ) {
highp vec3 rgb = clamp( abs(mod(c.x*6.0+vec3(0.0,4.0,2.0),6.0)-3.0)-1.0, 0.0, 1.0 );
- rgb = rgb*rgb*(3.0-2.0*rgb);
- return c.z * mix( vec3(1.0), rgb, c.y);
+ rgb = rgb*rgb*(3.0-2.0*rgb);
+ return c.z * mix( vec3(1.0), rgb, c.y);
}
highp float mixNoise(highp vec2 point, highp float phase) {
highp float time = TIME * TimeScale + phase;
- highp float a = noise( NoiseScale * point - time);
+ highp float a = noise( NoiseScale * point - time);
highp float b = noise( NoiseScale * point + time );
return mix(a,b,0.5);
}
highp float genGradient(highp vec2 center, highp vec2 coord, highp float radius, highp float dist, highp float power) {
- return pow(min(max((length(center - coord) / radius) - dist, 0.0), 1.0), power);
+ return pow(clamp((length(center - coord) / radius) - dist, 0.0, 1.0), power);
}
void fragment() {
diff --git a/Resources/Textures/Structures/Machines/flatpacker.rsi/base.png b/Resources/Textures/Structures/Machines/flatpacker.rsi/base.png
new file mode 100644
index 0000000000..b92a8de43d
Binary files /dev/null and b/Resources/Textures/Structures/Machines/flatpacker.rsi/base.png differ
diff --git a/Resources/Textures/Structures/Machines/flatpacker.rsi/inserting.png b/Resources/Textures/Structures/Machines/flatpacker.rsi/inserting.png
new file mode 100644
index 0000000000..e8226a9553
Binary files /dev/null and b/Resources/Textures/Structures/Machines/flatpacker.rsi/inserting.png differ
diff --git a/Resources/Textures/Structures/Machines/flatpacker.rsi/meta.json b/Resources/Textures/Structures/Machines/flatpacker.rsi/meta.json
new file mode 100644
index 0000000000..0082154aea
--- /dev/null
+++ b/Resources/Textures/Structures/Machines/flatpacker.rsi/meta.json
@@ -0,0 +1,42 @@
+{
+ "version": 1,
+ "license": "CC0-1.0",
+ "copyright": "Based on flatpacker sprites from vgstation, adapted by EmoGarbage404 (github)",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "base"
+ },
+ {
+ "name": "panel"
+ },
+ {
+ "name": "screen"
+ },
+ {
+ "name": "packing",
+ "delays": [
+ [
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1
+ ]
+ ]
+ },
+ {
+ "name": "inserting",
+ "delays": [
+ [
+ 0.2,
+ 0.2,
+ 0.2,
+ 0.2
+ ]
+ ]
+ }
+ ]
+}
diff --git a/Resources/Textures/Structures/Machines/flatpacker.rsi/packing.png b/Resources/Textures/Structures/Machines/flatpacker.rsi/packing.png
new file mode 100644
index 0000000000..2b07b99831
Binary files /dev/null and b/Resources/Textures/Structures/Machines/flatpacker.rsi/packing.png differ
diff --git a/Resources/Textures/Structures/Machines/flatpacker.rsi/panel.png b/Resources/Textures/Structures/Machines/flatpacker.rsi/panel.png
new file mode 100644
index 0000000000..b21c6df3a8
Binary files /dev/null and b/Resources/Textures/Structures/Machines/flatpacker.rsi/panel.png differ
diff --git a/Resources/Textures/Structures/Machines/flatpacker.rsi/screen.png b/Resources/Textures/Structures/Machines/flatpacker.rsi/screen.png
new file mode 100644
index 0000000000..cd09bb993a
Binary files /dev/null and b/Resources/Textures/Structures/Machines/flatpacker.rsi/screen.png differ
diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/condisposal.png b/Resources/Textures/Structures/Piping/disposal.rsi/condisposal.png
index bf9c36d7b2..e18913981b 100644
Binary files a/Resources/Textures/Structures/Piping/disposal.rsi/condisposal.png and b/Resources/Textures/Structures/Piping/disposal.rsi/condisposal.png differ
diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/disposal-charging.png b/Resources/Textures/Structures/Piping/disposal.rsi/disposal-charging.png
index cc09db21b3..dffc305975 100644
Binary files a/Resources/Textures/Structures/Piping/disposal.rsi/disposal-charging.png and b/Resources/Textures/Structures/Piping/disposal.rsi/disposal-charging.png differ
diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/disposal-flush.png b/Resources/Textures/Structures/Piping/disposal.rsi/disposal-flush.png
index 9091d33bdb..851429cc89 100644
Binary files a/Resources/Textures/Structures/Piping/disposal.rsi/disposal-flush.png and b/Resources/Textures/Structures/Piping/disposal.rsi/disposal-flush.png differ
diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/disposal.png b/Resources/Textures/Structures/Piping/disposal.rsi/disposal.png
index ccd12c0fe8..5da3cdfffc 100644
Binary files a/Resources/Textures/Structures/Piping/disposal.rsi/disposal.png and b/Resources/Textures/Structures/Piping/disposal.rsi/disposal.png differ
diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/dispover-charge.png b/Resources/Textures/Structures/Piping/disposal.rsi/dispover-charge.png
index 61d7ce2eeb..3bca7f02a6 100644
Binary files a/Resources/Textures/Structures/Piping/disposal.rsi/dispover-charge.png and b/Resources/Textures/Structures/Piping/disposal.rsi/dispover-charge.png differ
diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/dispover-full.png b/Resources/Textures/Structures/Piping/disposal.rsi/dispover-full.png
index 2437ca93c2..0a07c0a07e 100644
Binary files a/Resources/Textures/Structures/Piping/disposal.rsi/dispover-full.png and b/Resources/Textures/Structures/Piping/disposal.rsi/dispover-full.png differ
diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/dispover-handle.png b/Resources/Textures/Structures/Piping/disposal.rsi/dispover-handle.png
index 313a35c564..51bfc250a3 100644
Binary files a/Resources/Textures/Structures/Piping/disposal.rsi/dispover-handle.png and b/Resources/Textures/Structures/Piping/disposal.rsi/dispover-handle.png differ
diff --git a/Resources/Textures/Structures/Piping/disposal.rsi/dispover-ready.png b/Resources/Textures/Structures/Piping/disposal.rsi/dispover-ready.png
index 8677119376..05e78f74ff 100644
Binary files a/Resources/Textures/Structures/Piping/disposal.rsi/dispover-ready.png and b/Resources/Textures/Structures/Piping/disposal.rsi/dispover-ready.png differ
diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/off.png b/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/base.png
similarity index 100%
rename from Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/off.png
rename to Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/base.png
diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/glow.png b/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/glow.png
new file mode 100644
index 0000000000..0bfe0a7ddb
Binary files /dev/null and b/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/glow.png differ
diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/meta.json
index 5b49fd2cea..09378e1ebd 100644
--- a/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/meta.json
+++ b/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/meta.json
@@ -1 +1 @@
-{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/lighting.dmi", "states": [{"name": "broken", "directions": 4}, {"name": "burned", "directions": 4}, {"name": "empty", "directions": 4}, {"name": "off", "directions": 4}, {"name": "on", "directions": 4}]}
+{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/lighting.dmi", "states": [{"name": "broken", "directions": 4}, {"name": "burned", "directions": 4}, {"name": "empty", "directions": 4}, {"name": "base", "directions": 4}, {"name": "glow", "directions": 4}]}
diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/on.png b/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/on.png
deleted file mode 100644
index 01b6e79d75..0000000000
Binary files a/Resources/Textures/Structures/Wallmounts/Lighting/light_small.rsi/on.png and /dev/null differ
diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/off.png b/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/base.png
similarity index 100%
rename from Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/off.png
rename to Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/base.png
diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/glow.png b/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/glow.png
new file mode 100644
index 0000000000..edffdfe50c
Binary files /dev/null and b/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/glow.png differ
diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/meta.json
index d7e5ae46ad..2f3dc61b23 100644
--- a/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/meta.json
+++ b/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/meta.json
@@ -62,7 +62,7 @@
]
},
{
- "name": "off",
+ "name": "base",
"directions": 4,
"delays": [
[
@@ -80,22 +80,8 @@
]
},
{
- "name": "on",
- "directions": 4,
- "delays": [
- [
- 1
- ],
- [
- 1
- ],
- [
- 1
- ],
- [
- 1
- ]
- ]
+ "name": "glow",
+ "directions": 4
}
]
}
diff --git a/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/on.png b/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/on.png
deleted file mode 100644
index 6b9758914a..0000000000
Binary files a/Resources/Textures/Structures/Wallmounts/Lighting/light_tube.rsi/on.png and /dev/null differ
diff --git a/Resources/Textures/Structures/Wallmounts/service_light.rsi/off.png b/Resources/Textures/Structures/Wallmounts/service_light.rsi/base.png
similarity index 100%
rename from Resources/Textures/Structures/Wallmounts/service_light.rsi/off.png
rename to Resources/Textures/Structures/Wallmounts/service_light.rsi/base.png
diff --git a/Resources/Textures/Structures/Wallmounts/service_light.rsi/glow.png b/Resources/Textures/Structures/Wallmounts/service_light.rsi/glow.png
new file mode 100644
index 0000000000..5cb7b09ea1
Binary files /dev/null and b/Resources/Textures/Structures/Wallmounts/service_light.rsi/glow.png differ
diff --git a/Resources/Textures/Structures/Wallmounts/service_light.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/service_light.rsi/meta.json
index cf91d5d1a5..ceaa7a56ee 100644
--- a/Resources/Textures/Structures/Wallmounts/service_light.rsi/meta.json
+++ b/Resources/Textures/Structures/Wallmounts/service_light.rsi/meta.json
@@ -20,11 +20,11 @@
"directions": 4
},
{
- "name": "off",
+ "name": "base",
"directions": 4
},
{
- "name": "on",
+ "name": "glow",
"directions": 4,
"delays": [
[
diff --git a/Resources/Textures/Structures/Wallmounts/service_light.rsi/on.png b/Resources/Textures/Structures/Wallmounts/service_light.rsi/on.png
deleted file mode 100644
index 3e52be44ec..0000000000
Binary files a/Resources/Textures/Structures/Wallmounts/service_light.rsi/on.png and /dev/null differ
diff --git a/RobustToolbox b/RobustToolbox
index f44f5b5a98..5c15f26f09 160000
--- a/RobustToolbox
+++ b/RobustToolbox
@@ -1 +1 @@
-Subproject commit f44f5b5a98b850d7c768e13dd63530fec7e48104
+Subproject commit 5c15f26f092631d002ce0d1140d1df3e0e08c06f
diff --git a/SpaceStation14.sln.DotSettings b/SpaceStation14.sln.DotSettings
index 7d681e02b1..42cf8d1cab 100644
--- a/SpaceStation14.sln.DotSettings
+++ b/SpaceStation14.sln.DotSettings
@@ -602,6 +602,7 @@ public sealed partial class $CLASS$ : Shared$CLASS$ {
True
True
True
+ True
True
True
True