diff --git a/.github/workflows/build-docfx.yml b/.github/workflows/build-docfx.yml index ca1a6f0af12..d37e37026d7 100644 --- a/.github/workflows/build-docfx.yml +++ b/.github/workflows/build-docfx.yml @@ -21,7 +21,7 @@ jobs: - name: Setup .NET Core uses: actions/setup-dotnet@v3.2.0 with: - dotnet-version: 8.0.x + dotnet-version: 8.0.100 - name: Install dependencies run: dotnet restore diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 83bca6f97bc..737b90563e8 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,6 +1,12 @@ { "recommendations": [ "ms-dotnettools.csharp", - "editorconfig.editorconfig" + "editorconfig.editorconfig", + "aaron-bond.better-comments", + "tamasfe.even-better-toml", + "slava0135.robust-yaml", + "slevesque.shader", + "macabeus.vscode-fluent", + "redhat.vscode-yaml" ] } diff --git a/Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs b/Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs index fcf3b04e530..6dfbc326ecb 100644 --- a/Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs +++ b/Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs @@ -256,6 +256,8 @@ private void DrawTooltip(DrawingHandleScreen handle, Vector2 pos, AtmosDebugOver handle.DrawString(_font, pos, $"Map: {data.MapAtmosphere}"); pos += offset; handle.DrawString(_font, pos, $"NoGrid: {data.NoGrid}"); + pos += offset; + handle.DrawString(_font, pos, $"Immutable: {data.Immutable}"); } private void GetGrids(MapId mapId, Box2Rotated box) diff --git a/Content.Client/CardboardBox/CardboardBoxSystem.cs b/Content.Client/CardboardBox/CardboardBoxSystem.cs index 50f9de239d5..90a21d8e41b 100644 --- a/Content.Client/CardboardBox/CardboardBoxSystem.cs +++ b/Content.Client/CardboardBox/CardboardBoxSystem.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Shared.CardboardBox; using Content.Shared.CardboardBox.Components; using Content.Shared.Examine; @@ -11,6 +11,7 @@ public sealed class CardboardBoxSystem : SharedCardboardBoxSystem { [Dependency] private readonly EntityLookupSystem _entityLookup = default!; [Dependency] private readonly TransformSystem _transform = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; public override void Initialize() { @@ -55,7 +56,7 @@ private void OnBoxEffect(PlayBoxEffectMessage msg) foreach (var mob in mobMoverEntities) { var mapPos = _transform.GetMapCoordinates(mob); - if (!ExamineSystemShared.InRangeUnOccluded(sourcePos, mapPos, box.Distance, null)) + if (!_examine.InRangeUnOccluded(sourcePos, mapPos, box.Distance, null)) continue; var ent = Spawn(box.Effect, mapPos); diff --git a/Content.Client/Cargo/UI/CargoConsoleMenu.xaml.cs b/Content.Client/Cargo/UI/CargoConsoleMenu.xaml.cs index baf0d31f1f1..e60335bc45c 100644 --- a/Content.Client/Cargo/UI/CargoConsoleMenu.xaml.cs +++ b/Content.Client/Cargo/UI/CargoConsoleMenu.xaml.cs @@ -93,7 +93,7 @@ public void PopulateProducts() if (search.Length == 0 && _category == null || search.Length != 0 && prototype.Name.ToLowerInvariant().Contains(search) || search.Length != 0 && prototype.Description.ToLowerInvariant().Contains(search) || - search.Length == 0 && _category != null && prototype.Category.Equals(_category)) + search.Length == 0 && _category != null && Loc.GetString(prototype.Category).Equals(_category)) { var button = new CargoProductRow { @@ -122,7 +122,7 @@ public void PopulateCategories() foreach (var prototype in ProductPrototypes) { - if (!_categoryStrings.Contains(prototype.Category)) + if (!_categoryStrings.Contains(Loc.GetString(prototype.Category))) { _categoryStrings.Add(Loc.GetString(prototype.Category)); } diff --git a/Content.Client/Construction/ConstructionSystem.cs b/Content.Client/Construction/ConstructionSystem.cs index ae1724c3bf6..66000a8457d 100644 --- a/Content.Client/Construction/ConstructionSystem.cs +++ b/Content.Client/Construction/ConstructionSystem.cs @@ -27,6 +27,7 @@ public sealed class ConstructionSystem : SharedConstructionSystem [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; private readonly Dictionary _ghosts = new(); @@ -195,7 +196,7 @@ public bool TrySpawnGhost( return false; // This InRangeUnobstructed should probably be replaced with "is there something blocking us in that tile?" - var predicate = GetPredicate(prototype.CanBuildInImpassable, loc.ToMap(EntityManager)); + var predicate = GetPredicate(prototype.CanBuildInImpassable, loc.ToMap(EntityManager, _transformSystem)); if (!_interactionSystem.InRangeUnobstructed(user, loc, 20f, predicate: predicate)) return false; diff --git a/Content.Client/ContextMenu/UI/EntityMenuUIController.cs b/Content.Client/ContextMenu/UI/EntityMenuUIController.cs index ae1b3ec3bf0..a60619baa35 100644 --- a/Content.Client/ContextMenu/UI/EntityMenuUIController.cs +++ b/Content.Client/ContextMenu/UI/EntityMenuUIController.cs @@ -170,7 +170,7 @@ private bool HandleOpenEntityMenu(in PointerInputCmdHandler.PointerInputCmdArgs if (_combatMode.IsInCombatMode(args.Session?.AttachedEntity)) return false; - var coords = args.Coordinates.ToMap(_entityManager); + var coords = args.Coordinates.ToMap(_entityManager, _xform); if (_verbSystem.TryGetEntityMenuEntities(coords, out var entities)) OpenRootMenu(entities); diff --git a/Content.Client/Gameplay/GameplayStateBase.cs b/Content.Client/Gameplay/GameplayStateBase.cs index bdbd69d1086..6236cd8e958 100644 --- a/Content.Client/Gameplay/GameplayStateBase.cs +++ b/Content.Client/Gameplay/GameplayStateBase.cs @@ -104,7 +104,7 @@ private bool HandleInspect(ICommonSession? session, EntityCoordinates coords, En public IEnumerable GetClickableEntities(EntityCoordinates coordinates) { - return GetClickableEntities(coordinates.ToMap(_entityManager)); + return GetClickableEntities(coordinates.ToMap(_entityManager, _entitySystemManager.GetEntitySystem())); } public IEnumerable GetClickableEntities(MapCoordinates coordinates) diff --git a/Content.Client/NPC/PathfindingSystem.cs b/Content.Client/NPC/PathfindingSystem.cs index 548edd601ce..7bf3df1f0b9 100644 --- a/Content.Client/NPC/PathfindingSystem.cs +++ b/Content.Client/NPC/PathfindingSystem.cs @@ -23,6 +23,7 @@ public sealed class PathfindingSystem : SharedPathfindingSystem [Dependency] private readonly IResourceCache _cache = default!; [Dependency] private readonly NPCSteeringSystem _steering = default!; [Dependency] private readonly MapSystem _mapSystem = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; public PathfindingDebugMode Modes { @@ -39,7 +40,7 @@ public PathfindingDebugMode Modes } else if (!overlayManager.HasOverlay()) { - overlayManager.AddOverlay(new PathfindingOverlay(EntityManager, _eyeManager, _inputManager, _mapManager, _cache, this, _mapSystem)); + overlayManager.AddOverlay(new PathfindingOverlay(EntityManager, _eyeManager, _inputManager, _mapManager, _cache, this, _mapSystem, _transformSystem)); } if ((value & PathfindingDebugMode.Steering) != 0x0) @@ -140,6 +141,7 @@ public sealed class PathfindingOverlay : Overlay private readonly IMapManager _mapManager; private readonly PathfindingSystem _system; private readonly MapSystem _mapSystem; + private readonly SharedTransformSystem _transformSystem; public override OverlaySpace Space => OverlaySpace.ScreenSpace | OverlaySpace.WorldSpace; @@ -153,7 +155,8 @@ public PathfindingOverlay( IMapManager mapManager, IResourceCache cache, PathfindingSystem system, - MapSystem mapSystem) + MapSystem mapSystem, + SharedTransformSystem transformSystem) { _entManager = entManager; _eyeManager = eyeManager; @@ -161,6 +164,7 @@ public PathfindingOverlay( _mapManager = mapManager; _system = system; _mapSystem = mapSystem; + _transformSystem = transformSystem; _font = new VectorFont(cache.GetResource("/Fonts/NotoSans/NotoSans-Regular.ttf"), 10); } @@ -480,7 +484,7 @@ private void DrawWorld(OverlayDrawArgs args, DrawingHandleWorld worldHandle) if (neighborPoly.NetEntity != poly.GraphUid) { color = Color.Green; - var neighborMap = _entManager.GetCoordinates(neighborPoly).ToMap(_entManager); + var neighborMap = _entManager.GetCoordinates(neighborPoly).ToMap(_entManager, _transformSystem); if (neighborMap.MapId != args.MapId) continue; diff --git a/Content.Client/Popups/PopupOverlay.cs b/Content.Client/Popups/PopupOverlay.cs index 1305d8bb947..fb6bb3bf565 100644 --- a/Content.Client/Popups/PopupOverlay.cs +++ b/Content.Client/Popups/PopupOverlay.cs @@ -21,7 +21,8 @@ public sealed class PopupOverlay : Overlay private readonly IUserInterfaceManager _uiManager; private readonly PopupSystem _popup; private readonly PopupUIController _controller; - + private readonly ExamineSystemShared _examine; + private readonly SharedTransformSystem _transform; private readonly ShaderInstance _shader; public override OverlaySpace Space => OverlaySpace.ScreenSpace; @@ -33,12 +34,16 @@ public PopupOverlay( IPrototypeManager protoManager, IUserInterfaceManager uiManager, PopupUIController controller, + ExamineSystemShared examine, + SharedTransformSystem transform, PopupSystem popup) { _configManager = configManager; _entManager = entManager; _playerMgr = playerMgr; _uiManager = uiManager; + _examine = examine; + _transform = transform; _popup = popup; _controller = controller; @@ -73,7 +78,7 @@ private void DrawWorld(DrawingHandleScreen worldHandle, OverlayDrawArgs args, fl foreach (var popup in _popup.WorldLabels) { - var mapPos = popup.InitialPos.ToMap(_entManager); + var mapPos = popup.InitialPos.ToMap(_entManager, _transform); if (mapPos.MapId != args.MapId) continue; @@ -81,7 +86,7 @@ private void DrawWorld(DrawingHandleScreen worldHandle, OverlayDrawArgs args, fl var distance = (mapPos.Position - args.WorldBounds.Center).Length(); // Should handle fade here too wyci. - if (!args.WorldBounds.Contains(mapPos.Position) || !ExamineSystemShared.InRangeUnOccluded(viewPos, mapPos, distance, + if (!args.WorldBounds.Contains(mapPos.Position) || !_examine.InRangeUnOccluded(viewPos, mapPos, distance, e => e == popup.InitialPos.EntityId || e == ourEntity, entMan: _entManager)) continue; diff --git a/Content.Client/Popups/PopupSystem.cs b/Content.Client/Popups/PopupSystem.cs index cf96c41241a..479fb02906c 100644 --- a/Content.Client/Popups/PopupSystem.cs +++ b/Content.Client/Popups/PopupSystem.cs @@ -1,4 +1,5 @@ using System.Linq; +using Content.Shared.Examine; using Content.Shared.GameTicking; using Content.Shared.Popups; using Robust.Client.Graphics; @@ -26,6 +27,8 @@ public sealed class PopupSystem : SharedPopupSystem [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IUserInterfaceManager _uiManager = default!; [Dependency] private readonly IReplayRecordingManager _replayRecording = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; public IReadOnlyList WorldLabels => _aliveWorldLabels; public IReadOnlyList CursorLabels => _aliveCursorLabels; @@ -51,6 +54,8 @@ public override void Initialize() _prototype, _uiManager, _uiManager.GetUIController(), + _examine, + _transform, this)); } diff --git a/Content.Client/Nyanotrasen/Psionics/Glimmer/GlimmerReactiveVisuals.cs b/Content.Client/Psionics/Glimmer/GlimmerReactiveVisuals.cs similarity index 100% rename from Content.Client/Nyanotrasen/Psionics/Glimmer/GlimmerReactiveVisuals.cs rename to Content.Client/Psionics/Glimmer/GlimmerReactiveVisuals.cs diff --git a/Content.Client/Nyanotrasen/CartridgeLoader/Cartridges/GlimmerMonitorUi.cs b/Content.Client/Psionics/GlimmerMonitor/GlimmerMonitorUi.cs similarity index 92% rename from Content.Client/Nyanotrasen/CartridgeLoader/Cartridges/GlimmerMonitorUi.cs rename to Content.Client/Psionics/GlimmerMonitor/GlimmerMonitorUi.cs index 0b5fc7ad38c..0d8accb9f86 100644 --- a/Content.Client/Nyanotrasen/CartridgeLoader/Cartridges/GlimmerMonitorUi.cs +++ b/Content.Client/Psionics/GlimmerMonitor/GlimmerMonitorUi.cs @@ -1,10 +1,11 @@ using Robust.Client.GameObjects; using Robust.Client.UserInterface; +using Content.Client.Psionics.UI; using Content.Client.UserInterface.Fragments; using Content.Shared.CartridgeLoader.Cartridges; using Content.Shared.CartridgeLoader; -namespace Content.Client.Nyanotrasen.CartridgeLoader.Cartridges; +namespace Content.Client.Psionics.GlimmerMonitor; public sealed partial class GlimmerMonitorUi : UIFragment { diff --git a/Content.Client/Nyanotrasen/CartridgeLoader/Cartridges/GlimmerMonitorUiFragment.xaml b/Content.Client/Psionics/GlimmerMonitor/GlimmerMonitorUiFragment.xaml similarity index 93% rename from Content.Client/Nyanotrasen/CartridgeLoader/Cartridges/GlimmerMonitorUiFragment.xaml rename to Content.Client/Psionics/GlimmerMonitor/GlimmerMonitorUiFragment.xaml index 119a1831e6e..3044680e27b 100644 --- a/Content.Client/Nyanotrasen/CartridgeLoader/Cartridges/GlimmerMonitorUiFragment.xaml +++ b/Content.Client/Psionics/GlimmerMonitor/GlimmerMonitorUiFragment.xaml @@ -1,4 +1,4 @@ - diff --git a/Content.Client/Nyanotrasen/CartridgeLoader/Cartridges/GlimmerMonitorUiFragment.xaml.cs b/Content.Client/Psionics/GlimmerMonitor/GlimmerMonitorUiFragment.xaml.cs similarity index 96% rename from Content.Client/Nyanotrasen/CartridgeLoader/Cartridges/GlimmerMonitorUiFragment.xaml.cs rename to Content.Client/Psionics/GlimmerMonitor/GlimmerMonitorUiFragment.xaml.cs index 43d9202aa45..58bbee38a2f 100644 --- a/Content.Client/Nyanotrasen/CartridgeLoader/Cartridges/GlimmerMonitorUiFragment.xaml.cs +++ b/Content.Client/Psionics/GlimmerMonitor/GlimmerMonitorUiFragment.xaml.cs @@ -1,12 +1,12 @@ using System.Linq; using System.Numerics; -using Content.Client.Nyanotrasen.UserInterface; +using Content.Client.Psionics.UI; using Robust.Client.AutoGenerated; using Robust.Client.ResourceManagement; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; -namespace Content.Client.Nyanotrasen.CartridgeLoader.Cartridges; +namespace Content.Client.Psionics.GlimmerMonitor; [GenerateTypedNameReferences] public sealed partial class GlimmerMonitorUiFragment : BoxContainer diff --git a/Content.Client/Nyanotrasen/Chat/PsionicChatUpdateSystem.cs b/Content.Client/Psionics/Telepathy/PsionicChatUpdateSystem.cs similarity index 92% rename from Content.Client/Nyanotrasen/Chat/PsionicChatUpdateSystem.cs rename to Content.Client/Psionics/Telepathy/PsionicChatUpdateSystem.cs index 84602052fe7..7bb88764a1f 100644 --- a/Content.Client/Nyanotrasen/Chat/PsionicChatUpdateSystem.cs +++ b/Content.Client/Psionics/Telepathy/PsionicChatUpdateSystem.cs @@ -1,8 +1,8 @@ -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; using Content.Client.Chat.Managers; using Robust.Client.Player; -namespace Content.Client.Nyanotrasen.Chat +namespace Content.Client.Psionics.Chat { public sealed class PsionicChatUpdateSystem : EntitySystem { diff --git a/Content.Client/Nyanotrasen/Psionics/UI/AcceptPsionicsEUI.cs b/Content.Client/Psionics/UserInterface/AcceptPsionicsEUI.cs similarity index 100% rename from Content.Client/Nyanotrasen/Psionics/UI/AcceptPsionicsEUI.cs rename to Content.Client/Psionics/UserInterface/AcceptPsionicsEUI.cs diff --git a/Content.Client/Nyanotrasen/Psionics/UI/AcceptPsionicsWindow.cs b/Content.Client/Psionics/UserInterface/AcceptPsionicsWindow.cs similarity index 100% rename from Content.Client/Nyanotrasen/Psionics/UI/AcceptPsionicsWindow.cs rename to Content.Client/Psionics/UserInterface/AcceptPsionicsWindow.cs diff --git a/Content.Client/Nyanotrasen/UserInterface/GlimmerGraph.cs b/Content.Client/Psionics/UserInterface/GlimmerGraph.cs similarity index 97% rename from Content.Client/Nyanotrasen/UserInterface/GlimmerGraph.cs rename to Content.Client/Psionics/UserInterface/GlimmerGraph.cs index c4a9109dcd8..111c810acb1 100644 --- a/Content.Client/Nyanotrasen/UserInterface/GlimmerGraph.cs +++ b/Content.Client/Psionics/UserInterface/GlimmerGraph.cs @@ -4,7 +4,7 @@ using Robust.Client.ResourceManagement; using Robust.Client.UserInterface; -namespace Content.Client.Nyanotrasen.UserInterface; +namespace Content.Client.Psionics.UI; public sealed class GlimmerGraph : Control { diff --git a/Content.Client/Radiation/Overlays/RadiationPulseOverlay.cs b/Content.Client/Radiation/Overlays/RadiationPulseOverlay.cs index adc535b2684..9012767ef3f 100644 --- a/Content.Client/Radiation/Overlays/RadiationPulseOverlay.cs +++ b/Content.Client/Radiation/Overlays/RadiationPulseOverlay.cs @@ -121,7 +121,10 @@ private void RadiationQuery(IEye? currentEye) private bool PulseQualifies(EntityUid pulseEntity, MapCoordinates currentEyeLoc) { - return _entityManager.GetComponent(pulseEntity).MapID == currentEyeLoc.MapId && _entityManager.GetComponent(pulseEntity).Coordinates.InRange(_entityManager, EntityCoordinates.FromMap(_entityManager, _entityManager.GetComponent(pulseEntity).ParentUid, currentEyeLoc), MaxDist); + var transformComponent = _entityManager.GetComponent(pulseEntity); + var transformSystem = _entityManager.System(); + return transformComponent.MapID == currentEyeLoc.MapId + && transformComponent.Coordinates.InRange(_entityManager, transformSystem, EntityCoordinates.FromMap(transformComponent.ParentUid, currentEyeLoc, transformSystem, _entityManager), MaxDist); } private sealed record RadiationShaderInstance(MapCoordinates CurrentMapCoords, float Range, TimeSpan Start, float Duration) diff --git a/Content.Client/Sandbox/SandboxSystem.cs b/Content.Client/Sandbox/SandboxSystem.cs index d16751e3715..6a1129bb75d 100644 --- a/Content.Client/Sandbox/SandboxSystem.cs +++ b/Content.Client/Sandbox/SandboxSystem.cs @@ -16,6 +16,7 @@ public sealed class SandboxSystem : SharedSandboxSystem [Dependency] private readonly IMapManager _map = default!; [Dependency] private readonly IPlacementManager _placement = default!; [Dependency] private readonly ContentEyeSystem _contentEye = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; private bool _sandboxEnabled; public bool SandboxAllowed { get; private set; } @@ -108,7 +109,7 @@ public bool Copy(ICommonSession? session, EntityCoordinates coords, EntityUid ui } // Try copy tile. - if (!_map.TryFindGridAt(coords.ToMap(EntityManager), out _, out var grid) || !grid.TryGetTileRef(coords, out var tileRef)) + if (!_map.TryFindGridAt(coords.ToMap(EntityManager, _transform), out _, out var grid) || !grid.TryGetTileRef(coords, out var tileRef)) return false; if (_placement.Eraser) diff --git a/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs b/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs index ff4972d9d08..57b22e3f333 100644 --- a/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs +++ b/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs @@ -20,7 +20,6 @@ using Content.Shared.Examine; using Content.Shared.Input; using Content.Shared.Radio; -using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.Input; using Robust.Client.Player; @@ -37,7 +36,7 @@ using Robust.Shared.Replays; using Robust.Shared.Timing; using Robust.Shared.Utility; -using Content.Client.Nyanotrasen.Chat; //Nyano - Summary: chat namespace. +using Content.Client.Psionics.Chat; namespace Content.Client.UserInterface.Systems.Chat; @@ -61,7 +60,7 @@ public sealed class ChatUIController : UIController [UISystemDependency] private readonly GhostSystem? _ghost = default; [UISystemDependency] private readonly TypingIndicatorSystem? _typingIndicator = default; [UISystemDependency] private readonly ChatSystem? _chatSys = default; - [UISystemDependency] private readonly PsionicChatUpdateSystem? _psionic = default!; //Nyano - Summary: makes the psionic chat available. + [UISystemDependency] private readonly PsionicChatUpdateSystem? _psionic = default!; //EE - Summary: makes the psionic chat available. [ValidatePrototypeId] private const string ChatNamePalette = "ChatNames"; @@ -82,7 +81,7 @@ public sealed class ChatUIController : UIController {SharedChatSystem.AdminPrefix, ChatSelectChannel.Admin}, {SharedChatSystem.RadioCommonPrefix, ChatSelectChannel.Radio}, {SharedChatSystem.DeadPrefix, ChatSelectChannel.Dead}, - {SharedChatSystem.TelepathicPrefix, ChatSelectChannel.Telepathic} //Nyano - Summary: adds the telepathic prefix =. + {SharedChatSystem.TelepathicPrefix, ChatSelectChannel.Telepathic} //EE - Summary: adds the telepathic prefix =. }; public static readonly Dictionary ChannelPrefixes = new() @@ -96,7 +95,7 @@ public sealed class ChatUIController : UIController {ChatSelectChannel.Admin, SharedChatSystem.AdminPrefix}, {ChatSelectChannel.Radio, SharedChatSystem.RadioCommonPrefix}, {ChatSelectChannel.Dead, SharedChatSystem.DeadPrefix}, - {ChatSelectChannel.Telepathic, SharedChatSystem.TelepathicPrefix } //Nyano - Summary: associates telepathic with =. + {ChatSelectChannel.Telepathic, SharedChatSystem.TelepathicPrefix } //EE - Summary: associates telepathic with =. }; /// @@ -627,7 +626,7 @@ private void UpdateQueuedSpeechBubbles(FrameEventArgs delta) var otherPos = EntityManager.GetComponent(ent).MapPosition; - if (occluded && !ExamineSystemShared.InRangeUnOccluded( + if (occluded && !_examine.InRangeUnOccluded( playerPos, otherPos, 0f, (ent, player), predicate)) diff --git a/Content.Client/Verbs/VerbSystem.cs b/Content.Client/Verbs/VerbSystem.cs index 329a8977a68..77f46a3fc97 100644 --- a/Content.Client/Verbs/VerbSystem.cs +++ b/Content.Client/Verbs/VerbSystem.cs @@ -20,7 +20,7 @@ namespace Content.Client.Verbs public sealed class VerbSystem : SharedVerbSystem { [Dependency] private readonly PopupSystem _popupSystem = default!; - [Dependency] private readonly ExamineSystem _examineSystem = default!; + [Dependency] private readonly ExamineSystem _examine = default!; [Dependency] private readonly TagSystem _tagSystem = default!; [Dependency] private readonly IStateManager _stateManager = default!; [Dependency] private readonly EntityLookupSystem _entityLookup = default!; @@ -77,7 +77,7 @@ public bool TryGetEntityMenuEntities(MapCoordinates targetPos, [NotNullWhen(true bool Predicate(EntityUid e) => e == player || entitiesUnderMouse.Contains(e); // first check the general location. - if (!_examineSystem.CanExamine(player.Value, targetPos, Predicate)) + if (!_examine.CanExamine(player.Value, targetPos, Predicate)) return false; TryComp(player.Value, out ExaminerComponent? examiner); @@ -86,7 +86,7 @@ public bool TryGetEntityMenuEntities(MapCoordinates targetPos, [NotNullWhen(true entities = new(); foreach (var ent in _entityLookup.GetEntitiesInRange(targetPos, EntityMenuLookupSize)) { - if (_examineSystem.CanExamine(player.Value, targetPos, Predicate, ent, examiner)) + if (_examine.CanExamine(player.Value, targetPos, Predicate, ent, examiner)) entities.Add(ent); } } @@ -147,7 +147,7 @@ public bool TryGetEntityMenuEntities(MapCoordinates targetPos, [NotNullWhen(true { var entity = entities[i]; - if (!ExamineSystemShared.InRangeUnOccluded( + if (!_examine.InRangeUnOccluded( playerPos, xformQuery.GetComponent(entity).MapPosition, ExamineSystemShared.ExamineRange, diff --git a/Content.IntegrationTests/Tests/Wires/WireLayoutTest.cs b/Content.IntegrationTests/Tests/Wires/WireLayoutTest.cs new file mode 100644 index 00000000000..920dc088186 --- /dev/null +++ b/Content.IntegrationTests/Tests/Wires/WireLayoutTest.cs @@ -0,0 +1,103 @@ +using Content.Server.Doors; +using Content.Server.Power; +using Content.Server.Wires; +using Robust.Shared.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Map; + +namespace Content.IntegrationTests.Tests.Wires; + +[TestFixture] +[Parallelizable(ParallelScope.All)] +[TestOf(typeof(WiresSystem))] +public sealed class WireLayoutTest +{ + [TestPrototypes] + public const string Prototypes = """ + - type: wireLayout + id: WireLayoutTest + dummyWires: 2 + wires: + - !type:PowerWireAction + - !type:DoorBoltWireAction + + - type: wireLayout + id: WireLayoutTest2 + parent: WireLayoutTest + wires: + - !type:PowerWireAction + + - type: wireLayout + id: WireLayoutTest3 + parent: WireLayoutTest + + - type: entity + id: WireLayoutTest + components: + - type: Wires + layoutId: WireLayoutTest + + - type: entity + id: WireLayoutTest2 + components: + - type: Wires + layoutId: WireLayoutTest2 + + - type: entity + id: WireLayoutTest3 + components: + - type: Wires + layoutId: WireLayoutTest3 + """; + + [Test] + public async Task TestLayoutInheritance() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + var testMap = await pair.CreateTestMap(); + + await server.WaitAssertion(() => + { + var wires = IoCManager.Resolve().GetEntitySystem(); + + // Need to spawn these entities to make sure the wire layouts are initialized. + var ent1 = SpawnWithComp(server.EntMan, "WireLayoutTest", testMap.MapCoords); + var ent2 = SpawnWithComp(server.EntMan, "WireLayoutTest2", testMap.MapCoords); + var ent3 = SpawnWithComp(server.EntMan, "WireLayoutTest3", testMap.MapCoords); + + // Assert.That(wires.TryGetLayout("WireLayoutTest", out var layout1)); + // Assert.That(wires.TryGetLayout("WireLayoutTest2", out var layout2)); + // Assert.That(wires.TryGetLayout("WireLayoutTest3", out var layout3)); + + Assert.Multiple(() => + { + // Entity 1. + Assert.That(ent1.Comp.WiresList, Has.Count.EqualTo(4)); + Assert.That(ent1.Comp.WiresList, Has.Exactly(2).With.Property("Action").Null, "2 dummy wires"); + Assert.That(ent1.Comp.WiresList, Has.One.With.Property("Action").InstanceOf(), "1 power wire"); + Assert.That(ent1.Comp.WiresList, Has.One.With.Property("Action").InstanceOf(), "1 door bolt wire"); + + Assert.That(ent2.Comp.WiresList, Has.Count.EqualTo(5)); + Assert.That(ent2.Comp.WiresList, Has.Exactly(2).With.Property("Action").Null, "2 dummy wires"); + Assert.That(ent2.Comp.WiresList, Has.Exactly(2).With.Property("Action").InstanceOf(), "2 power wire"); + Assert.That(ent2.Comp.WiresList, Has.One.With.Property("Action").InstanceOf(), "1 door bolt wire"); + + Assert.That(ent3.Comp.WiresList, Has.Count.EqualTo(4)); + Assert.That(ent3.Comp.WiresList, Has.Exactly(2).With.Property("Action").Null, "2 dummy wires"); + Assert.That(ent3.Comp.WiresList, Has.One.With.Property("Action").InstanceOf(), "1 power wire"); + Assert.That(ent3.Comp.WiresList, Has.One.With.Property("Action").InstanceOf(), "1 door bolt wire"); + }); + }); + + await pair.CleanReturnAsync(); + } + + private static Entity SpawnWithComp(IEntityManager entityManager, string prototype, MapCoordinates coords) + where T : IComponent, new() + { + var ent = entityManager.Spawn(prototype, coords); + var comp = entityManager.EnsureComponent(ent); + return new Entity(ent, comp); + } +} diff --git a/Content.Server/Abilities/Mime/MimePowersSystem.cs b/Content.Server/Abilities/Mime/MimePowersSystem.cs index c1d2643d6fa..b3bd3392434 100644 --- a/Content.Server/Abilities/Mime/MimePowersSystem.cs +++ b/Content.Server/Abilities/Mime/MimePowersSystem.cs @@ -10,7 +10,7 @@ using Robust.Shared.Containers; using Robust.Shared.Map; using Robust.Shared.Timing; -using Content.Shared.Abilities.Psionics; //Nyano - Summary: Makes Mime psionic. +using Content.Shared.Psionics.Abilities; using Content.Shared.Speech.Muting; namespace Content.Server.Abilities.Mime diff --git a/Content.Server/Administration/Managers/AdminManager.Metrics.cs b/Content.Server/Administration/Managers/AdminManager.Metrics.cs new file mode 100644 index 00000000000..2fea931f1b9 --- /dev/null +++ b/Content.Server/Administration/Managers/AdminManager.Metrics.cs @@ -0,0 +1,98 @@ +using System.Diagnostics.Metrics; +using System.Runtime.InteropServices; +using Content.Server.Afk; +using Robust.Server.DataMetrics; + +namespace Content.Server.Administration.Managers; + +// Handles metrics reporting for active admin count and such. + +public sealed partial class AdminManager +{ + private Dictionary? _adminOnlineCounts; + + private const int SentinelRankId = -1; + + [Dependency] private readonly IMetricsManager _metrics = default!; + [Dependency] private readonly IAfkManager _afkManager = default!; + [Dependency] private readonly IMeterFactory _meterFactory = default!; + + private void InitializeMetrics() + { + _metrics.UpdateMetrics += MetricsOnUpdateMetrics; + + var meter = _meterFactory.Create("SS14.AdminManager"); + + meter.CreateObservableGauge( + "admins_online_count", + MeasureAdminCount, + null, + "The count of online admins"); + } + + private void MetricsOnUpdateMetrics() + { + _sawmill.Verbose("Updating metrics"); + + var dict = new Dictionary(); + + foreach (var (session, reg) in _admins) + { + var rankId = reg.RankId ?? SentinelRankId; + + ref var counts = ref CollectionsMarshal.GetValueRefOrAddDefault(dict, rankId, out _); + + if (reg.Data.Active) + { + if (_afkManager.IsAfk(session)) + counts.afk += 1; + else + counts.active += 1; + } + else + { + counts.deadminned += 1; + } + } + + // Neither prometheus-net nor dotnet-counters seem to handle stuff well if we STOP returning measurements. + // i.e. if the last admin with a rank disconnects. + // So if we have EVER reported a rank, always keep reporting it. + if (_adminOnlineCounts != null) + { + foreach (var rank in _adminOnlineCounts.Keys) + { + CollectionsMarshal.GetValueRefOrAddDefault(dict, rank, out _); + } + } + + // Make sure "no rank" is always available. Avoid "no data". + CollectionsMarshal.GetValueRefOrAddDefault(dict, SentinelRankId, out _); + + _adminOnlineCounts = dict; + } + + private IEnumerable> MeasureAdminCount() + { + if (_adminOnlineCounts == null) + yield break; + + foreach (var (rank, (active, afk, deadminned)) in _adminOnlineCounts) + { + yield return new Measurement( + active, + new KeyValuePair("state", "active"), + new KeyValuePair("rank", rank == SentinelRankId ? "none" : rank.ToString())); + + yield return new Measurement( + afk, + new KeyValuePair("state", "afk"), + new KeyValuePair("rank", rank == SentinelRankId ? "none" : rank.ToString())); + + yield return new Measurement( + deadminned, + new KeyValuePair("state", "deadminned"), + new KeyValuePair("rank", rank == SentinelRankId ? "none" : rank.ToString())); + } + } +} diff --git a/Content.Server/Administration/Managers/AdminManager.cs b/Content.Server/Administration/Managers/AdminManager.cs index 4eaa08fe9dd..b1cca46e63f 100644 --- a/Content.Server/Administration/Managers/AdminManager.cs +++ b/Content.Server/Administration/Managers/AdminManager.cs @@ -23,7 +23,7 @@ namespace Content.Server.Administration.Managers { - public sealed class AdminManager : IAdminManager, IPostInjectInit, IConGroupControllerImplementation + public sealed partial class AdminManager : IAdminManager, IPostInjectInit, IConGroupControllerImplementation { [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IServerDbManager _dbManager = default!; @@ -34,6 +34,7 @@ public sealed class AdminManager : IAdminManager, IPostInjectInit, IConGroupCont [Dependency] private readonly IServerConsoleHost _consoleHost = default!; [Dependency] private readonly IChatManager _chat = default!; [Dependency] private readonly ToolshedManager _toolshed = default!; + [Dependency] private readonly ILogManager _logManager = default!; private readonly Dictionary _admins = new(); private readonly HashSet _promotedPlayers = new(); @@ -49,6 +50,8 @@ public sealed class AdminManager : IAdminManager, IPostInjectInit, IConGroupCont private readonly AdminCommandPermissions _commandPermissions = new(); private readonly AdminCommandPermissions _toolshedCommandPermissions = new(); + private ISawmill _sawmill = default!; + public bool IsAdmin(ICommonSession session, bool includeDeAdmin = false) { return GetAdminData(session, includeDeAdmin) != null; @@ -181,6 +184,8 @@ public void ReloadAdminsWithRank(int rankId) public void Initialize() { + _sawmill = _logManager.GetSawmill("admin"); + _netMgr.RegisterNetMessage(); // Cache permissions for loaded console commands with the requisite attributes. @@ -234,6 +239,8 @@ public void Initialize() } _toolshed.ActivePermissionController = this; + + InitializeMetrics(); } public void PromoteHost(ICommonSession player) diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs index c68336deab8..9d66338c8bf 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs @@ -718,9 +718,21 @@ private void AddTricksVerbs(GetVerbsEvent args) Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Fun/caps.rsi"), "mag-6"), Act = () => { - _quickDialog.OpenDialog(player, "Set Bullet Amount", $"Amount (max {ballisticAmmo.Capacity}):", (int amount) => + _quickDialog.OpenDialog(player, "Set Bullet Amount", $"Amount (standard {ballisticAmmo.Capacity}):", (string amount) => { - ballisticAmmo.UnspawnedCount = amount; + if (!int.TryParse(amount, out var result)) + return; + + if (result > 0) + { + ballisticAmmo.UnspawnedCount = result; + } + else + { + ballisticAmmo.UnspawnedCount = 0; + } + + _gun.UpdateBallisticAppearance(args.Target, ballisticAmmo); }); }, Impact = LogImpact.Medium, diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.cs b/Content.Server/Administration/Systems/AdminVerbSystem.cs index c4754af9340..f5b237b4492 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.cs @@ -66,6 +66,7 @@ public sealed partial class AdminVerbSystem : EntitySystem [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly StationSystem _stations = default!; [Dependency] private readonly StationSpawningSystem _spawning = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; private readonly Dictionary> _openSolutionUis = new(); @@ -416,7 +417,7 @@ private void AddDebugVerbs(GetVerbsEvent args) Act = () => { - var message = ExamineSystemShared.InRangeUnOccluded(args.User, args.Target) + var message = _examine.InRangeUnOccluded(args.User, args.Target) ? Loc.GetString("in-range-unoccluded-verb-on-activate-not-occluded") : Loc.GetString("in-range-unoccluded-verb-on-activate-occluded"); diff --git a/Content.Server/Anomaly/AnomalySystem.Psionics.cs b/Content.Server/Anomaly/AnomalySystem.Psionics.cs index 95fda1d5035..84f200f47ba 100644 --- a/Content.Server/Anomaly/AnomalySystem.Psionics.cs +++ b/Content.Server/Anomaly/AnomalySystem.Psionics.cs @@ -1,4 +1,4 @@ -using Content.Server.Abilities.Psionics; //Nyano - Summary: the psniocs bin where dispel is located. +using Content.Server.Psionics.Abilities; using Content.Shared.Anomaly; using Content.Shared.Anomaly.Components; using Robust.Shared.Random; @@ -14,8 +14,6 @@ private void InitializePsionics() { SubscribeLocalEvent(OnDispelled); } - - //Nyano - Summary: gives dispellable behavior to Anomalies. private void OnDispelled(EntityUid uid, AnomalyComponent component, DispelledEvent args) { _dispel.DealDispelDamage(uid); diff --git a/Content.Server/Atmos/Components/IgniteOnCollideComponent.cs b/Content.Server/Atmos/Components/IgniteOnCollideComponent.cs index a58d3a3c122..710c37b62fe 100644 --- a/Content.Server/Atmos/Components/IgniteOnCollideComponent.cs +++ b/Content.Server/Atmos/Components/IgniteOnCollideComponent.cs @@ -1,8 +1,6 @@ -using Content.Server.Atmos.EntitySystems; - namespace Content.Server.Atmos.Components; -[RegisterComponent, Access(typeof(FlammableSystem))] +[RegisterComponent] public sealed partial class IgniteOnCollideComponent : Component { /// diff --git a/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs b/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs index c0284f26c90..505c4a3b385 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs @@ -109,7 +109,8 @@ private void OnPlayerStatusChanged(object? sender, SessionStatusEventArgs e) tile.ExcitedGroup?.GetHashCode(), tile.Space, tile.MapAtmosphere, - tile.NoGridTile); + tile.NoGridTile, + tile.Air?.Immutable ?? false); } public override void Update(float frameTime) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs index 3aaa5429fb0..517fc1469b5 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs @@ -12,6 +12,9 @@ public sealed partial class AtmosphereSystem public float SpaceWindPressureForceDivisorPush { get; private set; } public float SpaceWindMaxVelocity { get; private set; } public float SpaceWindMaxPushForce { get; private set; } + public float SpaceWindMinimumCalculatedMass { get; private set; } + public float SpaceWindMaximumCalculatedInverseMass { get; private set; } + public bool MonstermosUseExpensiveAirflow { get; private set; } public bool MonstermosEqualization { get; private set; } public bool MonstermosDepressurization { get; private set; } public bool MonstermosRipTiles { get; private set; } @@ -41,6 +44,9 @@ private void InitializeCVars() Subs.CVar(_cfg, CCVars.SpaceWindPressureForceDivisorPush, value => SpaceWindPressureForceDivisorPush = value, true); Subs.CVar(_cfg, CCVars.SpaceWindMaxVelocity, value => SpaceWindMaxVelocity = value, true); Subs.CVar(_cfg, CCVars.SpaceWindMaxPushForce, value => SpaceWindMaxPushForce = value, true); + Subs.CVar(_cfg, CCVars.SpaceWindMinimumCalculatedMass, value => SpaceWindMinimumCalculatedMass = value, true); + Subs.CVar(_cfg, CCVars.SpaceWindMaximumCalculatedInverseMass, value => SpaceWindMaximumCalculatedInverseMass = value, true); + Subs.CVar(_cfg, CCVars.MonstermosUseExpensiveAirflow, value => MonstermosUseExpensiveAirflow = value, true); Subs.CVar(_cfg, CCVars.MonstermosEqualization, value => MonstermosEqualization = value, true); Subs.CVar(_cfg, CCVars.MonstermosDepressurization, value => MonstermosDepressurization = value, true); Subs.CVar(_cfg, CCVars.MonstermosRipTiles, value => MonstermosRipTiles = value, true); diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Commands.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Commands.cs index 6fbd638844b..1c18b8fe29c 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Commands.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Commands.cs @@ -92,6 +92,12 @@ private void FixGridAtmosCommand(IConsoleShell shell, string argstr, string[] ar if (tile == null) continue; + if (!_mapSystem.TryGetTile(gridComp, indices, out var gTile) || gTile.IsEmpty) + { + gridAtmosphere.Tiles.Remove(indices); + continue; + } + if (tile.Immutable && !IsTileSpace(euid, transform.MapUid, indices, gridComp)) { tile = new GasMixture(tile.Volume) { Temperature = tile.Temperature }; diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index a67eb217e51..d1939a92b16 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -6,6 +6,7 @@ using Robust.Shared.Map; using Robust.Shared.Physics; using Robust.Shared.Physics.Components; +using Robust.Shared.Random; using Robust.Shared.Utility; namespace Content.Server.Atmos.EntitySystems @@ -50,7 +51,7 @@ private void UpdateHighPressure(float frameTime) if (TryComp(uid, out var body)) { - _physics.SetBodyStatus(body, BodyStatus.OnGround); + _physics.SetBodyStatus(uid, body, BodyStatus.OnGround); } if (TryComp(uid, out var fixtures)) @@ -73,7 +74,7 @@ private void AddMovedByPressure(EntityUid uid, MovedByPressureComponent componen if (!TryComp(uid, out var fixtures)) return; - _physics.SetBodyStatus(body, BodyStatus.InAir); + _physics.SetBodyStatus(uid, body, BodyStatus.InAir); foreach (var (id, fixture) in fixtures.Fixtures) { @@ -89,12 +90,15 @@ private void AddMovedByPressure(EntityUid uid, MovedByPressureComponent componen private void HighPressureMovements(Entity gridAtmosphere, TileAtmosphere tile, EntityQuery bodies, EntityQuery xforms, EntityQuery pressureQuery, EntityQuery metas) { + //!MAGIC EXIT CONDITION THAT MAKES ALMOST 200 LINES RUN 1/100TH AS OFTEN. + if (tile.PressureDifference < SpaceWindMinimumCalculatedMass * SpaceWindMinimumCalculatedMass) + return; // TODO ATMOS finish this // Don't play the space wind sound on tiles that are on fire... - if(tile.PressureDifference > 15 && !tile.Hotspot.Valid) + if (tile.PressureDifference > 15 && !tile.Hotspot.Valid) { - if(_spaceWindSoundCooldown == 0 && !string.IsNullOrEmpty(SpaceWindSound)) + if (_spaceWindSoundCooldown == 0 && !string.IsNullOrEmpty(SpaceWindSound)) { var coordinates = _mapSystem.ToCenterCoordinates(tile.GridIndex, tile.GridIndices); _audio.PlayPvs(SpaceWindSound, coordinates, AudioParams.Default.WithVariation(0.125f).WithVolume(MathHelper.Clamp(tile.PressureDifference / 10, 10, 100))); @@ -118,7 +122,8 @@ private void HighPressureMovements(Entity gridAtmospher var gridWorldRotation = xforms.GetComponent(gridAtmosphere).WorldRotation; // If we're using monstermos, smooth out the yeet direction to follow the flow - if (MonstermosEqualization) + //WTF:This is bad, don't run this. It just makes the throws worse by somehow rounding them to orthogonal + if (!MonstermosEqualization) { // We step through tiles according to the pressure direction on the current tile. // The goal is to get a general direction of the airflow in the area. @@ -179,8 +184,32 @@ private void ConsiderPressureDifference(GridAtmosphereComponent gridAtmosphere, tile.PressureDirection = differenceDirection; } - //The EE version of this function drops pressureResistanceProbDelta, since it's not needed. If you are for whatever reason calling this function - //And it isn't working, you've probably still got the ResistancePobDelta line included. + //INFO:The EE version of this function drops pressureResistanceProbDelta, since it's not needed. If you are for whatever reason calling this function + //INFO:And it isn't working, you've probably still got the pressureResistanceProbDelta line included. + /// + /// EXPLANATION: + /// pressureDifference = Force of Air Flow on a given tile + /// physics.Mass = Mass of the object potentially being thrown + /// physics.InvMass = 1 divided by said Mass. More CPU efficient way to do division. + /// + /// Objects can only be thrown if the force of air flow is greater than the SQUARE of their mass or {SpaceWindMinimumCalculatedMass}, whichever is heavier + /// This means that the heavier an object is, the exponentially more force is required to move it + /// The force of a throw is equal to the force of air pressure, divided by an object's mass. So not only are heavier objects + /// less likely to be thrown, they are also harder to throw, + /// while lighter objects are yeeted easily, and from great distance. + /// + /// For a human sized entity with a standard weight of 80kg and a spacing between a hard vacuum and a room pressurized at 101kpa, + /// The human shall only be moved if he is either very close to the hole, or is standing in a region of high airflow + /// + /// + /// + /// + /// + /// + /// + /// + /// + public void ExperiencePressureDifference( Entity ent, int cycle, @@ -198,28 +227,28 @@ public void ExperiencePressureDifference( if (!Resolve(uid, ref xform)) return; - // Can we yeet the thing (due to probability, strength, etc.) + if (physics.BodyType != BodyType.Static && !float.IsPositiveInfinity(component.MoveResist)) { - var moveForce = pressureDifference * physics.InvMass; - + var moveForce = pressureDifference * MathF.Max(physics.InvMass, SpaceWindMaximumCalculatedInverseMass); if (moveForce > physics.Mass) { + var maxSafeForceForObject = SpaceWindMaxVelocity * physics.Mass; + moveForce = MathF.Min(moveForce, maxSafeForceForObject); AddMovedByPressure(uid, component, physics); // Grid-rotation adjusted direction var dirVec = (direction.ToAngle() + gridWorldRotation).ToWorldVec(); - var maxSafeForceForObject = SpaceWindMaxVelocity * physics.Mass; - // TODO: Technically these directions won't be correct but uhh I'm just here for optimisations buddy not to fix my old bugs. + // TODO: Consider replacing throw target with proper trigonometry angles. if (throwTarget != EntityCoordinates.Invalid) { - var pos = ((throwTarget.ToMap(EntityManager).Position - xform.WorldPosition).Normalized() + dirVec).Normalized(); - _physics.ApplyLinearImpulse(uid, pos * Math.Clamp(moveForce, 0, maxSafeForceForObject), body: physics); + var pos = throwTarget.ToMap(EntityManager, _transformSystem).Position - xform.WorldPosition + dirVec; + _physics.ApplyLinearImpulse(uid, pos * moveForce, body: physics); } else { - _physics.ApplyLinearImpulse(uid, dirVec * Math.Clamp(moveForce, 0, maxSafeForceForObject), body: physics); + _physics.ApplyLinearImpulse(uid, dirVec * moveForce, body: physics); } component.LastHighPressureMovementAirCycle = cycle; diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs index f156125b0ff..934fc93f468 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs @@ -137,7 +137,7 @@ private void EqualizePressureInZone( var logN = MathF.Log2(tileCount); // Optimization - try to spread gases using an O(n log n) algorithm that has a chance of not working first to avoid O(n^2) - if (giverTilesLength > logN && takerTilesLength > logN) + if (!MonstermosUseExpensiveAirflow && giverTilesLength > logN && takerTilesLength > logN) { // Even if it fails, it will speed up the next part. Array.Sort(_equalizeTiles, 0, tileCount, _monstermosComparer); @@ -661,7 +661,7 @@ private void AdjustEqMovement(TileAtmosphere tile, AtmosDirection direction, flo // Turns out: no they don't. Temporary debug checks to figure out which caller is causing problems: if (tile == null) { - Logger.Error($"Encountered null-tile in {nameof(AdjustEqMovement)}. Trace: {Environment.StackTrace}"); + Log.Error($"Encountered null-tile in {nameof(AdjustEqMovement)}. Trace: {Environment.StackTrace}"); return; } var adj = tile.AdjacentTiles[direction.ToIndex()]; diff --git a/Content.Server/Bed/Components/SnoringComponent.cs b/Content.Server/Bed/Components/SnoringComponent.cs new file mode 100644 index 00000000000..09f80327ba7 --- /dev/null +++ b/Content.Server/Bed/Components/SnoringComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Server.Bed.Sleep; + +/// +/// This is used for the snoring trait. +/// +[RegisterComponent] +public sealed partial class SnoringComponent : Component +{ + +} diff --git a/Content.Server/Bed/Sleep/SleepingSystem.cs b/Content.Server/Bed/Sleep/SleepingSystem.cs index 685b1087d70..b4972544338 100644 --- a/Content.Server/Bed/Sleep/SleepingSystem.cs +++ b/Content.Server/Bed/Sleep/SleepingSystem.cs @@ -67,7 +67,10 @@ private void OnSleepStateChanged(EntityUid uid, MobStateComponent component, Sle if (TryComp(uid, out var sleepSound)) { var emitSound = EnsureComp(uid); - emitSound.Sound = sleepSound.Snore; + if (HasComp(uid)) + { + emitSound.Sound = sleepSound.Snore; + } emitSound.PlayChance = sleepSound.Chance; emitSound.RollInterval = sleepSound.Interval; emitSound.PopUp = sleepSound.PopUp; diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index 84efa57bd63..d34aac48e04 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -9,7 +9,7 @@ using Content.Server.Speech; using Content.Server.Speech.Components; using Content.Server.Speech.EntitySystems; -using Content.Server.Nyanotrasen.Chat; +using Content.Server.Psionics.Telepathy; using Content.Server.Speech.Components; using Content.Server.Speech.EntitySystems; using Content.Server.Station.Components; diff --git a/Content.Server/Chat/TypingIndicator/TypingIndicatorSystem.cs b/Content.Server/Chat/TypingIndicator/TypingIndicatorSystem.cs index 761e9456bcd..c923738930a 100644 --- a/Content.Server/Chat/TypingIndicator/TypingIndicatorSystem.cs +++ b/Content.Server/Chat/TypingIndicator/TypingIndicatorSystem.cs @@ -39,7 +39,7 @@ private void OnClientTypingChanged(TypingChangedEvent ev, EntitySessionEventArgs var uid = args.SenderSession.AttachedEntity; if (!Exists(uid)) { - Logger.Warning($"Client {args.SenderSession} sent TypingChangedEvent without an attached entity."); + Log.Warning($"Client {args.SenderSession} sent TypingChangedEvent without an attached entity."); return; } diff --git a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs index 7d3f70bc0d8..1415b6cad3c 100644 --- a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs @@ -22,8 +22,8 @@ namespace Content.Server.Chemistry.EntitySystems [UsedImplicitly] internal sealed class VaporSystem : EntitySystem { - [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly IPrototypeManager _protoManager = default!; + [Dependency] private readonly SharedMapSystem _map = default!; [Dependency] private readonly SharedPhysicsSystem _physics = default!; [Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!; [Dependency] private readonly ThrowingSystem _throwing = default!; @@ -115,7 +115,7 @@ private void Update(float frameTime, Entity ent, Entity()); + var transformSys = entityManager.System(); + var indices = transform.Coordinates.ToVector2i(entityManager, IoCManager.Resolve(), transformSys); var lookup = entityManager.EntitySysManager.GetEntitySystem(); diff --git a/Content.Server/Construction/ConstructionSystem.Initial.cs b/Content.Server/Construction/ConstructionSystem.Initial.cs index e0bdf096296..39705fc1974 100644 --- a/Content.Server/Construction/ConstructionSystem.Initial.cs +++ b/Content.Server/Construction/ConstructionSystem.Initial.cs @@ -2,7 +2,6 @@ using System.Linq; using System.Threading.Tasks; using Content.Server.Construction.Components; -using Content.Server.Storage.EntitySystems; using Content.Shared.ActionBlocker; using Content.Shared.Construction; using Content.Shared.Construction.Prototypes; @@ -15,7 +14,6 @@ using Content.Shared.Interaction; using Content.Shared.Inventory; using Content.Shared.Storage; -using Content.Shared.Tag; using Robust.Shared.Containers; using Robust.Shared.Player; using Robust.Shared.Timing; @@ -30,8 +28,7 @@ public sealed partial class ConstructionSystem [Dependency] private readonly ActionBlockerSystem _actionBlocker = default!; [Dependency] private readonly SharedHandsSystem _handsSystem = default!; [Dependency] private readonly EntityLookupSystem _lookupSystem = default!; - [Dependency] private readonly StorageSystem _storageSystem = default!; - [Dependency] private readonly TagSystem _tagSystem = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; // --- WARNING! LEGACY CODE AHEAD! --- // This entire file contains the legacy code for initial construction. @@ -466,7 +463,7 @@ void Cleanup() return; } - var mapPos = location.ToMap(EntityManager); + var mapPos = location.ToMap(EntityManager, _transformSystem); var predicate = GetPredicate(constructionPrototype.CanBuildInImpassable, mapPos); if (!_interactionSystem.InRangeUnobstructed(user, mapPos, predicate: predicate)) diff --git a/Content.Server/DeltaV/StationEvents/Events/GlimmerMobSpawnRule.cs b/Content.Server/DeltaV/StationEvents/Events/GlimmerMobSpawnRule.cs index ec9ec770313..22d96a54146 100644 --- a/Content.Server/DeltaV/StationEvents/Events/GlimmerMobSpawnRule.cs +++ b/Content.Server/DeltaV/StationEvents/Events/GlimmerMobSpawnRule.cs @@ -5,7 +5,7 @@ using Content.Server.Psionics.Glimmer; using Content.Server.StationEvents.Components; using Content.Shared.Psionics.Glimmer; -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; namespace Content.Server.StationEvents.Events; diff --git a/Content.Server/DeviceNetwork/Systems/DeviceNetworkJammerSystem.cs b/Content.Server/DeviceNetwork/Systems/DeviceNetworkJammerSystem.cs new file mode 100644 index 00000000000..3d3820562d6 --- /dev/null +++ b/Content.Server/DeviceNetwork/Systems/DeviceNetworkJammerSystem.cs @@ -0,0 +1,38 @@ +using Content.Server.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Components; +using Robust.Server.GameObjects; + +namespace Content.Server.DeviceNetwork.Systems; + +public sealed class DeviceNetworkJammerSystem : EntitySystem +{ + [Dependency] private TransformSystem _transform = default!; + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(BeforePacketSent); + } + + private void BeforePacketSent(EntityUid uid, TransformComponent xform, BeforePacketSentEvent ev) + { + if (ev.Cancelled) + return; + + var query = EntityQueryEnumerator(); + + while (query.MoveNext(out _, out var jammerComp, out var jammerXform)) + { + if (!jammerComp.JammableNetworks.Contains(ev.NetworkId)) + continue; + + if (jammerXform.Coordinates.InRange(EntityManager, _transform, ev.SenderTransform.Coordinates, jammerComp.Range) + || jammerXform.Coordinates.InRange(EntityManager, _transform, xform.Coordinates, jammerComp.Range)) + { + ev.Cancel(); + return; + } + } + } + +} diff --git a/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs b/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs index 83967c9bbd4..20ee7a5dd1b 100644 --- a/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs @@ -351,13 +351,14 @@ private void SendToConnections(ReadOnlySpan connections, var xform = Transform(packet.Sender); - BeforePacketSentEvent beforeEv = new(packet.Sender, xform, _transformSystem.GetWorldPosition(xform)); + var senderPos = _transformSystem.GetWorldPosition(xform); foreach (var connection in connections) { if (connection.Owner == packet.Sender) continue; + BeforePacketSentEvent beforeEv = new(packet.Sender, xform, senderPos, connection.NetIdEnum.ToString()); RaiseLocalEvent(connection.Owner, beforeEv, false); if (!beforeEv.Cancelled) @@ -386,11 +387,17 @@ public sealed class BeforePacketSentEvent : CancellableEntityEventArgs /// public readonly Vector2 SenderPosition; - public BeforePacketSentEvent(EntityUid sender, TransformComponent xform, Vector2 senderPosition) + /// + /// The network the packet will be sent to. + /// + public readonly string NetworkId; + + public BeforePacketSentEvent(EntityUid sender, TransformComponent xform, Vector2 senderPosition, string networkId) { Sender = sender; SenderTransform = xform; SenderPosition = senderPosition; + NetworkId = networkId; } } diff --git a/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs b/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs index fd62514d006..cdc083feacd 100644 --- a/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs @@ -1,4 +1,5 @@ -using Content.Server.DeviceNetwork.Components; +using System.Diagnostics.CodeAnalysis; +using Content.Server.DeviceNetwork.Components; using Content.Server.Medical.CrewMonitoring; using Content.Server.Power.Components; using Content.Server.Station.Systems; @@ -38,7 +39,7 @@ public bool IsActiveServer(EntityUid serverId, SingletonDeviceNetServerComponent /// The address of the active server if it exists /// The component type that determines what type of server you're getting the address of /// True if there is an active serve. False otherwise - public bool TryGetActiveServerAddress(EntityUid stationId, out string? address) where TComp : IComponent + public bool TryGetActiveServerAddress(EntityUid stationId, [NotNullWhen(true)] out string? address) where TComp : IComponent { var servers = EntityQueryEnumerator< SingletonDeviceNetServerComponent, diff --git a/Content.Server/Dragon/DragonSystem.cs b/Content.Server/Dragon/DragonSystem.cs index 93d6bc8db0b..6400472d036 100644 --- a/Content.Server/Dragon/DragonSystem.cs +++ b/Content.Server/Dragon/DragonSystem.cs @@ -28,6 +28,7 @@ public sealed partial class DragonSystem : EntitySystem [Dependency] private readonly RoleSystem _role = default!; [Dependency] private readonly SharedActionsSystem _actions = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; private EntityQuery _objQuery; @@ -146,7 +147,7 @@ private void OnSpawnRift(EntityUid uid, DragonComponent component, DragonSpawnRi // cant stack rifts near eachother foreach (var (_, riftXform) in EntityQuery(true)) { - if (riftXform.Coordinates.InRange(EntityManager, xform.Coordinates, RiftRange)) + if (riftXform.Coordinates.InRange(EntityManager, _transform, xform.Coordinates, RiftRange)) { _popup.PopupEntity(Loc.GetString("carp-rift-proximity", ("proximity", RiftRange)), uid, uid); return; diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs index 1a5a5c40118..6351d999a98 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs @@ -331,7 +331,7 @@ public void QueueExplosion(MapCoordinates epicenter, CameraShake(iterationIntensity.Count * 4f, epicenter, totalIntensity); //For whatever bloody reason, sound system requires ENTITY coordinates. - var mapEntityCoords = EntityCoordinates.FromMap(EntityManager, _mapManager.GetMapEntityId(epicenter.MapId), epicenter); + var mapEntityCoords = EntityCoordinates.FromMap(_mapManager.GetMapEntityId(epicenter.MapId), epicenter, _transformSystem, EntityManager); // play sound. // for the normal audio, we want everyone in pvs range diff --git a/Content.Server/GameTicking/GameTicker.Spawning.cs b/Content.Server/GameTicking/GameTicker.Spawning.cs index 54587e95be3..bf69b4b9094 100644 --- a/Content.Server/GameTicking/GameTicker.Spawning.cs +++ b/Content.Server/GameTicking/GameTicker.Spawning.cs @@ -394,7 +394,7 @@ public EntityCoordinates GetObserverSpawnPoint() // Ideally engine would just spawn them on grid directly I guess? Right now grid traversal is handling it during // update which means we need to add a hack somewhere around it. var spawn = _robustRandom.Pick(_possiblePositions); - var toMap = spawn.ToMap(EntityManager); + var toMap = spawn.ToMap(EntityManager, _transform); if (_mapManager.TryFindGridAt(toMap, out var gridUid, out _)) { diff --git a/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs b/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs index f83d719c219..98926536b9d 100644 --- a/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs @@ -201,7 +201,7 @@ private void OnPlayerSpawningEvent(RulePlayerSpawningEvent ev) if (!gridId.HasValue) { - Logger.ErrorS("pirates", $"Gridid was null when loading \"{map}\", aborting."); + Log.Error($"Gridid was null when loading \"{map}\", aborting."); foreach (var session in ops) { ev.PlayerPool.Add(session); @@ -230,7 +230,7 @@ private void OnPlayerSpawningEvent(RulePlayerSpawningEvent ev) if (spawns.Count == 0) { spawns.Add(Transform(pirates.PirateShip).Coordinates); - Logger.WarningS("pirates", $"Fell back to default spawn for pirates!"); + Log.Warning($"Fell back to default spawn for pirates!"); } for (var i = 0; i < ops.Length; i++) diff --git a/Content.Server/Guardian/GuardianSystem.cs b/Content.Server/Guardian/GuardianSystem.cs index 627c336a36b..d3a717c74af 100644 --- a/Content.Server/Guardian/GuardianSystem.cs +++ b/Content.Server/Guardian/GuardianSystem.cs @@ -34,6 +34,7 @@ public sealed class GuardianSystem : EntitySystem [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly BodySystem _bodySystem = default!; [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; public override void Initialize() { @@ -328,7 +329,7 @@ private void CheckGuardianMove( if (!guardianComponent.GuardianLoose) return; - if (!guardianXform.Coordinates.InRange(EntityManager, hostXform.Coordinates, guardianComponent.DistanceAllowed)) + if (!guardianXform.Coordinates.InRange(EntityManager, _transform, hostXform.Coordinates, guardianComponent.DistanceAllowed)) RetractGuardian(hostUid, hostComponent, guardianUid, guardianComponent); } diff --git a/Content.Server/Hands/Systems/HandsSystem.cs b/Content.Server/Hands/Systems/HandsSystem.cs index a783a9e0968..a0e872dbeb1 100644 --- a/Content.Server/Hands/Systems/HandsSystem.cs +++ b/Content.Server/Hands/Systems/HandsSystem.cs @@ -31,6 +31,7 @@ public sealed class HandsSystem : SharedHandsSystem [Dependency] private readonly VirtualItemSystem _virtualItemSystem = default!; [Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!; [Dependency] private readonly SharedHandsSystem _handsSystem = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; [Dependency] private readonly PullingSystem _pullingSystem = default!; [Dependency] private readonly ThrowingSystem _throwingSystem = default!; @@ -191,7 +192,7 @@ hands.ActiveHandEntity is not { } throwEnt || throwEnt = splitStack.Value; } - var direction = coordinates.ToMapPos(EntityManager) - Transform(player).WorldPosition; + var direction = coordinates.ToMapPos(EntityManager, _transformSystem) - Transform(player).WorldPosition; if (direction == Vector2.Zero) return true; diff --git a/Content.Server/Implants/SubdermalImplantSystem.cs b/Content.Server/Implants/SubdermalImplantSystem.cs index ac415a04342..8eb27414481 100644 --- a/Content.Server/Implants/SubdermalImplantSystem.cs +++ b/Content.Server/Implants/SubdermalImplantSystem.cs @@ -99,7 +99,7 @@ private void OnScramImplant(EntityUid uid, SubdermalImplantComponent component, return; var xform = Transform(ent); - var entityCoords = xform.Coordinates.ToMap(EntityManager); + var entityCoords = xform.Coordinates.ToMap(EntityManager, _xform); // try to find a valid position to teleport to, teleport to whatever works if we can't var targetCoords = new MapCoordinates(); diff --git a/Content.Server/Magic/MagicSystem.cs b/Content.Server/Magic/MagicSystem.cs index 2c9b11dbd3d..92cd794ce2c 100644 --- a/Content.Server/Magic/MagicSystem.cs +++ b/Content.Server/Magic/MagicSystem.cs @@ -168,7 +168,7 @@ private void OnProjectileSpell(ProjectileSpellEvent ev) foreach (var pos in GetSpawnPositions(xform, ev.Pos)) { // If applicable, this ensures the projectile is parented to grid on spawn, instead of the map. - var mapPos = pos.ToMap(EntityManager); + var mapPos = pos.ToMap(EntityManager, _transformSystem); var spawnCoords = _mapManager.TryFindGridAt(mapPos, out var gridUid, out _) ? pos.WithEntityId(gridUid, EntityManager) : new(_mapManager.GetMapEntityId(mapPos.MapId), mapPos.Position); diff --git a/Content.Server/NPC/HTN/Preconditions/CoordinatesInRangePrecondition.cs b/Content.Server/NPC/HTN/Preconditions/CoordinatesInRangePrecondition.cs index 3e030aa8197..3485bd2a18c 100644 --- a/Content.Server/NPC/HTN/Preconditions/CoordinatesInRangePrecondition.cs +++ b/Content.Server/NPC/HTN/Preconditions/CoordinatesInRangePrecondition.cs @@ -22,6 +22,6 @@ public override bool IsMet(NPCBlackboard blackboard) if (!blackboard.TryGetValue(TargetKey, out var target, _entManager)) return false; - return coordinates.InRange(_entManager, target, blackboard.GetValueOrDefault(RangeKey, _entManager)); + return coordinates.InRange(_entManager, _entManager.System(), target, blackboard.GetValueOrDefault(RangeKey, _entManager)); } } diff --git a/Content.Server/NPC/HTN/Preconditions/CoordinatesNotInRangePrecondition.cs b/Content.Server/NPC/HTN/Preconditions/CoordinatesNotInRangePrecondition.cs index 6d8977bb7a7..9d000ca2eb8 100644 --- a/Content.Server/NPC/HTN/Preconditions/CoordinatesNotInRangePrecondition.cs +++ b/Content.Server/NPC/HTN/Preconditions/CoordinatesNotInRangePrecondition.cs @@ -22,7 +22,7 @@ public override bool IsMet(NPCBlackboard blackboard) if (!blackboard.TryGetValue(TargetKey, out var target, _entManager)) return false; - return !coordinates.InRange(_entManager, target, blackboard.GetValueOrDefault(RangeKey, _entManager)); + return !coordinates.InRange(_entManager, _entManager.System(), target, blackboard.GetValueOrDefault(RangeKey, _entManager)); } } diff --git a/Content.Server/NPC/HTN/Preconditions/TargetInRangePrecondition.cs b/Content.Server/NPC/HTN/Preconditions/TargetInRangePrecondition.cs index 5d616ba630e..aaccb426d71 100644 --- a/Content.Server/NPC/HTN/Preconditions/TargetInRangePrecondition.cs +++ b/Content.Server/NPC/HTN/Preconditions/TargetInRangePrecondition.cs @@ -23,6 +23,6 @@ public override bool IsMet(NPCBlackboard blackboard) !_entManager.TryGetComponent(target, out var targetXform)) return false; - return coordinates.InRange(_entManager, targetXform.Coordinates, blackboard.GetValueOrDefault(RangeKey, _entManager)); + return coordinates.InRange(_entManager, _entManager.System(), targetXform.Coordinates, blackboard.GetValueOrDefault(RangeKey, _entManager)); } } diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.cs index 95f931cdd6a..a59af88ff58 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.cs @@ -405,7 +405,7 @@ public async void GetPathEvent( return null; } - var localPos = xform.InvWorldMatrix.Transform(coordinates.ToMapPos(EntityManager)); + var localPos = xform.InvWorldMatrix.Transform(coordinates.ToMapPos(EntityManager, _transform)); var origin = GetOrigin(localPos); if (!TryGetChunk(origin, comp, out var chunk)) diff --git a/Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs b/Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs index 7ac6768e359..e7af2c91073 100644 --- a/Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs +++ b/Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs @@ -56,7 +56,30 @@ private bool IsFreeSpace( return true; } - return false; + // TODO: Ideally for "FreeSpace" we check all entities on the tile and build flags dynamically (pathfinder refactor in future). + var ents = _entSetPool.Get(); + _lookup.GetLocalEntitiesIntersecting(node.GraphUid, node.ChunkOrigin, ents, flags: LookupFlags.Static); + var result = true; + + if (ents.Count > 0) + { + var fixtures = _fixturesQuery.GetComponent(uid); + var physics = _physicsQuery.GetComponent(uid); + + foreach (var intersecting in ents) + { + if (!_physics.IsCurrentlyHardCollidable((uid, fixtures, physics), intersecting)) + { + continue; + } + + result = false; + break; + } + } + + _entSetPool.Return(ents); + return result; } /// diff --git a/Content.Server/NPC/Systems/NPCUtilitySystem.cs b/Content.Server/NPC/Systems/NPCUtilitySystem.cs index fc483f68c3b..33941be9292 100644 --- a/Content.Server/NPC/Systems/NPCUtilitySystem.cs +++ b/Content.Server/NPC/Systems/NPCUtilitySystem.cs @@ -43,6 +43,7 @@ public sealed class NPCUtilitySystem : EntitySystem [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly SolutionContainerSystem _solutions = default!; [Dependency] private readonly WeldableSystem _weldable = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; private EntityQuery _puddleQuery; private EntityQuery _xformQuery; @@ -296,7 +297,7 @@ private float GetScore(NPCBlackboard blackboard, EntityUid targetUid, UtilityCon { var radius = blackboard.GetValueOrDefault(NPCBlackboard.VisionRadius, EntityManager); - return ExamineSystemShared.InRangeUnOccluded(owner, targetUid, radius + 0.5f, null) ? 1f : 0f; + return _examine.InRangeUnOccluded(owner, targetUid, radius + 0.5f, null) ? 1f : 0f; } case TargetInLOSOrCurrentCon: { @@ -313,7 +314,7 @@ private float GetScore(NPCBlackboard blackboard, EntityUid targetUid, UtilityCon return 1f; } - return ExamineSystemShared.InRangeUnOccluded(owner, targetUid, radius + bufferRange, null) ? 1f : 0f; + return _examine.InRangeUnOccluded(owner, targetUid, radius + bufferRange, null) ? 1f : 0f; } case TargetIsAliveCon: { diff --git a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/MetapsionicPowerSystem.cs b/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/MetapsionicPowerSystem.cs deleted file mode 100644 index b775117b716..00000000000 --- a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/MetapsionicPowerSystem.cs +++ /dev/null @@ -1,74 +0,0 @@ -using Content.Shared.Actions; -using Content.Shared.Abilities.Psionics; -using Content.Shared.StatusEffect; -using Content.Shared.Popups; -using Robust.Shared.Prototypes; -using Robust.Shared.Timing; -using Content.Shared.Mind; -using Content.Shared.Actions.Events; - -namespace Content.Server.Abilities.Psionics -{ - public sealed class MetapsionicPowerSystem : EntitySystem - { - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly StatusEffectsSystem _statusEffects = default!; - [Dependency] private readonly SharedActionsSystem _actions = default!; - [Dependency] private readonly EntityLookupSystem _lookup = default!; - [Dependency] private readonly SharedPopupSystem _popups = default!; - [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; - [Dependency] private readonly SharedMindSystem _mindSystem = default!; - - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnInit); - SubscribeLocalEvent(OnShutdown); - SubscribeLocalEvent(OnPowerUsed); - } - - private void OnInit(EntityUid uid, MetapsionicPowerComponent component, ComponentInit args) - { - _actions.AddAction(uid, ref component.MetapsionicActionEntity, component.MetapsionicActionId ); - _actions.TryGetActionData( component.MetapsionicActionEntity, out var actionData ); - if (actionData is { UseDelay: not null }) - _actions.StartUseDelay(component.MetapsionicActionEntity); - if (TryComp(uid, out var psionic) && psionic.PsionicAbility == null) - { - psionic.PsionicAbility = component.MetapsionicActionEntity; - psionic.ActivePowers.Add(component); - } - - } - - private void OnShutdown(EntityUid uid, MetapsionicPowerComponent component, ComponentShutdown args) - { - _actions.RemoveAction(uid, component.MetapsionicActionEntity); - - if (TryComp(uid, out var psionic)) - { - psionic.ActivePowers.Remove(component); - } - } - - private void OnPowerUsed(EntityUid uid, MetapsionicPowerComponent component, MetapsionicPowerActionEvent args) - { - foreach (var entity in _lookup.GetEntitiesInRange(uid, component.Range)) - { - if (HasComp(entity) && entity != uid && !HasComp(entity) && - !(HasComp(entity) && Transform(entity).ParentUid == uid)) - { - _popups.PopupEntity(Loc.GetString("metapsionic-pulse-success"), uid, uid, PopupType.LargeCaution); - args.Handled = true; - return; - } - } - _popups.PopupEntity(Loc.GetString("metapsionic-pulse-failure"), uid, uid, PopupType.Large); - _psionics.LogPowerUsed(uid, "metapsionic pulse", 2, 4); - - args.Handled = true; - } - } -} diff --git a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/PsionicRegenerationPowerSystem.cs b/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/PsionicRegenerationPowerSystem.cs deleted file mode 100644 index 2eca3173b6d..00000000000 --- a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/PsionicRegenerationPowerSystem.cs +++ /dev/null @@ -1,128 +0,0 @@ -using Robust.Shared.Audio; -using Robust.Server.GameObjects; -using Robust.Shared.Player; -using Robust.Shared.Prototypes; -using Content.Server.Body.Components; -using Content.Server.Body.Systems; -using Content.Server.Chemistry.Containers.EntitySystems; -using Content.Server.Chemistry.EntitySystems; -using Content.Server.DoAfter; -using Content.Shared.Abilities.Psionics; -using Content.Shared.Actions; -using Content.Shared.Chemistry.Components; -using Content.Shared.DoAfter; -using Content.Shared.FixedPoint; -using Content.Shared.Popups; -using Content.Shared.Psionics.Events; -using Content.Shared.Tag; -using Content.Shared.Examine; -using static Content.Shared.Examine.ExamineSystemShared; -using Robust.Shared.Timing; -using Content.Server.Mind; -using Content.Shared.Actions.Events; -using Content.Shared.Chemistry.EntitySystems; -using Robust.Server.Audio; - -namespace Content.Server.Abilities.Psionics -{ - public sealed class PsionicRegenerationPowerSystem : EntitySystem - { - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly SharedActionsSystem _actions = default!; - [Dependency] private readonly SolutionContainerSystem _solutionSystem = default!; - [Dependency] private readonly BloodstreamSystem _bloodstreamSystem = default!; - [Dependency] private readonly AudioSystem _audioSystem = default!; - [Dependency] private readonly TagSystem _tagSystem = default!; - [Dependency] private readonly DoAfterSystem _doAfterSystem = default!; - [Dependency] private readonly SharedPopupSystem _popupSystem = default!; - [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; - [Dependency] private readonly MindSystem _mindSystem = default!; - - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnInit); - SubscribeLocalEvent(OnShutdown); - SubscribeLocalEvent(OnPowerUsed); - - SubscribeLocalEvent(OnDispelled); - SubscribeLocalEvent(OnDoAfter); - } - - private void OnInit(EntityUid uid, PsionicRegenerationPowerComponent component, ComponentInit args) - { - _actions.AddAction(uid, ref component.PsionicRegenerationActionEntity, component.PsionicRegenerationActionId ); - _actions.TryGetActionData( component.PsionicRegenerationActionEntity, out var actionData ); - if (actionData is { UseDelay: not null }) - _actions.StartUseDelay(component.PsionicRegenerationActionEntity); - if (TryComp(uid, out var psionic) && psionic.PsionicAbility == null) - { - psionic.PsionicAbility = component.PsionicRegenerationActionEntity; - psionic.ActivePowers.Add(component); - } - } - - private void OnPowerUsed(EntityUid uid, PsionicRegenerationPowerComponent component, PsionicRegenerationPowerActionEvent args) - { - var ev = new PsionicRegenerationDoAfterEvent(_gameTiming.CurTime); - var doAfterArgs = new DoAfterArgs(EntityManager, uid, component.UseDelay, ev, uid); - - _doAfterSystem.TryStartDoAfter(doAfterArgs, out var doAfterId); - - component.DoAfter = doAfterId; - - _popupSystem.PopupEntity(Loc.GetString("psionic-regeneration-begin", ("entity", uid)), - uid, - // TODO: Use LoS-based Filter when one is available. - Filter.Pvs(uid).RemoveWhereAttachedEntity(entity => !ExamineSystemShared.InRangeUnOccluded(uid, entity, ExamineRange, null)), - true, - PopupType.Medium); - - _audioSystem.PlayPvs(component.SoundUse, component.Owner, AudioParams.Default.WithVolume(8f).WithMaxDistance(1.5f).WithRolloffFactor(3.5f)); - _psionics.LogPowerUsed(uid, "psionic regeneration"); - args.Handled = true; - } - - private void OnShutdown(EntityUid uid, PsionicRegenerationPowerComponent component, ComponentShutdown args) - { - _actions.RemoveAction(uid, component.PsionicRegenerationActionEntity); - - if (TryComp(uid, out var psionic)) - { - psionic.ActivePowers.Remove(component); - } - } - - private void OnDispelled(EntityUid uid, PsionicRegenerationPowerComponent component, DispelledEvent args) - { - if (component.DoAfter == null) - return; - - _doAfterSystem.Cancel(component.DoAfter); - component.DoAfter = null; - - args.Handled = true; - } - - private void OnDoAfter(EntityUid uid, PsionicRegenerationPowerComponent component, PsionicRegenerationDoAfterEvent args) - { - component.DoAfter = null; - - if (!TryComp(uid, out var stream)) - return; - - // DoAfter has no way to run a callback during the process to give - // small doses of the reagent, so we wait until either the action - // is cancelled (by being dispelled) or complete to give the - // appropriate dose. A timestamp delta is used to accomplish this. - var percentageComplete = Math.Min(1f, (_gameTiming.CurTime - args.StartedAt).TotalSeconds / component.UseDelay); - - var solution = new Solution(); - solution.AddReagent("PsionicRegenerationEssence", FixedPoint2.New(component.EssenceAmount * percentageComplete)); - _bloodstreamSystem.TryAddToChemicals(uid, solution, stream); - } - } -} - diff --git a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/PyrokinesisPowerSystem.cs b/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/PyrokinesisPowerSystem.cs deleted file mode 100644 index 407b72c6b58..00000000000 --- a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/PyrokinesisPowerSystem.cs +++ /dev/null @@ -1,66 +0,0 @@ -using Content.Shared.Actions; -using Content.Shared.Abilities.Psionics; -using Content.Server.Atmos.Components; -using Content.Server.Atmos.EntitySystems; -using Content.Server.Popups; -using Robust.Shared.Prototypes; -using Robust.Shared.Timing; -using Content.Server.Mind; -using Content.Shared.Actions.Events; - -namespace Content.Server.Abilities.Psionics -{ - public sealed class PyrokinesisPowerSystem : EntitySystem - { - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly SharedActionsSystem _actions = default!; - [Dependency] private readonly FlammableSystem _flammableSystem = default!; - [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; - [Dependency] private readonly PopupSystem _popupSystem = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; - [Dependency] private readonly MindSystem _mindSystem = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnInit); - SubscribeLocalEvent(OnShutdown); - SubscribeLocalEvent(OnPowerUsed); - } - - private void OnInit(EntityUid uid, PyrokinesisPowerComponent component, ComponentInit args) - { - _actions.AddAction(uid, ref component.PyrokinesisActionEntity, component.PyrokinesisActionId ); - _actions.TryGetActionData( component.PyrokinesisActionEntity, out var actionData ); - if (actionData is { UseDelay: not null }) - _actions.StartUseDelay(component.PyrokinesisActionEntity); - if (TryComp(uid, out var psionic) && psionic.PsionicAbility == null) - { - psionic.PsionicAbility = component.PyrokinesisActionEntity; - psionic.ActivePowers.Add(component); - } - } - - private void OnShutdown(EntityUid uid, PyrokinesisPowerComponent component, ComponentShutdown args) - { - _actions.RemoveAction(uid, component.PyrokinesisActionEntity); - if (TryComp(uid, out var psionic)) - { - psionic.ActivePowers.Remove(component); - } - } - - private void OnPowerUsed(PyrokinesisPowerActionEvent args) - { - if (!TryComp(args.Target, out var flammableComponent)) - return; - - flammableComponent.FireStacks += 5; - _flammableSystem.Ignite(args.Target, args.Target); - _popupSystem.PopupEntity(Loc.GetString("pyrokinesis-power-used", ("target", args.Target)), args.Target, Shared.Popups.PopupType.LargeCaution); - - _psionics.LogPowerUsed(args.Performer, "pyrokinesis"); - args.Handled = true; - } - } -} diff --git a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/TelegnosisPowerSystem.cs b/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/TelegnosisPowerSystem.cs deleted file mode 100644 index f7ae04b61ea..00000000000 --- a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/TelegnosisPowerSystem.cs +++ /dev/null @@ -1,67 +0,0 @@ -using Content.Shared.Actions; -using Content.Shared.StatusEffect; -using Content.Shared.Abilities.Psionics; -using Content.Shared.Mind.Components; -using Robust.Shared.Prototypes; -using Robust.Shared.Timing; -using Content.Server.Mind; -using Content.Shared.Actions.Events; - -namespace Content.Server.Abilities.Psionics -{ - public sealed class TelegnosisPowerSystem : EntitySystem - { - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly StatusEffectsSystem _statusEffects = default!; - [Dependency] private readonly SharedActionsSystem _actions = default!; - [Dependency] private readonly MindSwapPowerSystem _mindSwap = default!; - [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; - [Dependency] private readonly MindSystem _mindSystem = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnInit); - SubscribeLocalEvent(OnShutdown); - SubscribeLocalEvent(OnPowerUsed); - SubscribeLocalEvent(OnMindRemoved); - } - - private void OnInit(EntityUid uid, TelegnosisPowerComponent component, ComponentInit args) - { - _actions.AddAction(uid, ref component.TelegnosisActionEntity, component.TelegnosisActionId ); - _actions.TryGetActionData( component.TelegnosisActionEntity, out var actionData ); - if (actionData is { UseDelay: not null }) - _actions.StartUseDelay(component.TelegnosisActionEntity); - if (TryComp(uid, out var psionic) && psionic.PsionicAbility == null) - { - psionic.PsionicAbility = component.TelegnosisActionEntity; - psionic.ActivePowers.Add(component); - } - } - - private void OnShutdown(EntityUid uid, TelegnosisPowerComponent component, ComponentShutdown args) - { - _actions.RemoveAction(uid, component.TelegnosisActionEntity); - if (TryComp(uid, out var psionic)) - { - psionic.ActivePowers.Remove(component); - } - } - - private void OnPowerUsed(EntityUid uid, TelegnosisPowerComponent component, TelegnosisPowerActionEvent args) - { - var projection = Spawn(component.Prototype, Transform(uid).Coordinates); - Transform(projection).AttachToGridOrMap(); - _mindSwap.Swap(uid, projection); - - _psionics.LogPowerUsed(uid, "telegnosis"); - args.Handled = true; - } - private void OnMindRemoved(EntityUid uid, TelegnosticProjectionComponent component, MindRemovedMessage args) - { - QueueDel(uid); - } - } -} diff --git a/Content.Server/Nyanotrasen/Chemistry/Effects/ChemRemovePsionic.cs b/Content.Server/Nyanotrasen/Chemistry/Effects/ChemRemovePsionic.cs index a23a5b3d77d..0ce3f9d7c64 100644 --- a/Content.Server/Nyanotrasen/Chemistry/Effects/ChemRemovePsionic.cs +++ b/Content.Server/Nyanotrasen/Chemistry/Effects/ChemRemovePsionic.cs @@ -1,5 +1,5 @@ using Content.Shared.Chemistry.Reagent; -using Content.Server.Abilities.Psionics; +using Content.Server.Psionics.Abilities; using JetBrains.Annotations; using Robust.Shared.Prototypes; diff --git a/Content.Server/Nyanotrasen/Objectives/Components/BecomePsionicConditionComponent.cs b/Content.Server/Nyanotrasen/Objectives/Components/BecomePsionicConditionComponent.cs deleted file mode 100644 index 3b677bab2d4..00000000000 --- a/Content.Server/Nyanotrasen/Objectives/Components/BecomePsionicConditionComponent.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Content.Server.Objectives.Systems; - -namespace Content.Server.Objectives.Components; - -/// -/// Requires that the player dies to be complete. -/// -[RegisterComponent, Access(typeof(BecomePsionicConditionSystem))] -public sealed partial class BecomePsionicConditionComponent : Component -{ -} \ No newline at end of file diff --git a/Content.Server/Nyanotrasen/Objectives/Systems/BecomePsionicConditionSystem.cs b/Content.Server/Nyanotrasen/Objectives/Systems/BecomePsionicConditionSystem.cs deleted file mode 100644 index d090c320a41..00000000000 --- a/Content.Server/Nyanotrasen/Objectives/Systems/BecomePsionicConditionSystem.cs +++ /dev/null @@ -1,32 +0,0 @@ -using Content.Shared.Abilities.Psionics; -using Content.Server.Objectives.Components; -using Content.Shared.Mind; -using Content.Shared.Objectives.Components; - -namespace Content.Server.Objectives.Systems -{ - public sealed class BecomePsionicConditionSystem : EntitySystem - { - private EntityQuery _metaQuery; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnGetProgress); - } - - private void OnGetProgress(EntityUid uid, BecomePsionicConditionComponent comp, ref ObjectiveGetProgressEvent args) - { - args.Progress = GetProgress(args.Mind); - } - - private float GetProgress(MindComponent mind) - { - var entMan = IoCManager.Resolve(); - if (HasComp(mind.CurrentEntity)) - return 1; - return 0; - } - } -} diff --git a/Content.Server/Nyanotrasen/Psionics/PotentialPsionicComponent.cs b/Content.Server/Nyanotrasen/Psionics/PotentialPsionicComponent.cs deleted file mode 100644 index 9499497cd1d..00000000000 --- a/Content.Server/Nyanotrasen/Psionics/PotentialPsionicComponent.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Content.Server.Psionics -{ - [RegisterComponent] - public sealed partial class PotentialPsionicComponent : Component - { - [DataField("chance")] - public float Chance = 0.04f; - - /// - /// YORO (you only reroll once) - /// - public bool Rerolled = false; - } -} diff --git a/Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs b/Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs index 148598fe2c3..24459d29e22 100644 --- a/Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs +++ b/Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs @@ -5,7 +5,7 @@ using Content.Server.Chemistry.Containers.EntitySystems; using Content.Server.Fluids.EntitySystems; using Content.Server.Psionics; -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; using Content.Shared.Chat; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.EntitySystems; diff --git a/Content.Server/Nyanotrasen/Research/SophicScribe/SophicScribeSystem.cs b/Content.Server/Nyanotrasen/Research/SophicScribe/SophicScribeSystem.cs index bc3c22cc350..b8cdcb56d47 100644 --- a/Content.Server/Nyanotrasen/Research/SophicScribe/SophicScribeSystem.cs +++ b/Content.Server/Nyanotrasen/Research/SophicScribe/SophicScribeSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Abilities.Psionics; +using Content.Server.Psionics.Abilities; using Content.Server.Chat.Systems; using Content.Server.Radio.Components; using Content.Server.Radio.EntitySystems; diff --git a/Content.Server/Nyanotrasen/StationEvents/Events/GlimmerWispSpawnRule.cs b/Content.Server/Nyanotrasen/StationEvents/Events/GlimmerWispSpawnRule.cs index 66eea988aeb..89b5a176f24 100644 --- a/Content.Server/Nyanotrasen/StationEvents/Events/GlimmerWispSpawnRule.cs +++ b/Content.Server/Nyanotrasen/StationEvents/Events/GlimmerWispSpawnRule.cs @@ -5,7 +5,7 @@ using Content.Server.Psionics.Glimmer; using Content.Server.StationEvents.Components; using Content.Shared.Psionics.Glimmer; -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; namespace Content.Server.StationEvents.Events; diff --git a/Content.Server/Nyanotrasen/StationEvents/Events/MassMindSwapRule.cs b/Content.Server/Nyanotrasen/StationEvents/Events/MassMindSwapRule.cs index 63944563269..89f3bc97501 100644 --- a/Content.Server/Nyanotrasen/StationEvents/Events/MassMindSwapRule.cs +++ b/Content.Server/Nyanotrasen/StationEvents/Events/MassMindSwapRule.cs @@ -1,10 +1,9 @@ -using Robust.Server.GameObjects; using Robust.Shared.Random; -using Content.Server.Abilities.Psionics; +using Content.Server.Psionics.Abilities; using Content.Server.GameTicking.Rules.Components; using Content.Server.Psionics; using Content.Server.StationEvents.Components; -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Robust.Shared.Player; diff --git a/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericFryRule.cs b/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericFryRule.cs index c04543d2195..6a2c1c3ba7d 100644 --- a/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericFryRule.cs +++ b/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericFryRule.cs @@ -10,7 +10,7 @@ using Content.Server.Power.EntitySystems; using Content.Server.Psionics.Glimmer; using Content.Server.StationEvents.Components; -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; using Content.Shared.Damage; using Content.Shared.Inventory; using Content.Shared.Mobs.Components; diff --git a/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericStormRule.cs b/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericStormRule.cs index 175318e15bd..8812ed1fe37 100644 --- a/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericStormRule.cs +++ b/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericStormRule.cs @@ -1,9 +1,9 @@ using Robust.Shared.Random; -using Content.Server.Abilities.Psionics; +using Content.Server.Psionics.Abilities; using Content.Server.GameTicking.Rules.Components; using Content.Server.StationEvents.Components; using Content.Server.Psionics; -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; using Content.Shared.Mobs.Systems; using Content.Shared.Psionics.Glimmer; using Content.Shared.Zombies; diff --git a/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericZapRule.cs b/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericZapRule.cs index 82c3d72b139..3672d317d9e 100644 --- a/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericZapRule.cs +++ b/Content.Server/Nyanotrasen/StationEvents/Events/NoosphericZapRule.cs @@ -3,7 +3,7 @@ using Content.Server.Psionics; using Content.Server.StationEvents.Components; using Content.Server.Stunnable; -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Content.Shared.StatusEffect; diff --git a/Content.Server/Nyanotrasen/StationEvents/Events/PsionicCatGotYourTongueRule.cs b/Content.Server/Nyanotrasen/StationEvents/Events/PsionicCatGotYourTongueRule.cs index 63e0a435cb0..753b2e25729 100644 --- a/Content.Server/Nyanotrasen/StationEvents/Events/PsionicCatGotYourTongueRule.cs +++ b/Content.Server/Nyanotrasen/StationEvents/Events/PsionicCatGotYourTongueRule.cs @@ -4,7 +4,7 @@ using Content.Server.GameTicking.Rules.Components; using Content.Server.StationEvents.Components; using Content.Shared.Mobs.Components; -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; using Content.Shared.StatusEffect; using Content.Shared.Mobs.Systems; using Robust.Shared.Audio.Systems; diff --git a/Content.Server/Pointing/EntitySystems/PointingSystem.cs b/Content.Server/Pointing/EntitySystems/PointingSystem.cs index a7c455e6a5d..9b2e14eff8b 100644 --- a/Content.Server/Pointing/EntitySystems/PointingSystem.cs +++ b/Content.Server/Pointing/EntitySystems/PointingSystem.cs @@ -36,7 +36,9 @@ internal sealed class PointingSystem : SharedPointingSystem [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly VisibilitySystem _visibilitySystem = default!; [Dependency] private readonly SharedMindSystem _minds = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; private static readonly TimeSpan PointDelay = TimeSpan.FromSeconds(0.5f); @@ -96,11 +98,11 @@ public bool InRange(EntityUid pointer, EntityCoordinates coordinates) { if (HasComp(pointer)) { - return Transform(pointer).Coordinates.InRange(EntityManager, coordinates, 15); + return Transform(pointer).Coordinates.InRange(EntityManager, _transform, coordinates, 15); } else { - return ExamineSystemShared.InRangeUnOccluded(pointer, coordinates, 15, predicate: e => e == pointer); + return _examine.InRangeUnOccluded(pointer, coordinates, 15, predicate: e => e == pointer); } } @@ -141,7 +143,7 @@ public bool TryPoint(ICommonSession? session, EntityCoordinates coordsPointed, E return false; } - var mapCoordsPointed = coordsPointed.ToMap(EntityManager); + var mapCoordsPointed = coordsPointed.ToMap(EntityManager, _transform); _rotateToFaceSystem.TryFaceCoordinates(player, mapCoordsPointed.Position); var arrow = EntityManager.SpawnEntity("PointingArrow", coordsPointed); @@ -149,7 +151,7 @@ public bool TryPoint(ICommonSession? session, EntityCoordinates coordsPointed, E if (TryComp(arrow, out var pointing)) { if (TryComp(player, out TransformComponent? xformPlayer)) - pointing.StartPosition = EntityCoordinates.FromMap(arrow, xformPlayer.Coordinates.ToMap(EntityManager)).Position; + pointing.StartPosition = EntityCoordinates.FromMap(arrow, xformPlayer.Coordinates.ToMap(EntityManager, _transform), _transform).Position; pointing.EndTime = _gameTiming.CurTime + PointDuration; diff --git a/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs b/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs index 5ed39d51787..048fda23553 100644 --- a/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs +++ b/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs @@ -20,6 +20,8 @@ public sealed class PowerReceiverSystem : EntitySystem [Dependency] private readonly IAdminManager _adminManager = default!; [Dependency] private readonly AppearanceSystem _appearance = default!; [Dependency] private readonly AudioSystem _audio = default!; + private EntityQuery _recQuery; + private EntityQuery _provQuery; public override void Initialize() { @@ -35,6 +37,9 @@ public override void Initialize() SubscribeLocalEvent>(OnGetVerbs); SubscribeLocalEvent>(AddSwitchPowerVerb); + + _recQuery = GetEntityQuery(); + _provQuery = GetEntityQuery(); } private void OnGetVerbs(EntityUid uid, ApcPowerReceiverComponent component, GetVerbsEvent args) @@ -77,7 +82,7 @@ private void OnProviderShutdown(EntityUid uid, ApcPowerProviderComponent compone private void OnProviderConnected(Entity receiver, ref ExtensionCableSystem.ProviderConnectedEvent args) { var providerUid = args.Provider.Owner; - if (!EntityManager.TryGetComponent(providerUid, out var provider)) + if (!_provQuery.TryGetComponent(providerUid, out var provider)) return; receiver.Comp.Provider = provider; @@ -94,7 +99,7 @@ private void OnProviderDisconnected(Entity receiver, private void OnReceiverConnected(Entity provider, ref ExtensionCableSystem.ReceiverConnectedEvent args) { - if (EntityManager.TryGetComponent(args.Receiver, out ApcPowerReceiverComponent? receiver)) + if (_recQuery.TryGetComponent(args.Receiver, out var receiver)) { provider.Comp.AddReceiver(receiver); } @@ -102,7 +107,7 @@ private void OnReceiverConnected(Entity provider, ref private void OnReceiverDisconnected(EntityUid uid, ApcPowerProviderComponent provider, ExtensionCableSystem.ReceiverDisconnectedEvent args) { - if (EntityManager.TryGetComponent(args.Receiver, out ApcPowerReceiverComponent? receiver)) + if (_recQuery.TryGetComponent(args.Receiver, out var receiver)) { provider.RemoveReceiver(receiver); } @@ -116,7 +121,7 @@ private void AddSwitchPowerVerb(EntityUid uid, PowerSwitchComponent component, G if (!HasComp(args.User)) return; - if (!TryComp(uid, out var receiver)) + if (!_recQuery.TryGetComponent(uid, out var receiver)) return; if (!receiver.NeedsPower) @@ -152,7 +157,7 @@ private void ProviderChanged(Entity receiver) /// public bool IsPowered(EntityUid uid, ApcPowerReceiverComponent? receiver = null) { - if (!Resolve(uid, ref receiver, false)) + if (!_recQuery.Resolve(uid, ref receiver, false)) return true; return receiver.Powered; @@ -164,7 +169,7 @@ public bool IsPowered(EntityUid uid, ApcPowerReceiverComponent? receiver = null) /// public bool TogglePower(EntityUid uid, bool playSwitchSound = true, ApcPowerReceiverComponent? receiver = null, EntityUid? user = null) { - if (!Resolve(uid, ref receiver, false)) + if (!_recQuery.Resolve(uid, ref receiver, false)) return true; // it'll save a lot of confusion if 'always powered' means 'always powered' diff --git a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/DispelPowerSystem.cs b/Content.Server/Psionics/Abilities/DispelPowerSystem.cs similarity index 83% rename from Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/DispelPowerSystem.cs rename to Content.Server/Psionics/Abilities/DispelPowerSystem.cs index d338a5a5bcb..67176c3a3d2 100644 --- a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/DispelPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/DispelPowerSystem.cs @@ -1,24 +1,20 @@ using Content.Shared.Actions; using Content.Shared.StatusEffect; -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; using Content.Shared.Damage; using Content.Shared.Revenant.Components; using Content.Server.Guardian; using Content.Server.Bible.Components; using Content.Server.Popups; -using Robust.Shared.Prototypes; using Robust.Shared.Player; using Robust.Shared.Random; -using Robust.Shared.Timing; -using Content.Shared.Mind; using Content.Shared.Actions.Events; using Robust.Shared.Audio.Systems; -namespace Content.Server.Abilities.Psionics +namespace Content.Server.Psionics.Abilities { public sealed class DispelPowerSystem : EntitySystem { - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly StatusEffectsSystem _statusEffects = default!; [Dependency] private readonly SharedActionsSystem _actions = default!; [Dependency] private readonly DamageableSystem _damageableSystem = default!; @@ -27,8 +23,6 @@ public sealed class DispelPowerSystem : EntitySystem [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; [Dependency] private readonly SharedAudioSystem _audioSystem = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; - [Dependency] private readonly SharedMindSystem _mindSystem = default!; public override void Initialize() @@ -52,10 +46,13 @@ private void OnInit(EntityUid uid, DispelPowerComponent component, ComponentInit _actions.TryGetActionData( component.DispelActionEntity, out var actionData ); if (actionData is { UseDelay: not null }) _actions.StartUseDelay(component.DispelActionEntity); - if (TryComp(uid, out var psionic) && psionic.PsionicAbility == null) + if (TryComp(uid, out var psionic)) { - psionic.PsionicAbility = component.DispelActionEntity; psionic.ActivePowers.Add(component); + psionic.PsychicFeedback.Add(component.DispelFeedback); + //It's fully intended that Dispel doesn't increase Amplification, and instead heavily spikes Dampening + //Antimage archetype. + psionic.Dampening += 1f; } } @@ -66,12 +63,16 @@ private void OnShutdown(EntityUid uid, DispelPowerComponent component, Component if (TryComp(uid, out var psionic)) { psionic.ActivePowers.Remove(component); + psionic.PsychicFeedback.Remove(component.DispelFeedback); + psionic.Dampening -= 1f; } } private void OnPowerUsed(DispelPowerActionEvent args) { - if (HasComp(args.Target)) + if (HasComp(args.Target) || HasComp(args.Performer)) + return; + if (!TryComp(args.Performer, out var psionic) || !HasComp(args.Target)) return; var ev = new DispelledEvent(); @@ -80,7 +81,9 @@ private void OnPowerUsed(DispelPowerActionEvent args) if (ev.Handled) { args.Handled = true; - _psionics.LogPowerUsed(args.Performer, "dispel"); + _psionics.LogPowerUsed(args.Performer, "dispel", + (int) MathF.Round(-4 * psionic.Dampening + psionic.Amplification), + (int) MathF.Round(-2 * psionic.Dampening + psionic.Amplification)); } } @@ -96,7 +99,7 @@ private void OnDispelled(EntityUid uid, DispellableComponent component, Dispelle private void OnDmgDispelled(EntityUid uid, DamageOnDispelComponent component, DispelledEvent args) { var damage = component.Damage; - var modifier = (1 + component.Variance) - (_random.NextFloat(0, component.Variance * 2)); + var modifier = 1 + component.Variance - _random.NextFloat(0, component.Variance * 2); damage *= modifier; DealDispelDamage(uid, damage); @@ -145,5 +148,3 @@ public void DealDispelDamage(EntityUid uid, DamageSpecifier? damage = null) } public sealed class DispelledEvent : HandledEntityEventArgs {} } - - diff --git a/Content.Server/Psionics/Abilities/MetapsionicPowerSystem.cs b/Content.Server/Psionics/Abilities/MetapsionicPowerSystem.cs new file mode 100644 index 00000000000..78842c6443d --- /dev/null +++ b/Content.Server/Psionics/Abilities/MetapsionicPowerSystem.cs @@ -0,0 +1,183 @@ +using Content.Shared.Actions; +using Content.Shared.Actions.Events; +using Content.Shared.Psionics.Abilities; +using Content.Shared.DoAfter; +using Content.Shared.Examine; +using static Content.Shared.Examine.ExamineSystemShared; +using Content.Shared.Popups; +using Robust.Server.Audio; +using Robust.Shared.Audio; +using Robust.Shared.Timing; +using Robust.Shared.Player; +using Content.Server.DoAfter; +using Content.Shared.Psionics.Events; +using Content.Server.Psionics; + +namespace Content.Server.Psionics.Abilities +{ + public sealed class MetapsionicPowerSystem : EntitySystem + { + [Dependency] private readonly SharedActionsSystem _actions = default!; + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly SharedPopupSystem _popups = default!; + [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; + [Dependency] private readonly DoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly AudioSystem _audioSystem = default!; + + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnShutdown); + SubscribeLocalEvent(OnWidePowerUsed); + SubscribeLocalEvent(OnFocusedPowerUsed); + SubscribeLocalEvent(OnDoAfter); + } + + private void OnInit(EntityUid uid, MetapsionicPowerComponent component, ComponentInit args) + { + if (!TryComp(uid, out ActionsComponent? comp)) + return; + _actions.AddAction(uid, ref component.ActionWideMetapsionicEntity, component.ActionWideMetapsionic, component: comp); + _actions.AddAction(uid, ref component.ActionFocusedMetapsionicEntity, component.ActionFocusedMetapsionic, component: comp); + _actions.TryGetActionData(component.ActionWideMetapsionicEntity, out var actionData); + if (actionData is { UseDelay: not null }) + { + _actions.StartUseDelay(component.ActionWideMetapsionicEntity); + _actions.StartUseDelay(component.ActionFocusedMetapsionicEntity); + } + if (TryComp(uid, out var psionic)) + { + psionic.ActivePowers.Add(component); + psionic.PsychicFeedback.Add(component.MetapsionicFeedback); + psionic.Amplification += 0.1f; + psionic.Dampening += 0.5f; + } + + } + + private void UpdateActions(EntityUid uid, MetapsionicPowerComponent? component = null) + { + if (!Resolve(uid, ref component)) + return; + _actions.StartUseDelay(component.ActionWideMetapsionicEntity); + _actions.StartUseDelay(component.ActionFocusedMetapsionicEntity); + } + + private void OnShutdown(EntityUid uid, MetapsionicPowerComponent component, ComponentShutdown args) + { + _actions.RemoveAction(uid, component.ActionWideMetapsionicEntity); + _actions.RemoveAction(uid, component.ActionFocusedMetapsionicEntity); + + if (TryComp(uid, out var psionic)) + { + psionic.ActivePowers.Remove(component); + psionic.PsychicFeedback.Remove(component.MetapsionicFeedback); + psionic.Amplification -= 0.1f; + psionic.Dampening -= 0.5f; + } + } + + private void OnWidePowerUsed(EntityUid uid, MetapsionicPowerComponent component, WideMetapsionicPowerActionEvent args) + { + if (HasComp(uid)) + return; + + if (!TryComp(uid, out var psionic)) + return; + + foreach (var entity in _lookup.GetEntitiesInRange(uid, component.Range)) + { + if (HasComp(entity) && entity != uid && !HasComp(entity) && + !(HasComp(entity) && Transform(entity).ParentUid == uid)) + { + _popups.PopupEntity(Loc.GetString("metapsionic-pulse-success"), uid, uid, PopupType.LargeCaution); + args.Handled = true; + return; + } + } + _popups.PopupEntity(Loc.GetString("metapsionic-pulse-failure"), uid, uid, PopupType.Large); + _psionics.LogPowerUsed(uid, "metapsionic pulse", + (int) MathF.Round(2 * psionic.Amplification - psionic.Dampening), + (int) MathF.Round(4 * psionic.Amplification - psionic.Dampening)); + UpdateActions(uid, component); + args.Handled = true; + } + + private void OnFocusedPowerUsed(FocusedMetapsionicPowerActionEvent args) + { + if (!TryComp(args.Performer, out var psionic)) + return; + + if (HasComp(args.Target)) + return; + + if (!TryComp(args.Performer, out var component)) + return; + + var ev = new FocusedMetapsionicDoAfterEvent(_gameTiming.CurTime); + + _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.Performer, component.UseDelay - psionic.Amplification, ev, args.Performer, args.Target, args.Performer) + { + BlockDuplicate = true, + BreakOnUserMove = true, + BreakOnTargetMove = true, + BreakOnDamage = true, + }, out var doAfterId); + + component.DoAfter = doAfterId; + + _popups.PopupEntity(Loc.GetString("focused-metapsionic-pulse-begin", ("entity", args.Target)), args.Performer, PopupType.Medium); + + _audioSystem.PlayPvs(component.SoundUse, args.Performer, AudioParams.Default.WithVolume(8f).WithMaxDistance(1.5f).WithRolloffFactor(3.5f)); + _psionics.LogPowerUsed(args.Performer, "focused metapsionic pulse", + (int) MathF.Round(3 * psionic.Amplification - psionic.Dampening), + (int) MathF.Round(6 * psionic.Amplification - psionic.Dampening)); + args.Handled = true; + + UpdateActions(args.Performer, component); + } + + private void OnDoAfter(EntityUid uid, MetapsionicPowerComponent component, FocusedMetapsionicDoAfterEvent args) + { + if (!TryComp(args.Target, out var psychic)) + return; + + component.DoAfter = null; + + if (args.Target == null) return; + + if (TryComp(args.Target, out var swapped)) + { + _popups.PopupEntity(Loc.GetString(swapped.MindSwappedFeedback, ("entity", args.Target)), uid, uid, PopupType.LargeCaution); + return; + } + + if (args.Target == uid) + { + _popups.PopupEntity(Loc.GetString("metapulse-self", ("entity", args.Target)), uid, uid, PopupType.LargeCaution); + return; + } + + if (!HasComp(args.Target)) + { + _popups.PopupEntity(Loc.GetString("no-powers", ("entity", args.Target)), uid, uid, PopupType.LargeCaution); + return; + } + + if (HasComp(args.Target) & !HasComp(args.Target)) + { + _popups.PopupEntity(Loc.GetString("psychic-potential", ("entity", args.Target)), uid, uid, PopupType.LargeCaution); + return; + } + + foreach (var psychicFeedback in psychic.PsychicFeedback) + { + _popups.PopupEntity(Loc.GetString(psychicFeedback, ("entity", args.Target)), uid, uid, PopupType.LargeCaution); + } + + } + } +} diff --git a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/MindSwapPowerSystem.cs b/Content.Server/Psionics/Abilities/MindSwapPowerSystem.cs similarity index 78% rename from Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/MindSwapPowerSystem.cs rename to Content.Server/Psionics/Abilities/MindSwapPowerSystem.cs index b23224cab48..1e50a586b4f 100644 --- a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/MindSwapPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/MindSwapPowerSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.Actions; -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; +using Content.Shared.Psionics; using Content.Shared.Speech; using Content.Shared.Stealth.Components; using Content.Shared.Mobs.Components; @@ -10,19 +11,15 @@ using Content.Server.Popups; using Content.Server.Psionics; using Content.Server.GameTicking; -using Robust.Shared.Prototypes; -using Robust.Shared.Timing; using Content.Shared.Mind; using Content.Shared.Actions.Events; -namespace Content.Server.Abilities.Psionics +namespace Content.Server.Psionics.Abilities { public sealed class MindSwapPowerSystem : EntitySystem { - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly SharedActionsSystem _actions = default!; [Dependency] private readonly MobStateSystem _mobStateSystem = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly MindSystem _mindSystem = default!; @@ -38,20 +35,22 @@ public override void Initialize() SubscribeLocalEvent(OnDispelled); SubscribeLocalEvent(OnMobStateChanged); SubscribeLocalEvent(OnGhostAttempt); - // SubscribeLocalEvent(OnSwapInit); + SubscribeLocalEvent(OnSwapShutdown); + SubscribeLocalEvent(OnInsulated); } private void OnInit(EntityUid uid, MindSwapPowerComponent component, ComponentInit args) { - _actions.AddAction(uid, ref component.MindSwapActionEntity, component.MindSwapActionId ); - _actions.TryGetActionData( component.MindSwapActionEntity, out var actionData ); + _actions.AddAction(uid, ref component.MindSwapActionEntity, component.MindSwapActionId); + _actions.TryGetActionData( component.MindSwapActionEntity, out var actionData); if (actionData is { UseDelay: not null }) _actions.StartUseDelay(component.MindSwapActionEntity); - if (TryComp(uid, out var psionic) && psionic.PsionicAbility == null) + if (TryComp(uid, out var psionic)) { - psionic.PsionicAbility = component.MindSwapActionEntity; psionic.ActivePowers.Add(component); + psionic.PsychicFeedback.Add(component.MindSwapFeedback); + psionic.Amplification += 1f; } } @@ -61,20 +60,26 @@ private void OnShutdown(EntityUid uid, MindSwapPowerComponent component, Compone if (TryComp(uid, out var psionic)) { psionic.ActivePowers.Remove(component); + psionic.PsychicFeedback.Remove(component.MindSwapFeedback); + psionic.Amplification -= 1f; } } private void OnPowerUsed(MindSwapPowerActionEvent args) { + if (!(TryComp(args.Target, out var damageable) && damageable.DamageContainerID == "Biological")) return; if (HasComp(args.Target)) return; + if (!TryComp(args.Performer, out var psionic)) + return; + Swap(args.Performer, args.Target); - _psionics.LogPowerUsed(args.Performer, "mind swap"); + _psionics.LogPowerUsed(args.Performer, "mind swap", (int) MathF.Round(psionic.Amplification / psionic.Dampening * 8), (int) MathF.Round(psionic.Amplification / psionic.Dampening * 12)); args.Handled = true; } @@ -125,8 +130,8 @@ private void OnDispelled(EntityUid uid, MindSwappedComponent component, Dispelle private void OnMobStateChanged(EntityUid uid, MindSwappedComponent component, MobStateChangedEvent args) { - if (args.NewMobState == MobState.Dead) - RemComp(uid); + if (args.NewMobState == MobState.Dead || args.NewMobState == MobState.Critical) + Swap(uid, component.OriginalEntity, true); } private void OnGhostAttempt(GhostAttemptHandleEvent args) @@ -151,8 +156,21 @@ private void OnSwapInit(EntityUid uid, MindSwappedComponent component, Component _actions.TryGetActionData( component.MindSwapReturnActionEntity, out var actionData ); if (actionData is { UseDelay: not null }) _actions.StartUseDelay(component.MindSwapReturnActionEntity); - if (TryComp(uid, out var psionic) && psionic.PsionicAbility == null) - psionic.PsionicAbility = component.MindSwapReturnActionEntity; + if (TryComp(uid, out var psionic)) + { + psionic.ActivePowers.Add(component); + psionic.PsychicFeedback.Add(component.MindSwappedFeedback); + } + } + + private void OnSwapShutdown(EntityUid uid, MindSwappedComponent component, ComponentShutdown args) + { + _actions.RemoveAction(uid, component.MindSwapReturnActionEntity); + if (TryComp(uid, out var psionic)) + { + psionic.ActivePowers.Remove(component); + psionic.PsychicFeedback.Remove(component.MindSwappedFeedback); + } } public void Swap(EntityUid performer, EntityUid target, bool end = false) @@ -165,11 +183,13 @@ public void Swap(EntityUid performer, EntityUid target, bool end = false) MindComponent? targetMind = null; // This is here to prevent missing MindContainerComponent Resolve errors. - if(!_mindSystem.TryGetMind(performer, out var performerMindId, out performerMind)){ + if (!_mindSystem.TryGetMind(performer, out var performerMindId, out performerMind)) + { performerMind = null; }; - if(!_mindSystem.TryGetMind(target, out var targetMindId, out targetMind)){ + if (!_mindSystem.TryGetMind(target, out var targetMindId, out targetMind)) + { targetMind = null; }; //This is a terrible way to 'unattach' minds. I wanted to use UnVisit but in TransferTo's code they say @@ -202,7 +222,7 @@ public void Swap(EntityUid performer, EntityUid target, bool end = false) perfComp.OriginalEntity = target; targetComp.OriginalEntity = performer; } - + //It shouldn't actually be possible anymore to get trapped under most circumstances, but for niche edge cases, I am leaving this here public void GetTrapped(EntityUid uid) { @@ -220,5 +240,9 @@ public void GetTrapped(EntityUid uid) _metaDataSystem.SetEntityDescription(uid, Loc.GetString("telegnostic-trapped-entity-desc")); } } + public void OnInsulated(EntityUid uid, MindSwappedComponent component, PsionicInsulationEvent args) + { + Swap(uid, component.OriginalEntity, true); + } } } diff --git a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/MindSwappedComponent.cs b/Content.Server/Psionics/Abilities/MindSwappedComponent.cs similarity index 79% rename from Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/MindSwappedComponent.cs rename to Content.Server/Psionics/Abilities/MindSwappedComponent.cs index 72cd6a66ef9..82c0313bca6 100644 --- a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/MindSwappedComponent.cs +++ b/Content.Server/Psionics/Abilities/MindSwappedComponent.cs @@ -1,7 +1,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -namespace Content.Server.Abilities.Psionics +namespace Content.Server.Psionics.Abilities { [RegisterComponent] public sealed partial class MindSwappedComponent : Component @@ -14,5 +14,8 @@ public sealed partial class MindSwappedComponent : Component [DataField("mindSwapReturnActionEntity")] public EntityUid? MindSwapReturnActionEntity; + + [DataField("mindSwappedFeedback")] + public string MindSwappedFeedback = "mindswapped-feedback"; } } diff --git a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/NoosphericZapPowerSystem.cs b/Content.Server/Psionics/Abilities/NoosphericZapPowerSystem.cs similarity index 54% rename from Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/NoosphericZapPowerSystem.cs rename to Content.Server/Psionics/Abilities/NoosphericZapPowerSystem.cs index 0fd261ef12f..c935bc0123d 100644 --- a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/NoosphericZapPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/NoosphericZapPowerSystem.cs @@ -1,26 +1,21 @@ using Content.Shared.Actions; -using Content.Shared.Abilities.Psionics; -using Content.Server.Psionics; +using Content.Shared.Psionics.Abilities; using Content.Shared.StatusEffect; +using Content.Server.Electrocution; using Content.Server.Stunnable; using Content.Server.Beam; -using Robust.Shared.Prototypes; -using Robust.Shared.Timing; -using Content.Server.Mind; using Content.Shared.Actions.Events; -namespace Content.Server.Abilities.Psionics +namespace Content.Server.Psionics.Abilities { public sealed class NoosphericZapPowerSystem : EntitySystem { - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly SharedActionsSystem _actions = default!; [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; [Dependency] private readonly StunSystem _stunSystem = default!; [Dependency] private readonly StatusEffectsSystem _statusEffectsSystem = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly BeamSystem _beam = default!; - [Dependency] private readonly MindSystem _mindSystem = default!; + [Dependency] private readonly ElectrocutionSystem _electrocution = default!; public override void Initialize() @@ -37,10 +32,11 @@ private void OnInit(EntityUid uid, NoosphericZapPowerComponent component, Compon _actions.TryGetActionData( component.NoosphericZapActionEntity, out var actionData ); if (actionData is { UseDelay: not null }) _actions.StartUseDelay(component.NoosphericZapActionEntity); - if (TryComp(uid, out var psionic) && psionic.PsionicAbility == null) + if (TryComp(uid, out var psionic)) { - psionic.PsionicAbility = component.NoosphericZapActionEntity; psionic.ActivePowers.Add(component); + psionic.PsychicFeedback.Add(component.NoosphericZapFeedback); + psionic.Amplification += 1f; } } @@ -50,24 +46,34 @@ private void OnShutdown(EntityUid uid, NoosphericZapPowerComponent component, Co if (TryComp(uid, out var psionic)) { psionic.ActivePowers.Remove(component); + psionic.PsychicFeedback.Remove(component.NoosphericZapFeedback); + psionic.Amplification -= 1f; } } private void OnPowerUsed(NoosphericZapPowerActionEvent args) { - if (!HasComp(args.Target)) + if (!TryComp(args.Performer, out var psionic)) return; - if (HasComp(args.Target)) - return; + if (!HasComp(args.Target) && !HasComp(args.Performer)) + { + _beam.TryCreateBeam(args.Performer, args.Target, "LightningNoospheric"); + _stunSystem.TryParalyze(args.Target, TimeSpan.FromSeconds(1 * psionic.Amplification), false); - _beam.TryCreateBeam(args.Performer, args.Target, "LightningNoospheric"); + _electrocution.TryDoElectrocution(args.Target, null, + (int) MathF.Round(5f * psionic.Amplification), + new TimeSpan((long) MathF.Round(1f * psionic.Amplification)), + true, + ignoreInsulation: true); - _stunSystem.TryParalyze(args.Target, TimeSpan.FromSeconds(5), false); - _statusEffectsSystem.TryAddStatusEffect(args.Target, "Stutter", TimeSpan.FromSeconds(10), false, "StutteringAccent"); + _statusEffectsSystem.TryAddStatusEffect(args.Target, "Stutter", TimeSpan.FromSeconds(2 * psionic.Amplification), false, "StutteringAccent"); - _psionics.LogPowerUsed(args.Performer, "noospheric zap"); - args.Handled = true; + _psionics.LogPowerUsed(args.Performer, "noopsheric zap", + (int) MathF.Round(6 * psionic.Amplification - psionic.Dampening), + (int) MathF.Round(8 * psionic.Amplification - psionic.Dampening)); + args.Handled = true; + } } } } diff --git a/Content.Server/Nyanotrasen/Abilities/Psionics/PsionicAbilitiesSystem.cs b/Content.Server/Psionics/Abilities/PsionicAbilitiesSystem.cs similarity index 54% rename from Content.Server/Nyanotrasen/Abilities/Psionics/PsionicAbilitiesSystem.cs rename to Content.Server/Psionics/Abilities/PsionicAbilitiesSystem.cs index ee16aaccfb6..c81d3d7a0b0 100644 --- a/Content.Server/Nyanotrasen/Abilities/Psionics/PsionicAbilitiesSystem.cs +++ b/Content.Server/Psionics/Abilities/PsionicAbilitiesSystem.cs @@ -1,77 +1,41 @@ -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; using Content.Shared.Actions; using Content.Shared.Psionics.Glimmer; using Content.Shared.Random; using Content.Shared.Random.Helpers; -using Content.Server.EUI; -using Content.Server.Psionics; -using Content.Server.Mind; -using Content.Shared.Mind; -using Content.Shared.Mind.Components; using Content.Shared.StatusEffect; using Robust.Shared.Random; using Robust.Shared.Prototypes; -using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Player; +using Content.Shared.Examine; +using Content.Shared.Popups; +using static Content.Shared.Examine.ExamineSystemShared; -namespace Content.Server.Abilities.Psionics +namespace Content.Server.Psionics.Abilities { public sealed class PsionicAbilitiesSystem : EntitySystem { [Dependency] private readonly IComponentFactory _componentFactory = default!; [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; - [Dependency] private readonly IPlayerManager _playerManager = default!; - [Dependency] private readonly EuiManager _euiManager = default!; [Dependency] private readonly StatusEffectsSystem _statusEffectsSystem = default!; [Dependency] private readonly GlimmerSystem _glimmerSystem = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly MindSystem _mindSystem = default!; + [Dependency] private readonly SharedPopupSystem _popups = default!; public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnPlayerAttached); } - private void OnPlayerAttached(EntityUid uid, PsionicAwaitingPlayerComponent component, PlayerAttachedEvent args) - { - if (TryComp(uid, out var bonus) && bonus.Warn == true) - _euiManager.OpenEui(new AcceptPsionicsEui(uid, this), args.Player); - else - AddRandomPsionicPower(uid); - RemCompDeferred(uid); - } - - public void AddPsionics(EntityUid uid, bool warn = true) - { - if (Deleted(uid)) - return; - - if (HasComp(uid)) - return; - - //Don't know if this will work. New mind state vs old. - if (!TryComp(uid, out var mindContainer) || - !_mindSystem.TryGetMind(uid, out _, out var mind )) - //|| - //!_mindSystem.TryGetMind(uid, out var mind, mindContainer)) - { - EnsureComp(uid); - return; - } - - if (!_mindSystem.TryGetSession(mind, out var client)) - return; - - if (warn && TryComp(uid, out var actor)) - _euiManager.OpenEui(new AcceptPsionicsEui(uid, this), client); - else - AddRandomPsionicPower(uid); - } - - public void AddPsionics(EntityUid uid, string powerComp) + /// + /// Adds a psychic power once a character rolls one. This used to be a system you have to select for. However the opt-in is no longer the text window, but is now done at character creation. + /// TODO: This is going to get removed when I reach Part 3 of my reworks, when I touch upon the GlimmerSystem itself and overhaul how players get powers. + /// + /// + /// + /// + public void AddPsionics(EntityUid uid) { if (Deleted(uid)) return; @@ -79,17 +43,11 @@ public void AddPsionics(EntityUid uid, string powerComp) if (HasComp(uid)) return; - AddComp(uid); - - var newComponent = (Component) _componentFactory.GetComponent(powerComp); - newComponent.Owner = uid; - - EntityManager.AddComponent(uid, newComponent); + AddRandomPsionicPower(uid); } - public void AddRandomPsionicPower(EntityUid uid) { - AddComp(uid); + EnsureComp(uid, out var psionic); if (!_prototypeManager.TryIndex("RandomPsionicPowerPool", out var pool)) { @@ -103,11 +61,16 @@ public void AddRandomPsionicPower(EntityUid uid) EntityManager.AddComponent(uid, newComponent); - _glimmerSystem.Glimmer += _random.Next(1, 5); + _glimmerSystem.Glimmer += _random.Next((int) MathF.Round(psionic.Amplification * psionic.Dampening * 1), (int) MathF.Round(psionic.Amplification * psionic.Dampening * 5)); } public void RemovePsionics(EntityUid uid) { + if (RemComp(uid)) + { + _popups.PopupEntity(Loc.GetString("mindbreaking-feedback", ("entity", uid)), uid, PopupType.Medium); + } + if (!TryComp(uid, out var psionic)) return; @@ -130,14 +93,15 @@ public void RemovePsionics(EntityUid uid) if (psionic.PsionicAbility != null){ _actionsSystem.TryGetActionData( psionic.PsionicAbility, out var psiAbility ); if (psiAbility != null){ - var owner = psiAbility.Owner; _actionsSystem.RemoveAction(uid, psiAbility.Owner); } } _statusEffectsSystem.TryAddStatusEffect(uid, "Stutter", TimeSpan.FromMinutes(5), false, "StutteringAccent"); + _glimmerSystem.Glimmer += _random.Next((int) MathF.Round(psionic.Amplification * psionic.Dampening * -10), (int) MathF.Round(psionic.Amplification * psionic.Dampening * -5)); RemComp(uid); + RemComp(uid); } } } diff --git a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/PsionicInvisibilityPowerSystem.cs b/Content.Server/Psionics/Abilities/PsionicInvisibilityPowerSystem.cs similarity index 57% rename from Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/PsionicInvisibilityPowerSystem.cs rename to Content.Server/Psionics/Abilities/PsionicInvisibilityPowerSystem.cs index 5ca1dc7a6dc..0c50efb5cf3 100644 --- a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/PsionicInvisibilityPowerSystem.cs +++ b/Content.Server/Psionics/Abilities/PsionicInvisibilityPowerSystem.cs @@ -1,31 +1,31 @@ +using Content.Server.DoAfter; using Content.Shared.Actions; -using Content.Shared.CombatMode.Pacification; -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; using Content.Shared.Damage; +using Content.Shared.DoAfter; using Content.Shared.Stunnable; using Content.Shared.Stealth; using Content.Shared.Stealth.Components; -using Content.Server.Psionics; -using Robust.Shared.Prototypes; -using Robust.Shared.Player; -using Robust.Shared.Audio; -using Robust.Shared.Timing; -using Content.Server.Mind; +using Content.Shared.Psionics.Events; using Content.Shared.Actions.Events; using Robust.Shared.Audio.Systems; +using Content.Shared.Interaction.Events; +using Content.Shared.Weapons.Ranged.Events; +using Content.Shared.Throwing; +using Robust.Shared.Timing; +using Content.Shared.Psionics; -namespace Content.Server.Abilities.Psionics +namespace Content.Server.Psionics.Abilities { public sealed class PsionicInvisibilityPowerSystem : EntitySystem { - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly SharedActionsSystem _actions = default!; [Dependency] private readonly SharedStunSystem _stunSystem = default!; [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; [Dependency] private readonly SharedStealthSystem _stealth = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; - [Dependency] private readonly MindSystem _mindSystem = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; + [Dependency] private readonly DoAfterSystem _doAfterSystem = default!; public override void Initialize() { @@ -37,43 +37,61 @@ public override void Initialize() SubscribeLocalEvent(OnStart); SubscribeLocalEvent(OnEnd); SubscribeLocalEvent(OnDamageChanged); + SubscribeLocalEvent(OnAttackAttempt); + SubscribeLocalEvent(OnShootAttempt); + SubscribeLocalEvent(OnThrowAttempt); + SubscribeLocalEvent(OnInsulated); } private void OnInit(EntityUid uid, PsionicInvisibilityPowerComponent component, ComponentInit args) { - _actions.AddAction(uid, ref component.PsionicInvisibilityActionEntity, component.PsionicInvisibilityActionId ); - _actions.TryGetActionData( component.PsionicInvisibilityActionEntity, out var actionData ); + _actions.AddAction(uid, ref component.PsionicInvisibilityActionEntity, component.PsionicInvisibilityActionId); + _actions.TryGetActionData( component.PsionicInvisibilityActionEntity, out var actionData); if (actionData is { UseDelay: not null }) _actions.StartUseDelay(component.PsionicInvisibilityActionEntity); - if (TryComp(uid, out var psionic) && psionic.PsionicAbility == null) + if (TryComp(uid, out var psionic)) { - psionic.PsionicAbility = component.PsionicInvisibilityActionEntity; psionic.ActivePowers.Add(component); + psionic.PsychicFeedback.Add(component.InvisibilityFeedback); + psionic.Amplification += 0.5f; } } private void OnShutdown(EntityUid uid, PsionicInvisibilityPowerComponent component, ComponentShutdown args) { + RemComp(uid); + RemComp(uid); _actions.RemoveAction(uid, component.PsionicInvisibilityActionEntity); if (TryComp(uid, out var psionic)) { psionic.ActivePowers.Remove(component); + psionic.PsychicFeedback.Remove(component.InvisibilityFeedback); + psionic.Amplification -= 0.5f; } } private void OnPowerUsed(EntityUid uid, PsionicInvisibilityPowerComponent component, PsionicInvisibilityPowerActionEvent args) { - if (HasComp(uid)) + if (!TryComp(uid, out var psionic)) + return; + + if (HasComp(uid)) return; + var ev = new PsionicInvisibilityTimerEvent(_gameTiming.CurTime); + var doAfterArgs = new DoAfterArgs(EntityManager, uid, component.UseTimer, ev, uid) { Hidden = true }; + _doAfterSystem.TryStartDoAfter(doAfterArgs); + ToggleInvisibility(args.Performer); var action = Spawn(PsionicInvisibilityUsedComponent.PsionicInvisibilityUsedActionPrototype); _actions.AddAction(uid, action, action); - _actions.TryGetActionData( action, out var actionData ); + _actions.TryGetActionData(action, out var actionData); if (actionData is { UseDelay: not null }) _actions.StartUseDelay(action); - _psionics.LogPowerUsed(uid, "psionic invisibility"); + _psionics.LogPowerUsed(uid, "psionic invisibility", + (int) MathF.Round(8 * psionic.Amplification - 2 * psionic.Dampening), + (int) MathF.Round(12 * psionic.Amplification - 2 * psionic.Dampening)); args.Handled = true; } @@ -89,7 +107,6 @@ private void OnPowerOff(RemovePsionicInvisibilityOffPowerActionEvent args) private void OnStart(EntityUid uid, PsionicInvisibilityUsedComponent component, ComponentInit args) { EnsureComp(uid); - EnsureComp(uid); var stealth = EnsureComp(uid); _stealth.SetVisibility(uid, 0.66f, stealth); _audio.PlayPvs("/Audio/Effects/toss.ogg", uid); @@ -102,24 +119,37 @@ private void OnEnd(EntityUid uid, PsionicInvisibilityUsedComponent component, Co return; RemComp(uid); - RemComp(uid); RemComp(uid); _audio.PlayPvs("/Audio/Effects/toss.ogg", uid); - //Pretty sure this DOESN'T work as intended. _actions.RemoveAction(uid, component.PsionicInvisibilityUsedActionEntity); - - _stunSystem.TryParalyze(uid, TimeSpan.FromSeconds(8), false); DirtyEntity(uid); } + private void OnAttackAttempt(EntityUid uid, PsionicInvisibilityUsedComponent component, AttackAttemptEvent args) + { + RemComp(uid); + } + + private void OnShootAttempt(EntityUid uid, PsionicInvisibilityUsedComponent component, ShotAttemptedEvent args) + { + RemComp(uid); + } + + private void OnThrowAttempt(EntityUid uid, PsionicInvisibilityUsedComponent component, ThrowAttemptEvent args) + { + RemComp(uid); + } private void OnDamageChanged(EntityUid uid, PsionicInvisibilityUsedComponent component, DamageChangedEvent args) { + if (!TryComp(uid, out var psionic)) + return; + if (!args.DamageIncreased) return; ToggleInvisibility(uid); + _stunSystem.TryParalyze(uid, TimeSpan.FromSeconds(4f / psionic.Dampening + psionic.Amplification), false); } - public void ToggleInvisibility(EntityUid uid) { if (!HasComp(uid)) @@ -130,5 +160,19 @@ public void ToggleInvisibility(EntityUid uid) RemComp(uid); } } + + public void OnDoAfter(EntityUid uid, PsionicInvisibilityPowerComponent component, PsionicInvisibilityTimerEvent args) + { + RemComp(uid); + } + + private void OnInsulated(EntityUid uid, PsionicInvisibilityUsedComponent component, PsionicInsulationEvent args) + { + if (!TryComp(uid, out var psionic)) + return; + + RemComp(uid); + _stunSystem.TryParalyze(uid, TimeSpan.FromSeconds(4f / psionic.Dampening + psionic.Amplification), false); + } } } diff --git a/Content.Server/Psionics/Abilities/PsionicRegenerationPowerSystem.cs b/Content.Server/Psionics/Abilities/PsionicRegenerationPowerSystem.cs new file mode 100644 index 00000000000..893d1bc4cfa --- /dev/null +++ b/Content.Server/Psionics/Abilities/PsionicRegenerationPowerSystem.cs @@ -0,0 +1,179 @@ +using Robust.Shared.Audio; +using Robust.Shared.Player; +using Content.Server.Body.Components; +using Content.Server.Body.Systems; +using Content.Server.DoAfter; +using Content.Shared.Psionics.Abilities; +using Content.Shared.Actions; +using Content.Shared.Chemistry.Components; +using Content.Shared.DoAfter; +using Content.Shared.FixedPoint; +using Content.Shared.Mobs; +using Content.Shared.Popups; +using Content.Shared.Psionics.Events; +using Content.Shared.Examine; +using static Content.Shared.Examine.ExamineSystemShared; +using Robust.Shared.Timing; +using Content.Shared.Actions.Events; +using Robust.Server.Audio; + +namespace Content.Server.Psionics.Abilities +{ + public sealed class PsionicRegenerationPowerSystem : EntitySystem + { + [Dependency] private readonly SharedActionsSystem _actions = default!; + [Dependency] private readonly BloodstreamSystem _bloodstreamSystem = default!; + [Dependency] private readonly AudioSystem _audioSystem = default!; + [Dependency] private readonly DoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnShutdown); + SubscribeLocalEvent(OnPowerUsed); + SubscribeLocalEvent(OnMobStateChangedEvent); + SubscribeLocalEvent(OnDispelled); + SubscribeLocalEvent(OnDoAfter); + } + + private void OnInit(EntityUid uid, PsionicRegenerationPowerComponent component, ComponentInit args) + { + _actions.AddAction(uid, ref component.PsionicRegenerationActionEntity, component.PsionicRegenerationActionId ); + _actions.TryGetActionData( component.PsionicRegenerationActionEntity, out var actionData ); + if (actionData is { UseDelay: not null }) + _actions.StartUseDelay(component.PsionicRegenerationActionEntity); + if (TryComp(uid, out var psionic)) + { + psionic.ActivePowers.Add(component); + psionic.PsychicFeedback.Add(component.RegenerationFeedback); + psionic.Amplification += 0.5f; + psionic.Dampening += 0.5f; + } + } + + private void OnPowerUsed(EntityUid uid, PsionicRegenerationPowerComponent component, PsionicRegenerationPowerActionEvent args) + { + if (!TryComp(uid, out var psionic)) + return; + + var ev = new PsionicRegenerationDoAfterEvent(_gameTiming.CurTime); + var doAfterArgs = new DoAfterArgs(EntityManager, uid, component.UseDelay, ev, uid); + + //Prevent the power from ignoring its own cooldown + _actions.TryGetActionData(component.PsionicRegenerationActionEntity, out var actionData); + var curTime = _gameTiming.CurTime; + if (actionData != null && actionData.Cooldown.HasValue && actionData.Cooldown.Value.End > curTime) + return; + + _doAfterSystem.TryStartDoAfter(doAfterArgs, out var doAfterId); + + component.DoAfter = doAfterId; + + _popupSystem.PopupEntity(Loc.GetString("psionic-regeneration-begin", ("entity", uid)), uid, PopupType.Medium); + _audioSystem.PlayPvs(component.SoundUse, uid, AudioParams.Default.WithVolume(8f).WithMaxDistance(1.5f).WithRolloffFactor(3.5f)); + + _psionics.LogPowerUsed(uid, "psionic regeneration", + (int) Math.Round(6 * psionic.Amplification - psionic.Dampening), + (int) Math.Round(8 * psionic.Amplification - psionic.Dampening)); + + args.Handled = true; + } + + /// + /// Regenerators automatically activate upon crit, provided the power was off cooldown at that exact point in time. + /// Self-rescusitation is also far more costly, and extremely obvious + /// + /// + /// + /// + private void OnMobStateChangedEvent(EntityUid uid, PsionicRegenerationPowerComponent component, MobStateChangedEvent args) + { + if (!TryComp(uid, out var psionic)) + return; + + if (HasComp(uid)) + return; + + if (args.NewMobState is MobState.Critical) + { + _actions.TryGetActionData(component.PsionicRegenerationActionEntity, out var actionData); + var curTime = _gameTiming.CurTime; + if (actionData != null && actionData.Cooldown.HasValue && actionData.Cooldown.Value.End > curTime) + return; + + if (actionData is { UseDelay: not null }) + { + component.SelfRevive = true; + _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, uid, component.UseDelay, new PsionicRegenerationDoAfterEvent(_gameTiming.CurTime), uid, args.Target, uid) + { + BreakOnUserMove = false, + BreakOnTargetMove = false, + BreakOnWeightlessMove = false, + BreakOnDamage = false, + RequireCanInteract = false, + }); + _popupSystem.PopupEntity(Loc.GetString("psionic-regeneration-self-revive", ("entity", uid)), uid, PopupType.MediumCaution); + _audioSystem.PlayPvs(component.SoundUse, uid, AudioParams.Default.WithVolume(8f).WithMaxDistance(1.5f).WithRolloffFactor(3.5f)); + + _psionics.LogPowerUsed(uid, "psionic regeneration", + (int) Math.Round(10 * psionic.Amplification - 2 * psionic.Dampening), + (int) Math.Round(20 * psionic.Amplification - 2 * psionic.Dampening)); + + _actions.StartUseDelay(component.PsionicRegenerationActionEntity); + } + } + } + + private void OnShutdown(EntityUid uid, PsionicRegenerationPowerComponent component, ComponentShutdown args) + { + _actions.RemoveAction(uid, component.PsionicRegenerationActionEntity); + + if (TryComp(uid, out var psionic)) + { + psionic.ActivePowers.Remove(component); + psionic.PsychicFeedback.Remove(component.RegenerationFeedback); + psionic.Amplification -= 0.5f; + psionic.Dampening -= 0.5f; + } + } + + private void OnDispelled(EntityUid uid, PsionicRegenerationPowerComponent component, DispelledEvent args) + { + if (component.DoAfter == null) + return; + + _doAfterSystem.Cancel(component.DoAfter); + component.DoAfter = null; + + args.Handled = true; + } + + private void OnDoAfter(EntityUid uid, PsionicRegenerationPowerComponent component, PsionicRegenerationDoAfterEvent args) + { + component.DoAfter = null; + + if (!TryComp(uid, out var psionic)) + return; + + if (!TryComp(uid, out var stream)) + return; + + var percentageComplete = Math.Min(1f, (_gameTiming.CurTime - args.StartedAt).TotalSeconds / component.UseDelay); + + var solution = new Solution(); + solution.AddReagent("PsionicRegenerationEssence", FixedPoint2.New(Math.Min(component.EssenceAmount * percentageComplete + 10f * psionic.Dampening, 15f))); + _bloodstreamSystem.TryAddToChemicals(uid, solution, stream); + if (component.SelfRevive == true) + { + var critSolution = new Solution(); + critSolution.AddReagent("Epinephrine", MathF.Min(5 + 5 * psionic.Dampening, 15)); + _bloodstreamSystem.TryAddToChemicals(uid, critSolution, stream); + component.SelfRevive = false; + } + } + } +} diff --git a/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs b/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs new file mode 100644 index 00000000000..77075dab206 --- /dev/null +++ b/Content.Server/Psionics/Abilities/PyrokinesisPowerSystem.cs @@ -0,0 +1,93 @@ +using Content.Shared.Actions; +using Content.Shared.Psionics.Abilities; +using Content.Server.Atmos.Components; +using Content.Server.Weapons.Ranged.Systems; +using Robust.Server.GameObjects; +using Content.Shared.Actions.Events; +using Content.Server.Explosion.Components; +using Content.Shared.Mobs.Components; +using Robust.Shared.Map; + +namespace Content.Server.Psionics.Abilities +{ + public sealed class PyrokinesisPowerSystem : EntitySystem + { + [Dependency] private readonly TransformSystem _xform = default!; + [Dependency] private readonly SharedActionsSystem _actions = default!; + [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; + [Dependency] private readonly GunSystem _gunSystem = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; + [Dependency] private readonly PhysicsSystem _physics = default!; + [Dependency] private readonly IMapManager _mapManager = default!; + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnShutdown); + SubscribeLocalEvent(OnPowerUsed); + } + + private void OnInit(EntityUid uid, PyrokinesisPowerComponent component, ComponentInit args) + { + _actions.AddAction(uid, ref component.PyrokinesisActionEntity, component.PyrokinesisActionId); + _actions.TryGetActionData( component.PyrokinesisActionEntity, out var actionData); + if (actionData is { UseDelay: not null }) + _actions.StartUseDelay(component.PyrokinesisActionEntity); + if (TryComp(uid, out var psionic)) + { + psionic.ActivePowers.Add(component); + psionic.PsychicFeedback.Add(component.PyrokinesisFeedback); + psionic.Amplification += 1f; + } + } + + private void OnShutdown(EntityUid uid, PyrokinesisPowerComponent component, ComponentShutdown args) + { + _actions.RemoveAction(uid, component.PyrokinesisActionEntity); + if (TryComp(uid, out var psionic)) + { + psionic.ActivePowers.Remove(component); + psionic.PsychicFeedback.Remove(component.PyrokinesisFeedback); + psionic.Amplification -= 1f; + } + } + + private void OnPowerUsed(PyrokinesisPowerActionEvent args) + { + if (!TryComp(args.Performer, out var psionic)) + return; + + if (!HasComp(args.Performer)) + { + var xformQuery = GetEntityQuery(); + var xform = xformQuery.GetComponent(args.Performer); + + var mapPos = xform.Coordinates.ToMap(EntityManager, _xform); + var spawnCoords = _mapManager.TryFindGridAt(mapPos, out var gridUid, out _) + ? xform.Coordinates.WithEntityId(gridUid, EntityManager) + : new(_mapManager.GetMapEntityId(mapPos.MapId), mapPos.Position); + + var ent = Spawn("ProjectileAnomalyFireball", spawnCoords); + + if (TryComp(ent, out var fireball)) + { + fireball.MaxIntensity = (int) MathF.Round(20 * psionic.Amplification - 10 * psionic.Dampening); + + if (psionic.Amplification > 5 && EnsureComp(ent, out var ignite)) + { + ignite.FireStacks = 0.2f * psionic.Amplification - 0.1f * psionic.Dampening; + } + } + + var direction = args.Target.Position; + + _gunSystem.ShootProjectile(ent, direction, new System.Numerics.Vector2(0, 0), args.Performer, args.Performer, 20f); + + _psionics.LogPowerUsed(args.Performer, "pyrokinesis", + (int) MathF.Round(6f * psionic.Amplification - psionic.Dampening), + (int) MathF.Round(8f * psionic.Amplification - psionic.Dampening)); + args.Handled = true; + } + } + } +} diff --git a/Content.Server/Psionics/Abilities/RegenerativeStasisPowerSystem.cs b/Content.Server/Psionics/Abilities/RegenerativeStasisPowerSystem.cs new file mode 100644 index 00000000000..e184b19396b --- /dev/null +++ b/Content.Server/Psionics/Abilities/RegenerativeStasisPowerSystem.cs @@ -0,0 +1,76 @@ +using Content.Server.Body.Systems; +using Content.Server.Body.Components; +using Content.Shared.Actions; +using Content.Shared.Chemistry.Components; +using Content.Shared.Bed.Sleep; +using Content.Shared.Psionics.Abilities; +using Robust.Shared.Prototypes; +using Robust.Shared.Timing; +using Content.Shared.Mind; +using Content.Shared.Actions.Events; +using Content.Shared.FixedPoint; + +namespace Content.Server.Psionics.Abilities +{ + public sealed class MassSleepPowerSystem : EntitySystem + { + [Dependency] private readonly SharedActionsSystem _actions = default!; + [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; + [Dependency] private readonly BloodstreamSystem _bloodstreamSystem = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnShutdown); + SubscribeLocalEvent(OnPowerUsed); + } + + private void OnInit(EntityUid uid, RegenerativeStasisPowerComponent component, ComponentInit args) + { + _actions.AddAction(uid, ref component.RegenerativeStasisActionEntity, component.RegenerativeStasisActionId); + _actions.TryGetActionData(component.RegenerativeStasisActionEntity, out var actionData); + if (actionData is { UseDelay: not null }) + _actions.StartUseDelay(component.RegenerativeStasisActionEntity); + if (TryComp(uid, out var psionic)) + { + psionic.ActivePowers.Add(component); + psionic.PsychicFeedback.Add(component.RegenerativeStasisFeedback); + psionic.Amplification += 0.5f; + psionic.Dampening += 0.5f; + } + } + + private void OnShutdown(EntityUid uid, RegenerativeStasisPowerComponent component, ComponentShutdown args) + { + if (TryComp(uid, out var psionic)) + { + psionic.ActivePowers.Remove(component); + psionic.PsychicFeedback.Remove(component.RegenerativeStasisFeedback); + psionic.Amplification -= 0.5f; + psionic.Dampening -= 0.5f; + } + _actions.RemoveAction(uid, component.RegenerativeStasisActionEntity); + } + + private void OnPowerUsed(EntityUid uid, RegenerativeStasisPowerComponent component, RegenerativeStasisPowerActionEvent args) + { + if (TryComp(uid, out var psionic) + && !HasComp(uid) + && !HasComp(args.Target) + && TryComp(args.Target, out var stream)) + { + var solution = new Solution(); + solution.AddReagent("PsionicRegenerationEssence", FixedPoint2.New(MathF.Min(2.5f * psionic.Amplification + psionic.Dampening, 15f))); + solution.AddReagent("Epinephrine", FixedPoint2.New(MathF.Min(2.5f * psionic.Dampening + psionic.Amplification, 15f))); + _bloodstreamSystem.TryAddToChemicals(args.Target, solution, stream); + EnsureComp(args.Target); + + _psionics.LogPowerUsed(uid, "regenerative stasis", + (int) Math.Round(4 * psionic.Amplification - psionic.Dampening), + (int) Math.Round(6 * psionic.Amplification - psionic.Dampening)); + args.Handled = true; + } + } + } +} diff --git a/Content.Server/Psionics/Abilities/TelegnosisPowerSystem.cs b/Content.Server/Psionics/Abilities/TelegnosisPowerSystem.cs new file mode 100644 index 00000000000..f03b001fc70 --- /dev/null +++ b/Content.Server/Psionics/Abilities/TelegnosisPowerSystem.cs @@ -0,0 +1,106 @@ +using Content.Shared.Actions; +using Content.Shared.Psionics.Abilities; +using Content.Shared.Mind.Components; +using Content.Shared.Actions.Events; +using Content.Shared.Mobs; +using Content.Shared.Storage.Components; + +namespace Content.Server.Psionics.Abilities +{ + public sealed class TelegnosisPowerSystem : EntitySystem + { + [Dependency] private readonly SharedActionsSystem _actions = default!; + [Dependency] private readonly MindSwapPowerSystem _mindSwap = default!; + [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnShutdown); + SubscribeLocalEvent(OnPowerUsed); + SubscribeLocalEvent(OnMindRemoved); + SubscribeLocalEvent(OnDispelled); + SubscribeLocalEvent(OnMobstateChanged); + SubscribeLocalEvent(OnStorageInsertAttempt); + } + + private void OnInit(EntityUid uid, TelegnosisPowerComponent component, ComponentInit args) + { + _actions.AddAction(uid, ref component.TelegnosisActionEntity, component.TelegnosisActionId ); + _actions.TryGetActionData( component.TelegnosisActionEntity, out var actionData ); + if (actionData is { UseDelay: not null }) + _actions.StartUseDelay(component.TelegnosisActionEntity); + if (TryComp(uid, out var psionic)) + { + psionic.ActivePowers.Add(component); + psionic.PsychicFeedback.Add(component.TelegnosisFeedback); + psionic.Amplification += 0.3f; + psionic.Dampening += 0.3f; + } + } + + private void OnShutdown(EntityUid uid, TelegnosisPowerComponent component, ComponentShutdown args) + { + _actions.RemoveAction(uid, component.TelegnosisActionEntity); + if (TryComp(uid, out var psionic)) + { + psionic.ActivePowers.Remove(component); + psionic.PsychicFeedback.Remove(component.TelegnosisFeedback); + psionic.Amplification -= 0.3f; + psionic.Dampening -= 0.3f; + } + } + + private void OnPowerUsed(EntityUid uid, TelegnosisPowerComponent component, TelegnosisPowerActionEvent args) + { + if (!TryComp(uid, out var psionic)) + return; + + if (HasComp(uid)) + return; + + var projection = Spawn(component.Prototype, Transform(uid).Coordinates); + Transform(projection).AttachToGridOrMap(); + component.OriginalEntity = uid; + component.IsProjecting = true; + component.ProjectionUid = projection; + _mindSwap.Swap(uid, projection); + + if (EnsureComp(projection, out var projectionComponent)) + projectionComponent.OriginalEntity = uid; + + _psionics.LogPowerUsed(uid, "telegnosis", + (int) Math.Round(8f * psionic.Amplification - psionic.Dampening), + (int) Math.Round(12f * psionic.Amplification - psionic.Dampening)); + + args.Handled = true; + } + private void OnMindRemoved(EntityUid uid, TelegnosticProjectionComponent component, MindRemovedMessage args) + { + if (TryComp(component.OriginalEntity, out var originalEntity)) + originalEntity.IsProjecting = false; + + QueueDel(uid); + } + + private void OnDispelled(EntityUid uid, TelegnosisPowerComponent component, DispelledEvent args) + { + if (component.IsProjecting) + _mindSwap.Swap(uid, component.ProjectionUid); + } + + private void OnMobstateChanged(EntityUid uid, TelegnosisPowerComponent component, MobStateChangedEvent args) + { + if (component.IsProjecting && args.NewMobState is MobState.Critical + || component.IsProjecting && args.NewMobState is MobState.Dead) + _mindSwap.Swap(uid, component.ProjectionUid); + } + + private void OnStorageInsertAttempt(EntityUid uid, TelegnosisPowerComponent component, InsertIntoEntityStorageAttemptEvent args) + { + if (component.IsProjecting) + _mindSwap.Swap(uid, component.ProjectionUid); + } + } +} diff --git a/Content.Server/Nyanotrasen/Psionics/AcceptPsionicsEui.cs b/Content.Server/Psionics/AcceptPsionicsEui.cs similarity index 95% rename from Content.Server/Nyanotrasen/Psionics/AcceptPsionicsEui.cs rename to Content.Server/Psionics/AcceptPsionicsEui.cs index 80fd8946f28..7c652664c64 100644 --- a/Content.Server/Nyanotrasen/Psionics/AcceptPsionicsEui.cs +++ b/Content.Server/Psionics/AcceptPsionicsEui.cs @@ -1,7 +1,7 @@ using Content.Shared.Psionics; using Content.Shared.Eui; using Content.Server.EUI; -using Content.Server.Abilities.Psionics; +using Content.Server.Psionics.Abilities; namespace Content.Server.Psionics { diff --git a/Content.Server/Nyanotrasen/Psionics/AntiPsychicWeaponComponent.cs b/Content.Server/Psionics/AntiPsychicWeaponComponent.cs similarity index 100% rename from Content.Server/Nyanotrasen/Psionics/AntiPsychicWeaponComponent.cs rename to Content.Server/Psionics/AntiPsychicWeaponComponent.cs diff --git a/Content.Server/Nyanotrasen/Audio/GlimmerSoundComponent.cs b/Content.Server/Psionics/Audio/GlimmerSoundComponent.cs similarity index 80% rename from Content.Server/Nyanotrasen/Audio/GlimmerSoundComponent.cs rename to Content.Server/Psionics/Audio/GlimmerSoundComponent.cs index 850be3e831c..9a6c62381be 100644 --- a/Content.Server/Nyanotrasen/Audio/GlimmerSoundComponent.cs +++ b/Content.Server/Psionics/Audio/GlimmerSoundComponent.cs @@ -2,12 +2,8 @@ using Content.Shared.Audio; using Content.Shared.Psionics.Glimmer; using Robust.Shared.Audio; -using Robust.Shared.ComponentTrees; -using Robust.Shared.GameStates; -using Robust.Shared.Physics; -using Robust.Shared.Serialization; -namespace Content.Server.Audio +namespace Content.Server.Psionics.Audio { [RegisterComponent] [Access(typeof(SharedAmbientSoundSystem), typeof(GlimmerReactiveSystem))] diff --git a/Content.Server/Nyanotrasen/Psionics/Dreams/DreamSystem.cs b/Content.Server/Psionics/Dreams/DreamSystem.cs similarity index 93% rename from Content.Server/Nyanotrasen/Psionics/Dreams/DreamSystem.cs rename to Content.Server/Psionics/Dreams/DreamSystem.cs index d6067717c94..1731c7a9bf5 100644 --- a/Content.Server/Nyanotrasen/Psionics/Dreams/DreamSystem.cs +++ b/Content.Server/Psionics/Dreams/DreamSystem.cs @@ -1,17 +1,14 @@ using Content.Shared.Dataset; using Content.Shared.Bed.Sleep; -using Content.Server.Chat.Systems; using Content.Server.Chat.Managers; using Robust.Shared.Random; using Robust.Shared.Prototypes; -using Robust.Server.GameObjects; using Robust.Shared.Player; namespace Content.Server.Psionics.Dreams { public sealed class DreamsSystem : EntitySystem { - [Dependency] private readonly ChatSystem _chat = default!; [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IChatManager _chatManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; diff --git a/Content.Server/Nyanotrasen/Psionics/Glimmer/GlimmerCommands.cs b/Content.Server/Psionics/Glimmer/GlimmerCommands.cs similarity index 100% rename from Content.Server/Nyanotrasen/Psionics/Glimmer/GlimmerCommands.cs rename to Content.Server/Psionics/Glimmer/GlimmerCommands.cs diff --git a/Content.Server/Nyanotrasen/Psionics/Glimmer/GlimmerReactiveSystem.cs b/Content.Server/Psionics/Glimmer/GlimmerReactiveSystem.cs similarity index 99% rename from Content.Server/Nyanotrasen/Psionics/Glimmer/GlimmerReactiveSystem.cs rename to Content.Server/Psionics/Glimmer/GlimmerReactiveSystem.cs index da3b07d6dab..c0802c8b670 100644 --- a/Content.Server/Nyanotrasen/Psionics/Glimmer/GlimmerReactiveSystem.cs +++ b/Content.Server/Psionics/Glimmer/GlimmerReactiveSystem.cs @@ -1,14 +1,12 @@ -using Content.Server.Audio; +using Content.Server.Psionics.Audio; using Content.Server.Power.Components; using Content.Server.Electrocution; using Content.Server.Lightning; using Content.Server.Explosion.EntitySystems; -using Content.Server.Construction; using Content.Server.Ghost; using Content.Server.Revenant.EntitySystems; using Content.Shared.Audio; using Content.Shared.Construction.EntitySystems; -using Content.Shared.Coordinates.Helpers; using Content.Shared.GameTicking; using Content.Shared.Psionics.Glimmer; using Content.Shared.Verbs; @@ -16,7 +14,6 @@ using Content.Shared.Damage; using Content.Shared.Destructible; using Content.Shared.Construction.Components; -using Content.Shared.Mind; using Content.Shared.Mind.Components; using Content.Shared.Weapons.Melee.Components; using Robust.Shared.Audio; diff --git a/Content.Server/Nyanotrasen/Psionics/Glimmer/PassiveGlimmerReductionSystem.cs b/Content.Server/Psionics/Glimmer/PassiveGlimmerReductionSystem.cs similarity index 94% rename from Content.Server/Nyanotrasen/Psionics/Glimmer/PassiveGlimmerReductionSystem.cs rename to Content.Server/Psionics/Glimmer/PassiveGlimmerReductionSystem.cs index f0da85ce453..57c74398b08 100644 --- a/Content.Server/Nyanotrasen/Psionics/Glimmer/PassiveGlimmerReductionSystem.cs +++ b/Content.Server/Psionics/Glimmer/PassiveGlimmerReductionSystem.cs @@ -4,7 +4,6 @@ using Content.Shared.CCVar; using Content.Shared.Psionics.Glimmer; using Content.Shared.GameTicking; -using Content.Server.CartridgeLoader.Cartridges; namespace Content.Server.Psionics.Glimmer { @@ -17,7 +16,6 @@ public sealed class PassiveGlimmerReductionSystem : EntitySystem [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IConfigurationManager _cfg = default!; - [Dependency] private readonly GlimmerMonitorCartridgeSystem _cartridgeSys = default!; /// List of glimmer values spaced by minute. public List GlimmerValues = new(); diff --git a/Content.Server/Nyanotrasen/Psionics/Glimmer/Structures/GlimmerSourceComponent.cs b/Content.Server/Psionics/Glimmer/Structures/GlimmerSourceComponent.cs similarity index 100% rename from Content.Server/Nyanotrasen/Psionics/Glimmer/Structures/GlimmerSourceComponent.cs rename to Content.Server/Psionics/Glimmer/Structures/GlimmerSourceComponent.cs diff --git a/Content.Server/Nyanotrasen/Psionics/Glimmer/Structures/GlimmerStructuresSystem.cs b/Content.Server/Psionics/Glimmer/Structures/GlimmerStructuresSystem.cs similarity index 100% rename from Content.Server/Nyanotrasen/Psionics/Glimmer/Structures/GlimmerStructuresSystem.cs rename to Content.Server/Psionics/Glimmer/Structures/GlimmerStructuresSystem.cs diff --git a/Content.Server/Nyanotrasen/Psionics/Invisibility/PsionicInvisibilitySystem.cs b/Content.Server/Psionics/Invisibility/PsionicInvisibilitySystem.cs similarity index 88% rename from Content.Server/Nyanotrasen/Psionics/Invisibility/PsionicInvisibilitySystem.cs rename to Content.Server/Psionics/Invisibility/PsionicInvisibilitySystem.cs index 31e6b89f13d..9583f45fdc9 100644 --- a/Content.Server/Nyanotrasen/Psionics/Invisibility/PsionicInvisibilitySystem.cs +++ b/Content.Server/Psionics/Invisibility/PsionicInvisibilitySystem.cs @@ -1,5 +1,6 @@ -using Content.Shared.Abilities.Psionics; -using Content.Server.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; +using Content.Shared.Psionics; +using Content.Server.Psionics.Abilities; using Content.Shared.Eye; using Content.Server.NPC.Systems; using Robust.Shared.Containers; @@ -20,7 +21,6 @@ public override void Initialize() SubscribeLocalEvent(OnInit); SubscribeLocalEvent(OnInsulInit); SubscribeLocalEvent(OnInsulShutdown); - SubscribeLocalEvent(OnEyeInit); /// Layer SubscribeLocalEvent(OnInvisInit); @@ -36,10 +36,16 @@ private void OnInit(EntityUid uid, PotentialPsionicComponent component, Componen SetCanSeePsionicInvisiblity(uid, false); } + /// + /// Being able to see invisible by default is no longer tracked by "Not having Potential Psionic". + /// Anything intended to be immune to invisibility(and mind magic in general) should instead have PsionicInsulation as a built-in component + /// + /// + /// + /// private void OnInsulInit(EntityUid uid, PsionicInsulationComponent component, ComponentInit args) { - if (!HasComp(uid)) - return; + RaiseLocalEvent(uid, new PsionicInsulationEvent()); if (HasComp(uid)) _invisSystem.ToggleInvisibility(uid); @@ -61,9 +67,6 @@ private void OnInsulInit(EntityUid uid, PsionicInsulationComponent component, Co private void OnInsulShutdown(EntityUid uid, PsionicInsulationComponent component, ComponentShutdown args) { - if (!HasComp(uid)) - return; - SetCanSeePsionicInvisiblity(uid, false); if (!HasComp(uid)) @@ -99,10 +102,6 @@ private void OnInvisShutdown(EntityUid uid, PsionicallyInvisibleComponent compon } } - private void OnEyeInit(EntityUid uid, EyeComponent component, ComponentInit args) - { - //SetCanSeePsionicInvisiblity(uid, true); //JJ Comment - Not allowed to modifies .yml on spawn any longer. See UninitializedSaveTest. - } private void OnEntInserted(EntityUid uid, PsionicallyInvisibleComponent component, EntInsertedIntoContainerMessage args) { DirtyEntity(args.Entity); @@ -125,7 +124,7 @@ public void SetCanSeePsionicInvisiblity(EntityUid uid, bool set) { if (EntityManager.TryGetComponent(uid, out EyeComponent? eye)) { - _eye.SetVisibilityMask(uid, eye.VisibilityMask & ~ (int) VisibilityFlags.PsionicInvisibility, eye); + _eye.SetVisibilityMask(uid, eye.VisibilityMask & ~(int) VisibilityFlags.PsionicInvisibility, eye); } } } diff --git a/Content.Server/Nyanotrasen/Psionics/Invisibility/PsionicInvisibleContactsComponent.cs b/Content.Server/Psionics/Invisibility/PsionicInvisibleContactsComponent.cs similarity index 95% rename from Content.Server/Nyanotrasen/Psionics/Invisibility/PsionicInvisibleContactsComponent.cs rename to Content.Server/Psionics/Invisibility/PsionicInvisibleContactsComponent.cs index 859ceb7b83a..268deddf6d9 100644 --- a/Content.Server/Nyanotrasen/Psionics/Invisibility/PsionicInvisibleContactsComponent.cs +++ b/Content.Server/Psionics/Invisibility/PsionicInvisibleContactsComponent.cs @@ -1,5 +1,4 @@ using Content.Shared.Whitelist; -using Robust.Shared.Timing; namespace Content.Server.Psionics { diff --git a/Content.Server/Nyanotrasen/Psionics/Invisibility/PsionicInvisibleContactsSystem.cs b/Content.Server/Psionics/Invisibility/PsionicInvisibleContactsSystem.cs similarity index 95% rename from Content.Server/Nyanotrasen/Psionics/Invisibility/PsionicInvisibleContactsSystem.cs rename to Content.Server/Psionics/Invisibility/PsionicInvisibleContactsSystem.cs index cec755e3260..403e0592617 100644 --- a/Content.Server/Nyanotrasen/Psionics/Invisibility/PsionicInvisibleContactsSystem.cs +++ b/Content.Server/Psionics/Invisibility/PsionicInvisibleContactsSystem.cs @@ -2,7 +2,6 @@ using Content.Shared.Stealth.Components; using Robust.Shared.Physics.Events; using Robust.Shared.Physics.Systems; -using Robust.Shared.Timing; namespace Content.Server.Psionics { @@ -12,7 +11,6 @@ namespace Content.Server.Psionics public sealed class PsionicInvisibleContactsSystem : EntitySystem { [Dependency] private readonly SharedStealthSystem _stealth = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; public override void Initialize() { diff --git a/Content.Server/Nyanotrasen/Psionics/Invisibility/PsionicallyInvisibleComponent.cs b/Content.Server/Psionics/Invisibility/PsionicallyInvisibleComponent.cs similarity index 100% rename from Content.Server/Nyanotrasen/Psionics/Invisibility/PsionicallyInvisibleComponent.cs rename to Content.Server/Psionics/Invisibility/PsionicallyInvisibleComponent.cs diff --git a/Content.Server/Psionics/PotentialPsionicComponent.cs b/Content.Server/Psionics/PotentialPsionicComponent.cs new file mode 100644 index 00000000000..e874296a4c3 --- /dev/null +++ b/Content.Server/Psionics/PotentialPsionicComponent.cs @@ -0,0 +1,21 @@ +namespace Content.Server.Psionics +{ + [RegisterComponent] + public sealed partial class PotentialPsionicComponent : Component + { + /// + /// The base chance of an entity rolling psychic powers, which is increased by other modifiers such as glimmer. + /// + /// + /// I have increased this to 10% up from its original value of 2%, because I estimate that most people won't take the Latent Psychic trait + /// Simply because they might not even know it exists + /// + [DataField("chance")] + public float Chance = 0.10f; + + /// + /// YORO (you only reroll once) + /// + public bool Rerolled = false; + } +} diff --git a/Content.Server/Nyanotrasen/Psionics/PsionicAwaitingPlayerComponent.cs b/Content.Server/Psionics/PsionicAwaitingPlayerComponent.cs similarity index 100% rename from Content.Server/Nyanotrasen/Psionics/PsionicAwaitingPlayerComponent.cs rename to Content.Server/Psionics/PsionicAwaitingPlayerComponent.cs diff --git a/Content.Server/Nyanotrasen/Psionics/PsionicBonusChanceComponent.cs b/Content.Server/Psionics/PsionicBonusChanceComponent.cs similarity index 100% rename from Content.Server/Nyanotrasen/Psionics/PsionicBonusChanceComponent.cs rename to Content.Server/Psionics/PsionicBonusChanceComponent.cs diff --git a/Content.Server/Nyanotrasen/Psionics/PsionicsCommands.cs b/Content.Server/Psionics/PsionicsCommands.cs similarity index 84% rename from Content.Server/Nyanotrasen/Psionics/PsionicsCommands.cs rename to Content.Server/Psionics/PsionicsCommands.cs index 959251d1fb7..3f9ee794b38 100644 --- a/Content.Server/Nyanotrasen/Psionics/PsionicsCommands.cs +++ b/Content.Server/Psionics/PsionicsCommands.cs @@ -1,9 +1,8 @@ using Content.Server.Administration; using Content.Shared.Administration; -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; using Content.Shared.Mobs.Components; using Robust.Shared.Console; -using Robust.Server.GameObjects; using Content.Shared.Actions; using Robust.Shared.Player; @@ -19,7 +18,8 @@ public async void Execute(IConsoleShell shell, string argStr, string[] args) { SharedActionsSystem actions = default!; var entMan = IoCManager.Resolve(); - foreach (var (actor, mob, psionic, meta) in entMan.EntityQuery()){ + foreach (var (actor, psionic, meta) in entMan.EntityQuery()) + { // filter out xenos, etc, with innate telepathy actions.TryGetActionData( psionic.PsionicAbility, out var actionData ); if (actionData == null || actionData.ToString() == null) diff --git a/Content.Server/Nyanotrasen/Psionics/PsionicsSystem.cs b/Content.Server/Psionics/PsionicsSystem.cs similarity index 91% rename from Content.Server/Nyanotrasen/Psionics/PsionicsSystem.cs rename to Content.Server/Psionics/PsionicsSystem.cs index 5a96af2e96b..bf829477609 100644 --- a/Content.Server/Nyanotrasen/Psionics/PsionicsSystem.cs +++ b/Content.Server/Psionics/PsionicsSystem.cs @@ -1,19 +1,14 @@ -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; using Content.Shared.StatusEffect; -using Content.Shared.Mobs; using Content.Shared.Psionics.Glimmer; using Content.Shared.Weapons.Melee.Events; using Content.Shared.Damage.Events; -using Content.Shared.IdentityManagement; using Content.Shared.CCVar; -using Content.Server.Abilities.Psionics; -using Content.Server.Chat.Systems; +using Content.Server.Psionics.Abilities; using Content.Server.Electrocution; using Content.Server.NPC.Components; using Content.Server.NPC.Systems; -using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; -using Robust.Shared.Player; using Robust.Shared.Configuration; using Robust.Shared.Random; @@ -27,7 +22,6 @@ public sealed class PsionicsSystem : EntitySystem [Dependency] private readonly ElectrocutionSystem _electrocutionSystem = default!; [Dependency] private readonly MindSwapPowerSystem _mindSwapPowerSystem = default!; [Dependency] private readonly GlimmerSystem _glimmerSystem = default!; - [Dependency] private readonly ChatSystem _chat = default!; [Dependency] private readonly NpcFactionSystem _npcFactonSystem = default!; [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; @@ -54,6 +48,7 @@ public override void Initialize() SubscribeLocalEvent(OnStamHit); SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnStartup); SubscribeLocalEvent(OnRemove); } @@ -87,7 +82,11 @@ private void OnMeleeHit(EntityUid uid, AntiPsionicWeaponComponent component, Mel _electrocutionSystem.TryDoElectrocution(args.User, null, 20, TimeSpan.FromSeconds(5), false); } } - + private void OnStartup(EntityUid uid, PsionicComponent component, MapInitEvent args) + { + component.Amplification = _random.NextFloat(0.3f, 1.1f); + component.Dampening = _random.NextFloat(0.3f, 1.1f); + } private void OnInit(EntityUid uid, PsionicComponent component, ComponentInit args) { if (!component.Removable) @@ -104,7 +103,7 @@ private void OnInit(EntityUid uid, PsionicComponent component, ComponentInit arg private void OnRemove(EntityUid uid, PsionicComponent component, ComponentRemove args) { - if (!TryComp(uid, out var factions)) + if (!HasComp(uid)) return; _npcFactonSystem.RemoveFaction(uid, "PsionicInterloper"); @@ -144,14 +143,14 @@ public void RollPsionics(EntityUid uid, PotentialPsionicComponent component, boo } if (applyGlimmer) - chance += ((float) _glimmerSystem.Glimmer / 1000); + chance += (float) _glimmerSystem.Glimmer / 1000; chance *= multiplier; chance = Math.Clamp(chance, 0, 1); if (_random.Prob(chance)) - _psionicAbilitiesSystem.AddPsionics(uid, warn); + _psionicAbilitiesSystem.AddPsionics(uid); } public void RerollPsionics(EntityUid uid, PotentialPsionicComponent? psionic = null, float bonusMuliplier = 1f) diff --git a/Content.Server/Nyanotrasen/Chat/TSayCommand.cs b/Content.Server/Psionics/Telepathy/TSayCommand.cs similarity index 95% rename from Content.Server/Nyanotrasen/Chat/TSayCommand.cs rename to Content.Server/Psionics/Telepathy/TSayCommand.cs index 9ba27b65d71..8fbaa5e17b2 100644 --- a/Content.Server/Nyanotrasen/Chat/TSayCommand.cs +++ b/Content.Server/Psionics/Telepathy/TSayCommand.cs @@ -1,11 +1,10 @@ using Content.Server.Chat.Systems; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; using Robust.Shared.Player; -namespace Content.Server.Chat.Commands +namespace Content.Server.Psionics.Telepathy { [AnyCommand] internal sealed class TSayCommand : IConsoleCommand diff --git a/Content.Server/Nyanotrasen/Chat/TelepathicRepeaterComponent.cs b/Content.Server/Psionics/Telepathy/TelepathicRepeaterComponent.cs similarity index 82% rename from Content.Server/Nyanotrasen/Chat/TelepathicRepeaterComponent.cs rename to Content.Server/Psionics/Telepathy/TelepathicRepeaterComponent.cs index fc199f4332a..6e194f76c8f 100644 --- a/Content.Server/Nyanotrasen/Chat/TelepathicRepeaterComponent.cs +++ b/Content.Server/Psionics/Telepathy/TelepathicRepeaterComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Nyanotrasen.Chat +namespace Content.Server.Psionics.Telepathy { /// /// Repeats whatever is happening in telepathic chat. diff --git a/Content.Server/Nyanotrasen/Chat/NyanoChatSystem.cs b/Content.Server/Psionics/Telepathy/TelepathyChatSystem.cs similarity index 85% rename from Content.Server/Nyanotrasen/Chat/NyanoChatSystem.cs rename to Content.Server/Psionics/Telepathy/TelepathyChatSystem.cs index 58ed1782741..ad49075e65a 100644 --- a/Content.Server/Nyanotrasen/Chat/NyanoChatSystem.cs +++ b/Content.Server/Psionics/Telepathy/TelepathyChatSystem.cs @@ -2,7 +2,7 @@ using Content.Server.Administration.Managers; using Content.Server.Chat.Managers; using Content.Server.Chat.Systems; -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; using Content.Shared.Bed.Sleep; using Content.Shared.Chat; using Content.Shared.Database; @@ -16,10 +16,10 @@ using System.Linq; using System.Text; -namespace Content.Server.Nyanotrasen.Chat +namespace Content.Server.Psionics.Telepathy { /// - /// Extensions for nyano's chat stuff + /// Extensions for Telepathic Chat /// public sealed class NyanoChatSystem : EntitySystem @@ -47,7 +47,9 @@ private IEnumerable GetAdminClients() private List GetDreamers(IEnumerable removeList) { var filtered = Filter.Empty() - .AddWhereAttachedEntity(entity => HasComp(entity) || HasComp(entity) && !HasComp(entity) && !HasComp(entity)) + .AddWhereAttachedEntity(entity => HasComp(entity) + || HasComp(entity) && !HasComp(entity) && !HasComp(entity) + || HasComp(entity) && !HasComp(entity) && !HasComp(entity)) .Recipients .Select(p => p.ConnectedClient); @@ -61,7 +63,7 @@ private List GetDreamers(IEnumerable removeList) private bool IsEligibleForTelepathy(EntityUid entity) { - return HasComp(entity) + return TryComp(entity, out var psionic) && psionic.Telepath && !HasComp(entity) && !HasComp(entity) && (!TryComp(entity, out var mobstate) || mobstate.CurrentState == MobState.Alive); @@ -92,9 +94,9 @@ public void SendTelepathicChat(EntityUid source, string message, bool hideChat) if (_random.Prob(0.1f)) _glimmerSystem.Glimmer++; - if (_random.Prob(Math.Min(0.33f + ((float) _glimmerSystem.Glimmer / 1500), 1))) + if (_random.Prob(Math.Min(0.33f + (float) _glimmerSystem.Glimmer / 1500, 1))) { - float obfuscation = (0.25f + (float) _glimmerSystem.Glimmer / 2000); + float obfuscation = 0.25f + (float) _glimmerSystem.Glimmer / 2000; var obfuscated = ObfuscateMessageReadability(message, obfuscation); _chatManager.ChatMessageToMany(ChatChannel.Telepathic, obfuscated, messageWrap, source, hideChat, false, GetDreamers(clients), Color.PaleVioletRed); } @@ -111,7 +113,7 @@ private string ObfuscateMessageReadability(string message, float chance) for (var i = 0; i < message.Length; i++) { - if (char.IsWhiteSpace((modifiedMessage[i]))) + if (char.IsWhiteSpace(modifiedMessage[i])) { continue; } diff --git a/Content.Server/Radio/EntitySystems/JammerSystem.cs b/Content.Server/Radio/EntitySystems/JammerSystem.cs index fdf02f94df5..53e0409af06 100644 --- a/Content.Server/Radio/EntitySystems/JammerSystem.cs +++ b/Content.Server/Radio/EntitySystems/JammerSystem.cs @@ -1,8 +1,13 @@ +using Content.Server.DeviceNetwork.Components; +using Content.Server.DeviceNetwork.Systems; +using Content.Server.Medical.CrewMonitoring; using Content.Server.Medical.SuitSensors; using Content.Server.Popups; using Content.Server.Power.EntitySystems; using Content.Server.PowerCell; using Content.Server.Radio.Components; +using Content.Server.Station.Systems; +using Content.Shared.DeviceNetwork.Components; using Content.Shared.Examine; using Content.Shared.Interaction; using Content.Shared.PowerCell.Components; @@ -15,6 +20,8 @@ public sealed class JammerSystem : EntitySystem [Dependency] private readonly BatterySystem _battery = default!; [Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly StationSystem _stationSystem = default!; + [Dependency] private readonly SingletonDeviceNetServerSystem _singletonServerSystem = default!; public override void Initialize() { @@ -36,6 +43,7 @@ public override void Update(float frameTime) !_battery.TryUseCharge(batteryUid.Value, jam.Wattage * frameTime, battery)) { RemComp(uid); + RemComp(uid); } } } @@ -48,10 +56,19 @@ private void OnActivate(EntityUid uid, RadioJammerComponent comp, ActivateInWorl if (activated) { EnsureComp(uid); + var stationId = _stationSystem.GetOwningStation(uid); + if (stationId != null && _singletonServerSystem.TryGetActiveServerAddress(stationId.Value, out var netId)) + { + EnsureComp(uid, out var jammingComp); + jammingComp.Range = comp.Range; + jammingComp.JammableNetworks.Add(netId); + Dirty(uid, jammingComp); + } } else { RemComp(uid); + RemComp(uid); } var state = Loc.GetString(activated ? "radio-jammer-component-on-state" : "radio-jammer-component-off-state"); var message = Loc.GetString("radio-jammer-component-on-use", ("state", state)); diff --git a/Content.Server/Remotes/DoorRemoteSystem.cs b/Content.Server/Remotes/DoorRemoteSystem.cs index 6403c41addf..d335911901a 100644 --- a/Content.Server/Remotes/DoorRemoteSystem.cs +++ b/Content.Server/Remotes/DoorRemoteSystem.cs @@ -22,6 +22,7 @@ public sealed class DoorRemoteSystem : EntitySystem [Dependency] private readonly SharedPopupSystem _popupSystem = default!; [Dependency] private readonly DoorSystem _doorSystem = default!; [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; // I'm so sorry [Dependency] private readonly SharedAirlockSystem _sharedAirlockSystem = default!; public override void Initialize() @@ -67,7 +68,7 @@ private void OnBeforeInteract(EntityUid uid, DoorRemoteComponent component, Befo || !TryComp(args.Target, out var doorComp) // If it isn't a door we don't use it // Only able to control doors if they are within your vision and within your max range. // Not affected by mobs or machines anymore. - || !ExamineSystemShared.InRangeUnOccluded(args.User, args.Target.Value, SharedInteractionSystem.MaxRaycastRange, null)) + || !_examine.InRangeUnOccluded(args.User, args.Target.Value, SharedInteractionSystem.MaxRaycastRange, null)) { return; } diff --git a/Content.Server/Respawn/SpecialRespawnSystem.cs b/Content.Server/Respawn/SpecialRespawnSystem.cs index 51c092be18b..2822c94093f 100644 --- a/Content.Server/Respawn/SpecialRespawnSystem.cs +++ b/Content.Server/Respawn/SpecialRespawnSystem.cs @@ -20,6 +20,7 @@ public sealed class SpecialRespawnSystem : SharedSpecialRespawnSystem [Dependency] private readonly ITileDefinitionManager _tileDefinitionManager = default!; [Dependency] private readonly AtmosphereSystem _atmosphere = default!; [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly TurfSystem _turf = default!; [Dependency] private readonly IChatManager _chat = default!; @@ -129,11 +130,11 @@ private void OnTermination(EntityUid uid, SpecialRespawnComponent component, ref private void Respawn(EntityUid oldEntity, string prototype, EntityCoordinates coords) { var entity = Spawn(prototype, coords); - _adminLog.Add(LogType.Respawn, LogImpact.High, $"{ToPrettyString(oldEntity)} was deleted and was respawned at {coords.ToMap(EntityManager)} as {ToPrettyString(entity)}"); + _adminLog.Add(LogType.Respawn, LogImpact.High, $"{ToPrettyString(oldEntity)} was deleted and was respawned at {coords.ToMap(EntityManager, _transform)} as {ToPrettyString(entity)}"); _chat.SendAdminAlert($"{MetaData(oldEntity).EntityName} was deleted and was respawned as {ToPrettyString(entity)}"); } - /// + /// /// Try to find a random safe tile on the supplied grid /// /// The grid that you're looking for a safe tile on diff --git a/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs b/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs index 7784db015d3..ba07375699b 100644 --- a/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs +++ b/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs @@ -13,7 +13,7 @@ using Robust.Shared.Map.Components; using Robust.Shared.Physics.Events; using Robust.Shared.Timing; -using Content.Shared.Abilities.Psionics; //Nyano - Summary: for the telegnostic projection. +using Content.Shared.Psionics.Abilities; //EE - Summary: for the telegnostic projection. namespace Content.Server.Singularity.EntitySystems; @@ -39,7 +39,7 @@ public override void Initialize() SubscribeLocalEvent(PreventConsume); SubscribeLocalEvent(PreventConsume); - SubscribeLocalEvent(PreventConsume); ///Nyano - Summary: the telegnositic projection has the same trait as ghosts. + SubscribeLocalEvent(PreventConsume); ///EE - Summary: the telegnositic projection has the same trait as ghosts. SubscribeLocalEvent(PreventConsume); SubscribeLocalEvent(OnHorizonMapInit); SubscribeLocalEvent(OnStartCollide); diff --git a/Content.Server/Singularity/EntitySystems/GravityWellSystem.cs b/Content.Server/Singularity/EntitySystems/GravityWellSystem.cs index ce4334391db..f1d0af6f905 100644 --- a/Content.Server/Singularity/EntitySystems/GravityWellSystem.cs +++ b/Content.Server/Singularity/EntitySystems/GravityWellSystem.cs @@ -18,13 +18,13 @@ namespace Content.Server.Singularity.EntitySystems; /// public sealed class GravityWellSystem : SharedGravityWellSystem { -#region Dependencies + #region Dependencies [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IViewVariablesManager _vvManager = default!; [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly SharedPhysicsSystem _physics = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; -#endregion Dependencies + #endregion Dependencies /// /// The minimum range at which gravpulses will act. @@ -155,7 +155,7 @@ public void GravPulse(EntityUid uid, float maxRange, float minRange, float baseR /// The minimum distance at which entities can be affected by the gravity pulse. /// The base velocity added to any entities within affected by the gravity pulse scaled by the displacement of those entities from the epicenter. public void GravPulse(EntityCoordinates entityPos, float maxRange, float minRange, in Matrix3 baseMatrixDeltaV) - => GravPulse(entityPos.ToMap(EntityManager), maxRange, minRange, in baseMatrixDeltaV); + => GravPulse(entityPos.ToMap(EntityManager, _transform), maxRange, minRange, in baseMatrixDeltaV); /// /// Greates a gravitational pulse, shoving around all entities within some distance of an epicenter. @@ -166,7 +166,7 @@ public void GravPulse(EntityCoordinates entityPos, float maxRange, float minRang /// The base radial velocity that will be added to entities within range towards the center of the gravitational pulse. /// The base tangential velocity that will be added to entities within countrclockwise around the center of the gravitational pulse. public void GravPulse(EntityCoordinates entityPos, float maxRange, float minRange, float baseRadialDeltaV = 0.0f, float baseTangentialDeltaV = 0.0f) - => GravPulse(entityPos.ToMap(EntityManager), maxRange, minRange, baseRadialDeltaV, baseTangentialDeltaV); + => GravPulse(entityPos.ToMap(EntityManager, _transform), maxRange, minRange, baseRadialDeltaV, baseTangentialDeltaV); /// /// Causes a gravitational pulse, shoving around all entities within some distance of an epicenter. diff --git a/Content.Server/Singularity/EntitySystems/SingularityAttractorSystem.cs b/Content.Server/Singularity/EntitySystems/SingularityAttractorSystem.cs index 3c44a7fc7af..bc0de7c8c64 100644 --- a/Content.Server/Singularity/EntitySystems/SingularityAttractorSystem.cs +++ b/Content.Server/Singularity/EntitySystems/SingularityAttractorSystem.cs @@ -2,12 +2,7 @@ using Content.Server.Power.EntitySystems; using Content.Server.Singularity.Components; using Content.Shared.Singularity.Components; -using Content.Shared.Singularity.EntitySystems; using Robust.Shared.Map; -using Robust.Shared.Map.Components; -using Robust.Shared.Physics; -using Robust.Shared.Physics.Components; -using Robust.Shared.Physics.Systems; using Robust.Shared.Timing; using System.Numerics; @@ -18,8 +13,8 @@ namespace Content.Server.Singularity.EntitySystems; /// public sealed class SingularityAttractorSystem : EntitySystem { - [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; /// /// The minimum range at which the attraction will act. @@ -69,7 +64,7 @@ private void Update(EntityUid uid, SingularityAttractorComponent? attractor = nu attractor.LastPulseTime = _timing.CurTime; - var mapPos = xform.Coordinates.ToMap(EntityManager); + var mapPos = xform.Coordinates.ToMap(EntityManager, _transform); if (mapPos == MapCoordinates.Nullspace) return; @@ -77,7 +72,7 @@ private void Update(EntityUid uid, SingularityAttractorComponent? attractor = nu var query = EntityQuery(); foreach (var (singulo, walk, singuloXform) in query) { - var singuloMapPos = singuloXform.Coordinates.ToMap(EntityManager); + var singuloMapPos = singuloXform.Coordinates.ToMap(EntityManager, _transform); if (singuloMapPos.MapId != mapPos.MapId) continue; diff --git a/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs b/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs index 9995ed40c12..356768769bb 100644 --- a/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs +++ b/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs @@ -26,6 +26,7 @@ public sealed class BluespaceLockerSystem : EntitySystem [Dependency] private readonly WeldableSystem _weldableSystem = default!; [Dependency] private readonly LockSystem _lockSystem = default!; [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; [Dependency] private readonly ExplosionSystem _explosionSystem = default!; public override void Initialize() @@ -386,7 +387,7 @@ private void DestroyAfterLimit(EntityUid uid, BluespaceLockerComponent component switch (component.BehaviorProperties.DestroyType) { case BluespaceLockerDestroyType.Explode: - _explosionSystem.QueueExplosion(uid.ToCoordinates().ToMap(EntityManager), + _explosionSystem.QueueExplosion(uid.ToCoordinates().ToMap(EntityManager, _transformSystem), ExplosionSystem.DefaultExplosionPrototypeId, 4, 1, 2, maxTileBreak: 0); goto case BluespaceLockerDestroyType.Delete; case BluespaceLockerDestroyType.Delete: diff --git a/Content.Server/Store/Systems/StoreSystem.Ui.cs b/Content.Server/Store/Systems/StoreSystem.Ui.cs index 281d8f57267..49db980451e 100644 --- a/Content.Server/Store/Systems/StoreSystem.Ui.cs +++ b/Content.Server/Store/Systems/StoreSystem.Ui.cs @@ -5,6 +5,7 @@ using Content.Server.Stack; using Content.Server.Store.Components; using Content.Shared.Actions; +using Content.Shared.Administration.Logs; using Content.Shared.Database; using Content.Shared.FixedPoint; using Content.Shared.Hands.EntitySystems; @@ -248,10 +249,12 @@ private void OnBuyRequest(EntityUid uid, StoreComponent component, StoreBuyListi HandleRefundComp(uid, component, upgradeActionId.Value); } - //broadcast event if (listing.ProductEvent != null) { - RaiseLocalEvent(listing.ProductEvent); + if (!listing.RaiseProductEventOnUser) + RaiseLocalEvent(listing.ProductEvent); + else + RaiseLocalEvent(buyer, listing.ProductEvent); } //log dat shit. @@ -321,6 +324,8 @@ private void OnRequestRefund(EntityUid uid, StoreComponent component, StoreReque if (!component.RefundAllowed || component.BoughtEntities.Count == 0) return; + _admin.Add(LogType.StoreRefund, LogImpact.Low, $"{ToPrettyString(buyer):player} has refunded their purchases from {ToPrettyString(uid):store}"); + for (var i = component.BoughtEntities.Count - 1; i >= 0; i--) { var purchase = component.BoughtEntities[i]; diff --git a/Content.Server/Tabletop/TabletopSystem.Session.cs b/Content.Server/Tabletop/TabletopSystem.Session.cs index f16f3f01e98..c2bb8426fc2 100644 --- a/Content.Server/Tabletop/TabletopSystem.Session.cs +++ b/Content.Server/Tabletop/TabletopSystem.Session.cs @@ -31,7 +31,7 @@ public TabletopSession EnsureSession(TabletopGameComponent tabletop) // Since this is the first time opening this session, set up the game tabletop.Setup.SetupTabletop(session, EntityManager); - Logger.Info($"Created tabletop session number {tabletop} at position {session.Position}."); + Log.Info($"Created tabletop session number {tabletop} at position {session.Position}."); return session; } diff --git a/Content.Server/Temperature/Systems/TemperatureSystem.cs b/Content.Server/Temperature/Systems/TemperatureSystem.cs index aef4b89d509..aca902b9d38 100644 --- a/Content.Server/Temperature/Systems/TemperatureSystem.cs +++ b/Content.Server/Temperature/Systems/TemperatureSystem.cs @@ -163,8 +163,9 @@ public float GetHeatCapacity(EntityUid uid, TemperatureComponent? comp = null, P { return Atmospherics.MinimumHeatCapacity; } - - return comp.SpecificHeat * physics.FixturesMass; + if (physics.Mass < 1) + return comp.SpecificHeat; + else return comp.SpecificHeat * physics.FixturesMass; } private void OnInit(EntityUid uid, InternalTemperatureComponent comp, MapInitEvent args) diff --git a/Content.Server/Wires/WireLayout.cs b/Content.Server/Wires/WireLayout.cs index ecafba013e0..621992c915a 100644 --- a/Content.Server/Wires/WireLayout.cs +++ b/Content.Server/Wires/WireLayout.cs @@ -28,11 +28,13 @@ public sealed partial class WireLayoutPrototype : IPrototype, IInheritingPrototy /// initialization) /// [DataField("dummyWires")] + [NeverPushInheritance] public int DummyWires { get; private set; } = default!; /// /// All the valid IWireActions currently in this layout. /// [DataField("wires")] + [NeverPushInheritance] public List? Wires { get; private set; } } diff --git a/Content.Server/Worldgen/Systems/Carvers/NoiseRangeCarverSystem.cs b/Content.Server/Worldgen/Systems/Carvers/NoiseRangeCarverSystem.cs index aed32bc89c3..f2e051669a2 100644 --- a/Content.Server/Worldgen/Systems/Carvers/NoiseRangeCarverSystem.cs +++ b/Content.Server/Worldgen/Systems/Carvers/NoiseRangeCarverSystem.cs @@ -9,6 +9,7 @@ namespace Content.Server.Worldgen.Systems.Carvers; public sealed class NoiseRangeCarverSystem : EntitySystem { [Dependency] private readonly NoiseIndexSystem _index = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; /// public override void Initialize() @@ -19,7 +20,7 @@ public override void Initialize() private void OnPrePlaceDebris(EntityUid uid, NoiseRangeCarverComponent component, ref PrePlaceDebrisFeatureEvent args) { - var coords = WorldGen.WorldToChunkCoords(args.Coords.ToMapPos(EntityManager)); + var coords = WorldGen.WorldToChunkCoords(args.Coords.ToMapPos(EntityManager, _transform)); var val = _index.Evaluate(uid, component.NoiseChannel, coords); foreach (var (low, high) in component.Ranges) diff --git a/Content.Server/Zombies/ZombieSystem.Transform.cs b/Content.Server/Zombies/ZombieSystem.Transform.cs index daadd4b518b..53128aade31 100644 --- a/Content.Server/Zombies/ZombieSystem.Transform.cs +++ b/Content.Server/Zombies/ZombieSystem.Transform.cs @@ -16,7 +16,7 @@ using Content.Server.Roles; using Content.Server.Speech.Components; using Content.Server.Temperature.Components; -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; using Content.Shared.CombatMode; using Content.Shared.CombatMode.Pacification; using Content.Shared.Damage; @@ -59,9 +59,7 @@ public sealed partial class ZombieSystem [Dependency] private readonly IChatManager _chatMan = default!; [Dependency] private readonly MindSystem _mind = default!; [Dependency] private readonly SharedRoleSystem _roles = default!; - [Dependency] private readonly MobThresholdSystem _mobThreshold = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; - [Dependency] private readonly ActionsSystem _actions = default!; // DeltaV - No psionic zombies /// /// Handles an entity turning into a zombie when they die or go into crit diff --git a/Content.Shared.Database/LogType.cs b/Content.Shared.Database/LogType.cs index 70a6119130e..ba94b0f3738 100644 --- a/Content.Shared.Database/LogType.cs +++ b/Content.Shared.Database/LogType.cs @@ -98,4 +98,5 @@ public enum LogType ChatRateLimited = 87, AtmosTemperatureChanged = 88, DeviceNetwork = 89, + StoreRefund = 90 } diff --git a/Content.Shared/Anomaly/SharedAnomalySystem.cs b/Content.Shared/Anomaly/SharedAnomalySystem.cs index a3bb1e14679..c335cd7b858 100644 --- a/Content.Shared/Anomaly/SharedAnomalySystem.cs +++ b/Content.Shared/Anomaly/SharedAnomalySystem.cs @@ -129,7 +129,7 @@ public void StartSupercriticalEvent(EntityUid uid) if (HasComp(uid)) return; - AdminLog.Add(LogType.Anomaly, LogImpact.High, $"Anomaly {ToPrettyString(uid)} began to go supercritical."); + AdminLog.Add(LogType.Anomaly, LogImpact.Extreme, $"Anomaly {ToPrettyString(uid)} began to go supercritical."); if (_net.IsServer) Log.Info($"Anomaly is going supercritical. Entity: {ToPrettyString(uid)}"); diff --git a/Content.Shared/Atmos/EntitySystems/SharedAtmosDebugOverlaySystem.cs b/Content.Shared/Atmos/EntitySystems/SharedAtmosDebugOverlaySystem.cs index 136c1955025..979bbf77ba6 100644 --- a/Content.Shared/Atmos/EntitySystems/SharedAtmosDebugOverlaySystem.cs +++ b/Content.Shared/Atmos/EntitySystems/SharedAtmosDebugOverlaySystem.cs @@ -20,7 +20,8 @@ public readonly record struct AtmosDebugOverlayData( int? InExcitedGroup, bool IsSpace, bool MapAtmosphere, - bool NoGrid); + bool NoGrid, + bool Immutable); /// /// Invalid tiles for the gas overlay. diff --git a/Content.Shared/Audio/SharedAmbientSoundSystem.cs b/Content.Shared/Audio/SharedAmbientSoundSystem.cs index 6318ba25573..5f17261825c 100644 --- a/Content.Shared/Audio/SharedAmbientSoundSystem.cs +++ b/Content.Shared/Audio/SharedAmbientSoundSystem.cs @@ -5,16 +5,19 @@ namespace Content.Shared.Audio; public abstract class SharedAmbientSoundSystem : EntitySystem { + private EntityQuery _query; + public override void Initialize() { base.Initialize(); SubscribeLocalEvent(GetCompState); SubscribeLocalEvent(HandleCompState); + _query = GetEntityQuery(); } public virtual void SetAmbience(EntityUid uid, bool value, AmbientSoundComponent? ambience = null) { - if (!Resolve(uid, ref ambience, false) || ambience.Enabled == value) + if (!_query.Resolve(uid, ref ambience, false) || ambience.Enabled == value) return; ambience.Enabled = value; @@ -24,7 +27,7 @@ public virtual void SetAmbience(EntityUid uid, bool value, AmbientSoundComponent public virtual void SetRange(EntityUid uid, float value, AmbientSoundComponent? ambience = null) { - if (!Resolve(uid, ref ambience, false) || MathHelper.CloseToPercent(ambience.Range, value)) + if (!_query.Resolve(uid, ref ambience, false) || MathHelper.CloseToPercent(ambience.Range, value)) return; ambience.Range = value; @@ -39,7 +42,7 @@ protected virtual void QueueUpdate(EntityUid uid, AmbientSoundComponent ambience public virtual void SetVolume(EntityUid uid, float value, AmbientSoundComponent? ambience = null) { - if (!Resolve(uid, ref ambience, false) || MathHelper.CloseToPercent(ambience.Volume, value)) + if (!_query.Resolve(uid, ref ambience, false) || MathHelper.CloseToPercent(ambience.Volume, value)) return; ambience.Volume = value; @@ -48,7 +51,7 @@ public virtual void SetVolume(EntityUid uid, float value, AmbientSoundComponent? public virtual void SetSound(EntityUid uid, SoundSpecifier sound, AmbientSoundComponent? ambience = null) { - if (!Resolve(uid, ref ambience, false) || ambience.Sound == sound) + if (!_query.Resolve(uid, ref ambience, false) || ambience.Sound == sound) return; ambience.Sound = sound; diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index ff4e89c4b5a..5a8926114ff 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1089,7 +1089,7 @@ public static readonly CVarDef /// Useful to prevent clipping through objects. /// public static readonly CVarDef SpaceWindMaxVelocity = - CVarDef.Create("atmos.space_wind_max_velocity", 30f, CVar.SERVERONLY); + CVarDef.Create("atmos.space_wind_max_velocity", 25f, CVar.SERVERONLY); /// /// The maximum force that may be applied to an object by pushing (i.e. not throwing) atmospheric pressure differences. @@ -1098,6 +1098,25 @@ public static readonly CVarDef public static readonly CVarDef SpaceWindMaxPushForce = CVarDef.Create("atmos.space_wind_max_push_force", 20f, CVar.SERVERONLY); + /// + /// If an object's mass is below this number, then this number is used in place of mass to determine whether air pressure can throw an object. + /// This has nothing to do with throwing force, only acting as a way of reducing the odds of tiny 5 gram objects from being yeeted by people's breath + /// + /// + /// If you are reading this because you want to change it, consider looking into why almost every item in the game weighs only 5 grams + /// And maybe do your part to fix that? :) + /// + public static readonly CVarDef SpaceWindMinimumCalculatedMass = + CVarDef.Create("atmos.space_wind_minimum_calculated_mass", 6f, CVar.SERVERONLY); + + /// + /// Calculated as 1/Mass, where Mass is the physics.Mass of the desired threshold. + /// If an object's inverse mass is lower than this, it is capped at this. Basically, an upper limit to how heavy an object can be + /// before it stops resisting space wind more. + /// + public static readonly CVarDef SpaceWindMaximumCalculatedInverseMass = + CVarDef.Create("atmos.space_wind_maximum_calculated_inverse_mass", 0.04f, CVar.SERVERONLY); + /// /// Whether monstermos tile equalization is enabled. /// @@ -1150,6 +1169,13 @@ public static readonly CVarDef public static readonly CVarDef AtmosSpacingMaxWind = CVarDef.Create("atmos.mmos_max_wind", 500f, CVar.SERVERONLY); + /// + /// Increases default airflow calculations to O(n^2) complexity, for use with heavy space wind optimizations. Potato servers BEWARE + /// This solves the problem of objects being trapped in an infinite loop of slamming into a wall repeatedly. + /// + public static readonly CVarDef MonstermosUseExpensiveAirflow = + CVarDef.Create("atmos.mmos_expensive_airflow", true, CVar.SERVERONLY); + /// /// Whether atmos superconduction is enabled. /// diff --git a/Content.Shared/Chemistry/Components/InjectorComponent.cs b/Content.Shared/Chemistry/Components/InjectorComponent.cs index 188028c8f8f..437c5e327d2 100644 --- a/Content.Shared/Chemistry/Components/InjectorComponent.cs +++ b/Content.Shared/Chemistry/Components/InjectorComponent.cs @@ -30,7 +30,7 @@ public sealed partial class InjectorComponent : Component /// Whether or not the injector is able to draw from containers or if it's a single use /// device that can only inject. /// - [DataField("injectOnly")] + [DataField] public bool InjectOnly; /// @@ -39,28 +39,26 @@ public sealed partial class InjectorComponent : Component /// /// for example: droppers would ignore mobs /// - [DataField("ignoreMobs")] + [DataField] public bool IgnoreMobs; /// /// The minimum amount of solution that can be transferred at once from this solution. /// [DataField("minTransferAmount")] - [ViewVariables(VVAccess.ReadWrite)] public FixedPoint2 MinimumTransferAmount = FixedPoint2.New(5); /// /// The maximum amount of solution that can be transferred at once from this solution. /// [DataField("maxTransferAmount")] - public FixedPoint2 MaximumTransferAmount = FixedPoint2.New(15); + public FixedPoint2 MaximumTransferAmount = FixedPoint2.New(50); /// /// Amount to inject or draw on each usage. If the injector is inject only, it will /// attempt to inject it's entire contents upon use. /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("transferAmount")] + [DataField] [AutoNetworkedField] public FixedPoint2 TransferAmount = FixedPoint2.New(5); @@ -71,8 +69,7 @@ public sealed partial class InjectorComponent : Component /// The base delay has a minimum of 1 second, but this will still be modified if the target is incapacitated or /// in combat mode. /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("delay")] + [DataField] public TimeSpan Delay = TimeSpan.FromSeconds(5); /// @@ -80,7 +77,6 @@ public sealed partial class InjectorComponent : Component /// right SolutionCaps to support injection/drawing. For InjectOnly injectors this should /// only ever be set to Inject /// - [ViewVariables(VVAccess.ReadWrite)] [AutoNetworkedField] [DataField] public InjectorToggleMode ToggleState = InjectorToggleMode.Draw; diff --git a/Content.Shared/Construction/Conditions/WallmountCondition.cs b/Content.Shared/Construction/Conditions/WallmountCondition.cs index bf3016d4974..fe4336e6fc7 100644 --- a/Content.Shared/Construction/Conditions/WallmountCondition.cs +++ b/Content.Shared/Construction/Conditions/WallmountCondition.cs @@ -19,8 +19,9 @@ public bool Condition(EntityUid user, EntityCoordinates location, Direction dire var entManager = IoCManager.Resolve(); // get blueprint and user position + var transformSystem = entManager.System(); var userWorldPosition = entManager.GetComponent(user).WorldPosition; - var objWorldPosition = location.ToMap(entManager).Position; + var objWorldPosition = location.ToMap(entManager, transformSystem).Position; // find direction from user to blueprint var userToObject = (objWorldPosition - userWorldPosition); diff --git a/Content.Shared/DeviceNetwork/Components/DeviceNetworkJammerComponent.cs b/Content.Shared/DeviceNetwork/Components/DeviceNetworkJammerComponent.cs new file mode 100644 index 00000000000..75de0cb8a25 --- /dev/null +++ b/Content.Shared/DeviceNetwork/Components/DeviceNetworkJammerComponent.cs @@ -0,0 +1,24 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.DeviceNetwork.Components; + +/// +/// Allow entities to jam DeviceNetwork packets. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class DeviceNetworkJammerComponent : Component +{ + /// + /// Range where packets will be jammed. This is checked both against the sender and receiver. + /// + [DataField, AutoNetworkedField] + public float Range = 5.0f; + + /// + /// Device networks that can be jammed. For a list of default NetworkIds see DeviceNetIdDefaults on Content.Server. + /// Network ids are not guaranteed to be limited to DeviceNetIdDefaults. + /// + [DataField, AutoNetworkedField] + public HashSet JammableNetworks = []; + +} diff --git a/Content.Shared/Examine/ExamineSystemShared.cs b/Content.Shared/Examine/ExamineSystemShared.cs index 5a3fb872293..f792862be14 100644 --- a/Content.Shared/Examine/ExamineSystemShared.cs +++ b/Content.Shared/Examine/ExamineSystemShared.cs @@ -144,7 +144,7 @@ public bool IsOccluded(EntityUid uid) return TryComp(uid, out var eye) && eye.DrawFov; } - public static bool InRangeUnOccluded(MapCoordinates origin, MapCoordinates other, float range, Ignored? predicate, bool ignoreInsideBlocker = true, IEntityManager? entMan = null) + public bool InRangeUnOccluded(MapCoordinates origin, MapCoordinates other, float range, Ignored? predicate, bool ignoreInsideBlocker = true, IEntityManager? entMan = null) { // No, rider. This is better. // ReSharper disable once ConvertToLocalFunction @@ -154,7 +154,7 @@ public static bool InRangeUnOccluded(MapCoordinates origin, MapCoordinates other return InRangeUnOccluded(origin, other, range, predicate, wrapped, ignoreInsideBlocker, entMan); } - public static bool InRangeUnOccluded(MapCoordinates origin, MapCoordinates other, float range, + public bool InRangeUnOccluded(MapCoordinates origin, MapCoordinates other, float range, TState state, Func predicate, bool ignoreInsideBlocker = true, IEntityManager? entMan = null) { if (other.MapId != origin.MapId || @@ -171,7 +171,7 @@ public static bool InRangeUnOccluded(MapCoordinates origin, MapCoordinat if (length > MaxRaycastRange) { - Logger.Warning("InRangeUnOccluded check performed over extreme range. Limiting CollisionRay size."); + Log.Warning("InRangeUnOccluded check performed over extreme range. Limiting CollisionRay size."); length = MaxRaycastRange; } @@ -207,7 +207,7 @@ public static bool InRangeUnOccluded(MapCoordinates origin, MapCoordinat return true; } - public static bool InRangeUnOccluded(EntityUid origin, EntityUid other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) + public bool InRangeUnOccluded(EntityUid origin, EntityUid other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) { var entMan = IoCManager.Resolve(); var originPos = entMan.GetComponent(origin).MapPosition; @@ -216,7 +216,7 @@ public static bool InRangeUnOccluded(EntityUid origin, EntityUid other, float ra return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker); } - public static bool InRangeUnOccluded(EntityUid origin, EntityCoordinates other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) + public bool InRangeUnOccluded(EntityUid origin, EntityCoordinates other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) { var entMan = IoCManager.Resolve(); var originPos = entMan.GetComponent(origin).MapPosition; @@ -225,7 +225,7 @@ public static bool InRangeUnOccluded(EntityUid origin, EntityCoordinates other, return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker); } - public static bool InRangeUnOccluded(EntityUid origin, MapCoordinates other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) + public bool InRangeUnOccluded(EntityUid origin, MapCoordinates other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) { var entMan = IoCManager.Resolve(); var originPos = entMan.GetComponent(origin).MapPosition; diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs index bbae03e45b3..20e08b2767d 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs @@ -114,7 +114,7 @@ public bool TryPickup( && (itemPos.Position - xform.MapPosition.Position).Length() <= MaxAnimationRange && MetaData(entity).VisibilityMask == MetaData(uid).VisibilityMask) // Don't animate aghost pickups. { - var initialPosition = EntityCoordinates.FromMap(coordinateEntity, itemPos, EntityManager); + var initialPosition = EntityCoordinates.FromMap(coordinateEntity, itemPos, TransformSystem, EntityManager); _storage.PlayPickupAnimation(entity, initialPosition, xform.Coordinates, itemXform.LocalRotation, uid); } } diff --git a/Content.Shared/Interaction/SharedInteractionSystem.cs b/Content.Shared/Interaction/SharedInteractionSystem.cs index 7d5e390b6f0..0e390ecea45 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.cs @@ -459,7 +459,7 @@ protected bool ValidateInteractAndFace(EntityUid user, EntityCoordinates coordin return false; if (!HasComp(user)) - _rotateToFaceSystem.TryFaceCoordinates(user, coordinates.ToMapPos(EntityManager)); + _rotateToFaceSystem.TryFaceCoordinates(user, coordinates.ToMapPos(EntityManager, _transform)); return true; } @@ -612,7 +612,7 @@ public bool InRangeUnobstructed( Ignored combinedPredicate = e => e == origin || (predicate?.Invoke(e) ?? false); var inRange = true; MapCoordinates originPos = default; - var targetPos = otherCoordinates.ToMap(EntityManager); + var targetPos = otherCoordinates.ToMap(EntityManager, _transform); Angle targetRot = default; // So essentially: @@ -785,7 +785,7 @@ public bool InRangeUnobstructed( Ignored? predicate = null, bool popup = false) { - return InRangeUnobstructed(origin, other.ToMap(EntityManager), range, collisionMask, predicate, popup); + return InRangeUnobstructed(origin, other.ToMap(EntityManager, _transform), range, collisionMask, predicate, popup); } /// diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/MassSleep/MassSleepPowerComponent.cs b/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/MassSleep/MassSleepPowerComponent.cs deleted file mode 100644 index 7d611c63dac..00000000000 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/MassSleep/MassSleepPowerComponent.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Content.Shared.Actions; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; - -namespace Content.Shared.Abilities.Psionics -{ - [RegisterComponent] - public sealed partial class MassSleepPowerComponent : Component - { - public float Radius = 1.25f; - [DataField("massSleepActionId", - customTypeSerializer: typeof(PrototypeIdSerializer))] - public string? MassSleepActionId = "ActionMassSleep"; - - [DataField("massSleepActionEntity")] - public EntityUid? MassSleepActionEntity; - } -} diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/MassSleep/MassSleepPowerSystem.cs b/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/MassSleep/MassSleepPowerSystem.cs deleted file mode 100644 index e36a3c70e8a..00000000000 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/MassSleep/MassSleepPowerSystem.cs +++ /dev/null @@ -1,59 +0,0 @@ -using Content.Shared.Actions; -using Content.Shared.Bed.Sleep; -using Content.Shared.Magic.Events; -using Content.Shared.Damage; -using Content.Shared.Mobs.Components; -using Robust.Shared.Prototypes; -using Robust.Shared.Timing; -using Content.Shared.Mind; -using Content.Shared.Actions.Events; - -namespace Content.Shared.Abilities.Psionics -{ - public sealed class MassSleepPowerSystem : EntitySystem - { - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly SharedActionsSystem _actions = default!; - [Dependency] private readonly EntityLookupSystem _lookup = default!; - [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; - [Dependency] private readonly SharedMindSystem _mindSystem = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnInit); - SubscribeLocalEvent(OnShutdown); - SubscribeLocalEvent(OnPowerUsed); - } - - private void OnInit(EntityUid uid, MassSleepPowerComponent component, ComponentInit args) - { - _actions.AddAction(uid, ref component.MassSleepActionEntity, component.MassSleepActionId ); - _actions.TryGetActionData( component.MassSleepActionEntity, out var actionData ); - if (actionData is { UseDelay: not null }) - _actions.StartUseDelay(component.MassSleepActionEntity); - if (TryComp(uid, out var psionic) && psionic.PsionicAbility == null) - psionic.PsionicAbility = component.MassSleepActionEntity; - } - - private void OnShutdown(EntityUid uid, MassSleepPowerComponent component, ComponentShutdown args) - { - _actions.RemoveAction(uid, component.MassSleepActionEntity); - } - - private void OnPowerUsed(EntityUid uid, MassSleepPowerComponent component, MassSleepPowerActionEvent args) - { - foreach (var entity in _lookup.GetEntitiesInRange(args.Target, component.Radius)) - { - if (HasComp(entity) && entity != uid && !HasComp(entity)) - { - if (TryComp(entity, out var damageable) && damageable.DamageContainerID == "Biological") - EnsureComp(entity); - } - } - _psionics.LogPowerUsed(uid, "mass sleep"); - args.Handled = true; - } - } -} diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Metapsionics/MetapsionicPowerComponent.cs b/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Metapsionics/MetapsionicPowerComponent.cs deleted file mode 100644 index c9d0130221a..00000000000 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Metapsionics/MetapsionicPowerComponent.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Content.Shared.Actions; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; - -namespace Content.Shared.Abilities.Psionics -{ - [RegisterComponent] - public sealed partial class MetapsionicPowerComponent : Component - { - [DataField("range")] - public float Range = 5f; - - public InstantActionComponent? MetapsionicPowerAction = null; - [DataField("metapsionicActionId", - customTypeSerializer: typeof(PrototypeIdSerializer))] - public string? MetapsionicActionId = "ActionMetapsionic"; - - [DataField("metapsionicActionEntity")] - public EntityUid? MetapsionicActionEntity; - } -} diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/TelegnosticProjectionComponent.cs b/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/TelegnosticProjectionComponent.cs deleted file mode 100644 index 9d627cb42d8..00000000000 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/TelegnosticProjectionComponent.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Content.Shared.Abilities.Psionics -{ - [RegisterComponent] - public sealed partial class TelegnosticProjectionComponent : Component - {} -} \ No newline at end of file diff --git a/Content.Shared/Nyanotrasen/Actions/Events/MassSleepPowerActionEvent.cs b/Content.Shared/Nyanotrasen/Actions/Events/MassSleepPowerActionEvent.cs deleted file mode 100644 index 6666ee48d6c..00000000000 --- a/Content.Shared/Nyanotrasen/Actions/Events/MassSleepPowerActionEvent.cs +++ /dev/null @@ -1,2 +0,0 @@ -namespace Content.Shared.Actions.Events; -public sealed partial class MassSleepPowerActionEvent : WorldTargetActionEvent {} diff --git a/Content.Shared/Nyanotrasen/Actions/Events/MetapsionicPowerActionEvent.cs b/Content.Shared/Nyanotrasen/Actions/Events/MetapsionicPowerActionEvent.cs index b28801efe74..b7c3c8ad2d6 100644 --- a/Content.Shared/Nyanotrasen/Actions/Events/MetapsionicPowerActionEvent.cs +++ b/Content.Shared/Nyanotrasen/Actions/Events/MetapsionicPowerActionEvent.cs @@ -1,2 +1,3 @@ namespace Content.Shared.Actions.Events; -public sealed partial class MetapsionicPowerActionEvent : InstantActionEvent {} +public sealed partial class WideMetapsionicPowerActionEvent : InstantActionEvent { } +public sealed partial class FocusedMetapsionicPowerActionEvent : EntityTargetActionEvent { } diff --git a/Content.Shared/Nyanotrasen/Actions/Events/PyrokinesisPowerActionEvent.cs b/Content.Shared/Nyanotrasen/Actions/Events/PyrokinesisPowerActionEvent.cs index 896ec0bb63d..4639aadd55b 100644 --- a/Content.Shared/Nyanotrasen/Actions/Events/PyrokinesisPowerActionEvent.cs +++ b/Content.Shared/Nyanotrasen/Actions/Events/PyrokinesisPowerActionEvent.cs @@ -1,2 +1,4 @@ namespace Content.Shared.Actions.Events; -public sealed partial class PyrokinesisPowerActionEvent : EntityTargetActionEvent {} +public sealed partial class PyrokinesisPowerActionEvent : WorldTargetActionEvent {} + + diff --git a/Content.Shared/Nyanotrasen/Actions/Events/RegenerativeStasisPowerActionEvent.cs b/Content.Shared/Nyanotrasen/Actions/Events/RegenerativeStasisPowerActionEvent.cs new file mode 100644 index 00000000000..4435f475a44 --- /dev/null +++ b/Content.Shared/Nyanotrasen/Actions/Events/RegenerativeStasisPowerActionEvent.cs @@ -0,0 +1,2 @@ +namespace Content.Shared.Actions.Events; +public sealed partial class RegenerativeStasisPowerActionEvent : EntityTargetActionEvent {} diff --git a/Content.Shared/Nyanotrasen/Psionics/Events.cs b/Content.Shared/Nyanotrasen/Psionics/Events.cs deleted file mode 100644 index cf9a50c6e18..00000000000 --- a/Content.Shared/Nyanotrasen/Psionics/Events.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Robust.Shared.Serialization; -using Content.Shared.DoAfter; - -namespace Content.Shared.Psionics.Events -{ - [Serializable, NetSerializable] - public sealed partial class PsionicRegenerationDoAfterEvent : DoAfterEvent - { - [DataField("startedAt", required: true)] - public TimeSpan StartedAt; - - private PsionicRegenerationDoAfterEvent() - { - } - - public PsionicRegenerationDoAfterEvent(TimeSpan startedAt) - { - StartedAt = startedAt; - } - - public override DoAfterEvent Clone() => this; - } - - [Serializable, NetSerializable] - public sealed partial class GlimmerWispDrainDoAfterEvent : SimpleDoAfterEvent - { - } -} diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/AcceptPsionicsEuiMessage.cs b/Content.Shared/Psionics/Abilities/AcceptPsionicsEuiMessage.cs similarity index 100% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/AcceptPsionicsEuiMessage.cs rename to Content.Shared/Psionics/Abilities/AcceptPsionicsEuiMessage.cs diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Dispel/DamageOnDispelComponent.cs b/Content.Shared/Psionics/Abilities/Dispel/DamageOnDispelComponent.cs similarity index 77% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Dispel/DamageOnDispelComponent.cs rename to Content.Shared/Psionics/Abilities/Dispel/DamageOnDispelComponent.cs index ce86111fc4b..c3702880375 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Dispel/DamageOnDispelComponent.cs +++ b/Content.Shared/Psionics/Abilities/Dispel/DamageOnDispelComponent.cs @@ -1,6 +1,6 @@ using Content.Shared.Damage; -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { /// /// Takes damage when dispelled. @@ -9,7 +9,7 @@ namespace Content.Shared.Abilities.Psionics public sealed partial class DamageOnDispelComponent : Component { [DataField("damage", required: true)] - public DamageSpecifier Damage = default!; + public DamageSpecifier Damage = default!; [DataField("variance")] public float Variance = 0.5f; diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Dispel/DispelPowerComponent.cs b/Content.Shared/Psionics/Abilities/Dispel/DispelPowerComponent.cs similarity index 79% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Dispel/DispelPowerComponent.cs rename to Content.Shared/Psionics/Abilities/Dispel/DispelPowerComponent.cs index cd887866364..518a28b0967 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Dispel/DispelPowerComponent.cs +++ b/Content.Shared/Psionics/Abilities/Dispel/DispelPowerComponent.cs @@ -1,20 +1,22 @@ -using Content.Shared.Actions; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { [RegisterComponent] public sealed partial class DispelPowerComponent : Component { [DataField("range")] public float Range = 10f; - + [DataField("dispelActionId", customTypeSerializer: typeof(PrototypeIdSerializer))] public string? DispelActionId = "ActionDispel"; [DataField("dispelActionEntity")] public EntityUid? DispelActionEntity; + + [DataField("dispelFeedback")] + public string DispelFeedback = "dispel-feedback"; } } diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Dispel/DispellableComponent.cs b/Content.Shared/Psionics/Abilities/Dispel/DispellableComponent.cs similarity index 69% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Dispel/DispellableComponent.cs rename to Content.Shared/Psionics/Abilities/Dispel/DispellableComponent.cs index 40352004187..4bb5ee653d2 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Dispel/DispellableComponent.cs +++ b/Content.Shared/Psionics/Abilities/Dispel/DispellableComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { [RegisterComponent] public sealed partial class DispellableComponent : Component diff --git a/Content.Shared/Psionics/Abilities/Metapsionics/MetapsionicPowerComponent.cs b/Content.Shared/Psionics/Abilities/Metapsionics/MetapsionicPowerComponent.cs new file mode 100644 index 00000000000..2fbfe18327e --- /dev/null +++ b/Content.Shared/Psionics/Abilities/Metapsionics/MetapsionicPowerComponent.cs @@ -0,0 +1,38 @@ +using Content.Shared.DoAfter; +using Robust.Shared.Audio; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Shared.Psionics.Abilities +{ + [RegisterComponent] + public sealed partial class MetapsionicPowerComponent : Component + { + [DataField("doAfter")] + public DoAfterId? DoAfter; + + [DataField("useDelay")] + public float UseDelay = 8f; + [DataField("soundUse")] + + public SoundSpecifier SoundUse = new SoundPathSpecifier("/Audio/Nyanotrasen/heartbeat_fast.ogg"); + + [DataField("range")] + public float Range = 5f; + + [DataField("actionWideMetapsionic", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string ActionWideMetapsionic = "ActionWideMetapsionic"; + + [DataField("actionWideMetapsionicEntity")] + public EntityUid? ActionWideMetapsionicEntity; + + [DataField("actionFocusedMetapsionic", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string ActionFocusedMetapsionic = "ActionFocusedMetapsionic"; + + [DataField("actionFocusedMetapsionicEntity")] + public EntityUid? ActionFocusedMetapsionicEntity; + + [DataField("metapsionicFeedback")] + public string MetapsionicFeedback = "metapsionic-feedback"; + } +} diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/MindSwap/MindSwapPowerComponent.cs b/Content.Shared/Psionics/Abilities/MindSwap/MindSwapPowerComponent.cs similarity index 76% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/MindSwap/MindSwapPowerComponent.cs rename to Content.Shared/Psionics/Abilities/MindSwap/MindSwapPowerComponent.cs index 6a3fc811c89..94b73c41e38 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/MindSwap/MindSwapPowerComponent.cs +++ b/Content.Shared/Psionics/Abilities/MindSwap/MindSwapPowerComponent.cs @@ -1,7 +1,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { [RegisterComponent] public sealed partial class MindSwapPowerComponent : Component @@ -12,5 +12,8 @@ public sealed partial class MindSwapPowerComponent : Component [DataField("mindSwapActionEntity")] public EntityUid? MindSwapActionEntity; + + [DataField("mindSwapFeedback")] + public string MindSwapFeedback = "mind-swap-feedback"; } } diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/NoosphericZap/NoosphericZapPowerComponent.cs b/Content.Shared/Psionics/Abilities/NoosphericZap/NoosphericZapPowerComponent.cs similarity index 77% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/NoosphericZap/NoosphericZapPowerComponent.cs rename to Content.Shared/Psionics/Abilities/NoosphericZap/NoosphericZapPowerComponent.cs index 0e91894b1dc..997db65e1b1 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/NoosphericZap/NoosphericZapPowerComponent.cs +++ b/Content.Shared/Psionics/Abilities/NoosphericZap/NoosphericZapPowerComponent.cs @@ -2,7 +2,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { [RegisterComponent] public sealed partial class NoosphericZapPowerComponent : Component @@ -13,5 +13,8 @@ public sealed partial class NoosphericZapPowerComponent : Component [DataField("noosphericZapActionEntity")] public EntityUid? NoosphericZapActionEntity; + + [DataField("noosphericZapFeedback")] + public string NoosphericZapFeedback = "noospheric-zap-feedback"; } } diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/PsionicInvisibility/PsionicInvisibilityPowerComponent.cs b/Content.Shared/Psionics/Abilities/PsionicInvisibility/PsionicInvisibilityPowerComponent.cs similarity index 71% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/PsionicInvisibility/PsionicInvisibilityPowerComponent.cs rename to Content.Shared/Psionics/Abilities/PsionicInvisibility/PsionicInvisibilityPowerComponent.cs index 3e198aa9303..d9c36f5b22a 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/PsionicInvisibility/PsionicInvisibilityPowerComponent.cs +++ b/Content.Shared/Psionics/Abilities/PsionicInvisibility/PsionicInvisibilityPowerComponent.cs @@ -1,7 +1,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { [RegisterComponent] public sealed partial class PsionicInvisibilityPowerComponent : Component @@ -12,5 +12,11 @@ public sealed partial class PsionicInvisibilityPowerComponent : Component [DataField("psionicInvisibilityActionEntity")] public EntityUid? PsionicInvisibilityActionEntity; + + [DataField("InvisibilityFeedback")] + public string InvisibilityFeedback = "invisibility-feedback"; + + [DataField("UseTimer")] + public float UseTimer = 30f; } } diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/PsionicInvisibility/PsionicInvisibilityUsedComponent.cs b/Content.Shared/Psionics/Abilities/PsionicInvisibility/PsionicInvisibilityUsedComponent.cs similarity index 94% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/PsionicInvisibility/PsionicInvisibilityUsedComponent.cs rename to Content.Shared/Psionics/Abilities/PsionicInvisibility/PsionicInvisibilityUsedComponent.cs index 9037b8bcdfe..2a9dd7642ba 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/PsionicInvisibility/PsionicInvisibilityUsedComponent.cs +++ b/Content.Shared/Psionics/Abilities/PsionicInvisibility/PsionicInvisibilityUsedComponent.cs @@ -1,6 +1,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -namespace Content.Shared.Abilities.Psionics + +namespace Content.Shared.Psionics.Abilities { [RegisterComponent] public sealed partial class PsionicInvisibilityUsedComponent : Component diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/PsionicRegeneration/PsionicRegenerationPowerComponent.cs b/Content.Shared/Psionics/Abilities/PsionicRegeneration/PsionicRegenerationPowerComponent.cs similarity index 76% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/PsionicRegeneration/PsionicRegenerationPowerComponent.cs rename to Content.Shared/Psionics/Abilities/PsionicRegeneration/PsionicRegenerationPowerComponent.cs index 4a62e84d191..3184bf7de5b 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/PsionicRegeneration/PsionicRegenerationPowerComponent.cs +++ b/Content.Shared/Psionics/Abilities/PsionicRegeneration/PsionicRegenerationPowerComponent.cs @@ -3,7 +3,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { [RegisterComponent] public sealed partial class PsionicRegenerationPowerComponent : Component @@ -12,7 +12,7 @@ public sealed partial class PsionicRegenerationPowerComponent : Component public DoAfterId? DoAfter; [DataField("essence")] - public float EssenceAmount = 20; + public float EssenceAmount = 10; [DataField("useDelay")] public float UseDelay = 8f; @@ -26,6 +26,12 @@ public sealed partial class PsionicRegenerationPowerComponent : Component [DataField("psionicRegenerationActionEntity")] public EntityUid? PsionicRegenerationActionEntity; + + [DataField("regenerationFeedback")] + public string RegenerationFeedback = "regeneration-feedback"; + + [DataField("selfRevive")] + public bool SelfRevive { get; set; } = false; } } diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Pyrokinesis/PyrokinesisPowerComponent.cs b/Content.Shared/Psionics/Abilities/Pyrokinesis/PyrokinesisPowerComponent.cs similarity index 79% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Pyrokinesis/PyrokinesisPowerComponent.cs rename to Content.Shared/Psionics/Abilities/Pyrokinesis/PyrokinesisPowerComponent.cs index 28425afdb4c..1f88741b9a9 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Pyrokinesis/PyrokinesisPowerComponent.cs +++ b/Content.Shared/Psionics/Abilities/Pyrokinesis/PyrokinesisPowerComponent.cs @@ -2,7 +2,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { [RegisterComponent] public sealed partial class PyrokinesisPowerComponent : Component @@ -14,5 +14,8 @@ public sealed partial class PyrokinesisPowerComponent : Component [DataField("pyrokinesisActionEntity")] public EntityUid? PyrokinesisActionEntity; + + [DataField("pyrokinesisFeedback")] + public string PyrokinesisFeedback = "pyrokinesis-feedback"; } } diff --git a/Content.Shared/Psionics/Abilities/RegenerativeStasis/RegenerativeStasisPowerComponent.cs b/Content.Shared/Psionics/Abilities/RegenerativeStasis/RegenerativeStasisPowerComponent.cs new file mode 100644 index 00000000000..27a0903e224 --- /dev/null +++ b/Content.Shared/Psionics/Abilities/RegenerativeStasis/RegenerativeStasisPowerComponent.cs @@ -0,0 +1,20 @@ +using Content.Shared.Actions; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Shared.Psionics.Abilities +{ + [RegisterComponent] + public sealed partial class RegenerativeStasisPowerComponent : Component + { + [DataField("regenerativeStasisActionId", + customTypeSerializer: typeof(PrototypeIdSerializer))] + public string? RegenerativeStasisActionId = "ActionRegenerativeStasis"; + + [DataField("regenerativeStasisActionEntity")] + public EntityUid? RegenerativeStasisActionEntity; + + [DataField("regenerativeStasisFeedback")] + public string RegenerativeStasisFeedback = "regenerative-stasis-feedback"; + } +} diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/TelegnosisPowerComponent.cs b/Content.Shared/Psionics/Abilities/Telegnosis/TelegnosisPowerComponent.cs similarity index 73% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/TelegnosisPowerComponent.cs rename to Content.Shared/Psionics/Abilities/Telegnosis/TelegnosisPowerComponent.cs index 51958822a41..f1a71332b18 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/TelegnosisPowerComponent.cs +++ b/Content.Shared/Psionics/Abilities/Telegnosis/TelegnosisPowerComponent.cs @@ -3,7 +3,7 @@ using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { [RegisterComponent] public sealed partial class TelegnosisPowerComponent : Component @@ -19,5 +19,11 @@ public sealed partial class TelegnosisPowerComponent : Component [DataField("telegnosisActionEntity")] public EntityUid? TelegnosisActionEntity; + + [DataField("telegnosisFeedback")] + public string TelegnosisFeedback = "telegnosis-feedback"; + public EntityUid OriginalEntity = default!; + public EntityUid ProjectionUid = default!; + public bool IsProjecting = false; } -} \ No newline at end of file +} diff --git a/Content.Shared/Psionics/Abilities/Telegnosis/TelegnosticProjectionComponent.cs b/Content.Shared/Psionics/Abilities/Telegnosis/TelegnosticProjectionComponent.cs new file mode 100644 index 00000000000..bc18ff9f3c2 --- /dev/null +++ b/Content.Shared/Psionics/Abilities/Telegnosis/TelegnosticProjectionComponent.cs @@ -0,0 +1,8 @@ +namespace Content.Shared.Psionics.Abilities +{ + [RegisterComponent] + public sealed partial class TelegnosticProjectionComponent : Component + { + public EntityUid OriginalEntity = default!; + } +} diff --git a/Content.Shared/Psionics/Events.cs b/Content.Shared/Psionics/Events.cs new file mode 100644 index 00000000000..45a00b5f048 --- /dev/null +++ b/Content.Shared/Psionics/Events.cs @@ -0,0 +1,64 @@ +using Robust.Shared.Serialization; +using Content.Shared.DoAfter; + +namespace Content.Shared.Psionics.Events +{ + [Serializable, NetSerializable] + public sealed partial class PsionicRegenerationDoAfterEvent : DoAfterEvent + { + [DataField("startedAt", required: true)] + public TimeSpan StartedAt; + + private PsionicRegenerationDoAfterEvent() + { + } + + public PsionicRegenerationDoAfterEvent(TimeSpan startedAt) + { + StartedAt = startedAt; + } + + public override DoAfterEvent Clone() => this; + } + + [Serializable, NetSerializable] + public sealed partial class PsionicInvisibilityTimerEvent : DoAfterEvent + { + [DataField("startedAt", required: true)] + public TimeSpan StartedAt; + + private PsionicInvisibilityTimerEvent() + { + } + + public PsionicInvisibilityTimerEvent(TimeSpan startedAt) + { + StartedAt = startedAt; + } + + public override DoAfterEvent Clone() => this; + } + + [Serializable, NetSerializable] + public sealed partial class FocusedMetapsionicDoAfterEvent : DoAfterEvent + { + [DataField("startedAt", required: true)] + public TimeSpan StartedAt; + + private FocusedMetapsionicDoAfterEvent() + { + } + + public FocusedMetapsionicDoAfterEvent(TimeSpan startedAt) + { + StartedAt = startedAt; + } + + public override DoAfterEvent Clone() => this; + } + + [Serializable, NetSerializable] + public sealed partial class GlimmerWispDrainDoAfterEvent : SimpleDoAfterEvent + { + } +} diff --git a/Content.Shared/Nyanotrasen/Psionics/Glimmer/GlimmerSystem.cs b/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs similarity index 98% rename from Content.Shared/Nyanotrasen/Psionics/Glimmer/GlimmerSystem.cs rename to Content.Shared/Psionics/Glimmer/GlimmerSystem.cs index 31af85bbb51..8be02f936a9 100644 --- a/Content.Shared/Nyanotrasen/Psionics/Glimmer/GlimmerSystem.cs +++ b/Content.Shared/Psionics/Glimmer/GlimmerSystem.cs @@ -40,7 +40,7 @@ public GlimmerTier GetGlimmerTier(int? glimmer = null) if (glimmer == null) glimmer = Glimmer; - return (glimmer) switch + return glimmer switch { <= 49 => GlimmerTier.Minimal, >= 50 and <= 99 => GlimmerTier.Low, diff --git a/Content.Shared/Nyanotrasen/Psionics/Glimmer/SharedGlimmerReactiveComponent.cs b/Content.Shared/Psionics/Glimmer/SharedGlimmerReactiveComponent.cs similarity index 100% rename from Content.Shared/Nyanotrasen/Psionics/Glimmer/SharedGlimmerReactiveComponent.cs rename to Content.Shared/Psionics/Glimmer/SharedGlimmerReactiveComponent.cs diff --git a/Content.Shared/Nyanotrasen/Psionics/Glimmer/SharedGlimmerReactiveVisuals.cs b/Content.Shared/Psionics/Glimmer/SharedGlimmerReactiveVisuals.cs similarity index 100% rename from Content.Shared/Nyanotrasen/Psionics/Glimmer/SharedGlimmerReactiveVisuals.cs rename to Content.Shared/Psionics/Glimmer/SharedGlimmerReactiveVisuals.cs diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Items/ClothingGrantPsionicPowerComponent.cs b/Content.Shared/Psionics/Items/ClothingGrantPsionicPowerComponent.cs similarity index 84% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/Items/ClothingGrantPsionicPowerComponent.cs rename to Content.Shared/Psionics/Items/ClothingGrantPsionicPowerComponent.cs index 4cbb05c8395..f09efc3064c 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Items/ClothingGrantPsionicPowerComponent.cs +++ b/Content.Shared/Psionics/Items/ClothingGrantPsionicPowerComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { [RegisterComponent] public sealed partial class ClothingGrantPsionicPowerComponent : Component diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Items/HeadCageComponent.cs b/Content.Shared/Psionics/Items/HeadCageComponent.cs similarity index 96% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/Items/HeadCageComponent.cs rename to Content.Shared/Psionics/Items/HeadCageComponent.cs index acaa832860f..c03241e47c7 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Items/HeadCageComponent.cs +++ b/Content.Shared/Psionics/Items/HeadCageComponent.cs @@ -1,7 +1,7 @@ using System.Threading; using Robust.Shared.Audio; -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { [RegisterComponent] public sealed partial class HeadCageComponent : Component diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Items/HeadCagedComponent.cs b/Content.Shared/Psionics/Items/HeadCagedComponent.cs similarity index 81% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/Items/HeadCagedComponent.cs rename to Content.Shared/Psionics/Items/HeadCagedComponent.cs index f8af46b8878..0f826f7a05e 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Items/HeadCagedComponent.cs +++ b/Content.Shared/Psionics/Items/HeadCagedComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { [RegisterComponent] /// diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Items/PsionicItemsSystem.cs b/Content.Shared/Psionics/Items/PsionicItemsSystem.cs similarity index 98% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/Items/PsionicItemsSystem.cs rename to Content.Shared/Psionics/Items/PsionicItemsSystem.cs index f88acf61f3c..950353c5dfb 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Items/PsionicItemsSystem.cs +++ b/Content.Shared/Psionics/Items/PsionicItemsSystem.cs @@ -2,7 +2,7 @@ using Content.Shared.Clothing.Components; using Content.Shared.StatusEffect; -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { public sealed class PsionicItemsSystem : EntitySystem { diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Items/TinfoilHatComponent.cs b/Content.Shared/Psionics/Items/TinfoilHatComponent.cs similarity index 90% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/Items/TinfoilHatComponent.cs rename to Content.Shared/Psionics/Items/TinfoilHatComponent.cs index 5086b9f4977..6ef7bdc823b 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Items/TinfoilHatComponent.cs +++ b/Content.Shared/Psionics/Items/TinfoilHatComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { [RegisterComponent] public sealed partial class TinfoilHatComponent : Component diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/PsionicComponent.cs b/Content.Shared/Psionics/PsionicComponent.cs similarity index 51% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/PsionicComponent.cs rename to Content.Shared/Psionics/PsionicComponent.cs index 9091e03cfc3..9a06e54cb31 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/PsionicComponent.cs +++ b/Content.Shared/Psionics/PsionicComponent.cs @@ -1,7 +1,6 @@ -using Content.Shared.Actions; using Robust.Shared.GameStates; -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { [RegisterComponent, NetworkedComponent] public sealed partial class PsionicComponent : Component @@ -15,6 +14,17 @@ public sealed partial class PsionicComponent : Component public bool Removable = true; [DataField("activePowers")] - public HashSet ActivePowers = new(); + public List ActivePowers = new(); + + [DataField("psychicFeedback")] + public List PsychicFeedback = new(); + + [DataField("amplification")] + public float Amplification = 0.1f; + + [DataField("dampening")] + public float Dampening = 0.1f; + public bool Telepath = false; + public bool InnatePsiChecked = false; } } diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/PsionicInsulationComponent.cs b/Content.Shared/Psionics/PsionicInsulationComponent.cs similarity index 82% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/PsionicInsulationComponent.cs rename to Content.Shared/Psionics/PsionicInsulationComponent.cs index 12370da5ae4..2ab054b1f8f 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/PsionicInsulationComponent.cs +++ b/Content.Shared/Psionics/PsionicInsulationComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { [RegisterComponent] public sealed partial class PsionicInsulationComponent : Component diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/PsionicsDisabledComponent.cs b/Content.Shared/Psionics/PsionicsDisabledComponent.cs similarity index 84% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/PsionicsDisabledComponent.cs rename to Content.Shared/Psionics/PsionicsDisabledComponent.cs index 28e7157a9d2..00cf5506523 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/PsionicsDisabledComponent.cs +++ b/Content.Shared/Psionics/PsionicsDisabledComponent.cs @@ -1,6 +1,6 @@ using Robust.Shared.GameStates; -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { /// /// Only use this for the status effect, please. diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/SharedPsionicAbilitiesSystem.cs b/Content.Shared/Psionics/SharedPsionicAbilitiesSystem.cs similarity index 97% rename from Content.Shared/Nyanotrasen/Abilities/Psionics/SharedPsionicAbilitiesSystem.cs rename to Content.Shared/Psionics/SharedPsionicAbilitiesSystem.cs index 2739d5ba31a..603c5188a52 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/SharedPsionicAbilitiesSystem.cs +++ b/Content.Shared/Psionics/SharedPsionicAbilitiesSystem.cs @@ -7,7 +7,7 @@ using Robust.Shared.Random; using Robust.Shared.Serialization; -namespace Content.Shared.Abilities.Psionics +namespace Content.Shared.Psionics.Abilities { public sealed class SharedPsionicAbilitiesSystem : EntitySystem { @@ -73,7 +73,7 @@ public void SetPsionicsThroughEligibility(EntityUid uid) if (actionData == null) return; - _actions.SetEnabled(actionData.Owner, IsEligibleForPsionics(uid)); + _actions.SetEnabled(uid, IsEligibleForPsionics(uid)); } private bool IsEligibleForPsionics(EntityUid uid) diff --git a/Content.Shared/Psionics/SharedPsionicSystem.Insulated.cs b/Content.Shared/Psionics/SharedPsionicSystem.Insulated.cs new file mode 100644 index 00000000000..5c89f39354c --- /dev/null +++ b/Content.Shared/Psionics/SharedPsionicSystem.Insulated.cs @@ -0,0 +1,4 @@ +namespace Content.Shared.Psionics +{ + public readonly record struct PsionicInsulationEvent; +} diff --git a/Content.Shared/Spawning/EntitySystemExtensions.cs b/Content.Shared/Spawning/EntitySystemExtensions.cs index 14b171baeb1..507a0f4aa27 100644 --- a/Content.Shared/Spawning/EntitySystemExtensions.cs +++ b/Content.Shared/Spawning/EntitySystemExtensions.cs @@ -16,7 +16,7 @@ public static class EntitySystemExtensions SharedPhysicsSystem? physicsManager = null) { physicsManager ??= entityManager.System(); - var mapCoordinates = coordinates.ToMap(entityManager); + var mapCoordinates = coordinates.ToMap(entityManager, entityManager.System()); return entityManager.SpawnIfUnobstructed(prototypeName, mapCoordinates, collisionLayer, box, physicsManager); } diff --git a/Content.Shared/Store/ListingPrototype.cs b/Content.Shared/Store/ListingPrototype.cs index 2f067afbeeb..25245327ce9 100644 --- a/Content.Shared/Store/ListingPrototype.cs +++ b/Content.Shared/Store/ListingPrototype.cs @@ -98,6 +98,9 @@ public partial class ListingData : IEquatable, ICloneable [DataField("productEvent")] public object? ProductEvent; + [DataField] + public bool RaiseProductEventOnUser; + /// /// used internally for tracking how many times an item was purchased. /// @@ -120,7 +123,7 @@ public bool Equals(ListingData? listing) Description != listing.Description || ProductEntity != listing.ProductEntity || ProductAction != listing.ProductAction || - ProductEvent != listing.ProductEvent || + ProductEvent?.GetType() != listing.ProductEvent?.GetType() || RestockTime != listing.RestockTime) return false; diff --git a/Content.Shared/Supermatter/Components/SupermatterComponent.cs b/Content.Shared/Supermatter/Components/SupermatterComponent.cs index 2aab1eaa84e..64ba90ce012 100644 --- a/Content.Shared/Supermatter/Components/SupermatterComponent.cs +++ b/Content.Shared/Supermatter/Components/SupermatterComponent.cs @@ -347,10 +347,13 @@ public sealed partial class SupermatterComponent : Component { {Gas.Oxygen, 0f}, {Gas.Nitrogen, 0f}, + {Gas.NitrousOxide, 0f}, {Gas.CarbonDioxide, 0f}, {Gas.Plasma, 0f}, {Gas.Tritium, 0f}, - {Gas.WaterVapor, 0f} + {Gas.WaterVapor, 0f}, + {Gas.Frezon, 0f}, + {Gas.Ammonia, 0f} }; /// @@ -360,10 +363,13 @@ public sealed partial class SupermatterComponent : Component { [Gas.Oxygen] = (TransmitModifier: 1.5f, HeatPenalty: 1f, PowerMixRatio: 1f), [Gas.Nitrogen] = (TransmitModifier: 0f, HeatPenalty: -1.5f, PowerMixRatio: -1f), + [Gas.NitrousOxide] = (TransmitModifier: 1f, HeatPenalty: -5f, PowerMixRatio: 1f), [Gas.CarbonDioxide] = (TransmitModifier: 0f, HeatPenalty: 0.1f, PowerMixRatio: 1f), [Gas.Plasma] = (TransmitModifier: 4f, HeatPenalty: 15f, PowerMixRatio: 1f), [Gas.Tritium] = (TransmitModifier: 30f, HeatPenalty: 10f, PowerMixRatio: 1f), - [Gas.WaterVapor] = (TransmitModifier: 2f, HeatPenalty: 12f, PowerMixRatio: 1f) + [Gas.WaterVapor] = (TransmitModifier: 2f, HeatPenalty: 12f, PowerMixRatio: 1f), + [Gas.Frezon] = (TransmitModifier: 3f, HeatPenalty: -9f, PowerMixRatio: -1f), + [Gas.Ammonia] = (TransmitModifier: 1.5f, HeatPenalty: 1.5f, PowerMixRatio: 1.5f) }; #endregion SM Gas diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs index a8f7ee23956..91aad895821 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs @@ -261,7 +261,7 @@ private void OnBallisticAmmoCount(EntityUid uid, BallisticAmmoProviderComponent args.Capacity = component.Capacity; } - private void UpdateBallisticAppearance(EntityUid uid, BallisticAmmoProviderComponent component) + public void UpdateBallisticAppearance(EntityUid uid, BallisticAmmoProviderComponent component) { if (!Timing.IsFirstTimePredicted || !TryComp(uid, out var appearance)) return; diff --git a/Resources/Audio/Nyanotrasen/heartbeat_fast.ogg b/Resources/Audio/Nyanotrasen/heartbeat_fast.ogg new file mode 100644 index 00000000000..85a034d9bd0 Binary files /dev/null and b/Resources/Audio/Nyanotrasen/heartbeat_fast.ogg differ diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 60f2d8f14c4..fc0b5c906c7 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4086,3 +4086,35 @@ Entries: message: Added a number of new corporate coats to the Clothesmate. id: 6111 time: '2024-05-22T03:35:11.0000000+00:00' +- author: VMSolidus + changes: + - type: Tweak + message: >- + Syndicate Listening Posts can now appear any time in a round, and can + appear on low-pop servers. + id: 6112 + time: '2024-05-28T23:44:39.0000000+00:00' +- author: FoxxoTrystan + changes: + - type: Tweak + message: Better wall sprites. + - type: Tweak + message: Better window sprites. + id: 6113 + time: '2024-05-28T23:59:19.0000000+00:00' +- author: FoxxoTrystan + changes: + - type: Tweak + message: Radio Resprites, Talkwalkies, Beacon, Headset... + - type: Tweak + message: >- + Radio and uplink radio looks the same, make sure to check what freq the + radio is on! + id: 6114 + time: '2024-05-29T00:00:50.0000000+00:00' +- author: FoxxoTrystan + changes: + - type: Tweak + message: New Tools Sprites! + id: 6115 + time: '2024-05-29T01:06:42.0000000+00:00' diff --git a/Resources/Locale/en-US/nyanotrasen/abilities/psionic.ftl b/Resources/Locale/en-US/nyanotrasen/abilities/psionic.ftl index 91ae21233a3..5b368e822f1 100644 --- a/Resources/Locale/en-US/nyanotrasen/abilities/psionic.ftl +++ b/Resources/Locale/en-US/nyanotrasen/abilities/psionic.ftl @@ -3,8 +3,11 @@ cage-resist-third-person = {CAPITALIZE(THE($user))} starts removing {POSS-ADJ($u cage-uncage-verb = Uncage -action-name-metapsionic = Metapsionic Pulse -action-description-metapsionic = Send a mental pulse through the area to see if there are any psychics nearby. +action-name-widemetapsionic = Wide Metapsionic Pulse +action-description-widemetapsionic = Send a mental pulse through the area to see if there are any psychics nearby. + +action-name-focusedmetapsionic = Focused Metapsionic Pulse +action-description-focusedmetapsionic = Probe an entity at close range to glean metaphorical information about any powers they may have metapsionic-pulse-success = You detect psychic presence nearby. metapsionic-pulse-failure = You don't detect any psychic presence nearby. @@ -13,8 +16,8 @@ metapsionic-pulse-power = You detect that {$power} was used nearby. action-name-dispel = Dispel action-description-dispel = Dispel summoned entities such as familiars or forcewalls. -action-name-mass-sleep = Mass Sleep -action-description-mass-sleep = Put targets in a small area to sleep. +action-name-regenerative-stasis = Regenerative Stasis +action-description-regenerative-stasis = Puts the target into a brief stasis, during which time their wounds rapidly heal. accept-psionics-window-title = Psionic! accept-psionics-window-prompt-text-part = You rolled a psionic power! @@ -63,11 +66,14 @@ action-name-noospheric-zap = Noospheric Zap action-description-noospheric-zap = Shocks the conciousness of the target and leaves them stunned and stuttering. action-name-pyrokinesis = Pyrokinesis -action-description-pyrokinesis = Light a flammable target on fire. -pyrokinesis-power-used = A wisp of flame engulfs {THE($target)}, igniting {OBJECT($target)}! +action-description-pyrokinesis = Hurl a small gateway to the plane of Gehenna at your target. action-name-psychokinesis = Psychokinesis action-description-psychokinesis = Bend the fabric of space to instantly move across it. action-name-rf-sensitivity = Toggle RF Sensitivity action-desc-rf-sensitivity = Toggle your ability to interpret radio waves on and off. + +trait-latent-psychic-desc = Your mind and soul are open to the noosphere, allowing for a limited use of Telepathy. + Thus, you are eligible for potentially receiving psychic powers. + It is possible that you may be hunted by otherworldly forces, so consider keeping your powers a secret. diff --git a/Resources/Locale/en-US/nyanotrasen/psionics/psychic-feedback.ftl b/Resources/Locale/en-US/nyanotrasen/psionics/psychic-feedback.ftl new file mode 100644 index 00000000000..26d2acb87cd --- /dev/null +++ b/Resources/Locale/en-US/nyanotrasen/psionics/psychic-feedback.ftl @@ -0,0 +1,21 @@ +# Feedback messages for Focused Metapsionic Pulse +metapulse-self = I AM. +no-powers = {CAPITALIZE($entity)} will never awaken from the dream in this life +psychic-potential = {CAPITALIZE($entity)} has a slim chance of awakening from the dream +dispel-feedback = {CAPITALIZE($entity)} is a mighty stone, standing against the currents of fate +metapsionic-feedback = {CAPITALIZE($entity)} gazes back upon thee +mind-swap-feedback = {CAPITALIZE($entity)}'s vessel seems fit for other souls +mindswapped-feedback = Cursed flesh! {CAPITALIZE($entity)} dwells within the wrong vessel! +noospheric-zap-feedback = {CAPITALIZE($entity)}'s soul writhes with thunder from beyond the veil +pyrokinesis-feedback = The Secret of Fire dwells within {CAPITALIZE($entity)} +invisibility-feedback = {CAPITALIZE($entity)}'s wyrd seeks to hide from thine gaze +telegnosis-feedback = {CAPITALIZE($entity)}'s soul travels across bridges composed of dreamlight +sophic-grammateus-feedback = SEEKER, YOU NEED ONLY ASK FOR MY WISDOM. +oracle-feedback = WHY DO YOU BOTHER ME SEEKER? HAVE I NOT MADE MY DESIRES CLEAR? +metempsychotic-machine-feedback = The sea of fate flows through this machine +ifrit-feedback = A spirit of Gehenna, bound by the will of a powerful psychic + +# Power PVS Messages +focused-metapsionic-pulse-begin = The air around {CAPITALIZE($entity)} begins to shimmer faintly +psionic-regeneration-self-revive = {CAPITALIZE($entity)} begins to visibly regenerate +mindbreaking-feedback = The light of life vanishes from {CAPITALIZE($entity)}'s eyes, leaving behind a husk pretending at sapience diff --git a/Resources/Locale/en-US/paper/book-authorbooks.ftl b/Resources/Locale/en-US/paper/book-authorbooks.ftl index b1981d9e152..ae886e835af 100644 --- a/Resources/Locale/en-US/paper/book-authorbooks.ftl +++ b/Resources/Locale/en-US/paper/book-authorbooks.ftl @@ -253,3 +253,11 @@ book-text-inspiration = As a freelance writer, Sarah was always in search of ins Without a moment's hesitation, Sarah took out her pen and notebook and began to write. She wrote about the beauty of the scene, the peacefulness she felt, and the surreal quality of the moment. She wanted to capture this feeling and share it with others through her words. As she finished writing, Sarah heard the snap of a twig and looked up to see a man approaching her with a camera. He introduced himself as a nature photographer and asked if she had seen the waterfall. They struck up a conversation, and soon they were both laughing and sharing stories of their adventures. As the sun began to set, the two of them packed up their gear and said their goodbyes. Sarah felt grateful for this unexpected encounter and the inspiration it brought her. She knew that this moment would stay with her forever, and she felt a sense of serenity knowing that there was still so much beauty in the world waiting to be discovered. + +book-text-janitor = [bold][color=black][head=3]The Tales of a Tired Janitor[/head][/bold] + Cleaning a space station as a janitor is like being trapped in a cosmic custodial nightmare. You'd think floating through the vastness of space would be glamorous, but no, I'm stuck scrubbing space grime and extraterrestrial goop off the walls. It's a thankless job in a zero-gravity abyss. + First off, let's talk about the mess. Space dust, alien gunk, and who knows what else accumulates faster than a rocket launch. It's not just about sweeping up the crumbs; it's about battling interstellar filth that seems to have a life of its own. You'd hope for a sleek, futuristic space station, but you get a swirling vortex of space garbage waiting for you around every corner. + And the tools they give us! You'd expect state-of-the-art cleaning gadgets, but nope. They raided a dollar store on Earth before launching us into the cosmos. Mops that barely work in microgravity, spray bottles that run out in one use, and don't even get me started on the space janitor jumpsuit. I feel like a reject from a sci-fi B-movie. + Speaking of jumpsuits, the lack of respect is astronomical. The scientists and astronauts zoom past in their sleek suits, utterly oblivious to the fact that I'm the unsung hero keeping this place from turning into a cosmic trash heap. I bet they don't even know my name. "Hey, Space Janitor!" That's what I get. No appreciation for the elbow grease I put into keeping their precious station spick and span. + And let's remember the hazards. Cleaning up alien slime? Yeah, that's a regular Tuesday for me. One wrong move and I'm dealing with an intergalactic biohazard. It's like playing Russian roulette with space critters that could burst out of some hidden nook and cranny. I signed up to mop floors, not play host to extraterrestrial invaders. + Being a janitor on this so-called Space Station 14 is a cosmic joke. Where did the other 13 stations go? It's not all spacewalks and futuristic gadgets; it's scrubbing toilets and battling alien goo. If anyone thinks space is glamorous, they clearly haven't seen the mess we space janitors deal with every single day. It's time they appreciate the unsung heroes of the space station – the custodians of the cosmos. \ No newline at end of file diff --git a/Resources/Locale/en-US/prototypes/catalog/cargo/cargoproduct-categories.ftl b/Resources/Locale/en-US/prototypes/catalog/cargo/cargoproduct-categories.ftl new file mode 100644 index 00000000000..f2451527b09 --- /dev/null +++ b/Resources/Locale/en-US/prototypes/catalog/cargo/cargoproduct-categories.ftl @@ -0,0 +1,16 @@ +cargoproduct-category-name-armory = Armory +cargoproduct-category-name-atmospherics = Atmospherics +cargoproduct-category-name-cargo = Cargo +cargoproduct-category-name-circuitboards = Circuitboards +cargoproduct-category-name-emergency = Emergency +cargoproduct-category-name-engineering = Engineering +cargoproduct-category-name-food = Food +cargoproduct-category-name-fun = Fun +cargoproduct-category-name-hydroponics = Hydroponics +cargoproduct-category-name-livestock = Livestock +cargoproduct-category-name-materials = Materials +cargoproduct-category-name-medical = Medical +cargoproduct-category-name-science = Science +cargoproduct-category-name-security = Security +cargoproduct-category-name-service = Service +cargoproduct-category-name-shuttle = Shuttle diff --git a/Resources/Locale/en-US/speech/speech-chatsan.ftl b/Resources/Locale/en-US/speech/speech-chatsan.ftl index 4c8cf5db54c..6ce575e648d 100644 --- a/Resources/Locale/en-US/speech/speech-chatsan.ftl +++ b/Resources/Locale/en-US/speech/speech-chatsan.ftl @@ -114,3 +114,6 @@ chatsan-replacement-41 = what are you doing chatsan-word-42 = ofc chatsan-replacement-42 = of course + +chatsan-word-43 = ig +chatsan-replacement-43 = i guess diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index c097a689dd8..7a3564edf66 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -29,3 +29,6 @@ trait-frontal-lisp-desc = You thpeak with a lithp trait-socialanxiety-name = Social Anxiety trait-socialanxiety-desc = You are anxious when you speak and stutter. + +trait-snoring-name = Snoring +trait-snoring-desc = You will snore while sleeping. diff --git a/Resources/Maps/Dungeon/haunted.yml b/Resources/Maps/Dungeon/haunted.yml index d63ca74f200..e0353a1e3f6 100644 --- a/Resources/Maps/Dungeon/haunted.yml +++ b/Resources/Maps/Dungeon/haunted.yml @@ -1,3251 +1,3251 @@ -meta: - format: 6 - postmapinit: false -tilemap: - 0: Space - 22: FloorCave - 23: FloorCaveDrought - 40: FloorDirt - 66: FloorMining - 68: FloorMiningLight - 71: FloorOldConcreteMono - 72: FloorOldConcreteSmooth - 82: FloorShuttleOrange - 118: FloorWood - 121: Plating - 124: PlatingDamaged -entities: -- proto: "" - entities: - - uid: 1653 - components: - - type: MetaData - - type: Transform - - type: Map - - type: PhysicsMap - - type: Broadphase - - type: OccluderTree - - chunks: - -1,-1: - ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAA - version: 6 - 0,0: - ind: 0,0 - tiles: FgAAAAAEFgAAAAAEFgAAAAAFFgAAAAAFFgAAAAAGFgAAAAAAFgAAAAAFFgAAAAAEFgAAAAADFgAAAAAAFgAAAAAFFgAAAAAAFgAAAAADFgAAAAAAFgAAAAACFgAAAAAFFgAAAAACFgAAAAAGFgAAAAADFgAAAAAAFgAAAAADFgAAAAAAFgAAAAAEFgAAAAABFgAAAAAEFgAAAAAGFgAAAAACFgAAAAACFgAAAAABFgAAAAAEFgAAAAAEFgAAAAAGFgAAAAAFFgAAAAAEFgAAAAACFgAAAAAFFgAAAAAAFgAAAAAFFgAAAAAAFgAAAAADFgAAAAACFgAAAAAGFgAAAAACFgAAAAAAFgAAAAAAFgAAAAAGFgAAAAAFFgAAAAADFgAAAAAEFgAAAAABFgAAAAACFgAAAAABFgAAAAAAFgAAAAAFFgAAAAAEFgAAAAAAFgAAAAAEFgAAAAADFgAAAAAGFgAAAAAEFgAAAAABFgAAAAAEFgAAAAACFgAAAAAGFgAAAAAFFgAAAAAAFgAAAAABFgAAAAAFFgAAAAADFgAAAAADFgAAAAAFFgAAAAAFFgAAAAABFgAAAAAFFgAAAAACFgAAAAAAFgAAAAAAFgAAAAAFFgAAAAADFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAADFgAAAAABFgAAAAABFgAAAAACFgAAAAABFgAAAAAGFgAAAAAAFgAAAAAGFwAAAAAAFwAAAAAAFgAAAAACUgAAAAAAFgAAAAAAFgAAAAAEFgAAAAAEFgAAAAACFwAAAAAAFwAAAAAAFgAAAAAAFgAAAAABFgAAAAADFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAADUgAAAAAAFgAAAAACFgAAAAAFFgAAAAACFwAAAAAAFgAAAAAGFgAAAAADFwAAAAAAFwAAAAAAFgAAAAAEFgAAAAAAFgAAAAACFgAAAAADFwAAAAAAFgAAAAAAFgAAAAAFUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAABFgAAAAABFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAAFFgAAAAAAFgAAAAADFgAAAAAFFwAAAAAAFwAAAAAAUgAAAAAAFgAAAAADFgAAAAAGFgAAAAAGFwAAAAAAFgAAAAAAFgAAAAAGFgAAAAAFFgAAAAAEFgAAAAADFgAAAAAEFgAAAAAAFgAAAAAAFgAAAAABFgAAAAAEFgAAAAAEUgAAAAAAFgAAAAABFgAAAAADFgAAAAACFgAAAAAGUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAEFgAAAAAEFgAAAAABFgAAAAAEFwAAAAABFwAAAAABFwAAAAAEUgAAAAAAFgAAAAAFFgAAAAABFgAAAAAFFgAAAAADFgAAAAADFgAAAAAEFgAAAAADUgAAAAAAFgAAAAACFgAAAAAEFgAAAAAFFgAAAAABFgAAAAAGFgAAAAAFFwAAAAAEUgAAAAAAFgAAAAAGFgAAAAAGFwAAAAAGFwAAAAADFgAAAAAAFgAAAAADFgAAAAAEUgAAAAAAFgAAAAAGFwAAAAACFgAAAAACFgAAAAABFgAAAAABFgAAAAADFgAAAAAAUgAAAAAAFwAAAAACFgAAAAABFwAAAAAHFgAAAAACFgAAAAAEFwAAAAAEFgAAAAADUgAAAAAAFwAAAAACFgAAAAAGFgAAAAAGFgAAAAABFgAAAAAAFgAAAAAEFwAAAAAEUgAAAAAAFgAAAAABFwAAAAAFFwAAAAAFFgAAAAACFgAAAAABFwAAAAAHFwAAAAAEUgAAAAAA - version: 6 - 0,1: - ind: 0,1 - tiles: FwAAAAACFgAAAAAFFgAAAAACFgAAAAAEFgAAAAAEFgAAAAAGFgAAAAAAUgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAGFgAAAAADFgAAAAAGFgAAAAADUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAEFgAAAAAFFgAAAAAFFgAAAAAFFgAAAAABUgAAAAAAFgAAAAAAFgAAAAAGFgAAAAAFFwAAAAAAFgAAAAAEUgAAAAAAFgAAAAADFgAAAAAGFgAAAAAAFgAAAAAFFgAAAAAEFwAAAAABFwAAAAAGFgAAAAAFFgAAAAAEUgAAAAAAFgAAAAACFwAAAAAFFwAAAAADFwAAAAADFgAAAAAFUgAAAAAAFwAAAAACFwAAAAADFwAAAAAEFwAAAAAFFgAAAAAEFwAAAAAGFwAAAAAHFwAAAAADFwAAAAAGUgAAAAAAFwAAAAAHFwAAAAACFgAAAAADFwAAAAADFgAAAAABUgAAAAAAFgAAAAABFgAAAAAGFgAAAAAEFgAAAAAGFgAAAAAFFgAAAAAAFwAAAAACFgAAAAAGFgAAAAABUgAAAAAAFgAAAAAGFwAAAAAGFwAAAAABFwAAAAAAFgAAAAACUgAAAAAAFwAAAAAAFgAAAAAGFwAAAAADFwAAAAAHFgAAAAADFgAAAAAGFgAAAAAFFgAAAAABFgAAAAAGUgAAAAAAFgAAAAAAFgAAAAABFgAAAAAFFgAAAAAGFwAAAAADUgAAAAAAFgAAAAACFgAAAAAAFgAAAAADFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAGFgAAAAABFgAAAAAFUgAAAAAAFwAAAAAEFgAAAAAAFgAAAAAFUgAAAAAAFwAAAAABFgAAAAAAFgAAAAADUgAAAAAAFgAAAAADFwAAAAAFFgAAAAAGUgAAAAAAFgAAAAAAFgAAAAAGFgAAAAAFUgAAAAAAFgAAAAADFgAAAAAGFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAAFgAAAAAAUgAAAAAAFwAAAAAAFwAAAAADFwAAAAAHUgAAAAAAFgAAAAABFgAAAAABFgAAAAACUgAAAAAAFgAAAAAFFgAAAAADFgAAAAAGUgAAAAAAFgAAAAAAFgAAAAAEFgAAAAAGUgAAAAAAFwAAAAABFwAAAAAFFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAAFwAAAAAEUgAAAAAAFgAAAAAAFgAAAAAFFgAAAAACUgAAAAAAFgAAAAADFgAAAAAFFgAAAAAEUgAAAAAAFwAAAAACFwAAAAAHFgAAAAADUgAAAAAAFgAAAAACFgAAAAADFgAAAAAGUgAAAAAAFgAAAAADFgAAAAADFgAAAAAAUgAAAAAAFgAAAAACFgAAAAAAFwAAAAABUgAAAAAAFwAAAAAAFgAAAAABFgAAAAABUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAABFgAAAAABFgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAEFgAAAAABFgAAAAADFgAAAAABFgAAAAAGFgAAAAAEFgAAAAADFgAAAAADUgAAAAAAFgAAAAADFgAAAAAFFgAAAAACFgAAAAACFgAAAAAEFgAAAAAGFgAAAAABFgAAAAAFFgAAAAACFgAAAAAGFgAAAAAAFgAAAAADFgAAAAAFFgAAAAAAFgAAAAAFUgAAAAAAFgAAAAADFgAAAAAA - version: 6 - 0,-1: - ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAA - version: 6 - -1,0: - ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAA - version: 6 - -1,1: - ind: -1,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAA - version: 6 - 1,-1: - ind: 1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAA - version: 6 - 1,0: - ind: 1,0 - tiles: FgAAAAACUgAAAAAAFgAAAAACFgAAAAACFgAAAAABFgAAAAADFgAAAAACKAAAAAAAKAAAAAAAKAAAAAAAFgAAAAAGFgAAAAABFgAAAAAEFgAAAAAAFgAAAAAFFgAAAAABFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAAFgAAAAAFFgAAAAAGFgAAAAABFgAAAAADKAAAAAAAFgAAAAADFgAAAAAEFgAAAAAAFgAAAAAFFgAAAAABFgAAAAAAKAAAAAAAFgAAAAAEUgAAAAAAKAAAAAAAKAAAAAAAFgAAAAAAFgAAAAADKAAAAAAAFgAAAAADFgAAAAACFgAAAAAFKAAAAAAAKAAAAAAAKAAAAAAAFgAAAAAGKAAAAAAAKAAAAAAAFgAAAAACUgAAAAAAKAAAAAAAKAAAAAAAFgAAAAAGFgAAAAACFgAAAAAFFgAAAAACFgAAAAAEFgAAAAAGFgAAAAABFgAAAAADFgAAAAAGFgAAAAADFgAAAAABKAAAAAAAFgAAAAAGUgAAAAAAKAAAAAAAFgAAAAAEFgAAAAAFFgAAAAAFFgAAAAAAFgAAAAADFgAAAAAGFgAAAAABFgAAAAAGFgAAAAACFgAAAAACFgAAAAAAFgAAAAABKAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAADFgAAAAAAFgAAAAAEFgAAAAADUgAAAAAAFgAAAAACFgAAAAAFFgAAAAAAFgAAAAAGFgAAAAAEFgAAAAADFgAAAAABFgAAAAAEFwAAAAAAFgAAAAADFwAAAAAAFwAAAAAAFgAAAAAGFgAAAAADFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAAFgAAAAAGFgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAAAFgAAAAACFgAAAAADFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAADFgAAAAAFFgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAAGFwAAAAAAFwAAAAAAFgAAAAAGFgAAAAAGFgAAAAACUgAAAAAAFgAAAAAFFgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAAAFgAAAAABFgAAAAAFFgAAAAABUgAAAAAAFgAAAAAEFgAAAAABFgAAAAAFFgAAAAAEFgAAAAADFgAAAAAGFgAAAAAEFwAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAADFgAAAAAGFgAAAAAGFgAAAAAGFgAAAAADFgAAAAAEFgAAAAACUgAAAAAAFgAAAAABFgAAAAAAFgAAAAABFgAAAAAFFgAAAAABFgAAAAABFgAAAAACUgAAAAAAFgAAAAACFwAAAAAAFwAAAAACFwAAAAAEFwAAAAACFgAAAAACFgAAAAAFUgAAAAAAFgAAAAACFgAAAAAEFgAAAAAGFgAAAAADFgAAAAAGFgAAAAABFgAAAAACUgAAAAAAFgAAAAAGFgAAAAAFFwAAAAAHFwAAAAADFwAAAAAAFwAAAAACFgAAAAAAUgAAAAAAFgAAAAABFgAAAAAFFgAAAAABFgAAAAADFgAAAAAFFgAAAAAFFgAAAAAGUgAAAAAAFgAAAAADFgAAAAABFwAAAAAHFwAAAAAAFwAAAAAEFgAAAAADFgAAAAAGUgAAAAAAFgAAAAAAFgAAAAABFgAAAAACFgAAAAAAFgAAAAAFFgAAAAADFgAAAAADUgAAAAAA - version: 6 - 1,1: - ind: 1,1 - tiles: FgAAAAAAFgAAAAAAFgAAAAAFFgAAAAADFgAAAAAEFgAAAAAEFgAAAAAGUgAAAAAAFgAAAAABFgAAAAABFgAAAAAAFgAAAAABFgAAAAACFgAAAAAFFgAAAAADUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAAUgAAAAAAFgAAAAADFgAAAAAAFgAAAAABFgAAAAAGFgAAAAADUgAAAAAAFgAAAAAAFgAAAAAAFgAAAAACFgAAAAAAFgAAAAAFUgAAAAAAFgAAAAABFgAAAAACFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAGFgAAAAAGFgAAAAADFgAAAAAGUgAAAAAAFgAAAAADFwAAAAADFwAAAAABFgAAAAACFgAAAAAFUgAAAAAAFgAAAAAEdgAAAAADFgAAAAAFUgAAAAAAFgAAAAABFgAAAAAFFgAAAAAGFgAAAAABFgAAAAABUgAAAAAAFgAAAAAGFwAAAAAEFwAAAAACFwAAAAAHFgAAAAACUgAAAAAAFgAAAAACdgAAAAABFwAAAAADUgAAAAAAFgAAAAAGFgAAAAAAFgAAAAACFgAAAAAFFgAAAAADUgAAAAAAFgAAAAACFgAAAAACFwAAAAAHFwAAAAAAFgAAAAABUgAAAAAAFgAAAAAAdgAAAAACFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAADFgAAAAAAFgAAAAAFFgAAAAAAUgAAAAAAFgAAAAACFgAAAAAFFgAAAAABFgAAAAADFgAAAAAAUgAAAAAAFgAAAAAEFgAAAAAGUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAEFwAAAAAFFwAAAAAGUgAAAAAAFgAAAAAGFwAAAAAFFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAADFgAAAAACFgAAAAAEUgAAAAAAFgAAAAAGFgAAAAABFgAAAAAFUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAACFwAAAAAGFwAAAAAAUgAAAAAAFgAAAAAGFgAAAAAFFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAABFgAAAAAGFwAAAAADUgAAAAAAFwAAAAACFgAAAAAEFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAAFwAAAAAEFwAAAAABUgAAAAAAFgAAAAAGFgAAAAAFFwAAAAAHUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAGFgAAAAACFgAAAAAFFgAAAAAFFgAAAAADFgAAAAACFgAAAAAGFgAAAAAFFwAAAAAGFwAAAAAFFwAAAAAAUgAAAAAAFgAAAAAAFwAAAAADFwAAAAADFwAAAAADFwAAAAAEFgAAAAAEFwAAAAAHFwAAAAAGFgAAAAADFgAAAAACFgAAAAADFwAAAAAEFwAAAAABFwAAAAABFwAAAAAHUgAAAAAAFgAAAAAAFgAAAAAFFgAAAAADFgAAAAAE - version: 6 - -1,2: - ind: -1,2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAA - version: 6 - -1,3: - ind: -1,3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 0,2: - ind: 0,2 - tiles: FgAAAAAAFgAAAAACFgAAAAAEFgAAAAADFgAAAAACFgAAAAAGFgAAAAAFFgAAAAACFgAAAAAFFgAAAAACFgAAAAAEFgAAAAAFFgAAAAABUgAAAAAAFgAAAAAFFgAAAAABUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAADFgAAAAACFgAAAAAEFwAAAAAAFgAAAAACFgAAAAAAFgAAAAAEFgAAAAADFgAAAAAGFgAAAAAGFwAAAAAEUgAAAAAAFgAAAAAEFgAAAAADFgAAAAAAFgAAAAADFwAAAAAFFwAAAAACFgAAAAAFFgAAAAACFgAAAAAFFgAAAAAFFgAAAAAEFwAAAAAAFgAAAAAGFgAAAAAAFgAAAAACUgAAAAAAFgAAAAABFgAAAAAFFgAAAAAGFgAAAAAAFgAAAAAGFgAAAAAFFgAAAAACFgAAAAAEFwAAAAAHFgAAAAAGFgAAAAAFFgAAAAAFFgAAAAAGFgAAAAAAFgAAAAACUgAAAAAAFgAAAAAEFgAAAAAAFgAAAAABFgAAAAAFUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAGFgAAAAABFgAAAAAGFgAAAAADFgAAAAABFgAAAAAAFgAAAAAEUgAAAAAAFgAAAAADFgAAAAABFgAAAAAFFgAAAAAAFgAAAAAEFgAAAAADFgAAAAAFUgAAAAAAFgAAAAAEFgAAAAACFgAAAAABFgAAAAADFgAAAAAEFgAAAAACFgAAAAABUgAAAAAAFgAAAAAEFgAAAAAAFgAAAAAGFgAAAAABFgAAAAAAFgAAAAAEFgAAAAAGUgAAAAAAFgAAAAAEFgAAAAAGFgAAAAABFgAAAAABFgAAAAADFgAAAAACFgAAAAAEUgAAAAAAFgAAAAAAFgAAAAADFgAAAAADFgAAAAADFgAAAAAAFgAAAAADFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAACFgAAAAABFgAAAAAFFgAAAAABFgAAAAABFgAAAAAAFgAAAAAEUgAAAAAAFgAAAAAEFgAAAAAFFgAAAAACFgAAAAAEFgAAAAADFgAAAAAAFgAAAAAGUgAAAAAAFgAAAAAAFgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAAFFgAAAAAGUgAAAAAAFgAAAAADFgAAAAABQgAAAAAAFgAAAAAEfAAAAAAAFgAAAAACFgAAAAAAUgAAAAAAFgAAAAAAQgAAAAAAQgAAAAAARAAAAAAAQgAAAAAAQgAAAAAAFgAAAAAEUgAAAAAAFgAAAAAAQgAAAAAAfAAAAAABRAAAAAAAeQAAAAAAFgAAAAAAFgAAAAABUgAAAAAAFgAAAAAFQgAAAAAAQgAAAAAARAAAAAAAQgAAAAAAQgAAAAAAFgAAAAAAUgAAAAAAFgAAAAAFQgAAAAAARAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAFgAAAAACUgAAAAAAFgAAAAABQgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAAGUgAAAAAAFgAAAAAFQgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAABUgAAAAAAFgAAAAABFgAAAAACQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAAGFgAAAAAEUgAAAAAAFgAAAAAEFgAAAAACQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAABFgAAAAABUgAAAAAA - version: 6 - 0,3: - ind: 0,3 - tiles: FgAAAAADFgAAAAAGFgAAAAAGFgAAAAAFFgAAAAAGFgAAAAAFFgAAAAAFUgAAAAAAFgAAAAADFgAAAAACFgAAAAAFFgAAAAAGFgAAAAAEFgAAAAAAFgAAAAAFUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 1,2: - ind: 1,2 - tiles: FgAAAAACFgAAAAAFFgAAAAADFgAAAAAEFgAAAAACFwAAAAACFwAAAAADFwAAAAAAFwAAAAAGFwAAAAAHFwAAAAAEUgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAFFgAAAAACFgAAAAAEFgAAAAAAFgAAAAAAFgAAAAADFgAAAAABUgAAAAAAFgAAAAAEFgAAAAAGFgAAAAAAFgAAAAAGFgAAAAAFFgAAAAABFgAAAAAFFgAAAAACFgAAAAAEFgAAAAACFgAAAAABFgAAAAAEFgAAAAAEFgAAAAAFFgAAAAAGUgAAAAAAFgAAAAABFgAAAAACFgAAAAAFFgAAAAAGFgAAAAAGFgAAAAAGFgAAAAADFgAAAAAAFgAAAAAGFgAAAAAEFgAAAAADFgAAAAAFFgAAAAAAFgAAAAAFFgAAAAAEUgAAAAAAFgAAAAAEFgAAAAABFgAAAAAEFgAAAAAEFgAAAAAAFgAAAAAGFgAAAAAGFgAAAAABUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAACFgAAAAACFgAAAAAAFgAAAAADFgAAAAAEFgAAAAAEFgAAAAAFUgAAAAAAFgAAAAABFgAAAAAEFgAAAAABFgAAAAAAFgAAAAAFFgAAAAACFgAAAAAAUgAAAAAAFgAAAAAGFgAAAAAEFgAAAAAEFgAAAAAGFgAAAAAEFgAAAAACFgAAAAAEUgAAAAAAFgAAAAAAFgAAAAACFgAAAAAGFgAAAAAAFgAAAAAGFgAAAAACFgAAAAADUgAAAAAAFgAAAAAGFgAAAAAFFgAAAAABFgAAAAAAFgAAAAAAFgAAAAAAFgAAAAACUgAAAAAAFgAAAAAEFgAAAAAFFgAAAAABFgAAAAAAFgAAAAAFFgAAAAACFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAEFgAAAAAFFgAAAAABFgAAAAABFgAAAAAAFgAAAAAFFgAAAAAGUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAFFgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAAFFgAAAAACUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAEQgAAAAAAQgAAAAAARAAAAAAAQgAAAAAAQgAAAAAAFgAAAAAFUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAEQgAAAAAAQgAAAAAARAAAAAAAQgAAAAAAQgAAAAAAFgAAAAAEUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAABQgAAAAAAQgAAAAAARAAAAAAAQgAAAAAAQgAAAAAAFgAAAAAEUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAABFgAAAAAEQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAAFFgAAAAADUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 1,3: - ind: 1,3 - tiles: FgAAAAAEFgAAAAACFgAAAAAFFgAAAAAGFgAAAAACFgAAAAACFgAAAAAFUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 2,0: - ind: 2,0 - tiles: FgAAAAABFgAAAAABFgAAAAACUgAAAAAAFwAAAAAAFgAAAAAFFgAAAAAFFgAAAAADFgAAAAAEFgAAAAACFgAAAAAAFgAAAAAEFgAAAAAGFgAAAAADFgAAAAADFgAAAAAGFgAAAAAGFgAAAAAFKAAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFgAAAAAFFgAAAAACFgAAAAABFgAAAAACFgAAAAAGFgAAAAAGFgAAAAAGFgAAAAAAFgAAAAABFgAAAAACFgAAAAAGFgAAAAAEKAAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFgAAAAAAFgAAAAAFFgAAAAAAFgAAAAAAFgAAAAAEFgAAAAAGFgAAAAAAFgAAAAACFgAAAAAAFgAAAAAGKAAAAAAAKAAAAAAAKAAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAACFgAAAAAFFgAAAAAAFgAAAAACFgAAAAABFgAAAAAAFgAAAAADFgAAAAAGKAAAAAAAKAAAAAAAFgAAAAAFUgAAAAAAFgAAAAADFgAAAAADFwAAAAAAFgAAAAABFgAAAAADFgAAAAACFgAAAAAEFgAAAAADFgAAAAADFgAAAAAFFgAAAAABFgAAAAAFUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAAFgAAAAAEFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAFFgAAAAABFgAAAAAGUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAGUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAFFgAAAAAFFgAAAAAEFgAAAAADFgAAAAAEFgAAAAAAFgAAAAAFUgAAAAAAFgAAAAAGFgAAAAACFgAAAAAAFgAAAAAFFgAAAAADFgAAAAAFFgAAAAAGUgAAAAAAFgAAAAABRwAAAAADRwAAAAABSAAAAAAARwAAAAADFgAAAAAFFgAAAAAFUgAAAAAAFgAAAAACFgAAAAAEFgAAAAADFgAAAAAGFgAAAAAFFgAAAAABFgAAAAAAUgAAAAAAFgAAAAABFgAAAAACSAAAAAACSAAAAAADRwAAAAADSAAAAAAAFgAAAAADUgAAAAAAFgAAAAADFgAAAAADFgAAAAADFgAAAAAFFgAAAAABFgAAAAAEFgAAAAAAUgAAAAAAFgAAAAAGRwAAAAABSAAAAAACSAAAAAAASAAAAAACRwAAAAADFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAEFgAAAAAFFgAAAAACFgAAAAAEFgAAAAACFgAAAAAGUgAAAAAA - version: 6 - 3,0: - ind: 3,0 - tiles: FgAAAAADFgAAAAACFgAAAAAEFgAAAAAEFgAAAAADFwAAAAAAFgAAAAAEUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAGFgAAAAAEFgAAAAAGFgAAAAADFgAAAAAFFgAAAAADFwAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAABFgAAAAAAFgAAAAABFgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAAFgAAAAADFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAGFgAAAAABFgAAAAAGFgAAAAAAFgAAAAAFFgAAAAADFgAAAAADUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 2,-1: - ind: 2,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAA - version: 6 - 3,-1: - ind: 3,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 3,1: - ind: 3,1 - tiles: UgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 3,2: - ind: 3,2 - tiles: UgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 2,2: - ind: 2,2 - tiles: FgAAAAAAFgAAAAAFFgAAAAAAFgAAAAADFgAAAAAFFgAAAAAGFwAAAAACFwAAAAABFgAAAAAFUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAEFgAAAAAGFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAFFgAAAAAEFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAEFgAAAAABFgAAAAADUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAAFgAAAAABFgAAAAAGFgAAAAAFFgAAAAACFgAAAAACFgAAAAAEUgAAAAAAFgAAAAAAFgAAAAAGFgAAAAAAFgAAAAADFgAAAAACFgAAAAAEFgAAAAAGUgAAAAAAFgAAAAABFgAAAAACFgAAAAAEFgAAAAACFgAAAAABFgAAAAAAFgAAAAAFUgAAAAAAFgAAAAACFgAAAAADFgAAAAAGFgAAAAADFgAAAAACFgAAAAAFFgAAAAAEUgAAAAAAFgAAAAAEFgAAAAABFgAAAAAEFgAAAAACFgAAAAACFgAAAAABFgAAAAAGUgAAAAAAFgAAAAAEFgAAAAABFgAAAAACFgAAAAADFgAAAAABFgAAAAABFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 2,1: - ind: 2,1 - tiles: FgAAAAAAFgAAAAAGFgAAAAAEFgAAAAACFgAAAAAGFgAAAAAEFgAAAAADUgAAAAAAFgAAAAACFgAAAAAEFgAAAAAAFgAAAAAGFgAAAAADFgAAAAADFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAADFgAAAAAFFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAdgAAAAAAdgAAAAABFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAdgAAAAADdgAAAAABFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAdgAAAAAAdgAAAAAAFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAADFgAAAAAAFgAAAAAGUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAFFwAAAAAHFwAAAAAGFwAAAAABFwAAAAAFFgAAAAAFFgAAAAAEFgAAAAAEFgAAAAADUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAADFwAAAAABFwAAAAAGFgAAAAAAFgAAAAACFgAAAAAEFgAAAAACFgAAAAABFwAAAAAHUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAA - version: 6 - type: MapGrid - - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - type: Gravity - - chunkCollection: - version: 2 - nodes: - - node: - color: '#FFFFFFFF' - id: Basalt1 - decals: - 1342: 6.955441,21.068565 - 1405: 5.569477,24.342073 - 1409: 21.493462,30.781818 - 1423: 16.244232,47.723083 - - node: - color: '#FFFFFFFF' - id: Basalt2 - decals: - 1408: 21.571587,25.092073 - 1411: 38.670036,30.328693 - 1412: 32.59149,34.61899 - - node: - color: '#FFFFFFFF' - id: Basalt3 - decals: - 1404: 2.0071354,12.534689 - 1413: 28.294615,35.52524 - 1419: 1.8725519,39.603367 - 1428: 40.1997,39.904606 - 1429: 37.775063,38.35773 - 1430: 27.454536,18.497276 - - node: - color: '#FFFFFFFF' - id: Basalt4 - decals: - 1407: 14.05264,26.857698 - 1420: 8.417587,42.316833 - - node: - color: '#FFFFFFFF' - id: Basalt5 - decals: - 1347: 7.0134563,30.499578 - 1403: 8.765746,13.144064 - 1414: 24.413132,39.478367 - 1421: 13.773578,47.660583 - 1426: 12.267979,34.57054 - 1427: 44.902824,38.38898 - 1431: 24.313911,21.591026 - 1432: 21.396156,20.325401 - - node: - color: '#FFFFFFFF' - id: Basalt6 - decals: - 1341: 0.908566,19.95919 - 1415: 20.816694,39.134617 - - node: - color: '#FFFFFFFF' - id: Basalt7 - decals: - 1339: 10,18 - 1416: 12.790198,39.33774 - 1422: 21.884857,42.17621 - 1433: 18.589165,18.387901 - 1434: 34.005077,18.028526 - 1435: 4.6335278,15.488716 - - node: - color: '#FFFFFFFF' - id: Basalt8 - decals: - 1340: 7.1637583,18.068565 - 1417: 8.813416,38.415867 - 1424: 0.46817493,47.80121 - 1425: 8.544811,34.586166 - - node: - color: '#FFFFFFFF' - id: Basalt9 - decals: - 1343: 13.433517,19.162315 - 1406: 0.6944771,26.826448 - 1410: 30.17049,31.359943 - 1418: 5.810052,38.259617 - - node: - cleanable: True - color: '#FFFFFFFF' - id: DirtLight - decals: - 301: 9,45 - 306: 13,42 - 308: 10,42 - 311: 13,45 - 578: 10,32 - - node: - color: '#FFFFFFFF' - id: Rock06 - decals: - 1344: 2.1520143,30.343328 - - node: - color: '#FFFFFFFF' - id: Rock07 - decals: - 1345: 10.29961,31.483953 - - node: - color: '#DE3A3A96' - id: rune6 - decals: - 1402: 8.952158,26.184813 - - node: - color: '#79150031' - id: splatter - decals: - 1348: 10.903494,45.563152 - 1349: 10.950369,45.969402 - 1350: 11.184744,45.906902 - 1351: 11.590994,45.422527 - 1352: 11.590994,45.422527 - 1353: 10.965994,45.610027 - 1354: 10.997244,44.969402 - 1355: 11.231619,45.047527 - 1356: 11.356619,45.344402 - 1357: 10.825369,45.656902 - 1358: 11.184744,45.922527 - 1359: 11.231619,45.891277 - 1360: 10.512869,45.563152 - 1361: 11.684744,44.078777 - 1362: 11.747244,43.797527 - 1363: 12.044119,43.328777 - 1364: 11.778494,43.281902 - 1365: 11.887869,43.688152 - 1366: 12.200369,43.735027 - 1367: 12.137869,44.141277 - 1368: 11.669119,43.656902 - 1369: 10.637869,43.781902 - 1370: 10.544119,43.781902 - 1371: 10.669119,43.453777 - 1372: 10.590994,43.485027 - 1373: 11.419119,45.797527 - 1374: 11.825369,45.813152 - 1375: 11.950369,46.219402 - 1376: 11.200369,45.672527 - 1377: 11.247244,45.922527 - 1378: 10.590994,46.125652 - 1379: 11.481619,45.422527 - 1380: 11.684744,45.672527 - 1381: 11.512869,45.141277 - 1382: 11.825369,45.281902 - 1383: 11.684744,45.438152 - 1384: 10.950369,45.735027 - 1385: 10.262869,45.797527 - 1386: 10.028494,44.891277 - 1387: 9.903494,44.891277 - 1388: 9.887869,45.500652 - 1389: 10.153494,45.344402 - 1390: 10.809744,45.391277 - 1391: 10.934744,45.422527 - 1392: 11.262869,45.531902 - 1393: 11.184744,46.031902 - 1394: 10.872244,45.813152 - 1395: 11.090994,45.563152 - 1396: 10.731619,46.031902 - 1397: 10.075369,44.000652 - 1398: 9.856619,43.703777 - 1399: 10.059744,44.281902 - 1400: 10.419119,43.813152 - - node: - cleanable: True - color: '#79150031' - id: splatter - decals: - 1444: 35.155014,12.447503 - 1445: 34.811264,12.353753 - 1446: 34.85814,12.744378 - 1447: 35.342514,12.463128 - 1448: 35.155014,12.228753 - 1449: 34.42064,12.572503 - 1450: 34.123764,13.025628 - 1451: 34.17064,13.322503 - 1452: 34.342514,12.900628 - 1453: 33.85814,12.994378 - 1454: 33.79564,13.338128 - 1455: 33.63939,13.838128 - 1456: 33.70189,13.603753 - 1457: 33.311264,13.900628 - 1458: 33.717514,14.306878 - 1459: 34.10814,14.650628 - 1460: 33.936264,15.135003 - 1461: 34.405014,14.947503 - 1462: 33.79564,14.510003 - 1463: 33.70189,14.088128 - 1464: 34.29564,14.541253 - 1465: 34.623764,15.010003 - 1466: 35.26439,15.072503 - 1467: 35.405014,14.931878 - 1468: 34.623764,15.338128 - 1469: 35.592514,14.994378 - 1470: 35.79564,14.447503 - 1471: 36.13939,15.025628 - 1472: 36.436264,14.181878 - 1473: 36.592514,13.869378 - 1474: 35.780014,14.697503 - 1475: 36.467514,14.072503 - 1476: 35.748764,14.588128 - 1477: 36.07689,13.963128 - 1478: 36.092514,13.291253 - 1479: 35.57689,13.103753 - 1480: 35.70189,13.088128 - 1481: 35.38939,12.478753 - 1482: 35.92064,13.260003 - 1483: 36.061264,13.666253 - 1484: 36.217514,12.822503 - 1485: 35.48314,12.650628 - 1486: 35.98314,12.353753 - 1487: 34.842514,12.744378 - 1488: 34.23314,12.853753 - 1489: 34.04564,13.447503 - 1490: 33.51439,13.650628 - - node: - cleanable: True - color: '#DE3A3A28' - id: splatter - decals: - 1436: 34.151947,12.931878 - 1437: 33.542572,13.775628 - 1438: 34.089447,14.588128 - 1439: 34.886322,15.025628 - 1440: 35.714447,14.681878 - 1441: 36.214447,14.119378 - 1442: 35.933197,13.228753 - 1443: 35.026947,12.447503 - type: DecalGrid - - type: RadiationGridResistance - - type: LoadedMap - - type: SpreaderGrid - - type: GridTree - - type: MovedGrids - - type: GridPathfinding -- proto: AirCanister - entities: - - uid: 302 - components: - - pos: 20.5,38.5 - parent: 1653 - type: Transform -- proto: AirlockMining - entities: - - uid: 149 - components: - - pos: 11.5,43.5 - parent: 1653 - type: Transform -- proto: AirlockMiningGlassLocked - entities: - - uid: 492 - components: - - pos: 19.5,43.5 - parent: 1653 - type: Transform -- proto: AirlockMiningLocked - entities: - - uid: 454 - components: - - pos: 3.5,43.5 - parent: 1653 - type: Transform -- proto: AltarFangs - entities: - - uid: 12 - components: - - pos: 35.5,14.5 - parent: 1653 - type: Transform -- proto: BananiumOre1 - entities: - - uid: 147 - components: - - pos: 25.454952,10.460608 - parent: 1653 - type: Transform - - uid: 436 - components: - - flags: InContainer - type: MetaData - - parent: 435 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage -- proto: Barricade - entities: - - uid: 61 - components: - - pos: 14.5,12.5 - parent: 1653 - type: Transform - - uid: 304 - components: - - pos: 6.5,18.5 - parent: 1653 - type: Transform - - uid: 369 - components: - - pos: 51.5,0.5 - parent: 1653 - type: Transform -- proto: BikeHorn - entities: - - uid: 201 - components: - - flags: InContainer - type: MetaData - - parent: 200 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage -- proto: Bucket - entities: - - uid: 220 - components: - - pos: 28.080187,14.004396 - parent: 1653 - type: Transform -- proto: CandleRedSmallInfinite - entities: - - uid: 121 - components: - - pos: 10.514658,25.137938 - parent: 1653 - type: Transform - - uid: 123 - components: - - pos: 10.655283,25.247313 - parent: 1653 - type: Transform - - uid: 126 - components: - - rot: -6.283185307179586 rad - pos: 9.436043,27.291958 - parent: 1653 - type: Transform - - uid: 181 - components: - - pos: 9.83762,26.231688 - parent: 1653 - type: Transform - - uid: 182 - components: - - pos: 9.009495,26.278563 - parent: 1653 - type: Transform - - uid: 211 - components: - - pos: 10.467783,25.325438 - parent: 1653 - type: Transform - - uid: 212 - components: - - rot: -6.283185307179586 rad - pos: 9.976189,27.010708 - parent: 1653 - type: Transform - - uid: 213 - components: - - pos: 8.86887,27.028563 - parent: 1653 - type: Transform -- proto: Chainsaw - entities: - - uid: 396 - components: - - pos: 12.278494,46.219402 - parent: 1653 - type: Transform -- proto: Chair - entities: - - uid: 399 - components: - - rot: 3.141592653589793 rad - pos: 19.5,34.5 - parent: 1653 - type: Transform -- proto: ChairPilotSeat - entities: - - uid: 8 - components: - - rot: 1.5707963267948966 rad - pos: 2.5,44.5 - parent: 1653 - type: Transform - - uid: 466 - components: - - rot: -1.5707963267948966 rad - pos: 4.5,44.5 - parent: 1653 - type: Transform -- proto: ChairRitual - entities: - - uid: 127 - components: - - pos: 9.5,28.5 - parent: 1653 - type: Transform -- proto: CigaretteCapsaicinOil - entities: - - uid: 322 - components: - - pos: 31.649122,18.823664 - parent: 1653 - type: Transform -- proto: CigaretteSyndicate - entities: - - uid: 439 - components: - - flags: InContainer - type: MetaData - - parent: 438 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage -- proto: ClothingBackpackDuffelCargo - entities: - - uid: 288 - components: - - pos: 17.527935,7.630492 - parent: 1653 - type: Transform -- proto: ClothingHeadHatFlowerCrown - entities: - - uid: 233 - components: - - pos: 27.441708,39.437607 - parent: 1653 - type: Transform -- proto: ClothingHeadHatGladiator - entities: - - uid: 7 - components: - - flags: InContainer - type: MetaData - - parent: 6 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage -- proto: ClothingNeckCloakTrans - entities: - - uid: 332 - components: - - flags: InContainer - type: MetaData - - parent: 331 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage -- proto: ClothingOuterHardsuitSalvage - entities: - - uid: 432 - components: - - pos: 4.447749,45.58406 - parent: 1653 - type: Transform -- proto: ClothingShoesClown - entities: - - uid: 202 - components: - - flags: InContainer - type: MetaData - - parent: 200 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage -- proto: ClothingUniformJumpsuitGladiator - entities: - - uid: 215 - components: - - flags: InContainer - type: MetaData - - parent: 214 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage -- proto: ClothingUniformJumpsuitMonasticRobeDark - entities: - - uid: 40 - components: - - pos: 36.46349,13.791253 - parent: 1653 - type: Transform - - uid: 99 - components: - - pos: 36.27599,15.338128 - parent: 1653 - type: Transform - - uid: 216 - components: - - pos: 35.46349,15.619378 - parent: 1653 - type: Transform - - uid: 272 - components: - - pos: 34.05724,14.385003 - parent: 1653 - type: Transform - - uid: 273 - components: - - pos: 34.58849,15.213128 - parent: 1653 - type: Transform - - uid: 357 - components: - - pos: 35.58849,13.213128 - parent: 1653 - type: Transform - - uid: 358 - components: - - pos: 34.697865,13.588128 - parent: 1653 - type: Transform - - uid: 443 - components: - - pos: 36.80724,14.744378 - parent: 1653 - type: Transform -- proto: Cobweb1 - entities: - - uid: 190 - components: - - pos: 24.5,10.5 - parent: 1653 - type: Transform - - uid: 289 - components: - - pos: 0.5,10.5 - parent: 1653 - type: Transform - - uid: 290 - components: - - pos: 32.5,16.5 - parent: 1653 - type: Transform - - uid: 384 - components: - - pos: 0.5,36.5 - parent: 1653 - type: Transform - - uid: 385 - components: - - pos: 28.5,32.5 - parent: 1653 - type: Transform - - uid: 393 - components: - - pos: 12.5,22.5 - parent: 1653 - type: Transform - - uid: 418 - components: - - pos: 0.5,40.5 - parent: 1653 - type: Transform - - uid: 458 - components: - - pos: 2.5,46.5 - parent: 1653 - type: Transform -- proto: Cobweb2 - entities: - - uid: 137 - components: - - pos: 33.5,9.5 - parent: 1653 - type: Transform - - uid: 252 - components: - - pos: 26.5,32.5 - parent: 1653 - type: Transform - - uid: 291 - components: - - pos: 34.5,3.5 - parent: 1653 - type: Transform - - uid: 314 - components: - - pos: 22.5,10.5 - parent: 1653 - type: Transform - - uid: 341 - components: - - pos: 20.5,46.5 - parent: 1653 - type: Transform - - uid: 382 - components: - - pos: 14.5,40.5 - parent: 1653 - type: Transform - - uid: 383 - components: - - pos: 32.5,20.5 - parent: 1653 - type: Transform - - uid: 417 - components: - - pos: 24.5,2.5 - parent: 1653 - type: Transform -- proto: ComfyChair - entities: - - uid: 381 - components: - - pos: 13.5,27.5 - parent: 1653 - type: Transform -- proto: ConveyorBelt - entities: - - uid: 101 - components: - - rot: -1.5707963267948966 rad - pos: 27.5,10.5 - parent: 1653 - type: Transform - - uid: 102 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,10.5 - parent: 1653 - type: Transform - - uid: 103 - components: - - rot: -1.5707963267948966 rad - pos: 25.5,10.5 - parent: 1653 - type: Transform - - uid: 104 - components: - - rot: -1.5707963267948966 rad - pos: 29.5,10.5 - parent: 1653 - type: Transform - - uid: 105 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,10.5 - parent: 1653 - type: Transform - - uid: 106 - components: - - rot: -1.5707963267948966 rad - pos: 26.5,10.5 - parent: 1653 - type: Transform -- proto: CrateCoffin - entities: - - uid: 331 - components: - - pos: 16.5,32.5 - parent: 1653 - type: Transform - - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 332 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - type: ContainerContainer - - uid: 435 - components: - - pos: 22.5,32.5 - parent: 1653 - type: Transform - - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 436 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - type: ContainerContainer - - uid: 438 - components: - - pos: 23.5,32.5 - parent: 1653 - type: Transform - - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 439 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - type: ContainerContainer - - uid: 441 - components: - - pos: 20.5,30.5 - parent: 1653 - type: Transform - - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 442 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - type: ContainerContainer -- proto: CrateEmergencyRadiation - entities: - - uid: 364 - components: - - pos: 15.5,36.5 - parent: 1653 - type: Transform -- proto: CrateEmptySpawner - entities: - - uid: 128 - components: - - pos: 4.5,40.5 - parent: 1653 - type: Transform -- proto: CrateFilledSpawner - entities: - - uid: 111 - components: - - pos: 8.5,2.5 - parent: 1653 - type: Transform - - uid: 367 - components: - - pos: 18.5,46.5 - parent: 1653 - type: Transform - - uid: 411 - components: - - pos: 13.5,36.5 - parent: 1653 - type: Transform - - uid: 490 - components: - - pos: 28.5,8.5 - parent: 1653 - type: Transform -- proto: CrateNPCPenguin - entities: - - uid: 474 - components: - - pos: 13.5,25.5 - parent: 1653 - type: Transform -- proto: CrateWoodenGrave - entities: - - uid: 6 - components: - - pos: 27.5,39.5 - parent: 1653 - type: Transform - - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 7 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - type: ContainerContainer - - uid: 200 - components: - - pos: 42.5,39.5 - parent: 1653 - type: Transform - - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 202 - - 201 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - type: ContainerContainer - - uid: 214 - components: - - pos: 28.5,39.5 - parent: 1653 - type: Transform - - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 215 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - type: ContainerContainer - - uid: 231 - components: - - pos: 26.5,39.5 - parent: 1653 - type: Transform - - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 232 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - type: ContainerContainer -- proto: CrystalSpawner - entities: - - uid: 129 - components: - - pos: 27.5,35.5 - parent: 1653 - type: Transform - - uid: 131 - components: - - pos: 29.5,34.5 - parent: 1653 - type: Transform - - uid: 132 - components: - - pos: 30.5,35.5 - parent: 1653 - type: Transform - - uid: 172 - components: - - pos: 19.5,21.5 - parent: 1653 - type: Transform - - uid: 178 - components: - - pos: 20.5,20.5 - parent: 1653 - type: Transform - - uid: 298 - components: - - pos: 13.5,38.5 - parent: 1653 - type: Transform - - uid: 300 - components: - - pos: 9.5,40.5 - parent: 1653 - type: Transform - - uid: 301 - components: - - pos: 30.5,36.5 - parent: 1653 - type: Transform - - uid: 308 - components: - - pos: 31.5,36.5 - parent: 1653 - type: Transform -- proto: DoubleEmergencyNitrogenTankFilled - entities: - - uid: 309 - components: - - pos: 21.254128,38.485172 - parent: 1653 - type: Transform -- proto: DresserFilled - entities: - - uid: 413 - components: - - pos: 20.5,44.5 - parent: 1653 - type: Transform -- proto: FenceMetalCorner - entities: - - uid: 321 - components: - - rot: 1.5707963267948966 rad - pos: 20.5,35.5 - parent: 1653 - type: Transform - - uid: 477 - components: - - rot: -1.5707963267948966 rad - pos: 14.5,35.5 - parent: 1653 - type: Transform -- proto: FenceMetalGate - entities: - - uid: 268 - components: - - rot: 3.141592653589793 rad - pos: 17.5,35.5 - parent: 1653 - type: Transform -- proto: FenceMetalStraight - entities: - - uid: 267 - components: - - rot: 1.5707963267948966 rad - pos: 19.5,35.5 - parent: 1653 - type: Transform - - uid: 293 - components: - - pos: 14.5,36.5 - parent: 1653 - type: Transform - - uid: 476 - components: - - rot: 1.5707963267948966 rad - pos: 15.5,35.5 - parent: 1653 - type: Transform - - uid: 478 - components: - - rot: 1.5707963267948966 rad - pos: 16.5,35.5 - parent: 1653 - type: Transform - - uid: 479 - components: - - pos: 20.5,34.5 - parent: 1653 - type: Transform - - uid: 480 - components: - - rot: 1.5707963267948966 rad - pos: 18.5,35.5 - parent: 1653 - type: Transform -- proto: FlashlightLantern - entities: - - uid: 372 - components: - - pos: 16.286905,3.5055985 - parent: 1653 - type: Transform -- proto: FloorChasmEntity - entities: - - uid: 3 - components: - - pos: 5.5,0.5 - parent: 1653 - type: Transform - - uid: 4 - components: - - pos: 6.5,4.5 - parent: 1653 - type: Transform - - uid: 5 - components: - - pos: 6.5,3.5 - parent: 1653 - type: Transform - - uid: 17 - components: - - pos: 9.5,4.5 - parent: 1653 - type: Transform - - uid: 18 - components: - - pos: 4.5,4.5 - parent: 1653 - type: Transform - - uid: 19 - components: - - pos: 41.5,1.5 - parent: 1653 - type: Transform - - uid: 20 - components: - - pos: 44.5,1.5 - parent: 1653 - type: Transform - - uid: 21 - components: - - pos: 45.5,1.5 - parent: 1653 - type: Transform - - uid: 22 - components: - - pos: 44.5,0.5 - parent: 1653 - type: Transform - - uid: 23 - components: - - pos: 45.5,0.5 - parent: 1653 - type: Transform - - uid: 24 - components: - - pos: 47.5,0.5 - parent: 1653 - type: Transform - - uid: 25 - components: - - pos: 48.5,0.5 - parent: 1653 - type: Transform - - uid: 76 - components: - - pos: 15.5,4.5 - parent: 1653 - type: Transform - - uid: 77 - components: - - pos: 14.5,0.5 - parent: 1653 - type: Transform - - uid: 78 - components: - - pos: 14.5,1.5 - parent: 1653 - type: Transform - - uid: 82 - components: - - pos: 12.5,1.5 - parent: 1653 - type: Transform - - uid: 83 - components: - - pos: 13.5,4.5 - parent: 1653 - type: Transform - - uid: 84 - components: - - pos: 12.5,0.5 - parent: 1653 - type: Transform - - uid: 85 - components: - - pos: 13.5,0.5 - parent: 1653 - type: Transform - - uid: 86 - components: - - pos: 13.5,1.5 - parent: 1653 - type: Transform - - uid: 87 - components: - - pos: 46.5,1.5 - parent: 1653 - type: Transform - - uid: 88 - components: - - pos: 46.5,0.5 - parent: 1653 - type: Transform - - uid: 97 - components: - - pos: 14.5,4.5 - parent: 1653 - type: Transform - - uid: 112 - components: - - pos: 7.5,0.5 - parent: 1653 - type: Transform - - uid: 114 - components: - - pos: 10.5,0.5 - parent: 1653 - type: Transform - - uid: 115 - components: - - pos: 10.5,1.5 - parent: 1653 - type: Transform - - uid: 116 - components: - - pos: 11.5,4.5 - parent: 1653 - type: Transform - - uid: 118 - components: - - pos: 11.5,3.5 - parent: 1653 - type: Transform - - uid: 119 - components: - - pos: 11.5,0.5 - parent: 1653 - type: Transform - - uid: 120 - components: - - pos: 11.5,1.5 - parent: 1653 - type: Transform - - uid: 235 - components: - - pos: 49.5,0.5 - parent: 1653 - type: Transform - - uid: 241 - components: - - pos: 3.5,4.5 - parent: 1653 - type: Transform - - uid: 242 - components: - - pos: 2.5,0.5 - parent: 1653 - type: Transform - - uid: 245 - components: - - pos: 10.5,3.5 - parent: 1653 - type: Transform - - uid: 250 - components: - - pos: 4.5,3.5 - parent: 1653 - type: Transform - - uid: 258 - components: - - pos: 3.5,0.5 - parent: 1653 - type: Transform - - uid: 278 - components: - - pos: 40.5,2.5 - parent: 1653 - type: Transform - - uid: 315 - components: - - pos: 1.5,4.5 - parent: 1653 - type: Transform - - uid: 317 - components: - - pos: 5.5,3.5 - parent: 1653 - type: Transform - - uid: 337 - components: - - pos: 4.5,0.5 - parent: 1653 - type: Transform - - uid: 340 - components: - - pos: 42.5,2.5 - parent: 1653 - type: Transform - - uid: 350 - components: - - pos: 42.5,1.5 - parent: 1653 - type: Transform - - uid: 354 - components: - - pos: 12.5,3.5 - parent: 1653 - type: Transform - - uid: 359 - components: - - pos: 15.5,1.5 - parent: 1653 - type: Transform - - uid: 360 - components: - - pos: 15.5,0.5 - parent: 1653 - type: Transform - - uid: 363 - components: - - pos: 12.5,4.5 - parent: 1653 - type: Transform - - uid: 368 - components: - - pos: 43.5,2.5 - parent: 1653 - type: Transform - - uid: 377 - components: - - pos: 7.5,4.5 - parent: 1653 - type: Transform - - uid: 378 - components: - - pos: 6.5,1.5 - parent: 1653 - type: Transform - - uid: 387 - components: - - pos: 43.5,1.5 - parent: 1653 - type: Transform - - uid: 398 - components: - - pos: 41.5,2.5 - parent: 1653 - type: Transform - - uid: 401 - components: - - pos: 5.5,1.5 - parent: 1653 - type: Transform - - uid: 404 - components: - - pos: 5.5,4.5 - parent: 1653 - type: Transform - - uid: 452 - components: - - pos: 2.5,4.5 - parent: 1653 - type: Transform - - uid: 453 - components: - - pos: 1.5,0.5 - parent: 1653 - type: Transform - - uid: 459 - components: - - pos: 44.5,2.5 - parent: 1653 - type: Transform - - uid: 468 - components: - - pos: 3.5,3.5 - parent: 1653 - type: Transform - - uid: 471 - components: - - pos: 6.5,0.5 - parent: 1653 - type: Transform - - uid: 472 - components: - - pos: 10.5,4.5 - parent: 1653 - type: Transform - - uid: 473 - components: - - pos: 9.5,0.5 - parent: 1653 - type: Transform -- proto: FloorWaterEntity - entities: - - uid: 13 - components: - - pos: 27.5,14.5 - parent: 1653 - type: Transform - - uid: 14 - components: - - pos: 29.5,14.5 - parent: 1653 - type: Transform - - uid: 15 - components: - - pos: 28.5,15.5 - parent: 1653 - type: Transform - - uid: 43 - components: - - pos: 26.5,16.5 - parent: 1653 - type: Transform - - uid: 45 - components: - - pos: 30.5,13.5 - parent: 1653 - type: Transform - - uid: 46 - components: - - pos: 29.5,13.5 - parent: 1653 - type: Transform - - uid: 47 - components: - - pos: 28.5,12.5 - parent: 1653 - type: Transform - - uid: 49 - components: - - pos: 27.5,16.5 - parent: 1653 - type: Transform - - uid: 65 - components: - - pos: 29.5,12.5 - parent: 1653 - type: Transform - - uid: 72 - components: - - pos: 25.5,13.5 - parent: 1653 - type: Transform - - uid: 93 - components: - - pos: 24.5,15.5 - parent: 1653 - type: Transform - - uid: 100 - components: - - pos: 27.5,12.5 - parent: 1653 - type: Transform - - uid: 221 - components: - - pos: 26.5,13.5 - parent: 1653 - type: Transform - - uid: 222 - components: - - pos: 26.5,14.5 - parent: 1653 - type: Transform - - uid: 223 - components: - - pos: 26.5,15.5 - parent: 1653 - type: Transform - - uid: 224 - components: - - pos: 27.5,13.5 - parent: 1653 - type: Transform - - uid: 444 - components: - - pos: 28.5,14.5 - parent: 1653 - type: Transform - - uid: 445 - components: - - pos: 27.5,15.5 - parent: 1653 - type: Transform - - uid: 446 - components: - - pos: 28.5,13.5 - parent: 1653 - type: Transform - - uid: 447 - components: - - pos: 25.5,15.5 - parent: 1653 - type: Transform - - uid: 448 - components: - - pos: 25.5,14.5 - parent: 1653 - type: Transform -- proto: FloraRockSolid01 - entities: - - uid: 63 - components: - - pos: 1.4643247,15.527116 - parent: 1653 - type: Transform - - uid: 230 - components: - - pos: 25.553497,34.710487 - parent: 1653 - type: Transform - - uid: 281 - components: - - pos: 7.4866443,6.552367 - parent: 1653 - type: Transform - - uid: 295 - components: - - pos: 0.911531,32.452705 - parent: 1653 - type: Transform - - uid: 303 - components: - - pos: 21.638557,19.381065 - parent: 1653 - type: Transform - - uid: 374 - components: - - pos: 3.5664039,19.498943 - parent: 1653 - type: Transform -- proto: FloraRockSolid02 - entities: - - uid: 64 - components: - - pos: 11.966135,14.804356 - parent: 1653 - type: Transform - - uid: 171 - components: - - pos: 8.535091,20.608318 - parent: 1653 - type: Transform - - uid: 306 - components: - - pos: 12.087021,32.358955 - parent: 1653 - type: Transform -- proto: FloraRockSolid03 - entities: - - uid: 90 - components: - - pos: 23.53006,1.5159609 - parent: 1653 - type: Transform - - uid: 170 - components: - - pos: 1.9101539,21.811443 - parent: 1653 - type: Transform - - uid: 199 - components: - - pos: 44.689724,39.621048 - parent: 1653 - type: Transform - - uid: 243 - components: - - pos: 21.468937,26.614876 - parent: 1653 - type: Transform - - uid: 296 - components: - - pos: 9.355139,30.733953 - parent: 1653 - type: Transform - - uid: 330 - components: - - pos: 35.552525,31.574036 - parent: 1653 - type: Transform - - uid: 361 - components: - - pos: 5.433075,13.527116 - parent: 1653 - type: Transform - - uid: 375 - components: - - pos: 1.5647693,8.536742 - parent: 1653 - type: Transform -- proto: FoodBoxDonkpocketPizza - entities: - - uid: 209 - components: - - pos: 0.9877088,26.184813 - parent: 1653 - type: Transform -- proto: FoodCornTrash - entities: - - uid: 2 - components: - - pos: 26.81556,20.415936 - parent: 1653 - type: Transform - - uid: 109 - components: - - pos: 27.367641,20.311768 - parent: 1653 - type: Transform - - uid: 113 - components: - - pos: 27.388475,19.988852 - parent: 1653 - type: Transform - - uid: 249 - components: - - pos: 27.638475,20.843018 - parent: 1653 - type: Transform - - uid: 254 - components: - - pos: 28.055141,20.301352 - parent: 1653 - type: Transform - - uid: 319 - components: - - pos: 27.482225,20.530518 - parent: 1653 - type: Transform - - uid: 391 - components: - - pos: 26.930141,20.728436 - parent: 1653 - type: Transform - - uid: 475 - components: - - pos: 27.84681,20.634686 - parent: 1653 - type: Transform -- proto: FoodMeatHuman - entities: - - uid: 186 - components: - - pos: 34.42388,40.652298 - parent: 1653 - type: Transform - - uid: 187 - components: - - pos: 34.64263,40.511673 - parent: 1653 - type: Transform -- proto: FoodMeatLizardtailKebab - entities: - - uid: 42 - components: - - pos: 38.036457,12.588582 - parent: 1653 - type: Transform -- proto: FoodMeatRouny - entities: - - uid: 183 - components: - - pos: 36.45513,40.589798 - parent: 1653 - type: Transform -- proto: FoodSnackPopcorn - entities: - - uid: 74 - components: - - pos: 25.648891,21.040936 - parent: 1653 - type: Transform - - uid: 79 - components: - - pos: 25.763475,21.645102 - parent: 1653 - type: Transform - - uid: 81 - components: - - pos: 25.461391,21.207602 - parent: 1653 - type: Transform - - uid: 117 - components: - - pos: 25.857225,21.207602 - parent: 1653 - type: Transform - - uid: 240 - components: - - pos: 25.97181,21.030518 - parent: 1653 - type: Transform -- proto: FoodTinPeachesMaintOpen - entities: - - uid: 208 - components: - - pos: 2.343669,28.087896 - parent: 1653 - type: Transform -- proto: GeigerCounter - entities: - - uid: 228 - components: - - rot: -1.5707963267948966 rad - pos: 2.536777,44.354866 - parent: 1653 - type: Transform -- proto: Girder - entities: - - uid: 351 - components: - - rot: 1.5707963267948966 rad - pos: 13.5,45.5 - parent: 1653 - type: Transform -- proto: GlowstickRed - entities: - - uid: 256 - components: - - pos: 12.648991,38.39441 - parent: 1653 - type: Transform - - uid: 264 - components: - - pos: 22.50236,34.545544 - parent: 1653 - type: Transform - - uid: 271 - components: - - pos: 4.5084944,44.49994 - parent: 1653 - type: Transform - - uid: 294 - components: - - pos: 10.820133,30.586414 - parent: 1653 - type: Transform - - uid: 316 - components: - - pos: 26.3416,18.72954 - parent: 1653 - type: Transform - - uid: 414 - components: - - pos: 1.8548665,32.055164 - parent: 1653 - type: Transform - - uid: 420 - components: - - pos: 22.799234,34.62367 - parent: 1653 - type: Transform - - uid: 421 - components: - - pos: 22.299234,34.608044 - parent: 1653 - type: Transform -- proto: GoldOre1 - entities: - - uid: 134 - components: - - pos: 8.948225,24.854458 - parent: 1653 - type: Transform - - uid: 138 - components: - - pos: 26.486202,10.538733 - parent: 1653 - type: Transform - - uid: 139 - components: - - pos: 26.486202,10.538733 - parent: 1653 - type: Transform - - uid: 144 - components: - - pos: 26.486202,10.538733 - parent: 1653 - type: Transform - - uid: 145 - components: - - pos: 26.486202,10.538733 - parent: 1653 - type: Transform - - uid: 191 - components: - - pos: 26.486202,10.538733 - parent: 1653 - type: Transform - - uid: 266 - components: - - pos: 9.448225,25.291958 - parent: 1653 - type: Transform - - uid: 328 - components: - - pos: 8.541975,25.885708 - parent: 1653 - type: Transform - - uid: 379 - components: - - pos: 10.026349,24.557583 - parent: 1653 - type: Transform -- proto: hydroponicsSoil - entities: - - uid: 1 - components: - - pos: 25.5,20.5 - parent: 1653 - type: Transform - - uid: 390 - components: - - pos: 27.5,21.5 - parent: 1653 - type: Transform - - uid: 423 - components: - - pos: 25.5,19.5 - parent: 1653 - type: Transform -- proto: ImprovisedExplosiveFuel - entities: - - uid: 203 - components: - - pos: 36.443645,31.673359 - parent: 1653 - type: Transform -- proto: IngotGold1 - entities: - - uid: 312 - components: - - pos: 10.073225,25.588833 - parent: 1653 - type: Transform - - uid: 313 - components: - - pos: 10.4951,24.791958 - parent: 1653 - type: Transform - - uid: 426 - components: - - pos: 8.385725,25.104458 - parent: 1653 - type: Transform - - uid: 449 - components: - - pos: 10.698225,26.120083 - parent: 1653 - type: Transform - - uid: 460 - components: - - pos: 9.120099,24.323208 - parent: 1653 - type: Transform -- proto: IngotSilver - entities: - - uid: 262 - components: - - pos: 20.52197,46.638992 - parent: 1653 - type: Transform -- proto: KitchenElectricGrill - entities: - - uid: 205 - components: - - pos: 35.5,40.5 - parent: 1653 - type: Transform -- proto: KitchenMicrowave - entities: - - uid: 244 - components: - - pos: 26.5,21.5 - parent: 1653 - type: Transform -- proto: KukriKnife - entities: - - uid: 130 - components: - - pos: 2.508058,45.496773 - parent: 1653 - type: Transform -- proto: LampGold - entities: - - uid: 380 - components: - - pos: 13.291822,27.041958 - parent: 1653 - type: Transform -- proto: Lantern - entities: - - uid: 28 - components: - - pos: 24.446167,4.4534607 - parent: 1653 - type: Transform - - uid: 29 - components: - - pos: 33.45849,0.51596093 - parent: 1653 - type: Transform - - uid: 89 - components: - - pos: 18.58248,0.51596093 - parent: 1653 - type: Transform - - uid: 180 - components: - - pos: 20.497932,21.77169 - parent: 1653 - type: Transform -- proto: MaintenancePlantSpawner - entities: - - uid: 67 - components: - - pos: 21.5,16.5 - parent: 1653 - type: Transform - - uid: 70 - components: - - pos: 17.5,15.5 - parent: 1653 - type: Transform - - uid: 73 - components: - - pos: 21.5,14.5 - parent: 1653 - type: Transform - - uid: 217 - components: - - pos: 22.5,12.5 - parent: 1653 - type: Transform - - uid: 218 - components: - - pos: 16.5,13.5 - parent: 1653 - type: Transform -- proto: MaintenanceToolSpawner - entities: - - uid: 57 - components: - - pos: 39.5,0.5 - parent: 1653 - type: Transform - - uid: 96 - components: - - pos: 51.5,1.5 - parent: 1653 - type: Transform - - uid: 416 - components: - - pos: 7.5,32.5 - parent: 1653 - type: Transform -- proto: MaintenanceWeaponSpawner - entities: - - uid: 31 - components: - - pos: 22.5,0.5 - parent: 1653 - type: Transform - - uid: 32 - components: - - pos: 1.5,3.5 - parent: 1653 - type: Transform - - uid: 51 - components: - - pos: 52.5,0.5 - parent: 1653 - type: Transform - - uid: 292 - components: - - pos: 34.5,31.5 - parent: 1653 - type: Transform -- proto: MaterialWoodPlank - entities: - - uid: 442 - components: - - flags: InContainer - type: MetaData - - parent: 441 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage -- proto: MedkitOxygenFilled - entities: - - uid: 225 - components: - - pos: 17.973127,40.40886 - parent: 1653 - type: Transform -- proto: MiningWindow - entities: - - uid: 155 - components: - - pos: 19.5,47.5 - parent: 1653 - type: Transform - - uid: 162 - components: - - pos: 3.5,47.5 - parent: 1653 - type: Transform - - uid: 248 - components: - - pos: 11.5,47.5 - parent: 1653 - type: Transform -- proto: OreBox - entities: - - uid: 184 - components: - - pos: 2.5,24.5 - parent: 1653 - type: Transform - - uid: 270 - components: - - pos: 37.5,4.5 - parent: 1653 - type: Transform - - uid: 283 - components: - - pos: 17.5,8.5 - parent: 1653 - type: Transform - - uid: 488 - components: - - pos: 29.5,8.5 - parent: 1653 - type: Transform -- proto: OreProcessor - entities: - - uid: 269 - components: - - pos: 24.5,10.5 - parent: 1653 - type: Transform - - uid: 320 - components: - - pos: 3.5,46.5 - parent: 1653 - type: Transform -- proto: OrganHumanAppendix - entities: - - uid: 148 - components: - - pos: 10.481619,44.360027 - parent: 1653 - type: Transform -- proto: OrganHumanHeart - entities: - - uid: 206 - components: - - pos: 9.478245,26.669188 - parent: 1653 - type: Transform -- proto: PaintingSadClown - entities: - - uid: 122 - components: - - pos: 43.5,39.5 - parent: 1653 - type: Transform -- proto: PaintingSkeletonCigarette - entities: - - uid: 362 - components: - - pos: 32.5,21.5 - parent: 1653 - type: Transform -- proto: Pickaxe - entities: - - uid: 158 - components: - - pos: 21.525682,34.54406 - parent: 1653 - type: Transform - - uid: 179 - components: - - pos: 21.743324,22.05294 - parent: 1653 - type: Transform -- proto: PlasmaOre1 - entities: - - uid: 469 - components: - - pos: 30.486202,10.491858 - parent: 1653 - type: Transform - - uid: 482 - components: - - pos: 30.486202,10.491858 - parent: 1653 - type: Transform - - uid: 483 - components: - - pos: 30.486202,10.491858 - parent: 1653 - type: Transform - - uid: 485 - components: - - pos: 30.486202,10.491858 - parent: 1653 - type: Transform - - uid: 489 - components: - - pos: 30.486202,10.491858 - parent: 1653 - type: Transform -- proto: PlushieLizard - entities: - - uid: 41 - components: - - pos: 35.503193,14.666253 - parent: 1653 - type: Transform -- proto: PlushiePenguin - entities: - - uid: 415 - components: - - pos: 13.526197,27.541958 - parent: 1653 - type: Transform -- proto: PortableGeneratorJrPacman - entities: - - uid: 392 - components: - - pos: 37.5,31.5 - parent: 1653 - type: Transform -- proto: PottedPlantRandom - entities: - - uid: 44 - components: - - pos: 44.5,14.5 - parent: 1653 - type: Transform - - uid: 50 - components: - - pos: 45.5,14.5 - parent: 1653 - type: Transform - - uid: 94 - components: - - pos: 42.5,14.5 - parent: 1653 - type: Transform - - uid: 347 - components: - - pos: 41.5,14.5 - parent: 1653 - type: Transform -- proto: PowerCellHyperPrinted - entities: - - uid: 52 - components: - - pos: 31.760115,2.7803574 - parent: 1653 - type: Transform -- proto: PoweredSmallLight - entities: - - uid: 156 - components: - - rot: 1.5707963267948966 rad - pos: 10.5,45.5 - parent: 1653 - type: Transform -- proto: PuddleVomit - entities: - - uid: 229 - components: - - pos: 3.5,45.5 - parent: 1653 - type: Transform -- proto: Rack - entities: - - uid: 276 - components: - - pos: 18.5,45.5 - parent: 1653 - type: Transform - - uid: 334 - components: - - pos: 20.5,45.5 - parent: 1653 - type: Transform - - uid: 335 - components: - - pos: 20.5,46.5 - parent: 1653 - type: Transform - - uid: 352 - components: - - pos: 21.5,34.5 - parent: 1653 - type: Transform - - uid: 365 - components: - - pos: 10.5,46.5 - parent: 1653 - type: Transform - - uid: 403 - components: - - pos: 4.5,45.5 - parent: 1653 - type: Transform - - uid: 410 - components: - - pos: 22.5,34.5 - parent: 1653 - type: Transform -- proto: Railing - entities: - - uid: 260 - components: - - rot: 3.141592653589793 rad - pos: 27.5,9.5 - parent: 1653 - type: Transform - - uid: 261 - components: - - rot: 3.141592653589793 rad - pos: 28.5,9.5 - parent: 1653 - type: Transform - - uid: 277 - components: - - rot: 3.141592653589793 rad - pos: 26.5,9.5 - parent: 1653 - type: Transform - - uid: 327 - components: - - rot: 3.141592653589793 rad - pos: 30.5,9.5 - parent: 1653 - type: Transform - - uid: 376 - components: - - rot: 3.141592653589793 rad - pos: 25.5,9.5 - parent: 1653 - type: Transform - - uid: 467 - components: - - rot: 3.141592653589793 rad - pos: 29.5,9.5 - parent: 1653 - type: Transform -- proto: RailingCornerSmall - entities: - - uid: 371 - components: - - pos: 31.5,9.5 - parent: 1653 - type: Transform -- proto: RandomArtifactSpawner - entities: - - uid: 48 - components: - - pos: 43.5,14.5 - parent: 1653 - type: Transform -- proto: RandomCargoCorpseSpawner - entities: - - uid: 274 - components: - - pos: 11.5,46.5 - parent: 1653 - type: Transform -- proto: RandomServiceCorpseSpawner - entities: - - uid: 400 - components: - - pos: 19.5,45.5 - parent: 1653 - type: Transform -- proto: SalvageMaterialCrateSpawner - entities: - - uid: 481 - components: - - pos: 27.5,8.5 - parent: 1653 - type: Transform - - uid: 491 - components: - - pos: 30.5,8.5 - parent: 1653 - type: Transform -- proto: ShadowTree03 - entities: - - uid: 68 - components: - - pos: 19.477606,14.337568 - parent: 1653 - type: Transform -- proto: SheetSteel1 - entities: - - uid: 457 - components: - - pos: 13.481619,44.391277 - parent: 1653 - type: Transform -- proto: ShellShotgunIncendiary - entities: - - uid: 405 - components: - - pos: 18.58831,45.763992 - parent: 1653 - type: Transform -- proto: ShellShotgunSlug - entities: - - uid: 339 - components: - - pos: 18.603935,45.404617 - parent: 1653 - type: Transform -- proto: Shovel - entities: - - uid: 30 - components: - - pos: 33.425346,4.383849 - parent: 1653 - type: Transform - - uid: 394 - components: - - pos: 31.844257,31.05841 - parent: 1653 - type: Transform -- proto: SignNTMine - entities: - - uid: 253 - components: - - pos: 4.5,43.5 - parent: 1653 - type: Transform - - uid: 326 - components: - - pos: 20.5,43.5 - parent: 1653 - type: Transform -- proto: SilverOre1 - entities: - - uid: 198 - components: - - pos: 29.423702,10.476233 - parent: 1653 - type: Transform - - uid: 318 - components: - - pos: 29.423702,10.476233 - parent: 1653 - type: Transform - - uid: 484 - components: - - pos: 29.423702,10.476233 - parent: 1653 - type: Transform - - uid: 486 - components: - - pos: 29.423702,10.476233 - parent: 1653 - type: Transform - - uid: 487 - components: - - pos: 29.423702,10.476233 - parent: 1653 - type: Transform -- proto: SmallLight - entities: - - uid: 336 - components: - - rot: 1.5707963267948966 rad - pos: 18.5,45.5 - parent: 1653 - type: Transform - - uid: 434 - components: - - rot: 1.5707963267948966 rad - pos: 2.5,45.5 - parent: 1653 - type: Transform -- proto: SpawnMobFrog - entities: - - uid: 386 - components: - - pos: 18.5,44.5 - parent: 1653 - type: Transform -- proto: SpearBone - entities: - - uid: 232 - components: - - flags: InContainer - type: MetaData - - parent: 231 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage -- proto: SteelBench - entities: - - uid: 71 - components: - - pos: 19.5,13.5 - parent: 1653 - type: Transform -- proto: SteelOre - entities: - - uid: 197 - components: - - pos: 28.470577,10.523108 - parent: 1653 - type: Transform -- proto: TableCarpet - entities: - - uid: 465 - components: - - pos: 13.5,26.5 - parent: 1653 - type: Transform -- proto: TableReinforced - entities: - - uid: 246 - components: - - pos: 4.5,46.5 - parent: 1653 - type: Transform -- proto: TableWood - entities: - - uid: 56 - components: - - pos: 39.5,0.5 - parent: 1653 - type: Transform - - uid: 59 - components: - - pos: 51.5,1.5 - parent: 1653 - type: Transform - - uid: 124 - components: - - pos: 34.5,40.5 - parent: 1653 - type: Transform - - uid: 133 - components: - - pos: 5.5,40.5 - parent: 1653 - type: Transform - - uid: 173 - components: - - pos: 20.5,21.5 - parent: 1653 - type: Transform - - uid: 226 - components: - - pos: 36.5,40.5 - parent: 1653 - type: Transform - - uid: 227 - components: - - pos: 35.5,40.5 - parent: 1653 - type: Transform - - uid: 333 - components: - - pos: 36.5,31.5 - parent: 1653 - type: Transform -- proto: ToiletDirtyWater - entities: - - uid: 406 - components: - - pos: 32.5,20.5 - parent: 1653 - type: Transform -- proto: Torch - entities: - - uid: 58 - components: - - pos: 52.617035,4.4522324 - parent: 1653 - type: Transform - - uid: 60 - components: - - pos: 38.654633,2.7959824 - parent: 1653 - type: Transform - - uid: 135 - components: - - pos: 5.4760814,40.63729 - parent: 1653 - type: Transform - - uid: 136 - components: - - pos: 5.6792064,40.621666 - parent: 1653 - type: Transform - - uid: 366 - components: - - pos: 10.669119,46.594402 - parent: 1653 - type: Transform -- proto: TorsoSkeleton - entities: - - uid: 325 - components: - - pos: 32.5085,20.620539 - parent: 1653 - type: Transform -- proto: TrashBakedBananaPeel - entities: - - uid: 210 - components: - - pos: 5.484687,26.403563 - parent: 1653 - type: Transform -- proto: UraniumOre - entities: - - uid: 433 - components: - - pos: 4.487873,46.58196 - parent: 1653 - type: Transform -- proto: UraniumOre1 - entities: - - uid: 192 - components: - - pos: 27.517452,10.507483 - parent: 1653 - type: Transform - - uid: 193 - components: - - pos: 27.517452,10.507483 - parent: 1653 - type: Transform - - uid: 194 - components: - - pos: 27.517452,10.507483 - parent: 1653 - type: Transform - - uid: 195 - components: - - pos: 27.517452,10.507483 - parent: 1653 - type: Transform - - uid: 196 - components: - - pos: 27.517452,10.507483 - parent: 1653 - type: Transform -- proto: WallMining - entities: - - uid: 11 - components: - - pos: 13.5,46.5 - parent: 1653 - type: Transform - - uid: 150 - components: - - pos: 18.5,43.5 - parent: 1653 - type: Transform - - uid: 151 - components: - - pos: 17.5,44.5 - parent: 1653 - type: Transform - - uid: 152 - components: - - pos: 17.5,46.5 - parent: 1653 - type: Transform - - uid: 153 - components: - - pos: 18.5,47.5 - parent: 1653 - type: Transform - - uid: 154 - components: - - pos: 20.5,47.5 - parent: 1653 - type: Transform - - uid: 157 - components: - - pos: 17.5,45.5 - parent: 1653 - type: Transform - - uid: 159 - components: - - pos: 4.5,47.5 - parent: 1653 - type: Transform - - uid: 160 - components: - - pos: 2.5,47.5 - parent: 1653 - type: Transform - - uid: 161 - components: - - pos: 1.5,44.5 - parent: 1653 - type: Transform - - uid: 163 - components: - - pos: 5.5,45.5 - parent: 1653 - type: Transform - - uid: 164 - components: - - pos: 1.5,46.5 - parent: 1653 - type: Transform - - uid: 165 - components: - - pos: 1.5,45.5 - parent: 1653 - type: Transform - - uid: 247 - components: - - pos: 10.5,47.5 - parent: 1653 - type: Transform - - uid: 265 - components: - - pos: 21.5,46.5 - parent: 1653 - type: Transform - - uid: 329 - components: - - pos: 20.5,43.5 - parent: 1653 - type: Transform - - uid: 353 - components: - - pos: 9.5,46.5 - parent: 1653 - type: Transform - - uid: 370 - components: - - pos: 5.5,44.5 - parent: 1653 - type: Transform - - uid: 373 - components: - - pos: 5.5,46.5 - parent: 1653 - type: Transform - - uid: 402 - components: - - rot: 1.5707963267948966 rad - pos: 10.5,43.5 - parent: 1653 - type: Transform - - uid: 425 - components: - - pos: 21.5,45.5 - parent: 1653 - type: Transform - - uid: 427 - components: - - pos: 21.5,44.5 - parent: 1653 - type: Transform - - uid: 429 - components: - - pos: 9.5,44.5 - parent: 1653 - type: Transform - - uid: 430 - components: - - pos: 9.5,45.5 - parent: 1653 - type: Transform - - uid: 431 - components: - - pos: 12.5,47.5 - parent: 1653 - type: Transform - - uid: 455 - components: - - pos: 2.5,43.5 - parent: 1653 - type: Transform - - uid: 456 - components: - - pos: 4.5,43.5 - parent: 1653 - type: Transform -- proto: WallMiningDiagonal - entities: - - uid: 166 - components: - - pos: 1.5,47.5 - parent: 1653 - type: Transform - - uid: 167 - components: - - rot: -1.5707963267948966 rad - pos: 5.5,47.5 - parent: 1653 - type: Transform - - uid: 168 - components: - - rot: 3.141592653589793 rad - pos: 5.5,43.5 - parent: 1653 - type: Transform - - uid: 169 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,43.5 - parent: 1653 - type: Transform - - uid: 251 - components: - - pos: 9.5,47.5 - parent: 1653 - type: Transform - - uid: 275 - components: - - rot: -1.5707963267948966 rad - pos: 13.5,47.5 - parent: 1653 - type: Transform - - uid: 397 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,43.5 - parent: 1653 - type: Transform - - uid: 428 - components: - - pos: 17.5,47.5 - parent: 1653 - type: Transform - - uid: 493 - components: - - rot: -1.5707963267948966 rad - pos: 21.5,47.5 - parent: 1653 - type: Transform - - uid: 494 - components: - - rot: 3.141592653589793 rad - pos: 21.5,43.5 - parent: 1653 - type: Transform - - uid: 495 - components: - - rot: 1.5707963267948966 rad - pos: 17.5,43.5 - parent: 1653 - type: Transform -- proto: WallWood - entities: - - uid: 16 - components: - - pos: 31.5,19.5 - parent: 1653 - type: Transform - - uid: 188 - components: - - pos: 43.5,39.5 - parent: 1653 - type: Transform - - uid: 255 - components: - - pos: 31.5,21.5 - parent: 1653 - type: Transform - - uid: 323 - components: - - pos: 33.5,20.5 - parent: 1653 - type: Transform - - uid: 324 - components: - - pos: 33.5,21.5 - parent: 1653 - type: Transform - - uid: 338 - components: - - pos: 33.5,19.5 - parent: 1653 - type: Transform - - uid: 408 - components: - - pos: 32.5,21.5 - parent: 1653 - type: Transform - - uid: 409 - components: - - pos: 31.5,20.5 - parent: 1653 - type: Transform -- proto: WaterTankHighCapacity - entities: - - uid: 219 - components: - - pos: 27.5,14.5 - parent: 1653 - type: Transform -- proto: WeaponShotgunImprovised - entities: - - uid: 412 - components: - - pos: 20.496641,45.467117 - parent: 1653 - type: Transform -- proto: WeldingFuelTankFull - entities: - - uid: 10 - components: - - pos: 2.5,46.5 - parent: 1653 - type: Transform -- proto: WoodDoor - entities: - - uid: 407 - components: - - pos: 32.5,19.5 - parent: 1653 - type: Transform -- proto: WoodenSign - entities: - - uid: 189 - components: - - pos: 1.5555744,26.347673 - parent: 1653 - type: Transform -- proto: WoodenSignRight - entities: - - uid: 62 - components: - - pos: 11.898959,14.345065 - parent: 1653 - type: Transform - - uid: 177 - components: - - pos: 9.503841,22.358318 - parent: 1653 - type: Transform - - uid: 440 - components: - - pos: 25.205534,32.33467 - parent: 1653 - type: Transform - - uid: 451 - components: - - pos: 5.5491443,7.271117 - parent: 1653 - type: Transform -- proto: WoodenSupport - entities: - - uid: 9 - components: - - pos: 10.5,10.5 - parent: 1653 - type: Transform - - uid: 66 - components: - - pos: 38.5,16.5 - parent: 1653 - type: Transform - - uid: 107 - components: - - pos: 8.5,32.5 - parent: 1653 - type: Transform - - uid: 108 - components: - - pos: 1.5,36.5 - parent: 1653 - type: Transform - - uid: 110 - components: - - pos: 0.5,22.5 - parent: 1653 - type: Transform - - uid: 140 - components: - - pos: 34.5,6.5 - parent: 1653 - type: Transform - - uid: 146 - components: - - pos: 24.5,6.5 - parent: 1653 - type: Transform - - uid: 174 - components: - - pos: 13.5,22.5 - parent: 1653 - type: Transform - - uid: 204 - components: - - pos: 2.5,28.5 - parent: 1653 - type: Transform - - uid: 207 - components: - - pos: 0.5,28.5 - parent: 1653 - type: Transform - - uid: 259 - components: - - pos: 20.5,24.5 - parent: 1653 - type: Transform - - uid: 279 - components: - - pos: 12.5,10.5 - parent: 1653 - type: Transform - - uid: 286 - components: - - pos: 22.5,10.5 - parent: 1653 - type: Transform - - uid: 422 - components: - - pos: 22.5,28.5 - parent: 1653 - type: Transform - - uid: 424 - components: - - pos: 22.5,40.5 - parent: 1653 - type: Transform - - uid: 450 - components: - - pos: 0.5,10.5 - parent: 1653 - type: Transform - - uid: 462 - components: - - pos: 53.5,4.5 - parent: 1653 - type: Transform - - uid: 464 - components: - - pos: 36.5,4.5 - parent: 1653 - type: Transform - - uid: 470 - components: - - pos: 8.5,36.5 - parent: 1653 - type: Transform -- proto: WoodenSupportBeam - entities: - - uid: 35 - components: - - pos: 29.5,1.5 - parent: 1653 - type: Transform - - uid: 143 - components: - - pos: 33.5,10.5 - parent: 1653 - type: Transform - - uid: 285 - components: - - pos: 12.5,6.5 - parent: 1653 - type: Transform - - uid: 307 - components: - - pos: 14.5,20.5 - parent: 1653 - type: Transform - - uid: 355 - components: - - pos: 25.5,1.5 - parent: 1653 - type: Transform - - uid: 395 - components: - - pos: 17.5,27.5 - parent: 1653 - type: Transform -- proto: WoodenSupportWall - entities: - - uid: 27 - components: - - pos: 34.5,4.5 - parent: 1653 - type: Transform - - uid: 33 - components: - - pos: 27.5,1.5 - parent: 1653 - type: Transform - - uid: 34 - components: - - pos: 28.5,1.5 - parent: 1653 - type: Transform - - uid: 36 - components: - - pos: 32.5,2.5 - parent: 1653 - type: Transform - - uid: 37 - components: - - pos: 32.5,3.5 - parent: 1653 - type: Transform - - uid: 38 - components: - - pos: 30.5,1.5 - parent: 1653 - type: Transform - - uid: 39 - components: - - pos: 32.5,0.5 - parent: 1653 - type: Transform - - uid: 53 - components: - - pos: 7.5,8.5 - parent: 1653 - type: Transform - - uid: 54 - components: - - pos: 6.5,8.5 - parent: 1653 - type: Transform - - uid: 55 - components: - - pos: 5.5,8.5 - parent: 1653 - type: Transform - - uid: 69 - components: - - pos: 0.5,12.5 - parent: 1653 - type: Transform - - uid: 75 - components: - - pos: 16.5,27.5 - parent: 1653 - type: Transform - - uid: 91 - components: - - pos: 32.5,1.5 - parent: 1653 - type: Transform - - uid: 92 - components: - - pos: 31.5,3.5 - parent: 1653 - type: Transform - - uid: 98 - components: - - pos: 18.5,25.5 - parent: 1653 - type: Transform - - uid: 125 - components: - - pos: 38.5,40.5 - parent: 1653 - type: Transform - - uid: 141 - components: - - pos: 34.5,10.5 - parent: 1653 - type: Transform - - uid: 142 - components: - - pos: 34.5,9.5 - parent: 1653 - type: Transform - - uid: 175 - components: - - pos: 12.5,20.5 - parent: 1653 - type: Transform - - uid: 176 - components: - - pos: 15.5,20.5 - parent: 1653 - type: Transform - - uid: 185 - components: - - pos: 32.5,40.5 - parent: 1653 - type: Transform - - uid: 234 - components: - - pos: 50.5,0.5 - parent: 1653 - type: Transform - - uid: 236 - components: - - pos: 30.5,3.5 - parent: 1653 - type: Transform - - uid: 237 - components: - - pos: 25.5,3.5 - parent: 1653 - type: Transform - - uid: 238 - components: - - pos: 25.5,4.5 - parent: 1653 - type: Transform - - uid: 239 - components: - - pos: 18.5,1.5 - parent: 1653 - type: Transform - - uid: 257 - components: - - pos: 29.5,3.5 - parent: 1653 - type: Transform - - uid: 263 - components: - - pos: 25.5,2.5 - parent: 1653 - type: Transform - - uid: 280 - components: - - pos: 13.5,6.5 - parent: 1653 - type: Transform - - uid: 282 - components: - - pos: 21.5,6.5 - parent: 1653 - type: Transform - - uid: 287 - components: - - pos: 22.5,6.5 - parent: 1653 - type: Transform - - uid: 297 - components: - - pos: 6.5,40.5 - parent: 1653 - type: Transform - - uid: 299 - components: - - pos: 0.5,38.5 - parent: 1653 - type: Transform - - uid: 305 - components: - - pos: 14.5,30.5 - parent: 1653 - type: Transform - - uid: 310 - components: - - pos: 14.5,32.5 - parent: 1653 - type: Transform - - uid: 311 - components: - - pos: 26.5,30.5 - parent: 1653 - type: Transform - - uid: 342 - components: - - pos: 22.5,3.5 - parent: 1653 - type: Transform - - uid: 343 - components: - - pos: 21.5,3.5 - parent: 1653 - type: Transform - - uid: 344 - components: - - pos: 23.5,3.5 - parent: 1653 - type: Transform - - uid: 345 - components: - - pos: 24.5,3.5 - parent: 1653 - type: Transform - - uid: 346 - components: - - pos: 20.5,1.5 - parent: 1653 - type: Transform - - uid: 349 - components: - - pos: 21.5,1.5 - parent: 1653 - type: Transform - - uid: 388 - components: - - pos: 28.5,3.5 - parent: 1653 - type: Transform - - uid: 389 - components: - - pos: 26.5,1.5 - parent: 1653 - type: Transform - - uid: 419 - components: - - pos: 19.5,1.5 - parent: 1653 - type: Transform - - uid: 437 - components: - - pos: 26.5,32.5 - parent: 1653 - type: Transform - - uid: 461 - components: - - pos: 54.5,4.5 - parent: 1653 - type: Transform -- proto: WoodenSupportWallBroken - entities: - - uid: 26 - components: - - pos: 27.5,3.5 - parent: 1653 - type: Transform - - uid: 80 - components: - - pos: 17.5,25.5 - parent: 1653 - type: Transform - - uid: 95 - components: - - pos: 4.5,8.5 - parent: 1653 - type: Transform - - uid: 284 - components: - - pos: 20.5,6.5 - parent: 1653 - type: Transform - - uid: 348 - components: - - pos: 20.5,3.5 - parent: 1653 - type: Transform - - uid: 356 - components: - - pos: 39.5,2.5 - parent: 1653 - type: Transform - - uid: 463 - components: - - pos: 50.5,1.5 - parent: 1653 - type: Transform -... +meta: + format: 6 + postmapinit: false +tilemap: + 0: Space + 22: FloorCave + 23: FloorCaveDrought + 40: FloorDirt + 66: FloorMining + 68: FloorMiningLight + 71: FloorOldConcreteMono + 72: FloorOldConcreteSmooth + 82: FloorShuttleOrange + 118: FloorWood + 121: Plating + 124: PlatingDamaged +entities: +- proto: "" + entities: + - uid: 1653 + components: + - type: MetaData + - type: Transform + - type: Map + - type: PhysicsMap + - type: Broadphase + - type: OccluderTree + - chunks: + -1,-1: + ind: -1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAA + version: 6 + 0,0: + ind: 0,0 + tiles: FgAAAAAEFgAAAAAEFgAAAAAFFgAAAAAFFgAAAAAGFgAAAAAAFgAAAAAFFgAAAAAEFgAAAAADFgAAAAAAFgAAAAAFFgAAAAAAFgAAAAADFgAAAAAAFgAAAAACFgAAAAAFFgAAAAACFgAAAAAGFgAAAAADFgAAAAAAFgAAAAADFgAAAAAAFgAAAAAEFgAAAAABFgAAAAAEFgAAAAAGFgAAAAACFgAAAAACFgAAAAABFgAAAAAEFgAAAAAEFgAAAAAGFgAAAAAFFgAAAAAEFgAAAAACFgAAAAAFFgAAAAAAFgAAAAAFFgAAAAAAFgAAAAADFgAAAAACFgAAAAAGFgAAAAACFgAAAAAAFgAAAAAAFgAAAAAGFgAAAAAFFgAAAAADFgAAAAAEFgAAAAABFgAAAAACFgAAAAABFgAAAAAAFgAAAAAFFgAAAAAEFgAAAAAAFgAAAAAEFgAAAAADFgAAAAAGFgAAAAAEFgAAAAABFgAAAAAEFgAAAAACFgAAAAAGFgAAAAAFFgAAAAAAFgAAAAABFgAAAAAFFgAAAAADFgAAAAADFgAAAAAFFgAAAAAFFgAAAAABFgAAAAAFFgAAAAACFgAAAAAAFgAAAAAAFgAAAAAFFgAAAAADFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAADFgAAAAABFgAAAAABFgAAAAACFgAAAAABFgAAAAAGFgAAAAAAFgAAAAAGFwAAAAAAFwAAAAAAFgAAAAACUgAAAAAAFgAAAAAAFgAAAAAEFgAAAAAEFgAAAAACFwAAAAAAFwAAAAAAFgAAAAAAFgAAAAABFgAAAAADFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAADUgAAAAAAFgAAAAACFgAAAAAFFgAAAAACFwAAAAAAFgAAAAAGFgAAAAADFwAAAAAAFwAAAAAAFgAAAAAEFgAAAAAAFgAAAAACFgAAAAADFwAAAAAAFgAAAAAAFgAAAAAFUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAABFgAAAAABFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAAFFgAAAAAAFgAAAAADFgAAAAAFFwAAAAAAFwAAAAAAUgAAAAAAFgAAAAADFgAAAAAGFgAAAAAGFwAAAAAAFgAAAAAAFgAAAAAGFgAAAAAFFgAAAAAEFgAAAAADFgAAAAAEFgAAAAAAFgAAAAAAFgAAAAABFgAAAAAEFgAAAAAEUgAAAAAAFgAAAAABFgAAAAADFgAAAAACFgAAAAAGUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAEFgAAAAAEFgAAAAABFgAAAAAEFwAAAAABFwAAAAABFwAAAAAEUgAAAAAAFgAAAAAFFgAAAAABFgAAAAAFFgAAAAADFgAAAAADFgAAAAAEFgAAAAADUgAAAAAAFgAAAAACFgAAAAAEFgAAAAAFFgAAAAABFgAAAAAGFgAAAAAFFwAAAAAEUgAAAAAAFgAAAAAGFgAAAAAGFwAAAAAGFwAAAAADFgAAAAAAFgAAAAADFgAAAAAEUgAAAAAAFgAAAAAGFwAAAAACFgAAAAACFgAAAAABFgAAAAABFgAAAAADFgAAAAAAUgAAAAAAFwAAAAACFgAAAAABFwAAAAAHFgAAAAACFgAAAAAEFwAAAAAEFgAAAAADUgAAAAAAFwAAAAACFgAAAAAGFgAAAAAGFgAAAAABFgAAAAAAFgAAAAAEFwAAAAAEUgAAAAAAFgAAAAABFwAAAAAFFwAAAAAFFgAAAAACFgAAAAABFwAAAAAHFwAAAAAEUgAAAAAA + version: 6 + 0,1: + ind: 0,1 + tiles: FwAAAAACFgAAAAAFFgAAAAACFgAAAAAEFgAAAAAEFgAAAAAGFgAAAAAAUgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAGFgAAAAADFgAAAAAGFgAAAAADUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAEFgAAAAAFFgAAAAAFFgAAAAAFFgAAAAABUgAAAAAAFgAAAAAAFgAAAAAGFgAAAAAFFwAAAAAAFgAAAAAEUgAAAAAAFgAAAAADFgAAAAAGFgAAAAAAFgAAAAAFFgAAAAAEFwAAAAABFwAAAAAGFgAAAAAFFgAAAAAEUgAAAAAAFgAAAAACFwAAAAAFFwAAAAADFwAAAAADFgAAAAAFUgAAAAAAFwAAAAACFwAAAAADFwAAAAAEFwAAAAAFFgAAAAAEFwAAAAAGFwAAAAAHFwAAAAADFwAAAAAGUgAAAAAAFwAAAAAHFwAAAAACFgAAAAADFwAAAAADFgAAAAABUgAAAAAAFgAAAAABFgAAAAAGFgAAAAAEFgAAAAAGFgAAAAAFFgAAAAAAFwAAAAACFgAAAAAGFgAAAAABUgAAAAAAFgAAAAAGFwAAAAAGFwAAAAABFwAAAAAAFgAAAAACUgAAAAAAFwAAAAAAFgAAAAAGFwAAAAADFwAAAAAHFgAAAAADFgAAAAAGFgAAAAAFFgAAAAABFgAAAAAGUgAAAAAAFgAAAAAAFgAAAAABFgAAAAAFFgAAAAAGFwAAAAADUgAAAAAAFgAAAAACFgAAAAAAFgAAAAADFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAGFgAAAAABFgAAAAAFUgAAAAAAFwAAAAAEFgAAAAAAFgAAAAAFUgAAAAAAFwAAAAABFgAAAAAAFgAAAAADUgAAAAAAFgAAAAADFwAAAAAFFgAAAAAGUgAAAAAAFgAAAAAAFgAAAAAGFgAAAAAFUgAAAAAAFgAAAAADFgAAAAAGFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAAFgAAAAAAUgAAAAAAFwAAAAAAFwAAAAADFwAAAAAHUgAAAAAAFgAAAAABFgAAAAABFgAAAAACUgAAAAAAFgAAAAAFFgAAAAADFgAAAAAGUgAAAAAAFgAAAAAAFgAAAAAEFgAAAAAGUgAAAAAAFwAAAAABFwAAAAAFFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAAFwAAAAAEUgAAAAAAFgAAAAAAFgAAAAAFFgAAAAACUgAAAAAAFgAAAAADFgAAAAAFFgAAAAAEUgAAAAAAFwAAAAACFwAAAAAHFgAAAAADUgAAAAAAFgAAAAACFgAAAAADFgAAAAAGUgAAAAAAFgAAAAADFgAAAAADFgAAAAAAUgAAAAAAFgAAAAACFgAAAAAAFwAAAAABUgAAAAAAFwAAAAAAFgAAAAABFgAAAAABUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAABFgAAAAABFgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAEFgAAAAABFgAAAAADFgAAAAABFgAAAAAGFgAAAAAEFgAAAAADFgAAAAADUgAAAAAAFgAAAAADFgAAAAAFFgAAAAACFgAAAAACFgAAAAAEFgAAAAAGFgAAAAABFgAAAAAFFgAAAAACFgAAAAAGFgAAAAAAFgAAAAADFgAAAAAFFgAAAAAAFgAAAAAFUgAAAAAAFgAAAAADFgAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAA + version: 6 + -1,1: + ind: -1,1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAA + version: 6 + 1,-1: + ind: 1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAA + version: 6 + 1,0: + ind: 1,0 + tiles: FgAAAAACUgAAAAAAFgAAAAACFgAAAAACFgAAAAABFgAAAAADFgAAAAACKAAAAAAAKAAAAAAAKAAAAAAAFgAAAAAGFgAAAAABFgAAAAAEFgAAAAAAFgAAAAAFFgAAAAABFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAAFgAAAAAFFgAAAAAGFgAAAAABFgAAAAADKAAAAAAAFgAAAAADFgAAAAAEFgAAAAAAFgAAAAAFFgAAAAABFgAAAAAAKAAAAAAAFgAAAAAEUgAAAAAAKAAAAAAAKAAAAAAAFgAAAAAAFgAAAAADKAAAAAAAFgAAAAADFgAAAAACFgAAAAAFKAAAAAAAKAAAAAAAKAAAAAAAFgAAAAAGKAAAAAAAKAAAAAAAFgAAAAACUgAAAAAAKAAAAAAAKAAAAAAAFgAAAAAGFgAAAAACFgAAAAAFFgAAAAACFgAAAAAEFgAAAAAGFgAAAAABFgAAAAADFgAAAAAGFgAAAAADFgAAAAABKAAAAAAAFgAAAAAGUgAAAAAAKAAAAAAAFgAAAAAEFgAAAAAFFgAAAAAFFgAAAAAAFgAAAAADFgAAAAAGFgAAAAABFgAAAAAGFgAAAAACFgAAAAACFgAAAAAAFgAAAAABKAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAADFgAAAAAAFgAAAAAEFgAAAAADUgAAAAAAFgAAAAACFgAAAAAFFgAAAAAAFgAAAAAGFgAAAAAEFgAAAAADFgAAAAABFgAAAAAEFwAAAAAAFgAAAAADFwAAAAAAFwAAAAAAFgAAAAAGFgAAAAADFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAAFgAAAAAGFgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAAAFgAAAAACFgAAAAADFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAADFgAAAAAFFgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAAGFwAAAAAAFwAAAAAAFgAAAAAGFgAAAAAGFgAAAAACUgAAAAAAFgAAAAAFFgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAAAFgAAAAABFgAAAAAFFgAAAAABUgAAAAAAFgAAAAAEFgAAAAABFgAAAAAFFgAAAAAEFgAAAAADFgAAAAAGFgAAAAAEFwAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAADFgAAAAAGFgAAAAAGFgAAAAAGFgAAAAADFgAAAAAEFgAAAAACUgAAAAAAFgAAAAABFgAAAAAAFgAAAAABFgAAAAAFFgAAAAABFgAAAAABFgAAAAACUgAAAAAAFgAAAAACFwAAAAAAFwAAAAACFwAAAAAEFwAAAAACFgAAAAACFgAAAAAFUgAAAAAAFgAAAAACFgAAAAAEFgAAAAAGFgAAAAADFgAAAAAGFgAAAAABFgAAAAACUgAAAAAAFgAAAAAGFgAAAAAFFwAAAAAHFwAAAAADFwAAAAAAFwAAAAACFgAAAAAAUgAAAAAAFgAAAAABFgAAAAAFFgAAAAABFgAAAAADFgAAAAAFFgAAAAAFFgAAAAAGUgAAAAAAFgAAAAADFgAAAAABFwAAAAAHFwAAAAAAFwAAAAAEFgAAAAADFgAAAAAGUgAAAAAAFgAAAAAAFgAAAAABFgAAAAACFgAAAAAAFgAAAAAFFgAAAAADFgAAAAADUgAAAAAA + version: 6 + 1,1: + ind: 1,1 + tiles: FgAAAAAAFgAAAAAAFgAAAAAFFgAAAAADFgAAAAAEFgAAAAAEFgAAAAAGUgAAAAAAFgAAAAABFgAAAAABFgAAAAAAFgAAAAABFgAAAAACFgAAAAAFFgAAAAADUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAAUgAAAAAAFgAAAAADFgAAAAAAFgAAAAABFgAAAAAGFgAAAAADUgAAAAAAFgAAAAAAFgAAAAAAFgAAAAACFgAAAAAAFgAAAAAFUgAAAAAAFgAAAAABFgAAAAACFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAGFgAAAAAGFgAAAAADFgAAAAAGUgAAAAAAFgAAAAADFwAAAAADFwAAAAABFgAAAAACFgAAAAAFUgAAAAAAFgAAAAAEdgAAAAADFgAAAAAFUgAAAAAAFgAAAAABFgAAAAAFFgAAAAAGFgAAAAABFgAAAAABUgAAAAAAFgAAAAAGFwAAAAAEFwAAAAACFwAAAAAHFgAAAAACUgAAAAAAFgAAAAACdgAAAAABFwAAAAADUgAAAAAAFgAAAAAGFgAAAAAAFgAAAAACFgAAAAAFFgAAAAADUgAAAAAAFgAAAAACFgAAAAACFwAAAAAHFwAAAAAAFgAAAAABUgAAAAAAFgAAAAAAdgAAAAACFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAADFgAAAAAAFgAAAAAFFgAAAAAAUgAAAAAAFgAAAAACFgAAAAAFFgAAAAABFgAAAAADFgAAAAAAUgAAAAAAFgAAAAAEFgAAAAAGUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAEFwAAAAAFFwAAAAAGUgAAAAAAFgAAAAAGFwAAAAAFFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAADFgAAAAACFgAAAAAEUgAAAAAAFgAAAAAGFgAAAAABFgAAAAAFUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAACFwAAAAAGFwAAAAAAUgAAAAAAFgAAAAAGFgAAAAAFFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAABFgAAAAAGFwAAAAADUgAAAAAAFwAAAAACFgAAAAAEFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAAFwAAAAAEFwAAAAABUgAAAAAAFgAAAAAGFgAAAAAFFwAAAAAHUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAGFgAAAAACFgAAAAAFFgAAAAAFFgAAAAADFgAAAAACFgAAAAAGFgAAAAAFFwAAAAAGFwAAAAAFFwAAAAAAUgAAAAAAFgAAAAAAFwAAAAADFwAAAAADFwAAAAADFwAAAAAEFgAAAAAEFwAAAAAHFwAAAAAGFgAAAAADFgAAAAACFgAAAAADFwAAAAAEFwAAAAABFwAAAAABFwAAAAAHUgAAAAAAFgAAAAAAFgAAAAAFFgAAAAADFgAAAAAE + version: 6 + -1,2: + ind: -1,2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAA + version: 6 + -1,3: + ind: -1,3 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 0,2: + ind: 0,2 + tiles: FgAAAAAAFgAAAAACFgAAAAAEFgAAAAADFgAAAAACFgAAAAAGFgAAAAAFFgAAAAACFgAAAAAFFgAAAAACFgAAAAAEFgAAAAAFFgAAAAABUgAAAAAAFgAAAAAFFgAAAAABUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAADFgAAAAACFgAAAAAEFwAAAAAAFgAAAAACFgAAAAAAFgAAAAAEFgAAAAADFgAAAAAGFgAAAAAGFwAAAAAEUgAAAAAAFgAAAAAEFgAAAAADFgAAAAAAFgAAAAADFwAAAAAFFwAAAAACFgAAAAAFFgAAAAACFgAAAAAFFgAAAAAFFgAAAAAEFwAAAAAAFgAAAAAGFgAAAAAAFgAAAAACUgAAAAAAFgAAAAABFgAAAAAFFgAAAAAGFgAAAAAAFgAAAAAGFgAAAAAFFgAAAAACFgAAAAAEFwAAAAAHFgAAAAAGFgAAAAAFFgAAAAAFFgAAAAAGFgAAAAAAFgAAAAACUgAAAAAAFgAAAAAEFgAAAAAAFgAAAAABFgAAAAAFUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAGFgAAAAABFgAAAAAGFgAAAAADFgAAAAABFgAAAAAAFgAAAAAEUgAAAAAAFgAAAAADFgAAAAABFgAAAAAFFgAAAAAAFgAAAAAEFgAAAAADFgAAAAAFUgAAAAAAFgAAAAAEFgAAAAACFgAAAAABFgAAAAADFgAAAAAEFgAAAAACFgAAAAABUgAAAAAAFgAAAAAEFgAAAAAAFgAAAAAGFgAAAAABFgAAAAAAFgAAAAAEFgAAAAAGUgAAAAAAFgAAAAAEFgAAAAAGFgAAAAABFgAAAAABFgAAAAADFgAAAAACFgAAAAAEUgAAAAAAFgAAAAAAFgAAAAADFgAAAAADFgAAAAADFgAAAAAAFgAAAAADFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAACFgAAAAABFgAAAAAFFgAAAAABFgAAAAABFgAAAAAAFgAAAAAEUgAAAAAAFgAAAAAEFgAAAAAFFgAAAAACFgAAAAAEFgAAAAADFgAAAAAAFgAAAAAGUgAAAAAAFgAAAAAAFgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAAFFgAAAAAGUgAAAAAAFgAAAAADFgAAAAABQgAAAAAAFgAAAAAEfAAAAAAAFgAAAAACFgAAAAAAUgAAAAAAFgAAAAAAQgAAAAAAQgAAAAAARAAAAAAAQgAAAAAAQgAAAAAAFgAAAAAEUgAAAAAAFgAAAAAAQgAAAAAAfAAAAAABRAAAAAAAeQAAAAAAFgAAAAAAFgAAAAABUgAAAAAAFgAAAAAFQgAAAAAAQgAAAAAARAAAAAAAQgAAAAAAQgAAAAAAFgAAAAAAUgAAAAAAFgAAAAAFQgAAAAAARAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAFgAAAAACUgAAAAAAFgAAAAABQgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAAGUgAAAAAAFgAAAAAFQgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAABUgAAAAAAFgAAAAABFgAAAAACQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAAGFgAAAAAEUgAAAAAAFgAAAAAEFgAAAAACQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAABFgAAAAABUgAAAAAA + version: 6 + 0,3: + ind: 0,3 + tiles: FgAAAAADFgAAAAAGFgAAAAAGFgAAAAAFFgAAAAAGFgAAAAAFFgAAAAAFUgAAAAAAFgAAAAADFgAAAAACFgAAAAAFFgAAAAAGFgAAAAAEFgAAAAAAFgAAAAAFUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 1,2: + ind: 1,2 + tiles: FgAAAAACFgAAAAAFFgAAAAADFgAAAAAEFgAAAAACFwAAAAACFwAAAAADFwAAAAAAFwAAAAAGFwAAAAAHFwAAAAAEUgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAFFgAAAAACFgAAAAAEFgAAAAAAFgAAAAAAFgAAAAADFgAAAAABUgAAAAAAFgAAAAAEFgAAAAAGFgAAAAAAFgAAAAAGFgAAAAAFFgAAAAABFgAAAAAFFgAAAAACFgAAAAAEFgAAAAACFgAAAAABFgAAAAAEFgAAAAAEFgAAAAAFFgAAAAAGUgAAAAAAFgAAAAABFgAAAAACFgAAAAAFFgAAAAAGFgAAAAAGFgAAAAAGFgAAAAADFgAAAAAAFgAAAAAGFgAAAAAEFgAAAAADFgAAAAAFFgAAAAAAFgAAAAAFFgAAAAAEUgAAAAAAFgAAAAAEFgAAAAABFgAAAAAEFgAAAAAEFgAAAAAAFgAAAAAGFgAAAAAGFgAAAAABUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAACFgAAAAACFgAAAAAAFgAAAAADFgAAAAAEFgAAAAAEFgAAAAAFUgAAAAAAFgAAAAABFgAAAAAEFgAAAAABFgAAAAAAFgAAAAAFFgAAAAACFgAAAAAAUgAAAAAAFgAAAAAGFgAAAAAEFgAAAAAEFgAAAAAGFgAAAAAEFgAAAAACFgAAAAAEUgAAAAAAFgAAAAAAFgAAAAACFgAAAAAGFgAAAAAAFgAAAAAGFgAAAAACFgAAAAADUgAAAAAAFgAAAAAGFgAAAAAFFgAAAAABFgAAAAAAFgAAAAAAFgAAAAAAFgAAAAACUgAAAAAAFgAAAAAEFgAAAAAFFgAAAAABFgAAAAAAFgAAAAAFFgAAAAACFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAEFgAAAAAFFgAAAAABFgAAAAABFgAAAAAAFgAAAAAFFgAAAAAGUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAFFgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAAFFgAAAAACUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAEQgAAAAAAQgAAAAAARAAAAAAAQgAAAAAAQgAAAAAAFgAAAAAFUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAEQgAAAAAAQgAAAAAARAAAAAAAQgAAAAAAQgAAAAAAFgAAAAAEUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAABQgAAAAAAQgAAAAAARAAAAAAAQgAAAAAAQgAAAAAAFgAAAAAEUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAABFgAAAAAEQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAAFFgAAAAADUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 1,3: + ind: 1,3 + tiles: FgAAAAAEFgAAAAACFgAAAAAFFgAAAAAGFgAAAAACFgAAAAACFgAAAAAFUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,0: + ind: 2,0 + tiles: FgAAAAABFgAAAAABFgAAAAACUgAAAAAAFwAAAAAAFgAAAAAFFgAAAAAFFgAAAAADFgAAAAAEFgAAAAACFgAAAAAAFgAAAAAEFgAAAAAGFgAAAAADFgAAAAADFgAAAAAGFgAAAAAGFgAAAAAFKAAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFgAAAAAFFgAAAAACFgAAAAABFgAAAAACFgAAAAAGFgAAAAAGFgAAAAAGFgAAAAAAFgAAAAABFgAAAAACFgAAAAAGFgAAAAAEKAAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFgAAAAAAFgAAAAAFFgAAAAAAFgAAAAAAFgAAAAAEFgAAAAAGFgAAAAAAFgAAAAACFgAAAAAAFgAAAAAGKAAAAAAAKAAAAAAAKAAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAACFgAAAAAFFgAAAAAAFgAAAAACFgAAAAABFgAAAAAAFgAAAAADFgAAAAAGKAAAAAAAKAAAAAAAFgAAAAAFUgAAAAAAFgAAAAADFgAAAAADFwAAAAAAFgAAAAABFgAAAAADFgAAAAACFgAAAAAEFgAAAAADFgAAAAADFgAAAAAFFgAAAAABFgAAAAAFUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAAFgAAAAAEFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAFFgAAAAABFgAAAAAGUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAGUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAFFgAAAAAFFgAAAAAEFgAAAAADFgAAAAAEFgAAAAAAFgAAAAAFUgAAAAAAFgAAAAAGFgAAAAACFgAAAAAAFgAAAAAFFgAAAAADFgAAAAAFFgAAAAAGUgAAAAAAFgAAAAABRwAAAAADRwAAAAABSAAAAAAARwAAAAADFgAAAAAFFgAAAAAFUgAAAAAAFgAAAAACFgAAAAAEFgAAAAADFgAAAAAGFgAAAAAFFgAAAAABFgAAAAAAUgAAAAAAFgAAAAABFgAAAAACSAAAAAACSAAAAAADRwAAAAADSAAAAAAAFgAAAAADUgAAAAAAFgAAAAADFgAAAAADFgAAAAADFgAAAAAFFgAAAAABFgAAAAAEFgAAAAAAUgAAAAAAFgAAAAAGRwAAAAABSAAAAAACSAAAAAAASAAAAAACRwAAAAADFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAEFgAAAAAFFgAAAAACFgAAAAAEFgAAAAACFgAAAAAGUgAAAAAA + version: 6 + 3,0: + ind: 3,0 + tiles: FgAAAAADFgAAAAACFgAAAAAEFgAAAAAEFgAAAAADFwAAAAAAFgAAAAAEUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAGFgAAAAAEFgAAAAAGFgAAAAADFgAAAAAFFgAAAAADFwAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAABFgAAAAAAFgAAAAABFgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAAFgAAAAADFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAGFgAAAAABFgAAAAAGFgAAAAAAFgAAAAAFFgAAAAADFgAAAAADUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,-1: + ind: 2,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAA + version: 6 + 3,-1: + ind: 3,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 3,1: + ind: 3,1 + tiles: UgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 3,2: + ind: 3,2 + tiles: UgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,2: + ind: 2,2 + tiles: FgAAAAAAFgAAAAAFFgAAAAAAFgAAAAADFgAAAAAFFgAAAAAGFwAAAAACFwAAAAABFgAAAAAFUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAEFgAAAAAGFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAFFgAAAAAEFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAEFgAAAAABFgAAAAADUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAAFgAAAAABFgAAAAAGFgAAAAAFFgAAAAACFgAAAAACFgAAAAAEUgAAAAAAFgAAAAAAFgAAAAAGFgAAAAAAFgAAAAADFgAAAAACFgAAAAAEFgAAAAAGUgAAAAAAFgAAAAABFgAAAAACFgAAAAAEFgAAAAACFgAAAAABFgAAAAAAFgAAAAAFUgAAAAAAFgAAAAACFgAAAAADFgAAAAAGFgAAAAADFgAAAAACFgAAAAAFFgAAAAAEUgAAAAAAFgAAAAAEFgAAAAABFgAAAAAEFgAAAAACFgAAAAACFgAAAAABFgAAAAAGUgAAAAAAFgAAAAAEFgAAAAABFgAAAAACFgAAAAADFgAAAAABFgAAAAABFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,1: + ind: 2,1 + tiles: FgAAAAAAFgAAAAAGFgAAAAAEFgAAAAACFgAAAAAGFgAAAAAEFgAAAAADUgAAAAAAFgAAAAACFgAAAAAEFgAAAAAAFgAAAAAGFgAAAAADFgAAAAADFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAADFgAAAAAFFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAdgAAAAAAdgAAAAABFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAdgAAAAADdgAAAAABFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAdgAAAAAAdgAAAAAAFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAADFgAAAAAAFgAAAAAGUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAFFwAAAAAHFwAAAAAGFwAAAAABFwAAAAAFFgAAAAAFFgAAAAAEFgAAAAAEFgAAAAADUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAADFwAAAAABFwAAAAAGFgAAAAAAFgAAAAACFgAAAAAEFgAAAAACFgAAAAABFwAAAAAHUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAA + version: 6 + type: MapGrid + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: + version: 2 + nodes: + - node: + color: '#FFFFFFFF' + id: Basalt1 + decals: + 1342: 6.955441,21.068565 + 1405: 5.569477,24.342073 + 1409: 21.493462,30.781818 + 1423: 16.244232,47.723083 + - node: + color: '#FFFFFFFF' + id: Basalt2 + decals: + 1408: 21.571587,25.092073 + 1411: 38.670036,30.328693 + 1412: 32.59149,34.61899 + - node: + color: '#FFFFFFFF' + id: Basalt3 + decals: + 1404: 2.0071354,12.534689 + 1413: 28.294615,35.52524 + 1419: 1.8725519,39.603367 + 1428: 40.1997,39.904606 + 1429: 37.775063,38.35773 + 1430: 27.454536,18.497276 + - node: + color: '#FFFFFFFF' + id: Basalt4 + decals: + 1407: 14.05264,26.857698 + 1420: 8.417587,42.316833 + - node: + color: '#FFFFFFFF' + id: Basalt5 + decals: + 1347: 7.0134563,30.499578 + 1403: 8.765746,13.144064 + 1414: 24.413132,39.478367 + 1421: 13.773578,47.660583 + 1426: 12.267979,34.57054 + 1427: 44.902824,38.38898 + 1431: 24.313911,21.591026 + 1432: 21.396156,20.325401 + - node: + color: '#FFFFFFFF' + id: Basalt6 + decals: + 1341: 0.908566,19.95919 + 1415: 20.816694,39.134617 + - node: + color: '#FFFFFFFF' + id: Basalt7 + decals: + 1339: 10,18 + 1416: 12.790198,39.33774 + 1422: 21.884857,42.17621 + 1433: 18.589165,18.387901 + 1434: 34.005077,18.028526 + 1435: 4.6335278,15.488716 + - node: + color: '#FFFFFFFF' + id: Basalt8 + decals: + 1340: 7.1637583,18.068565 + 1417: 8.813416,38.415867 + 1424: 0.46817493,47.80121 + 1425: 8.544811,34.586166 + - node: + color: '#FFFFFFFF' + id: Basalt9 + decals: + 1343: 13.433517,19.162315 + 1406: 0.6944771,26.826448 + 1410: 30.17049,31.359943 + 1418: 5.810052,38.259617 + - node: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + decals: + 301: 9,45 + 306: 13,42 + 308: 10,42 + 311: 13,45 + 578: 10,32 + - node: + color: '#FFFFFFFF' + id: Rock06 + decals: + 1344: 2.1520143,30.343328 + - node: + color: '#FFFFFFFF' + id: Rock07 + decals: + 1345: 10.29961,31.483953 + - node: + color: '#DE3A3A96' + id: rune6 + decals: + 1402: 8.952158,26.184813 + - node: + color: '#79150031' + id: splatter + decals: + 1348: 10.903494,45.563152 + 1349: 10.950369,45.969402 + 1350: 11.184744,45.906902 + 1351: 11.590994,45.422527 + 1352: 11.590994,45.422527 + 1353: 10.965994,45.610027 + 1354: 10.997244,44.969402 + 1355: 11.231619,45.047527 + 1356: 11.356619,45.344402 + 1357: 10.825369,45.656902 + 1358: 11.184744,45.922527 + 1359: 11.231619,45.891277 + 1360: 10.512869,45.563152 + 1361: 11.684744,44.078777 + 1362: 11.747244,43.797527 + 1363: 12.044119,43.328777 + 1364: 11.778494,43.281902 + 1365: 11.887869,43.688152 + 1366: 12.200369,43.735027 + 1367: 12.137869,44.141277 + 1368: 11.669119,43.656902 + 1369: 10.637869,43.781902 + 1370: 10.544119,43.781902 + 1371: 10.669119,43.453777 + 1372: 10.590994,43.485027 + 1373: 11.419119,45.797527 + 1374: 11.825369,45.813152 + 1375: 11.950369,46.219402 + 1376: 11.200369,45.672527 + 1377: 11.247244,45.922527 + 1378: 10.590994,46.125652 + 1379: 11.481619,45.422527 + 1380: 11.684744,45.672527 + 1381: 11.512869,45.141277 + 1382: 11.825369,45.281902 + 1383: 11.684744,45.438152 + 1384: 10.950369,45.735027 + 1385: 10.262869,45.797527 + 1386: 10.028494,44.891277 + 1387: 9.903494,44.891277 + 1388: 9.887869,45.500652 + 1389: 10.153494,45.344402 + 1390: 10.809744,45.391277 + 1391: 10.934744,45.422527 + 1392: 11.262869,45.531902 + 1393: 11.184744,46.031902 + 1394: 10.872244,45.813152 + 1395: 11.090994,45.563152 + 1396: 10.731619,46.031902 + 1397: 10.075369,44.000652 + 1398: 9.856619,43.703777 + 1399: 10.059744,44.281902 + 1400: 10.419119,43.813152 + - node: + cleanable: True + color: '#79150031' + id: splatter + decals: + 1444: 35.155014,12.447503 + 1445: 34.811264,12.353753 + 1446: 34.85814,12.744378 + 1447: 35.342514,12.463128 + 1448: 35.155014,12.228753 + 1449: 34.42064,12.572503 + 1450: 34.123764,13.025628 + 1451: 34.17064,13.322503 + 1452: 34.342514,12.900628 + 1453: 33.85814,12.994378 + 1454: 33.79564,13.338128 + 1455: 33.63939,13.838128 + 1456: 33.70189,13.603753 + 1457: 33.311264,13.900628 + 1458: 33.717514,14.306878 + 1459: 34.10814,14.650628 + 1460: 33.936264,15.135003 + 1461: 34.405014,14.947503 + 1462: 33.79564,14.510003 + 1463: 33.70189,14.088128 + 1464: 34.29564,14.541253 + 1465: 34.623764,15.010003 + 1466: 35.26439,15.072503 + 1467: 35.405014,14.931878 + 1468: 34.623764,15.338128 + 1469: 35.592514,14.994378 + 1470: 35.79564,14.447503 + 1471: 36.13939,15.025628 + 1472: 36.436264,14.181878 + 1473: 36.592514,13.869378 + 1474: 35.780014,14.697503 + 1475: 36.467514,14.072503 + 1476: 35.748764,14.588128 + 1477: 36.07689,13.963128 + 1478: 36.092514,13.291253 + 1479: 35.57689,13.103753 + 1480: 35.70189,13.088128 + 1481: 35.38939,12.478753 + 1482: 35.92064,13.260003 + 1483: 36.061264,13.666253 + 1484: 36.217514,12.822503 + 1485: 35.48314,12.650628 + 1486: 35.98314,12.353753 + 1487: 34.842514,12.744378 + 1488: 34.23314,12.853753 + 1489: 34.04564,13.447503 + 1490: 33.51439,13.650628 + - node: + cleanable: True + color: '#DE3A3A28' + id: splatter + decals: + 1436: 34.151947,12.931878 + 1437: 33.542572,13.775628 + 1438: 34.089447,14.588128 + 1439: 34.886322,15.025628 + 1440: 35.714447,14.681878 + 1441: 36.214447,14.119378 + 1442: 35.933197,13.228753 + 1443: 35.026947,12.447503 + type: DecalGrid + - type: RadiationGridResistance + - type: LoadedMap + - type: SpreaderGrid + - type: GridTree + - type: MovedGrids + - type: GridPathfinding +- proto: AirCanister + entities: + - uid: 302 + components: + - pos: 20.5,38.5 + parent: 1653 + type: Transform +- proto: AirlockMining + entities: + - uid: 149 + components: + - pos: 11.5,43.5 + parent: 1653 + type: Transform +- proto: AirlockMiningGlassLocked + entities: + - uid: 492 + components: + - pos: 19.5,43.5 + parent: 1653 + type: Transform +- proto: AirlockMiningLocked + entities: + - uid: 454 + components: + - pos: 3.5,43.5 + parent: 1653 + type: Transform +- proto: AltarFangs + entities: + - uid: 12 + components: + - pos: 35.5,14.5 + parent: 1653 + type: Transform +- proto: BananiumOre1 + entities: + - uid: 147 + components: + - pos: 25.454952,10.460608 + parent: 1653 + type: Transform + - uid: 436 + components: + - flags: InContainer + type: MetaData + - parent: 435 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: Barricade + entities: + - uid: 61 + components: + - pos: 14.5,12.5 + parent: 1653 + type: Transform + - uid: 304 + components: + - pos: 6.5,18.5 + parent: 1653 + type: Transform + - uid: 369 + components: + - pos: 51.5,0.5 + parent: 1653 + type: Transform +- proto: BikeHorn + entities: + - uid: 201 + components: + - flags: InContainer + type: MetaData + - parent: 200 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: Bucket + entities: + - uid: 220 + components: + - pos: 28.080187,14.004396 + parent: 1653 + type: Transform +- proto: CandleRedSmallInfinite + entities: + - uid: 121 + components: + - pos: 10.514658,25.137938 + parent: 1653 + type: Transform + - uid: 123 + components: + - pos: 10.655283,25.247313 + parent: 1653 + type: Transform + - uid: 126 + components: + - rot: -6.283185307179586 rad + pos: 9.436043,27.291958 + parent: 1653 + type: Transform + - uid: 181 + components: + - pos: 9.83762,26.231688 + parent: 1653 + type: Transform + - uid: 182 + components: + - pos: 9.009495,26.278563 + parent: 1653 + type: Transform + - uid: 211 + components: + - pos: 10.467783,25.325438 + parent: 1653 + type: Transform + - uid: 212 + components: + - rot: -6.283185307179586 rad + pos: 9.976189,27.010708 + parent: 1653 + type: Transform + - uid: 213 + components: + - pos: 8.86887,27.028563 + parent: 1653 + type: Transform +- proto: Chainsaw + entities: + - uid: 396 + components: + - pos: 12.278494,46.219402 + parent: 1653 + type: Transform +- proto: Chair + entities: + - uid: 399 + components: + - rot: 3.141592653589793 rad + pos: 19.5,34.5 + parent: 1653 + type: Transform +- proto: ChairPilotSeat + entities: + - uid: 8 + components: + - rot: 1.5707963267948966 rad + pos: 2.5,44.5 + parent: 1653 + type: Transform + - uid: 466 + components: + - rot: -1.5707963267948966 rad + pos: 4.5,44.5 + parent: 1653 + type: Transform +- proto: ChairRitual + entities: + - uid: 127 + components: + - pos: 9.5,28.5 + parent: 1653 + type: Transform +- proto: CigaretteCapsaicinOil + entities: + - uid: 322 + components: + - pos: 31.649122,18.823664 + parent: 1653 + type: Transform +- proto: CigaretteSyndicate + entities: + - uid: 439 + components: + - flags: InContainer + type: MetaData + - parent: 438 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingBackpackDuffelCargo + entities: + - uid: 288 + components: + - pos: 17.527935,7.630492 + parent: 1653 + type: Transform +- proto: ClothingHeadHatFlowerCrown + entities: + - uid: 233 + components: + - pos: 27.441708,39.437607 + parent: 1653 + type: Transform +- proto: ClothingHeadHatGladiator + entities: + - uid: 7 + components: + - flags: InContainer + type: MetaData + - parent: 6 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingNeckCloakTrans + entities: + - uid: 332 + components: + - flags: InContainer + type: MetaData + - parent: 331 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingOuterHardsuitSalvage + entities: + - uid: 432 + components: + - pos: 4.447749,45.58406 + parent: 1653 + type: Transform +- proto: ClothingShoesClown + entities: + - uid: 202 + components: + - flags: InContainer + type: MetaData + - parent: 200 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingUniformJumpsuitGladiator + entities: + - uid: 215 + components: + - flags: InContainer + type: MetaData + - parent: 214 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingUniformJumpsuitMonasticRobeDark + entities: + - uid: 40 + components: + - pos: 36.46349,13.791253 + parent: 1653 + type: Transform + - uid: 99 + components: + - pos: 36.27599,15.338128 + parent: 1653 + type: Transform + - uid: 216 + components: + - pos: 35.46349,15.619378 + parent: 1653 + type: Transform + - uid: 272 + components: + - pos: 34.05724,14.385003 + parent: 1653 + type: Transform + - uid: 273 + components: + - pos: 34.58849,15.213128 + parent: 1653 + type: Transform + - uid: 357 + components: + - pos: 35.58849,13.213128 + parent: 1653 + type: Transform + - uid: 358 + components: + - pos: 34.697865,13.588128 + parent: 1653 + type: Transform + - uid: 443 + components: + - pos: 36.80724,14.744378 + parent: 1653 + type: Transform +- proto: Cobweb1 + entities: + - uid: 190 + components: + - pos: 24.5,10.5 + parent: 1653 + type: Transform + - uid: 289 + components: + - pos: 0.5,10.5 + parent: 1653 + type: Transform + - uid: 290 + components: + - pos: 32.5,16.5 + parent: 1653 + type: Transform + - uid: 384 + components: + - pos: 0.5,36.5 + parent: 1653 + type: Transform + - uid: 385 + components: + - pos: 28.5,32.5 + parent: 1653 + type: Transform + - uid: 393 + components: + - pos: 12.5,22.5 + parent: 1653 + type: Transform + - uid: 418 + components: + - pos: 0.5,40.5 + parent: 1653 + type: Transform + - uid: 458 + components: + - pos: 2.5,46.5 + parent: 1653 + type: Transform +- proto: Cobweb2 + entities: + - uid: 137 + components: + - pos: 33.5,9.5 + parent: 1653 + type: Transform + - uid: 252 + components: + - pos: 26.5,32.5 + parent: 1653 + type: Transform + - uid: 291 + components: + - pos: 34.5,3.5 + parent: 1653 + type: Transform + - uid: 314 + components: + - pos: 22.5,10.5 + parent: 1653 + type: Transform + - uid: 341 + components: + - pos: 20.5,46.5 + parent: 1653 + type: Transform + - uid: 382 + components: + - pos: 14.5,40.5 + parent: 1653 + type: Transform + - uid: 383 + components: + - pos: 32.5,20.5 + parent: 1653 + type: Transform + - uid: 417 + components: + - pos: 24.5,2.5 + parent: 1653 + type: Transform +- proto: ComfyChair + entities: + - uid: 381 + components: + - pos: 13.5,27.5 + parent: 1653 + type: Transform +- proto: ConveyorBelt + entities: + - uid: 101 + components: + - rot: -1.5707963267948966 rad + pos: 27.5,10.5 + parent: 1653 + type: Transform + - uid: 102 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,10.5 + parent: 1653 + type: Transform + - uid: 103 + components: + - rot: -1.5707963267948966 rad + pos: 25.5,10.5 + parent: 1653 + type: Transform + - uid: 104 + components: + - rot: -1.5707963267948966 rad + pos: 29.5,10.5 + parent: 1653 + type: Transform + - uid: 105 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,10.5 + parent: 1653 + type: Transform + - uid: 106 + components: + - rot: -1.5707963267948966 rad + pos: 26.5,10.5 + parent: 1653 + type: Transform +- proto: CrateCoffin + entities: + - uid: 331 + components: + - pos: 16.5,32.5 + parent: 1653 + type: Transform + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 332 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer + - uid: 435 + components: + - pos: 22.5,32.5 + parent: 1653 + type: Transform + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 436 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer + - uid: 438 + components: + - pos: 23.5,32.5 + parent: 1653 + type: Transform + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 439 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer + - uid: 441 + components: + - pos: 20.5,30.5 + parent: 1653 + type: Transform + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 442 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer +- proto: CrateEmergencyRadiation + entities: + - uid: 364 + components: + - pos: 15.5,36.5 + parent: 1653 + type: Transform +- proto: CrateEmptySpawner + entities: + - uid: 128 + components: + - pos: 4.5,40.5 + parent: 1653 + type: Transform +- proto: CrateFilledSpawner + entities: + - uid: 111 + components: + - pos: 8.5,2.5 + parent: 1653 + type: Transform + - uid: 367 + components: + - pos: 18.5,46.5 + parent: 1653 + type: Transform + - uid: 411 + components: + - pos: 13.5,36.5 + parent: 1653 + type: Transform + - uid: 490 + components: + - pos: 28.5,8.5 + parent: 1653 + type: Transform +- proto: CrateNPCPenguin + entities: + - uid: 474 + components: + - pos: 13.5,25.5 + parent: 1653 + type: Transform +- proto: CrateWoodenGrave + entities: + - uid: 6 + components: + - pos: 27.5,39.5 + parent: 1653 + type: Transform + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 7 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer + - uid: 200 + components: + - pos: 42.5,39.5 + parent: 1653 + type: Transform + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 202 + - 201 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer + - uid: 214 + components: + - pos: 28.5,39.5 + parent: 1653 + type: Transform + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 215 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer + - uid: 231 + components: + - pos: 26.5,39.5 + parent: 1653 + type: Transform + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 232 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer +- proto: CrystalSpawner + entities: + - uid: 129 + components: + - pos: 27.5,35.5 + parent: 1653 + type: Transform + - uid: 131 + components: + - pos: 29.5,34.5 + parent: 1653 + type: Transform + - uid: 132 + components: + - pos: 30.5,35.5 + parent: 1653 + type: Transform + - uid: 172 + components: + - pos: 19.5,21.5 + parent: 1653 + type: Transform + - uid: 178 + components: + - pos: 20.5,20.5 + parent: 1653 + type: Transform + - uid: 298 + components: + - pos: 13.5,38.5 + parent: 1653 + type: Transform + - uid: 300 + components: + - pos: 9.5,40.5 + parent: 1653 + type: Transform + - uid: 301 + components: + - pos: 30.5,36.5 + parent: 1653 + type: Transform + - uid: 308 + components: + - pos: 31.5,36.5 + parent: 1653 + type: Transform +- proto: DoubleEmergencyNitrogenTankFilled + entities: + - uid: 309 + components: + - pos: 21.254128,38.485172 + parent: 1653 + type: Transform +- proto: DresserFilled + entities: + - uid: 413 + components: + - pos: 20.5,44.5 + parent: 1653 + type: Transform +- proto: FenceMetalCorner + entities: + - uid: 321 + components: + - rot: 1.5707963267948966 rad + pos: 20.5,35.5 + parent: 1653 + type: Transform + - uid: 477 + components: + - rot: -1.5707963267948966 rad + pos: 14.5,35.5 + parent: 1653 + type: Transform +- proto: FenceMetalGate + entities: + - uid: 268 + components: + - rot: 3.141592653589793 rad + pos: 17.5,35.5 + parent: 1653 + type: Transform +- proto: FenceMetalStraight + entities: + - uid: 267 + components: + - rot: 1.5707963267948966 rad + pos: 19.5,35.5 + parent: 1653 + type: Transform + - uid: 293 + components: + - pos: 14.5,36.5 + parent: 1653 + type: Transform + - uid: 476 + components: + - rot: 1.5707963267948966 rad + pos: 15.5,35.5 + parent: 1653 + type: Transform + - uid: 478 + components: + - rot: 1.5707963267948966 rad + pos: 16.5,35.5 + parent: 1653 + type: Transform + - uid: 479 + components: + - pos: 20.5,34.5 + parent: 1653 + type: Transform + - uid: 480 + components: + - rot: 1.5707963267948966 rad + pos: 18.5,35.5 + parent: 1653 + type: Transform +- proto: FlashlightLantern + entities: + - uid: 372 + components: + - pos: 16.286905,3.5055985 + parent: 1653 + type: Transform +- proto: FloorChasmEntity + entities: + - uid: 3 + components: + - pos: 5.5,0.5 + parent: 1653 + type: Transform + - uid: 4 + components: + - pos: 6.5,4.5 + parent: 1653 + type: Transform + - uid: 5 + components: + - pos: 6.5,3.5 + parent: 1653 + type: Transform + - uid: 17 + components: + - pos: 9.5,4.5 + parent: 1653 + type: Transform + - uid: 18 + components: + - pos: 4.5,4.5 + parent: 1653 + type: Transform + - uid: 19 + components: + - pos: 41.5,1.5 + parent: 1653 + type: Transform + - uid: 20 + components: + - pos: 44.5,1.5 + parent: 1653 + type: Transform + - uid: 21 + components: + - pos: 45.5,1.5 + parent: 1653 + type: Transform + - uid: 22 + components: + - pos: 44.5,0.5 + parent: 1653 + type: Transform + - uid: 23 + components: + - pos: 45.5,0.5 + parent: 1653 + type: Transform + - uid: 24 + components: + - pos: 47.5,0.5 + parent: 1653 + type: Transform + - uid: 25 + components: + - pos: 48.5,0.5 + parent: 1653 + type: Transform + - uid: 76 + components: + - pos: 15.5,4.5 + parent: 1653 + type: Transform + - uid: 77 + components: + - pos: 14.5,0.5 + parent: 1653 + type: Transform + - uid: 78 + components: + - pos: 14.5,1.5 + parent: 1653 + type: Transform + - uid: 82 + components: + - pos: 12.5,1.5 + parent: 1653 + type: Transform + - uid: 83 + components: + - pos: 13.5,4.5 + parent: 1653 + type: Transform + - uid: 84 + components: + - pos: 12.5,0.5 + parent: 1653 + type: Transform + - uid: 85 + components: + - pos: 13.5,0.5 + parent: 1653 + type: Transform + - uid: 86 + components: + - pos: 13.5,1.5 + parent: 1653 + type: Transform + - uid: 87 + components: + - pos: 46.5,1.5 + parent: 1653 + type: Transform + - uid: 88 + components: + - pos: 46.5,0.5 + parent: 1653 + type: Transform + - uid: 97 + components: + - pos: 14.5,4.5 + parent: 1653 + type: Transform + - uid: 112 + components: + - pos: 7.5,0.5 + parent: 1653 + type: Transform + - uid: 114 + components: + - pos: 10.5,0.5 + parent: 1653 + type: Transform + - uid: 115 + components: + - pos: 10.5,1.5 + parent: 1653 + type: Transform + - uid: 116 + components: + - pos: 11.5,4.5 + parent: 1653 + type: Transform + - uid: 118 + components: + - pos: 11.5,3.5 + parent: 1653 + type: Transform + - uid: 119 + components: + - pos: 11.5,0.5 + parent: 1653 + type: Transform + - uid: 120 + components: + - pos: 11.5,1.5 + parent: 1653 + type: Transform + - uid: 235 + components: + - pos: 49.5,0.5 + parent: 1653 + type: Transform + - uid: 241 + components: + - pos: 3.5,4.5 + parent: 1653 + type: Transform + - uid: 242 + components: + - pos: 2.5,0.5 + parent: 1653 + type: Transform + - uid: 245 + components: + - pos: 10.5,3.5 + parent: 1653 + type: Transform + - uid: 250 + components: + - pos: 4.5,3.5 + parent: 1653 + type: Transform + - uid: 258 + components: + - pos: 3.5,0.5 + parent: 1653 + type: Transform + - uid: 278 + components: + - pos: 40.5,2.5 + parent: 1653 + type: Transform + - uid: 315 + components: + - pos: 1.5,4.5 + parent: 1653 + type: Transform + - uid: 317 + components: + - pos: 5.5,3.5 + parent: 1653 + type: Transform + - uid: 337 + components: + - pos: 4.5,0.5 + parent: 1653 + type: Transform + - uid: 340 + components: + - pos: 42.5,2.5 + parent: 1653 + type: Transform + - uid: 350 + components: + - pos: 42.5,1.5 + parent: 1653 + type: Transform + - uid: 354 + components: + - pos: 12.5,3.5 + parent: 1653 + type: Transform + - uid: 359 + components: + - pos: 15.5,1.5 + parent: 1653 + type: Transform + - uid: 360 + components: + - pos: 15.5,0.5 + parent: 1653 + type: Transform + - uid: 363 + components: + - pos: 12.5,4.5 + parent: 1653 + type: Transform + - uid: 368 + components: + - pos: 43.5,2.5 + parent: 1653 + type: Transform + - uid: 377 + components: + - pos: 7.5,4.5 + parent: 1653 + type: Transform + - uid: 378 + components: + - pos: 6.5,1.5 + parent: 1653 + type: Transform + - uid: 387 + components: + - pos: 43.5,1.5 + parent: 1653 + type: Transform + - uid: 398 + components: + - pos: 41.5,2.5 + parent: 1653 + type: Transform + - uid: 401 + components: + - pos: 5.5,1.5 + parent: 1653 + type: Transform + - uid: 404 + components: + - pos: 5.5,4.5 + parent: 1653 + type: Transform + - uid: 452 + components: + - pos: 2.5,4.5 + parent: 1653 + type: Transform + - uid: 453 + components: + - pos: 1.5,0.5 + parent: 1653 + type: Transform + - uid: 459 + components: + - pos: 44.5,2.5 + parent: 1653 + type: Transform + - uid: 468 + components: + - pos: 3.5,3.5 + parent: 1653 + type: Transform + - uid: 471 + components: + - pos: 6.5,0.5 + parent: 1653 + type: Transform + - uid: 472 + components: + - pos: 10.5,4.5 + parent: 1653 + type: Transform + - uid: 473 + components: + - pos: 9.5,0.5 + parent: 1653 + type: Transform +- proto: FloorWaterEntity + entities: + - uid: 13 + components: + - pos: 27.5,14.5 + parent: 1653 + type: Transform + - uid: 14 + components: + - pos: 29.5,14.5 + parent: 1653 + type: Transform + - uid: 15 + components: + - pos: 28.5,15.5 + parent: 1653 + type: Transform + - uid: 43 + components: + - pos: 26.5,16.5 + parent: 1653 + type: Transform + - uid: 45 + components: + - pos: 30.5,13.5 + parent: 1653 + type: Transform + - uid: 46 + components: + - pos: 29.5,13.5 + parent: 1653 + type: Transform + - uid: 47 + components: + - pos: 28.5,12.5 + parent: 1653 + type: Transform + - uid: 49 + components: + - pos: 27.5,16.5 + parent: 1653 + type: Transform + - uid: 65 + components: + - pos: 29.5,12.5 + parent: 1653 + type: Transform + - uid: 72 + components: + - pos: 25.5,13.5 + parent: 1653 + type: Transform + - uid: 93 + components: + - pos: 24.5,15.5 + parent: 1653 + type: Transform + - uid: 100 + components: + - pos: 27.5,12.5 + parent: 1653 + type: Transform + - uid: 221 + components: + - pos: 26.5,13.5 + parent: 1653 + type: Transform + - uid: 222 + components: + - pos: 26.5,14.5 + parent: 1653 + type: Transform + - uid: 223 + components: + - pos: 26.5,15.5 + parent: 1653 + type: Transform + - uid: 224 + components: + - pos: 27.5,13.5 + parent: 1653 + type: Transform + - uid: 444 + components: + - pos: 28.5,14.5 + parent: 1653 + type: Transform + - uid: 445 + components: + - pos: 27.5,15.5 + parent: 1653 + type: Transform + - uid: 446 + components: + - pos: 28.5,13.5 + parent: 1653 + type: Transform + - uid: 447 + components: + - pos: 25.5,15.5 + parent: 1653 + type: Transform + - uid: 448 + components: + - pos: 25.5,14.5 + parent: 1653 + type: Transform +- proto: FloraRockSolid01 + entities: + - uid: 63 + components: + - pos: 1.4643247,15.527116 + parent: 1653 + type: Transform + - uid: 230 + components: + - pos: 25.553497,34.710487 + parent: 1653 + type: Transform + - uid: 281 + components: + - pos: 7.4866443,6.552367 + parent: 1653 + type: Transform + - uid: 295 + components: + - pos: 0.911531,32.452705 + parent: 1653 + type: Transform + - uid: 303 + components: + - pos: 21.638557,19.381065 + parent: 1653 + type: Transform + - uid: 374 + components: + - pos: 3.5664039,19.498943 + parent: 1653 + type: Transform +- proto: FloraRockSolid02 + entities: + - uid: 64 + components: + - pos: 11.966135,14.804356 + parent: 1653 + type: Transform + - uid: 171 + components: + - pos: 8.535091,20.608318 + parent: 1653 + type: Transform + - uid: 306 + components: + - pos: 12.087021,32.358955 + parent: 1653 + type: Transform +- proto: FloraRockSolid03 + entities: + - uid: 90 + components: + - pos: 23.53006,1.5159609 + parent: 1653 + type: Transform + - uid: 170 + components: + - pos: 1.9101539,21.811443 + parent: 1653 + type: Transform + - uid: 199 + components: + - pos: 44.689724,39.621048 + parent: 1653 + type: Transform + - uid: 243 + components: + - pos: 21.468937,26.614876 + parent: 1653 + type: Transform + - uid: 296 + components: + - pos: 9.355139,30.733953 + parent: 1653 + type: Transform + - uid: 330 + components: + - pos: 35.552525,31.574036 + parent: 1653 + type: Transform + - uid: 361 + components: + - pos: 5.433075,13.527116 + parent: 1653 + type: Transform + - uid: 375 + components: + - pos: 1.5647693,8.536742 + parent: 1653 + type: Transform +- proto: FoodBoxDonkpocketPizza + entities: + - uid: 209 + components: + - pos: 0.9877088,26.184813 + parent: 1653 + type: Transform +- proto: FoodCornTrash + entities: + - uid: 2 + components: + - pos: 26.81556,20.415936 + parent: 1653 + type: Transform + - uid: 109 + components: + - pos: 27.367641,20.311768 + parent: 1653 + type: Transform + - uid: 113 + components: + - pos: 27.388475,19.988852 + parent: 1653 + type: Transform + - uid: 249 + components: + - pos: 27.638475,20.843018 + parent: 1653 + type: Transform + - uid: 254 + components: + - pos: 28.055141,20.301352 + parent: 1653 + type: Transform + - uid: 319 + components: + - pos: 27.482225,20.530518 + parent: 1653 + type: Transform + - uid: 391 + components: + - pos: 26.930141,20.728436 + parent: 1653 + type: Transform + - uid: 475 + components: + - pos: 27.84681,20.634686 + parent: 1653 + type: Transform +- proto: FoodMeatHuman + entities: + - uid: 186 + components: + - pos: 34.42388,40.652298 + parent: 1653 + type: Transform + - uid: 187 + components: + - pos: 34.64263,40.511673 + parent: 1653 + type: Transform +- proto: FoodMeatLizardtailKebab + entities: + - uid: 42 + components: + - pos: 38.036457,12.588582 + parent: 1653 + type: Transform +- proto: FoodMeatRouny + entities: + - uid: 183 + components: + - pos: 36.45513,40.589798 + parent: 1653 + type: Transform +- proto: FoodSnackPopcorn + entities: + - uid: 74 + components: + - pos: 25.648891,21.040936 + parent: 1653 + type: Transform + - uid: 79 + components: + - pos: 25.763475,21.645102 + parent: 1653 + type: Transform + - uid: 81 + components: + - pos: 25.461391,21.207602 + parent: 1653 + type: Transform + - uid: 117 + components: + - pos: 25.857225,21.207602 + parent: 1653 + type: Transform + - uid: 240 + components: + - pos: 25.97181,21.030518 + parent: 1653 + type: Transform +- proto: FoodTinPeachesMaintOpen + entities: + - uid: 208 + components: + - pos: 2.343669,28.087896 + parent: 1653 + type: Transform +- proto: GeigerCounter + entities: + - uid: 228 + components: + - rot: -1.5707963267948966 rad + pos: 2.536777,44.354866 + parent: 1653 + type: Transform +- proto: Girder + entities: + - uid: 351 + components: + - rot: 1.5707963267948966 rad + pos: 13.5,45.5 + parent: 1653 + type: Transform +- proto: GlowstickRed + entities: + - uid: 256 + components: + - pos: 12.648991,38.39441 + parent: 1653 + type: Transform + - uid: 264 + components: + - pos: 22.50236,34.545544 + parent: 1653 + type: Transform + - uid: 271 + components: + - pos: 4.5084944,44.49994 + parent: 1653 + type: Transform + - uid: 294 + components: + - pos: 10.820133,30.586414 + parent: 1653 + type: Transform + - uid: 316 + components: + - pos: 26.3416,18.72954 + parent: 1653 + type: Transform + - uid: 414 + components: + - pos: 1.8548665,32.055164 + parent: 1653 + type: Transform + - uid: 420 + components: + - pos: 22.799234,34.62367 + parent: 1653 + type: Transform + - uid: 421 + components: + - pos: 22.299234,34.608044 + parent: 1653 + type: Transform +- proto: GoldOre1 + entities: + - uid: 134 + components: + - pos: 8.948225,24.854458 + parent: 1653 + type: Transform + - uid: 138 + components: + - pos: 26.486202,10.538733 + parent: 1653 + type: Transform + - uid: 139 + components: + - pos: 26.486202,10.538733 + parent: 1653 + type: Transform + - uid: 144 + components: + - pos: 26.486202,10.538733 + parent: 1653 + type: Transform + - uid: 145 + components: + - pos: 26.486202,10.538733 + parent: 1653 + type: Transform + - uid: 191 + components: + - pos: 26.486202,10.538733 + parent: 1653 + type: Transform + - uid: 266 + components: + - pos: 9.448225,25.291958 + parent: 1653 + type: Transform + - uid: 328 + components: + - pos: 8.541975,25.885708 + parent: 1653 + type: Transform + - uid: 379 + components: + - pos: 10.026349,24.557583 + parent: 1653 + type: Transform +- proto: hydroponicsSoil + entities: + - uid: 1 + components: + - pos: 25.5,20.5 + parent: 1653 + type: Transform + - uid: 390 + components: + - pos: 27.5,21.5 + parent: 1653 + type: Transform + - uid: 423 + components: + - pos: 25.5,19.5 + parent: 1653 + type: Transform +- proto: ImprovisedExplosiveFuel + entities: + - uid: 203 + components: + - pos: 36.443645,31.673359 + parent: 1653 + type: Transform +- proto: IngotGold1 + entities: + - uid: 312 + components: + - pos: 10.073225,25.588833 + parent: 1653 + type: Transform + - uid: 313 + components: + - pos: 10.4951,24.791958 + parent: 1653 + type: Transform + - uid: 426 + components: + - pos: 8.385725,25.104458 + parent: 1653 + type: Transform + - uid: 449 + components: + - pos: 10.698225,26.120083 + parent: 1653 + type: Transform + - uid: 460 + components: + - pos: 9.120099,24.323208 + parent: 1653 + type: Transform +- proto: IngotSilver + entities: + - uid: 262 + components: + - pos: 20.52197,46.638992 + parent: 1653 + type: Transform +- proto: KitchenElectricGrill + entities: + - uid: 205 + components: + - pos: 35.5,40.5 + parent: 1653 + type: Transform +- proto: KitchenMicrowave + entities: + - uid: 244 + components: + - pos: 26.5,21.5 + parent: 1653 + type: Transform +- proto: KukriKnife + entities: + - uid: 130 + components: + - pos: 2.508058,45.496773 + parent: 1653 + type: Transform +- proto: LampGold + entities: + - uid: 380 + components: + - pos: 13.291822,27.041958 + parent: 1653 + type: Transform +- proto: Lantern + entities: + - uid: 28 + components: + - pos: 24.446167,4.4534607 + parent: 1653 + type: Transform + - uid: 29 + components: + - pos: 33.45849,0.51596093 + parent: 1653 + type: Transform + - uid: 89 + components: + - pos: 18.58248,0.51596093 + parent: 1653 + type: Transform + - uid: 180 + components: + - pos: 20.497932,21.77169 + parent: 1653 + type: Transform +- proto: MaintenancePlantSpawner + entities: + - uid: 67 + components: + - pos: 21.5,16.5 + parent: 1653 + type: Transform + - uid: 70 + components: + - pos: 17.5,15.5 + parent: 1653 + type: Transform + - uid: 73 + components: + - pos: 21.5,14.5 + parent: 1653 + type: Transform + - uid: 217 + components: + - pos: 22.5,12.5 + parent: 1653 + type: Transform + - uid: 218 + components: + - pos: 16.5,13.5 + parent: 1653 + type: Transform +- proto: MaintenanceToolSpawner + entities: + - uid: 57 + components: + - pos: 39.5,0.5 + parent: 1653 + type: Transform + - uid: 96 + components: + - pos: 51.5,1.5 + parent: 1653 + type: Transform + - uid: 416 + components: + - pos: 7.5,32.5 + parent: 1653 + type: Transform +- proto: MaintenanceWeaponSpawner + entities: + - uid: 31 + components: + - pos: 22.5,0.5 + parent: 1653 + type: Transform + - uid: 32 + components: + - pos: 1.5,3.5 + parent: 1653 + type: Transform + - uid: 51 + components: + - pos: 52.5,0.5 + parent: 1653 + type: Transform + - uid: 292 + components: + - pos: 34.5,31.5 + parent: 1653 + type: Transform +- proto: MaterialWoodPlank + entities: + - uid: 442 + components: + - flags: InContainer + type: MetaData + - parent: 441 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: MedkitOxygenFilled + entities: + - uid: 225 + components: + - pos: 17.973127,40.40886 + parent: 1653 + type: Transform +- proto: MiningWindow + entities: + - uid: 155 + components: + - pos: 19.5,47.5 + parent: 1653 + type: Transform + - uid: 162 + components: + - pos: 3.5,47.5 + parent: 1653 + type: Transform + - uid: 248 + components: + - pos: 11.5,47.5 + parent: 1653 + type: Transform +- proto: OreBox + entities: + - uid: 184 + components: + - pos: 2.5,24.5 + parent: 1653 + type: Transform + - uid: 270 + components: + - pos: 37.5,4.5 + parent: 1653 + type: Transform + - uid: 283 + components: + - pos: 17.5,8.5 + parent: 1653 + type: Transform + - uid: 488 + components: + - pos: 29.5,8.5 + parent: 1653 + type: Transform +- proto: OreProcessor + entities: + - uid: 269 + components: + - pos: 24.5,10.5 + parent: 1653 + type: Transform + - uid: 320 + components: + - pos: 3.5,46.5 + parent: 1653 + type: Transform +- proto: OrganHumanAppendix + entities: + - uid: 148 + components: + - pos: 10.481619,44.360027 + parent: 1653 + type: Transform +- proto: OrganHumanHeart + entities: + - uid: 206 + components: + - pos: 9.478245,26.669188 + parent: 1653 + type: Transform +- proto: PaintingSadClown + entities: + - uid: 122 + components: + - pos: 43.5,39.5 + parent: 1653 + type: Transform +- proto: PaintingSkeletonCigarette + entities: + - uid: 362 + components: + - pos: 32.5,21.5 + parent: 1653 + type: Transform +- proto: Pickaxe + entities: + - uid: 158 + components: + - pos: 21.525682,34.54406 + parent: 1653 + type: Transform + - uid: 179 + components: + - pos: 21.743324,22.05294 + parent: 1653 + type: Transform +- proto: PlasmaOre1 + entities: + - uid: 469 + components: + - pos: 30.486202,10.491858 + parent: 1653 + type: Transform + - uid: 482 + components: + - pos: 30.486202,10.491858 + parent: 1653 + type: Transform + - uid: 483 + components: + - pos: 30.486202,10.491858 + parent: 1653 + type: Transform + - uid: 485 + components: + - pos: 30.486202,10.491858 + parent: 1653 + type: Transform + - uid: 489 + components: + - pos: 30.486202,10.491858 + parent: 1653 + type: Transform +- proto: PlushieLizard + entities: + - uid: 41 + components: + - pos: 35.503193,14.666253 + parent: 1653 + type: Transform +- proto: PlushiePenguin + entities: + - uid: 415 + components: + - pos: 13.526197,27.541958 + parent: 1653 + type: Transform +- proto: PortableGeneratorJrPacman + entities: + - uid: 392 + components: + - pos: 37.5,31.5 + parent: 1653 + type: Transform +- proto: PottedPlantRandom + entities: + - uid: 44 + components: + - pos: 44.5,14.5 + parent: 1653 + type: Transform + - uid: 50 + components: + - pos: 45.5,14.5 + parent: 1653 + type: Transform + - uid: 94 + components: + - pos: 42.5,14.5 + parent: 1653 + type: Transform + - uid: 347 + components: + - pos: 41.5,14.5 + parent: 1653 + type: Transform +- proto: PowerCellHyperPrinted + entities: + - uid: 52 + components: + - pos: 31.760115,2.7803574 + parent: 1653 + type: Transform +- proto: PoweredSmallLight + entities: + - uid: 156 + components: + - rot: 1.5707963267948966 rad + pos: 10.5,45.5 + parent: 1653 + type: Transform +- proto: PuddleVomit + entities: + - uid: 229 + components: + - pos: 3.5,45.5 + parent: 1653 + type: Transform +- proto: Rack + entities: + - uid: 276 + components: + - pos: 18.5,45.5 + parent: 1653 + type: Transform + - uid: 334 + components: + - pos: 20.5,45.5 + parent: 1653 + type: Transform + - uid: 335 + components: + - pos: 20.5,46.5 + parent: 1653 + type: Transform + - uid: 352 + components: + - pos: 21.5,34.5 + parent: 1653 + type: Transform + - uid: 365 + components: + - pos: 10.5,46.5 + parent: 1653 + type: Transform + - uid: 403 + components: + - pos: 4.5,45.5 + parent: 1653 + type: Transform + - uid: 410 + components: + - pos: 22.5,34.5 + parent: 1653 + type: Transform +- proto: Railing + entities: + - uid: 260 + components: + - rot: 3.141592653589793 rad + pos: 27.5,9.5 + parent: 1653 + type: Transform + - uid: 261 + components: + - rot: 3.141592653589793 rad + pos: 28.5,9.5 + parent: 1653 + type: Transform + - uid: 277 + components: + - rot: 3.141592653589793 rad + pos: 26.5,9.5 + parent: 1653 + type: Transform + - uid: 327 + components: + - rot: 3.141592653589793 rad + pos: 30.5,9.5 + parent: 1653 + type: Transform + - uid: 376 + components: + - rot: 3.141592653589793 rad + pos: 25.5,9.5 + parent: 1653 + type: Transform + - uid: 467 + components: + - rot: 3.141592653589793 rad + pos: 29.5,9.5 + parent: 1653 + type: Transform +- proto: RailingCornerSmall + entities: + - uid: 371 + components: + - pos: 31.5,9.5 + parent: 1653 + type: Transform +- proto: RandomArtifactSpawner + entities: + - uid: 48 + components: + - pos: 43.5,14.5 + parent: 1653 + type: Transform +- proto: RandomCargoCorpseSpawner + entities: + - uid: 274 + components: + - pos: 11.5,46.5 + parent: 1653 + type: Transform +- proto: RandomServiceCorpseSpawner + entities: + - uid: 400 + components: + - pos: 19.5,45.5 + parent: 1653 + type: Transform +- proto: SalvageMaterialCrateSpawner + entities: + - uid: 481 + components: + - pos: 27.5,8.5 + parent: 1653 + type: Transform + - uid: 491 + components: + - pos: 30.5,8.5 + parent: 1653 + type: Transform +- proto: ShadowTree03 + entities: + - uid: 68 + components: + - pos: 19.477606,14.337568 + parent: 1653 + type: Transform +- proto: SheetSteel1 + entities: + - uid: 457 + components: + - pos: 13.481619,44.391277 + parent: 1653 + type: Transform +- proto: ShellShotgunIncendiary + entities: + - uid: 405 + components: + - pos: 18.58831,45.763992 + parent: 1653 + type: Transform +- proto: ShellShotgunSlug + entities: + - uid: 339 + components: + - pos: 18.603935,45.404617 + parent: 1653 + type: Transform +- proto: Shovel + entities: + - uid: 30 + components: + - pos: 33.425346,4.383849 + parent: 1653 + type: Transform + - uid: 394 + components: + - pos: 31.844257,31.05841 + parent: 1653 + type: Transform +- proto: SignNTMine + entities: + - uid: 253 + components: + - pos: 4.5,43.5 + parent: 1653 + type: Transform + - uid: 326 + components: + - pos: 20.5,43.5 + parent: 1653 + type: Transform +- proto: SilverOre1 + entities: + - uid: 198 + components: + - pos: 29.423702,10.476233 + parent: 1653 + type: Transform + - uid: 318 + components: + - pos: 29.423702,10.476233 + parent: 1653 + type: Transform + - uid: 484 + components: + - pos: 29.423702,10.476233 + parent: 1653 + type: Transform + - uid: 486 + components: + - pos: 29.423702,10.476233 + parent: 1653 + type: Transform + - uid: 487 + components: + - pos: 29.423702,10.476233 + parent: 1653 + type: Transform +- proto: SmallLight + entities: + - uid: 336 + components: + - rot: 1.5707963267948966 rad + pos: 18.5,45.5 + parent: 1653 + type: Transform + - uid: 434 + components: + - rot: 1.5707963267948966 rad + pos: 2.5,45.5 + parent: 1653 + type: Transform +- proto: SpawnMobFrog + entities: + - uid: 386 + components: + - pos: 18.5,44.5 + parent: 1653 + type: Transform +- proto: SpearBone + entities: + - uid: 232 + components: + - flags: InContainer + type: MetaData + - parent: 231 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: SteelBench + entities: + - uid: 71 + components: + - pos: 19.5,13.5 + parent: 1653 + type: Transform +- proto: SteelOre + entities: + - uid: 197 + components: + - pos: 28.470577,10.523108 + parent: 1653 + type: Transform +- proto: TableCarpet + entities: + - uid: 465 + components: + - pos: 13.5,26.5 + parent: 1653 + type: Transform +- proto: TableReinforced + entities: + - uid: 246 + components: + - pos: 4.5,46.5 + parent: 1653 + type: Transform +- proto: TableWood + entities: + - uid: 56 + components: + - pos: 39.5,0.5 + parent: 1653 + type: Transform + - uid: 59 + components: + - pos: 51.5,1.5 + parent: 1653 + type: Transform + - uid: 124 + components: + - pos: 34.5,40.5 + parent: 1653 + type: Transform + - uid: 133 + components: + - pos: 5.5,40.5 + parent: 1653 + type: Transform + - uid: 173 + components: + - pos: 20.5,21.5 + parent: 1653 + type: Transform + - uid: 226 + components: + - pos: 36.5,40.5 + parent: 1653 + type: Transform + - uid: 227 + components: + - pos: 35.5,40.5 + parent: 1653 + type: Transform + - uid: 333 + components: + - pos: 36.5,31.5 + parent: 1653 + type: Transform +- proto: ToiletDirtyWater + entities: + - uid: 406 + components: + - pos: 32.5,20.5 + parent: 1653 + type: Transform +- proto: Torch + entities: + - uid: 58 + components: + - pos: 52.617035,4.4522324 + parent: 1653 + type: Transform + - uid: 60 + components: + - pos: 38.654633,2.7959824 + parent: 1653 + type: Transform + - uid: 135 + components: + - pos: 5.4760814,40.63729 + parent: 1653 + type: Transform + - uid: 136 + components: + - pos: 5.6792064,40.621666 + parent: 1653 + type: Transform + - uid: 366 + components: + - pos: 10.669119,46.594402 + parent: 1653 + type: Transform +- proto: TorsoSkeleton + entities: + - uid: 325 + components: + - pos: 32.5085,20.620539 + parent: 1653 + type: Transform +- proto: TrashBakedBananaPeel + entities: + - uid: 210 + components: + - pos: 5.484687,26.403563 + parent: 1653 + type: Transform +- proto: UraniumOre + entities: + - uid: 433 + components: + - pos: 4.487873,46.58196 + parent: 1653 + type: Transform +- proto: UraniumOre1 + entities: + - uid: 192 + components: + - pos: 27.517452,10.507483 + parent: 1653 + type: Transform + - uid: 193 + components: + - pos: 27.517452,10.507483 + parent: 1653 + type: Transform + - uid: 194 + components: + - pos: 27.517452,10.507483 + parent: 1653 + type: Transform + - uid: 195 + components: + - pos: 27.517452,10.507483 + parent: 1653 + type: Transform + - uid: 196 + components: + - pos: 27.517452,10.507483 + parent: 1653 + type: Transform +- proto: WallMining + entities: + - uid: 11 + components: + - pos: 13.5,46.5 + parent: 1653 + type: Transform + - uid: 150 + components: + - pos: 18.5,43.5 + parent: 1653 + type: Transform + - uid: 151 + components: + - pos: 17.5,44.5 + parent: 1653 + type: Transform + - uid: 152 + components: + - pos: 17.5,46.5 + parent: 1653 + type: Transform + - uid: 153 + components: + - pos: 18.5,47.5 + parent: 1653 + type: Transform + - uid: 154 + components: + - pos: 20.5,47.5 + parent: 1653 + type: Transform + - uid: 157 + components: + - pos: 17.5,45.5 + parent: 1653 + type: Transform + - uid: 159 + components: + - pos: 4.5,47.5 + parent: 1653 + type: Transform + - uid: 160 + components: + - pos: 2.5,47.5 + parent: 1653 + type: Transform + - uid: 161 + components: + - pos: 1.5,44.5 + parent: 1653 + type: Transform + - uid: 163 + components: + - pos: 5.5,45.5 + parent: 1653 + type: Transform + - uid: 164 + components: + - pos: 1.5,46.5 + parent: 1653 + type: Transform + - uid: 165 + components: + - pos: 1.5,45.5 + parent: 1653 + type: Transform + - uid: 247 + components: + - pos: 10.5,47.5 + parent: 1653 + type: Transform + - uid: 265 + components: + - pos: 21.5,46.5 + parent: 1653 + type: Transform + - uid: 329 + components: + - pos: 20.5,43.5 + parent: 1653 + type: Transform + - uid: 353 + components: + - pos: 9.5,46.5 + parent: 1653 + type: Transform + - uid: 370 + components: + - pos: 5.5,44.5 + parent: 1653 + type: Transform + - uid: 373 + components: + - pos: 5.5,46.5 + parent: 1653 + type: Transform + - uid: 402 + components: + - rot: 1.5707963267948966 rad + pos: 10.5,43.5 + parent: 1653 + type: Transform + - uid: 425 + components: + - pos: 21.5,45.5 + parent: 1653 + type: Transform + - uid: 427 + components: + - pos: 21.5,44.5 + parent: 1653 + type: Transform + - uid: 429 + components: + - pos: 9.5,44.5 + parent: 1653 + type: Transform + - uid: 430 + components: + - pos: 9.5,45.5 + parent: 1653 + type: Transform + - uid: 431 + components: + - pos: 12.5,47.5 + parent: 1653 + type: Transform + - uid: 455 + components: + - pos: 2.5,43.5 + parent: 1653 + type: Transform + - uid: 456 + components: + - pos: 4.5,43.5 + parent: 1653 + type: Transform +- proto: WallMiningDiagonal + entities: + - uid: 166 + components: + - pos: 1.5,47.5 + parent: 1653 + type: Transform + - uid: 167 + components: + - rot: -1.5707963267948966 rad + pos: 5.5,47.5 + parent: 1653 + type: Transform + - uid: 168 + components: + - rot: 3.141592653589793 rad + pos: 5.5,43.5 + parent: 1653 + type: Transform + - uid: 169 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,43.5 + parent: 1653 + type: Transform + - uid: 251 + components: + - pos: 9.5,47.5 + parent: 1653 + type: Transform + - uid: 275 + components: + - rot: -1.5707963267948966 rad + pos: 13.5,47.5 + parent: 1653 + type: Transform + - uid: 397 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,43.5 + parent: 1653 + type: Transform + - uid: 428 + components: + - pos: 17.5,47.5 + parent: 1653 + type: Transform + - uid: 493 + components: + - rot: -1.5707963267948966 rad + pos: 21.5,47.5 + parent: 1653 + type: Transform + - uid: 494 + components: + - rot: 3.141592653589793 rad + pos: 21.5,43.5 + parent: 1653 + type: Transform + - uid: 495 + components: + - rot: 1.5707963267948966 rad + pos: 17.5,43.5 + parent: 1653 + type: Transform +- proto: WallWood + entities: + - uid: 16 + components: + - pos: 31.5,19.5 + parent: 1653 + type: Transform + - uid: 188 + components: + - pos: 43.5,39.5 + parent: 1653 + type: Transform + - uid: 255 + components: + - pos: 31.5,21.5 + parent: 1653 + type: Transform + - uid: 323 + components: + - pos: 33.5,20.5 + parent: 1653 + type: Transform + - uid: 324 + components: + - pos: 33.5,21.5 + parent: 1653 + type: Transform + - uid: 338 + components: + - pos: 33.5,19.5 + parent: 1653 + type: Transform + - uid: 408 + components: + - pos: 32.5,21.5 + parent: 1653 + type: Transform + - uid: 409 + components: + - pos: 31.5,20.5 + parent: 1653 + type: Transform +- proto: WaterTankHighCapacity + entities: + - uid: 219 + components: + - pos: 27.5,14.5 + parent: 1653 + type: Transform +- proto: WeaponShotgunImprovised + entities: + - uid: 412 + components: + - pos: 20.496641,45.467117 + parent: 1653 + type: Transform +- proto: WeldingFuelTankFull + entities: + - uid: 10 + components: + - pos: 2.5,46.5 + parent: 1653 + type: Transform +- proto: WoodDoor + entities: + - uid: 407 + components: + - pos: 32.5,19.5 + parent: 1653 + type: Transform +- proto: WoodenSign + entities: + - uid: 189 + components: + - pos: 1.5555744,26.347673 + parent: 1653 + type: Transform +- proto: WoodenSignRight + entities: + - uid: 62 + components: + - pos: 11.898959,14.345065 + parent: 1653 + type: Transform + - uid: 177 + components: + - pos: 9.503841,22.358318 + parent: 1653 + type: Transform + - uid: 440 + components: + - pos: 25.205534,32.33467 + parent: 1653 + type: Transform + - uid: 451 + components: + - pos: 5.5491443,7.271117 + parent: 1653 + type: Transform +- proto: WoodenSupport + entities: + - uid: 9 + components: + - pos: 10.5,10.5 + parent: 1653 + type: Transform + - uid: 66 + components: + - pos: 38.5,16.5 + parent: 1653 + type: Transform + - uid: 107 + components: + - pos: 8.5,32.5 + parent: 1653 + type: Transform + - uid: 108 + components: + - pos: 1.5,36.5 + parent: 1653 + type: Transform + - uid: 110 + components: + - pos: 0.5,22.5 + parent: 1653 + type: Transform + - uid: 140 + components: + - pos: 34.5,6.5 + parent: 1653 + type: Transform + - uid: 146 + components: + - pos: 24.5,6.5 + parent: 1653 + type: Transform + - uid: 174 + components: + - pos: 13.5,22.5 + parent: 1653 + type: Transform + - uid: 204 + components: + - pos: 2.5,28.5 + parent: 1653 + type: Transform + - uid: 207 + components: + - pos: 0.5,28.5 + parent: 1653 + type: Transform + - uid: 259 + components: + - pos: 20.5,24.5 + parent: 1653 + type: Transform + - uid: 279 + components: + - pos: 12.5,10.5 + parent: 1653 + type: Transform + - uid: 286 + components: + - pos: 22.5,10.5 + parent: 1653 + type: Transform + - uid: 422 + components: + - pos: 22.5,28.5 + parent: 1653 + type: Transform + - uid: 424 + components: + - pos: 22.5,40.5 + parent: 1653 + type: Transform + - uid: 450 + components: + - pos: 0.5,10.5 + parent: 1653 + type: Transform + - uid: 462 + components: + - pos: 53.5,4.5 + parent: 1653 + type: Transform + - uid: 464 + components: + - pos: 36.5,4.5 + parent: 1653 + type: Transform + - uid: 470 + components: + - pos: 8.5,36.5 + parent: 1653 + type: Transform +- proto: WoodenSupportBeam + entities: + - uid: 35 + components: + - pos: 29.5,1.5 + parent: 1653 + type: Transform + - uid: 143 + components: + - pos: 33.5,10.5 + parent: 1653 + type: Transform + - uid: 285 + components: + - pos: 12.5,6.5 + parent: 1653 + type: Transform + - uid: 307 + components: + - pos: 14.5,20.5 + parent: 1653 + type: Transform + - uid: 355 + components: + - pos: 25.5,1.5 + parent: 1653 + type: Transform + - uid: 395 + components: + - pos: 17.5,27.5 + parent: 1653 + type: Transform +- proto: WoodenSupportWall + entities: + - uid: 27 + components: + - pos: 34.5,4.5 + parent: 1653 + type: Transform + - uid: 33 + components: + - pos: 27.5,1.5 + parent: 1653 + type: Transform + - uid: 34 + components: + - pos: 28.5,1.5 + parent: 1653 + type: Transform + - uid: 36 + components: + - pos: 32.5,2.5 + parent: 1653 + type: Transform + - uid: 37 + components: + - pos: 32.5,3.5 + parent: 1653 + type: Transform + - uid: 38 + components: + - pos: 30.5,1.5 + parent: 1653 + type: Transform + - uid: 39 + components: + - pos: 32.5,0.5 + parent: 1653 + type: Transform + - uid: 53 + components: + - pos: 7.5,8.5 + parent: 1653 + type: Transform + - uid: 54 + components: + - pos: 6.5,8.5 + parent: 1653 + type: Transform + - uid: 55 + components: + - pos: 5.5,8.5 + parent: 1653 + type: Transform + - uid: 69 + components: + - pos: 0.5,12.5 + parent: 1653 + type: Transform + - uid: 75 + components: + - pos: 16.5,27.5 + parent: 1653 + type: Transform + - uid: 91 + components: + - pos: 32.5,1.5 + parent: 1653 + type: Transform + - uid: 92 + components: + - pos: 31.5,3.5 + parent: 1653 + type: Transform + - uid: 98 + components: + - pos: 18.5,25.5 + parent: 1653 + type: Transform + - uid: 125 + components: + - pos: 38.5,40.5 + parent: 1653 + type: Transform + - uid: 141 + components: + - pos: 34.5,10.5 + parent: 1653 + type: Transform + - uid: 142 + components: + - pos: 34.5,9.5 + parent: 1653 + type: Transform + - uid: 175 + components: + - pos: 12.5,20.5 + parent: 1653 + type: Transform + - uid: 176 + components: + - pos: 15.5,20.5 + parent: 1653 + type: Transform + - uid: 185 + components: + - pos: 32.5,40.5 + parent: 1653 + type: Transform + - uid: 234 + components: + - pos: 50.5,0.5 + parent: 1653 + type: Transform + - uid: 236 + components: + - pos: 30.5,3.5 + parent: 1653 + type: Transform + - uid: 237 + components: + - pos: 25.5,3.5 + parent: 1653 + type: Transform + - uid: 238 + components: + - pos: 25.5,4.5 + parent: 1653 + type: Transform + - uid: 239 + components: + - pos: 18.5,1.5 + parent: 1653 + type: Transform + - uid: 257 + components: + - pos: 29.5,3.5 + parent: 1653 + type: Transform + - uid: 263 + components: + - pos: 25.5,2.5 + parent: 1653 + type: Transform + - uid: 280 + components: + - pos: 13.5,6.5 + parent: 1653 + type: Transform + - uid: 282 + components: + - pos: 21.5,6.5 + parent: 1653 + type: Transform + - uid: 287 + components: + - pos: 22.5,6.5 + parent: 1653 + type: Transform + - uid: 297 + components: + - pos: 6.5,40.5 + parent: 1653 + type: Transform + - uid: 299 + components: + - pos: 0.5,38.5 + parent: 1653 + type: Transform + - uid: 305 + components: + - pos: 14.5,30.5 + parent: 1653 + type: Transform + - uid: 310 + components: + - pos: 14.5,32.5 + parent: 1653 + type: Transform + - uid: 311 + components: + - pos: 26.5,30.5 + parent: 1653 + type: Transform + - uid: 342 + components: + - pos: 22.5,3.5 + parent: 1653 + type: Transform + - uid: 343 + components: + - pos: 21.5,3.5 + parent: 1653 + type: Transform + - uid: 344 + components: + - pos: 23.5,3.5 + parent: 1653 + type: Transform + - uid: 345 + components: + - pos: 24.5,3.5 + parent: 1653 + type: Transform + - uid: 346 + components: + - pos: 20.5,1.5 + parent: 1653 + type: Transform + - uid: 349 + components: + - pos: 21.5,1.5 + parent: 1653 + type: Transform + - uid: 388 + components: + - pos: 28.5,3.5 + parent: 1653 + type: Transform + - uid: 389 + components: + - pos: 26.5,1.5 + parent: 1653 + type: Transform + - uid: 419 + components: + - pos: 19.5,1.5 + parent: 1653 + type: Transform + - uid: 437 + components: + - pos: 26.5,32.5 + parent: 1653 + type: Transform + - uid: 461 + components: + - pos: 54.5,4.5 + parent: 1653 + type: Transform +- proto: WoodenSupportWallBroken + entities: + - uid: 26 + components: + - pos: 27.5,3.5 + parent: 1653 + type: Transform + - uid: 80 + components: + - pos: 17.5,25.5 + parent: 1653 + type: Transform + - uid: 95 + components: + - pos: 4.5,8.5 + parent: 1653 + type: Transform + - uid: 284 + components: + - pos: 20.5,6.5 + parent: 1653 + type: Transform + - uid: 348 + components: + - pos: 20.5,3.5 + parent: 1653 + type: Transform + - uid: 356 + components: + - pos: 39.5,2.5 + parent: 1653 + type: Transform + - uid: 463 + components: + - pos: 50.5,1.5 + parent: 1653 + type: Transform +... diff --git a/Resources/Maps/edge.yml b/Resources/Maps/edge.yml index 2a7e5d737f9..678427c565b 100644 --- a/Resources/Maps/edge.yml +++ b/Resources/Maps/edge.yml @@ -195,7 +195,7 @@ entities: version: 6 -2,-3: ind: -2,-3 - tiles: fwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAQwAAAAAAOwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAbgAAAAAAfwAAAAAAfwAAAAAAbgAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAUAAAAAAAfwAAAAAAPAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAAfwAAAAAAfwAAAAAARgAAAAAARgAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAAUAAAAAAAfwAAAAAARgAAAAAARgAAAAAAfwAAAAAARgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAAfwAAAAAAfwAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAAUAAAAAAAfwAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAAfwAAAAAAfwAAAAAAPAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAA + tiles: fwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAQwAAAAAAOwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAbgAAAAAAfwAAAAAAfwAAAAAAbgAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAUAAAAAAAfwAAAAAAPAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAAfwAAAAAAfwAAAAAARgAAAAAARgAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAAUAAAAAAAfwAAAAAARgAAAAAARgAAAAAAUAAAAAAARgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAAfwAAAAAAfwAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAAUAAAAAAAfwAAAAAAUAAAAAAAUAAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAARgAAAAAAfwAAAAAAfwAAAAAAPAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAA version: 6 -1,-3: ind: -1,-3 @@ -243,11 +243,11 @@ entities: version: 6 -3,-3: ind: -3,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAUAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAARgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAPAAAAAAAUAAAAAAARgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAARgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAUAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAA + tiles: AAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAUAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAARgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAPAAAAAAAUAAAAAAARgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAARgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAUAAAAAAAUAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAA version: 6 -3,-4: ind: -3,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAAfwAAAAAA version: 6 -5,-1: ind: -5,-1 @@ -5677,6 +5677,7 @@ entities: 4: 1 -11,-12: 0: 61132 + 4: 4403 -10,-12: 0: 16383 4: 49152 @@ -5702,6 +5703,7 @@ entities: 4: 3598 -11,-13: 0: 49152 + 4: 12288 -10,-13: 0: 65216 -9,-13: @@ -6171,7 +6173,11 @@ entities: -12,-10: 4: 65278 -12,-11: - 4: 61410 + 4: 61422 + -12,-12: + 4: 61166 + -12,-13: + 4: 57344 uniqueMixes: - volume: 2500 temperature: 293.15 @@ -7948,6 +7954,34 @@ entities: - DoorStatus: DoorBolt 170: - DoorStatus: DoorBolt + - uid: 17490 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -39.5,-46.5 + parent: 2 + - type: DeviceLinkSink + invokeCounter: 1 + links: + - 17492 + - type: DeviceLinkSource + linkedPorts: + 17492: + - DoorStatus: DoorBolt + - uid: 17492 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -41.5,-46.5 + parent: 2 + - type: DeviceLinkSink + invokeCounter: 1 + links: + - 17490 + - type: DeviceLinkSource + linkedPorts: + 17490: + - DoorStatus: DoorBolt - proto: AirlockExternalGlassAtmosphericsLocked entities: - uid: 172 @@ -22782,21 +22816,6 @@ entities: - type: Transform pos: 1.5,-44.5 parent: 2 - - uid: 3161 - components: - - type: Transform - pos: -26.5,-44.5 - parent: 2 - - uid: 3162 - components: - - type: Transform - pos: -26.5,-43.5 - parent: 2 - - uid: 3164 - components: - - type: Transform - pos: -26.5,-42.5 - parent: 2 - uid: 3831 components: - type: Transform @@ -23277,6 +23296,51 @@ entities: - type: Transform pos: -25.5,-38.5 parent: 2 + - uid: 17836 + components: + - type: Transform + pos: -26.5,-42.5 + parent: 2 + - uid: 17865 + components: + - type: Transform + pos: -25.5,-44.5 + parent: 2 + - uid: 17866 + components: + - type: Transform + pos: -25.5,-42.5 + parent: 2 + - uid: 17901 + components: + - type: Transform + pos: -40.5,-41.5 + parent: 2 + - uid: 17902 + components: + - type: Transform + pos: -41.5,-41.5 + parent: 2 + - uid: 17905 + components: + - type: Transform + pos: -39.5,-46.5 + parent: 2 + - uid: 17906 + components: + - type: Transform + pos: -40.5,-46.5 + parent: 2 + - uid: 17907 + components: + - type: Transform + pos: -41.5,-46.5 + parent: 2 + - uid: 17911 + components: + - type: Transform + pos: -25.5,-43.5 + parent: 2 - proto: CableApcStack entities: - uid: 3016 @@ -27088,11 +27152,6 @@ entities: - type: Transform pos: -41.5,-44.5 parent: 2 - - uid: 3769 - components: - - type: Transform - pos: -41.5,-45.5 - parent: 2 - uid: 3770 components: - type: Transform @@ -33502,6 +33561,111 @@ entities: - type: Transform pos: -31.5,-35.5 parent: 2 + - uid: 17856 + components: + - type: Transform + pos: -31.5,-43.5 + parent: 2 + - uid: 17857 + components: + - type: Transform + pos: -31.5,-44.5 + parent: 2 + - uid: 17858 + components: + - type: Transform + pos: -31.5,-45.5 + parent: 2 + - uid: 17859 + components: + - type: Transform + pos: -30.5,-45.5 + parent: 2 + - uid: 17860 + components: + - type: Transform + pos: -29.5,-45.5 + parent: 2 + - uid: 17861 + components: + - type: Transform + pos: -28.5,-45.5 + parent: 2 + - uid: 17862 + components: + - type: Transform + pos: -27.5,-45.5 + parent: 2 + - uid: 17863 + components: + - type: Transform + pos: -26.5,-45.5 + parent: 2 + - uid: 17867 + components: + - type: Transform + pos: -26.5,-41.5 + parent: 2 + - uid: 17868 + components: + - type: Transform + pos: -26.5,-40.5 + parent: 2 + - uid: 17869 + components: + - type: Transform + pos: -26.5,-39.5 + parent: 2 + - uid: 17870 + components: + - type: Transform + pos: -26.5,-38.5 + parent: 2 + - uid: 17871 + components: + - type: Transform + pos: -26.5,-37.5 + parent: 2 + - uid: 17872 + components: + - type: Transform + pos: -27.5,-37.5 + parent: 2 + - uid: 17873 + components: + - type: Transform + pos: -28.5,-37.5 + parent: 2 + - uid: 17874 + components: + - type: Transform + pos: -28.5,-38.5 + parent: 2 + - uid: 17910 + components: + - type: Transform + pos: -26.5,-44.5 + parent: 2 + - uid: 17912 + components: + - type: Transform + pos: -25.5,-44.5 + parent: 2 + - uid: 17913 + components: + - type: Transform + pos: -25.5,-43.5 + parent: 2 + - uid: 17914 + components: + - type: Transform + pos: -25.5,-42.5 + parent: 2 + - uid: 17915 + components: + - type: Transform + pos: -26.5,-42.5 + parent: 2 - proto: CableMVStack entities: - uid: 4996 @@ -40682,6 +40846,16 @@ entities: - type: Transform pos: -27.5,-43.5 parent: 2 + - uid: 17893 + components: + - type: Transform + pos: -27.5,-32.5 + parent: 2 + - uid: 17894 + components: + - type: Transform + pos: -27.5,-33.5 + parent: 2 - proto: CrateEngineeringSingularityEmitter entities: - uid: 6184 @@ -47327,6 +47501,15 @@ entities: - type: DeviceLinkSink links: - 17680 + - uid: 17875 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -28.5,-38.5 + parent: 2 + - type: DeviceLinkSink + links: + - 17680 - proto: EncryptionKeyCargo entities: - uid: 7261 @@ -50454,6 +50637,18 @@ entities: parent: 2 - type: AtmosPipeColor color: '#07FFFFFF' + - uid: 3162 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -26.5,-44.5 + parent: 2 + - uid: 3164 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -25.5,-46.5 + parent: 2 - uid: 3217 components: - type: Transform @@ -51966,34 +52161,19 @@ entities: parent: 2 - type: AtmosPipeColor color: '#66FF00FF' - - uid: 17476 + - uid: 13696 components: - type: Transform rot: 1.5707963267948966 rad - pos: -45.5,-37.5 - parent: 2 - - type: AtmosPipeColor - color: '#07FFFFFF' - - uid: 17477 - components: - - type: Transform - rot: 3.141592653589793 rad pos: -45.5,-38.5 parent: 2 - type: AtmosPipeColor color: '#07FFFFFF' - - uid: 17478 - components: - - type: Transform - pos: -42.5,-38.5 - parent: 2 - - type: AtmosPipeColor - color: '#07FFFFFF' - - uid: 17479 + - uid: 15251 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -42.5,-39.5 + rot: 1.5707963267948966 rad + pos: -41.5,-42.5 parent: 2 - type: AtmosPipeColor color: '#07FFFFFF' @@ -52001,7 +52181,7 @@ entities: components: - type: Transform rot: 1.5707963267948966 rad - pos: -45.5,-39.5 + pos: -44.5,-37.5 parent: 2 - type: AtmosPipeColor color: '#07FFFFFF' @@ -52013,37 +52193,29 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF0000FF' - - uid: 17482 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -45.5,-40.5 - parent: 2 - - type: AtmosPipeColor - color: '#07FFFFFF' - uid: 17483 components: - type: Transform - pos: -42.5,-40.5 + pos: -42.5,-38.5 parent: 2 - type: AtmosPipeColor color: '#07FFFFFF' - - uid: 17484 + - uid: 17496 components: - type: Transform - rot: 3.141592653589793 rad - pos: -42.5,-42.5 + rot: -1.5707963267948966 rad + pos: -31.5,-42.5 parent: 2 - type: AtmosPipeColor color: '#07FFFFFF' - - uid: 17496 + - uid: 17521 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -31.5,-42.5 + rot: 1.5707963267948966 rad + pos: -25.5,-44.5 parent: 2 - type: AtmosPipeColor - color: '#07FFFFFF' + color: '#ADD8E6FF' - uid: 17531 components: - type: Transform @@ -52059,22 +52231,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#ADD8E6FF' - - uid: 17534 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -27.5,-46.5 - parent: 2 - - type: AtmosPipeColor - color: '#ADD8E6FF' - - uid: 17535 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -27.5,-44.5 - parent: 2 - - type: AtmosPipeColor - color: '#ADD8E6FF' - uid: 17536 components: - type: Transform @@ -52098,6 +52254,12 @@ entities: parent: 2 - type: AtmosPipeColor color: '#07FFFFFF' + - uid: 17636 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -27.5,-44.5 + parent: 2 - uid: 17644 components: - type: Transform @@ -52147,6 +52309,54 @@ entities: parent: 2 - type: AtmosPipeColor color: '#ADD8E6FF' + - uid: 17879 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -41.5,-44.5 + parent: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' + - uid: 17885 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -42.5,-42.5 + parent: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' + - uid: 17886 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -45.5,-42.5 + parent: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' + - uid: 17890 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -43.5,-44.5 + parent: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' + - uid: 17891 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -44.5,-43.5 + parent: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' + - uid: 17908 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -26.5,-42.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF0000FF' - proto: GasPipeFourway entities: - uid: 3169 @@ -66900,21 +67110,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#07FFFFFF' - - uid: 17491 - components: - - type: Transform - pos: -42.5,-41.5 - parent: 2 - - type: AtmosPipeColor - color: '#07FFFFFF' - - uid: 17492 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -41.5,-42.5 - parent: 2 - - type: AtmosPipeColor - color: '#07FFFFFF' - uid: 17493 components: - type: Transform @@ -66944,38 +67139,30 @@ entities: rot: -1.5707963267948966 rad pos: -28.5,-34.5 parent: 2 - - uid: 17521 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -28.5,-46.5 - parent: 2 - - type: AtmosPipeColor - color: '#ADD8E6FF' - uid: 17522 components: - type: Transform - rot: 3.141592653589793 rad - pos: -27.5,-45.5 + rot: 1.5707963267948966 rad + pos: -30.5,-46.5 parent: 2 - type: AtmosPipeColor - color: '#ADD8E6FF' + color: '#07FFFFFF' - uid: 17523 components: - type: Transform rot: 1.5707963267948966 rad - pos: -26.5,-44.5 + pos: -28.5,-46.5 parent: 2 - type: AtmosPipeColor - color: '#ADD8E6FF' + color: '#07FFFFFF' - uid: 17524 components: - type: Transform rot: 1.5707963267948966 rad - pos: -25.5,-44.5 + pos: -31.5,-46.5 parent: 2 - type: AtmosPipeColor - color: '#ADD8E6FF' + color: '#07FFFFFF' - uid: 17525 components: - type: Transform @@ -67032,6 +67219,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#ADD8E6FF' + - uid: 17534 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -29.5,-46.5 + parent: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' - uid: 17537 components: - type: Transform @@ -67103,14 +67298,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#07FFFFFF' - - uid: 17636 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -31.5,-46.5 - parent: 2 - - type: AtmosPipeColor - color: '#07FFFFFF' - uid: 17637 components: - type: Transform @@ -67364,13 +67551,22 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF0000FF' - - uid: 17836 + - uid: 17880 components: - type: Transform - pos: -25.5,-42.5 + rot: 3.141592653589793 rad + pos: -41.5,-43.5 parent: 2 - type: AtmosPipeColor - color: '#FF0000FF' + color: '#07FFFFFF' + - uid: 17892 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -42.5,-44.5 + parent: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' - proto: GasPipeTJunction entities: - uid: 2633 @@ -70046,6 +70242,29 @@ entities: parent: 2 - type: AtmosPipeColor color: '#ADD8E6FF' + - uid: 15217 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -44.5,-38.5 + parent: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' + - uid: 15226 + components: + - type: Transform + pos: -43.5,-37.5 + parent: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' + - uid: 17479 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -43.5,-38.5 + parent: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' - uid: 17495 components: - type: Transform @@ -70061,6 +70280,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF0000FF' + - uid: 17535 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -27.5,-46.5 + parent: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' - uid: 17628 components: - type: Transform @@ -70085,6 +70312,38 @@ entities: parent: 2 - type: AtmosPipeColor color: '#07FFFFFF' + - uid: 17864 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -25.5,-42.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF0000FF' + - uid: 17887 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -44.5,-42.5 + parent: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' + - uid: 17888 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -43.5,-42.5 + parent: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' + - uid: 17889 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -43.5,-43.5 + parent: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' - proto: GasPort entities: - uid: 10174 @@ -70487,16 +70746,25 @@ entities: joinedGrid: 2 - type: AtmosPipeColor color: '#FF0000FF' - - uid: 17520 + - uid: 17517 components: - type: Transform rot: -1.5707963267948966 rad - pos: -29.5,-46.5 + pos: -26.5,-46.5 parent: 2 - type: AtmosDevice joinedGrid: 2 - type: AtmosPipeColor - color: '#ADD8E6FF' + color: '#07FFFFFF' + - uid: 17520 + components: + - type: Transform + pos: -27.5,-45.5 + parent: 2 + - type: AtmosDevice + joinedGrid: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' - uid: 17629 components: - type: MetaData @@ -70529,21 +70797,37 @@ entities: joinedGrid: 2 - type: AtmosPipeColor color: '#FF0000FF' - - uid: 17790 + - uid: 17881 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,-37.5 + pos: -45.5,-41.5 parent: 2 - type: AtmosDevice joinedGrid: 2 - type: AtmosPipeColor - color: '#FF0000FF' - - uid: 17791 + color: '#07FFFFFF' + - uid: 17882 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -39.5,-42.5 + pos: -44.5,-41.5 + parent: 2 + - type: AtmosDevice + joinedGrid: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' + - uid: 17883 + components: + - type: Transform + pos: -43.5,-41.5 + parent: 2 + - type: AtmosDevice + joinedGrid: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' + - uid: 17884 + components: + - type: Transform + pos: -42.5,-41.5 parent: 2 - type: AtmosDevice joinedGrid: 2 @@ -70638,7 +70922,21 @@ entities: - type: AtmosDevice joinedGrid: 2 - type: AtmosPipeColor - color: '#FF0000FF' + color: '#07FFFFFF' + - uid: 3161 + components: + - type: MetaData + name: distro to coolant + - type: Transform + rot: 3.141592653589793 rad + pos: -25.5,-45.5 + parent: 2 + - type: GasValve + open: False + - type: AtmosDevice + joinedGrid: 2 + - type: AtmosPipeColor + color: '#ADD8E6FF' - uid: 3893 components: - type: MetaData @@ -70760,20 +71058,6 @@ entities: joinedGrid: 2 - type: AtmosPipeColor color: '#FF5349FF' - - uid: 17517 - components: - - type: MetaData - name: distro to coolant - - type: Transform - rot: 1.5707963267948966 rad - pos: -30.5,-46.5 - parent: 2 - - type: GasValve - open: False - - type: AtmosDevice - joinedGrid: 2 - - type: AtmosPipeColor - color: '#07FFFFFF' - uid: 17682 components: - type: MetaData @@ -70799,6 +71083,18 @@ entities: joinedGrid: 2 - type: AtmosPipeColor color: '#07FFFFFF' + - uid: 17909 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -26.5,-43.5 + parent: 2 + - type: GasValve + open: False + - type: AtmosDevice + joinedGrid: 2 + - type: AtmosPipeColor + color: '#FF0000FF' - proto: GasVentPump entities: - uid: 2584 @@ -74410,12 +74706,19 @@ entities: rot: 3.141592653589793 rad pos: -25.5,-43.5 parent: 2 - - type: AtmosDevice - joinedGrid: 2 - type: AtmosPipeColor color: '#FF0000FF' - proto: GasVolumePump entities: + - uid: 3769 + components: + - type: Transform + pos: -43.5,-39.5 + parent: 2 + - type: AtmosDevice + joinedGrid: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' - uid: 10586 components: - type: Transform @@ -74472,6 +74775,53 @@ entities: joinedGrid: 2 - type: AtmosPipeColor color: '#66FF00FF' + - uid: 10747 + components: + - type: Transform + pos: -44.5,-39.5 + parent: 2 + - type: AtmosDevice + joinedGrid: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' + - uid: 17474 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -39.5,-37.5 + parent: 2 + - type: AtmosDevice + joinedGrid: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' + - uid: 17475 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -39.5,-42.5 + parent: 2 + - type: AtmosDevice + joinedGrid: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' + - uid: 17482 + components: + - type: Transform + pos: -45.5,-39.5 + parent: 2 + - type: AtmosDevice + joinedGrid: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' + - uid: 17485 + components: + - type: Transform + pos: -42.5,-39.5 + parent: 2 + - type: AtmosDevice + joinedGrid: 2 + - type: AtmosPipeColor + color: '#07FFFFFF' - proto: Gauze entities: - uid: 10591 @@ -75311,11 +75661,6 @@ entities: rot: -1.5707963267948966 rad pos: -61.5,6.5 parent: 2 - - uid: 10747 - components: - - type: Transform - pos: -41.5,-45.5 - parent: 2 - uid: 10748 components: - type: Transform @@ -79370,6 +79715,18 @@ entities: - type: Transform pos: 8.5,-27.5 parent: 2 + - uid: 17478 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -42.5,-48.5 + parent: 2 + - uid: 17489 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -46.5,-46.5 + parent: 2 - uid: 17497 components: - type: Transform @@ -79425,6 +79782,12 @@ entities: - type: Transform pos: -35.5,-35.5 parent: 2 + - uid: 17694 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -46.5,-47.5 + parent: 2 - uid: 17777 components: - type: Transform @@ -79450,6 +79813,12 @@ entities: - type: Transform pos: -33.5,-39.5 parent: 2 + - uid: 17790 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -41.5,-48.5 + parent: 2 - proto: GrilleBroken entities: - uid: 11522 @@ -79983,6 +80352,35 @@ entities: - type: Transform pos: -28.5,48.5 parent: 2 + - uid: 15228 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -45.5,-48.5 + parent: 2 + - uid: 15229 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -44.5,-48.5 + parent: 2 + - uid: 15244 + components: + - type: Transform + pos: -46.5,-45.5 + parent: 2 + - uid: 15245 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -46.5,-48.5 + parent: 2 + - uid: 17477 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -43.5,-48.5 + parent: 2 - uid: 17842 components: - type: Transform @@ -80100,86 +80498,34 @@ entities: parent: 2 - proto: HeatExchanger entities: - - uid: 17474 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -44.5,-40.5 - parent: 2 - - type: AtmosDevice - joinedGrid: 2 - - type: AtmosPipeColor - color: '#07FFFFFF' - - uid: 17475 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -43.5,-40.5 - parent: 2 - - type: AtmosDevice - joinedGrid: 2 - - type: AtmosPipeColor - color: '#07FFFFFF' - - uid: 17485 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -43.5,-39.5 - parent: 2 - - type: AtmosDevice - joinedGrid: 2 - - type: AtmosPipeColor - color: '#07FFFFFF' - - uid: 17486 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -44.5,-39.5 - parent: 2 - - type: AtmosDevice - joinedGrid: 2 - - type: AtmosPipeColor - color: '#07FFFFFF' - - uid: 17487 + - uid: 17484 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -44.5,-38.5 + pos: -45.5,-40.5 parent: 2 - type: AtmosDevice joinedGrid: 2 - - type: AtmosPipeColor - color: '#07FFFFFF' - - uid: 17488 + - uid: 17876 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -43.5,-38.5 + pos: -44.5,-40.5 parent: 2 - type: AtmosDevice joinedGrid: 2 - - type: AtmosPipeColor - color: '#07FFFFFF' - - uid: 17489 + - uid: 17877 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -43.5,-37.5 + pos: -43.5,-40.5 parent: 2 - type: AtmosDevice joinedGrid: 2 - - type: AtmosPipeColor - color: '#07FFFFFF' - - uid: 17490 + - uid: 17878 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -44.5,-37.5 + pos: -42.5,-40.5 parent: 2 - type: AtmosDevice joinedGrid: 2 - - type: AtmosPipeColor - color: '#07FFFFFF' - proto: HighSecArmoryLocked entities: - uid: 11637 @@ -80620,12 +80966,6 @@ entities: parent: 2 - proto: IntercomEngineering entities: - - uid: 2637 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -29.5,-38.5 - parent: 2 - uid: 11714 components: - type: Transform @@ -80654,6 +80994,12 @@ entities: rot: 1.5707963267948966 rad pos: -19.5,-28.5 parent: 2 + - uid: 17486 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -29.5,-39.5 + parent: 2 - proto: IntercomMedical entities: - uid: 11719 @@ -81155,6 +81501,8 @@ entities: - Pressed: Toggle 3902: - Pressed: Toggle + 17875: + - Pressed: Toggle - proto: LockerAtmosphericsFilled entities: - uid: 11778 @@ -83068,6 +83416,16 @@ entities: rot: 3.141592653589793 rad pos: -33.31521,-43.567078 parent: 2 + - uid: 17896 + components: + - type: Transform + pos: -27.632969,-35.47815 + parent: 2 + - uid: 17897 + components: + - type: Transform + pos: -27.382969,-35.5719 + parent: 2 - proto: PlasticFlapsAirtightClear entities: - uid: 12078 @@ -85929,6 +86287,18 @@ entities: - type: Transform pos: 20.5,-50.5 parent: 2 + - uid: 17903 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -42.5,-41.5 + parent: 2 + - uid: 17904 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -42.5,-47.5 + parent: 2 - proto: PoweredLightColoredBlack entities: - uid: 12535 @@ -86959,6 +87329,17 @@ entities: rot: 3.141592653589793 rad pos: -33.5,-43.5 parent: 2 + - uid: 17895 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -27.5,-35.5 + parent: 2 + - uid: 17898 + components: + - type: Transform + pos: -39.5,-31.5 + parent: 2 - proto: RadiationCollectorNoTank entities: - uid: 2626 @@ -86986,6 +87367,8 @@ entities: - type: Transform pos: -34.5,-40.5 parent: 2 + - type: RadiationCollector + enabled: True - uid: 3213 components: - type: Transform @@ -87026,6 +87409,8 @@ entities: - type: Transform pos: -28.5,-39.5 parent: 2 + - type: RadiationCollector + enabled: True - uid: 17761 components: - type: Transform @@ -90930,6 +91315,12 @@ entities: - type: Transform pos: -40.5,-34.5 parent: 2 + - uid: 17791 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -29.5,-38.5 + parent: 2 - proto: RemoteSignaller entities: - uid: 13453 @@ -91411,6 +91802,11 @@ entities: - type: Transform pos: -42.71093,39.51951 parent: 2 + - uid: 17899 + components: + - type: Transform + pos: -39.76288,-31.370575 + parent: 2 - proto: SheetPlasma entities: - uid: 13517 @@ -91576,6 +91972,11 @@ entities: - type: Transform pos: -43.440098,39.540356 parent: 2 + - uid: 17900 + components: + - type: Transform + pos: -39.403503,-31.47995 + parent: 2 - proto: SheetUranium entities: - uid: 13542 @@ -93160,11 +93561,6 @@ entities: - type: Transform pos: -46.5,-23.5 parent: 2 - - uid: 13696 - components: - - type: Transform - pos: -41.5,-46.5 - parent: 2 - uid: 13697 components: - type: Transform @@ -100391,6 +100787,12 @@ entities: - type: Transform pos: -28.5,-36.5 parent: 2 + - uid: 2637 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -39.5,-47.5 + parent: 2 - uid: 3890 components: - type: Transform @@ -102729,11 +103131,6 @@ entities: rot: 3.141592653589793 rad pos: -23.5,-47.5 parent: 2 - - uid: 15217 - components: - - type: Transform - pos: -40.5,-46.5 - parent: 2 - uid: 15218 components: - type: Transform @@ -102774,27 +103171,11 @@ entities: rot: 3.141592653589793 rad pos: -38.5,-47.5 parent: 2 - - uid: 15226 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -39.5,-47.5 - parent: 2 - uid: 15227 components: - type: Transform pos: -41.5,-29.5 parent: 2 - - uid: 15228 - components: - - type: Transform - pos: -40.5,-47.5 - parent: 2 - - uid: 15229 - components: - - type: Transform - pos: -41.5,-46.5 - parent: 2 - uid: 15230 components: - type: Transform @@ -102865,16 +103246,6 @@ entities: - type: Transform pos: -9.5,-45.5 parent: 2 - - uid: 15244 - components: - - type: Transform - pos: -41.5,-47.5 - parent: 2 - - uid: 15245 - components: - - type: Transform - pos: -39.5,-46.5 - parent: 2 - uid: 15246 components: - type: Transform @@ -102900,11 +103271,6 @@ entities: - type: Transform pos: -40.5,-48.5 parent: 2 - - uid: 15251 - components: - - type: Transform - pos: -41.5,-48.5 - parent: 2 - uid: 15252 components: - type: Transform @@ -107356,6 +107722,30 @@ entities: rot: 1.5707963267948966 rad pos: -0.5,-34.5 parent: 2 + - uid: 17476 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -41.5,-47.5 + parent: 2 + - uid: 17487 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -40.5,-47.5 + parent: 2 + - uid: 17488 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -39.5,-45.5 + parent: 2 + - uid: 17491 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -41.5,-45.5 + parent: 2 - uid: 17545 components: - type: Transform @@ -107425,11 +107815,6 @@ entities: - type: Transform pos: -34.5,-44.5 parent: 2 - - uid: 17694 - components: - - type: Transform - pos: -29.5,-38.5 - parent: 2 - uid: 17802 components: - type: Transform diff --git a/Resources/Prototypes/Accents/word_replacements.yml b/Resources/Prototypes/Accents/word_replacements.yml index 147aebb5c5d..92b3d7de9b3 100644 --- a/Resources/Prototypes/Accents/word_replacements.yml +++ b/Resources/Prototypes/Accents/word_replacements.yml @@ -1,4 +1,4 @@ -# Accents that work off of word replacements. +# Accents that work off of word replacements. # this is kind of dumb but localization demands it. # i guess you could just specify the prefix ('mobster') and count and let the system fill it @@ -263,7 +263,7 @@ accent-pirate-replaced-30: accent-pirate-replacement-30 accent-pirate-replaced-31: accent-pirate-replacement-31 accent-pirate-replaced-32: accent-pirate-replacement-32 - + - type: accent id: cowboy wordReplacements: @@ -366,7 +366,7 @@ accent-cowboy-words-97: accent-cowboy-replacement-97 accent-cowboy-words-98: accent-cowboy-replacement-98 accent-cowboy-words-99: accent-cowboy-replacement-99 - + # For the chat sanitization system - type: accent @@ -409,8 +409,9 @@ # chatsan-word-35: chatsan-replacement-35 # chatsan-word-36: chatsan-replacement-36 chatsan-word-37: chatsan-replacement-37 - # chatsan-word-38: chatsan-replacement-38 - # chatsan-word-39: chatsan-replacement-etcetera - # chatsan-word-40: chatsan-replacement-etcetera - # chatsan-word-41: chatsan-replacement-41 - # chatsan-word-42: chatsan-replacement-42 + chatsan-word-38: chatsan-replacement-38 + chatsan-word-39: chatsan-replacement-etcetera + chatsan-word-40: chatsan-replacement-etcetera + chatsan-word-41: chatsan-replacement-41 + chatsan-word-42: chatsan-replacement-42 + chatsan-word-43: chatsan-replacement-43 diff --git a/Resources/Prototypes/Actions/types.yml b/Resources/Prototypes/Actions/types.yml index b91b26e3570..22f16bd9568 100644 --- a/Resources/Prototypes/Actions/types.yml +++ b/Resources/Prototypes/Actions/types.yml @@ -120,7 +120,7 @@ priority: -20 icon: sprite: Objects/Devices/communication.rsi - state: old-radio + state: radio event: !type:OpenUplinkImplantEvent - type: entity diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml b/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml index 399181b4fab..6341042bf89 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml @@ -5,7 +5,7 @@ state: icon product: CrateArmorySMG cost: 9000 - category: Armory + category: cargoproduct-category-name-armory group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: icon product: CrateArmoryShotgun cost: 7000 - category: Armory + category: cargoproduct-category-name-armory group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: implanter0 product: CrateTrackingImplants cost: 1000 - category: Armory + category: cargoproduct-category-name-armory group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: training-bomb product: CrateTrainingBombs cost: 3000 - category: Armory + category: cargoproduct-category-name-armory group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: icon product: CrateArmoryLaser cost: 4800 - category: Armory + category: cargoproduct-category-name-armory group: market - type: cargoProduct @@ -55,5 +55,5 @@ state: icon product: CrateArmoryPistols cost: 5200 - category: Armory + category: cargoproduct-category-name-armory group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_atmospherics.yml b/Resources/Prototypes/Catalog/Cargo/cargo_atmospherics.yml index 0aa49383992..c85210adf6a 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_atmospherics.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_atmospherics.yml @@ -5,7 +5,7 @@ state: grey product: AirCanister cost: 1100 - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: blue product: OxygenCanister cost: 1100 - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: blue product: LiquidOxygenCanister cost: 2500 - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: red product: NitrogenCanister cost: 1100 - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: red product: LiquidNitrogenCanister cost: 2500 - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: black product: CarbonDioxideCanister cost: 2200 # Until someone fixes it co2 can be used to oneshot people so it's more expensive - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: black product: LiquidCarbonDioxideCanister cost: 4000 - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market - type: cargoProduct @@ -75,7 +75,7 @@ state: yellow product: StorageCanister cost: 1010 # No gases in it so it's cheaper - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market #- type: cargoProduct @@ -87,7 +87,7 @@ # state: water_vapor # product: WaterVaporCanister # cost: 2600 -# category: Atmospherics +# category: cargoproduct-category-name-atmospherics # group: market - type: cargoProduct @@ -97,7 +97,7 @@ state: orange product: PlasmaCanister cost: 4000 - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market #- type: cargoProduct @@ -109,5 +109,5 @@ # state: green # product: TritiumCanister # cost: 15500 -# category: Atmospherics +# category: cargoproduct-category-name-atmospherics # group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_botany.yml b/Resources/Prototypes/Catalog/Cargo/cargo_botany.yml index 4a80b76a3fa..a6671ff0998 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_botany.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_botany.yml @@ -5,7 +5,7 @@ state: seed product: CrateHydroponicsSeedsExotic cost: 1000 - category: Hydroponics + category: cargoproduct-category-name-hydroponics group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: seed product: CrateHydroponicsSeedsMedicinal cost: 500 - category: Hydroponics + category: cargoproduct-category-name-hydroponics group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: icon product: CrateHydroponicsTools cost: 500 - category: Hydroponics + category: cargoproduct-category-name-hydroponics group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: seed product: CrateHydroponicsSeeds cost: 550 - category: Hydroponics + category: cargoproduct-category-name-hydroponics group: market - type: cargoProduct @@ -45,5 +45,5 @@ state: jug product: CratePlantBGone cost: 750 - category: Hydroponics + category: cargoproduct-category-name-hydroponics group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_cargo.yml b/Resources/Prototypes/Catalog/Cargo/cargo_cargo.yml index 9dac47b6f15..fb3b2da41a8 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_cargo.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_cargo.yml @@ -15,7 +15,7 @@ state: orebox product: OreBox cost: 500 - category: Logistics # DeltaV - Logistics Department replacing Cargo + category: cargoproduct-category-name-cargo group: market - type: cargoProduct @@ -25,5 +25,5 @@ state: icon product: CrateCargoLuxuryHardsuit cost: 15000 - category: Logistics # DeltaV - Logistics Department replacing Cargo + category: cargoproduct-category-name-cargo group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_circuitboards.yml b/Resources/Prototypes/Catalog/Cargo/cargo_circuitboards.yml index 0af5b5db016..a96780fc3ed 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_circuitboards.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_circuitboards.yml @@ -5,5 +5,5 @@ state: cpuboard product: CrateCrewMonitoringBoards cost: 2000 - category: Circuitboards + category: cargoproduct-category-name-circuitboards group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_emergency.yml b/Resources/Prototypes/Catalog/Cargo/cargo_emergency.yml index 2777f859a07..2715e0c3501 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_emergency.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_emergency.yml @@ -5,7 +5,7 @@ state: icon product: CrateEmergencyExplosive cost: 650 - category: Emergency + category: cargoproduct-category-name-emergency group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: fire_extinguisher_closed product: CrateEmergencyFire cost: 1500 - category: Emergency + category: cargoproduct-category-name-emergency group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: icon product: CrateEmergencyInternals cost: 500 - category: Emergency + category: cargoproduct-category-name-emergency group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: icon product: CrateEmergencyInternalsLarge cost: 2000 - category: Emergency + category: cargoproduct-category-name-emergency group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: radiation product: CrateEmergencyRadiation cost: 1000 - category: Emergency + category: cargoproduct-category-name-emergency group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: item_wall product: CrateEmergencyInflatablewall cost: 500 - category: Emergency + category: cargoproduct-category-name-emergency group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: icon product: CrateSlimepersonLifeSupport cost: 300 - category: Emergency + category: cargoproduct-category-name-emergency group: market - type: cargoProduct @@ -75,5 +75,5 @@ state: icon product: CrateGenericBiosuit cost: 800 - category: Emergency + category: cargoproduct-category-name-emergency group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_engineering.yml b/Resources/Prototypes/Catalog/Cargo/cargo_engineering.yml index b5468fd982c..754e30f133a 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_engineering.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_engineering.yml @@ -5,7 +5,7 @@ state: coillv-30 product: CrateEngineeringCableLV cost: 300 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: coilmv-30 product: CrateEngineeringCableMV cost: 300 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: coilhv-30 product: CrateEngineeringCableHV cost: 300 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: coilall-30 product: CrateEngineeringCableBulk cost: 750 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: icon product: CrateEngineeringElectricalSupplies cost: 4500 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: icon product: CrateEngineeringStationBeaconBundle cost: 500 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: icon product: CrateEngineeringJetpack cost: 1000 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -75,7 +75,7 @@ state: icon product: CrateEngineeringMiniJetpack cost: 750 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -85,7 +85,7 @@ state: icon product: CrateAirlockKit cost: 1100 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -95,7 +95,7 @@ state: icon product: CrateEvaKit cost: 5000 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -105,7 +105,7 @@ state: ammo product: CrateRCDAmmo cost: 2500 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -115,7 +115,7 @@ state: icon product: CrateRCD cost: 800 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -125,7 +125,7 @@ state: base product: CrateParticleDecelerators cost: 15000 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -135,5 +135,5 @@ state: sheaterOff product: SpaceHeaterAnchored cost: 300 - category: Engineering + category: cargoproduct-category-name-engineering group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_engines.yml b/Resources/Prototypes/Catalog/Cargo/cargo_engines.yml index ece817b746e..bd00b0c2d4c 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_engines.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_engines.yml @@ -5,7 +5,7 @@ state: jar product: CrateEngineeringAMEJar cost: 2000 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: icon product: CrateEngineeringSingularityGenerator cost: 4000 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: icon product: CrateEngineeringSingularityContainment cost: 1000 - category: Engineering + category: cargoproduct-category-name-engineering group: market #- type: cargoProduct @@ -37,7 +37,7 @@ # state: emitter2 # product: CrateEngineeringSingularityEmitter # cost: 3000 -# category: Engineering +# category: cargoproduct-category-name-engineering # group: market - type: cargoProduct @@ -47,7 +47,7 @@ state: ca_on product: CrateEngineeringSingularityCollector cost: 1000 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -57,7 +57,7 @@ state: completed product: CrateEngineeringParticleAccelerator cost: 2000 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -67,18 +67,18 @@ state: solar-assembly-part product: CrateEngineeringSolar cost: 500 - category: Engineering + category: cargoproduct-category-name-engineering group: market -#- type: cargoProduct -# id: EngineTeslaGenerator -# icon: -# sprite: Structures/Power/Generation/Tesla/generator.rsi -# state: icon -# product: CrateEngineeringTeslaGenerator -# cost: 4000 -# category: Engineering -# group: market +- type: cargoProduct + id: EngineTeslaGenerator + icon: + sprite: Structures/Power/Generation/Tesla/generator.rsi + state: icon + product: CrateEngineeringTeslaGenerator + cost: 4000 + category: cargoproduct-category-name-engineering + group: market - type: cargoProduct id: EngineTeslaCoil @@ -87,7 +87,7 @@ state: coil product: CrateEngineeringTeslaCoil cost: 1200 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -97,5 +97,5 @@ state: grounding_rod product: CrateEngineeringTeslaGroundingRod cost: 400 - category: Engineering + category: cargoproduct-category-name-engineering group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_food.yml b/Resources/Prototypes/Catalog/Cargo/cargo_food.yml index e5069959296..1a6f8380961 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_food.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_food.yml @@ -5,7 +5,7 @@ state: margherita-slice product: CrateFoodPizza cost: 450 - category: Food + category: cargoproduct-category-name-food group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: margherita product: CrateFoodPizzaLarge cost: 1800 - category: Food + category: cargoproduct-category-name-food group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: nutribrick product: CrateFoodMRE cost: 1000 - category: Food + category: cargoproduct-category-name-food group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: flour-big product: CrateFoodCooking cost: 750 - category: Food + category: cargoproduct-category-name-food group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: tin product: CrateFoodDinnerware cost: 750 - category: Food + category: cargoproduct-category-name-food group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: icon product: CrateFoodBarSupply cost: 750 - category: Food + category: cargoproduct-category-name-food group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: icon product: CrateFoodSoftdrinks cost: 1200 - category: Food + category: cargoproduct-category-name-food group: market - type: cargoProduct @@ -75,5 +75,5 @@ state: icon product: CrateFoodSoftdrinksLarge cost: 2400 - category: Food + category: cargoproduct-category-name-food group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml b/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml index d84fedd543f..c29458a1ee5 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml @@ -5,7 +5,7 @@ state: icon product: CrateFunInstrumentsVariety cost: 2000 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: tuba product: CrateFunInstrumentsBrass cost: 2500 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: icon product: CrateFunInstrumentsString cost: 2500 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: icon product: CrateFunInstrumentsWoodwind cost: 2500 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: icon product: CrateFunInstrumentsKeyedPercussion cost: 2500 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: icon product: CrateFunInstrumentsSpecial cost: 10000 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: box product: CrateFunArtSupplies cost: 500 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -85,7 +85,7 @@ state: birthday product: CrateFunParty cost: 1000 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -95,7 +95,7 @@ state: display product: CrateFunWaterGuns cost: 750 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -105,7 +105,7 @@ state: plushie_h product: CrateFunPlushie cost: 1000 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -115,7 +115,7 @@ state: plushie_lizard product: CrateFunLizardPlushieBulk cost: 500 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -125,7 +125,7 @@ state: d6_6 product: CrateFunBoardGames cost: 1500 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -135,7 +135,7 @@ state: implanter0 product: CrateFunSadTromboneImplants cost: 1000 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -145,7 +145,7 @@ state: implanter0 product: CrateFunLightImplants cost: 1000 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -155,7 +155,7 @@ state: icon product: CrateFunBoxing cost: 500 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -165,7 +165,7 @@ state: crate_icon product: CrateFunPirate cost: 400 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -175,7 +175,7 @@ state: crate_icon product: CrateFunToyBox cost: 900 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -185,7 +185,7 @@ state: implanter0 product: CrateFunBikeHornImplants cost: 1000 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -195,7 +195,7 @@ state: fig_box product: CrateFunMysteryFigurines cost: 4000 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -205,15 +205,15 @@ state: icon product: CrateFunDartsSet cost: 900 - category: Fun + category: cargoproduct-category-name-fun group: market -#- type: cargoProduct -# id: FunCrateGambling -# icon: -# sprite: Objects/Economy/cash.rsi -# state: cash_1000000 -# product: CrateCargoGambling -# cost: 10000 -# category: Fun -# group: market +- type: cargoProduct + id: FunCrateGambling + icon: + sprite: Objects/Economy/cash.rsi + state: cash_1000000 + product: CrateCargoGambling + cost: 10000 + category: cargoproduct-category-name-fun + group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_livestock.yml b/Resources/Prototypes/Catalog/Cargo/cargo_livestock.yml index 6ef0ab4e211..922e2951b6c 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_livestock.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_livestock.yml @@ -5,7 +5,7 @@ state: 0 product: CrateNPCBee cost: 7000 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: butterfly product: CrateNPCButterflies cost: 4400 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: cat product: CrateNPCCat cost: 1200 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: icon-1 product: CrateNPCChicken cost: 4000 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: crab product: CrateNPCCrab cost: 3000 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: icon-0 product: CrateNPCDuck cost: 6000 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: corgi product: CrateNPCCorgi cost: 1200 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -75,7 +75,7 @@ state: puppy product: CrateNPCPuppyCorgi cost: 1200 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -85,7 +85,7 @@ state: cow product: CrateNPCCow cost: 3200 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -95,7 +95,7 @@ state: goat product: CrateNPCGoat cost: 1200 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -105,7 +105,7 @@ state: goose product: CrateNPCGoose cost: 2100 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -115,7 +115,7 @@ state: icon product: CrateNPCGorilla cost: 1100 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -125,7 +125,7 @@ state: box product: CrateNPCMonkeyCube cost: 2000 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -135,7 +135,7 @@ state: box_kobold product: CrateNPCKoboldCube cost: 2000 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -145,7 +145,7 @@ state: icon-0 product: CrateNPCMouse cost: 4400 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -155,7 +155,7 @@ state: parrot product: CrateNPCParrot cost: 3000 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -165,7 +165,7 @@ state: penguin product: CrateNPCPenguin cost: 2100 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -175,7 +175,7 @@ state: pig product: CrateNPCPig cost: 1100 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -185,7 +185,7 @@ state: snake product: CrateNPCSnake cost: 3000 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -195,7 +195,7 @@ state: icon-0 product: CrateNPCHamster cost: 2800 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -205,7 +205,7 @@ state: lizard product: CrateNPCLizard cost: 1100 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -215,7 +215,7 @@ state: kangaroo product: CrateNPCKangaroo cost: 2800 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -225,5 +225,5 @@ state: mothroach product: CrateNPCMothroach cost: 5000 - category: Livestock + category: cargoproduct-category-name-livestock group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_materials.yml b/Resources/Prototypes/Catalog/Cargo/cargo_materials.yml index e3b07af13ba..6f945001d93 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_materials.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_materials.yml @@ -5,7 +5,7 @@ state: glass_3 product: CrateMaterialGlass cost: 1000 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: steel_3 product: CrateMaterialSteel cost: 1000 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: plastic_3 product: CrateMaterialPlastic cost: 1500 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: brass_3 product: CrateMaterialBrass cost: 2500 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: plasteel_3 product: CrateMaterialPlasteel cost: 3000 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: cloth_3 product: CrateMaterialTextiles cost: 1000 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: plasma_3 product: CrateMaterialPlasma cost: 2000 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -75,7 +75,7 @@ state: cardboard_3 product: CrateMaterialCardboard cost: 750 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -85,7 +85,7 @@ state: paper_3 product: CrateMaterialPaper cost: 1000 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -95,7 +95,7 @@ state: fueltank product: WeldingFuelTankFull cost: 1500 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -105,5 +105,5 @@ state: watertank product: WaterTankFull cost: 1000 - category: Materials + category: cargoproduct-category-name-materials group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_medical.yml b/Resources/Prototypes/Catalog/Cargo/cargo_medical.yml index 01a7192b35b..1addf523e4b 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_medical.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_medical.yml @@ -5,7 +5,7 @@ state: firstaid product: CrateMedicalSupplies cost: 2400 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: beaker product: CrateChemistrySupplies cost: 750 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: vial product: CrateChemistryVials cost: 1000 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: burnkit product: CrateEmergencyBurnKit cost: 700 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: toxinkit product: CrateEmergencyToxinKit cost: 600 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: o2kit product: CrateEmergencyO2Kit cost: 600 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: brutekit product: CrateEmergencyBruteKit cost: 600 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -75,7 +75,7 @@ state: advkit product: CrateEmergencyAdvancedKit cost: 1200 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -85,7 +85,7 @@ state: radkit product: CrateEmergencyRadiationKit cost: 600 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -95,7 +95,7 @@ state: bag_folded product: CrateBodyBags cost: 700 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -105,7 +105,7 @@ state: icon product: CrateVirologyBiosuit cost: 800 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -115,7 +115,7 @@ state: implanter0 product: CrateMindShieldImplants cost: 3000 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -125,7 +125,7 @@ state: icon product: CrateChemistryP cost: 850 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -135,7 +135,7 @@ state: icon product: CrateChemistryS cost: 750 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -145,5 +145,5 @@ state: icon product: CrateChemistryD cost: 750 - category: Medical + category: cargoproduct-category-name-medical group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_science.yml b/Resources/Prototypes/Catalog/Cargo/cargo_science.yml index ce1cf009a9b..756a223e74d 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_science.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_science.yml @@ -5,7 +5,7 @@ state: artifact_container_icon product: CrateArtifactContainer cost: 500 - category: Science + category: cargoproduct-category-name-science group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: ano13 product: RandomArtifactSpawner cost: 2000 - category: Science + category: cargoproduct-category-name-science group: market - type: cargoProduct @@ -25,5 +25,5 @@ state: icon product: CrateScienceBiosuit cost: 800 - category: Science + category: cargoproduct-category-name-science group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_security.yml b/Resources/Prototypes/Catalog/Cargo/cargo_security.yml index a616202bdba..2ad7628ddb3 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_security.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_security.yml @@ -4,8 +4,8 @@ sprite: DeltaV/Clothing/OuterClothing/Armor/platecarrier.rsi # DeltaV - resprite state: icon product: CrateSecurityArmor - cost: 1000 # DeltaV - raise price for buffed armour - category: Security + cost: 800 + category: cargoproduct-category-name-security group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: icon product: CrateSecurityHelmet cost: 550 - category: Security + category: cargoproduct-category-name-security group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: base product: CrateSecurityNonlethal cost: 4000 - category: Security + category: cargoproduct-category-name-security group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: icon product: CrateSecurityRiot cost: 5500 - category: Security + category: cargoproduct-category-name-security group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: box_security product: CrateSecuritySupplies cost: 500 - category: Security + category: cargoproduct-category-name-security group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: handcuff product: CrateRestraints cost: 1000 - category: Security + category: cargoproduct-category-name-security group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: icon product: CrateSecurityBiosuit cost: 800 - category: Security + category: cargoproduct-category-name-security group: market - type: cargoProduct @@ -75,5 +75,5 @@ state: idle product: DeployableBarrier cost: 1000 - category: Security + category: cargoproduct-category-name-security group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_service.yml b/Resources/Prototypes/Catalog/Cargo/cargo_service.yml index a2c0af9ce7f..f27adb65a4a 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_service.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_service.yml @@ -5,7 +5,7 @@ state: cleaner product: CrateServiceJanitorialSupplies cost: 560 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: normal product: CrateServiceReplacementLights cost: 600 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: mousetrap product: CrateMousetrapBoxes cost: 500 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: icon product: CrateServiceTheatre cost: 1800 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: closed product: CrateServiceSmokeables cost: 1500 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: closed product: CrateServiceCustomSmokable cost: 1000 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: pen product: CrateServiceBureaucracy cost: 1000 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -75,7 +75,7 @@ state: default product: CrateServicePersonnel cost: 1000 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -85,7 +85,7 @@ state: book0 product: CrateServiceBooks cost: 1000 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -95,7 +95,7 @@ state: book_engineering2 product: CrateServiceGuidebooks cost: 1300 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -105,7 +105,7 @@ state: icon product: CrateServiceSodaDispenser cost: 850 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -115,7 +115,7 @@ state: icon product: CrateServiceBoozeDispenser cost: 750 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -125,7 +125,7 @@ state: box product: CrateServiceBox cost: 400 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -135,7 +135,7 @@ state: icon product: CrateJanitorBiosuit cost: 800 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -145,7 +145,7 @@ state: icon-hot product: FoodCartHot cost: 2000 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -155,7 +155,7 @@ state: icon-cold product: FoodCartCold cost: 2000 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -165,7 +165,7 @@ state: icon product: PetCarrier cost: 500 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -175,7 +175,7 @@ state: icon product: CrateJanitorExplosive cost: 1000 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -185,6 +185,6 @@ state: icon-cart product: JanitorialTrolley cost: 300 - category: Service + category: cargoproduct-category-name-service group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_shuttle.yml b/Resources/Prototypes/Catalog/Cargo/cargo_shuttle.yml index 96a193881ef..278104caed1 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_shuttle.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_shuttle.yml @@ -5,7 +5,7 @@ state: base product: CrateEngineeringThruster cost: 1500 - category: Shuttle + category: cargoproduct-category-name-shuttle group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: base product: CrateEngineeringGyroscope cost: 4000 - category: Shuttle + category: cargoproduct-category-name-shuttle group: market # - type: cargoProduct @@ -25,6 +25,6 @@ # state: avionics-systems # product: CrateEngineeringShuttle # cost: 3000 - # category: Shuttle + # category: cargoproduct-category-name-shuttle # group: market # locked: true # only the QM has permission to order by default diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml index 78616129e5d..3e303c32127 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml @@ -13,7 +13,7 @@ state: base product: CrateVendingMachineRestockBoozeFilled cost: 3500 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -24,7 +24,7 @@ state: base product: CrateVendingMachineRestockChefvendFilled cost: 680 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -44,7 +44,7 @@ state: base product: CrateVendingMachineRestockDinnerwareFilled cost: 2000 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: base product: CrateVendingMachineRestockCondimentStationFilled cost: 300 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: base product: CrateVendingMachineRestockEngineeringFilled cost: 3200 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -75,7 +75,7 @@ state: base product: CrateVendingMachineRestockGamesFilled cost: 750 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -85,7 +85,7 @@ state: base product: CrateVendingMachineRestockHotDrinksFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -95,7 +95,7 @@ state: base product: CrateVendingMachineRestockMedicalFilled cost: 1750 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -104,8 +104,8 @@ sprite: Objects/Specific/Service/vending_machine_restock.rsi state: base product: CrateVendingMachineRestockChemVendFilled - cost: 6300 #Delta V - was 3820, see rebase PR #53 - category: Medical + cost: 3820 + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -115,7 +115,7 @@ state: base product: CrateVendingMachineRestockNutriMaxFilled cost: 2400 - category: Hydroponics + category: cargoproduct-category-name-hydroponics group: market - type: cargoProduct @@ -125,7 +125,7 @@ state: base product: CrateVendingMachineRestockPTechFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -135,7 +135,7 @@ state: base product: CrateVendingMachineRestockRobustSoftdrinksFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -145,7 +145,7 @@ state: base product: CrateVendingMachineRestockSalvageEquipmentFilled cost: 1000 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -155,7 +155,7 @@ state: base product: CrateVendingMachineRestockSecTechFilled cost: 2200 - category: Security + category: cargoproduct-category-name-security group: market - type: cargoProduct @@ -165,7 +165,7 @@ state: base product: CrateVendingMachineRestockSeedsFilled cost: 3375 - category: Hydroponics + category: cargoproduct-category-name-hydroponics group: market - type: cargoProduct @@ -175,7 +175,7 @@ state: base product: CrateVendingMachineRestockSmokesFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -185,7 +185,7 @@ state: base product: CrateVendingMachineRestockVendomatFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -195,7 +195,7 @@ state: base product: CrateVendingMachineRestockRoboticsFilled cost: 1600 - category: Science + category: cargoproduct-category-name-science group: market - type: cargoProduct @@ -205,7 +205,7 @@ state: base product: CrateVendingMachineRestockTankDispenserFilled cost: 1000 - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market - type: cargoProduct @@ -215,7 +215,7 @@ state: base product: CrateVendingMachineRestockHappyHonkFilled cost: 2100 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -225,7 +225,7 @@ state: base product: CrateVendingMachineRestockGetmoreChocolateCorpFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -235,7 +235,7 @@ state: base product: CrateVendingMachineRestockChangFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -245,7 +245,7 @@ state: base product: CrateVendingMachineRestockDiscountDansFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -255,5 +255,5 @@ state: base product: CrateVendingMachineRestockDonutFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml index 92e4032b0cb..bb21bc36d47 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml @@ -87,6 +87,7 @@ ClothingShoesBootsCowboyBrown: 1 ClothingShoesBootsCowboyBlack: 1 ClothingShoesBootsCowboyWhite: 1 + ClothingMaskNeckGaiterRed: 2 emaggedInventory: ClothingShoesBling: 1 ClothingShoesBootsCowboyFancy: 1 diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index ba31f16d42b..7963ccd14aa 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -428,7 +428,7 @@ name: uplink-reinforcement-radio-name description: uplink-reinforcement-radio-desc productEntity: ReinforcementRadioSyndicate - icon: { sprite: Objects/Devices/communication.rsi, state: old-radio } + icon: { sprite: Objects/Devices/communication.rsi, state: radio } cost: Telecrystal: 16 categories: @@ -444,7 +444,7 @@ name: uplink-reinforcement-radio-name description: uplink-reinforcement-radio-desc productEntity: ReinforcementRadioSyndicateNukeops - icon: { sprite: Objects/Devices/communication.rsi, state: old-radio } + icon: { sprite: Objects/Devices/communication.rsi, state: radio } cost: Telecrystal: 16 categories: @@ -476,7 +476,7 @@ name: uplink-reinforcement-radio-monkey-name description: uplink-reinforcement-radio-monkey-desc productEntity: ReinforcementRadioSyndicateMonkey - icon: { sprite: Objects/Devices/communication.rsi, state: old-radio } + icon: { sprite: Objects/Devices/communication.rsi, state: radio } cost: Telecrystal: 8 categories: @@ -492,9 +492,9 @@ name: uplink-reinforcement-radio-monkey-name description: uplink-reinforcement-radio-monkey-desc productEntity: ReinforcementRadioSyndicateMonkeyNukeops - icon: { sprite: Objects/Devices/communication.rsi, state: old-radio } + icon: { sprite: Objects/Devices/communication.rsi, state: radio } cost: - Telecrystal: 8 + Telecrystal: 6 categories: - UplinkUtility conditions: @@ -724,7 +724,7 @@ id: UplinkUplinkImplanter # uplink uplink real name: uplink-uplink-implanter-name description: uplink-uplink-implanter-desc - icon: { sprite: /Textures/Objects/Devices/communication.rsi, state: old-radio } + icon: { sprite: /Textures/Objects/Devices/communication.rsi, state: radio } productEntity: UplinkImplanter cost: Telecrystal: 2 diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/familiars.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/familiars.yml index 0d7456e93e9..2e310914a34 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/familiars.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/familiars.yml @@ -84,7 +84,8 @@ - type: PotentialPsionic - type: Psionic removable: false - # - type: PyrokinesisPower # Pending psionic rework + amplification: 4 + - type: PyrokinesisPower - type: Grammar attributes: proper: true @@ -105,10 +106,6 @@ makeSentient: true allowMovement: true allowSpeech: true - requirements: - - !type:DepartmentTimeRequirement - department: Science - time: 14400 # DeltaV - 4 hours - type: entity parent: WelderExperimental diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Player/harpy.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Player/harpy.yml index 1f4eb696c65..e2541def035 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/Player/harpy.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Player/harpy.yml @@ -26,4 +26,3 @@ - type: NpcFactionMember factions: - NanoTrasen - - type: PotentialPsionic diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Player/vulpkanin.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Player/vulpkanin.yml index 06abe8c45fa..ea2357a5c06 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/Player/vulpkanin.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Player/vulpkanin.yml @@ -24,7 +24,6 @@ - type: NpcFactionMember factions: - NanoTrasen - - type: PotentialPsionic - type: Respirator damage: types: diff --git a/Resources/Prototypes/DeltaV/GameRules/events.yml b/Resources/Prototypes/DeltaV/GameRules/events.yml index 73b0ca6549c..9391756492b 100644 --- a/Resources/Prototypes/DeltaV/GameRules/events.yml +++ b/Resources/Prototypes/DeltaV/GameRules/events.yml @@ -52,9 +52,8 @@ noSpawn: true components: - type: StationEvent - earliestStart: 15 - weight: 5 - minimumPlayers: 25 + weight: 7.5 + minimumPlayers: 10 maxOccurrences: 1 duration: 1 - type: PirateRadioSpawnRule diff --git a/Resources/Prototypes/DeltaV/Species/harpy.yml b/Resources/Prototypes/DeltaV/Species/harpy.yml index bcc4dd22c44..a4293afa758 100644 --- a/Resources/Prototypes/DeltaV/Species/harpy.yml +++ b/Resources/Prototypes/DeltaV/Species/harpy.yml @@ -1,7 +1,7 @@ - type: species id: Harpy name: species-name-harpy - roundStart: true + roundStart: false prototype: MobHarpy sprites: MobHarpySprites markingLimits: MobHarpyMarkingLimits diff --git a/Resources/Prototypes/DeltaV/Species/vulpkanin.yml b/Resources/Prototypes/DeltaV/Species/vulpkanin.yml index 0b4a06af2d6..01a4689f194 100644 --- a/Resources/Prototypes/DeltaV/Species/vulpkanin.yml +++ b/Resources/Prototypes/DeltaV/Species/vulpkanin.yml @@ -1,7 +1,7 @@ - type: species id: Vulpkanin name: species-name-vulpkanin - roundStart: true + roundStart: false prototype: MobVulpkanin sprites: MobVulpkaninSprites defaultSkinTone: "#985629" diff --git a/Resources/Prototypes/Entities/Clothing/Head/hats.yml b/Resources/Prototypes/Entities/Clothing/Head/hats.yml index 9fb27935301..a210708b636 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hats.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hats.yml @@ -809,8 +809,8 @@ - type: entity parent: ClothingHeadBase id: ClothingHeadHatMagician - name: magician's top hat. - description: "A magician's top hat." + name: magician's tophat + description: "A magician's tophat." components: - type: Icon sprite: Clothing/Head/Hats/magician.rsi @@ -827,6 +827,7 @@ - type: Item size: Small sprite: Clothing/Head/Hats/magician.rsi + storedRotation: 0 - type: Storage grid: - 0,0,0,0 diff --git a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml index 8f20e33d493..bd1f44ea6cd 100644 --- a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml +++ b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml @@ -514,6 +514,16 @@ tags: - WhitelistChameleon +- type: entity + parent: ClothingMaskNeckGaiter + id: ClothingMaskNeckGaiterRed + name: red neck gaiter + components: + - type: Sprite + sprite: Clothing/Mask/neckgaiterred.rsi + - type: Clothing + sprite: Clothing/Mask/neckgaiterred.rsi + - type: entity parent: ClothingMaskClownBase id: ClothingMaskSexyClown diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/misc.yml b/Resources/Prototypes/Entities/Clothing/Shoes/misc.yml index ee1708caef6..d1f6e083f40 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/misc.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/misc.yml @@ -47,6 +47,9 @@ collection: FootstepDuck params: variation: 0.07 + - type: Construction + graph: ClothingShoeSlippersDuck + node: shoes - type: entity parent: ClothingShoesBaseButcherable diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index accc704e840..adba2cabc1d 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -22,7 +22,7 @@ shape: !type:PhysShapeCircle radius: 0.25 - density: 10 + density: 0.8 mask: - FlyingMobMask layer: @@ -87,7 +87,7 @@ shape: !type:PhysShapeCircle radius: 0.1 - density: 30 + density: 0.1 mask: - FlyingMobMask layer: @@ -334,7 +334,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 100 + density: 0.0007 mask: - SmallMobMask layer: @@ -438,7 +438,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 120 + density: 0.007 mask: - SmallMobMask layer: @@ -1542,7 +1542,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 100 + density: 0.76 mask: - SmallMobMask layer: @@ -2457,7 +2457,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 50 #They actually are pretty light, I looked it up + density: 16.66 mask: - MobMask layer: @@ -2539,7 +2539,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 50 + density: 25.5 mask: - MobMask layer: @@ -2692,7 +2692,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 15 + density: 9 mask: - MobMask layer: @@ -2844,6 +2844,17 @@ Base: caracal_flop Dead: Base: caracal_dead + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + density: 30 + mask: + - MobMask + layer: + - MobLayer - type: entity name: kitten @@ -2877,6 +2888,17 @@ thresholds: 0: Alive 25: Dead + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + density: 2 + mask: + - MobMask + layer: + - MobLayer - type: entity name: sloth @@ -2957,7 +2979,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 5 + density: 4 mask: - MobMask layer: @@ -3034,7 +3056,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 120 + density: 0.8 mask: - SmallMobMask layer: @@ -3155,7 +3177,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 250 + density: 750 mask: - MobMask layer: @@ -3231,7 +3253,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 100 # High, because wood is heavy. + density: 15 mask: - MobMask layer: diff --git a/Resources/Prototypes/Entities/Mobs/Player/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Player/arachnid.yml index 5ebd43ddf48..d9dea3c18d9 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/arachnid.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/arachnid.yml @@ -11,4 +11,3 @@ damageRecovery: types: Asphyxiation: -0.5 - - type: PotentialPsionic #Nyano - Summary: makes potentially psionic. diff --git a/Resources/Prototypes/Entities/Mobs/Player/diona.yml b/Resources/Prototypes/Entities/Mobs/Player/diona.yml index 28687c68bfc..dfd5e9a1be7 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/diona.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/diona.yml @@ -11,7 +11,6 @@ damageRecovery: types: Asphyxiation: -1.0 - - type: PotentialPsionic #Nyano - Summary: makes potentially psionic. # Reformed Diona - type: entity diff --git a/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml b/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml index fb84ad3650f..d1de65df012 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml @@ -3,5 +3,3 @@ name: Urist McHands The Dwarf parent: BaseMobDwarf id: MobDwarf - components: - - type: PotentialPsionic #Nyano - Summary: makes potentially psionic. \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Player/human.yml b/Resources/Prototypes/Entities/Mobs/Player/human.yml index 6197c82c021..9a7c2ee65ec 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/human.yml @@ -3,8 +3,6 @@ name: Urist McHands parent: BaseMobHuman id: MobHuman - components: - - type: PotentialPsionic #Nyano - Summary: makes potentially psionic. #Syndie - type: entity diff --git a/Resources/Prototypes/Entities/Mobs/Player/moth.yml b/Resources/Prototypes/Entities/Mobs/Player/moth.yml index ffdb36d86bd..72feba958ab 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/moth.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/moth.yml @@ -3,5 +3,3 @@ name: Urist McFluff parent: BaseMobMoth id: MobMoth - components: - - type: PotentialPsionic #Nyano - Summary: makes potentially psionic. \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml index 71d74222979..b9f265e0bcf 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml @@ -3,7 +3,5 @@ name: Urisst' Mzhand parent: BaseMobReptilian id: MobReptilian - components: - - type: PotentialPsionic #Nyano - Summary: makes potentially psionic. #Weh diff --git a/Resources/Prototypes/Entities/Mobs/Player/slime.yml b/Resources/Prototypes/Entities/Mobs/Player/slime.yml index 79669a8fe2a..4e5974b3084 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/slime.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/slime.yml @@ -2,5 +2,3 @@ save: false parent: BaseMobSlimePerson id: MobSlimePerson - components: - - type: PotentialPsionic #Nyano - Summary: makes potentially psionic. \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Species/vox.yml b/Resources/Prototypes/Entities/Mobs/Species/vox.yml index 5e40254e3a8..a271e9d0846 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/vox.yml @@ -14,6 +14,8 @@ - type: HumanoidAppearance species: Vox #- type: VoxAccent # Not yet coded + - type: Inventory + speciesId: vox - type: Speech speechVerb: Vox speechSounds: Vox diff --git a/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml b/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml index f6d57f53a50..a8489866fc7 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml @@ -7,7 +7,7 @@ - type: Sprite sprite: Objects/Devices/communication.rsi layers: - - state: old-radio + - state: radio - type: GhostRole name: ghost-role-information-syndicate-reinforcement-name description: ghost-role-information-syndicate-reinforcement-description diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml index 8c3aed0d069..edad2b40631 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml @@ -89,6 +89,7 @@ program: 125 - type: Item size: Small + storedRotation: -90 - type: entity parent: BaseHandheldInstrument @@ -118,6 +119,7 @@ - type: Item size: Small sprite: Objects/Fun/Instruments/gunpet.rsi + storedRotation: -90 - type: Tag tags: - Sidearm @@ -141,6 +143,7 @@ - type: Item sprite: Objects/Fun/Instruments/bike_horn.rsi size: Small + storedRotation: -90 - type: Clothing sprite: Objects/Fun/Instruments/bike_horn.rsi slots: [Belt] diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_percussion.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_percussion.yml index a255ab4a32c..b09ea96f7b4 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_percussion.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_percussion.yml @@ -98,6 +98,8 @@ - type: Tag tags: - KeyedInstrument + - type: Item + size: Small - type: entity parent: BaseHandheldInstrument diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml index 3b89d1075be..e99f825d483 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml @@ -141,7 +141,7 @@ sprite: Objects/Fun/Instruments/panflute.rsi state: icon - type: Item - size: Normal + size: Small sprite: Objects/Fun/Instruments/panflute.rsi - type: Tag tags: @@ -160,8 +160,9 @@ sprite: Objects/Fun/Instruments/ocarina.rsi state: icon - type: Item - size: Normal + size: Small sprite: Objects/Fun/Instruments/ocarina.rsi + storedRotation: -90 - type: Tag tags: - WoodwindInstrument diff --git a/Resources/Prototypes/Entities/Objects/Fun/toys.yml b/Resources/Prototypes/Entities/Objects/Fun/toys.yml index 6697aa711e0..67c6e1194b7 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/toys.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/toys.yml @@ -643,6 +643,9 @@ requiresSpecialDigestion: true useSound: path: /Audio/Items/Toys/mousesqueek.ogg + - type: Tag + tags: + - ToyRubberDuck - type: entity parent: BasePlushie diff --git a/Resources/Prototypes/Entities/Objects/Misc/authorbooks.yml b/Resources/Prototypes/Entities/Objects/Misc/authorbooks.yml index c3f5170001a..70d984240ea 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/authorbooks.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/authorbooks.yml @@ -387,3 +387,17 @@ - state: book6 - type: Paper content: book-text-inspiration + +- type: entity + parent: BookBase + id: BookJanitorTale + name: the tales of a tired janitor + description: A clean looking book, smelling vaguely of soap and bleach. + components: + - type: Sprite + sprite: Objects/Misc/books.rsi + layers: + - state: book0 + - type: Paper + content: book-text-janitor + diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml index bd789214f99..9fde67afb44 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml @@ -786,7 +786,7 @@ # Syringes - type: entity name: ephedrine syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeEphedrine components: - type: SolutionContainerManager @@ -799,7 +799,7 @@ - type: entity name: inaprovaline syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeInaprovaline components: - type: SolutionContainerManager @@ -812,7 +812,7 @@ - type: entity name: tranexamic acid syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeTranexamicAcid components: - type: SolutionContainerManager @@ -825,7 +825,7 @@ - type: entity name: bicaridine syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeBicaridine components: - type: SolutionContainerManager @@ -838,7 +838,7 @@ - type: entity name: dermaline syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeDermaline components: - type: SolutionContainerManager @@ -851,7 +851,7 @@ - type: entity name: hyronalin syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeHyronalin components: - type: SolutionContainerManager @@ -864,7 +864,7 @@ - type: entity name: ipecac syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeIpecac components: - type: SolutionContainerManager @@ -877,7 +877,7 @@ - type: entity name: ambuzol syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeAmbuzol components: - type: SolutionContainerManager @@ -890,7 +890,7 @@ - type: entity name: sigynate syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeSigynate components: - type: SolutionContainerManager @@ -903,7 +903,7 @@ - type: entity name: ethylredoxrazine syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeEthylredoxrazine components: - type: SolutionContainerManager @@ -916,7 +916,7 @@ - type: entity name: phalanximine syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringePhalanximine components: - type: SolutionContainerManager @@ -929,7 +929,7 @@ - type: entity name: saline syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeSaline components: - type: SolutionContainerManager @@ -943,7 +943,7 @@ #this is where all the syringes are so i didn't know where to put it - type: entity name: romerol syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeRomerol components: - type: SolutionContainerManager @@ -956,7 +956,7 @@ - type: entity name: stimulants syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeStimulants components: - type: SolutionContainerManager diff --git a/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml b/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml index ab65940fabc..ae4aaed7d21 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml @@ -364,6 +364,13 @@ - Syringe - Trash +- type: entity + parent: BaseSyringe + id: PrefilledSyringe + components: + - type: Injector + toggleState: Inject + - type: entity id: SyringeBluespace parent: BaseSyringe diff --git a/Resources/Prototypes/Entities/Objects/Specific/syndicate.yml b/Resources/Prototypes/Entities/Objects/Specific/syndicate.yml index 2b5762aaef2..883f66816de 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/syndicate.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/syndicate.yml @@ -57,10 +57,10 @@ - type: Sprite sprite: Objects/Devices/communication.rsi layers: - - state: old-radio + - state: radio - type: Item sprite: Objects/Devices/communication.rsi - heldPrefix: old-radio + heldPrefix: radio - type: UserInterface interfaces: - key: enum.StoreUiKey.Key diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml index 5a863cd3d88..44b43184651 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml @@ -6,6 +6,8 @@ components: - type: AccessReader access: [["Service"]] + - type: Wires + layoutId: AirlockService - type: entity parent: Airlock @@ -14,6 +16,8 @@ components: - type: AccessReader access: [["Lawyer"]] + - type: Wires + layoutId: AirlockService - type: entity parent: Airlock @@ -22,6 +26,8 @@ components: - type: AccessReader access: [["Theatre"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockServiceLocked @@ -30,6 +36,8 @@ components: - type: AccessReader access: [["Chapel"]] + - type: Wires + layoutId: AirlockService - type: entity parent: Airlock @@ -38,6 +46,8 @@ components: - type: AccessReader access: [["Janitor"]] + - type: Wires + layoutId: AirlockService - type: entity parent: Airlock @@ -46,6 +56,8 @@ components: - type: AccessReader access: [["Kitchen"]] + - type: Wires + layoutId: AirlockService - type: entity parent: Airlock @@ -54,6 +66,8 @@ components: - type: AccessReader access: [["Bar"]] + - type: Wires + layoutId: AirlockService - type: entity parent: Airlock @@ -62,6 +76,8 @@ components: - type: AccessReader access: [["Hydroponics"]] + - type: Wires + layoutId: AirlockService - type: entity parent: Airlock @@ -70,6 +86,8 @@ components: - type: AccessReader access: [["Captain"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockExternal @@ -86,6 +104,8 @@ components: - type: AccessReader access: [["Cargo"]] + - type: Wires + layoutId: AirlockCargo - type: entity parent: AirlockExternal @@ -94,6 +114,8 @@ components: - type: AccessReader access: [["Engineering"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockExternal @@ -102,6 +124,8 @@ components: - type: AccessReader access: [["Atmospherics"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockExternal @@ -126,6 +150,8 @@ components: - type: AccessReader access: [["Kitchen"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockFreezer @@ -134,6 +160,8 @@ components: - type: AccessReader access: [["Kitchen"], ["Hydroponics"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockFreezer @@ -142,6 +170,8 @@ components: - type: AccessReader access: [["Hydroponics"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockEngineering @@ -150,6 +180,8 @@ components: - type: AccessReader access: [["Engineering"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockAtmospherics @@ -158,6 +190,8 @@ components: - type: AccessReader access: [["Atmospherics"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockCargo @@ -166,6 +200,8 @@ components: - type: AccessReader access: [["Cargo"]] + - type: Wires + layoutId: AirlockCargo - type: entity parent: AirlockCargo @@ -174,6 +210,8 @@ components: - type: AccessReader access: [["Salvage"]] + - type: Wires + layoutId: AirlockCargo - type: entity parent: AirlockMining @@ -182,6 +220,8 @@ components: - type: AccessReader access: [["Salvage"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMedical @@ -190,6 +230,8 @@ components: - type: AccessReader access: [["Medical"]] + - type: Wires + layoutId: AirlockMedical - type: entity parent: AirlockMedical @@ -206,6 +248,8 @@ components: - type: AccessReader access: [["Medical"]] + - type: Wires + layoutId: AirlockMedical - type: entity parent: AirlockChemistry @@ -214,6 +258,8 @@ components: - type: AccessReader access: [["Chemistry"]] + - type: Wires + layoutId: AirlockMedical - type: entity parent: AirlockScience @@ -222,6 +268,8 @@ components: - type: AccessReader access: [["Research"]] + - type: Wires + layoutId: AirlockScience - type: entity parent: AirlockScience @@ -230,6 +278,8 @@ components: - type: AccessReader access: [["Research"], ["Medical"]] + - type: Wires + layoutId: AirlockScience - type: entity parent: AirlockCentralCommand @@ -258,6 +308,8 @@ components: - type: AccessReader access: [["Captain"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommand @@ -266,6 +318,8 @@ components: - type: AccessReader access: [["ChiefMedicalOfficer"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommand @@ -274,6 +328,8 @@ components: - type: AccessReader access: [["ChiefEngineer"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommand @@ -282,6 +338,8 @@ components: - type: AccessReader access: [["HeadOfSecurity"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommand @@ -290,6 +348,8 @@ components: - type: AccessReader access: [["ResearchDirector"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommand @@ -298,6 +358,8 @@ components: - type: AccessReader access: [["HeadOfPersonnel"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommand @@ -306,6 +368,8 @@ components: - type: AccessReader access: [["Quartermaster"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockSecurity @@ -365,6 +429,8 @@ components: - type: AccessReader access: [["Security", "Command"]] + - type: Wires + layoutId: AirlockSecurity - type: entity parent: AirlockCommand @@ -373,6 +439,8 @@ components: - type: AccessReader access: [["External"]] + - type: Wires + layoutId: AirlockCommand # Glass Airlocks - type: entity @@ -382,6 +450,8 @@ components: - type: AccessReader access: [["Service"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockGlass @@ -390,6 +460,8 @@ components: - type: AccessReader access: [["Lawyer"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockGlass @@ -398,6 +470,8 @@ components: - type: AccessReader access: [["Theatre"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockGlass @@ -406,6 +480,8 @@ components: - type: AccessReader access: [["Bar"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockExternalGlass @@ -422,6 +498,8 @@ components: - type: AccessReader access: [["Cargo"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockExternalGlass @@ -446,6 +524,8 @@ components: - type: AccessReader access: [["Engineering"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockExternalGlass @@ -454,6 +534,8 @@ components: - type: AccessReader access: [["Atmospherics"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockGlass @@ -462,6 +544,8 @@ components: - type: AccessReader access: [["Kitchen"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockGlass @@ -470,6 +554,8 @@ components: - type: AccessReader access: [["Janitor"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockGlass @@ -478,6 +564,8 @@ components: - type: AccessReader access: [["Hydroponics"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockScienceGlass @@ -486,6 +574,8 @@ components: - type: AccessReader access: [["Chapel"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockEngineeringGlass @@ -494,6 +584,8 @@ components: - type: AccessReader access: [["Engineering"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockAtmosphericsGlass @@ -502,6 +594,8 @@ components: - type: AccessReader access: [["Atmospherics"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockCargoGlass @@ -510,6 +604,8 @@ components: - type: AccessReader access: [["Cargo"]] + - type: Wires + layoutId: AirlockCargo - type: entity parent: AirlockCargoGlass @@ -518,6 +614,8 @@ components: - type: AccessReader access: [["Salvage"]] + - type: Wires + layoutId: AirlockCargo - type: entity parent: AirlockMiningGlass @@ -526,6 +624,8 @@ components: - type: AccessReader access: [["Salvage"]] + - type: Wires + layoutId: AirlockCargo - type: entity parent: AirlockChemistryGlass @@ -534,6 +634,8 @@ components: - type: AccessReader access: [["Chemistry"]] + - type: Wires + layoutId: AirlockMedical - type: entity parent: AirlockMedicalGlass @@ -542,6 +644,8 @@ components: - type: AccessReader access: [["Medical"]] + - type: Wires + layoutId: AirlockMedical - type: entity parent: AirlockMedicalGlass @@ -558,6 +662,8 @@ components: - type: AccessReader access: [["Medical"]] + - type: Wires + layoutId: AirlockMedical - type: entity parent: AirlockScienceGlass @@ -566,6 +672,8 @@ components: - type: AccessReader access: [["Research"]] + - type: Wires + layoutId: AirlockScience - type: entity parent: AirlockScienceGlass @@ -574,6 +682,8 @@ components: - type: AccessReader access: [["Research"], ["Medical"]] + - type: Wires + layoutId: AirlockScience - type: entity parent: AirlockCentralCommandGlass @@ -592,6 +702,8 @@ components: - type: AccessReader access: [["Command"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommandGlass @@ -600,6 +712,8 @@ components: - type: AccessReader access: [["Captain"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommandGlass @@ -608,6 +722,8 @@ components: - type: AccessReader access: [["ChiefMedicalOfficer"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommandGlass @@ -616,6 +732,8 @@ components: - type: AccessReader access: [["ChiefEngineer"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommandGlass @@ -624,6 +742,8 @@ components: - type: AccessReader access: [["HeadOfSecurity"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommandGlass @@ -632,6 +752,8 @@ components: - type: AccessReader access: [["ResearchDirector"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommandGlass @@ -640,6 +762,8 @@ components: - type: AccessReader access: [["HeadOfPersonnel"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommandGlass @@ -648,6 +772,8 @@ components: - type: AccessReader access: [["Quartermaster"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockSecurityGlass @@ -656,6 +782,8 @@ components: - type: AccessReader access: [["Security"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockSecurityGlass @@ -664,8 +792,9 @@ components: - type: AccessReader access: [["Detective"]] + - type: Wires + layoutId: AirlockCommand -#Delta V: Removed Brig Access #- type: entity # parent: AirlockSecurityGlass # id: AirlockBrigGlassLocked @@ -673,6 +802,8 @@ # components: # - type: AccessReader # access: [["Brig"]] +# - type: Wires +# layoutId: AirlockCommand - type: entity parent: AirlockSecurityGlass @@ -681,6 +812,8 @@ components: - type: AccessReader access: [["Security"], ["Lawyer"]] + - type: Wires + layoutId: AirlockSecurity - type: entity parent: AirlockSecurityGlass @@ -689,6 +822,8 @@ components: - type: AccessReader access: [["Armory"]] + - type: Wires + layoutId: AirlockSecurity - type: entity parent: AirlockCommandGlassLocked @@ -738,6 +873,8 @@ components: - type: AccessReader access: [["Salvage"]] + - type: Wires + layoutId: AirlockCargo - type: entity parent: AirlockMaint @@ -746,6 +883,8 @@ components: - type: AccessReader access: [["Cargo"]] + - type: Wires + layoutId: AirlockCargo - type: entity parent: AirlockMaint @@ -754,6 +893,8 @@ components: - type: AccessReader access: [["Command"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockMaint @@ -770,6 +911,8 @@ components: - type: AccessReader access: [["Engineering"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockMaint @@ -778,6 +921,8 @@ components: - type: AccessReader access: [["Atmospherics"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockMaint @@ -786,6 +931,8 @@ components: - type: AccessReader access: [["Bar"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMaint @@ -794,6 +941,8 @@ components: - type: AccessReader access: [["Chapel"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMaint @@ -802,6 +951,8 @@ components: - type: AccessReader access: [["Hydroponics"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMaint @@ -810,6 +961,8 @@ components: - type: AccessReader access: [["Janitor"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMaint @@ -818,6 +971,8 @@ components: - type: AccessReader access: [["Lawyer"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMaint @@ -826,6 +981,8 @@ components: - type: AccessReader access: [["Service"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMaint @@ -834,6 +991,8 @@ components: - type: AccessReader access: [["Theatre"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMaint @@ -842,6 +1001,8 @@ components: - type: AccessReader access: [["Kitchen"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMaint @@ -858,6 +1019,8 @@ components: - type: AccessReader access: [["Medical"]] + - type: Wires + layoutId: AirlockMedical - type: entity parent: AirlockMaint @@ -866,6 +1029,8 @@ components: - type: AccessReader access: [["Chemistry"]] + - type: Wires + layoutId: AirlockMedical - type: entity parent: AirlockMaint @@ -874,6 +1039,8 @@ components: - type: AccessReader access: [["Research"]] + - type: Wires + layoutId: AirlockScience - type: entity parent: AirlockMaint @@ -882,6 +1049,8 @@ components: - type: AccessReader access: [["Research"], ["Medical"]] + - type: Wires + layoutId: AirlockScience - type: entity parent: AirlockMaint @@ -890,6 +1059,8 @@ components: - type: AccessReader access: [["Security"]] + - type: Wires + layoutId: AirlockSecurity - type: entity parent: AirlockMaint @@ -898,6 +1069,8 @@ components: - type: AccessReader access: [["Detective"]] + - type: Wires + layoutId: AirlockSecurity - type: entity parent: AirlockMaint @@ -906,6 +1079,8 @@ components: - type: AccessReader access: [["HeadOfPersonnel"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockMaint @@ -914,6 +1089,8 @@ components: - type: AccessReader access: [["Captain"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockMaint @@ -922,6 +1099,8 @@ components: - type: AccessReader access: [["ChiefEngineer"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockMaint @@ -930,6 +1109,8 @@ components: - type: AccessReader access: [["ChiefMedicalOfficer"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockMaint @@ -938,6 +1119,8 @@ components: - type: AccessReader access: [["HeadOfSecurity"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockMaint @@ -946,6 +1129,8 @@ components: - type: AccessReader access: [["ResearchDirector"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockMaint @@ -954,6 +1139,8 @@ components: - type: AccessReader access: [["Armory"]] + - type: Wires + layoutId: AirlockSecurity - type: entity parent: AirlockSyndicate diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml index 5fca0819984..4bc43b5559e 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml @@ -131,9 +131,6 @@ - board - type: PlacementReplacement key: walls - - type: IconSmooth - key: walls - mode: NoSprite - type: PaintableAirlock group: Standard department: Civilian diff --git a/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml b/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml index 4b6f72de934..644976eb9c4 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml @@ -52,9 +52,6 @@ behaviors: - !type:DoActsBehavior acts: ["Destruction"] - - type: IconSmooth - key: walls - mode: NoSprite - type: Occluder - type: BlockWeather diff --git a/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml b/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml index e38ba1fd667..7d3af93a64d 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml @@ -73,9 +73,6 @@ behaviors: - !type:DoActsBehavior acts: ["Destruction"] - - type: IconSmooth - key: walls - mode: NoSprite - type: DoorSignalControl - type: DeviceNetwork deviceNetId: Wireless diff --git a/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml b/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml index 518ff2f066e..0b3c291af25 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml @@ -4,7 +4,7 @@ abstract: true description: You sit in this. Either by will or force. placement: - mode: SnapgridCenter + mode: PlaceFree components: - type: Clickable - type: InteractionOutline @@ -65,6 +65,8 @@ id: ChairBase abstract: true parent: UnanchoredChairBase + placement: + mode: SnapgridCenter components: - type: Physics bodyType: Static @@ -87,6 +89,8 @@ id: StoolBase parent: OfficeChairBase abstract: true + placement: + mode: SnapgridCenter components: - type: Physics bodyType: Static @@ -116,7 +120,7 @@ - type: entity name: stool id: Stool - parent: ChairBase + parent: UnanchoredChairBase description: Apply butt. components: - type: Sprite @@ -241,7 +245,7 @@ - type: entity id: ChairMeat - parent: ChairBase + parent: UnanchoredChairBase name: meat chair description: Uncomfortably sweaty. components: @@ -285,7 +289,7 @@ name: web chair id: ChairWeb description: For true web developers. - parent: ChairBase + parent: UnanchoredChairBase components: - type: Sprite sprite: Structures/Web/chair.rsi @@ -349,8 +353,6 @@ parent: ChairFolding id: ChairFoldingSpawnFolded suffix: folded - placement: - mode: PlaceFree components: - type: Foldable folded: true diff --git a/Resources/Prototypes/Entities/Structures/Windows/window.yml b/Resources/Prototypes/Entities/Structures/Windows/window.yml index fca0b975e98..ee2ad6bc28f 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/window.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/window.yml @@ -69,7 +69,7 @@ acts: [ "Destruction" ] - type: Airtight - type: IconSmooth - key: windows + key: walls base: window - type: InteractionPopup interactSuccessString: comp-window-knock @@ -242,4 +242,4 @@ sprite: Structures/Windows/cracks_diagonal.rsi - type: Construction graph: WindowDiagonal - node: windowDiagonal \ No newline at end of file + node: windowDiagonal diff --git a/Resources/Prototypes/Loadouts/Jobs/science.yml b/Resources/Prototypes/Loadouts/Jobs/science.yml index f65b69c46a0..886b8e283e6 100644 --- a/Resources/Prototypes/Loadouts/Jobs/science.yml +++ b/Resources/Prototypes/Loadouts/Jobs/science.yml @@ -8,7 +8,7 @@ jobs: - Scientist - !type:LoadoutDepartmentTimeRequirement - department: Epistemics + department: Science min: 216000 # 60 hours items: - ClothingUniformJumpskirtSeniorResearcher @@ -23,7 +23,7 @@ jobs: - Scientist - !type:LoadoutDepartmentTimeRequirement - department: Epistemics + department: Science min: 216000 # 60 hours items: - ClothingUniformJumpsuitSeniorResearcher @@ -66,7 +66,7 @@ jobs: - Scientist - !type:LoadoutDepartmentTimeRequirement - department: Epistemics + department: Science min: 216000 # 60 hours items: - ClothingOuterCoatLabSeniorResearcher diff --git a/Resources/Prototypes/Nyanotrasen/Actions/types.yml b/Resources/Prototypes/Nyanotrasen/Actions/types.yml index e6e4bdc5a75..55dd48e5470 100644 --- a/Resources/Prototypes/Nyanotrasen/Actions/types.yml +++ b/Resources/Prototypes/Nyanotrasen/Actions/types.yml @@ -36,18 +36,18 @@ event: !type:DispelPowerActionEvent - type: entity - id: ActionMassSleep - name: action-name-mass-sleep - description: action-description-mass-sleep + id: ActionRegenerativeStasis + name: action-name-regenerative-stasis + description: action-description-regenerative-stasis noSpawn: true components: - - type: WorldTargetAction + - type: EntityTargetAction icon: Nyanotrasen/Interface/VerbIcons/mass_sleep.png useDelay: 60 checkCanAccess: false range: 8 itemIconStyle: BigAction - event: !type:MassSleepPowerActionEvent + event: !type:RegenerativeStasisPowerActionEvent - type: entity id: ActionMindSwap @@ -94,7 +94,7 @@ description: action-description-pyrokinesis noSpawn: true components: - - type: EntityTargetAction + - type: WorldTargetAction icon: Nyanotrasen/Interface/VerbIcons/pyrokinesis.png useDelay: 50 range: 6 @@ -103,15 +103,29 @@ event: !type:PyrokinesisPowerActionEvent - type: entity - id: ActionMetapsionic - name: action-name-metapsionic - description: action-description-metapsionic + id: ActionWideMetapsionic + name: action-name-widemetapsionic + description: action-description-widemetapsionic noSpawn: true components: - type: InstantAction icon: Nyanotrasen/Interface/VerbIcons/metapsionic.png useDelay: 45 - event: !type:MetapsionicPowerActionEvent + event: !type:WideMetapsionicPowerActionEvent + +- type: entity + id: ActionFocusedMetapsionic + name: action-name-focusedmetapsionic + description: action-description-focusedmetapsionic + noSpawn: true + components: + - type: EntityTargetAction + icon: Nyanotrasen/Interface/VerbIcons/metapsionic.png + useDelay: 45 + range: 3 + checkCanAccess: false + itemIconStyle: BigAction + event: !type:FocusedMetapsionicPowerActionEvent - type: entity id: ActionPsionicRegeneration diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/books.yml b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/books.yml index 28340ead40a..59e3690b6bc 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/books.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/books.yml @@ -45,6 +45,7 @@ - BookMap - BookJourney - BookInspiration + - BookJanitorTale # Guidebook Books - BookSpaceEncyclopedia - BookTheBookOfControl diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/boxes.yml b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/boxes.yml index a75f31cf0f7..181bacca45e 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/boxes.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/boxes.yml @@ -36,6 +36,7 @@ - BoxCandle - BoxCandleSmall - BoxDarts + - BoxCartridgeBB chance: 0.7 rarePrototypes: - BoxHugHealing @@ -49,6 +50,7 @@ - PresentRandom - BoxHolyWater - MysteryFigureBox + - BoxCleanerGrenades rareChance: 0.05 @@ -100,6 +102,8 @@ - BoxMagazineCaselessRifleRubber - BoxMagazineUniversalMagnumPractice - BoxMagazineUniversalMagnumRubber + - MagazineBoxSpecialRubber + - MagazineBoxSpecialPractice chance: 0.15 rarePrototypes: - BoxMagazinePistolCaselessRifle @@ -121,4 +125,8 @@ - BoxShellSoulbreaker - BoxMagazineUniversalMagnum - BoxSpeedLoaderLightRifle + - MagazineBoxSpecial + - MagazineBoxSpecialIncendiary + - MagazineBoxSpecialUranium + - MagazineBoxSpecialMindbreaker rareChance: 0.015 diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/devices.yml b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/devices.yml index c8efdbdc8cf..abd4d86a1ef 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/devices.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/devices.yml @@ -1,7 +1,7 @@ - type: entity parent: MarkerBase id: RandomBoards - name: random machine board spawner + name: random device & board spawner components: - type: Sprite layers: @@ -71,6 +71,16 @@ - HotplateMachineCircuitboard - ElectricGrillMachineCircuitboard - FatExtractorMachineCircuitboard + - SpaceHeaterMachineCircuitBoard + - StationMapCircuitboard + - Igniter + - IntercomElectronics + - DoorRemoteFirefight + - RadiationCollectorFlatpack + - ContainmentFieldGeneratorFlatpack + - SolarAssemblyFlatpack + - StationBeaconPart + - HandheldStationMap chance: 0.8 rarePrototypes: - TraversalDistorterMachineCircuitboard @@ -107,4 +117,26 @@ - ShockCollar - GlimmerMonitorCartridge - PotatoAIChip + - CargoTelepadMachineCircuitboard + - FlatpackerMachineCircuitboard + - OreProcessorIndustrialMachineCircuitboard + - TurboItemRechargerCircuitboard + - PowerCageRechargerCircuitboard + - HellfireHeaterMachineCircuitBoard + - HellfireFreezerMachineCircuitBoard + - BiofabricatorMachineCircuitboard + - SalvageExpeditionsComputerCircuitboard + - RadarConsoleCircuitboard + - RipleyCentralElectronics + - RipleyPeripheralsElectronics + - HamtrCentralElectronics + - HamtrPeripheralsElectronics + - HonkerCentralElectronics + - HonkerPeripheralsElectronics + - HonkerTargetingElectronics + - RemoteSignallerAdvanced + - SignalTimerElectronics + - LogProbeCartridge + - HoloprojectorField + - DeviceQuantumSpinInverter rareChance: 0.25 diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/hats.yml b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/hats.yml index b9def15132e..f0dd4709034 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/hats.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/hats.yml @@ -42,6 +42,18 @@ - ClothingHeadCage - ClothingHeadHelmetKendoMen - ClothingHeadBandMerc + - ClothingHeadHatCowboyWhite + - ClothingHeadHatCowboyGrey + - ClothingHeadHatCowboyBrown + - ClothingHeadHatBrownFlatcap + - ClothingHeadHatGreyFlatcap + - ClothingHeadHatPartyRed + - ClothingHeadHatPartyYellow + - ClothingHeadHatPartyGreen + - ClothingHeadHatPartyBlue + - ClothingHeadHatWatermelon + - WaterDropletHat + - ClothingHeadHatRedRacoon rareChance: 0.03 prototypes: - ClothingHeadHatAnimalCat @@ -98,5 +110,13 @@ - ClothingHeadHatFlatBrown - ClothingHeadTinfoil - ClothingHeadHatStrawHat + - ClothingHeadHatCowboyBountyHunter + - ClothingHeadHatCowboyRed + - ClothingHeadHatCowboyBlack + - ClothingHeadHatGladiator + - ClothingHeadHatMagician + - ClothingHeadHatHetmanHat + - ClothingHeadHatTacticalMaidHeadband + - ClothingHeadHatPirateTricord chance: 0.5 offset: 0.2 diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/machineparts.yml b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/machineparts.yml index 7785e5aaa82..61a99faa2f1 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/machineparts.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/machineparts.yml @@ -36,5 +36,5 @@ - MatterBinStockPart - CrateMaterialSteel - CrateMaterialGlass - chance: 0.45 + chance: 0.50 offset: 0.0 diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/seeds.yml b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/seeds.yml index 9f183dcefbd..0c3370890c8 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/seeds.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/seeds.yml @@ -48,6 +48,7 @@ - PeaSeeds - PumpkinSeeds - CottonSeeds + - LilySeeds chance: 0.95 offset: 0.0 rarePrototypes: @@ -64,4 +65,6 @@ - LemoonSeeds - SteelcapSeeds - KoibeanSeeds + - SpacemansTrumpetSeeds + - LaughinPeaSeeds rareChance: 0.05 diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Player/Oni.yml b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Player/Oni.yml index 562b9c564ec..1166d8a29f5 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Player/Oni.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Player/Oni.yml @@ -32,4 +32,3 @@ - type: NpcFactionMember factions: - NanoTrasen - - type: PotentialPsionic diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Player/felinid.yml b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Player/felinid.yml index db7936cc5b4..94ac8403adc 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Player/felinid.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Player/felinid.yml @@ -49,5 +49,3 @@ - type: NpcFactionMember factions: - NanoTrasen - - type: PotentialPsionic - diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Structures/Machines/metempsychoticMachine.yml b/Resources/Prototypes/Nyanotrasen/Entities/Structures/Machines/metempsychoticMachine.yml index d8e791af1ed..d773cf87c76 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Structures/Machines/metempsychoticMachine.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Structures/Machines/metempsychoticMachine.yml @@ -22,4 +22,7 @@ NoMind: { state: pod_1 } Gore: { state: pod_1 } Idle: { state: pod_0 } + - type: PotentialPsionic - type: Psionic + psychicFeedback: + - "metempsychotic-machine-feedback" diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/oracle.yml b/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/oracle.yml index f7481abf1ed..58189e49cec 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/oracle.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/oracle.yml @@ -16,7 +16,10 @@ - type: Oracle - type: Speech speechSounds: Tenor + - type: PotentialPsionic - type: Psionic + psychicFeedback: + - "oracle-feedback" - type: SolutionContainerManager solutions: fountain: diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/sophicscribe.yml b/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/sophicscribe.yml index ae85cd25e03..8e34a07ea5e 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/sophicscribe.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/sophicscribe.yml @@ -29,6 +29,8 @@ - Science - type: PotentialPsionic #this makes her easier to access for glimmer events, dw about it - type: Psionic + psychicFeedback: + - "sophic-grammateus-feedback" - type: Grammar attributes: gender: female diff --git a/Resources/Prototypes/Nyanotrasen/Objectives/traitor.yml b/Resources/Prototypes/Nyanotrasen/Objectives/traitor.yml index 53910a54a92..e6e497003d5 100644 --- a/Resources/Prototypes/Nyanotrasen/Objectives/traitor.yml +++ b/Resources/Prototypes/Nyanotrasen/Objectives/traitor.yml @@ -9,29 +9,6 @@ stealGroup: AntiPsychicKnife owner: job-name-mantis -- type: entity - id: BecomePsionicObjective - parent: BaseTraitorObjective - name: Become psionic - description: We need you to acquire psionics and keep them until your mission is complete. - noSpawn: true - components: - - type: NotJobsRequirement - jobs: - - Mime - - ForensicMantis - - type: Objective - difficulty: 2.5 - #unique: false - icon: - sprite: Nyanotrasen/Icons/psi.rsi - state: psi - - type: ObjectiveBlacklistRequirement - blacklist: - components: - - BecomeGolemCondition - - type: BecomePsionicCondition - #- type: entity # id: BecomeGolemObjective # parent: BaseTraitorObjective diff --git a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml index a5c5bd7f10b..13debdef572 100644 --- a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml +++ b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml @@ -3,26 +3,22 @@ name: job-name-mantis description: job-description-mantis playTimeTracker: JobForensicMantis - # requirements: - # - !type:OverallPlaytimeRequirement - # time: 18000 - # - !type:DepartmentTimeRequirement - # department: Science - # time: 3600 startingGear: ForensicMantisGear icon: "JobIconForensicMantis" supervisors: job-supervisors-rd antagAdvantage: 5 # DeltaV - From 4 to 5 - canBeAntag: true - # whitelistRequired: true + canBeAntag: true access: - Research - Maintenance - - Mantis # DeltaV - Psionic Mantis, see Resources/Prototypes/DeltaV/Access/epistemics.yml + - Mantis special: - !type:AddComponentSpecial components: + - type: PotentialPsionic - type: Psionic + amplification: 0.3 + dampening: 0.3 - type: MetapsionicPower - type: startingGear diff --git a/Resources/Prototypes/Nyanotrasen/Traits/psionics.yml b/Resources/Prototypes/Nyanotrasen/Traits/psionics.yml new file mode 100644 index 00000000000..5fef3427703 --- /dev/null +++ b/Resources/Prototypes/Nyanotrasen/Traits/psionics.yml @@ -0,0 +1,6 @@ +- type: trait + id: LatentPsychic + name: Latent Psychic + description: trait-latent-psychic-desc + components: + - type: PotentialPsionic diff --git a/Resources/Prototypes/Nyanotrasen/psionicPowers.yml b/Resources/Prototypes/Nyanotrasen/psionicPowers.yml index f40b688fd18..ca1764e204c 100644 --- a/Resources/Prototypes/Nyanotrasen/psionicPowers.yml +++ b/Resources/Prototypes/Nyanotrasen/psionicPowers.yml @@ -5,6 +5,8 @@ DispelPower: 1 TelegnosisPower: 1 PsionicRegenerationPower: 1 - MassSleepPower: 0.3 -# PsionicInvisibilityPower: 0.15 + RegenerativeStasisPower: 0.3 + PsionicInvisibilityPower: 0.15 MindSwapPower: 0.15 + NoosphericZapPower: 0.15 + PyrokinesisPower: 0.15 diff --git a/Resources/Prototypes/Objectives/objectiveGroups.yml b/Resources/Prototypes/Objectives/objectiveGroups.yml index fba2c4cc172..d711e9a1b13 100644 --- a/Resources/Prototypes/Objectives/objectiveGroups.yml +++ b/Resources/Prototypes/Objectives/objectiveGroups.yml @@ -39,7 +39,6 @@ EscapeShuttleObjective: 1 # DieObjective: 0.05 # DeltaV - Disable the lrp objective aka murderbone justification #HijackShuttleObjective: 0.02 - BecomePsionicObjective: 1 # Nyanotrasen - Become Psionic objective, see Resources/Prototypes/Nyanotrasen/Objectives/traitor.yml #BecomeGolemObjective: 0.5 # Nyanotrasen - Become a golem objective, see Resources/Prototypes/Nyanotrasen/Objectives/traitor.yml - type: weightedRandom diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/clothing/ducky_slippers.yml b/Resources/Prototypes/Recipes/Construction/Graphs/clothing/ducky_slippers.yml new file mode 100644 index 00000000000..e017096fa90 --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/clothing/ducky_slippers.yml @@ -0,0 +1,22 @@ +- type: constructionGraph + id: ClothingShoeSlippersDuck + start: start + graph: + - node: start + edges: + - to: shoes + steps: + - tag: ToyRubberDuck + name: a rubber ducky + icon: + sprite: Objects/Fun/ducky.rsi + state: icon + doAfter: 1 + - tag: ToyRubberDuck + name: a rubber ducky + icon: + sprite: Objects/Fun/ducky.rsi + state: icon + doAfter: 1 + - node: shoes + entity: ClothingShoeSlippersDuck diff --git a/Resources/Prototypes/Recipes/Construction/clothing.yml b/Resources/Prototypes/Recipes/Construction/clothing.yml index 4fe2c474bb4..f1eb270af73 100644 --- a/Resources/Prototypes/Recipes/Construction/clothing.yml +++ b/Resources/Prototypes/Recipes/Construction/clothing.yml @@ -85,3 +85,14 @@ description: Two huds joined by arms icon: { sprite: Clothing/Eyes/Hud/medsec.rsi, state: icon } objectType: Item + +- type: construction + name: ducky slippers + id: ClothingShoeSlippersDuck + graph: ClothingShoeSlippersDuck + startNode: start + targetNode: shoes + category: construction-category-clothing + description: Comfy, yet haunted by the ghosts of ducks you fed bread to as a child. + icon: { sprite: Clothing/Shoes/Misc/duck-slippers.rsi, state: icon } + objectType: Item diff --git a/Resources/Prototypes/Recipes/Reactions/drinks.yml b/Resources/Prototypes/Recipes/Reactions/drinks.yml index e5afdbd6def..7608369b2ce 100644 --- a/Resources/Prototypes/Recipes/Reactions/drinks.yml +++ b/Resources/Prototypes/Recipes/Reactions/drinks.yml @@ -454,11 +454,11 @@ id: IrishCoffee reactants: Coffee: - amount: 2 + amount: 1 IrishCream: - amount: 2 + amount: 1 products: - IrishCoffee: 4 + IrishCoffee: 2 - type: reaction id: IrishCream diff --git a/Resources/Prototypes/Roles/Jobs/Command/captain.yml b/Resources/Prototypes/Roles/Jobs/Command/captain.yml index b9932420060..4585c90ec8f 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/captain.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/captain.yml @@ -4,27 +4,8 @@ description: job-description-captain playTimeTracker: JobCaptain requirements: - # - !type:DepartmentTimeRequirement - # department: Logistics # DeltaV - Logistics Department replacing Cargo - # time: 18000 # DeltaV - 5 hours - # - !type:DepartmentTimeRequirement - # department: Engineering - # time: 18000 # DeltaV - 5 hours - # - !type:DepartmentTimeRequirement - # department: Medical - # time: 18000 # DeltaV - 5 hours - # - !type:DepartmentTimeRequirement - # department: Security - # time: 18000 # DeltaV - 5 hours - # - !type:DepartmentTimeRequirement - # department: Science - # time: 18000 # 5 hours - # - !type:DepartmentTimeRequirement - # department: Command - # time: 108000 # DeltaV - 30 hours - !type:OverallPlaytimeRequirement time: 3600 # 1 Hour - # - !type:WhitelistRequirement # DeltaV - Whitelist requirement weight: 20 startingGear: CaptainGear icon: "JobIconCaptain" diff --git a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml index 7fb888b0101..b24a02b7966 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml @@ -5,18 +5,6 @@ playTimeTracker: JobHeadOfPersonnel antagAdvantage: 6 # DeltaV - Reduced TC: Head of Staff requirements: - # - !type:RoleTimeRequirement - # role: JobChef - # time: 14400 # DeltaV - 4 hours - # - !type:RoleTimeRequirement - # role: JobBartender - # time: 14400 # DeltaV - 4 hours - # - !type:RoleTimeRequirement - # role: JobJanitor - # time: 14400 # DeltaV - 4 hours - # - !type:DepartmentTimeRequirement # DeltaV - Civilian dept time requirement - # department: Civilian - # time: 72000 # 20 hours - !type:OverallPlaytimeRequirement time: 3600 # 1 Hour weight: 10 # DeltaV - Changed HoP weight from 20 to 10 due to them not being more important than other Heads diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml index 115143a72a6..e8023fe54a2 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml @@ -4,12 +4,6 @@ description: job-description-rd playTimeTracker: JobResearchDirector antagAdvantage: 6 # DeltaV - Reduced TC: Head of Staff - # requirements: - # - !type:DepartmentTimeRequirement - # department: Science - # time: 54000 # 15 hours - # - !type:OverallPlaytimeRequirement - # time: 72000 # 20 hours weight: 10 startingGear: ResearchDirectorGear icon: "JobIconResearchDirector" @@ -21,19 +15,20 @@ - Command - Maintenance - ResearchDirector - - Mantis # DeltaV - Psionic Mantis, see Resources/Prototypes/DeltaV/Access/epistemics.yml + - Mantis + - Chapel - Cryogenics - special: + special: - !type:AddComponentSpecial components: - # - type: BibleUser # Nyano - Lets them heal with bibles - - type: Psionic # Nyano - They start with telepathic chat - - type: DispelPower # Nyano - They get the Dispel psionic power on spawn + - type: BibleUser + - type: PotentialPsionic + - type: Psionic + dampening: 1 #Mystagogue gets a significant buff to his antimage abilities, making him better at dispelling than other people + - type: DispelPower + - type: CommandStaff - !type:AddImplantSpecial implants: [ MindShieldImplant ] - - !type:AddComponentSpecial - components: - - type: CommandStaff - type: startingGear id: ResearchDirectorGear @@ -44,6 +39,7 @@ outerClothing: ClothingOuterCoatRD id: RnDPDA ears: ClothingHeadsetRD + belt: BibleMystagogue #This isn't the chaplain bible lol, it's for performing his summon Ifrit ritual innerClothingSkirt: ClothingUniformJumpskirtResearchDirector satchel: ClothingBackpackSatchelResearchDirectorFilled duffelbag: ClothingBackpackDuffelResearchDirectorFilled diff --git a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml index a127e5dfdb7..248c0190927 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml @@ -3,10 +3,6 @@ name: job-name-scientist description: job-description-scientist playTimeTracker: JobScientist - # requirements: - # - !type:DepartmentTimeRequirement - # department: Science - # time: 14400 #4 hrs startingGear: ScientistGear icon: "JobIconScientist" supervisors: job-supervisors-rd diff --git a/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml b/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml index acfc0699620..ee63fa9b715 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml @@ -4,10 +4,6 @@ description: job-description-senior-researcher playTimeTracker: JobSeniorResearcher setPreference: false # DeltaV - Disable Senior Roles round start selection - # requirements: - # - !type:DepartmentTimeRequirement - # department: Science - # time: 216000 #60 hrs startingGear: SeniorResearcherGear icon: "JobIconSeniorResearcher" supervisors: job-supervisors-rd diff --git a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml index 84bf7976833..980d6ba1d46 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml @@ -4,18 +4,8 @@ description: job-description-hos playTimeTracker: JobHeadOfSecurity requirements: - # - !type:RoleTimeRequirement - # role: JobWarden - # time: 14400 #DeltaV 4 hrs - # # - !type:RoleTimeRequirement # DeltaV - No Security Officer time requirement - REIMPLEMENT WHEN MORE PEOPLE HAVE IT - # # role: JobDetective - # # time: 14400 #DeltaV 4 hrs - # - !type:DepartmentTimeRequirement # DeltaV - Command dept time requirement - # department: Command - # time: 36000 # 10 hours - !type:OverallPlaytimeRequirement time: 3600 # 1 Hour - # - !type:WhitelistRequirement # DeltaV - Whitelist requirement weight: 10 startingGear: HoSGear icon: "JobIconHeadOfSecurity" diff --git a/Resources/Prototypes/Roles/Jobs/Security/warden.yml b/Resources/Prototypes/Roles/Jobs/Security/warden.yml index 903fd51b444..a02a1101fe1 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/warden.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/warden.yml @@ -6,13 +6,6 @@ requirements: - !type:OverallPlaytimeRequirement time: 3600 # 1 Hour - # - !type:RoleTimeRequirement # DeltaV - JobSecurityOfficer time requirement. Make them experienced in proper officer work. - # role: JobSecurityOfficer - # time: 43200 # DeltaV - 12 hrs - # - !type:RoleTimeRequirement # DeltaV - JobDetective time requirement. Give them an understanding of basic forensics. - # role: JobDetective - # time: 14400 # DeltaV - 4 hours - # - !type:WhitelistRequirement # DeltaV - Whitelist requirement startingGear: WardenGear icon: "JobIconWarden" supervisors: job-supervisors-hos diff --git a/Resources/Prototypes/Traits/disabilities.yml b/Resources/Prototypes/Traits/disabilities.yml index 064b34adbaf..2f1a7f92d26 100644 --- a/Resources/Prototypes/Traits/disabilities.yml +++ b/Resources/Prototypes/Traits/disabilities.yml @@ -60,3 +60,10 @@ description: trait-frontal-lisp-desc components: - type: FrontalLisp + +- type: trait + id: Snoring + name: trait-snoring-name + description: trait-snoring-desc + components: + - type: Snoring diff --git a/Resources/Prototypes/Wires/layouts.yml b/Resources/Prototypes/Wires/layouts.yml index 338bf188ba0..b30e68545df 100644 --- a/Resources/Prototypes/Wires/layouts.yml +++ b/Resources/Prototypes/Wires/layouts.yml @@ -15,6 +15,26 @@ - type: wireLayout parent: Airlock + id: AirlockService + +- type: wireLayout + parent: Airlock + id: AirlockCargo + +- type: wireLayout + parent: Airlock + id: AirlockEngineering + +- type: wireLayout + parent: Airlock + id: AirlockMedical + +- type: wireLayout + parent: Airlock + id: AirlockScience + +- type: wireLayout + parent: HighSec id: AirlockCommand - type: wireLayout diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 8ab7de65544..62772b23482 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -1193,6 +1193,9 @@ - type: Tag id: Torch +- type: Tag + id: ToyRubberDuck + - type: Tag id: ToySidearm diff --git a/Resources/ServerInfo/Guidebook/Engineering/TEG.xml b/Resources/ServerInfo/Guidebook/Engineering/TEG.xml index a2a04e03ef0..9e8697a9e13 100644 --- a/Resources/ServerInfo/Guidebook/Engineering/TEG.xml +++ b/Resources/ServerInfo/Guidebook/Engineering/TEG.xml @@ -1,18 +1,18 @@ - + # Thermo-electric Engine (TEG) - The TEG generates power by exchanging heat between hot and cold gases. On station, hot gas is usually created by burning plasma, and an array of heat-exchanging pipes in space radiates away heat to make a cold side. + The TEG generates power by exchanging heat between hot and cold gases. On the station, hot gas is usually created by burning plasma, and an array of heat-exchanging pipes in space radiates away heat to cool down circulated gases. - The TEG relies heavily on atmospherics piping. The only truly special component about it is the generator core, the rest is all off-the-shelf atmospherics equipment. Note that while the exact layout may vary significantly depending on station, the general components and setup are usually the same. + The TEG relies heavily on atmospherics piping. The only truly special component about it is the generator core and circulators; the rest is all off-the-shelf atmospherics equipment. Note that while the exact layout may vary significantly depending on station, the general components and setup are usually the same. ## Generator - The main generator itself is a machine made up of multiple parts: the core generator and two "circulators", in this arrangement: + The main generator itself is a machine made up of 3 major parts: the central generator and two "circulators", in this arrangement: - - - + + + The circulators take in either a hot or cold gas, and pass it through the machine to exchange heat. The gas then gets output on the other end of the circulator. The generator produces the actual power and outputs it over an HV wire. @@ -21,19 +21,172 @@ There is no preference for which side must be hot or cold, there need only be a difference in temperature between them. The gases in the two "loops" are never mixed, only energy is exchanged between them. The hot side will cool down, the cold side will heat up. - ## Burn Chamber + ## The Pipes + + There are 2 major pipenets to worry about here: The Hot Loop (where gas will be burnt for heat), and The Cold Loop (where circulated, heated waste gas will either be removed into space or cooled back down). Make sure that [bold]both pipenets do NOT mix[/bold], as only heat should be transferred between the two through the TEG. + + # The Hot Loop + + As I'm sure a wise person once said: the best way to make something hot is to light it on fire. Well, depending on context, that may not be very wise, but luckily your engineering department has just what's needed to do it wisely after all. + + As stated above, there are many different layouts one can follow to heat up (or cool down) gases; this part of the guide will cover 2 common methods one will often see for the hot loop when the TEG is setup: The Pipe Burn, and the Burn chamber. + + Side note: Plasma fires burn relatively cool compared to, for example, Tritium fires. It may be viable to extract Tritium from an extraction setup (using a 97/3 ratio of O2/Plasma) and react it with Oxygen to get truly hellish temperatures for power. Although, this is just a recommendation; I'm not ya mum. + + ## The Pipe Burn + + Also known as the naive method, this is generally discouraged when working for efficiency. However, if all you need is a smidge of power to run the station, and you don't feel like setting up the burn chamber, this method will do. + + TODO: Remove this section when atmos pipes are updated to have pressure/temperature limits in a future atmos refactor. + + Most (if not all) pipe burns follow this general layout: + + Gas input -> High-pressure pump -> Pipe segment (with heater) -> Low-pressure pump -> Circulator + + + + + + + + + + + + - The Gas input is pretty self-explanatory; this is where you will input the O2-Plasma mix to be burnt. A 2:1 (67/33) ratio of Oxygen to Plasma is recommended for the hottest burn. + - The High-pressure pump serves 2 purposes; first, it prevents the burn from backwashing into the supply pipe, which would be.. bad, for many reasons. Second, it maintains a positive pressure in the following pipe segment, which is important to allow the burn to continue, especially since hot gases expand. + - The Pipe segment is where the burn actually occurs; to start it off, one can use a heater to increase the temperature up to the ignition temperature of Plasma. Afterwards, the reaction should be self-sustaining, so long as the Pressure and Moles supplied remains high enough. Be warned; if you wish to remove the heater, it will carry some of this superheated gas with it, transferring it to the next pipenet you connect it to. Best to space the gas through a space vent, if you must. + - The Low-pressure pump (whose pressure should be [italics]slightly lower[/italics] than the input pump) prevents [italics]all[/italics] the gas from passing through the circulator, which could result in the loss of the Moles required to sustain a burn. + - The Circulator is where this generated heat will flow to the cold loop; afterwards, feel free to space the waste gases. + + Note: Pressure pumps are used here as, while they pump on pressure (not flow-rate, which is comparatively faster), they are a bit easier to control when it comes to the limited Plasma supply on-station. However, the steps shown can be followed with volumetric pumps too. + + ## The Burn Chamber + + The burn chamber is the preferred method for heating up gases, and it is commonly used for other purposes too. (see: Tritium production) + + Most (if not all) stations have the burn chamber separated from the main atmospherics block by a 1-wide spaced grid, presumably to prevent conduction. The chambers consist of 3(+1) important parts: + - The Air Injector/Passive Vent + - The Space Vent + - The Radiator Loop + + Most normal burn chambers don't come with Heat-Exchangers; instead, they have air scrubbers (and optionally, an air alarm) to help filter for Tritium, which is a highly reactive, hot-burning gas that can also be used to heat the TEG efficiently. + However, this is a slightly more advanced setup than just burning plasma, as it needs 2 burn chambers instead of 1 (one for tritium production, one for burning said tritium), so remove the scrubbers and retrofit the burn chamber with a parallel array of heat-exchangers instead. + + The air injector (or Passive Vent) injects air (or allows air to flow) into the burn chamber. Either should be supplemented with a pump before it, to keep pressures high. + There is a notable difference between the passive vent and the air injector; the air injector can only keep injecting air up to 9MPa, which can be reached very easily with a good burn. Ideally, switch out the air injector for a passive vent connected to a volume pump. + + The space vent (designated as a blast door to space on one side of the burn chamber) allows waste gases to be expelled and destroyed. Open this to keep the pressure under control. + + The radiator loop collects heat from the burnt gases and brings it to the TEG. To maximize efficiency, hook up the heat-exchangers [italics]in parallel to each other[/italics], with a pressure pump at max pressure after the array and a volumetric pump before the array. + The pressure of the volumetric pump should be set to ( 200 / number of heat-exchangers ) L/s. For example, having 2 heat-exchangers would mean you should set the pressure to 100 L/s. + Finally, fill the whole loop with (ideally) a high heat capacity gas, like Frezon or Plasma. (Yes, Frezon =/= Cold. Frezon has one of the highest heat capacities in the game; so long as it isn't reacting with Nitrogen, it can actually be heated and can store heat really well!) + + # The Cold Loop + + As with the Hot Loop, the Cold Loop must also be setup in order to operate the TEG. However, the Cold Loop is usually a lot more low-tech than the Hot Loop; in reality, the Cold Loop only has to be "relatively" cooler -- hey, room temperature is technically cooler than the surface of the sun, right? + + There are 3 main methods you will see used for the Cold Loop: The Water Cooler (see: Liltenhead's video on the TEG), the Coolant Array and the Freezer Loop. + + ## The Water Cooler - As I'm sure a wise person once said: the best way to make something hot is to light it on fire. Well, depending on context that may not be very wise, but luckily your engineering department has just what's needed to do it wisely after all. + An equally naive method as the Pipe Burn, this simply involves taking some useless gas (in this case, Water Vapour) and flowing it through the TEG and into space. It's dirt-cheap and simple, at the cost of efficiency and permanant loss of gas. - TODO: somebody fill this out once we settle on a general mapped layout for burn chambers. + Setting this up is so simple, even Hamlet could manage it. Just take an output of a gas (here, Water Vapour), send it through the Cold side of the TEG, and then vent it into space. + + + + + + + + + + + TODO: Remove this section when gas miners are removed in a future atmos refactor. ## Coolant Array - A whole bunch of heat-exchanger piping in space. There's not much to say here: gas goes through and cools down. + This is the default method for the Cold Loop you will see on a variety of stations. Being of moderate complexity and having no losses of any resource, this [italics]should[/italics] be the main method of cooling down the TEG. However, every station at the moment somehow has their heat exchangers hooked up wrong, reducing efficiency greatly. (Thanks a bunch, NT!) - ## The Pipes + To use heat-exchangers properly, they must be setup in [italics]parallel[/italics], not in series (like what you see on most stations). A gas pump at max pressure should be placed after, and a volumetric pump before the heat-exchangers. + The flow-rate of the volumetric pump should be set to ( 200 / number of heat-exchangers ) L/s. - TODO: somebody fill this out once we settle on a general mapped layout for burn chambers. + Simply speaking, the Coolant Array consists of 3 major parts: An input connector port, a few pumps and the heat-exchanger array out in space. It can be setup like so: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - Connector Port: Use this to input a gas with high heat capacity; most of the time, Plasma or Frezon is used to do so, as they both have very high specific heat capacities (although most any gas will do). (Yes, Plasma =/= Hot. You can cool it down, and it acts as a really good heat exchange medium.) + - Input/Output Pumps: Used to make sure gas keeps flowing through both the Circulator and the Heat-Exchanger array. As the gas cools down and heats up (and as it flows through the Exchanger), pressure must be applied for it to keep flowing. + - Heat-Exchanger: Basically, just a bunch of heat-exchanger pipes in space. Not much to say, besides the fact that it cools down the gas inside it. Make sure the heat-exchangers are placed on lattice, not plating! Otherwise, the heat-exchange efficiency will be greatly reduced, as the heat-exchangers aren't directly exposed to space below them. + + ## The Freezer Loop + + Most of the time, you will see this method being used in efficient TEG setups. It's basically just the Coolant array, but replacing the Heat-Exchangers with a freezer. Even though the freezer does use power, it is only a small fraction of what the TEG can generate, and it's better than the default Coolant array at the moment, so go fish. + + Just follow the steps for the Coolant array, but use a freezer in place of the Heat-Exchangers. As so: + + + + + + + + + + + + + + + + + + + + Once again, use Plasma or Frezon in the loop for max efficiency (although most any gas will do). diff --git a/Resources/ServerInfo/Guidebook/Science/ArtifactReports.xml b/Resources/ServerInfo/Guidebook/Science/ArtifactReports.xml index b7ba3d4c8b4..a377c980e55 100644 --- a/Resources/ServerInfo/Guidebook/Science/ArtifactReports.xml +++ b/Resources/ServerInfo/Guidebook/Science/ArtifactReports.xml @@ -14,7 +14,7 @@ A large portion of Xenoarchaeology gameplay revolves around the interpretation o - [color=#a4885c]Edges:[/color] the amount of nodes that are connected to the current node. Using this, you can calculate the total number of nodes as well as organize a map of their connections. -- [color=#a4885c]Unextracted value:[/color] the amount of research points an artifact will give when extracted. Extracting sets this to zero and traversing new nodes increases it. +- [color=#a4885c]Current value:[/color] the amount of research points an artifact is currently worth. Extracting will set this to zero and traversing new nodes will increase it. Reports are a helpful tool in manipulating an artifact, especially in the later stages where you are traversing nodes that have already been activated. diff --git a/Resources/Textures/Clothing/Ears/Headsets/base.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/base.rsi/icon.png index 44e093f26ad..76cf88f02e7 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/base.rsi/icon.png and b/Resources/Textures/Clothing/Ears/Headsets/base.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/base.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/base.rsi/meta.json index df6ee47d086..50d4add03c8 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/base.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/base.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // icon Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/base_syndicate.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/base_syndicate.rsi/icon.png index 608b9ef7a0a..805de4537d1 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/base_syndicate.rsi/icon.png and b/Resources/Textures/Clothing/Ears/Headsets/base_syndicate.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/base_syndicate.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/base_syndicate.rsi/meta.json index 774e33fbe70..687531cde51 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/base_syndicate.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/base_syndicate.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Edited by Flareguy for Space Station 14. Originally from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Edited by Flareguy for Space Station 14. Originally from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon edited by FoxxoTrystan and Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/icon.png index 671111e4bc6..fa790f7e990 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/icon.png and b/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/icon_alt.png b/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/icon_alt.png index 439a4b6e529..d943c634189 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/icon_alt.png and b/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/icon_alt.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/meta.json index 1e84b43d94d..84f02032366 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon edited by FoxxoTrystan and Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/icon.png index 4ee60687d09..070bbfd16a6 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/icon.png and b/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/icon_alt.png b/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/icon_alt.png index 0927232ed58..c1dbd8ca3ce 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/icon_alt.png and b/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/icon_alt.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/meta.json index 1e84b43d94d..84f02032366 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon edited by FoxxoTrystan and Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/command.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/command.rsi/icon.png index 30e1697c3ce..90233336608 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/command.rsi/icon.png and b/Resources/Textures/Clothing/Ears/Headsets/command.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/command.rsi/icon_alt.png b/Resources/Textures/Clothing/Ears/Headsets/command.rsi/icon_alt.png index a01e0c6c13e..51a87cef799 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/command.rsi/icon_alt.png and b/Resources/Textures/Clothing/Ears/Headsets/command.rsi/icon_alt.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/command.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/command.rsi/meta.json index 1e84b43d94d..4a16d0c71f6 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/command.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/command.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/icon.png index d39d3680dfa..536a9911993 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/icon.png and b/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/icon_alt.png b/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/icon_alt.png index f1559927e0c..98259eb0700 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/icon_alt.png and b/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/icon_alt.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/meta.json index 1e84b43d94d..84f02032366 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon edited by FoxxoTrystan and Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/freelance.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/freelance.rsi/icon.png index 0ff3f2c9893..fa790f7e990 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/freelance.rsi/icon.png and b/Resources/Textures/Clothing/Ears/Headsets/freelance.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/freelance.rsi/icon_alt.png b/Resources/Textures/Clothing/Ears/Headsets/freelance.rsi/icon_alt.png index d3be4bc4972..d943c634189 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/freelance.rsi/icon_alt.png and b/Resources/Textures/Clothing/Ears/Headsets/freelance.rsi/icon_alt.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/freelance.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/freelance.rsi/meta.json index 5567eaaf379..8e58bce368e 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/freelance.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/freelance.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprite modified by PursuitInAshes (Github) for SS14, original sprite taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Sprite modified by PursuitInAshes (Github) for SS14, original sprite taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon edited by FoxxoTrystan and Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/icon.png index e18fee6225e..5ba1c7269d7 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/icon.png and b/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/icon_alt.png b/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/icon_alt.png index 1087400c3ca..e68f78e061f 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/icon_alt.png and b/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/icon_alt.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/meta.json index 1e84b43d94d..4a16d0c71f6 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/medicalscience.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/medicalscience.rsi/icon.png index 5e773624bcf..4b38069004a 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/medicalscience.rsi/icon.png and b/Resources/Textures/Clothing/Ears/Headsets/medicalscience.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/medicalscience.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/medicalscience.rsi/meta.json index 3d37ed54346..37ee397b98f 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/medicalscience.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/medicalscience.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/icon.png index cdb552f140e..498a0af6885 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/icon.png and b/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/meta.json index df6ee47d086..9c2f13fda0b 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/robotics.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/robotics.rsi/icon.png index 3d247f05be5..4a67c2aa6e9 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/robotics.rsi/icon.png and b/Resources/Textures/Clothing/Ears/Headsets/robotics.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/robotics.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/robotics.rsi/meta.json index df6ee47d086..8182d05a8cf 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/robotics.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/robotics.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon Edited by FoxxoTrystan and Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/science.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/science.rsi/icon.png index e292512c97d..d55fc0798e5 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/science.rsi/icon.png and b/Resources/Textures/Clothing/Ears/Headsets/science.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/science.rsi/icon_alt.png b/Resources/Textures/Clothing/Ears/Headsets/science.rsi/icon_alt.png index c86c128c245..c935e5a13b7 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/science.rsi/icon_alt.png and b/Resources/Textures/Clothing/Ears/Headsets/science.rsi/icon_alt.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/science.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/science.rsi/meta.json index 1e84b43d94d..50f9fe3394b 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/science.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/science.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon Edited by FoxxoTrystan and Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/security.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/security.rsi/icon.png index cced5121647..195117997db 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/security.rsi/icon.png and b/Resources/Textures/Clothing/Ears/Headsets/security.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/security.rsi/icon_alt.png b/Resources/Textures/Clothing/Ears/Headsets/security.rsi/icon_alt.png index 219918544cc..b47392ea071 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/security.rsi/icon_alt.png and b/Resources/Textures/Clothing/Ears/Headsets/security.rsi/icon_alt.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/security.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/security.rsi/meta.json index 1e84b43d94d..4a16d0c71f6 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/security.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/security.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/service.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/service.rsi/icon.png index c1010a58da6..87d994febb8 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/service.rsi/icon.png and b/Resources/Textures/Clothing/Ears/Headsets/service.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/service.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/service.rsi/meta.json index df6ee47d086..9c2f13fda0b 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/service.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/service.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/servicesecurity.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/servicesecurity.rsi/icon.png index 0b1f7514166..87d994febb8 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/servicesecurity.rsi/icon.png and b/Resources/Textures/Clothing/Ears/Headsets/servicesecurity.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/servicesecurity.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/servicesecurity.rsi/meta.json index dd2fdcc360a..62fac00b4eb 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/servicesecurity.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/servicesecurity.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/syndicate.rsi/icon_alt.png b/Resources/Textures/Clothing/Ears/Headsets/syndicate.rsi/icon_alt.png index f7cddb85c00..892f6d12f0e 100644 Binary files a/Resources/Textures/Clothing/Ears/Headsets/syndicate.rsi/icon_alt.png and b/Resources/Textures/Clothing/Ears/Headsets/syndicate.rsi/icon_alt.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/syndicate.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/syndicate.rsi/meta.json index a36cd58203e..9a2c8fdc0e9 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/syndicate.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/syndicate.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/equipped-MASK-reptilian.png b/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/equipped-MASK-reptilian.png new file mode 100644 index 00000000000..88542905cfc Binary files /dev/null and b/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/equipped-MASK-reptilian.png differ diff --git a/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/equipped-MASK.png b/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/equipped-MASK.png new file mode 100644 index 00000000000..e34c9a995e1 Binary files /dev/null and b/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/equipped-MASK.png differ diff --git a/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/icon.png b/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/icon.png new file mode 100644 index 00000000000..e1c0aecc28b Binary files /dev/null and b/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/inhand-left.png b/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/inhand-left.png new file mode 100644 index 00000000000..5a37ace23e6 Binary files /dev/null and b/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/inhand-right.png b/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/inhand-right.png new file mode 100644 index 00000000000..47cfa5ae34c Binary files /dev/null and b/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/meta.json b/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/meta.json new file mode 100644 index 00000000000..9094fa918f0 --- /dev/null +++ b/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/meta.json @@ -0,0 +1,30 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Originally sprited by belay5 (Discord) then recolored by Nairod (Github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-MASK", + "directions": 4 + }, + { + "name": "equipped-MASK-reptilian", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/prisoner.rsi/icon.png b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/prisoner.rsi/icon.png index 354b1eee71d..b6f68da96e1 100644 Binary files a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/prisoner.rsi/icon.png and b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/prisoner.rsi/icon.png differ diff --git a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/prisoner.rsi/meta.json b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/prisoner.rsi/meta.json index 33e08c9522f..d2bd34f4835 100644 --- a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/prisoner.rsi/meta.json +++ b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/prisoner.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Resprited by DangerRevolution from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Resprited by DangerRevolution from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon Edited by FoxxoTrystan and Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/securitymedical.rsi/icon.png b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/securitymedical.rsi/icon.png index 0e1840978da..195117997db 100644 Binary files a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/securitymedical.rsi/icon.png and b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/securitymedical.rsi/icon.png differ diff --git a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/securitymedical.rsi/meta.json b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/securitymedical.rsi/meta.json index 529b60f8387..1a52b67cf08 100644 --- a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/securitymedical.rsi/meta.json +++ b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/securitymedical.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprited by PuroSlavKing (github) for SS14", + "copyright": "Sprited by PuroSlavKing (github) for SS14 // Icon Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/service.rsi/icon_alt.png b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/service.rsi/icon_alt.png index 5052bcd78e4..51a87cef799 100644 Binary files a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/service.rsi/icon_alt.png and b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/service.rsi/icon_alt.png differ diff --git a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/service.rsi/meta.json b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/service.rsi/meta.json index 5dd6839da5b..b62adfa1f3e 100644 --- a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/service.rsi/meta.json +++ b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/service.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428. Modified by TJohnson.", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428. Modified by TJohnson. // Icon Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/syndicate_listening.rsi/icon_alt.png b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/syndicate_listening.rsi/icon_alt.png index 0354a3ad03e..892f6d12f0e 100644 Binary files a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/syndicate_listening.rsi/icon_alt.png and b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/syndicate_listening.rsi/icon_alt.png differ diff --git a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/syndicate_listening.rsi/meta.json b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/syndicate_listening.rsi/meta.json index 9879138a5c9..c5495e43df0 100644 --- a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/syndicate_listening.rsi/meta.json +++ b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/syndicate_listening.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Resprited by DangerRevolution (github) from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Resprited by DangerRevolution (github) from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Devices/communication.rsi/beacon.png b/Resources/Textures/Objects/Devices/communication.rsi/beacon.png index fa3d280d0b7..cd94b9738a0 100644 Binary files a/Resources/Textures/Objects/Devices/communication.rsi/beacon.png and b/Resources/Textures/Objects/Devices/communication.rsi/beacon.png differ diff --git a/Resources/Textures/Objects/Devices/communication.rsi/beacon_dead.png b/Resources/Textures/Objects/Devices/communication.rsi/beacon_dead.png index 64e7a30d49f..7e25d7455d6 100644 Binary files a/Resources/Textures/Objects/Devices/communication.rsi/beacon_dead.png and b/Resources/Textures/Objects/Devices/communication.rsi/beacon_dead.png differ diff --git a/Resources/Textures/Objects/Devices/communication.rsi/meta.json b/Resources/Textures/Objects/Devices/communication.rsi/meta.json index bfd0e069f3e..e9350caad8d 100644 --- a/Resources/Textures/Objects/Devices/communication.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/communication.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from cev-eris and modified by Swept at https://github.com/discordia-space/CEV-Eris/commit/efce5b6c3be75458ce238dcc01510e8f8a653ca6", + "copyright": "Taken from cev-eris and modified by Swept at https://github.com/discordia-space/CEV-Eris/commit/efce5b6c3be75458ce238dcc01510e8f8a653ca6 // Radio, Beacon, Signaler Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 @@ -31,7 +31,28 @@ "directions": 4 }, { - "name": "radio" + "name": "radio", + "delays": [ + [ + 1.8, + 0.1, + 0.1, + 0.1, + 1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 1.8, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] }, { "name": "radio-inhand-right", @@ -68,17 +89,6 @@ { "name": "off-walkietalkie-inhand-left", "directions": 4 - }, - { - "name": "old-radio" - }, - { - "name": "old-radio-inhand-left", - "directions": 4 - }, - { - "name": "old-radio-inhand-right", - "directions": 4 } ] } diff --git a/Resources/Textures/Objects/Devices/communication.rsi/old-radio-inhand-left.png b/Resources/Textures/Objects/Devices/communication.rsi/old-radio-inhand-left.png deleted file mode 100644 index e1cb184a79c..00000000000 Binary files a/Resources/Textures/Objects/Devices/communication.rsi/old-radio-inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Objects/Devices/communication.rsi/old-radio-inhand-right.png b/Resources/Textures/Objects/Devices/communication.rsi/old-radio-inhand-right.png deleted file mode 100644 index ac3ef8ab79f..00000000000 Binary files a/Resources/Textures/Objects/Devices/communication.rsi/old-radio-inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Objects/Devices/communication.rsi/old-radio.png b/Resources/Textures/Objects/Devices/communication.rsi/old-radio.png deleted file mode 100644 index 23315c58a2c..00000000000 Binary files a/Resources/Textures/Objects/Devices/communication.rsi/old-radio.png and /dev/null differ diff --git a/Resources/Textures/Objects/Devices/communication.rsi/radio-inhand-left.png b/Resources/Textures/Objects/Devices/communication.rsi/radio-inhand-left.png index ddd9d320f9d..e1cb184a79c 100644 Binary files a/Resources/Textures/Objects/Devices/communication.rsi/radio-inhand-left.png and b/Resources/Textures/Objects/Devices/communication.rsi/radio-inhand-left.png differ diff --git a/Resources/Textures/Objects/Devices/communication.rsi/radio-inhand-right.png b/Resources/Textures/Objects/Devices/communication.rsi/radio-inhand-right.png index fc5fdee22a3..ac3ef8ab79f 100644 Binary files a/Resources/Textures/Objects/Devices/communication.rsi/radio-inhand-right.png and b/Resources/Textures/Objects/Devices/communication.rsi/radio-inhand-right.png differ diff --git a/Resources/Textures/Objects/Devices/communication.rsi/radio.png b/Resources/Textures/Objects/Devices/communication.rsi/radio.png index eb57264b858..bbc73c505e5 100644 Binary files a/Resources/Textures/Objects/Devices/communication.rsi/radio.png and b/Resources/Textures/Objects/Devices/communication.rsi/radio.png differ diff --git a/Resources/Textures/Objects/Devices/communication.rsi/signaller.png b/Resources/Textures/Objects/Devices/communication.rsi/signaller.png index 1b14a3a1360..d6b68cba775 100644 Binary files a/Resources/Textures/Objects/Devices/communication.rsi/signaller.png and b/Resources/Textures/Objects/Devices/communication.rsi/signaller.png differ diff --git a/Resources/Textures/Objects/Devices/communication.rsi/walkietalkie-off.png b/Resources/Textures/Objects/Devices/communication.rsi/walkietalkie-off.png index 70e2b3a2a56..50f3927824f 100644 Binary files a/Resources/Textures/Objects/Devices/communication.rsi/walkietalkie-off.png and b/Resources/Textures/Objects/Devices/communication.rsi/walkietalkie-off.png differ diff --git a/Resources/Textures/Objects/Devices/communication.rsi/walkietalkie-on.png b/Resources/Textures/Objects/Devices/communication.rsi/walkietalkie-on.png index 0bf04a782db..da72f40e03f 100644 Binary files a/Resources/Textures/Objects/Devices/communication.rsi/walkietalkie-on.png and b/Resources/Textures/Objects/Devices/communication.rsi/walkietalkie-on.png differ diff --git a/Resources/Textures/Objects/Devices/communication.rsi/walkietalkie.png b/Resources/Textures/Objects/Devices/communication.rsi/walkietalkie.png index 0799b3f9c8b..e5ebc2a36cf 100644 Binary files a/Resources/Textures/Objects/Devices/communication.rsi/walkietalkie.png and b/Resources/Textures/Objects/Devices/communication.rsi/walkietalkie.png differ diff --git a/Resources/Textures/Objects/Devices/jammer.rsi/jammer-on.png b/Resources/Textures/Objects/Devices/jammer.rsi/jammer-on.png new file mode 100644 index 00000000000..987e571b263 Binary files /dev/null and b/Resources/Textures/Objects/Devices/jammer.rsi/jammer-on.png differ diff --git a/Resources/Textures/Objects/Devices/jammer.rsi/jammer.png b/Resources/Textures/Objects/Devices/jammer.rsi/jammer.png index 6de27ba924f..99e0246bfb1 100644 Binary files a/Resources/Textures/Objects/Devices/jammer.rsi/jammer.png and b/Resources/Textures/Objects/Devices/jammer.rsi/jammer.png differ diff --git a/Resources/Textures/Objects/Devices/jammer.rsi/meta.json b/Resources/Textures/Objects/Devices/jammer.rsi/meta.json index 2923d9ac636..c5cc9f56d24 100644 --- a/Resources/Textures/Objects/Devices/jammer.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/jammer.rsi/meta.json @@ -1,15 +1,23 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/tgstation/tgstation/commit/c65da5a49477413310c81c460ea4b243a9f864dd", + "copyright": "Taken from Paradise at https://github.com/ParadiseSS13/Paradise/blob/93d9c70530c7299ef0af96fe2178096b2a62e036/icons/obj/device.dmi", "size": { "x": 32, "y": 32 }, "states": [ { - "name": "jammer", - "directions": 1 + "name": "jammer" + }, + { + "name": "jammer-on", + "delays": [ + [ + 0.8, + 0.2 + ] + ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Devices/signaller.rsi/meta.json b/Resources/Textures/Objects/Devices/signaller.rsi/meta.json index cefaeebebfd..0f259d9b457 100644 --- a/Resources/Textures/Objects/Devices/signaller.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/signaller.rsi/meta.json @@ -2,7 +2,7 @@ "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from Goonstation at commit https://github.com/goonstation/goonstation/commit/354d9635460c296dc7dce23ab39481dc4de6dc00, signaller2 created by TheShuEd", + "copyright": "Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi, signaller2 created by TheShuEd", "size": { "x": 32, @@ -18,4 +18,4 @@ "directions": 1 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Devices/signaller.rsi/signaller.png b/Resources/Textures/Objects/Devices/signaller.rsi/signaller.png index 37a47342a6a..d6b68cba775 100644 Binary files a/Resources/Textures/Objects/Devices/signaller.rsi/signaller.png and b/Resources/Textures/Objects/Devices/signaller.rsi/signaller.png differ diff --git a/Resources/Textures/Objects/Devices/station_beacon.rsi/blink.png b/Resources/Textures/Objects/Devices/station_beacon.rsi/blink.png index 53fabd17147..cd94b9738a0 100644 Binary files a/Resources/Textures/Objects/Devices/station_beacon.rsi/blink.png and b/Resources/Textures/Objects/Devices/station_beacon.rsi/blink.png differ diff --git a/Resources/Textures/Objects/Devices/station_beacon.rsi/icon.png b/Resources/Textures/Objects/Devices/station_beacon.rsi/icon.png index 67f3f53eb50..15c1e94221d 100644 Binary files a/Resources/Textures/Objects/Devices/station_beacon.rsi/icon.png and b/Resources/Textures/Objects/Devices/station_beacon.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Devices/station_beacon.rsi/meta.json b/Resources/Textures/Objects/Devices/station_beacon.rsi/meta.json index 771ce4c261a..96aaf12a24a 100644 --- a/Resources/Textures/Objects/Devices/station_beacon.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/station_beacon.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC0-1.0", - "copyright": "Created by EmoGarbage404 (github) for SS14, based on beacon design from /tg/", + "copyright": "Created by EmoGarbage404 (github) for SS14, based on beacon design from /tg/ // Icon/Blink Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/crowbar.rsi/icon.png b/Resources/Textures/Objects/Tools/crowbar.rsi/icon.png index a8c6cb3f8da..436a75975b3 100644 Binary files a/Resources/Textures/Objects/Tools/crowbar.rsi/icon.png and b/Resources/Textures/Objects/Tools/crowbar.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tools/crowbar.rsi/meta.json b/Resources/Textures/Objects/Tools/crowbar.rsi/meta.json index d4cab89f8ef..6cfbd90fac9 100644 --- a/Resources/Textures/Objects/Tools/crowbar.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/crowbar.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/eea0599511b088fdab9d43e562210cdbd51c6a98, storage and red-storage by Flareguy", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/eea0599511b088fdab9d43e562210cdbd51c6a98, storage and red-storage by Flareguy // Icon Tkan from https://github.com/ParadiseSS13/Paradise", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/crowbar.rsi/red-icon.png b/Resources/Textures/Objects/Tools/crowbar.rsi/red-icon.png index ac25643123e..5b2364d32f8 100644 Binary files a/Resources/Textures/Objects/Tools/crowbar.rsi/red-icon.png and b/Resources/Textures/Objects/Tools/crowbar.rsi/red-icon.png differ diff --git a/Resources/Textures/Objects/Tools/drill.rsi/drill_bolt.png b/Resources/Textures/Objects/Tools/drill.rsi/drill_bolt.png index 6fb3b4ab8e6..d7e908fa9c6 100644 Binary files a/Resources/Textures/Objects/Tools/drill.rsi/drill_bolt.png and b/Resources/Textures/Objects/Tools/drill.rsi/drill_bolt.png differ diff --git a/Resources/Textures/Objects/Tools/drill.rsi/drill_screw.png b/Resources/Textures/Objects/Tools/drill.rsi/drill_screw.png index c51ae6332b2..0951ee8d9b7 100644 Binary files a/Resources/Textures/Objects/Tools/drill.rsi/drill_screw.png and b/Resources/Textures/Objects/Tools/drill.rsi/drill_screw.png differ diff --git a/Resources/Textures/Objects/Tools/drill.rsi/meta.json b/Resources/Textures/Objects/Tools/drill.rsi/meta.json index 90af7840e15..0a315f41fa5 100644 --- a/Resources/Textures/Objects/Tools/drill.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/drill.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "modified from https://github.com/tgstation/tgstation at commit ea59fb4b810decbb5996b36d8876614b57c3d189 by KingFroozy (Github)", + "copyright": "modified from https://github.com/tgstation/tgstation at commit ea59fb4b810decbb5996b36d8876614b57c3d189 by KingFroozy (Github) // Icon taken from https://github.com/ParadiseSS13/Paradise", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/geiger.rsi/geiger_base.png b/Resources/Textures/Objects/Tools/geiger.rsi/geiger_base.png index ccb97cbe60d..61a4a9b7877 100644 Binary files a/Resources/Textures/Objects/Tools/geiger.rsi/geiger_base.png and b/Resources/Textures/Objects/Tools/geiger.rsi/geiger_base.png differ diff --git a/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_ext.png b/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_ext.png index fc41e60ff87..c4112f6525a 100644 Binary files a/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_ext.png and b/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_ext.png differ diff --git a/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_high.png b/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_high.png index 15edc91e529..7b160b48d7b 100644 Binary files a/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_high.png and b/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_high.png differ diff --git a/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_idle.png b/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_idle.png index 6c83622e349..704d654a6f1 100644 Binary files a/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_idle.png and b/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_idle.png differ diff --git a/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_low.png b/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_low.png index 015059c7308..e2694136cb8 100644 Binary files a/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_low.png and b/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_low.png differ diff --git a/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_med.png b/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_med.png index c88de643eb4..1fd176e822e 100644 Binary files a/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_med.png and b/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_med.png differ diff --git a/Resources/Textures/Objects/Tools/geiger.rsi/meta.json b/Resources/Textures/Objects/Tools/geiger.rsi/meta.json index 10968b47768..11fbd436814 100644 --- a/Resources/Textures/Objects/Tools/geiger.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/geiger.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/bfc9c6ba8126ee8c41564d68c4bfb9ce37faa8f8", + "copyright": "Taken from Paradise https://github.com/ParadiseSS13/Paradise", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/hand_labeler.rsi/hand_labeler.png b/Resources/Textures/Objects/Tools/hand_labeler.rsi/hand_labeler.png index 99381038408..77fbcef30da 100644 Binary files a/Resources/Textures/Objects/Tools/hand_labeler.rsi/hand_labeler.png and b/Resources/Textures/Objects/Tools/hand_labeler.rsi/hand_labeler.png differ diff --git a/Resources/Textures/Objects/Tools/hand_labeler.rsi/meta.json b/Resources/Textures/Objects/Tools/hand_labeler.rsi/meta.json index 216140cec3c..3c793a97322 100644 --- a/Resources/Textures/Objects/Tools/hand_labeler.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/hand_labeler.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/tgstation/tgstation at commit 44636483b7b2868b3e42c92205539f11f6d7968f. Inhand sprites by Macoron.", + "copyright": "Taken from https://github.com/ParadiseSS13/Paradise/. Inhand sprites by Macoron.", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/multitool.rsi/green-unlit.png b/Resources/Textures/Objects/Tools/multitool.rsi/green-unlit.png index fccc17e9193..d0bac8b61eb 100644 Binary files a/Resources/Textures/Objects/Tools/multitool.rsi/green-unlit.png and b/Resources/Textures/Objects/Tools/multitool.rsi/green-unlit.png differ diff --git a/Resources/Textures/Objects/Tools/multitool.rsi/icon.png b/Resources/Textures/Objects/Tools/multitool.rsi/icon.png index 6e16a3f7ebb..1dcb102e80b 100644 Binary files a/Resources/Textures/Objects/Tools/multitool.rsi/icon.png and b/Resources/Textures/Objects/Tools/multitool.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tools/multitool.rsi/meta.json b/Resources/Textures/Objects/Tools/multitool.rsi/meta.json index bf4315734b7..c5c4ed87cb9 100644 --- a/Resources/Textures/Objects/Tools/multitool.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/multitool.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/94f27c7b25bbde39c1412e24fb32bf6470fcc394", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/94f27c7b25bbde39c1412e24fb32bf6470fcc394 // Icon Taken from https://github.com/ParadiseSS13/Paradise", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/multitool.rsi/red-unlit.png b/Resources/Textures/Objects/Tools/multitool.rsi/red-unlit.png index a141fec4bf9..71a6ee8f67b 100644 Binary files a/Resources/Textures/Objects/Tools/multitool.rsi/red-unlit.png and b/Resources/Textures/Objects/Tools/multitool.rsi/red-unlit.png differ diff --git a/Resources/Textures/Objects/Tools/multitool.rsi/yellow-unlit.png b/Resources/Textures/Objects/Tools/multitool.rsi/yellow-unlit.png index f890dbd413a..911fad30888 100644 Binary files a/Resources/Textures/Objects/Tools/multitool.rsi/yellow-unlit.png and b/Resources/Textures/Objects/Tools/multitool.rsi/yellow-unlit.png differ diff --git a/Resources/Textures/Objects/Tools/rcd.rsi/icon.png b/Resources/Textures/Objects/Tools/rcd.rsi/icon.png index cb62979010f..3913af25188 100644 Binary files a/Resources/Textures/Objects/Tools/rcd.rsi/icon.png and b/Resources/Textures/Objects/Tools/rcd.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tools/screwdriver.rsi/meta.json b/Resources/Textures/Objects/Tools/screwdriver.rsi/meta.json index 17ec25991ac..47fc7c177ee 100644 --- a/Resources/Textures/Objects/Tools/screwdriver.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/screwdriver.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at https://github.com/vgstation-coders/vgstation13/commit/1cdfb0230cc96d0ba751fa002d04f8aa2f25ad7d", + "copyright": "Taken from https://github.com/ParadiseSS13/Paradise", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver-map.png b/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver-map.png index 2bede8bc3b0..86ac05b87ed 100644 Binary files a/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver-map.png and b/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver-map.png differ diff --git a/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver-screwybits.png b/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver-screwybits.png index 565ebc24f66..f018f39ffdf 100644 Binary files a/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver-screwybits.png and b/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver-screwybits.png differ diff --git a/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver.png b/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver.png index 9d0d820ddaa..9e136997341 100644 Binary files a/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver.png and b/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver.png differ diff --git a/Resources/Textures/Objects/Tools/seclite.rsi/meta.json b/Resources/Textures/Objects/Tools/seclite.rsi/meta.json index 86f25b0b7a1..d466ad62d59 100644 --- a/Resources/Textures/Objects/Tools/seclite.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/seclite.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/52cbeaf94322209d4c6596818dda9fb3654729d3 and modified by Swept", + "copyright": "Taken from https://github.com/ParadiseSS13/Paradise/blob/master/icons/obj/lighting.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/seclite.rsi/seclite-on.png b/Resources/Textures/Objects/Tools/seclite.rsi/seclite-on.png index 317e638c18c..e02d6ee0774 100644 Binary files a/Resources/Textures/Objects/Tools/seclite.rsi/seclite-on.png and b/Resources/Textures/Objects/Tools/seclite.rsi/seclite-on.png differ diff --git a/Resources/Textures/Objects/Tools/seclite.rsi/seclite-overlay.png b/Resources/Textures/Objects/Tools/seclite.rsi/seclite-overlay.png index a5e9f773ed5..7ea22fa4c67 100644 Binary files a/Resources/Textures/Objects/Tools/seclite.rsi/seclite-overlay.png and b/Resources/Textures/Objects/Tools/seclite.rsi/seclite-overlay.png differ diff --git a/Resources/Textures/Objects/Tools/seclite.rsi/seclite.png b/Resources/Textures/Objects/Tools/seclite.rsi/seclite.png index d8ace36de98..1064101c28a 100644 Binary files a/Resources/Textures/Objects/Tools/seclite.rsi/seclite.png and b/Resources/Textures/Objects/Tools/seclite.rsi/seclite.png differ diff --git a/Resources/Textures/Objects/Tools/spray_painter.rsi/meta.json b/Resources/Textures/Objects/Tools/spray_painter.rsi/meta.json index 056ba0a8563..a7ed6684445 100644 --- a/Resources/Textures/Objects/Tools/spray_painter.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/spray_painter.rsi/meta.json @@ -1,5 +1,5 @@ { - "copyright" : "Taken from https://github.com/tgstation/tgstation at commit a21274e56ae84b2c96e8b6beeca805df3d5402e8.", + "copyright" : "Taken from Paradise at https://github.com/ParadiseSS13/Paradise/blob/8e92e96d56f231f79dc16f95918d59b2803085aa/icons/obj/painting.dmi", "license" : "CC-BY-SA-3.0", "size" : { "x" : 32, diff --git a/Resources/Textures/Objects/Tools/spray_painter.rsi/spray_painter.png b/Resources/Textures/Objects/Tools/spray_painter.rsi/spray_painter.png index 462e22932c2..0c7ebdadcce 100644 Binary files a/Resources/Textures/Objects/Tools/spray_painter.rsi/spray_painter.png and b/Resources/Textures/Objects/Tools/spray_painter.rsi/spray_painter.png differ diff --git a/Resources/Textures/Objects/Tools/welder.rsi/icon.png b/Resources/Textures/Objects/Tools/welder.rsi/icon.png index a023a035ad4..c6917c8ba51 100644 Binary files a/Resources/Textures/Objects/Tools/welder.rsi/icon.png and b/Resources/Textures/Objects/Tools/welder.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tools/welder.rsi/meta.json b/Resources/Textures/Objects/Tools/welder.rsi/meta.json index 5f876da9ae0..407f85d4cf6 100644 --- a/Resources/Textures/Objects/Tools/welder.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/welder.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/199fffd989d6f7fd6ea9c5188c875137df4f34b8", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/199fffd989d6f7fd6ea9c5188c875137df4f34b8 // Icon Taken from Paradise at https://github.com/ParadiseSS13/Paradise/blob/3c5cb36e811725e1479c4c025b04220027230632/icons/obj/tools.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/welder.rsi/welder_flame.png b/Resources/Textures/Objects/Tools/welder.rsi/welder_flame.png index 20aa48abf68..6c8ef525ccd 100644 Binary files a/Resources/Textures/Objects/Tools/welder.rsi/welder_flame.png and b/Resources/Textures/Objects/Tools/welder.rsi/welder_flame.png differ diff --git a/Resources/Textures/Objects/Tools/welder_experimental.rsi/icon.png b/Resources/Textures/Objects/Tools/welder_experimental.rsi/icon.png index 446d4b21bf7..d33656a0be4 100644 Binary files a/Resources/Textures/Objects/Tools/welder_experimental.rsi/icon.png and b/Resources/Textures/Objects/Tools/welder_experimental.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tools/welder_experimental.rsi/meta.json b/Resources/Textures/Objects/Tools/welder_experimental.rsi/meta.json index 75650c19288..1e4258956e3 100644 --- a/Resources/Textures/Objects/Tools/welder_experimental.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/welder_experimental.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/199fffd989d6f7fd6ea9c5188c875137df4f34b8", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/199fffd989d6f7fd6ea9c5188c875137df4f34b8 // Icon Taken from Paradise at https://github.com/ParadiseSS13/Paradise/blob/3c5cb36e811725e1479c4c025b04220027230632/icons/obj/tools.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/welder_experimental.rsi/welder_flame.png b/Resources/Textures/Objects/Tools/welder_experimental.rsi/welder_flame.png index 1efc7aaa60d..c4cac4606ac 100644 Binary files a/Resources/Textures/Objects/Tools/welder_experimental.rsi/welder_flame.png and b/Resources/Textures/Objects/Tools/welder_experimental.rsi/welder_flame.png differ diff --git a/Resources/Textures/Objects/Tools/welder_industrial.rsi/icon.png b/Resources/Textures/Objects/Tools/welder_industrial.rsi/icon.png index 5c6c99c5d93..c697fae1fab 100644 Binary files a/Resources/Textures/Objects/Tools/welder_industrial.rsi/icon.png and b/Resources/Textures/Objects/Tools/welder_industrial.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tools/welder_industrial.rsi/meta.json b/Resources/Textures/Objects/Tools/welder_industrial.rsi/meta.json index ab4744aaa63..1a92064078a 100644 --- a/Resources/Textures/Objects/Tools/welder_industrial.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/welder_industrial.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/782006a07ef7f16f70128489b3e78b210ee4bbbe", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/782006a07ef7f16f70128489b3e78b210ee4bbbe // Icon Taken from Paradise at https://github.com/ParadiseSS13/Paradise/blob/3c5cb36e811725e1479c4c025b04220027230632/icons/obj/tools.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/welder_industrial.rsi/welder_flame.png b/Resources/Textures/Objects/Tools/welder_industrial.rsi/welder_flame.png index 7814b748519..c4cac4606ac 100644 Binary files a/Resources/Textures/Objects/Tools/welder_industrial.rsi/welder_flame.png and b/Resources/Textures/Objects/Tools/welder_industrial.rsi/welder_flame.png differ diff --git a/Resources/Textures/Objects/Tools/welder_industrialadv.rsi/icon.png b/Resources/Textures/Objects/Tools/welder_industrialadv.rsi/icon.png index c187486f2bc..425cf3c4b3f 100644 Binary files a/Resources/Textures/Objects/Tools/welder_industrialadv.rsi/icon.png and b/Resources/Textures/Objects/Tools/welder_industrialadv.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tools/welder_industrialadv.rsi/meta.json b/Resources/Textures/Objects/Tools/welder_industrialadv.rsi/meta.json index ab4744aaa63..87568bcddbd 100644 --- a/Resources/Textures/Objects/Tools/welder_industrialadv.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/welder_industrialadv.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/782006a07ef7f16f70128489b3e78b210ee4bbbe", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/782006a07ef7f16f70128489b3e78b210ee4bbbe // Icon Icon Taken from Paradise at https://github.com/ParadiseSS13/Paradise/blob/3c5cb36e811725e1479c4c025b04220027230632/icons/obj/tools.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/welder_industrialadv.rsi/welder_flame.png b/Resources/Textures/Objects/Tools/welder_industrialadv.rsi/welder_flame.png index d8ba3f28bdc..809abc51eeb 100644 Binary files a/Resources/Textures/Objects/Tools/welder_industrialadv.rsi/welder_flame.png and b/Resources/Textures/Objects/Tools/welder_industrialadv.rsi/welder_flame.png differ diff --git a/Resources/Textures/Objects/Tools/wirecutters.rsi/cutters-cutty-thingy.png b/Resources/Textures/Objects/Tools/wirecutters.rsi/cutters-cutty-thingy.png index f331df4390e..09cfe9a497a 100644 Binary files a/Resources/Textures/Objects/Tools/wirecutters.rsi/cutters-cutty-thingy.png and b/Resources/Textures/Objects/Tools/wirecutters.rsi/cutters-cutty-thingy.png differ diff --git a/Resources/Textures/Objects/Tools/wirecutters.rsi/cutters-map.png b/Resources/Textures/Objects/Tools/wirecutters.rsi/cutters-map.png index a68f4c12577..4ad153c1068 100644 Binary files a/Resources/Textures/Objects/Tools/wirecutters.rsi/cutters-map.png and b/Resources/Textures/Objects/Tools/wirecutters.rsi/cutters-map.png differ diff --git a/Resources/Textures/Objects/Tools/wirecutters.rsi/cutters.png b/Resources/Textures/Objects/Tools/wirecutters.rsi/cutters.png index 3f79cb157ca..68c8a3ed715 100644 Binary files a/Resources/Textures/Objects/Tools/wirecutters.rsi/cutters.png and b/Resources/Textures/Objects/Tools/wirecutters.rsi/cutters.png differ diff --git a/Resources/Textures/Objects/Tools/wirecutters.rsi/meta.json b/Resources/Textures/Objects/Tools/wirecutters.rsi/meta.json index cd294908267..826b1c44ca9 100644 --- a/Resources/Textures/Objects/Tools/wirecutters.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/wirecutters.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/1cdfb0230cc96d0ba751fa002d04f8aa2f25ad7d", + "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/1cdfb0230cc96d0ba751fa002d04f8aa2f25ad7d // Icon Taken from Paradise at https://github.com/ParadiseSS13/Paradise", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/wrench.rsi/icon.png b/Resources/Textures/Objects/Tools/wrench.rsi/icon.png index 4d24ac7fae1..1b8a2697e25 100644 Binary files a/Resources/Textures/Objects/Tools/wrench.rsi/icon.png and b/Resources/Textures/Objects/Tools/wrench.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Tools/wrench.rsi/meta.json b/Resources/Textures/Objects/Tools/wrench.rsi/meta.json index a2c8f06819b..ecd76812cd4 100644 --- a/Resources/Textures/Objects/Tools/wrench.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/wrench.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/1cdfb0230cc96d0ba751fa002d04f8aa2f25ad7d, storage by EmoGarbage404 (github)", + "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/1cdfb0230cc96d0ba751fa002d04f8aa2f25ad7d, storage by EmoGarbage404 (github) // Icon Taken from Paradise at https://github.com/ParadiseSS13/Paradise", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Doors/secret_door.rsi/assembly.png b/Resources/Textures/Structures/Doors/secret_door.rsi/assembly.png index 6518b7245c7..1a84e526a4a 100644 Binary files a/Resources/Textures/Structures/Doors/secret_door.rsi/assembly.png and b/Resources/Textures/Structures/Doors/secret_door.rsi/assembly.png differ diff --git a/Resources/Textures/Structures/Doors/secret_door.rsi/closed.png b/Resources/Textures/Structures/Doors/secret_door.rsi/closed.png index b68b06f10df..0f60f5243cc 100644 Binary files a/Resources/Textures/Structures/Doors/secret_door.rsi/closed.png and b/Resources/Textures/Structures/Doors/secret_door.rsi/closed.png differ diff --git a/Resources/Textures/Structures/Doors/secret_door.rsi/closing.png b/Resources/Textures/Structures/Doors/secret_door.rsi/closing.png index 0bb895b050f..9dd42badabf 100644 Binary files a/Resources/Textures/Structures/Doors/secret_door.rsi/closing.png and b/Resources/Textures/Structures/Doors/secret_door.rsi/closing.png differ diff --git a/Resources/Textures/Structures/Doors/secret_door.rsi/meta.json b/Resources/Textures/Structures/Doors/secret_door.rsi/meta.json index 7e8135f2168..c1f0d5e09ec 100644 --- a/Resources/Textures/Structures/Doors/secret_door.rsi/meta.json +++ b/Resources/Textures/Structures/Doors/secret_door.rsi/meta.json @@ -24,12 +24,12 @@ "directions": 1, "delays": [ [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] }, @@ -47,12 +47,12 @@ "directions": 1, "delays": [ [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] } diff --git a/Resources/Textures/Structures/Doors/secret_door.rsi/open.png b/Resources/Textures/Structures/Doors/secret_door.rsi/open.png index 81862e1eade..5f78166d8cf 100644 Binary files a/Resources/Textures/Structures/Doors/secret_door.rsi/open.png and b/Resources/Textures/Structures/Doors/secret_door.rsi/open.png differ diff --git a/Resources/Textures/Structures/Doors/secret_door.rsi/opening.png b/Resources/Textures/Structures/Doors/secret_door.rsi/opening.png index 9d143246867..127a10b53db 100644 Binary files a/Resources/Textures/Structures/Doors/secret_door.rsi/opening.png and b/Resources/Textures/Structures/Doors/secret_door.rsi/opening.png differ diff --git a/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/meta.json b/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/meta.json index 351d5688e44..8bbfa474bf0 100644 --- a/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/meta.json +++ b/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Sprited by SonicHDC (Github) for Space Station 14", + "copyright": "Sprited by erhardsteinhauer (discord) for Space Station 14 New Frontier server", "states": [ { "name": "state0" diff --git a/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/state0.png b/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/state0.png index 10fb9cd49d6..d437ad8b738 100644 Binary files a/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/state0.png and b/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/state0.png differ diff --git a/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/state1.png b/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/state1.png index 814483e1a6e..a0ce5d516e8 100644 Binary files a/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/state1.png and b/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/state1.png differ diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/meta.json b/Resources/Textures/Structures/Walls/shuttle.rsi/meta.json index 97ca2aa3b00..9aff20a66c8 100644 --- a/Resources/Textures/Structures/Walls/shuttle.rsi/meta.json +++ b/Resources/Textures/Structures/Walls/shuttle.rsi/meta.json @@ -41,6 +41,24 @@ { "name": "state7", "directions": 4 + }, + { + "name": "shuttle_construct-0" + }, + { + "name": "shuttle_construct-1" + }, + { + "name": "shuttle_construct-2" + }, + { + "name": "shuttle_construct-3" + }, + { + "name": "shuttle_construct-4" + }, + { + "name": "shuttle_construct-5" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-0.png b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-0.png new file mode 100644 index 00000000000..dde7f67085c Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-0.png differ diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-1.png b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-1.png new file mode 100644 index 00000000000..c68cfbac68a Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-1.png differ diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-2.png b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-2.png new file mode 100644 index 00000000000..d2f5bc0c3bc Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-2.png differ diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-3.png b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-3.png new file mode 100644 index 00000000000..7098ec309a4 Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-3.png differ diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-4.png b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-4.png new file mode 100644 index 00000000000..120b1638c4e Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-4.png differ diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-5.png b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-5.png new file mode 100644 index 00000000000..c29bdb3197c Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-5.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/full.png b/Resources/Textures/Structures/Walls/solid.rsi/full.png index 02ae3ff3cc8..b4e991e3457 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/full.png and b/Resources/Textures/Structures/Walls/solid.rsi/full.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/meta.json b/Resources/Textures/Structures/Walls/solid.rsi/meta.json index 85b809570de..246ebe31b94 100644 --- a/Resources/Textures/Structures/Walls/solid.rsi/meta.json +++ b/Resources/Textures/Structures/Walls/solid.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/c34c1b30abf18aa552e19294523924c39e5ea127/icons/turf/wall_masks.dmi and modified.", + "copyright": "Taken from https://github.com/ParadiseSS13/Paradise/ and modified by FoxxoTrystan", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-0.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-0.png index 828730d9f3d..1e2da3352b7 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-0.png and b/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-0.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-1.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-1.png index 93e381adf25..501e4b2ab40 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-1.png and b/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-1.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-2.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-2.png index cf8936fdcee..23367ae824a 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-2.png and b/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-2.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-3.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-3.png index ee44f0d4005..2b48ffb696b 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-3.png and b/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-3.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-4.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-4.png index bf9dad0013f..515b40760d8 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-4.png and b/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-4.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-5.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-5.png index be5832d69d3..bbff6b65840 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-5.png and b/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-5.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over0.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over0.png index 8141637bd69..f6b33bcb189 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over0.png and b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over0.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over1.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over1.png index 6f2bcb665a3..a7800d9dcc3 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over1.png and b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over1.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over2.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over2.png index 8141637bd69..f6b33bcb189 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over2.png and b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over2.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over3.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over3.png index 6f2bcb665a3..a7800d9dcc3 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over3.png and b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over3.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over4.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over4.png index 3fe7b229057..9e8e9dd40ad 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over4.png and b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over4.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over5.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over5.png index 0bd4de7c170..3c0b42ddbf7 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over5.png and b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over5.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over6.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over6.png index 3fe7b229057..9e8e9dd40ad 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over6.png and b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over6.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over7.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over7.png index c8bc3191d34..b4bc95f4f0d 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over7.png and b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over7.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/rgeneric.png b/Resources/Textures/Structures/Walls/solid.rsi/rgeneric.png index 665f36c54ef..1e2da3352b7 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/rgeneric.png and b/Resources/Textures/Structures/Walls/solid.rsi/rgeneric.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/solid0.png b/Resources/Textures/Structures/Walls/solid.rsi/solid0.png index fe570c054fa..3849504b6ff 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/solid0.png and b/Resources/Textures/Structures/Walls/solid.rsi/solid0.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/solid1.png b/Resources/Textures/Structures/Walls/solid.rsi/solid1.png index 4374ed1e101..9ac2271692b 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/solid1.png and b/Resources/Textures/Structures/Walls/solid.rsi/solid1.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/solid2.png b/Resources/Textures/Structures/Walls/solid.rsi/solid2.png index fe570c054fa..3849504b6ff 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/solid2.png and b/Resources/Textures/Structures/Walls/solid.rsi/solid2.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/solid3.png b/Resources/Textures/Structures/Walls/solid.rsi/solid3.png index 4374ed1e101..9ac2271692b 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/solid3.png and b/Resources/Textures/Structures/Walls/solid.rsi/solid3.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/solid4.png b/Resources/Textures/Structures/Walls/solid.rsi/solid4.png index 95e40894791..a5a6dd28566 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/solid4.png and b/Resources/Textures/Structures/Walls/solid.rsi/solid4.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/solid5.png b/Resources/Textures/Structures/Walls/solid.rsi/solid5.png index d4f50d419fb..3c0b42ddbf7 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/solid5.png and b/Resources/Textures/Structures/Walls/solid.rsi/solid5.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/solid6.png b/Resources/Textures/Structures/Walls/solid.rsi/solid6.png index 95e40894791..a5a6dd28566 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/solid6.png and b/Resources/Textures/Structures/Walls/solid.rsi/solid6.png differ diff --git a/Resources/Textures/Structures/Walls/solid.rsi/solid7.png b/Resources/Textures/Structures/Walls/solid.rsi/solid7.png index a880e87e0e0..b4bc95f4f0d 100644 Binary files a/Resources/Textures/Structures/Walls/solid.rsi/solid7.png and b/Resources/Textures/Structures/Walls/solid.rsi/solid7.png differ diff --git a/Resources/Textures/Structures/Walls/solid_diagonal.rsi/state0.png b/Resources/Textures/Structures/Walls/solid_diagonal.rsi/state0.png index fe95c81ed32..5976a6c5c8c 100644 Binary files a/Resources/Textures/Structures/Walls/solid_diagonal.rsi/state0.png and b/Resources/Textures/Structures/Walls/solid_diagonal.rsi/state0.png differ diff --git a/Resources/Textures/Structures/Walls/solid_diagonal.rsi/state1.png b/Resources/Textures/Structures/Walls/solid_diagonal.rsi/state1.png index 1eb30cb070c..81e51b9ac63 100644 Binary files a/Resources/Textures/Structures/Walls/solid_diagonal.rsi/state1.png and b/Resources/Textures/Structures/Walls/solid_diagonal.rsi/state1.png differ diff --git a/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state0.png index 60d1c0421b3..84f71e4833a 100644 Binary files a/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state0.png and b/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state0.png differ diff --git a/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state1.png index 1ae08dba887..3655b4b9d15 100644 Binary files a/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state1.png and b/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state1.png differ diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/full.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/full.png index b20d5ebd5ef..41d24e9d2c4 100644 Binary files a/Resources/Textures/Structures/Windows/plasma_window.rsi/full.png and b/Resources/Textures/Structures/Windows/plasma_window.rsi/full.png differ diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/meta.json b/Resources/Textures/Structures/Windows/plasma_window.rsi/meta.json index 4a033410903..888b3527fb6 100644 --- a/Resources/Textures/Structures/Windows/plasma_window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/plasma_window.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/9c7d509354ee030300f63c701da63c17928c3b3b and modified by Swept", + "copyright": "Taken from https://github.com/ParadiseSS13/Paradise/ and modified by FoxxoTrystan", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow0.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow0.png index fe379e2fef5..a4adc74bb5e 100644 Binary files a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow0.png and b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow0.png differ diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow1.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow1.png index d75684f5d06..b0289b7d65a 100644 Binary files a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow1.png and b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow1.png differ diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow2.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow2.png index fe379e2fef5..a4adc74bb5e 100644 Binary files a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow2.png and b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow2.png differ diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow3.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow3.png index d75684f5d06..b0289b7d65a 100644 Binary files a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow3.png and b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow3.png differ diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow4.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow4.png index 051ddb5681d..06f42755835 100644 Binary files a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow4.png and b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow4.png differ diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow5.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow5.png index af6c01d9069..b6847b92373 100644 Binary files a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow5.png and b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow5.png differ diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow6.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow6.png index 051ddb5681d..06f42755835 100644 Binary files a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow6.png and b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow6.png differ diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow7.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow7.png index dba4e93a8aa..897abc2b8e4 100644 Binary files a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow7.png and b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow7.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state0.png index 8ad1f325b35..3e5ebf50361 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state0.png and b/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state0.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state1.png index e724d3b9f78..7bd92db59f7 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state1.png and b/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state1.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/full.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/full.png index 4cfc4c45da5..a1c5c2115fc 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/full.png and b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/full.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/meta.json b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/meta.json index f66453a57d8..e716cdf4ed6 100644 --- a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/9c7d509354ee030300f63c701da63c17928c3b3b", + "copyright": "Taken from https://github.com/ParadiseSS13/Paradise/ and modified by FoxxoTrystan", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow0.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow0.png index faeb000b4af..89446260094 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow0.png and b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow0.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow1.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow1.png index 46547d6b996..b4ba2ac0075 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow1.png and b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow1.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow2.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow2.png index faeb000b4af..89446260094 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow2.png and b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow2.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow3.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow3.png index 46547d6b996..7f987f7a8ef 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow3.png and b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow3.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow4.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow4.png index 66dddef140f..c9bd9b86994 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow4.png and b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow4.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow5.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow5.png index 8ebeed21a9f..f16d149ec46 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow5.png and b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow5.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow6.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow6.png index 66dddef140f..c9bd9b86994 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow6.png and b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow6.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow7.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow7.png index 4d0ff4bf731..4ad14d62d1d 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow7.png and b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow7.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state0.png index facbfda3ade..fa6f83797c1 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state0.png and b/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state0.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state1.png index 3799df51bf9..c40b161092b 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state1.png and b/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state1.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/full.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/full.png index 10342c57058..a1c44f239f0 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/full.png and b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/full.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/meta.json b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/meta.json index 739d63b2474..84639dad70e 100644 --- a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/meta.json @@ -1,46 +1,46 @@ { - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "resprited by AsikKEsel | Original source: from vgstation at commit https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi and modified by Swept ", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "full" - }, - { - "name": "ruwindow0", - "directions": 4 - }, - { - "name": "ruwindow1", - "directions": 4 - }, - { - "name": "ruwindow2", - "directions": 4 - }, - { - "name": "ruwindow3", - "directions": 4 - }, - { - "name": "ruwindow4", - "directions": 4 - }, - { - "name": "ruwindow5", - "directions": 4 - }, - { - "name": "ruwindow6", - "directions": 4 - }, - { - "name": "ruwindow7", - "directions": 4 - } - ] - } + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/ParadiseSS13/Paradise/ and modified by FoxxoTrystan", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "full" + }, + { + "name": "ruwindow0", + "directions": 4 + }, + { + "name": "ruwindow1", + "directions": 4 + }, + { + "name": "ruwindow2", + "directions": 4 + }, + { + "name": "ruwindow3", + "directions": 4 + }, + { + "name": "ruwindow4", + "directions": 4 + }, + { + "name": "ruwindow5", + "directions": 4 + }, + { + "name": "ruwindow6", + "directions": 4 + }, + { + "name": "ruwindow7", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow0.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow0.png index dfe885bf853..ee388930016 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow0.png and b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow0.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow1.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow1.png index e1ca7ea3639..cb46c4deda8 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow1.png and b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow1.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow2.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow2.png index 773a2b3fff3..ee388930016 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow2.png and b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow2.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow3.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow3.png index e10cff828ea..7977b29f0cc 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow3.png and b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow3.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow4.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow4.png index 2dff7e5127d..a50fafe0ed2 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow4.png and b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow4.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow5.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow5.png index 0a54faafb0d..3fe3f626e79 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow5.png and b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow5.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow6.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow6.png index 1f9ba05446a..a50fafe0ed2 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow6.png and b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow6.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow7.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow7.png index 5fb5fb0c7f7..6edfddd38d6 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow7.png and b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow7.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/full.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/full.png index 34c51d7c3d6..73b05e9b2a0 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_window.rsi/full.png and b/Resources/Textures/Structures/Windows/reinforced_window.rsi/full.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/meta.json b/Resources/Textures/Structures/Windows/reinforced_window.rsi/meta.json index 456d8a28909..90c736a41cc 100644 --- a/Resources/Textures/Structures/Windows/reinforced_window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/reinforced_window.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi and modified by Swept", + "copyright": "Taken from https://github.com/ParadiseSS13/Paradise/ and modified by FoxxoTrystan", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow0.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow0.png index 8beafa06dbb..f339bedb11d 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow0.png and b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow0.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow1.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow1.png index ba95fde9e59..defff91bc01 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow1.png and b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow1.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow2.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow2.png index 8beafa06dbb..f339bedb11d 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow2.png and b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow2.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow3.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow3.png index ba95fde9e59..defff91bc01 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow3.png and b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow3.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow4.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow4.png index 754af67ca37..0324c05f17d 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow4.png and b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow4.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow5.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow5.png index 6f16899eded..6770b1a2357 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow5.png and b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow5.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow6.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow6.png index 754af67ca37..0324c05f17d 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow6.png and b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow6.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow7.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow7.png index f7fe3b63651..0e02c2e8de0 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow7.png and b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow7.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/state0.png index eb9489ddb47..cd8aca55797 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/state0.png and b/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/state0.png differ diff --git a/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/state1.png index 65254207165..4130608cea1 100644 Binary files a/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/state1.png and b/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/state1.png differ diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/full.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/full.png index 6baa538dad9..371b38edb20 100644 Binary files a/Resources/Textures/Structures/Windows/tinted_window.rsi/full.png and b/Resources/Textures/Structures/Windows/tinted_window.rsi/full.png differ diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/meta.json b/Resources/Textures/Structures/Windows/tinted_window.rsi/meta.json index 30517fd0ac6..cdbfb466b44 100644 --- a/Resources/Textures/Structures/Windows/tinted_window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/tinted_window.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/ f141c349e063f7318d8c8a2417d840f0b2d06600, modified", + "copyright": "Taken from https://github.com/ParadiseSS13/Paradise/ and modified by FoxxoTrystan", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow0.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow0.png index 414ffd9f3ee..5539fa6154e 100644 Binary files a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow0.png and b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow0.png differ diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow1.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow1.png index 90131a48bf9..a7a0cad53af 100644 Binary files a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow1.png and b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow1.png differ diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow2.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow2.png index ae12f39860f..5539fa6154e 100644 Binary files a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow2.png and b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow2.png differ diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow3.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow3.png index bbfee9bce7f..a7a0cad53af 100644 Binary files a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow3.png and b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow3.png differ diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow4.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow4.png index b79db5f7893..ea4706b1911 100644 Binary files a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow4.png and b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow4.png differ diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow5.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow5.png index 83797163f22..b26c7be0b2d 100644 Binary files a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow5.png and b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow5.png differ diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow6.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow6.png index 2cae7c43a4c..ea4706b1911 100644 Binary files a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow6.png and b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow6.png differ diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow7.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow7.png index 17304ce1044..a422e8c1526 100644 Binary files a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow7.png and b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow7.png differ diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/full.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/full.png index f7b6e10f869..5695bc0c26c 100644 Binary files a/Resources/Textures/Structures/Windows/uranium_window.rsi/full.png and b/Resources/Textures/Structures/Windows/uranium_window.rsi/full.png differ diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/meta.json b/Resources/Textures/Structures/Windows/uranium_window.rsi/meta.json index 099201b4184..e4e4f5004e3 100644 --- a/Resources/Textures/Structures/Windows/uranium_window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/uranium_window.rsi/meta.json @@ -1,46 +1,46 @@ { - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "resprited by AsikKEsel | Original source: from vgstation at commit https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi and modified by Swept", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "full" - }, - { - "name": "uwindow0", - "directions": 4 - }, - { - "name": "uwindow1", - "directions": 4 - }, - { - "name": "uwindow2", - "directions": 4 - }, - { - "name": "uwindow3", - "directions": 4 - }, - { - "name": "uwindow4", - "directions": 4 - }, - { - "name": "uwindow5", - "directions": 4 - }, - { - "name": "uwindow6", - "directions": 4 - }, - { - "name": "uwindow7", - "directions": 4 - } - ] - } + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/ParadiseSS13/Paradise/ and modified by FoxxoTrystan", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "full" + }, + { + "name": "uwindow0", + "directions": 4 + }, + { + "name": "uwindow1", + "directions": 4 + }, + { + "name": "uwindow2", + "directions": 4 + }, + { + "name": "uwindow3", + "directions": 4 + }, + { + "name": "uwindow4", + "directions": 4 + }, + { + "name": "uwindow5", + "directions": 4 + }, + { + "name": "uwindow6", + "directions": 4 + }, + { + "name": "uwindow7", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow0.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow0.png index 7be507678d4..31bfc29cf0a 100644 Binary files a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow0.png and b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow0.png differ diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow1.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow1.png index 9979f28e945..e395832e8e3 100644 Binary files a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow1.png and b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow1.png differ diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow2.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow2.png index 7be507678d4..31bfc29cf0a 100644 Binary files a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow2.png and b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow2.png differ diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow3.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow3.png index 9979f28e945..e395832e8e3 100644 Binary files a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow3.png and b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow3.png differ diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow4.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow4.png index 9fa452a61bf..4097d024fc2 100644 Binary files a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow4.png and b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow4.png differ diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow5.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow5.png index bd46092739e..5245aa4de55 100644 Binary files a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow5.png and b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow5.png differ diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow6.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow6.png index eabc47c84b8..4097d024fc2 100644 Binary files a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow6.png and b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow6.png differ diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow7.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow7.png index f75790a4187..f2aec98846c 100644 Binary files a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow7.png and b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow7.png differ diff --git a/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/state0.png index 45b3c99189f..dc5081de2ed 100644 Binary files a/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/state0.png and b/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/state0.png differ diff --git a/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/state1.png index 5286b1e17e6..772c39f6419 100644 Binary files a/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/state1.png and b/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/state1.png differ diff --git a/Resources/Textures/Structures/Windows/window.rsi/full.png b/Resources/Textures/Structures/Windows/window.rsi/full.png index 5ed08bac420..897534dd8f6 100644 Binary files a/Resources/Textures/Structures/Windows/window.rsi/full.png and b/Resources/Textures/Structures/Windows/window.rsi/full.png differ diff --git a/Resources/Textures/Structures/Windows/window.rsi/meta.json b/Resources/Textures/Structures/Windows/window.rsi/meta.json index 41b8be18b43..9f6536937a3 100644 --- a/Resources/Textures/Structures/Windows/window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/window.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi and modified by Swept", + "copyright": "Taken from https://github.com/ParadiseSS13/Paradise/ and modified by FoxxoTrystan", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/window.rsi/window0.png b/Resources/Textures/Structures/Windows/window.rsi/window0.png index 37bade4a4a7..95094714d3b 100644 Binary files a/Resources/Textures/Structures/Windows/window.rsi/window0.png and b/Resources/Textures/Structures/Windows/window.rsi/window0.png differ diff --git a/Resources/Textures/Structures/Windows/window.rsi/window1.png b/Resources/Textures/Structures/Windows/window.rsi/window1.png index 4495aca459d..98f6b07bcb1 100644 Binary files a/Resources/Textures/Structures/Windows/window.rsi/window1.png and b/Resources/Textures/Structures/Windows/window.rsi/window1.png differ diff --git a/Resources/Textures/Structures/Windows/window.rsi/window2.png b/Resources/Textures/Structures/Windows/window.rsi/window2.png index 37bade4a4a7..95094714d3b 100644 Binary files a/Resources/Textures/Structures/Windows/window.rsi/window2.png and b/Resources/Textures/Structures/Windows/window.rsi/window2.png differ diff --git a/Resources/Textures/Structures/Windows/window.rsi/window3.png b/Resources/Textures/Structures/Windows/window.rsi/window3.png index 4495aca459d..98f6b07bcb1 100644 Binary files a/Resources/Textures/Structures/Windows/window.rsi/window3.png and b/Resources/Textures/Structures/Windows/window.rsi/window3.png differ diff --git a/Resources/Textures/Structures/Windows/window.rsi/window4.png b/Resources/Textures/Structures/Windows/window.rsi/window4.png index 13aaa2107eb..30629fcac2a 100644 Binary files a/Resources/Textures/Structures/Windows/window.rsi/window4.png and b/Resources/Textures/Structures/Windows/window.rsi/window4.png differ diff --git a/Resources/Textures/Structures/Windows/window.rsi/window5.png b/Resources/Textures/Structures/Windows/window.rsi/window5.png index df8dd36cf54..df4ef650886 100644 Binary files a/Resources/Textures/Structures/Windows/window.rsi/window5.png and b/Resources/Textures/Structures/Windows/window.rsi/window5.png differ diff --git a/Resources/Textures/Structures/Windows/window.rsi/window6.png b/Resources/Textures/Structures/Windows/window.rsi/window6.png index 13aaa2107eb..30629fcac2a 100644 Binary files a/Resources/Textures/Structures/Windows/window.rsi/window6.png and b/Resources/Textures/Structures/Windows/window.rsi/window6.png differ diff --git a/Resources/Textures/Structures/Windows/window.rsi/window7.png b/Resources/Textures/Structures/Windows/window.rsi/window7.png index 1a2e65fad78..0e02c2e8de0 100644 Binary files a/Resources/Textures/Structures/Windows/window.rsi/window7.png and b/Resources/Textures/Structures/Windows/window.rsi/window7.png differ diff --git a/Resources/Textures/Structures/Windows/window_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/window_diagonal.rsi/state0.png index df5805957d6..39ffd5be1fd 100644 Binary files a/Resources/Textures/Structures/Windows/window_diagonal.rsi/state0.png and b/Resources/Textures/Structures/Windows/window_diagonal.rsi/state0.png differ diff --git a/Resources/Textures/Structures/Windows/window_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/window_diagonal.rsi/state1.png index 83737b8cefe..bb5136c8b00 100644 Binary files a/Resources/Textures/Structures/Windows/window_diagonal.rsi/state1.png and b/Resources/Textures/Structures/Windows/window_diagonal.rsi/state1.png differ diff --git a/Resources/engineCommandPerms.yml b/Resources/engineCommandPerms.yml index 15200531e3a..51743c6e822 100644 --- a/Resources/engineCommandPerms.yml +++ b/Resources/engineCommandPerms.yml @@ -67,6 +67,7 @@ - scene - replay_recording_stats - print_pvs_ack + - pvs_override_info - merge_grids diff --git a/Scripts/bat/!README.txt b/Scripts/bat/!README.txt old mode 100755 new mode 100644 diff --git a/Scripts/bat/buildAllDebug.bat b/Scripts/bat/buildAllDebug.bat old mode 100755 new mode 100644 diff --git a/Scripts/bat/buildAllRelease.bat b/Scripts/bat/buildAllRelease.bat old mode 100755 new mode 100644 diff --git a/Scripts/bat/buildAllTools.bat b/Scripts/bat/buildAllTools.bat old mode 100755 new mode 100644 diff --git a/Scripts/bat/runQuickAll.bat b/Scripts/bat/runQuickAll.bat old mode 100755 new mode 100644 diff --git a/Scripts/bat/runQuickClient.bat b/Scripts/bat/runQuickClient.bat old mode 100755 new mode 100644 diff --git a/Scripts/bat/runQuickServer.bat b/Scripts/bat/runQuickServer.bat old mode 100755 new mode 100644 diff --git a/Scripts/bat/runTests.bat b/Scripts/bat/runTests.bat old mode 100755 new mode 100644 diff --git a/Scripts/bat/runTestsIntegration.bat b/Scripts/bat/runTestsIntegration.bat old mode 100755 new mode 100644 diff --git a/Scripts/bat/runTestsYAML.bat b/Scripts/bat/runTestsYAML.bat old mode 100755 new mode 100644 diff --git a/Scripts/sh/!README.txt b/Scripts/sh/!README.txt old mode 100755 new mode 100644 diff --git a/Scripts/sh/buildAllDebug.sh b/Scripts/sh/buildAllDebug.sh old mode 100755 new mode 100644 diff --git a/Scripts/sh/buildAllRelease.sh b/Scripts/sh/buildAllRelease.sh old mode 100755 new mode 100644 diff --git a/Scripts/sh/buildAllTools.sh b/Scripts/sh/buildAllTools.sh old mode 100755 new mode 100644 diff --git a/Scripts/sh/runQuickAll.sh b/Scripts/sh/runQuickAll.sh old mode 100755 new mode 100644 diff --git a/Scripts/sh/runQuickClient.sh b/Scripts/sh/runQuickClient.sh old mode 100755 new mode 100644 diff --git a/Scripts/sh/runQuickServer.sh b/Scripts/sh/runQuickServer.sh old mode 100755 new mode 100644 diff --git a/Scripts/sh/runTests.sh b/Scripts/sh/runTests.sh old mode 100755 new mode 100644 diff --git a/Scripts/sh/runTestsIntegration.sh b/Scripts/sh/runTestsIntegration.sh old mode 100755 new mode 100644 diff --git a/Scripts/sh/runTestsYAML.sh b/Scripts/sh/runTestsYAML.sh old mode 100755 new mode 100644 diff --git a/global.json b/global.json index 391ba3c2a30..2244195a209 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { "version": "8.0.100", - "rollForward": "latestFeature" + "rollForward": "disable" } }