diff --git a/Content.Client/IconSmoothing/IconSmoothSystem.cs b/Content.Client/IconSmoothing/IconSmoothSystem.cs index 2715805e758..d6afbc42cb4 100644 --- a/Content.Client/IconSmoothing/IconSmoothSystem.cs +++ b/Content.Client/IconSmoothing/IconSmoothSystem.cs @@ -81,21 +81,25 @@ public void SetStateBase(EntityUid uid, IconSmoothComponent component, string ne private void SetCornerLayers(SpriteComponent sprite, IconSmoothComponent component) { - sprite.LayerMapRemove(CornerLayers.SE); - sprite.LayerMapRemove(CornerLayers.NE); - sprite.LayerMapRemove(CornerLayers.NW); - sprite.LayerMapRemove(CornerLayers.SW); - + // Frontier: Allow overlays on entities using CornerLayers smoothing - don't remove layers, adjust existing ones or create new ones. var state0 = $"{component.StateBase}0"; - sprite.LayerMapSet(CornerLayers.SE, sprite.AddLayerState(state0)); - sprite.LayerSetDirOffset(CornerLayers.SE, DirectionOffset.None); - sprite.LayerMapSet(CornerLayers.NE, sprite.AddLayerState(state0)); - sprite.LayerSetDirOffset(CornerLayers.NE, DirectionOffset.CounterClockwise); - sprite.LayerMapSet(CornerLayers.NW, sprite.AddLayerState(state0)); - sprite.LayerSetDirOffset(CornerLayers.NW, DirectionOffset.Flip); - sprite.LayerMapSet(CornerLayers.SW, sprite.AddLayerState(state0)); - sprite.LayerSetDirOffset(CornerLayers.SW, DirectionOffset.Clockwise); + SetCornerLayerState(sprite, CornerLayers.SE, DirectionOffset.None, state0); + SetCornerLayerState(sprite, CornerLayers.NE, DirectionOffset.CounterClockwise, state0); + SetCornerLayerState(sprite, CornerLayers.NW, DirectionOffset.Flip, state0); + SetCornerLayerState(sprite, CornerLayers.SW, DirectionOffset.Clockwise, state0); + // End Frontier: Allow overlays on entities using CornerLayers smoothing - don't remove layers, adjust existing ones or create new ones. + } + + // Frontier: set layer function to remove redundancy + private void SetCornerLayerState(SpriteComponent sprite, CornerLayers corner, DirectionOffset offset, string state) + { + if (sprite.LayerMapTryGet(corner, out var layer)) + sprite.LayerSetState(layer, state); + else + sprite.LayerMapSet(corner, sprite.AddLayerState(state)); + sprite.LayerSetDirOffset(corner, offset); } + // End Frontier: set layer function to remove redundancy private void OnShutdown(EntityUid uid, IconSmoothComponent component, ComponentShutdown args) { diff --git a/Content.IntegrationTests/PoolSettings.cs b/Content.IntegrationTests/PoolSettings.cs index 187af4569f9..5cebda0bfa1 100644 --- a/Content.IntegrationTests/PoolSettings.cs +++ b/Content.IntegrationTests/PoolSettings.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Robust.Shared.Random; @@ -93,7 +93,7 @@ public sealed class PoolSettings /// /// Frontier: the preset to run the game in. /// Set to secret for upstream tests to mimic upstream behaviour. - /// If you need to check adventure game rule things, set this to Adventure. + /// If you need to check adventure game rule things, set this to nfadventure or nfpirate. /// public string GameLobbyDefaultPreset { get; set; } = "secret"; diff --git a/Content.Server/AlertLevel/AlertLevelSystem.cs b/Content.Server/AlertLevel/AlertLevelSystem.cs index 8e43bf6a715..71ad018603a 100644 --- a/Content.Server/AlertLevel/AlertLevelSystem.cs +++ b/Content.Server/AlertLevel/AlertLevelSystem.cs @@ -172,8 +172,7 @@ public void SetLevel(EntityUid station, string level, bool playSound, bool annou return; // End Frontier - if (!Resolve(station, ref dataComponent) // Frontier: remove component - || component.AlertLevels == null + if (component.AlertLevels == null // Frontier: remove component, resolve station to data component later || !component.AlertLevels.Levels.TryGetValue(level, out var detail) || component.CurrentLevel == level) { @@ -196,7 +195,7 @@ public void SetLevel(EntityUid station, string level, bool playSound, bool annou component.CurrentLevel = level; component.IsLevelLocked = locked; - var stationName = dataComponent.EntityName; + //var stationName = dataComponent.EntityName; // Frontier: remove station name var name = level.ToLower(); @@ -232,8 +231,9 @@ public void SetLevel(EntityUid station, string level, bool playSound, bool annou } } - if (announce) + if (announce && Resolve(station, ref dataComponent)) // Frontier: add Resolve for dataComponent { + var stationName = dataComponent.EntityName; // Frontier: moved down _chatSystem.DispatchStationAnnouncement(station, announcementFull, playDefaultSound: playDefault, colorOverride: detail.Color, sender: stationName); } diff --git a/Content.Server/Gatherable/GatherableSystem.Projectile.cs b/Content.Server/Gatherable/GatherableSystem.Projectile.cs index 3ab8872fd7d..df4c6122f4d 100644 --- a/Content.Server/Gatherable/GatherableSystem.Projectile.cs +++ b/Content.Server/Gatherable/GatherableSystem.Projectile.cs @@ -1,4 +1,5 @@ using Content.Server.Gatherable.Components; +using Content.Shared.Mining.Components; using Content.Shared.Projectiles; using Robust.Shared.Physics.Events; @@ -21,6 +22,21 @@ private void OnProjectileCollide(Entity gathering, return; } + // Frontier: gathering changes + // bad gatherer - not strong enough + if (_whitelistSystem.IsWhitelistFail(gatherable.ToolWhitelist, gathering.Owner)) + { + QueueDel(gathering); + return; + } + // Too strong (e.g. overpen) - gathers ore but destroys it + if (TryComp(args.OtherEntity, out var oreVein) + && _whitelistSystem.IsWhitelistPass(oreVein.GatherDestructionWhitelist, gathering.Owner)) + { + oreVein.PreventSpawning = true; + } + // End Frontier: gathering changes + Gather(args.OtherEntity, gathering, gatherable); gathering.Comp.Amount--; diff --git a/Content.Server/Light/EntitySystems/EmergencyLightSystem.cs b/Content.Server/Light/EntitySystems/EmergencyLightSystem.cs index 9f820bdf701..633a027ef8f 100644 --- a/Content.Server/Light/EntitySystems/EmergencyLightSystem.cs +++ b/Content.Server/Light/EntitySystems/EmergencyLightSystem.cs @@ -32,6 +32,8 @@ public override void Initialize() SubscribeLocalEvent(OnAlertLevelChanged); SubscribeLocalEvent(OnEmergencyExamine); SubscribeLocalEvent(OnEmergencyPower); + + SubscribeLocalEvent(OnMapInit); // Frontier } private void OnEmergencyPower(Entity entity, ref PowerChangedEvent args) @@ -245,4 +247,21 @@ private void TurnOn(Entity entity, Color color) _appearance.SetData(entity.Owner, EmergencyLightVisuals.On, true); _ambient.SetAmbience(entity.Owner, true); } + + // Frontier: ensure the lights are accurate to the station + private void OnMapInit(Entity entity, ref MapInitEvent ev) + { + if (!TryComp(_sectorService.GetServiceEntity(), out var alert)) + return; + + if (alert.AlertLevels == null || !alert.AlertLevels.Levels.TryGetValue(alert.CurrentLevel, out var details)) + return; + + entity.Comp.ForciblyEnabled = details.ForceEnableEmergencyLights; + if (details.ForceEnableEmergencyLights) + TurnOn(entity, details.EmergencyLightColor); + else + TurnOff(entity, details.EmergencyLightColor); + } + // End Frontier } diff --git a/Content.Server/Mining/MiningSystem.cs b/Content.Server/Mining/MiningSystem.cs index 18e96e57696..8f6bb6ca191 100644 --- a/Content.Server/Mining/MiningSystem.cs +++ b/Content.Server/Mining/MiningSystem.cs @@ -29,6 +29,11 @@ private void OnDestruction(EntityUid uid, OreVeinComponent component, Destructio if (component.CurrentOre == null) return; + // Frontier + if (component.PreventSpawning) + return; + // End Frontier + var proto = _proto.Index(component.CurrentOre); if (proto.OreEntity == null) diff --git a/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs b/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs index 77a31074a62..42eec583f81 100644 --- a/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs +++ b/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs @@ -18,6 +18,8 @@ using Robust.Server.GameObjects; // Nuclear-14 using Robust.Shared.Prototypes; using Content.Shared.Access.Systems; // Frontier +using Content.Shared.Verbs; //Frontier +using Robust.Shared.Utility; //Frontier namespace Content.Server.Radio.EntitySystems; @@ -51,6 +53,7 @@ public override void Initialize() SubscribeLocalEvent(OnListen); SubscribeLocalEvent(OnAttemptListen); SubscribeLocalEvent(OnPowerChanged); + SubscribeLocalEvent>(OnGetAltVerbs); // Frontier SubscribeLocalEvent(OnSpeakerInit); SubscribeLocalEvent(OnActivateSpeaker); @@ -366,6 +369,44 @@ private void UpdateHandheldRadioUi(Entity radio) #endregion // Nuclear-14-End + // Frontier Start + /// + /// Adds an alt verb allowing for the mic to be toggled easily. + /// + private void OnGetAltVerbs(EntityUid uid, RadioMicrophoneComponent microphone, GetVerbsEvent args) + { + if (!args.CanInteract || !args.CanAccess) + return; + + AlternativeVerb verb = new() + { + Text = Loc.GetString("handheld-radio-component-toggle"), + Icon = new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/VerbIcons/settings.svg.192dpi.png")), + Act = () => ToggleRadioOrIntercomMic(uid, microphone, args.User) + }; + args.Verbs.Add(verb); + } + + /// + /// A mic toggle for both radios and intercoms. + /// + private void ToggleRadioOrIntercomMic(EntityUid uid, RadioMicrophoneComponent microphone, EntityUid user) + { + if (!_access.IsAllowed(user, uid)) + return; + if (microphone.PowerRequired && !this.IsPowered(uid, EntityManager)) + return; + + ToggleRadioMicrophone(uid, user, false, microphone); + if (TryComp(uid, out var intercom)) + { + intercom.MicrophoneEnabled = microphone.Enabled; + Dirty((uid, intercom)); + } + } + // Frontier End + + // Frontier: init intercom with map private void OnMapInit(EntityUid uid, IntercomComponent ent, MapInitEvent args) { diff --git a/Content.Server/Shipyard/Systems/ShipyardSystem.Consoles.cs b/Content.Server/Shipyard/Systems/ShipyardSystem.Consoles.cs index 62d225badd7..923371f3b1e 100644 --- a/Content.Server/Shipyard/Systems/ShipyardSystem.Consoles.cs +++ b/Content.Server/Shipyard/Systems/ShipyardSystem.Consoles.cs @@ -3,7 +3,6 @@ using Content.Server.Radio.EntitySystems; using Content.Server._NF.Bank; using Content.Server.Shipyard.Components; -using Content.Shared._NF.GameRule; using Content.Shared.Bank.Components; using Content.Shared.Shipyard.Events; using Content.Shared.Shipyard.BUI; diff --git a/Content.Server/_NF/GameRule/Components/AdventureRuleComponent.cs b/Content.Server/_NF/GameRule/Components/NFAdventureRuleComponent.cs similarity index 58% rename from Content.Server/_NF/GameRule/Components/AdventureRuleComponent.cs rename to Content.Server/_NF/GameRule/Components/NFAdventureRuleComponent.cs index fc85a5209c6..2ea4339bb70 100644 --- a/Content.Server/_NF/GameRule/Components/AdventureRuleComponent.cs +++ b/Content.Server/_NF/GameRule/Components/NFAdventureRuleComponent.cs @@ -1,10 +1,7 @@ -using Content.Shared.Procedural; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; - namespace Content.Server._NF.GameRule.Components; -[RegisterComponent, Access(typeof(NfAdventureRuleSystem))] -public sealed partial class AdventureRuleComponent : Component +[RegisterComponent, Access(typeof(NFAdventureRuleSystem))] +public sealed partial class NFAdventureRuleComponent : Component { public List NFPlayerMinds = new(); public List CargoDepots = new(); diff --git a/Content.Server/_NF/GameRule/NfAdventureRuleSystem.cs b/Content.Server/_NF/GameRule/NfAdventureRuleSystem.cs index 5ee7e6e8b7a..68062cdb598 100644 --- a/Content.Server/_NF/GameRule/NfAdventureRuleSystem.cs +++ b/Content.Server/_NF/GameRule/NfAdventureRuleSystem.cs @@ -1,24 +1,15 @@ using System.Linq; using System.Net.Http; -using System.Numerics; using System.Text; using System.Text.Json; using System.Text.Json.Serialization; using System.Threading.Tasks; -using Content.Shared._NF.GameRule; using Content.Server._NF.GameTicking.Events; -using Robust.Server.GameObjects; -using Robust.Server.Maps; using Content.Shared.GameTicking.Components; -using Robust.Shared.Map; using Robust.Shared.Prototypes; -using Robust.Shared.Random; -using Content.Server.Shuttles.Systems; using Content.Server.Cargo.Components; using Content.Server.GameTicking; using Content.Server.GameTicking.Rules; -using Content.Server.Maps; -using Content.Server.Station.Systems; using Content.Shared._NF.CCVar; // Frontier using Robust.Shared.Configuration; using Content.Shared._NF.Bank; @@ -29,26 +20,19 @@ using Content.Shared.GameTicking; using Robust.Shared.Enums; using Robust.Server.Player; -using Content.Server.Warps; namespace Content.Server._NF.GameRule; /// /// This handles the dungeon and trading post spawning, as well as round end capitalism summary /// -public sealed class NfAdventureRuleSystem : GameRuleSystem +public sealed class NFAdventureRuleSystem : GameRuleSystem { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IConfigurationManager _configurationManager = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; - [Dependency] private readonly MapLoaderSystem _map = default!; - [Dependency] private readonly MetaDataSystem _meta = default!; - [Dependency] private readonly StationSystem _station = default!; - [Dependency] private readonly ShuttleSystem _shuttle = default!; - [Dependency] private readonly PhysicsSystem _physics = default!; [Dependency] private readonly BankSystem _bank = default!; - [Dependency] private readonly StationRenameWarpsSystems _renameWarps = default!; + [Dependency] private readonly PointOfInterestSystem _poi = default!; private readonly HttpClient _httpClient = new(); @@ -77,11 +61,6 @@ public PlayerRoundBankInformation(int startBalance, string name, NetUserId userI [ViewVariables] private Dictionary _players = new(); - private float _distanceOffset = 1f; - private List _stationCoords = new(); - - private MapId _mapId; - /// public override void Initialize() { @@ -92,7 +71,7 @@ public override void Initialize() _playerManager.PlayerStatusChanged += PlayerManagerOnPlayerStatusChanged; } - protected override void AppendRoundEndText(EntityUid uid, AdventureRuleComponent component, GameRuleComponent gameRule, ref RoundEndTextAppendEvent ev) + protected override void AppendRoundEndText(EntityUid uid, NFAdventureRuleComponent component, GameRuleComponent gameRule, ref RoundEndTextAppendEvent ev) { ev.AddLine(Loc.GetString("adventure-list-start")); var allScore = new List>(); @@ -206,12 +185,9 @@ private void OnRoundRestart(RoundRestartCleanupEvent ev) _players.Clear(); } - protected override void Started(EntityUid uid, AdventureRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) + protected override void Started(EntityUid uid, NFAdventureRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) { - _mapId = GameTicker.DefaultMap; - - _distanceOffset = _configurationManager.GetCVar(NFCCVars.POIDistanceModifier); - _stationCoords = new List(); + var mapUid = GameTicker.DefaultMap; //First, we need to grab the list and sort it into its respective spawning logics List depotProtos = new(); @@ -237,11 +213,11 @@ protected override void Started(EntityUid uid, AdventureRuleComponent component, remainingUniqueProtosBySpawnGroup[location.SpawnGroup].Add(location); } } - GenerateDepots(depotProtos, out component.CargoDepots); - GenerateMarkets(marketProtos, out component.MarketStations); - GenerateRequireds(requiredProtos, out component.RequiredPois); - GenerateOptionals(optionalProtos, out component.OptionalPois); - GenerateUniques(remainingUniqueProtosBySpawnGroup, out component.UniquePois); + _poi.GenerateDepots(mapUid, depotProtos, out component.CargoDepots); + _poi.GenerateMarkets(mapUid, marketProtos, out component.MarketStations); + _poi.GenerateRequireds(mapUid, requiredProtos, out component.RequiredPois); + _poi.GenerateOptionals(mapUid, optionalProtos, out component.OptionalPois); + _poi.GenerateUniques(mapUid, remainingUniqueProtosBySpawnGroup, out component.UniquePois); base.Started(uid, component, gameRule, args); @@ -249,223 +225,6 @@ protected override void Started(EntityUid uid, AdventureRuleComponent component, RaiseLocalEvent(EntityUid.Invalid, new StationsGeneratedEvent(), broadcast: true); // TODO: attach this to a meaningful entity. } - private void GenerateDepots(List depotPrototypes, out List depotStations) - { - //For depots, we want them to fill a circular type dystance formula to try to keep them as far apart as possible - //Therefore, we will be taking our range properties and treating them as magnitudes of a direction vector divided - //by the number of depots set in our corresponding cvar - - depotStations = new List(); - var depotCount = _configurationManager.GetCVar(NFCCVars.CargoDepots); - var rotation = 2 * Math.PI / depotCount; - var rotationOffset = _random.NextAngle() / depotCount; - - for (int i = 0; i < depotCount && depotPrototypes.Count > 0; i++) - { - var proto = _random.Pick(depotPrototypes); - Vector2i offset = new Vector2i((int) (_random.Next(proto.MinimumDistance, proto.MaximumDistance) * _distanceOffset), 0); - offset = offset.Rotate(rotationOffset); - rotationOffset += rotation; - // Append letter to depot name. - - string overrideName = proto.Name; - if (i < 26) - overrideName += $" {(char) ('A' + i)}"; // " A" ... " Z" - else - overrideName += $" {i + 1}"; // " 27", " 28"... - if (TrySpawnPoiGrid(proto, offset, out var depotUid, overrideName: overrideName) && depotUid is { Valid: true } depot) - { - depotStations.Add(depot); - AddStationCoordsToSet(offset); // adjust list of actual station coords - } - } - } - - private void GenerateMarkets(List marketPrototypes, out List marketStations) - { - //For market stations, we are going to allow for a bit of randomness and a different offset configuration. We dont - //want copies of this one, since these can be more themed and duplicate names, for instance, can make for a less - //ideal world - - marketStations = new List(); - var marketCount = _configurationManager.GetCVar(NFCCVars.MarketStations); - _random.Shuffle(marketPrototypes); - int marketsAdded = 0; - foreach (var proto in marketPrototypes) - { - if (marketsAdded >= marketCount) - break; - - var offset = GetRandomPOICoord(proto.MinimumDistance, proto.MaximumDistance, true); - - if (TrySpawnPoiGrid(proto, offset, out var marketUid) && marketUid is { Valid: true } market) - { - marketStations.Add(market); - marketsAdded++; - AddStationCoordsToSet(offset); - } - } - } - - private void GenerateOptionals(List optionalPrototypes, out List optionalStations) - { - //Stations that do not have a defined grouping in their prototype get a default of "Optional" and get put into the - //generic random rotation of POIs. This should include traditional places like Tinnia's rest, the Science Lab, The Pit, - //and most RP places. This will essentially put them all into a pool to pull from, and still does not use the RNG function. - - optionalStations = new List(); - var optionalCount = _configurationManager.GetCVar(NFCCVars.OptionalStations); - _random.Shuffle(optionalPrototypes); - int optionalsAdded = 0; - foreach (var proto in optionalPrototypes) - { - if (optionalsAdded >= optionalCount) - break; - - var offset = GetRandomPOICoord(proto.MinimumDistance, proto.MaximumDistance, true); - - if (TrySpawnPoiGrid(proto, offset, out var optionalUid) && optionalUid is { Valid: true } uid) - { - optionalStations.Add(uid); - AddStationCoordsToSet(offset); - } - } - } - - private void GenerateRequireds(List requiredPrototypes, out List requiredStations) - { - //Stations are required are ones that are vital to function but otherwise still follow a generic random spawn logic - //Traditionally these would be stations like Expedition Lodge, NFSD station, Prison/Courthouse POI, etc. - //There are no limit to these, and any prototype marked alwaysSpawn = true will get pulled out of any list that isnt Markets/Depots - //And will always appear every time, and also will not be included in other optional/dynamic lists - - requiredStations = new List(); - foreach (var proto in requiredPrototypes) - { - var offset = GetRandomPOICoord(proto.MinimumDistance, proto.MaximumDistance, true); - - if (TrySpawnPoiGrid(proto, offset, out var requiredUid) && requiredUid is { Valid: true } uid) - { - requiredStations.Add(uid); - AddStationCoordsToSet(offset); - } - } - } - - private void GenerateUniques(Dictionary> uniquePrototypes, out List uniqueStations) - { - //Unique locations are semi-dynamic groupings of POIs that rely each independantly on the SpawnChance per POI prototype - //Since these are the remainder, and logically must have custom-designated groupings, we can then know to subdivide - //our random pool into these found groups. - //To do this with an equal distribution on a per-POI, per-round percentage basis, we are going to ensure a random - //pick order of which we analyze our weighted chances to spawn, and if successful, remove every entry of that group - //entirely. - - uniqueStations = new List(); - foreach (var prototypeList in uniquePrototypes.Values) - { - // Try to spawn - _random.Shuffle(prototypeList); - foreach (var proto in prototypeList) - { - var chance = _random.NextFloat(0, 1); - if (chance <= proto.SpawnChance) - { - var offset = GetRandomPOICoord(proto.MinimumDistance, proto.MaximumDistance, true); - - if (TrySpawnPoiGrid(proto, offset, out var optionalUid) && optionalUid is { Valid: true } uid) - { - uniqueStations.Add(uid); - AddStationCoordsToSet(offset); - break; - } - } - } - } - } - - private bool TrySpawnPoiGrid(PointOfInterestPrototype proto, Vector2 offset, out EntityUid? gridUid, string? overrideName = null) - { - gridUid = null; - if (_map.TryLoad(_mapId, proto.GridPath.ToString(), out var mapUids, - new MapLoadOptions - { - Offset = offset, - Rotation = _random.NextAngle() - })) - { - - string stationName = string.IsNullOrEmpty(overrideName) ? proto.Name : overrideName; - - EntityUid? stationUid = null; - if (_prototypeManager.TryIndex(proto.ID, out var stationProto)) - { - stationUid = _station.InitializeNewStation(stationProto.Stations[proto.ID], mapUids, stationName); - } - - foreach (var grid in mapUids) - { - var meta = EnsureComp(grid); - _meta.SetEntityName(grid, stationName, meta); - - EntityManager.AddComponents(grid, proto.AddComponents); - } - - // Rename warp points after set up if needed - if (proto.NameWarp) - { - bool? hideWarp = proto.HideWarp ? true : null; - if (stationUid != null) - _renameWarps.SyncWarpPointsToStation(stationUid.Value, forceAdminOnly: hideWarp); - else - _renameWarps.SyncWarpPointsToGrids(mapUids, forceAdminOnly: hideWarp); - } - - gridUid = mapUids[0]; - return true; - } - - return false; - } - - private Vector2 GetRandomPOICoord(float unscaledMinRange, float unscaledMaxRange, bool scaleRange) - { - int numRetries = int.Max(_configurationManager.GetCVar(NFCCVars.POIPlacementRetries), 0); - float minDistance = float.Max(_configurationManager.GetCVar(NFCCVars.MinPOIDistance), 0); // Constant at the end to avoid NaN weirdness - - Vector2 coords = _random.NextVector2(unscaledMinRange, unscaledMaxRange); - if (scaleRange) - coords *= _distanceOffset; - for (int i = 0; i < numRetries; i++) - { - bool positionIsValid = true; - foreach (var station in _stationCoords) - { - if (Vector2.Distance(station, coords) < minDistance) - { - positionIsValid = false; - break; - } - } - - // We have a valid position - if (positionIsValid) - break; - - // No vector yet, get next value. - coords = _random.NextVector2(unscaledMinRange, unscaledMaxRange); - if (scaleRange) - coords *= _distanceOffset; - } - - return coords; - } - - private void AddStationCoordsToSet(Vector2 coords) - { - _stationCoords.Add(coords); - } - private async Task ReportRound(string message, int color = 0x77DDE7) { Logger.InfoS("discord", message); diff --git a/Content.Shared/_NF/GameRule/PointOfInterestPrototype.cs b/Content.Server/_NF/GameRule/PointOfInterestPrototype.cs similarity index 83% rename from Content.Shared/_NF/GameRule/PointOfInterestPrototype.cs rename to Content.Server/_NF/GameRule/PointOfInterestPrototype.cs index b1b11cd5963..f29cf76474e 100644 --- a/Content.Shared/_NF/GameRule/PointOfInterestPrototype.cs +++ b/Content.Server/_NF/GameRule/PointOfInterestPrototype.cs @@ -1,8 +1,8 @@ +using Content.Server.GameTicking.Presets; using Robust.Shared.Prototypes; -using Robust.Shared.Serialization; using Robust.Shared.Utility; -namespace Content.Shared._NF.GameRule; +namespace Content.Server._NF.GameRule; /// /// Describes information for a single point of interest to be spawned in the world @@ -11,7 +11,6 @@ namespace Content.Shared._NF.GameRule; [Serializable] public sealed partial class PointOfInterestPrototype : IPrototype { - /// [IdDataField] public string ID { get; private set; } = default!; @@ -22,13 +21,13 @@ public sealed partial class PointOfInterestPrototype : IPrototype public string Name { get; private set; } = ""; /// - /// Should we set the warppoint name based on the grid name. + /// Should we set the warppoint name based on the grid name. /// [DataField] public bool NameWarp { get; set; } = true; /// - /// If true, makes the warp point admin-only (hiding it for players). + /// If true, makes the warp point admin-only (hiding it for players). /// [DataField] public bool HideWarp { get; set; } = false; @@ -46,11 +45,17 @@ public sealed partial class PointOfInterestPrototype : IPrototype public int MaximumDistance { get; private set; } = 10000; /// - /// Components to be added to any spawned grids. + /// Components to be added to any spawned grids. /// [DataField] public ComponentRegistry AddComponents { get; set; } = new(); + /// + /// What gamepresets ID this POI is allowed to spawn on. + /// + [DataField] + public ProtoId[] SpawnGamePreset { get; private set; } = []; + /// /// If the POI does not belong to a pre-defined group, it will default to the "unique" internal category and will /// use this float from 0-1 as a raw chance to spawn each round. diff --git a/Content.Server/_NF/GameRule/PointOfInterestSystem.cs b/Content.Server/_NF/GameRule/PointOfInterestSystem.cs new file mode 100644 index 00000000000..d58a70b924a --- /dev/null +++ b/Content.Server/_NF/GameRule/PointOfInterestSystem.cs @@ -0,0 +1,299 @@ +using System.Linq; +using System.Numerics; +using Robust.Server.GameObjects; +using Robust.Server.Maps; +using Robust.Shared.Configuration; +using Robust.Shared.Map; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; +using Content.Server.Maps; +using Content.Server.Station.Systems; +using Content.Server.GameTicking; +using Content.Shared._NF.CCVar; +using Content.Shared.GameTicking; + +namespace Content.Server._NF.GameRule; + +/// +/// This handles the dungeon and trading post spawning, as well as round end capitalism summary +/// +//[Access(typeof(NfAdventureRuleSystem))] +public sealed class PointOfInterestSystem : EntitySystem +{ + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly IConfigurationManager _configurationManager = default!; + [Dependency] private readonly MapLoaderSystem _map = default!; + [Dependency] private readonly MetaDataSystem _meta = default!; + [Dependency] private readonly StationSystem _station = default!; + [Dependency] private readonly StationRenameWarpsSystems _renameWarps = default!; + [Dependency] private readonly GameTicker _ticker = default!; + + private List _stationCoords = new(); + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnRoundRestart); + } + + private void OnRoundRestart(RoundRestartCleanupEvent ev) + { + _stationCoords.Clear(); + } + + private void AddStationCoordsToSet(Vector2 coords) + { + _stationCoords.Add(coords); + } + + public void GenerateDepots(MapId mapUid, List depotPrototypes, out List depotStations) + { + //For depots, we want them to fill a circular type dystance formula to try to keep them as far apart as possible + //Therefore, we will be taking our range properties and treating them as magnitudes of a direction vector divided + //by the number of depots set in our corresponding cvar + + depotStations = new List(); + var depotCount = _configurationManager.GetCVar(NFCCVars.CargoDepots); + var rotation = 2 * Math.PI / depotCount; + var rotationOffset = _random.NextAngle() / depotCount; + + if (_ticker.CurrentPreset is null) + return; + + var currentPreset = _ticker.CurrentPreset.ID; + + for (int i = 0; i < depotCount && depotPrototypes.Count > 0; i++) + { + var proto = _random.Pick(depotPrototypes); + + if (!proto.SpawnGamePreset.Contains(currentPreset)) + continue; + + Vector2i offset = new Vector2i((int) _random.Next(proto.MinimumDistance, proto.MaximumDistance), 0); + offset = offset.Rotate(rotationOffset); + rotationOffset += rotation; + // Append letter to depot name. + + string overrideName = proto.Name; + if (i < 26) + overrideName += $" {(char)('A' + i)}"; // " A" ... " Z" + else + overrideName += $" {i + 1}"; // " 27", " 28"... + if (TrySpawnPoiGrid(mapUid, proto, offset, out var depotUid, overrideName: overrideName) && depotUid is { Valid: true } depot) + { + depotStations.Add(depot); + AddStationCoordsToSet(offset); // adjust list of actual station coords + } + } + } + + public void GenerateMarkets(MapId mapUid, List marketPrototypes, out List marketStations) + { + //For market stations, we are going to allow for a bit of randomness and a different offset configuration. We dont + //want copies of this one, since these can be more themed and duplicate names, for instance, can make for a less + //ideal world + + marketStations = new List(); + var marketCount = _configurationManager.GetCVar(NFCCVars.MarketStations); + _random.Shuffle(marketPrototypes); + int marketsAdded = 0; + + if (_ticker.CurrentPreset is null) + return; + var currentPreset = _ticker.CurrentPreset.ID; + + foreach (var proto in marketPrototypes) + { + if (!proto.SpawnGamePreset.Contains(currentPreset)) + continue; + + if (marketsAdded >= marketCount) + break; + + var offset = GetRandomPOICoord(proto.MinimumDistance, proto.MaximumDistance); + + if (TrySpawnPoiGrid(mapUid, proto, offset, out var marketUid) && marketUid is { Valid: true } market) + { + marketStations.Add(market); + marketsAdded++; + AddStationCoordsToSet(offset); + } + } + } + + public void GenerateOptionals(MapId mapUid, List optionalPrototypes, out List optionalStations) + { + //Stations that do not have a defined grouping in their prototype get a default of "Optional" and get put into the + //generic random rotation of POIs. This should include traditional places like Tinnia's rest, the Science Lab, The Pit, + //and most RP places. This will essentially put them all into a pool to pull from, and still does not use the RNG function. + + optionalStations = new List(); + var optionalCount = _configurationManager.GetCVar(NFCCVars.OptionalStations); + _random.Shuffle(optionalPrototypes); + int optionalsAdded = 0; + + if (_ticker.CurrentPreset is null) + return; + var currentPreset = _ticker.CurrentPreset.ID; + + foreach (var proto in optionalPrototypes) + { + if (!proto.SpawnGamePreset.Contains(currentPreset)) + continue; + + if (optionalsAdded >= optionalCount) + break; + + var offset = GetRandomPOICoord(proto.MinimumDistance, proto.MaximumDistance); + + if (TrySpawnPoiGrid(mapUid, proto, offset, out var optionalUid) && optionalUid is { Valid: true } uid) + { + optionalStations.Add(uid); + AddStationCoordsToSet(offset); + } + } + } + + public void GenerateRequireds(MapId mapUid, List requiredPrototypes, out List requiredStations) + { + //Stations are required are ones that are vital to function but otherwise still follow a generic random spawn logic + //Traditionally these would be stations like Expedition Lodge, NFSD station, Prison/Courthouse POI, etc. + //There are no limit to these, and any prototype marked alwaysSpawn = true will get pulled out of any list that isnt Markets/Depots + //And will always appear every time, and also will not be included in other optional/dynamic lists + + requiredStations = new List(); + + if (_ticker.CurrentPreset is null) + return; + var currentPreset = _ticker.CurrentPreset!.ID; + + foreach (var proto in requiredPrototypes) + { + if (!proto.SpawnGamePreset.Contains(currentPreset)) + continue; + + var offset = GetRandomPOICoord(proto.MinimumDistance, proto.MaximumDistance); + + if (TrySpawnPoiGrid(mapUid, proto, offset, out var requiredUid) && requiredUid is { Valid: true } uid) + { + requiredStations.Add(uid); + AddStationCoordsToSet(offset); + } + } + } + + public void GenerateUniques(MapId mapUid, Dictionary> uniquePrototypes, out List uniqueStations) + { + //Unique locations are semi-dynamic groupings of POIs that rely each independantly on the SpawnChance per POI prototype + //Since these are the remainder, and logically must have custom-designated groupings, we can then know to subdivide + //our random pool into these found groups. + //To do this with an equal distribution on a per-POI, per-round percentage basis, we are going to ensure a random + //pick order of which we analyze our weighted chances to spawn, and if successful, remove every entry of that group + //entirely. + + uniqueStations = new List(); + + if (_ticker.CurrentPreset is null) + return; + var currentPreset = _ticker.CurrentPreset!.ID; + + foreach (var prototypeList in uniquePrototypes.Values) + { + // Try to spawn + _random.Shuffle(prototypeList); + foreach (var proto in prototypeList) + { + if (!proto.SpawnGamePreset.Contains(currentPreset)) + continue; + + var chance = _random.NextFloat(0, 1); + if (chance <= proto.SpawnChance) + { + var offset = GetRandomPOICoord(proto.MinimumDistance, proto.MaximumDistance); + + if (TrySpawnPoiGrid(mapUid, proto, offset, out var optionalUid) && optionalUid is { Valid: true } uid) + { + uniqueStations.Add(uid); + AddStationCoordsToSet(offset); + break; + } + } + } + } + } + + private bool TrySpawnPoiGrid(MapId mapUid, PointOfInterestPrototype proto, Vector2 offset, out EntityUid? gridUid, string? overrideName = null) + { + gridUid = null; + if (_map.TryLoad(mapUid, proto.GridPath.ToString(), out var mapUids, + new MapLoadOptions + { + Offset = offset, + Rotation = _random.NextAngle() + })) + { + + string stationName = string.IsNullOrEmpty(overrideName) ? proto.Name : overrideName; + + EntityUid? stationUid = null; + if (_prototypeManager.TryIndex(proto.ID, out var stationProto)) + { + stationUid = _station.InitializeNewStation(stationProto.Stations[proto.ID], mapUids, stationName); + } + + foreach (var grid in mapUids) + { + var meta = EnsureComp(grid); + _meta.SetEntityName(grid, stationName, meta); + + EntityManager.AddComponents(grid, proto.AddComponents); + } + + // Rename warp points after set up if needed + if (proto.NameWarp) + { + bool? hideWarp = proto.HideWarp ? true : null; + if (stationUid != null) + _renameWarps.SyncWarpPointsToStation(stationUid.Value, forceAdminOnly: hideWarp); + else + _renameWarps.SyncWarpPointsToGrids(mapUids, forceAdminOnly: hideWarp); + } + + gridUid = mapUids[0]; + return true; + } + + return false; + } + + private Vector2 GetRandomPOICoord(float unscaledMinRange, float unscaledMaxRange) + { + int numRetries = int.Max(_configurationManager.GetCVar(NFCCVars.POIPlacementRetries), 0); + float minDistance = float.Max(_configurationManager.GetCVar(NFCCVars.MinPOIDistance), 0); // Constant at the end to avoid NaN weirdness + + Vector2 coords = _random.NextVector2(unscaledMinRange, unscaledMaxRange); + for (int i = 0; i < numRetries; i++) + { + bool positionIsValid = true; + foreach (var station in _stationCoords) + { + if (Vector2.Distance(station, coords) < minDistance) + { + positionIsValid = false; + break; + } + } + + // We have a valid position + if (positionIsValid) + break; + + // No vector yet, get next value. + coords = _random.NextVector2(unscaledMinRange, unscaledMaxRange); + } + + return coords; + } +} diff --git a/Content.Server/_NF/Gatherable/Components/MiningGatheringHardComponent.cs b/Content.Server/_NF/Gatherable/Components/MiningGatheringHardComponent.cs new file mode 100644 index 00000000000..56dc31e5d87 --- /dev/null +++ b/Content.Server/_NF/Gatherable/Components/MiningGatheringHardComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Server._NF.Gatherable.Components; + +/// +/// Component denotes an item can be used to gather from hard rocks. +/// +[RegisterComponent] +public sealed partial class MiningGatheringHardComponent : Component; diff --git a/Content.Server/_NF/Gatherable/Components/MiningGatheringSoftComponent.cs b/Content.Server/_NF/Gatherable/Components/MiningGatheringSoftComponent.cs new file mode 100644 index 00000000000..ff66dedb73c --- /dev/null +++ b/Content.Server/_NF/Gatherable/Components/MiningGatheringSoftComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Server._NF.Gatherable.Components; + +/// +/// Component denotes an item can be used to gather from softer rocks. +/// +[RegisterComponent] +public sealed partial class MiningGatheringSoftComponent : Component; diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 6427dbbf734..790b77e1d11 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -163,7 +163,7 @@ public static readonly CVarDef /// Controls the default game preset. /// public static readonly CVarDef - GameLobbyDefaultPreset = CVarDef.Create("game.defaultpreset", "adventure", CVar.ARCHIVE); // Frontier: secret /// Controls if the game can force a different preset if the current preset's criteria are not met. diff --git a/Content.Shared/Construction/SharedFlatpackSystem.cs b/Content.Shared/Construction/SharedFlatpackSystem.cs index a83948b1674..9644800d773 100644 --- a/Content.Shared/Construction/SharedFlatpackSystem.cs +++ b/Content.Shared/Construction/SharedFlatpackSystem.cs @@ -93,6 +93,8 @@ private void OnFlatpackInteractUsing(Entity ent, ref Interact if (_net.IsServer) { var spawn = Spawn(comp.Entity, _map.GridTileToLocal(grid, gridComp, buildPos)); + if (TryComp(spawn, out TransformComponent? spawnXform)) // Frontier: rotatable flatpacks + spawnXform.LocalRotation = xform.LocalRotation.GetCardinalDir().ToAngle(); // Frontier: rotatable flatpacks _adminLogger.Add(LogType.Construction, LogImpact.Low, $"{ToPrettyString(args.User):player} unpacked {ToPrettyString(spawn):entity} at {xform.Coordinates} from {ToPrettyString(uid):entity}"); diff --git a/Content.Shared/Mining/Components/OreVeinComponent.cs b/Content.Shared/Mining/Components/OreVeinComponent.cs index 6ee40a624ec..a26ceaf8915 100644 --- a/Content.Shared/Mining/Components/OreVeinComponent.cs +++ b/Content.Shared/Mining/Components/OreVeinComponent.cs @@ -1,5 +1,6 @@ using Content.Shared.Random; using Robust.Shared.Prototypes; +using Content.Shared.Whitelist; // Frontier namespace Content.Shared.Mining.Components; @@ -28,4 +29,16 @@ public sealed partial class OreVeinComponent : Component /// [DataField] public ProtoId? CurrentOre; + + /// + /// Frontier: if this ore is somehow "ruined", set this to true before destroying the entity. + /// + [DataField] + public bool PreventSpawning; + + /// + /// Frontier: whitelist to check when gathering materials - these entities are too strong and ruin the ore. + /// + [DataField] + public EntityWhitelist? GatherDestructionWhitelist; } diff --git a/Content.Shared/Weapons/Reflect/ReflectComponent.cs b/Content.Shared/Weapons/Reflect/ReflectComponent.cs index ee35f4dbb1f..8418c1f3efb 100644 --- a/Content.Shared/Weapons/Reflect/ReflectComponent.cs +++ b/Content.Shared/Weapons/Reflect/ReflectComponent.cs @@ -14,7 +14,7 @@ public sealed partial class ReflectComponent : Component /// What we reflect. /// [ViewVariables(VVAccess.ReadWrite), DataField("reflects")] - public ReflectType Reflects = ReflectType.Energy | ReflectType.NonEnergy | ReflectType.ShuttleKinetic; // Frontier: added ShuttleKinetic + public ReflectType Reflects = ReflectType.Energy | ReflectType.NonEnergy; /// /// Probability for a projectile to be reflected. @@ -35,5 +35,4 @@ public enum ReflectType : byte None = 0, NonEnergy = 1 << 0, Energy = 1 << 1, - ShuttleKinetic = 1 << 7, //Frontier: PTK-800 } diff --git a/Content.Shared/_EE/CCVar/EECCVars.cs b/Content.Shared/_EE/CCVar/EECCVars.cs index b16d1fa01f0..378559a5037 100644 --- a/Content.Shared/_EE/CCVar/EECCVars.cs +++ b/Content.Shared/_EE/CCVar/EECCVars.cs @@ -1,81 +1,78 @@ -using Robust.Shared; using Robust.Shared.Configuration; -namespace Content.Shared._EE.CCVar +namespace Content.Shared._EE.CCVar; + +[CVarDefs] // ReSharper disable once InconsistentNaming +public sealed class EECCVars { - // ReSharper disable once InconsistentNaming - [CVarDefs] - public sealed class EECCVars : CVars - { - #region Jetpack System + #region Jetpack System - /// - /// When true, Jetpacks can be enabled anywhere, even in gravity. - /// - public static readonly CVarDef JetpackEnableAnywhere = - CVarDef.Create("ee.jetpack.enable_anywhere", false, CVar.REPLICATED); + /// + /// When true, Jetpacks can be enabled anywhere, even in gravity. + /// + public static readonly CVarDef JetpackEnableAnywhere = + CVarDef.Create("ee.jetpack.enable_anywhere", false, CVar.REPLICATED); - /// - /// When true, jetpacks can be enabled on grids that have zero gravity. - /// - public static readonly CVarDef JetpackEnableInNoGravity = - CVarDef.Create("ee.jetpack.enable_in_no_gravity", true, CVar.REPLICATED); + /// + /// When true, jetpacks can be enabled on grids that have zero gravity. + /// + public static readonly CVarDef JetpackEnableInNoGravity = + CVarDef.Create("ee.jetpack.enable_in_no_gravity", true, CVar.REPLICATED); - #endregion + #endregion - #region Contests System + #region Contests System - /// - /// The MASTER TOGGLE for the entire Contests System. - /// ALL CONTESTS BELOW, regardless of type or setting will output 1f when false. - /// - public static readonly CVarDef DoContestsSystem = - CVarDef.Create("contests.do_contests_system", true, CVar.REPLICATED | CVar.SERVER); + /// + /// The MASTER TOGGLE for the entire Contests System. + /// ALL CONTESTS BELOW, regardless of type or setting will output 1f when false. + /// + public static readonly CVarDef DoContestsSystem = + CVarDef.Create("ee.contests.do_contests_system", true, CVar.REPLICATED | CVar.SERVER); - /// - /// Contest functions normally include an optional override to bypass the clamp set by max_percentage. - /// This CVar disables the bypass when false, forcing all implementations to comply with max_percentage. - /// - public static readonly CVarDef AllowClampOverride = - CVarDef.Create("contests.allow_clamp_override", true, CVar.REPLICATED | CVar.SERVER); - /// - /// Toggles all MassContest functions. All mass contests output 1f when false - /// - public static readonly CVarDef DoMassContests = - CVarDef.Create("contests.do_mass_contests", true, CVar.REPLICATED | CVar.SERVER); + /// + /// Contest functions normally include an optional override to bypass the clamp set by max_percentage. + /// This CVar disables the bypass when false, forcing all implementations to comply with max_percentage. + /// + public static readonly CVarDef AllowClampOverride = + CVarDef.Create("ee.contests.allow_clamp_override", true, CVar.REPLICATED | CVar.SERVER); + /// + /// Toggles all MassContest functions. All mass contests output 1f when false + /// + public static readonly CVarDef DoMassContests = + CVarDef.Create("ee.contests.do_mass_contests", true, CVar.REPLICATED | CVar.SERVER); - /// - /// Toggles all StaminaContest functions. All stamina contests output 1f when false - /// - public static readonly CVarDef DoStaminaContests = - CVarDef.Create("contests.do_stamina_contests", true, CVar.REPLICATED | CVar.SERVER); + /// + /// Toggles all StaminaContest functions. All stamina contests output 1f when false + /// + public static readonly CVarDef DoStaminaContests = + CVarDef.Create("ee.contests.do_stamina_contests", true, CVar.REPLICATED | CVar.SERVER); - /// - /// Toggles all HealthContest functions. All health contests output 1f when false - /// - public static readonly CVarDef DoHealthContests = - CVarDef.Create("contests.do_health_contests", true, CVar.REPLICATED | CVar.SERVER); + /// + /// Toggles all HealthContest functions. All health contests output 1f when false + /// + public static readonly CVarDef DoHealthContests = + CVarDef.Create("ee.contests.do_health_contests", true, CVar.REPLICATED | CVar.SERVER); - /// - /// Toggles all MindContest functions. All mind contests output 1f when false. - /// MindContests are not currently implemented, and are awaiting completion of the Psionic Refactor - /// - public static readonly CVarDef DoMindContests = - CVarDef.Create("contests.do_mind_contests", true, CVar.REPLICATED | CVar.SERVER); + /// + /// Toggles all MindContest functions. All mind contests output 1f when false. + /// MindContests are not currently implemented, and are awaiting completion of the Psionic Refactor + /// + public static readonly CVarDef DoMindContests = + CVarDef.Create("ee.contests.do_mind_contests", true, CVar.REPLICATED | CVar.SERVER); - /// - /// Toggles all MoodContest functions. All mood contests output 1f when false. - /// - public static readonly CVarDef DoMoodContests = - CVarDef.Create("contests.do_mood_contests", true, CVar.REPLICATED | CVar.SERVER); + /// + /// Toggles all MoodContest functions. All mood contests output 1f when false. + /// + public static readonly CVarDef DoMoodContests = + CVarDef.Create("ee.contests.do_mood_contests", true, CVar.REPLICATED | CVar.SERVER); - /// - /// The maximum amount that Mass Contests can modify a physics multiplier, given as a +/- percentage - /// Default of 0.25f outputs between * 0.75f and 1.25f - /// - public static readonly CVarDef MassContestsMaxPercentage = - CVarDef.Create("contests.max_percentage", 0.25f, CVar.REPLICATED | CVar.SERVER); + /// + /// The maximum amount that Mass Contests can modify a physics multiplier, given as a +/- percentage + /// Default of 0.25f outputs between * 0.75f and 1.25f + /// + public static readonly CVarDef MassContestsMaxPercentage = + CVarDef.Create("ee.contests.max_percentage", 0.25f, CVar.REPLICATED | CVar.SERVER); - #endregion - } + #endregion } diff --git a/Resources/Changelog/Frontier.yml b/Resources/Changelog/Frontier.yml index fa4e36c83cc..99b83bb1457 100644 --- a/Resources/Changelog/Frontier.yml +++ b/Resources/Changelog/Frontier.yml @@ -6041,3 +6041,72 @@ Entries: message: Alert levels are now sector-wide, with appropriate announcements. id: 5604 time: '2024-12-21T01:12:26.0000000+00:00' +- author: whatston3 + changes: + - type: Fix + message: Emergency lights start in their appropriate state when built. + id: 5605 + time: '2024-12-21T20:28:31.0000000+00:00' +- author: dustylens + changes: + - type: Remove + message: >- + majority of chemistry jugs removed from sale, to be replaced with new + barrels. + id: 5606 + time: '2024-12-21T23:05:32.0000000+00:00' +- author: dvir001 + changes: + - type: Add + message: >- + Added barrels of chems, oil, water, fuel, booze, etc. to wrecks, rare + chems to cargo. + - type: Tweak + message: The ChefVend now contains one jar of each oil. + id: 5607 + time: '2024-12-21T23:06:11.0000000+00:00' +- author: chrome-cirrus + changes: + - type: Tweak + message: >- + Add slots to the Janicart vehicle to give it feature parity with the + janitor trolley and make things more convenient for practicioners of the + janitorial arts + - type: Add + message: Research target that unlocks crafting of Janicart flatpacks + - type: Remove + message: Janicart crates no longer purchaseable at cargo + id: 5608 + time: '2024-12-24T22:38:28.0000000+00:00' +- author: Alkheemist + changes: + - type: Tweak + message: Handicomm mics can now be toggled with an alt-click + id: 5609 + time: '2024-12-24T22:48:18.0000000+00:00' +- author: whatston3 + changes: + - type: Tweak + message: >- + Walls on asteroids can now contain ore denser than regular rocks and + require diamond drills, a holopickaxe, or a PTK to mine. + - type: Tweak + message: >- + PTK bolts destroy ore in softer rock, but "walls" no longer reflect + shots. + id: 5610 + time: '2024-12-24T23:05:02.0000000+00:00' +- author: whatston3 + changes: + - type: Add + message: Flatpacks can be rotated, and respect their rotation when unpacked. + - type: Tweak + message: Soil crates now must be "assembled" with a shovel. + id: 5611 + time: '2024-12-26T00:49:53.0000000+00:00' +- author: whatston3 + changes: + - type: Fix + message: Cargo Depots should be spawning normally now. + id: 5612 + time: '2024-12-26T15:21:56.0000000+00:00' diff --git a/Resources/Locale/en-US/_NF/adventure/adventure.ftl b/Resources/Locale/en-US/_NF/adventure/adventure.ftl index 3e1a1268163..9ee3991db5d 100644 --- a/Resources/Locale/en-US/_NF/adventure/adventure.ftl +++ b/Resources/Locale/en-US/_NF/adventure/adventure.ftl @@ -11,8 +11,12 @@ adventure-webhook-top-loss = lost a total of {$amount}. adventure-webhook-ledger-start = Ledger Summary -adventure-title = New Frontier Adventure Mode -adventure-description = Join a ship crew or buy your own and explore, research, salvage, or haul your way to riches! +nf-adventure-title = Adventure +nf-adventure-description = Join a ship crew or buy your own and explore, research, salvage, or haul your way to riches! + +nf-pirate-title = Pirates +nf-pirate-description = A gang of pirates is on the loose! Take care out in space and try not to get plundered! + currency = Spesos shipyard-rules-default1 = diff --git a/Resources/Locale/en-US/_NF/reagents/labels.ftl b/Resources/Locale/en-US/_NF/reagents/labels.ftl new file mode 100644 index 00000000000..981cbabf836 --- /dev/null +++ b/Resources/Locale/en-US/_NF/reagents/labels.ftl @@ -0,0 +1,49 @@ +# Labels for reagent barrels +# Elements & basic reagents +reagent-label-aluminium = [bold]Aluminium[/bold] +reagent-label-carbon = [bold]Carbon[/bold] +reagent-label-chlorine = [bold]Chlorine[/bold] +reagent-label-copper = [bold]Copper[/bold] +reagent-label-ethanol = [bold]Ethanol[/bold] +reagent-label-fluorine = [bold]Fluorine[/bold] +reagent-label-gold = [bold]Gold[/bold] +reagent-label-hydrogen = [bold]Hydrogen[/bold] +reagent-label-iodine = [bold]Iodine[/bold] +reagent-label-iron = [bold]Iron[/bold] +reagent-label-lithium = [bold]Lithium[/bold] +reagent-label-mercury = [bold]Mercury[/bold] +reagent-label-nitrogen = [bold]Nitrogen[/bold] +reagent-label-oxygen = [bold]Oxygen[/bold] +reagent-label-phosphorus = [bold]Phosphorus[/bold] +reagent-label-potassium = [bold]Potassium[/bold] +reagent-label-radium = [bold]Radium[/bold] +reagent-label-silicon = [bold]Silicon[/bold] +reagent-label-silver = [bold]Silver[/bold] +reagent-label-sodium = [bold]Sodium[/bold] +reagent-label-sugar = [bold]Sugar[/bold] +reagent-label-sulfur = [bold]Sulfur[/bold] +# Service & other reagents +reagent-label-cornoil = [bold]Corn Oil[/bold] +reagent-label-diethylamine = [bold]Diethylamine[/bold] +reagent-label-ketchup = [bold]Ketchup[/bold] +reagent-label-mayo = [bold]Mayonnaise[/bold] +reagent-label-mustard = [bold]Mustard[/bold] +reagent-label-oil = [bold]Oil[/bold] +reagent-label-oil-olive = [bold]Olive Oil[/bold] +reagent-label-space-cleaner = [bold]Space Cleaner[/bold] +reagent-label-space-lube = [bold]Space Lube[/bold] +reagent-label-welding-fuel = [bold]Welding Fuel[/bold] +# Drinks +reagent-label-absinthe = [bold]Absinthe[/bold] +reagent-label-ale = [bold]Ale[/bold] +reagent-label-beer = [bold]Beer[/bold] +reagent-label-coffeeliqueur = [bold]Coffee Liqueur[/bold] +reagent-label-cognac = [bold]Cognac[/bold] +reagent-label-gin = [bold]Gin[/bold] +reagent-label-rum = [bold]Rum[/bold] +reagent-label-tequila = [bold]Tequila[/bold] +reagent-label-vermouth = [bold]Vermouth[/bold] +reagent-label-vodka = [bold]Vodka[/bold] +reagent-label-water = [bold]Water[/bold] +reagent-label-whiskey = [bold]Whiskey[/bold] +reagent-label-wine = [bold]Wine[/bold] diff --git a/Resources/Locale/en-US/_NF/research/technologies.ftl b/Resources/Locale/en-US/_NF/research/technologies.ftl index 5822f98b35a..21d62eeeb52 100644 --- a/Resources/Locale/en-US/_NF/research/technologies.ftl +++ b/Resources/Locale/en-US/_NF/research/technologies.ftl @@ -13,4 +13,5 @@ research-technology-bounty-hunting = Bounty Hunting research-technology-arsenal-style = Punk Gear research-technology-industrial-medicine = Industrial Medicine research-technology-magnets-tech-advanced = Advanced Localized Magnetism -research-technology-magnets-tech-combat = Localized Magnetism Combat Application \ No newline at end of file +research-technology-magnets-tech-combat = Localized Magnetism Combat Application +research-technology-mobile-sanitation = Mobile Sanitation diff --git a/Resources/Locale/en-US/radio/components/handheld-radio-component.ftl b/Resources/Locale/en-US/radio/components/handheld-radio-component.ftl index ad637b0c56d..1933c19a935 100644 --- a/Resources/Locale/en-US/radio/components/handheld-radio-component.ftl +++ b/Resources/Locale/en-US/radio/components/handheld-radio-component.ftl @@ -5,10 +5,13 @@ handheld-radio-component-off-state = off handheld-radio-component-channel-set = Channel set to {$channel} handheld-radio-component-chennel-examine = The current channel is {$channel}. +# Frontier +handheld-radio-component-toggle = Toggle Mic + # Nuclear-14-Start handheld-radio-menu-title = Handheld radio handheld-radio-current-text-frequency = Broadcast frequency handheld-radio-button-text-mic = Mic. handheld-radio-button-text-speaker = Spkr. handheld-radio-flavor-text-left = HandiComms, 1000-3000 kHz -# Nuclear-14-End \ No newline at end of file +# Nuclear-14-End diff --git a/Resources/Maps/_NF/Bluespace/cave.yml b/Resources/Maps/_NF/Bluespace/cave.yml index 04ff8108855..cb81f9a200b 100644 --- a/Resources/Maps/_NF/Bluespace/cave.yml +++ b/Resources/Maps/_NF/Bluespace/cave.yml @@ -1422,6 +1422,163 @@ entities: - type: Transform pos: 3.8538454,4.824911 parent: 1 +- proto: NFRockMineralHardRich + entities: + - uid: 21 + components: + - type: Transform + pos: 9.5,4.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: 10.5,6.5 + parent: 1 + - uid: 81 + components: + - type: Transform + pos: 10.5,4.5 + parent: 1 + - uid: 85 + components: + - type: Transform + pos: 10.5,5.5 + parent: 1 + - uid: 86 + components: + - type: Transform + pos: 9.5,5.5 + parent: 1 + - uid: 87 + components: + - type: Transform + pos: 9.5,6.5 + parent: 1 + - uid: 89 + components: + - type: Transform + pos: -9.5,-2.5 + parent: 1 + - uid: 90 + components: + - type: Transform + pos: -10.5,-1.5 + parent: 1 + - uid: 91 + components: + - type: Transform + pos: 8.5,5.5 + parent: 1 + - uid: 92 + components: + - type: Transform + pos: -11.5,-2.5 + parent: 1 + - uid: 95 + components: + - type: Transform + pos: -9.5,-3.5 + parent: 1 + - uid: 96 + components: + - type: Transform + pos: -10.5,-3.5 + parent: 1 + - uid: 97 + components: + - type: Transform + pos: -10.5,-2.5 + parent: 1 + - uid: 98 + components: + - type: Transform + pos: 5.5,-2.5 + parent: 1 + - uid: 105 + components: + - type: Transform + pos: 4.5,-2.5 + parent: 1 + - uid: 106 + components: + - type: Transform + pos: 4.5,-1.5 + parent: 1 + - uid: 174 + components: + - type: Transform + pos: -6.5,8.5 + parent: 1 + - uid: 175 + components: + - type: Transform + pos: 11.5,6.5 + parent: 1 + - uid: 176 + components: + - type: Transform + pos: 11.5,4.5 + parent: 1 + - uid: 177 + components: + - type: Transform + pos: 12.5,4.5 + parent: 1 + - uid: 178 + components: + - type: Transform + pos: 11.5,5.5 + parent: 1 + - uid: 184 + components: + - type: Transform + pos: 10.5,7.5 + parent: 1 + - uid: 185 + components: + - type: Transform + pos: 11.5,7.5 + parent: 1 + - uid: 212 + components: + - type: Transform + pos: 5.5,-3.5 + parent: 1 + - uid: 213 + components: + - type: Transform + pos: 4.5,-3.5 + parent: 1 + - uid: 215 + components: + - type: Transform + pos: 3.5,-2.5 + parent: 1 + - uid: 225 + components: + - type: Transform + pos: -6.5,9.5 + parent: 1 + - uid: 226 + components: + - type: Transform + pos: -7.5,9.5 + parent: 1 + - uid: 258 + components: + - type: Transform + pos: -13.5,3.5 + parent: 1 + - uid: 259 + components: + - type: Transform + pos: -13.5,2.5 + parent: 1 + - uid: 261 + components: + - type: Transform + pos: -7.5,8.5 + parent: 1 - proto: Pickaxe entities: - uid: 407 @@ -2964,163 +3121,6 @@ entities: - type: Transform pos: -7.5,-12.5 parent: 1 -- proto: WallRockDiamond - entities: - - uid: 21 - components: - - type: Transform - pos: 9.5,4.5 - parent: 1 - - uid: 22 - components: - - type: Transform - pos: 10.5,6.5 - parent: 1 - - uid: 81 - components: - - type: Transform - pos: 10.5,4.5 - parent: 1 - - uid: 85 - components: - - type: Transform - pos: 10.5,5.5 - parent: 1 - - uid: 86 - components: - - type: Transform - pos: 9.5,5.5 - parent: 1 - - uid: 87 - components: - - type: Transform - pos: 9.5,6.5 - parent: 1 - - uid: 89 - components: - - type: Transform - pos: -9.5,-2.5 - parent: 1 - - uid: 90 - components: - - type: Transform - pos: -10.5,-1.5 - parent: 1 - - uid: 91 - components: - - type: Transform - pos: 8.5,5.5 - parent: 1 - - uid: 92 - components: - - type: Transform - pos: -11.5,-2.5 - parent: 1 - - uid: 95 - components: - - type: Transform - pos: -9.5,-3.5 - parent: 1 - - uid: 96 - components: - - type: Transform - pos: -10.5,-3.5 - parent: 1 - - uid: 97 - components: - - type: Transform - pos: -10.5,-2.5 - parent: 1 - - uid: 98 - components: - - type: Transform - pos: 5.5,-2.5 - parent: 1 - - uid: 105 - components: - - type: Transform - pos: 4.5,-2.5 - parent: 1 - - uid: 106 - components: - - type: Transform - pos: 4.5,-1.5 - parent: 1 - - uid: 174 - components: - - type: Transform - pos: -6.5,8.5 - parent: 1 - - uid: 175 - components: - - type: Transform - pos: 11.5,6.5 - parent: 1 - - uid: 176 - components: - - type: Transform - pos: 11.5,4.5 - parent: 1 - - uid: 177 - components: - - type: Transform - pos: 12.5,4.5 - parent: 1 - - uid: 178 - components: - - type: Transform - pos: 11.5,5.5 - parent: 1 - - uid: 184 - components: - - type: Transform - pos: 10.5,7.5 - parent: 1 - - uid: 185 - components: - - type: Transform - pos: 11.5,7.5 - parent: 1 - - uid: 212 - components: - - type: Transform - pos: 5.5,-3.5 - parent: 1 - - uid: 213 - components: - - type: Transform - pos: 4.5,-3.5 - parent: 1 - - uid: 215 - components: - - type: Transform - pos: 3.5,-2.5 - parent: 1 - - uid: 225 - components: - - type: Transform - pos: -6.5,9.5 - parent: 1 - - uid: 226 - components: - - type: Transform - pos: -7.5,9.5 - parent: 1 - - uid: 258 - components: - - type: Transform - pos: -13.5,3.5 - parent: 1 - - uid: 259 - components: - - type: Transform - pos: -13.5,2.5 - parent: 1 - - uid: 261 - components: - - type: Transform - pos: -7.5,8.5 - parent: 1 - proto: WarpPoint entities: - uid: 136 diff --git a/Resources/Maps/_NF/Dungeon/supercompacted.yml b/Resources/Maps/_NF/Dungeon/supercompacted.yml new file mode 100644 index 00000000000..649952f6da6 --- /dev/null +++ b/Resources/Maps/_NF/Dungeon/supercompacted.yml @@ -0,0 +1,3348 @@ +meta: + format: 6 + postmapinit: false +tilemap: + 0: Space + 2: FloorAsteroidSand + 6: FloorAsteroidSandUnvariantized + 5: FloorAsteroidTile + 10: FloorAstroGrass + 15: FloorBasalt + 8: FloorBrokenWood + 14: FloorCaveDrought + 12: FloorChromite + 13: FloorIce + 16: FloorLowDesert + 11: FloorRGlass + 82: FloorShuttleOrange + 1: FloorShuttlePurple + 89: FloorSteel + 9: FloorSteelDamaged + 7: FloorWood + 3: Plating + 4: PlatingAsteroid +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + - type: Transform + - type: Map + mapPaused: True + - type: PhysicsMap + - type: GridTree + - type: MovedGrids + - type: Broadphase + - type: OccluderTree + - type: MapGrid + chunks: + -1,-1: + ind: -1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA + version: 6 + 0,0: + ind: 0,0 + tiles: UgAAAAAAUgAAAAAADAAAAAAADAAAAAAAUgAAAAAAAQAAAAADUgAAAAAAUgAAAAAADAAAAAAADAAAAAAAUgAAAAAAAQAAAAADUgAAAAAAUgAAAAAADAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAADAAAAAAADAAAAAAAUgAAAAAAAQAAAAADUgAAAAAADAAAAAAADAAAAAAADAAAAAAAUgAAAAAAAQAAAAACUgAAAAAADAAAAAAADAAAAAAAUgAAAAAAUgAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAAQAAAAADDAAAAAAADAAAAAAADAAAAAAADAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADAAAAAAADAAAAAAADAAAAAAAUgAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAAQAAAAADUgAAAAAAUgAAAAAADAAAAAAADAAAAAAADAAAAAAAAQAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAUgAAAAAADAAAAAAADAAAAAAAUgAAAAAAUgAAAAAAAQAAAAADUgAAAAAAUgAAAAAAUgAAAAAADAAAAAAADAAAAAAAAQAAAAADUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAQAAAAADAQAAAAACAQAAAAADAQAAAAACAQAAAAACAQAAAAACAQAAAAADAQAAAAADAQAAAAACAQAAAAABAQAAAAAAAQAAAAABAQAAAAABAQAAAAABAQAAAAADAQAAAAABUgAAAAAAUgAAAAAADQAAAAAADQAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAADQAAAAAADQAAAAAAUgAAAAAAAQAAAAABUgAAAAAAUgAAAAAADQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAADQAAAAAADQAAAAAAUgAAAAAAAQAAAAADUgAAAAAADQAAAAAADQAAAAAADQAAAAAAUgAAAAAAAQAAAAACUgAAAAAADQAAAAAADQAAAAAAUgAAAAAAUgAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAUgAAAAAAAQAAAAACUgAAAAAADQAAAAAADQAAAAAADQAAAAAAUgAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAQAAAAADUgAAAAAAUgAAAAAADQAAAAAADQAAAAAADQAAAAAAAQAAAAABDQAAAAAADQAAAAAADQAAAAAADQAAAAAAUgAAAAAADQAAAAAADQAAAAAAUgAAAAAAUgAAAAAAAQAAAAABUgAAAAAAUgAAAAAAUgAAAAAADQAAAAAADQAAAAAAAQAAAAABUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAQAAAAADAQAAAAACAQAAAAAAAQAAAAABAQAAAAADAQAAAAACAQAAAAADAQAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAADAQAAAAABAQAAAAAAAQAAAAABUgAAAAAAUgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAACUgAAAAAAUgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAABUgAAAAAAUgAAAAAABgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAADUgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAACUgAAAAAABgAAAAAABgAAAAAAUgAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAAQAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAACUgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAAQAAAAADUgAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAAAQAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAA + version: 6 + 0,1: + ind: 0,1 + tiles: UgAAAAAABgAAAAAABgAAAAAAUgAAAAAAUgAAAAAAAQAAAAABUgAAAAAAUgAAAAAAUgAAAAAABgAAAAAABgAAAAAAAQAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAQAAAAADAQAAAAABAQAAAAACAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAACAQAAAAABAQAAAAAAAQAAAAADAQAAAAADAQAAAAADAQAAAAABAQAAAAAAAQAAAAABUgAAAAAAUgAAAAAADgAAAAAADgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAADgAAAAAADgAAAAAAUgAAAAAAAQAAAAACUgAAAAAAUgAAAAAADgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAADgAAAAAADgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADgAAAAAADgAAAAAADgAAAAAAUgAAAAAAAQAAAAADUgAAAAAADgAAAAAADgAAAAAAUgAAAAAAUgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADgAAAAAADgAAAAAADgAAAAAAUgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAQAAAAADUgAAAAAAUgAAAAAADgAAAAAADgAAAAAADgAAAAAAAQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAAUgAAAAAADgAAAAAADgAAAAAAUgAAAAAAUgAAAAAAAQAAAAACUgAAAAAAUgAAAAAAUgAAAAAADgAAAAAADgAAAAAAAQAAAAABUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAQAAAAADAQAAAAAAAQAAAAABAQAAAAAAAQAAAAACAQAAAAAAAQAAAAAAAQAAAAACAQAAAAADAQAAAAACAQAAAAAAAQAAAAABAQAAAAAAAQAAAAABAQAAAAACAQAAAAADUgAAAAAAUgAAAAAADwAAAAAADwAAAAAAUgAAAAAAAQAAAAACUgAAAAAAUgAAAAAADwAAAAAADwAAAAAAUgAAAAAAAQAAAAADUgAAAAAAUgAAAAAADwAAAAAAUgAAAAAAUgAAAAAAUgAAAAAADwAAAAAADwAAAAAAUgAAAAAAAQAAAAABUgAAAAAADwAAAAAADwAAAAAADwAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADwAAAAAADwAAAAAAUgAAAAAAUgAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAAQAAAAADDwAAAAAADwAAAAAADwAAAAAADwAAAAAAUgAAAAAAAQAAAAABUgAAAAAADwAAAAAADwAAAAAADwAAAAAAUgAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAAQAAAAAAUgAAAAAAUgAAAAAADwAAAAAADwAAAAAADwAAAAAAAQAAAAADDwAAAAAADwAAAAAADwAAAAAADwAAAAAAUgAAAAAADwAAAAAADwAAAAAAUgAAAAAAUgAAAAAAAQAAAAADUgAAAAAAUgAAAAAAUgAAAAAADwAAAAAADwAAAAAAAQAAAAABUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAQAAAAADAQAAAAACAQAAAAABAQAAAAAAAQAAAAACAQAAAAADAQAAAAAAAQAAAAABAQAAAAABAQAAAAAAAQAAAAAAAQAAAAACAQAAAAADAQAAAAACAQAAAAAAAQAAAAACUgAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAEAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAUgAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAQAAAAABAQAAAAAAAQAAAAACAQAAAAAAAQAAAAADAQAAAAABAQAAAAACAQAAAAACAQAAAAACAQAAAAABAQAAAAABAQAAAAADAQAAAAACAQAAAAACAQAAAAAD + version: 6 + -1,0: + ind: -1,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA + version: 6 + -1,1: + ind: -1,1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAD + version: 6 + 1,-1: + ind: 1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAQAAAAACAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAABAQAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 1,0: + ind: 1,0 + tiles: UgAAAAAAAQAAAAABUgAAAAAAUgAAAAAADAAAAAAAUgAAAAAAUgAAAAAAAQAAAAACUgAAAAAAUgAAAAAAUgAAAAAADAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAQAAAAABUgAAAAAADAAAAAAADAAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADAAAAAAADAAAAAAADAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAADAAAAAAAAQAAAAACUgAAAAAADAAAAAAADAAAAAAADAAAAAAAUgAAAAAAAQAAAAABDAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAAQAAAAAADAAAAAAADAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADAAAAAAADAAAAAAADAAAAAAAUgAAAAAAAQAAAAADUgAAAAAADAAAAAAADAAAAAAADAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAADAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAAQAAAAAAUgAAAAAADAAAAAAAAQAAAAACAQAAAAADAQAAAAAAAQAAAAAAAQAAAAABAQAAAAADAQAAAAADAQAAAAACAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAUgAAAAAAAQAAAAADUgAAAAAAUgAAAAAADQAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAADQAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAQAAAAACUgAAAAAADQAAAAAADQAAAAAAUgAAAAAAUgAAAAAAAQAAAAADUgAAAAAADQAAAAAADQAAAAAADQAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAADQAAAAAAAQAAAAADUgAAAAAADQAAAAAADQAAAAAADQAAAAAAUgAAAAAAAQAAAAACDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAQAAAAAADQAAAAAADQAAAAAAUgAAAAAAAQAAAAACUgAAAAAADQAAAAAADQAAAAAADQAAAAAAUgAAAAAAAQAAAAADUgAAAAAADQAAAAAADQAAAAAADQAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADQAAAAAAUgAAAAAAAQAAAAACUgAAAAAAUgAAAAAAUgAAAAAADQAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAQAAAAAAUgAAAAAADQAAAAAAAQAAAAAAAQAAAAADAQAAAAACAQAAAAABAQAAAAAAAQAAAAABAQAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAUgAAAAAAAQAAAAABUgAAAAAAUgAAAAAABgAAAAAAUgAAAAAAUgAAAAAAAQAAAAADUgAAAAAAUgAAAAAAUgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAQAAAAADUgAAAAAABgAAAAAABgAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAABgAAAAAAAQAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAAQAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAABUgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAACUgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAABgAAAAAA + version: 6 + 1,1: + ind: 1,1 + tiles: UgAAAAAAAQAAAAABUgAAAAAAUgAAAAAAUgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAAQAAAAAAUgAAAAAABgAAAAAAAQAAAAABAQAAAAAAAQAAAAADAQAAAAACAQAAAAACAQAAAAABAQAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAUgAAAAAAAQAAAAACUgAAAAAAUgAAAAAADgAAAAAAUgAAAAAAUgAAAAAAAQAAAAADUgAAAAAAUgAAAAAAUgAAAAAADgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAQAAAAABUgAAAAAADgAAAAAADgAAAAAAUgAAAAAAUgAAAAAAAQAAAAADUgAAAAAADgAAAAAADgAAAAAADgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAADgAAAAAAAQAAAAACUgAAAAAADgAAAAAADgAAAAAADgAAAAAAUgAAAAAAAQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAQAAAAAADgAAAAAADgAAAAAAUgAAAAAAAQAAAAACUgAAAAAADgAAAAAADgAAAAAADgAAAAAAUgAAAAAAAQAAAAACUgAAAAAADgAAAAAADgAAAAAADgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADgAAAAAAUgAAAAAAAQAAAAABUgAAAAAAUgAAAAAAUgAAAAAADgAAAAAAUgAAAAAAAQAAAAADUgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAQAAAAAAUgAAAAAADgAAAAAAAQAAAAAAAQAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAACAQAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAUgAAAAAAAQAAAAABUgAAAAAAUgAAAAAADwAAAAAAUgAAAAAAUgAAAAAAAQAAAAADUgAAAAAAUgAAAAAAUgAAAAAADwAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAQAAAAABUgAAAAAADwAAAAAADwAAAAAAUgAAAAAAUgAAAAAAAQAAAAACUgAAAAAADwAAAAAADwAAAAAADwAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAADwAAAAAAAQAAAAAAUgAAAAAADwAAAAAADwAAAAAADwAAAAAAUgAAAAAAAQAAAAABDwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAAQAAAAAADwAAAAAADwAAAAAAUgAAAAAAAQAAAAABUgAAAAAADwAAAAAADwAAAAAADwAAAAAAUgAAAAAAAQAAAAACUgAAAAAADwAAAAAADwAAAAAADwAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADwAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAADwAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAAQAAAAAAUgAAAAAADwAAAAAAAQAAAAAAAQAAAAADAQAAAAAAAQAAAAABAQAAAAACAQAAAAAAAQAAAAADAQAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAEAAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAA + version: 6 + -1,2: + ind: -1,2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 0,2: + ind: 0,2 + tiles: UgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAAQAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAAQAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAAQAAAAACAQAAAAADAQAAAAADAQAAAAADAQAAAAABAQAAAAACAQAAAAACAQAAAAACAQAAAAADAQAAAAAAAQAAAAADAQAAAAABAQAAAAACAQAAAAACAQAAAAAAUgAAAAAAUgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAABgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAABgAAAAAABgAAAAAAUgAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAAQAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAAAQAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAABgAAAAAABgAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAABgAAAAAABgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAQAAAAADAQAAAAACAQAAAAABAQAAAAADAQAAAAABAQAAAAADAQAAAAABAQAAAAACAQAAAAAAAQAAAAABAQAAAAADAQAAAAAAAQAAAAABAQAAAAAAAQAAAAACAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 1,2: + ind: 1,2 + tiles: EAAAAAAAAQAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAAQAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAAQAAAAAAUgAAAAAAEAAAAAAAAQAAAAABAQAAAAABAQAAAAABAQAAAAACAQAAAAAAAQAAAAAAAQAAAAACAQAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAABgAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAABgAAAAAABgAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAABgAAAAAAAQAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAAQAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAAQAAAAAAUgAAAAAABgAAAAAAAQAAAAAAAQAAAAADAQAAAAAAAQAAAAADAQAAAAADAQAAAAAAAQAAAAABAQAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,-1: + ind: 2,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,0: + ind: 2,0 + tiles: UgAAAAAADAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADAAAAAAADAAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAADAAAAAAAUgAAAAAAAQAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAADAAAAAAADAAAAAAAAQAAAAAAUgAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAADAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAADAAAAAAADAAAAAAADAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAADAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAADAAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAADQAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADQAAAAAADQAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAADQAAAAAAUgAAAAAAAQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAADQAAAAAADQAAAAAAAQAAAAAAUgAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAADQAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAADQAAAAAADQAAAAAADQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAADQAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAADQAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAABgAAAAAABgAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAABgAAAAAABgAAAAAAAQAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,1: + ind: 2,1 + tiles: UgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAADgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADgAAAAAADgAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAUgAAAAAAAQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAADgAAAAAAAQAAAAAAUgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAADgAAAAAADgAAAAAADgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAADgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAADgAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAADwAAAAAAUgAAAAAAAQAAAAAAUgAAAAAADwAAAAAADwAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAAUgAAAAAAAQAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAADwAAAAAAAQAAAAAAUgAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAADwAAAAAADwAAAAAADwAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAADwAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAADwAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,2: + ind: 2,2 + tiles: EAAAAAAAEAAAAAAAEAAAAAAAAQAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAEAAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAABgAAAAAABgAAAAAAUgAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAABgAAAAAABgAAAAAAAQAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAABgAAAAAABgAAAAAABgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAABgAAAAAAUgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: [] + - type: LoadedMap + - type: SpreaderGrid + - type: GridPathfinding +- proto: NFAndesiteMineralHardRich + entities: + - uid: 370 + components: + - type: Transform + pos: 37.5,18.5 + parent: 1 + - uid: 371 + components: + - type: Transform + pos: 37.5,19.5 + parent: 1 + - uid: 372 + components: + - type: Transform + pos: 36.5,19.5 + parent: 1 + - uid: 373 + components: + - type: Transform + pos: 37.5,20.5 + parent: 1 + - uid: 374 + components: + - type: Transform + pos: 38.5,20.5 + parent: 1 + - uid: 375 + components: + - type: Transform + pos: 38.5,19.5 + parent: 1 + - uid: 376 + components: + - type: Transform + pos: 38.5,18.5 + parent: 1 + - uid: 377 + components: + - type: Transform + pos: 39.5,19.5 + parent: 1 + - uid: 378 + components: + - type: Transform + pos: 39.5,20.5 + parent: 1 + - uid: 379 + components: + - type: Transform + pos: 40.5,20.5 + parent: 1 + - uid: 380 + components: + - type: Transform + pos: 40.5,21.5 + parent: 1 + - uid: 381 + components: + - type: Transform + pos: 39.5,21.5 + parent: 1 + - uid: 382 + components: + - type: Transform + pos: 39.5,22.5 + parent: 1 + - uid: 383 + components: + - type: Transform + pos: 38.5,21.5 + parent: 1 + - uid: 384 + components: + - type: Transform + pos: 33.5,18.5 + parent: 1 + - uid: 385 + components: + - type: Transform + pos: 33.5,19.5 + parent: 1 + - uid: 386 + components: + - type: Transform + pos: 32.5,19.5 + parent: 1 + - uid: 387 + components: + - type: Transform + pos: 32.5,20.5 + parent: 1 + - uid: 388 + components: + - type: Transform + pos: 33.5,20.5 + parent: 1 + - uid: 389 + components: + - type: Transform + pos: 34.5,20.5 + parent: 1 + - uid: 390 + components: + - type: Transform + pos: 33.5,21.5 + parent: 1 + - uid: 391 + components: + - type: Transform + pos: 33.5,22.5 + parent: 1 + - uid: 392 + components: + - type: Transform + pos: 32.5,21.5 + parent: 1 + - uid: 393 + components: + - type: Transform + pos: 31.5,21.5 + parent: 1 + - uid: 394 + components: + - type: Transform + pos: 31.5,22.5 + parent: 1 + - uid: 395 + components: + - type: Transform + pos: 31.5,20.5 + parent: 1 + - uid: 396 + components: + - type: Transform + pos: 30.5,20.5 + parent: 1 + - uid: 397 + components: + - type: Transform + pos: 28.5,20.5 + parent: 1 + - uid: 398 + components: + - type: Transform + pos: 27.5,20.5 + parent: 1 + - uid: 399 + components: + - type: Transform + pos: 27.5,19.5 + parent: 1 + - uid: 400 + components: + - type: Transform + pos: 27.5,18.5 + parent: 1 + - uid: 401 + components: + - type: Transform + pos: 26.5,19.5 + parent: 1 + - uid: 402 + components: + - type: Transform + pos: 25.5,19.5 + parent: 1 + - uid: 403 + components: + - type: Transform + pos: 25.5,20.5 + parent: 1 + - uid: 404 + components: + - type: Transform + pos: 24.5,20.5 + parent: 1 + - uid: 405 + components: + - type: Transform + pos: 26.5,20.5 + parent: 1 + - uid: 406 + components: + - type: Transform + pos: 25.5,21.5 + parent: 1 + - uid: 407 + components: + - type: Transform + pos: 26.5,21.5 + parent: 1 + - uid: 408 + components: + - type: Transform + pos: 27.5,21.5 + parent: 1 + - uid: 409 + components: + - type: Transform + pos: 25.5,22.5 + parent: 1 + - uid: 410 + components: + - type: Transform + pos: 26.5,22.5 + parent: 1 + - uid: 411 + components: + - type: Transform + pos: 27.5,22.5 + parent: 1 + - uid: 412 + components: + - type: Transform + pos: 28.5,22.5 + parent: 1 + - uid: 413 + components: + - type: Transform + pos: 20.5,18.5 + parent: 1 + - uid: 414 + components: + - type: Transform + pos: 20.5,19.5 + parent: 1 + - uid: 415 + components: + - type: Transform + pos: 19.5,19.5 + parent: 1 + - uid: 416 + components: + - type: Transform + pos: 19.5,20.5 + parent: 1 + - uid: 417 + components: + - type: Transform + pos: 20.5,20.5 + parent: 1 + - uid: 418 + components: + - type: Transform + pos: 21.5,20.5 + parent: 1 + - uid: 419 + components: + - type: Transform + pos: 21.5,21.5 + parent: 1 + - uid: 420 + components: + - type: Transform + pos: 20.5,21.5 + parent: 1 + - uid: 421 + components: + - type: Transform + pos: 19.5,21.5 + parent: 1 + - uid: 422 + components: + - type: Transform + pos: 21.5,22.5 + parent: 1 + - uid: 423 + components: + - type: Transform + pos: 14.5,18.5 + parent: 1 + - uid: 424 + components: + - type: Transform + pos: 14.5,19.5 + parent: 1 + - uid: 425 + components: + - type: Transform + pos: 13.5,19.5 + parent: 1 + - uid: 426 + components: + - type: Transform + pos: 13.5,20.5 + parent: 1 + - uid: 427 + components: + - type: Transform + pos: 12.5,21.5 + parent: 1 + - uid: 428 + components: + - type: Transform + pos: 13.5,21.5 + parent: 1 + - uid: 429 + components: + - type: Transform + pos: 14.5,21.5 + parent: 1 + - uid: 430 + components: + - type: Transform + pos: 14.5,20.5 + parent: 1 + - uid: 431 + components: + - type: Transform + pos: 15.5,21.5 + parent: 1 + - uid: 432 + components: + - type: Transform + pos: 15.5,20.5 + parent: 1 + - uid: 433 + components: + - type: Transform + pos: 16.5,20.5 + parent: 1 + - uid: 434 + components: + - type: Transform + pos: 9.5,18.5 + parent: 1 + - uid: 435 + components: + - type: Transform + pos: 8.5,18.5 + parent: 1 + - uid: 436 + components: + - type: Transform + pos: 8.5,19.5 + parent: 1 + - uid: 437 + components: + - type: Transform + pos: 9.5,19.5 + parent: 1 + - uid: 438 + components: + - type: Transform + pos: 9.5,20.5 + parent: 1 + - uid: 439 + components: + - type: Transform + pos: 8.5,20.5 + parent: 1 + - uid: 440 + components: + - type: Transform + pos: 7.5,20.5 + parent: 1 + - uid: 441 + components: + - type: Transform + pos: 7.5,19.5 + parent: 1 + - uid: 442 + components: + - type: Transform + pos: 6.5,20.5 + parent: 1 + - uid: 443 + components: + - type: Transform + pos: 8.5,21.5 + parent: 1 + - uid: 444 + components: + - type: Transform + pos: 9.5,21.5 + parent: 1 + - uid: 445 + components: + - type: Transform + pos: 9.5,22.5 + parent: 1 + - uid: 446 + components: + - type: Transform + pos: 10.5,22.5 + parent: 1 + - uid: 447 + components: + - type: Transform + pos: 10.5,21.5 + parent: 1 + - uid: 448 + components: + - type: Transform + pos: 3.5,18.5 + parent: 1 + - uid: 449 + components: + - type: Transform + pos: 2.5,18.5 + parent: 1 + - uid: 450 + components: + - type: Transform + pos: 2.5,19.5 + parent: 1 + - uid: 451 + components: + - type: Transform + pos: 3.5,19.5 + parent: 1 + - uid: 452 + components: + - type: Transform + pos: 3.5,20.5 + parent: 1 + - uid: 453 + components: + - type: Transform + pos: 4.5,20.5 + parent: 1 + - uid: 454 + components: + - type: Transform + pos: 4.5,21.5 + parent: 1 + - uid: 455 + components: + - type: Transform + pos: 3.5,21.5 + parent: 1 + - uid: 456 + components: + - type: Transform + pos: 2.5,21.5 + parent: 1 + - uid: 457 + components: + - type: Transform + pos: 2.5,22.5 + parent: 1 + - uid: 458 + components: + - type: Transform + pos: 1.5,22.5 + parent: 1 + - uid: 459 + components: + - type: Transform + pos: 1.5,21.5 + parent: 1 + - uid: 460 + components: + - type: Transform + pos: 1.5,20.5 + parent: 1 + - uid: 461 + components: + - type: Transform + pos: 2.5,20.5 + parent: 1 +- proto: NFAsteroidMineralHardRich + entities: + - uid: 186 + components: + - type: Transform + pos: 38.5,14.5 + parent: 1 + - uid: 187 + components: + - type: Transform + pos: 38.5,13.5 + parent: 1 + - uid: 188 + components: + - type: Transform + pos: 38.5,12.5 + parent: 1 + - uid: 189 + components: + - type: Transform + pos: 38.5,15.5 + parent: 1 + - uid: 190 + components: + - type: Transform + pos: 39.5,13.5 + parent: 1 + - uid: 191 + components: + - type: Transform + pos: 39.5,15.5 + parent: 1 + - uid: 192 + components: + - type: Transform + pos: 39.5,16.5 + parent: 1 + - uid: 193 + components: + - type: Transform + pos: 40.5,14.5 + parent: 1 + - uid: 194 + components: + - type: Transform + pos: 40.5,15.5 + parent: 1 + - uid: 195 + components: + - type: Transform + pos: 39.5,14.5 + parent: 1 + - uid: 196 + components: + - type: Transform + pos: 37.5,13.5 + parent: 1 + - uid: 197 + components: + - type: Transform + pos: 37.5,14.5 + parent: 1 + - uid: 198 + components: + - type: Transform + pos: 37.5,12.5 + parent: 1 + - uid: 199 + components: + - type: Transform + pos: 36.5,13.5 + parent: 1 + - uid: 200 + components: + - type: Transform + pos: 31.5,16.5 + parent: 1 + - uid: 201 + components: + - type: Transform + pos: 31.5,15.5 + parent: 1 + - uid: 202 + components: + - type: Transform + pos: 32.5,15.5 + parent: 1 + - uid: 203 + components: + - type: Transform + pos: 33.5,16.5 + parent: 1 + - uid: 204 + components: + - type: Transform + pos: 33.5,15.5 + parent: 1 + - uid: 205 + components: + - type: Transform + pos: 32.5,14.5 + parent: 1 + - uid: 206 + components: + - type: Transform + pos: 32.5,13.5 + parent: 1 + - uid: 207 + components: + - type: Transform + pos: 33.5,13.5 + parent: 1 + - uid: 208 + components: + - type: Transform + pos: 34.5,14.5 + parent: 1 + - uid: 209 + components: + - type: Transform + pos: 33.5,14.5 + parent: 1 + - uid: 210 + components: + - type: Transform + pos: 33.5,12.5 + parent: 1 + - uid: 211 + components: + - type: Transform + pos: 27.5,12.5 + parent: 1 + - uid: 212 + components: + - type: Transform + pos: 30.5,14.5 + parent: 1 + - uid: 213 + components: + - type: Transform + pos: 31.5,14.5 + parent: 1 + - uid: 214 + components: + - type: Transform + pos: 27.5,13.5 + parent: 1 + - uid: 215 + components: + - type: Transform + pos: 28.5,14.5 + parent: 1 + - uid: 216 + components: + - type: Transform + pos: 27.5,14.5 + parent: 1 + - uid: 217 + components: + - type: Transform + pos: 27.5,15.5 + parent: 1 + - uid: 218 + components: + - type: Transform + pos: 28.5,16.5 + parent: 1 + - uid: 219 + components: + - type: Transform + pos: 26.5,16.5 + parent: 1 + - uid: 220 + components: + - type: Transform + pos: 27.5,16.5 + parent: 1 + - uid: 221 + components: + - type: Transform + pos: 25.5,16.5 + parent: 1 + - uid: 222 + components: + - type: Transform + pos: 26.5,15.5 + parent: 1 + - uid: 223 + components: + - type: Transform + pos: 25.5,15.5 + parent: 1 + - uid: 224 + components: + - type: Transform + pos: 26.5,14.5 + parent: 1 + - uid: 225 + components: + - type: Transform + pos: 25.5,13.5 + parent: 1 + - uid: 226 + components: + - type: Transform + pos: 21.5,16.5 + parent: 1 + - uid: 227 + components: + - type: Transform + pos: 24.5,14.5 + parent: 1 + - uid: 228 + components: + - type: Transform + pos: 26.5,13.5 + parent: 1 + - uid: 229 + components: + - type: Transform + pos: 25.5,14.5 + parent: 1 + - uid: 230 + components: + - type: Transform + pos: 20.5,14.5 + parent: 1 + - uid: 231 + components: + - type: Transform + pos: 19.5,15.5 + parent: 1 + - uid: 232 + components: + - type: Transform + pos: 20.5,15.5 + parent: 1 + - uid: 233 + components: + - type: Transform + pos: 21.5,14.5 + parent: 1 + - uid: 234 + components: + - type: Transform + pos: 21.5,15.5 + parent: 1 + - uid: 235 + components: + - type: Transform + pos: 19.5,14.5 + parent: 1 + - uid: 236 + components: + - type: Transform + pos: 20.5,12.5 + parent: 1 + - uid: 237 + components: + - type: Transform + pos: 12.5,15.5 + parent: 1 + - uid: 238 + components: + - type: Transform + pos: 13.5,15.5 + parent: 1 + - uid: 239 + components: + - type: Transform + pos: 10.5,15.5 + parent: 1 + - uid: 240 + components: + - type: Transform + pos: 13.5,14.5 + parent: 1 + - uid: 241 + components: + - type: Transform + pos: 14.5,13.5 + parent: 1 + - uid: 242 + components: + - type: Transform + pos: 13.5,13.5 + parent: 1 + - uid: 243 + components: + - type: Transform + pos: 14.5,12.5 + parent: 1 + - uid: 244 + components: + - type: Transform + pos: 14.5,15.5 + parent: 1 + - uid: 245 + components: + - type: Transform + pos: 14.5,14.5 + parent: 1 + - uid: 246 + components: + - type: Transform + pos: 16.5,14.5 + parent: 1 + - uid: 247 + components: + - type: Transform + pos: 15.5,14.5 + parent: 1 + - uid: 248 + components: + - type: Transform + pos: 19.5,13.5 + parent: 1 + - uid: 249 + components: + - type: Transform + pos: 15.5,15.5 + parent: 1 + - uid: 250 + components: + - type: Transform + pos: 20.5,13.5 + parent: 1 + - uid: 251 + components: + - type: Transform + pos: 10.5,16.5 + parent: 1 + - uid: 252 + components: + - type: Transform + pos: 9.5,16.5 + parent: 1 + - uid: 253 + components: + - type: Transform + pos: 9.5,15.5 + parent: 1 + - uid: 254 + components: + - type: Transform + pos: 8.5,15.5 + parent: 1 + - uid: 255 + components: + - type: Transform + pos: 9.5,14.5 + parent: 1 + - uid: 256 + components: + - type: Transform + pos: 8.5,14.5 + parent: 1 + - uid: 257 + components: + - type: Transform + pos: 9.5,13.5 + parent: 1 + - uid: 258 + components: + - type: Transform + pos: 9.5,12.5 + parent: 1 + - uid: 259 + components: + - type: Transform + pos: 8.5,12.5 + parent: 1 + - uid: 260 + components: + - type: Transform + pos: 8.5,13.5 + parent: 1 + - uid: 261 + components: + - type: Transform + pos: 7.5,14.5 + parent: 1 + - uid: 262 + components: + - type: Transform + pos: 7.5,13.5 + parent: 1 + - uid: 263 + components: + - type: Transform + pos: 6.5,14.5 + parent: 1 + - uid: 264 + components: + - type: Transform + pos: 1.5,16.5 + parent: 1 + - uid: 265 + components: + - type: Transform + pos: 2.5,16.5 + parent: 1 + - uid: 266 + components: + - type: Transform + pos: 4.5,15.5 + parent: 1 + - uid: 267 + components: + - type: Transform + pos: 3.5,15.5 + parent: 1 + - uid: 268 + components: + - type: Transform + pos: 3.5,14.5 + parent: 1 + - uid: 269 + components: + - type: Transform + pos: 2.5,13.5 + parent: 1 + - uid: 270 + components: + - type: Transform + pos: 1.5,14.5 + parent: 1 + - uid: 271 + components: + - type: Transform + pos: 2.5,14.5 + parent: 1 + - uid: 272 + components: + - type: Transform + pos: 4.5,14.5 + parent: 1 + - uid: 273 + components: + - type: Transform + pos: 2.5,15.5 + parent: 1 + - uid: 274 + components: + - type: Transform + pos: 1.5,15.5 + parent: 1 + - uid: 275 + components: + - type: Transform + pos: 2.5,12.5 + parent: 1 + - uid: 276 + components: + - type: Transform + pos: 3.5,12.5 + parent: 1 + - uid: 277 + components: + - type: Transform + pos: 3.5,13.5 + parent: 1 +- proto: NFBasaltMineralHardRich + entities: + - uid: 278 + components: + - type: Transform + pos: 2.5,24.5 + parent: 1 + - uid: 279 + components: + - type: Transform + pos: 2.5,25.5 + parent: 1 + - uid: 280 + components: + - type: Transform + pos: 3.5,25.5 + parent: 1 + - uid: 281 + components: + - type: Transform + pos: 3.5,24.5 + parent: 1 + - uid: 282 + components: + - type: Transform + pos: 3.5,26.5 + parent: 1 + - uid: 283 + components: + - type: Transform + pos: 4.5,26.5 + parent: 1 + - uid: 284 + components: + - type: Transform + pos: 4.5,27.5 + parent: 1 + - uid: 285 + components: + - type: Transform + pos: 3.5,27.5 + parent: 1 + - uid: 286 + components: + - type: Transform + pos: 2.5,26.5 + parent: 1 + - uid: 287 + components: + - type: Transform + pos: 1.5,26.5 + parent: 1 + - uid: 288 + components: + - type: Transform + pos: 1.5,27.5 + parent: 1 + - uid: 289 + components: + - type: Transform + pos: 2.5,27.5 + parent: 1 + - uid: 290 + components: + - type: Transform + pos: 2.5,28.5 + parent: 1 + - uid: 291 + components: + - type: Transform + pos: 1.5,28.5 + parent: 1 + - uid: 292 + components: + - type: Transform + pos: 6.5,26.5 + parent: 1 + - uid: 293 + components: + - type: Transform + pos: 7.5,26.5 + parent: 1 + - uid: 294 + components: + - type: Transform + pos: 7.5,25.5 + parent: 1 + - uid: 295 + components: + - type: Transform + pos: 8.5,24.5 + parent: 1 + - uid: 296 + components: + - type: Transform + pos: 8.5,25.5 + parent: 1 + - uid: 297 + components: + - type: Transform + pos: 9.5,25.5 + parent: 1 + - uid: 298 + components: + - type: Transform + pos: 9.5,24.5 + parent: 1 + - uid: 299 + components: + - type: Transform + pos: 9.5,26.5 + parent: 1 + - uid: 300 + components: + - type: Transform + pos: 8.5,26.5 + parent: 1 + - uid: 301 + components: + - type: Transform + pos: 8.5,27.5 + parent: 1 + - uid: 302 + components: + - type: Transform + pos: 9.5,27.5 + parent: 1 + - uid: 303 + components: + - type: Transform + pos: 9.5,28.5 + parent: 1 + - uid: 304 + components: + - type: Transform + pos: 10.5,28.5 + parent: 1 + - uid: 305 + components: + - type: Transform + pos: 10.5,27.5 + parent: 1 + - uid: 306 + components: + - type: Transform + pos: 12.5,27.5 + parent: 1 + - uid: 307 + components: + - type: Transform + pos: 13.5,27.5 + parent: 1 + - uid: 308 + components: + - type: Transform + pos: 13.5,26.5 + parent: 1 + - uid: 309 + components: + - type: Transform + pos: 14.5,26.5 + parent: 1 + - uid: 310 + components: + - type: Transform + pos: 14.5,27.5 + parent: 1 + - uid: 311 + components: + - type: Transform + pos: 15.5,27.5 + parent: 1 + - uid: 312 + components: + - type: Transform + pos: 15.5,26.5 + parent: 1 + - uid: 313 + components: + - type: Transform + pos: 16.5,26.5 + parent: 1 + - uid: 314 + components: + - type: Transform + pos: 13.5,25.5 + parent: 1 + - uid: 315 + components: + - type: Transform + pos: 14.5,25.5 + parent: 1 + - uid: 316 + components: + - type: Transform + pos: 14.5,24.5 + parent: 1 + - uid: 317 + components: + - type: Transform + pos: 20.5,24.5 + parent: 1 + - uid: 318 + components: + - type: Transform + pos: 20.5,25.5 + parent: 1 + - uid: 319 + components: + - type: Transform + pos: 19.5,25.5 + parent: 1 + - uid: 320 + components: + - type: Transform + pos: 19.5,26.5 + parent: 1 + - uid: 321 + components: + - type: Transform + pos: 19.5,27.5 + parent: 1 + - uid: 322 + components: + - type: Transform + pos: 20.5,27.5 + parent: 1 + - uid: 323 + components: + - type: Transform + pos: 20.5,26.5 + parent: 1 + - uid: 324 + components: + - type: Transform + pos: 21.5,26.5 + parent: 1 + - uid: 325 + components: + - type: Transform + pos: 21.5,27.5 + parent: 1 + - uid: 326 + components: + - type: Transform + pos: 21.5,28.5 + parent: 1 + - uid: 327 + components: + - type: Transform + pos: 24.5,26.5 + parent: 1 + - uid: 328 + components: + - type: Transform + pos: 25.5,26.5 + parent: 1 + - uid: 329 + components: + - type: Transform + pos: 25.5,25.5 + parent: 1 + - uid: 330 + components: + - type: Transform + pos: 26.5,25.5 + parent: 1 + - uid: 331 + components: + - type: Transform + pos: 27.5,25.5 + parent: 1 + - uid: 332 + components: + - type: Transform + pos: 27.5,24.5 + parent: 1 + - uid: 333 + components: + - type: Transform + pos: 28.5,26.5 + parent: 1 + - uid: 334 + components: + - type: Transform + pos: 27.5,26.5 + parent: 1 + - uid: 335 + components: + - type: Transform + pos: 26.5,26.5 + parent: 1 + - uid: 336 + components: + - type: Transform + pos: 26.5,27.5 + parent: 1 + - uid: 337 + components: + - type: Transform + pos: 27.5,27.5 + parent: 1 + - uid: 338 + components: + - type: Transform + pos: 27.5,28.5 + parent: 1 + - uid: 339 + components: + - type: Transform + pos: 28.5,28.5 + parent: 1 + - uid: 340 + components: + - type: Transform + pos: 26.5,28.5 + parent: 1 + - uid: 341 + components: + - type: Transform + pos: 25.5,28.5 + parent: 1 + - uid: 342 + components: + - type: Transform + pos: 25.5,27.5 + parent: 1 + - uid: 343 + components: + - type: Transform + pos: 30.5,26.5 + parent: 1 + - uid: 344 + components: + - type: Transform + pos: 31.5,26.5 + parent: 1 + - uid: 345 + components: + - type: Transform + pos: 31.5,27.5 + parent: 1 + - uid: 346 + components: + - type: Transform + pos: 31.5,28.5 + parent: 1 + - uid: 347 + components: + - type: Transform + pos: 32.5,27.5 + parent: 1 + - uid: 348 + components: + - type: Transform + pos: 32.5,26.5 + parent: 1 + - uid: 349 + components: + - type: Transform + pos: 32.5,25.5 + parent: 1 + - uid: 350 + components: + - type: Transform + pos: 33.5,25.5 + parent: 1 + - uid: 351 + components: + - type: Transform + pos: 33.5,24.5 + parent: 1 + - uid: 352 + components: + - type: Transform + pos: 33.5,26.5 + parent: 1 + - uid: 353 + components: + - type: Transform + pos: 34.5,26.5 + parent: 1 + - uid: 354 + components: + - type: Transform + pos: 33.5,27.5 + parent: 1 + - uid: 355 + components: + - type: Transform + pos: 33.5,28.5 + parent: 1 + - uid: 356 + components: + - type: Transform + pos: 36.5,25.5 + parent: 1 + - uid: 357 + components: + - type: Transform + pos: 37.5,25.5 + parent: 1 + - uid: 358 + components: + - type: Transform + pos: 37.5,24.5 + parent: 1 + - uid: 359 + components: + - type: Transform + pos: 38.5,24.5 + parent: 1 + - uid: 360 + components: + - type: Transform + pos: 38.5,25.5 + parent: 1 + - uid: 361 + components: + - type: Transform + pos: 39.5,25.5 + parent: 1 + - uid: 362 + components: + - type: Transform + pos: 37.5,26.5 + parent: 1 + - uid: 363 + components: + - type: Transform + pos: 38.5,26.5 + parent: 1 + - uid: 364 + components: + - type: Transform + pos: 38.5,27.5 + parent: 1 + - uid: 365 + components: + - type: Transform + pos: 39.5,28.5 + parent: 1 + - uid: 366 + components: + - type: Transform + pos: 39.5,27.5 + parent: 1 + - uid: 367 + components: + - type: Transform + pos: 39.5,26.5 + parent: 1 + - uid: 368 + components: + - type: Transform + pos: 40.5,26.5 + parent: 1 + - uid: 369 + components: + - type: Transform + pos: 40.5,27.5 + parent: 1 +- proto: NFChromiteMineralHardRich + entities: + - uid: 2 + components: + - type: Transform + pos: 2.5,0.5 + parent: 1 + - uid: 3 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: 2.5,1.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: 4.5,2.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: 4.5,3.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: 2.5,3.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: 2.5,2.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: 1.5,3.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: 1.5,4.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: 2.5,4.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: 6.5,2.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: 7.5,2.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: 7.5,1.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: 8.5,1.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: 8.5,0.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: 9.5,0.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: 9.5,1.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: 9.5,2.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: 8.5,2.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 8.5,3.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: 9.5,3.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: 9.5,4.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: 10.5,4.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: 10.5,3.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: 12.5,3.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: 13.5,3.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: 13.5,2.5 + parent: 1 + - uid: 33 + components: + - type: Transform + pos: 13.5,1.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: 14.5,0.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: 14.5,1.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: 14.5,2.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: 14.5,3.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: 15.5,3.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: 15.5,2.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: 16.5,2.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: 20.5,0.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: 20.5,1.5 + parent: 1 + - uid: 43 + components: + - type: Transform + pos: 19.5,1.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: 19.5,2.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: 19.5,3.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: 20.5,3.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: 20.5,2.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: 21.5,2.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: 21.5,3.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: 21.5,4.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: 24.5,2.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: 25.5,2.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: 25.5,1.5 + parent: 1 + - uid: 54 + components: + - type: Transform + pos: 26.5,1.5 + parent: 1 + - uid: 55 + components: + - type: Transform + pos: 27.5,0.5 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: 27.5,1.5 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: 27.5,2.5 + parent: 1 + - uid: 58 + components: + - type: Transform + pos: 28.5,2.5 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: 26.5,2.5 + parent: 1 + - uid: 60 + components: + - type: Transform + pos: 27.5,3.5 + parent: 1 + - uid: 61 + components: + - type: Transform + pos: 26.5,3.5 + parent: 1 + - uid: 62 + components: + - type: Transform + pos: 25.5,3.5 + parent: 1 + - uid: 63 + components: + - type: Transform + pos: 25.5,4.5 + parent: 1 + - uid: 64 + components: + - type: Transform + pos: 26.5,4.5 + parent: 1 + - uid: 65 + components: + - type: Transform + pos: 27.5,4.5 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: 28.5,4.5 + parent: 1 + - uid: 67 + components: + - type: Transform + pos: 30.5,2.5 + parent: 1 + - uid: 68 + components: + - type: Transform + pos: 31.5,4.5 + parent: 1 + - uid: 69 + components: + - type: Transform + pos: 31.5,3.5 + parent: 1 + - uid: 70 + components: + - type: Transform + pos: 31.5,2.5 + parent: 1 + - uid: 71 + components: + - type: Transform + pos: 32.5,3.5 + parent: 1 + - uid: 72 + components: + - type: Transform + pos: 32.5,2.5 + parent: 1 + - uid: 73 + components: + - type: Transform + pos: 32.5,1.5 + parent: 1 + - uid: 74 + components: + - type: Transform + pos: 33.5,0.5 + parent: 1 + - uid: 75 + components: + - type: Transform + pos: 33.5,1.5 + parent: 1 + - uid: 76 + components: + - type: Transform + pos: 33.5,2.5 + parent: 1 + - uid: 77 + components: + - type: Transform + pos: 34.5,2.5 + parent: 1 + - uid: 78 + components: + - type: Transform + pos: 33.5,3.5 + parent: 1 + - uid: 79 + components: + - type: Transform + pos: 33.5,4.5 + parent: 1 + - uid: 80 + components: + - type: Transform + pos: 37.5,0.5 + parent: 1 + - uid: 81 + components: + - type: Transform + pos: 36.5,1.5 + parent: 1 + - uid: 82 + components: + - type: Transform + pos: 37.5,1.5 + parent: 1 + - uid: 83 + components: + - type: Transform + pos: 37.5,2.5 + parent: 1 + - uid: 84 + components: + - type: Transform + pos: 38.5,2.5 + parent: 1 + - uid: 85 + components: + - type: Transform + pos: 38.5,1.5 + parent: 1 + - uid: 86 + components: + - type: Transform + pos: 38.5,0.5 + parent: 1 + - uid: 87 + components: + - type: Transform + pos: 39.5,1.5 + parent: 1 + - uid: 88 + components: + - type: Transform + pos: 39.5,2.5 + parent: 1 + - uid: 89 + components: + - type: Transform + pos: 40.5,2.5 + parent: 1 + - uid: 90 + components: + - type: Transform + pos: 40.5,3.5 + parent: 1 + - uid: 91 + components: + - type: Transform + pos: 39.5,3.5 + parent: 1 + - uid: 92 + components: + - type: Transform + pos: 39.5,4.5 + parent: 1 + - uid: 93 + components: + - type: Transform + pos: 38.5,3.5 + parent: 1 +- proto: NFIceMineralHardRich + entities: + - uid: 94 + components: + - type: Transform + pos: 36.5,7.5 + parent: 1 + - uid: 95 + components: + - type: Transform + pos: 37.5,7.5 + parent: 1 + - uid: 96 + components: + - type: Transform + pos: 37.5,6.5 + parent: 1 + - uid: 97 + components: + - type: Transform + pos: 38.5,6.5 + parent: 1 + - uid: 98 + components: + - type: Transform + pos: 38.5,7.5 + parent: 1 + - uid: 99 + components: + - type: Transform + pos: 39.5,7.5 + parent: 1 + - uid: 100 + components: + - type: Transform + pos: 39.5,8.5 + parent: 1 + - uid: 101 + components: + - type: Transform + pos: 38.5,8.5 + parent: 1 + - uid: 102 + components: + - type: Transform + pos: 37.5,8.5 + parent: 1 + - uid: 103 + components: + - type: Transform + pos: 38.5,9.5 + parent: 1 + - uid: 104 + components: + - type: Transform + pos: 39.5,9.5 + parent: 1 + - uid: 105 + components: + - type: Transform + pos: 40.5,9.5 + parent: 1 + - uid: 106 + components: + - type: Transform + pos: 40.5,8.5 + parent: 1 + - uid: 107 + components: + - type: Transform + pos: 39.5,10.5 + parent: 1 + - uid: 108 + components: + - type: Transform + pos: 33.5,6.5 + parent: 1 + - uid: 109 + components: + - type: Transform + pos: 33.5,7.5 + parent: 1 + - uid: 110 + components: + - type: Transform + pos: 32.5,7.5 + parent: 1 + - uid: 111 + components: + - type: Transform + pos: 34.5,8.5 + parent: 1 + - uid: 112 + components: + - type: Transform + pos: 33.5,8.5 + parent: 1 + - uid: 113 + components: + - type: Transform + pos: 33.5,9.5 + parent: 1 + - uid: 114 + components: + - type: Transform + pos: 33.5,10.5 + parent: 1 + - uid: 115 + components: + - type: Transform + pos: 32.5,9.5 + parent: 1 + - uid: 116 + components: + - type: Transform + pos: 32.5,8.5 + parent: 1 + - uid: 117 + components: + - type: Transform + pos: 31.5,8.5 + parent: 1 + - uid: 118 + components: + - type: Transform + pos: 31.5,9.5 + parent: 1 + - uid: 119 + components: + - type: Transform + pos: 30.5,8.5 + parent: 1 + - uid: 120 + components: + - type: Transform + pos: 31.5,10.5 + parent: 1 + - uid: 121 + components: + - type: Transform + pos: 27.5,6.5 + parent: 1 + - uid: 122 + components: + - type: Transform + pos: 27.5,7.5 + parent: 1 + - uid: 123 + components: + - type: Transform + pos: 25.5,7.5 + parent: 1 + - uid: 124 + components: + - type: Transform + pos: 26.5,7.5 + parent: 1 + - uid: 125 + components: + - type: Transform + pos: 26.5,8.5 + parent: 1 + - uid: 126 + components: + - type: Transform + pos: 25.5,8.5 + parent: 1 + - uid: 127 + components: + - type: Transform + pos: 24.5,8.5 + parent: 1 + - uid: 128 + components: + - type: Transform + pos: 25.5,9.5 + parent: 1 + - uid: 129 + components: + - type: Transform + pos: 25.5,10.5 + parent: 1 + - uid: 130 + components: + - type: Transform + pos: 26.5,10.5 + parent: 1 + - uid: 131 + components: + - type: Transform + pos: 26.5,9.5 + parent: 1 + - uid: 132 + components: + - type: Transform + pos: 27.5,9.5 + parent: 1 + - uid: 133 + components: + - type: Transform + pos: 27.5,8.5 + parent: 1 + - uid: 134 + components: + - type: Transform + pos: 28.5,8.5 + parent: 1 + - uid: 135 + components: + - type: Transform + pos: 27.5,10.5 + parent: 1 + - uid: 136 + components: + - type: Transform + pos: 28.5,10.5 + parent: 1 + - uid: 137 + components: + - type: Transform + pos: 20.5,6.5 + parent: 1 + - uid: 138 + components: + - type: Transform + pos: 20.5,7.5 + parent: 1 + - uid: 139 + components: + - type: Transform + pos: 19.5,7.5 + parent: 1 + - uid: 140 + components: + - type: Transform + pos: 19.5,8.5 + parent: 1 + - uid: 141 + components: + - type: Transform + pos: 20.5,8.5 + parent: 1 + - uid: 142 + components: + - type: Transform + pos: 21.5,8.5 + parent: 1 + - uid: 143 + components: + - type: Transform + pos: 21.5,9.5 + parent: 1 + - uid: 144 + components: + - type: Transform + pos: 20.5,9.5 + parent: 1 + - uid: 145 + components: + - type: Transform + pos: 19.5,9.5 + parent: 1 + - uid: 146 + components: + - type: Transform + pos: 21.5,10.5 + parent: 1 + - uid: 147 + components: + - type: Transform + pos: 14.5,6.5 + parent: 1 + - uid: 148 + components: + - type: Transform + pos: 14.5,7.5 + parent: 1 + - uid: 149 + components: + - type: Transform + pos: 13.5,7.5 + parent: 1 + - uid: 150 + components: + - type: Transform + pos: 13.5,8.5 + parent: 1 + - uid: 151 + components: + - type: Transform + pos: 14.5,8.5 + parent: 1 + - uid: 152 + components: + - type: Transform + pos: 16.5,8.5 + parent: 1 + - uid: 153 + components: + - type: Transform + pos: 15.5,8.5 + parent: 1 + - uid: 154 + components: + - type: Transform + pos: 15.5,9.5 + parent: 1 + - uid: 155 + components: + - type: Transform + pos: 14.5,9.5 + parent: 1 + - uid: 156 + components: + - type: Transform + pos: 13.5,9.5 + parent: 1 + - uid: 157 + components: + - type: Transform + pos: 12.5,9.5 + parent: 1 + - uid: 158 + components: + - type: Transform + pos: 8.5,6.5 + parent: 1 + - uid: 159 + components: + - type: Transform + pos: 9.5,6.5 + parent: 1 + - uid: 160 + components: + - type: Transform + pos: 9.5,7.5 + parent: 1 + - uid: 161 + components: + - type: Transform + pos: 8.5,7.5 + parent: 1 + - uid: 162 + components: + - type: Transform + pos: 7.5,7.5 + parent: 1 + - uid: 163 + components: + - type: Transform + pos: 6.5,8.5 + parent: 1 + - uid: 164 + components: + - type: Transform + pos: 7.5,8.5 + parent: 1 + - uid: 165 + components: + - type: Transform + pos: 8.5,8.5 + parent: 1 + - uid: 166 + components: + - type: Transform + pos: 9.5,8.5 + parent: 1 + - uid: 167 + components: + - type: Transform + pos: 8.5,9.5 + parent: 1 + - uid: 168 + components: + - type: Transform + pos: 9.5,9.5 + parent: 1 + - uid: 169 + components: + - type: Transform + pos: 9.5,10.5 + parent: 1 + - uid: 170 + components: + - type: Transform + pos: 10.5,10.5 + parent: 1 + - uid: 171 + components: + - type: Transform + pos: 10.5,9.5 + parent: 1 + - uid: 172 + components: + - type: Transform + pos: 2.5,6.5 + parent: 1 + - uid: 173 + components: + - type: Transform + pos: 3.5,6.5 + parent: 1 + - uid: 174 + components: + - type: Transform + pos: 3.5,7.5 + parent: 1 + - uid: 175 + components: + - type: Transform + pos: 2.5,7.5 + parent: 1 + - uid: 176 + components: + - type: Transform + pos: 1.5,8.5 + parent: 1 + - uid: 177 + components: + - type: Transform + pos: 2.5,8.5 + parent: 1 + - uid: 178 + components: + - type: Transform + pos: 2.5,9.5 + parent: 1 + - uid: 179 + components: + - type: Transform + pos: 1.5,9.5 + parent: 1 + - uid: 180 + components: + - type: Transform + pos: 1.5,10.5 + parent: 1 + - uid: 181 + components: + - type: Transform + pos: 2.5,10.5 + parent: 1 + - uid: 182 + components: + - type: Transform + pos: 3.5,9.5 + parent: 1 + - uid: 183 + components: + - type: Transform + pos: 3.5,8.5 + parent: 1 + - uid: 184 + components: + - type: Transform + pos: 4.5,8.5 + parent: 1 + - uid: 185 + components: + - type: Transform + pos: 4.5,9.5 + parent: 1 +- proto: NFRockMineralHardRich + entities: + - uid: 546 + components: + - type: Transform + pos: 40.5,38.5 + parent: 1 + - uid: 553 + components: + - type: Transform + pos: 37.5,36.5 + parent: 1 + - uid: 554 + components: + - type: Transform + pos: 38.5,36.5 + parent: 1 + - uid: 555 + components: + - type: Transform + pos: 38.5,37.5 + parent: 1 + - uid: 556 + components: + - type: Transform + pos: 37.5,37.5 + parent: 1 + - uid: 557 + components: + - type: Transform + pos: 36.5,37.5 + parent: 1 + - uid: 558 + components: + - type: Transform + pos: 37.5,38.5 + parent: 1 + - uid: 559 + components: + - type: Transform + pos: 38.5,38.5 + parent: 1 + - uid: 560 + components: + - type: Transform + pos: 39.5,38.5 + parent: 1 + - uid: 561 + components: + - type: Transform + pos: 39.5,37.5 + parent: 1 + - uid: 562 + components: + - type: Transform + pos: 38.5,39.5 + parent: 1 + - uid: 563 + components: + - type: Transform + pos: 39.5,39.5 + parent: 1 + - uid: 564 + components: + - type: Transform + pos: 39.5,40.5 + parent: 1 + - uid: 565 + components: + - type: Transform + pos: 40.5,39.5 + parent: 1 + - uid: 566 + components: + - type: Transform + pos: 33.5,36.5 + parent: 1 + - uid: 567 + components: + - type: Transform + pos: 33.5,37.5 + parent: 1 + - uid: 568 + components: + - type: Transform + pos: 33.5,38.5 + parent: 1 + - uid: 569 + components: + - type: Transform + pos: 34.5,38.5 + parent: 1 + - uid: 570 + components: + - type: Transform + pos: 33.5,39.5 + parent: 1 + - uid: 571 + components: + - type: Transform + pos: 33.5,40.5 + parent: 1 + - uid: 572 + components: + - type: Transform + pos: 32.5,39.5 + parent: 1 + - uid: 573 + components: + - type: Transform + pos: 32.5,38.5 + parent: 1 + - uid: 574 + components: + - type: Transform + pos: 32.5,37.5 + parent: 1 + - uid: 575 + components: + - type: Transform + pos: 31.5,38.5 + parent: 1 + - uid: 576 + components: + - type: Transform + pos: 31.5,39.5 + parent: 1 + - uid: 577 + components: + - type: Transform + pos: 31.5,40.5 + parent: 1 + - uid: 578 + components: + - type: Transform + pos: 30.5,38.5 + parent: 1 + - uid: 579 + components: + - type: Transform + pos: 28.5,38.5 + parent: 1 + - uid: 580 + components: + - type: Transform + pos: 28.5,40.5 + parent: 1 + - uid: 581 + components: + - type: Transform + pos: 27.5,40.5 + parent: 1 + - uid: 582 + components: + - type: Transform + pos: 27.5,39.5 + parent: 1 + - uid: 583 + components: + - type: Transform + pos: 27.5,38.5 + parent: 1 + - uid: 584 + components: + - type: Transform + pos: 27.5,37.5 + parent: 1 + - uid: 585 + components: + - type: Transform + pos: 27.5,36.5 + parent: 1 + - uid: 586 + components: + - type: Transform + pos: 26.5,37.5 + parent: 1 + - uid: 587 + components: + - type: Transform + pos: 25.5,37.5 + parent: 1 + - uid: 588 + components: + - type: Transform + pos: 25.5,38.5 + parent: 1 + - uid: 589 + components: + - type: Transform + pos: 24.5,38.5 + parent: 1 + - uid: 590 + components: + - type: Transform + pos: 26.5,38.5 + parent: 1 + - uid: 591 + components: + - type: Transform + pos: 26.5,39.5 + parent: 1 + - uid: 592 + components: + - type: Transform + pos: 25.5,39.5 + parent: 1 + - uid: 593 + components: + - type: Transform + pos: 25.5,40.5 + parent: 1 + - uid: 594 + components: + - type: Transform + pos: 26.5,40.5 + parent: 1 + - uid: 595 + components: + - type: Transform + pos: 20.5,36.5 + parent: 1 + - uid: 596 + components: + - type: Transform + pos: 20.5,37.5 + parent: 1 + - uid: 597 + components: + - type: Transform + pos: 19.5,37.5 + parent: 1 + - uid: 598 + components: + - type: Transform + pos: 19.5,38.5 + parent: 1 + - uid: 599 + components: + - type: Transform + pos: 20.5,38.5 + parent: 1 + - uid: 600 + components: + - type: Transform + pos: 21.5,38.5 + parent: 1 + - uid: 601 + components: + - type: Transform + pos: 21.5,39.5 + parent: 1 + - uid: 602 + components: + - type: Transform + pos: 21.5,40.5 + parent: 1 + - uid: 603 + components: + - type: Transform + pos: 20.5,39.5 + parent: 1 + - uid: 604 + components: + - type: Transform + pos: 19.5,39.5 + parent: 1 + - uid: 605 + components: + - type: Transform + pos: 14.5,36.5 + parent: 1 + - uid: 606 + components: + - type: Transform + pos: 14.5,37.5 + parent: 1 + - uid: 607 + components: + - type: Transform + pos: 14.5,38.5 + parent: 1 + - uid: 608 + components: + - type: Transform + pos: 15.5,38.5 + parent: 1 + - uid: 609 + components: + - type: Transform + pos: 16.5,38.5 + parent: 1 + - uid: 610 + components: + - type: Transform + pos: 15.5,39.5 + parent: 1 + - uid: 611 + components: + - type: Transform + pos: 14.5,39.5 + parent: 1 + - uid: 612 + components: + - type: Transform + pos: 13.5,39.5 + parent: 1 + - uid: 613 + components: + - type: Transform + pos: 13.5,38.5 + parent: 1 + - uid: 614 + components: + - type: Transform + pos: 13.5,37.5 + parent: 1 + - uid: 615 + components: + - type: Transform + pos: 12.5,39.5 + parent: 1 + - uid: 616 + components: + - type: Transform + pos: 9.5,36.5 + parent: 1 + - uid: 617 + components: + - type: Transform + pos: 8.5,36.5 + parent: 1 + - uid: 618 + components: + - type: Transform + pos: 8.5,37.5 + parent: 1 + - uid: 619 + components: + - type: Transform + pos: 9.5,37.5 + parent: 1 + - uid: 620 + components: + - type: Transform + pos: 9.5,38.5 + parent: 1 + - uid: 621 + components: + - type: Transform + pos: 8.5,38.5 + parent: 1 + - uid: 622 + components: + - type: Transform + pos: 7.5,38.5 + parent: 1 + - uid: 623 + components: + - type: Transform + pos: 7.5,37.5 + parent: 1 + - uid: 624 + components: + - type: Transform + pos: 6.5,38.5 + parent: 1 + - uid: 625 + components: + - type: Transform + pos: 8.5,39.5 + parent: 1 + - uid: 626 + components: + - type: Transform + pos: 10.5,39.5 + parent: 1 + - uid: 627 + components: + - type: Transform + pos: 9.5,39.5 + parent: 1 + - uid: 628 + components: + - type: Transform + pos: 9.5,40.5 + parent: 1 + - uid: 629 + components: + - type: Transform + pos: 10.5,40.5 + parent: 1 + - uid: 630 + components: + - type: Transform + pos: 3.5,36.5 + parent: 1 + - uid: 631 + components: + - type: Transform + pos: 2.5,36.5 + parent: 1 + - uid: 632 + components: + - type: Transform + pos: 3.5,37.5 + parent: 1 + - uid: 633 + components: + - type: Transform + pos: 2.5,37.5 + parent: 1 + - uid: 634 + components: + - type: Transform + pos: 2.5,38.5 + parent: 1 + - uid: 635 + components: + - type: Transform + pos: 3.5,38.5 + parent: 1 + - uid: 636 + components: + - type: Transform + pos: 4.5,38.5 + parent: 1 + - uid: 637 + components: + - type: Transform + pos: 4.5,39.5 + parent: 1 + - uid: 638 + components: + - type: Transform + pos: 3.5,39.5 + parent: 1 + - uid: 639 + components: + - type: Transform + pos: 2.5,39.5 + parent: 1 + - uid: 640 + components: + - type: Transform + pos: 2.5,40.5 + parent: 1 + - uid: 641 + components: + - type: Transform + pos: 1.5,40.5 + parent: 1 + - uid: 642 + components: + - type: Transform + pos: 1.5,38.5 + parent: 1 + - uid: 643 + components: + - type: Transform + pos: 1.5,39.5 + parent: 1 +- proto: NFSandMineralHardRich + entities: + - uid: 462 + components: + - type: Transform + pos: 2.5,30.5 + parent: 1 + - uid: 463 + components: + - type: Transform + pos: 3.5,30.5 + parent: 1 + - uid: 464 + components: + - type: Transform + pos: 3.5,31.5 + parent: 1 + - uid: 465 + components: + - type: Transform + pos: 2.5,31.5 + parent: 1 + - uid: 466 + components: + - type: Transform + pos: 2.5,32.5 + parent: 1 + - uid: 467 + components: + - type: Transform + pos: 1.5,32.5 + parent: 1 + - uid: 468 + components: + - type: Transform + pos: 1.5,33.5 + parent: 1 + - uid: 469 + components: + - type: Transform + pos: 1.5,34.5 + parent: 1 + - uid: 470 + components: + - type: Transform + pos: 2.5,34.5 + parent: 1 + - uid: 471 + components: + - type: Transform + pos: 2.5,33.5 + parent: 1 + - uid: 472 + components: + - type: Transform + pos: 3.5,33.5 + parent: 1 + - uid: 473 + components: + - type: Transform + pos: 3.5,32.5 + parent: 1 + - uid: 474 + components: + - type: Transform + pos: 4.5,32.5 + parent: 1 + - uid: 475 + components: + - type: Transform + pos: 4.5,33.5 + parent: 1 + - uid: 476 + components: + - type: Transform + pos: 6.5,32.5 + parent: 1 + - uid: 477 + components: + - type: Transform + pos: 7.5,32.5 + parent: 1 + - uid: 478 + components: + - type: Transform + pos: 7.5,31.5 + parent: 1 + - uid: 479 + components: + - type: Transform + pos: 8.5,31.5 + parent: 1 + - uid: 480 + components: + - type: Transform + pos: 8.5,30.5 + parent: 1 + - uid: 481 + components: + - type: Transform + pos: 9.5,30.5 + parent: 1 + - uid: 482 + components: + - type: Transform + pos: 9.5,31.5 + parent: 1 + - uid: 483 + components: + - type: Transform + pos: 9.5,32.5 + parent: 1 + - uid: 484 + components: + - type: Transform + pos: 8.5,32.5 + parent: 1 + - uid: 485 + components: + - type: Transform + pos: 8.5,33.5 + parent: 1 + - uid: 486 + components: + - type: Transform + pos: 9.5,33.5 + parent: 1 + - uid: 487 + components: + - type: Transform + pos: 9.5,34.5 + parent: 1 + - uid: 488 + components: + - type: Transform + pos: 10.5,34.5 + parent: 1 + - uid: 489 + components: + - type: Transform + pos: 10.5,33.5 + parent: 1 + - uid: 490 + components: + - type: Transform + pos: 12.5,33.5 + parent: 1 + - uid: 491 + components: + - type: Transform + pos: 13.5,33.5 + parent: 1 + - uid: 492 + components: + - type: Transform + pos: 14.5,33.5 + parent: 1 + - uid: 493 + components: + - type: Transform + pos: 15.5,33.5 + parent: 1 + - uid: 494 + components: + - type: Transform + pos: 15.5,32.5 + parent: 1 + - uid: 495 + components: + - type: Transform + pos: 16.5,32.5 + parent: 1 + - uid: 496 + components: + - type: Transform + pos: 14.5,32.5 + parent: 1 + - uid: 497 + components: + - type: Transform + pos: 13.5,32.5 + parent: 1 + - uid: 498 + components: + - type: Transform + pos: 13.5,31.5 + parent: 1 + - uid: 499 + components: + - type: Transform + pos: 14.5,31.5 + parent: 1 + - uid: 500 + components: + - type: Transform + pos: 14.5,30.5 + parent: 1 + - uid: 501 + components: + - type: Transform + pos: 20.5,30.5 + parent: 1 + - uid: 502 + components: + - type: Transform + pos: 20.5,31.5 + parent: 1 + - uid: 503 + components: + - type: Transform + pos: 19.5,31.5 + parent: 1 + - uid: 504 + components: + - type: Transform + pos: 19.5,32.5 + parent: 1 + - uid: 505 + components: + - type: Transform + pos: 19.5,33.5 + parent: 1 + - uid: 506 + components: + - type: Transform + pos: 20.5,33.5 + parent: 1 + - uid: 507 + components: + - type: Transform + pos: 20.5,32.5 + parent: 1 + - uid: 508 + components: + - type: Transform + pos: 21.5,32.5 + parent: 1 + - uid: 509 + components: + - type: Transform + pos: 21.5,33.5 + parent: 1 + - uid: 510 + components: + - type: Transform + pos: 21.5,34.5 + parent: 1 + - uid: 511 + components: + - type: Transform + pos: 24.5,32.5 + parent: 1 + - uid: 512 + components: + - type: Transform + pos: 25.5,32.5 + parent: 1 + - uid: 513 + components: + - type: Transform + pos: 25.5,31.5 + parent: 1 + - uid: 514 + components: + - type: Transform + pos: 26.5,31.5 + parent: 1 + - uid: 515 + components: + - type: Transform + pos: 27.5,31.5 + parent: 1 + - uid: 516 + components: + - type: Transform + pos: 27.5,30.5 + parent: 1 + - uid: 517 + components: + - type: Transform + pos: 28.5,32.5 + parent: 1 + - uid: 518 + components: + - type: Transform + pos: 27.5,32.5 + parent: 1 + - uid: 519 + components: + - type: Transform + pos: 26.5,32.5 + parent: 1 + - uid: 520 + components: + - type: Transform + pos: 26.5,33.5 + parent: 1 + - uid: 521 + components: + - type: Transform + pos: 25.5,33.5 + parent: 1 + - uid: 522 + components: + - type: Transform + pos: 25.5,34.5 + parent: 1 + - uid: 523 + components: + - type: Transform + pos: 26.5,34.5 + parent: 1 + - uid: 524 + components: + - type: Transform + pos: 27.5,34.5 + parent: 1 + - uid: 525 + components: + - type: Transform + pos: 28.5,34.5 + parent: 1 + - uid: 526 + components: + - type: Transform + pos: 27.5,33.5 + parent: 1 + - uid: 527 + components: + - type: Transform + pos: 30.5,32.5 + parent: 1 + - uid: 528 + components: + - type: Transform + pos: 31.5,32.5 + parent: 1 + - uid: 529 + components: + - type: Transform + pos: 31.5,33.5 + parent: 1 + - uid: 530 + components: + - type: Transform + pos: 31.5,34.5 + parent: 1 + - uid: 531 + components: + - type: Transform + pos: 32.5,33.5 + parent: 1 + - uid: 532 + components: + - type: Transform + pos: 33.5,33.5 + parent: 1 + - uid: 533 + components: + - type: Transform + pos: 33.5,34.5 + parent: 1 + - uid: 534 + components: + - type: Transform + pos: 32.5,32.5 + parent: 1 + - uid: 535 + components: + - type: Transform + pos: 33.5,32.5 + parent: 1 + - uid: 536 + components: + - type: Transform + pos: 34.5,32.5 + parent: 1 + - uid: 537 + components: + - type: Transform + pos: 32.5,31.5 + parent: 1 + - uid: 538 + components: + - type: Transform + pos: 33.5,31.5 + parent: 1 + - uid: 539 + components: + - type: Transform + pos: 33.5,30.5 + parent: 1 + - uid: 540 + components: + - type: Transform + pos: 36.5,31.5 + parent: 1 + - uid: 541 + components: + - type: Transform + pos: 37.5,31.5 + parent: 1 + - uid: 542 + components: + - type: Transform + pos: 37.5,30.5 + parent: 1 + - uid: 543 + components: + - type: Transform + pos: 38.5,30.5 + parent: 1 + - uid: 544 + components: + - type: Transform + pos: 38.5,31.5 + parent: 1 + - uid: 545 + components: + - type: Transform + pos: 39.5,31.5 + parent: 1 + - uid: 547 + components: + - type: Transform + pos: 38.5,32.5 + parent: 1 + - uid: 548 + components: + - type: Transform + pos: 37.5,32.5 + parent: 1 + - uid: 549 + components: + - type: Transform + pos: 38.5,33.5 + parent: 1 + - uid: 550 + components: + - type: Transform + pos: 39.5,33.5 + parent: 1 + - uid: 551 + components: + - type: Transform + pos: 39.5,34.5 + parent: 1 + - uid: 552 + components: + - type: Transform + pos: 40.5,33.5 + parent: 1 + - uid: 644 + components: + - type: Transform + pos: 39.5,32.5 + parent: 1 + - uid: 645 + components: + - type: Transform + pos: 40.5,32.5 + parent: 1 +... diff --git a/Resources/Maps/_NF/POI/trade.yml b/Resources/Maps/_NF/POI/trade.yml index 1fab43e1778..27b2a1d9789 100644 --- a/Resources/Maps/_NF/POI/trade.yml +++ b/Resources/Maps/_NF/POI/trade.yml @@ -9219,18 +9219,6 @@ entities: parent: 1 - proto: CargoPalletSell entities: - - uid: 225 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 61.5,22.5 - parent: 1 - - uid: 226 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 63.5,22.5 - parent: 1 - uid: 228 components: - type: Transform @@ -9461,6 +9449,16 @@ entities: - type: Transform pos: 81.5,-7.5 parent: 1 + - uid: 225 + components: + - type: Transform + pos: 61.5,22.5 + parent: 1 + - uid: 226 + components: + - type: Transform + pos: 63.5,22.5 + parent: 1 - uid: 341 components: - type: Transform diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_food.yml b/Resources/Prototypes/Catalog/Cargo/cargo_food.yml index e1c67ee941c..280d386c87a 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_food.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_food.yml @@ -75,12 +75,13 @@ category: cargoproduct-category-name-food group: market -# - type: cargoProduct - # id: FoodSoftdrinksLarge - # icon: - # sprite: Objects/Consumable/Drinks/colabottle.rsi - # state: icon - # product: CrateFoodSoftdrinksLarge - # cost: 2400 - # category: cargoproduct-category-name-food - # group: market +- type: cargoProduct + id: FoodSoftdrinksLarge + abstract: true # Frontier + icon: + sprite: Objects/Consumable/Drinks/colabottle.rsi + state: icon + product: CrateFoodSoftdrinksLarge + cost: 2400 + category: cargoproduct-category-name-food + group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_medical.yml b/Resources/Prototypes/Catalog/Cargo/cargo_medical.yml index 9475f346ba4..bcdb0e417dc 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_medical.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_medical.yml @@ -130,6 +130,7 @@ - type: cargoProduct id: ChemistryP + abstract: true # Frontier icon: sprite: Structures/Storage/Crates/chemcrate_secure.rsi state: icon @@ -140,6 +141,7 @@ - type: cargoProduct id: ChemistryS + abstract: true # Frontier icon: sprite: Structures/Storage/Crates/chemcrate_secure.rsi state: icon @@ -150,6 +152,7 @@ - type: cargoProduct id: CrateChemistryD + abstract: true # Frontier icon: sprite: Structures/Storage/Crates/chemcrate_secure.rsi state: icon diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/chefvend.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/chefvend.yml index f09cada8f7e..74692516bbe 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/chefvend.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/chefvend.yml @@ -10,8 +10,6 @@ # FoodCondimentPacketSalt: 4 # Frontier - Replaced with big salt ReagentContainerSalt: 5 # Frontier ReagentContainerPepper: 5 # Frontier - DrinkKegPlasticKetchup: 1 # Frontier - Refills - DrinkKegPlasticMustard: 1 # Frontier - Refills FoodCondimentBottleEnzyme: 5 # Frontier 2<5 FoodCondimentBottleHotsauce: 2 FoodCondimentBottleKetchup: 2 @@ -19,10 +17,10 @@ FoodCondimentBottleVinegar: 5 # Frontier 2<5 FoodCondimentBottleSoysauce: 5 # Frontier # ReagentContainerOliveoil: 2 # Frontier - Replaced with OilJarOlive - OilJarOlive: 3 - OilJarCorn: 3 - OilJarGhee: 3 ReagentContainerMayo: 2 + OilJarOlive: 1 # Frontier + OilJarCorn: 1 # Frontier + OilJarGhee: 1 # Frontier #VariantCubeBox: 3 # Frontier MonkeyCubeBox: 2 # Frontier KoboldCubeBox: 2 # Frontier diff --git a/Resources/Prototypes/Entities/Markers/Spawners/vehicles.yml b/Resources/Prototypes/Entities/Markers/Spawners/vehicles.yml index d9309d51e7d..8ffba5a01a5 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/vehicles.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/vehicles.yml @@ -24,7 +24,7 @@ state: keys - type: ConditionalSpawner prototypes: - - VehicleJanicart + - NFVehicleJanicart # Frontier: add NF prefix - type: entity name: ATV Spawner @@ -38,7 +38,7 @@ state: keys - type: ConditionalSpawner prototypes: - - VehicleATVNF # Frontier + - VehicleATVNF # Frontier: add NF suffix - type: entity name: Motobike Spawner @@ -52,7 +52,7 @@ state: keys - type: ConditionalSpawner prototypes: - - VehicleSkeletonMotorcycleNF # Frontier + - VehicleSkeletonMotorcycleNF # Frontier: add NF suffix - type: entity name: Wheelchair Spawner @@ -80,4 +80,4 @@ state: vehicle_folded - type: ConditionalSpawner prototypes: - - VehicleWheelchairFolded \ No newline at end of file + - VehicleWheelchairFolded diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/cannons.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/cannons.yml index 4abd8eb53ce..b47277d5407 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/cannons.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/cannons.yml @@ -76,8 +76,8 @@ - type: entity id: ShuttleGunKineticCircuitboard parent: BaseMachineCircuitboard - name: PTK-800 "Matter Dematerializer" machine board - description: A machine printed circuit board for an PTK-800 "Matter Dematerializer". + name: PTK-1500e "Matter Dematerializer" machine board # Frontier: 800<1500e + description: A machine printed circuit board for an PTK-1500e "Matter Dematerializer". # Frontier: 800<1500e suffix: DO NOT MAP, Machine Board components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml b/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml index 8a6424ffcc7..c6f9c7449f9 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml @@ -35,6 +35,7 @@ cpu_supply: "#A46106" - type: StaticPrice price: 250 + - type: Rotatable # Frontier - type: entity parent: BaseFlatpack diff --git a/Resources/Prototypes/Entities/Objects/Vehicles/buckleable.yml b/Resources/Prototypes/Entities/Objects/Vehicles/buckleable.yml index c0dc2b5ba46..9ab61acc4d2 100644 --- a/Resources/Prototypes/Entities/Objects/Vehicles/buckleable.yml +++ b/Resources/Prototypes/Entities/Objects/Vehicles/buckleable.yml @@ -89,6 +89,7 @@ parent: BaseVehicleRideable name: janicart description: The janitor's trusty steed. + abstract: true # Frontier components: - type: Vehicle southOver: true diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml index 654422a3149..526259ef63a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml @@ -309,14 +309,12 @@ types: Heat: 14 # mining laser real -# - type: GatheringProjectile # Frontier +# - type: GatheringProjectile # Frontier - if restoring, add MiningGatheringSoft - type: Tag tags: - EmitterBolt - type: TimedDespawn lifetime: 3 - - type: Reflective # Frontier - reflective: ShuttleKinetic # Frontier - type: entity name: watcher bolt @@ -405,6 +403,7 @@ - type: TimedDespawn lifetime: 0.4 - type: GatheringProjectile + - type: MiningGatheringSoft # Frontier - type: entity id: BulletKineticShuttle @@ -414,11 +413,10 @@ - type: Sprite noRot: false sprite: Objects/Weapons/Guns/Projectiles/magic.rsi + color: "#FF8888" # Frontier: color it red vs. handheld bolts layers: - state: chronobolt shader: unshaded - - type: Reflective # Frontier - reflective: ShuttleKinetic # Frontier - type: Projectile impactEffect: BulletImpactEffectKinetic damage: @@ -431,9 +429,10 @@ lifetime: 1 # Frontier 1.5<1 - type: PointLight radius: 2.5 - color: white + color: "#FF8888" # Frontier: white - + diff --git a/Resources/Textures/_NF/Objects/Devices/flatpack.rsi/command_airlock_directional.png b/Resources/Textures/_NF/Objects/Devices/flatpack.rsi/command_airlock_directional.png new file mode 100644 index 00000000000..49f01a01d36 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Devices/flatpack.rsi/command_airlock_directional.png differ diff --git a/Resources/Textures/_NF/Objects/Devices/flatpack.rsi/meta.json b/Resources/Textures/_NF/Objects/Devices/flatpack.rsi/meta.json index f19ad0797f0..435f2645b5b 100644 --- a/Resources/Textures/_NF/Objects/Devices/flatpack.rsi/meta.json +++ b/Resources/Textures/_NF/Objects/Devices/flatpack.rsi/meta.json @@ -19,6 +19,9 @@ { "name": "command_airlock" }, + { + "name": "command_airlock_directional" + }, { "name": "command_server" }, diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/black.rsi/icon.png b/Resources/Textures/_NF/Objects/Storage/Barrels/black.rsi/icon.png new file mode 100644 index 00000000000..ee1382a4809 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/black.rsi/icon.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/black.rsi/icon_open.png b/Resources/Textures/_NF/Objects/Storage/Barrels/black.rsi/icon_open.png new file mode 100644 index 00000000000..9cc195f27d0 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/black.rsi/icon_open.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/black.rsi/meta.json b/Resources/Textures/_NF/Objects/Storage/Barrels/black.rsi/meta.json new file mode 100644 index 00000000000..a6e9f155347 --- /dev/null +++ b/Resources/Textures/_NF/Objects/Storage/Barrels/black.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation PR https://github.com/tgstation/tgstation/pull/38977, modified by rosieposieeee & whatston3", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon_open" + }, + { + "name": "paper" + }, + { + "name": "metal_explosive_label" + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/black.rsi/metal_explosive_label.png b/Resources/Textures/_NF/Objects/Storage/Barrels/black.rsi/metal_explosive_label.png new file mode 100644 index 00000000000..b1b977b07e8 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/black.rsi/metal_explosive_label.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/black.rsi/paper.png b/Resources/Textures/_NF/Objects/Storage/Barrels/black.rsi/paper.png new file mode 100644 index 00000000000..08d7f696fec Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/black.rsi/paper.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/blue.rsi/icon.png b/Resources/Textures/_NF/Objects/Storage/Barrels/blue.rsi/icon.png new file mode 100644 index 00000000000..1bf90ce9918 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/blue.rsi/icon.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/blue.rsi/icon_open.png b/Resources/Textures/_NF/Objects/Storage/Barrels/blue.rsi/icon_open.png new file mode 100644 index 00000000000..9cc195f27d0 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/blue.rsi/icon_open.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/blue.rsi/meta.json b/Resources/Textures/_NF/Objects/Storage/Barrels/blue.rsi/meta.json new file mode 100644 index 00000000000..a6e9f155347 --- /dev/null +++ b/Resources/Textures/_NF/Objects/Storage/Barrels/blue.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation PR https://github.com/tgstation/tgstation/pull/38977, modified by rosieposieeee & whatston3", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon_open" + }, + { + "name": "paper" + }, + { + "name": "metal_explosive_label" + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/blue.rsi/metal_explosive_label.png b/Resources/Textures/_NF/Objects/Storage/Barrels/blue.rsi/metal_explosive_label.png new file mode 100644 index 00000000000..b1b977b07e8 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/blue.rsi/metal_explosive_label.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/blue.rsi/paper.png b/Resources/Textures/_NF/Objects/Storage/Barrels/blue.rsi/paper.png new file mode 100644 index 00000000000..08d7f696fec Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/blue.rsi/paper.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/green.rsi/icon.png b/Resources/Textures/_NF/Objects/Storage/Barrels/green.rsi/icon.png new file mode 100644 index 00000000000..101ec3f6d1b Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/green.rsi/icon.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/green.rsi/icon_open.png b/Resources/Textures/_NF/Objects/Storage/Barrels/green.rsi/icon_open.png new file mode 100644 index 00000000000..9cc195f27d0 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/green.rsi/icon_open.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/green.rsi/meta.json b/Resources/Textures/_NF/Objects/Storage/Barrels/green.rsi/meta.json new file mode 100644 index 00000000000..a6e9f155347 --- /dev/null +++ b/Resources/Textures/_NF/Objects/Storage/Barrels/green.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation PR https://github.com/tgstation/tgstation/pull/38977, modified by rosieposieeee & whatston3", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon_open" + }, + { + "name": "paper" + }, + { + "name": "metal_explosive_label" + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/green.rsi/metal_explosive_label.png b/Resources/Textures/_NF/Objects/Storage/Barrels/green.rsi/metal_explosive_label.png new file mode 100644 index 00000000000..b1b977b07e8 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/green.rsi/metal_explosive_label.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/green.rsi/paper.png b/Resources/Textures/_NF/Objects/Storage/Barrels/green.rsi/paper.png new file mode 100644 index 00000000000..08d7f696fec Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/green.rsi/paper.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/grey.rsi/icon.png b/Resources/Textures/_NF/Objects/Storage/Barrels/grey.rsi/icon.png new file mode 100644 index 00000000000..a417ce2e29c Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/grey.rsi/icon.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/grey.rsi/icon_open.png b/Resources/Textures/_NF/Objects/Storage/Barrels/grey.rsi/icon_open.png new file mode 100644 index 00000000000..9cc195f27d0 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/grey.rsi/icon_open.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/grey.rsi/meta.json b/Resources/Textures/_NF/Objects/Storage/Barrels/grey.rsi/meta.json new file mode 100644 index 00000000000..a6e9f155347 --- /dev/null +++ b/Resources/Textures/_NF/Objects/Storage/Barrels/grey.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation PR https://github.com/tgstation/tgstation/pull/38977, modified by rosieposieeee & whatston3", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon_open" + }, + { + "name": "paper" + }, + { + "name": "metal_explosive_label" + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/grey.rsi/metal_explosive_label.png b/Resources/Textures/_NF/Objects/Storage/Barrels/grey.rsi/metal_explosive_label.png new file mode 100644 index 00000000000..b1b977b07e8 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/grey.rsi/metal_explosive_label.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/grey.rsi/paper.png b/Resources/Textures/_NF/Objects/Storage/Barrels/grey.rsi/paper.png new file mode 100644 index 00000000000..08d7f696fec Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/grey.rsi/paper.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/red.rsi/icon.png b/Resources/Textures/_NF/Objects/Storage/Barrels/red.rsi/icon.png new file mode 100644 index 00000000000..6c37208bcfa Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/red.rsi/icon.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/red.rsi/icon_open.png b/Resources/Textures/_NF/Objects/Storage/Barrels/red.rsi/icon_open.png new file mode 100644 index 00000000000..9cc195f27d0 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/red.rsi/icon_open.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/red.rsi/meta.json b/Resources/Textures/_NF/Objects/Storage/Barrels/red.rsi/meta.json new file mode 100644 index 00000000000..a6e9f155347 --- /dev/null +++ b/Resources/Textures/_NF/Objects/Storage/Barrels/red.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation PR https://github.com/tgstation/tgstation/pull/38977, modified by rosieposieeee & whatston3", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon_open" + }, + { + "name": "paper" + }, + { + "name": "metal_explosive_label" + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/red.rsi/metal_explosive_label.png b/Resources/Textures/_NF/Objects/Storage/Barrels/red.rsi/metal_explosive_label.png new file mode 100644 index 00000000000..b1b977b07e8 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/red.rsi/metal_explosive_label.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/red.rsi/paper.png b/Resources/Textures/_NF/Objects/Storage/Barrels/red.rsi/paper.png new file mode 100644 index 00000000000..08d7f696fec Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/red.rsi/paper.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/white.rsi/icon.png b/Resources/Textures/_NF/Objects/Storage/Barrels/white.rsi/icon.png new file mode 100644 index 00000000000..c935fef87d4 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/white.rsi/icon.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/white.rsi/icon_open.png b/Resources/Textures/_NF/Objects/Storage/Barrels/white.rsi/icon_open.png new file mode 100644 index 00000000000..9cc195f27d0 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/white.rsi/icon_open.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/white.rsi/meta.json b/Resources/Textures/_NF/Objects/Storage/Barrels/white.rsi/meta.json new file mode 100644 index 00000000000..a6e9f155347 --- /dev/null +++ b/Resources/Textures/_NF/Objects/Storage/Barrels/white.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation PR https://github.com/tgstation/tgstation/pull/38977, modified by rosieposieeee & whatston3", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon_open" + }, + { + "name": "paper" + }, + { + "name": "metal_explosive_label" + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/white.rsi/metal_explosive_label.png b/Resources/Textures/_NF/Objects/Storage/Barrels/white.rsi/metal_explosive_label.png new file mode 100644 index 00000000000..b1b977b07e8 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/white.rsi/metal_explosive_label.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/white.rsi/paper.png b/Resources/Textures/_NF/Objects/Storage/Barrels/white.rsi/paper.png new file mode 100644 index 00000000000..08d7f696fec Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/white.rsi/paper.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/wood.rsi/closed.png b/Resources/Textures/_NF/Objects/Storage/Barrels/wood.rsi/closed.png new file mode 100644 index 00000000000..b111827b8e5 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/wood.rsi/closed.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/wood.rsi/icon.png b/Resources/Textures/_NF/Objects/Storage/Barrels/wood.rsi/icon.png new file mode 100644 index 00000000000..bfc92c166d4 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/wood.rsi/icon.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/wood.rsi/meta.json b/Resources/Textures/_NF/Objects/Storage/Barrels/wood.rsi/meta.json new file mode 100644 index 00000000000..8e941fd7d61 --- /dev/null +++ b/Resources/Textures/_NF/Objects/Storage/Barrels/wood.rsi/meta.json @@ -0,0 +1,20 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation PR https://github.com/tgstation/tgstation/pull/38977, modified by rosieposieeee", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "closed" + }, + { + "name": "open" + }, + { + "name": "icon" + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/wood.rsi/open.png b/Resources/Textures/_NF/Objects/Storage/Barrels/wood.rsi/open.png new file mode 100644 index 00000000000..bfc92c166d4 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/wood.rsi/open.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/yellow.rsi/icon.png b/Resources/Textures/_NF/Objects/Storage/Barrels/yellow.rsi/icon.png new file mode 100644 index 00000000000..a22bef0ff3f Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/yellow.rsi/icon.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/yellow.rsi/icon_open.png b/Resources/Textures/_NF/Objects/Storage/Barrels/yellow.rsi/icon_open.png new file mode 100644 index 00000000000..9cc195f27d0 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/yellow.rsi/icon_open.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/yellow.rsi/meta.json b/Resources/Textures/_NF/Objects/Storage/Barrels/yellow.rsi/meta.json new file mode 100644 index 00000000000..a6e9f155347 --- /dev/null +++ b/Resources/Textures/_NF/Objects/Storage/Barrels/yellow.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation PR https://github.com/tgstation/tgstation/pull/38977, modified by rosieposieeee & whatston3", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon_open" + }, + { + "name": "paper" + }, + { + "name": "metal_explosive_label" + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/yellow.rsi/metal_explosive_label.png b/Resources/Textures/_NF/Objects/Storage/Barrels/yellow.rsi/metal_explosive_label.png new file mode 100644 index 00000000000..b1b977b07e8 Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/yellow.rsi/metal_explosive_label.png differ diff --git a/Resources/Textures/_NF/Objects/Storage/Barrels/yellow.rsi/paper.png b/Resources/Textures/_NF/Objects/Storage/Barrels/yellow.rsi/paper.png new file mode 100644 index 00000000000..08d7f696fec Binary files /dev/null and b/Resources/Textures/_NF/Objects/Storage/Barrels/yellow.rsi/paper.png differ diff --git a/Resources/_NF/migration.yml b/Resources/_NF/migration.yml index 5097766ff00..08df7cb5dee 100644 --- a/Resources/_NF/migration.yml +++ b/Resources/_NF/migration.yml @@ -169,4 +169,10 @@ NFPosterContrabandFsbSpiritDD: NFPosterContrabandFsbSpirit NFPosterContrabandEmsCoordsDD: NFPosterContrabandEmsCoords # 2024-12-09 Wreck -RandomItem: null \ No newline at end of file +RandomItem: null + +# 2024-12-14 +VehicleJanicart: NFVehicleJanicart + +# 2024-12-22 Barrels +CrateSpaceCleaner: ChemicalBarrelSpaceCleaner diff --git a/Resources/migration.yml b/Resources/migration.yml index 39e8d54bf1d..e394d3aa118 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -440,3 +440,5 @@ BlueprintFlare: null # 2024-10-04 BaseAdvancedPen: Pen + +# Frontier: put Frontier-related migrations in _NF/migration.yml. Thank you.