Port DeltaV Lavaland Initial
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
using Content.Shared.DeltaV.Shuttles.Systems;
|
||||||
|
|
||||||
|
namespace Content.Client.DeltaV.Shuttles.Systems;
|
||||||
|
|
||||||
|
public sealed class DockingConsoleSystem : SharedDockingConsoleSystem;
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
using Content.Shared.DeltaV.Shuttles;
|
||||||
|
|
||||||
|
namespace Content.Client.DeltaV.Shuttles.UI;
|
||||||
|
|
||||||
|
public sealed class DockingConsoleBoundUserInterface : BoundUserInterface
|
||||||
|
{
|
||||||
|
[ViewVariables]
|
||||||
|
private DockingConsoleWindow? _window;
|
||||||
|
|
||||||
|
public DockingConsoleBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Open()
|
||||||
|
{
|
||||||
|
base.Open();
|
||||||
|
|
||||||
|
_window = new DockingConsoleWindow(Owner);
|
||||||
|
_window.OnFTL += index => SendMessage(new DockingConsoleFTLMessage(index));
|
||||||
|
_window.OnClose += Close;
|
||||||
|
_window.OpenCentered();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void UpdateState(BoundUserInterfaceState state)
|
||||||
|
{
|
||||||
|
base.UpdateState(state);
|
||||||
|
if (state is DockingConsoleState cast)
|
||||||
|
_window?.UpdateState(cast);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
base.Dispose(disposing);
|
||||||
|
|
||||||
|
if (disposing)
|
||||||
|
_window?.Orphan();
|
||||||
|
}
|
||||||
|
}
|
||||||
17
Content.Client/DeltaV/Shuttles/UI/DockingConsoleWindow.xaml
Normal file
17
Content.Client/DeltaV/Shuttles/UI/DockingConsoleWindow.xaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<controls:FancyWindow xmlns="https://spacestation14.io"
|
||||||
|
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
|
||||||
|
SetSize="500 500">
|
||||||
|
<BoxContainer Orientation="Vertical">
|
||||||
|
<ScrollContainer SetHeight="256" HorizontalExpand="True">
|
||||||
|
<ItemList Name="Destinations"/> <!-- Populated from comp.Destinations -->
|
||||||
|
</ScrollContainer>
|
||||||
|
<controls:StripeBack MinSize="48 48">
|
||||||
|
<Label Text="{Loc 'shuttle-console-ftl-label'}" VerticalExpand="True" HorizontalAlignment="Center"/>
|
||||||
|
</controls:StripeBack>
|
||||||
|
<Label Name="MapFTLState" Text="{Loc 'shuttle-console-ftl-state-Available'}" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
|
||||||
|
<ProgressBar Name="FTLBar" HorizontalExpand="True" Margin="5" MinValue="0.0" MaxValue="1.0" Value="1.0" SetHeight="32"/>
|
||||||
|
<controls:StripeBack HorizontalExpand="True">
|
||||||
|
<Button Name="FTLButton" Text="{Loc 'docking-console-ftl'}" Disabled="True" SetSize="128 48" Margin="5"/>
|
||||||
|
</controls:StripeBack>
|
||||||
|
</BoxContainer>
|
||||||
|
</controls:FancyWindow>
|
||||||
112
Content.Client/DeltaV/Shuttles/UI/DockingConsoleWindow.xaml.cs
Normal file
112
Content.Client/DeltaV/Shuttles/UI/DockingConsoleWindow.xaml.cs
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
using Content.Client.UserInterface.Controls;
|
||||||
|
using Content.Shared.Access.Systems;
|
||||||
|
using Content.Shared.DeltaV.Shuttles;
|
||||||
|
using Content.Shared.DeltaV.Shuttles.Components;
|
||||||
|
using Content.Shared.Shuttles.Systems;
|
||||||
|
using Content.Shared.Timing;
|
||||||
|
using Robust.Client.AutoGenerated;
|
||||||
|
using Robust.Client.Graphics;
|
||||||
|
using Robust.Client.Player;
|
||||||
|
using Robust.Client.UserInterface.XAML;
|
||||||
|
using Robust.Shared.Timing;
|
||||||
|
|
||||||
|
namespace Content.Client.DeltaV.Shuttles.UI;
|
||||||
|
|
||||||
|
[GenerateTypedNameReferences]
|
||||||
|
public sealed partial class DockingConsoleWindow : FancyWindow
|
||||||
|
{
|
||||||
|
[Dependency] private readonly IEntityManager _entMan = default!;
|
||||||
|
[Dependency] private readonly IGameTiming _timing = default!;
|
||||||
|
[Dependency] private readonly IPlayerManager _player = default!;
|
||||||
|
private readonly AccessReaderSystem _access;
|
||||||
|
|
||||||
|
public event Action<int>? OnFTL;
|
||||||
|
|
||||||
|
private readonly EntityUid _owner;
|
||||||
|
private readonly StyleBoxFlat _ftlStyle;
|
||||||
|
|
||||||
|
private FTLState _state;
|
||||||
|
private int? _selected;
|
||||||
|
private StartEndTime _ftlTime;
|
||||||
|
|
||||||
|
public DockingConsoleWindow(EntityUid owner)
|
||||||
|
{
|
||||||
|
RobustXamlLoader.Load(this);
|
||||||
|
IoCManager.InjectDependencies(this);
|
||||||
|
|
||||||
|
_access = _entMan.System<AccessReaderSystem>();
|
||||||
|
|
||||||
|
_owner = owner;
|
||||||
|
|
||||||
|
_ftlStyle = new StyleBoxFlat(Color.LimeGreen);
|
||||||
|
FTLBar.ForegroundStyleBoxOverride = _ftlStyle;
|
||||||
|
|
||||||
|
if (!_entMan.TryGetComponent<DockingConsoleComponent>(owner, out var comp))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Title = Loc.GetString(comp.WindowTitle);
|
||||||
|
|
||||||
|
if (!comp.HasShuttle)
|
||||||
|
{
|
||||||
|
MapFTLState.Text = Loc.GetString("docking-console-no-shuttle");
|
||||||
|
_ftlStyle.BackgroundColor = Color.FromHex("#B02E26");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Destinations.OnItemSelected += args => _selected = args.ItemIndex;
|
||||||
|
Destinations.OnItemDeselected += _ => _selected = null;
|
||||||
|
|
||||||
|
FTLButton.OnPressed += _ =>
|
||||||
|
{
|
||||||
|
if (_selected is {} index)
|
||||||
|
OnFTL?.Invoke(index);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateState(DockingConsoleState state)
|
||||||
|
{
|
||||||
|
_state = state.FTLState;
|
||||||
|
_ftlTime = state.FTLTime;
|
||||||
|
|
||||||
|
MapFTLState.Text = Loc.GetString($"shuttle-console-ftl-state-{_state.ToString()}");
|
||||||
|
_ftlStyle.BackgroundColor = Color.FromHex(_state switch
|
||||||
|
{
|
||||||
|
FTLState.Available => "#80C71F",
|
||||||
|
FTLState.Starting => "#169C9C",
|
||||||
|
FTLState.Travelling => "#8932B8",
|
||||||
|
FTLState.Arriving => "#F9801D",
|
||||||
|
_ => "#B02E26" // cooldown and fallback
|
||||||
|
});
|
||||||
|
|
||||||
|
UpdateButton();
|
||||||
|
|
||||||
|
if (Destinations.Count == state.Destinations.Count)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Destinations.Clear();
|
||||||
|
foreach (var dest in state.Destinations)
|
||||||
|
{
|
||||||
|
Destinations.AddItem(dest.Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateButton()
|
||||||
|
{
|
||||||
|
FTLButton.Disabled = _selected == null || _state != FTLState.Available || !HasAccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool HasAccess()
|
||||||
|
{
|
||||||
|
return _player.LocalSession?.AttachedEntity is {} player && _access.IsAllowed(player, _owner);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void FrameUpdate(FrameEventArgs args)
|
||||||
|
{
|
||||||
|
base.FrameUpdate(args);
|
||||||
|
|
||||||
|
UpdateButton();
|
||||||
|
|
||||||
|
var progress = _ftlTime.ProgressAt(_timing.CurTime);
|
||||||
|
FTLBar.Value = float.IsFinite(progress) ? progress : 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
76
Content.Server/DeltaV/Planet/PlanetSystem.cs
Normal file
76
Content.Server/DeltaV/Planet/PlanetSystem.cs
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
using Content.Server.Atmos.EntitySystems;
|
||||||
|
using Content.Server.Parallax;
|
||||||
|
using Content.Shared.DeltaV.Planet;
|
||||||
|
using Content.Shared.Parallax.Biomes;
|
||||||
|
using Robust.Server.GameObjects;
|
||||||
|
using Robust.Shared.Map;
|
||||||
|
using Robust.Shared.Map.Components;
|
||||||
|
using Robust.Shared.Prototypes;
|
||||||
|
|
||||||
|
namespace Content.Server.DeltaV.Planet;
|
||||||
|
|
||||||
|
public sealed class PlanetSystem : EntitySystem
|
||||||
|
{
|
||||||
|
[Dependency] private readonly AtmosphereSystem _atmos = default!;
|
||||||
|
[Dependency] private readonly BiomeSystem _biome = default!;
|
||||||
|
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||||
|
[Dependency] private readonly MapSystem _map = default!;
|
||||||
|
[Dependency] private readonly MapLoaderSystem _mapLoader = default!;
|
||||||
|
[Dependency] private readonly MetaDataSystem _meta = default!;
|
||||||
|
|
||||||
|
private readonly List<(Vector2i, Tile)> _setTiles = new();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Spawn a planet map from a planet prototype.
|
||||||
|
/// </summary>
|
||||||
|
public EntityUid SpawnPlanet(ProtoId<PlanetPrototype> id, bool runMapInit = true)
|
||||||
|
{
|
||||||
|
var planet = _proto.Index(id);
|
||||||
|
|
||||||
|
var map = _map.CreateMap(out _, runMapInit: runMapInit);
|
||||||
|
_biome.EnsurePlanet(map, _proto.Index(planet.Biome), mapLight: planet.MapLight);
|
||||||
|
|
||||||
|
// add each marker layer
|
||||||
|
var biome = Comp<BiomeComponent>(map);
|
||||||
|
foreach (var layer in planet.BiomeMarkerLayers)
|
||||||
|
{
|
||||||
|
_biome.AddMarkerLayer(map, biome, layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (planet.AddedComponents is {} added)
|
||||||
|
EntityManager.AddComponents(map, added);
|
||||||
|
|
||||||
|
_atmos.SetMapAtmosphere(map, false, planet.Atmosphere);
|
||||||
|
|
||||||
|
_meta.SetEntityName(map, Loc.GetString(planet.MapName));
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Spawns an initialized planet map from a planet prototype and loads a grid onto it.
|
||||||
|
/// Returns the map entity if loading succeeded.
|
||||||
|
/// </summary>
|
||||||
|
public EntityUid? LoadPlanet(ProtoId<PlanetPrototype> id, string path)
|
||||||
|
{
|
||||||
|
var map = SpawnPlanet(id, runMapInit: false);
|
||||||
|
var mapId = Comp<MapComponent>(map).MapId;
|
||||||
|
if (!_mapLoader.TryLoad(mapId, path, out var grids))
|
||||||
|
{
|
||||||
|
Log.Error($"Failed to load planet grid {path} for planet {id}!");
|
||||||
|
Del(map);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// don't want rocks spawning inside the base
|
||||||
|
foreach (var gridUid in grids)
|
||||||
|
{
|
||||||
|
_setTiles.Clear();
|
||||||
|
var aabb = Comp<MapGridComponent>(gridUid).LocalAABB;
|
||||||
|
_biome.ReserveTiles(map, aabb.Enlarged(0.2f), _setTiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
_map.InitializeMap(map);
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
}
|
||||||
164
Content.Server/DeltaV/Shuttles/Systems/DockingConsoleSystem.cs
Normal file
164
Content.Server/DeltaV/Shuttles/Systems/DockingConsoleSystem.cs
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
using Content.Server.Shuttles.Components;
|
||||||
|
using Content.Server.Shuttles.Events;
|
||||||
|
using Content.Server.Shuttles.Systems;
|
||||||
|
using Content.Shared.DeltaV.Shuttles;
|
||||||
|
using Content.Shared.DeltaV.Shuttles.Components;
|
||||||
|
using Content.Shared.DeltaV.Shuttles.Systems;
|
||||||
|
using Content.Shared.Shuttles.Components;
|
||||||
|
using Content.Shared.Shuttles.Systems;
|
||||||
|
using Content.Shared.Timing;
|
||||||
|
using Content.Shared.Whitelist;
|
||||||
|
using Robust.Shared.Map;
|
||||||
|
using Robust.Shared.Map.Components;
|
||||||
|
|
||||||
|
namespace Content.Server.DeltaV.Shuttles.Systems;
|
||||||
|
|
||||||
|
public sealed class DockingConsoleSystem : SharedDockingConsoleSystem
|
||||||
|
{
|
||||||
|
[Dependency] private readonly EntityWhitelistSystem _whitelist = default!;
|
||||||
|
[Dependency] private readonly SharedUserInterfaceSystem _ui = default!;
|
||||||
|
[Dependency] private readonly ShuttleSystem _shuttle = default!;
|
||||||
|
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
SubscribeLocalEvent<DockEvent>(OnDock);
|
||||||
|
SubscribeLocalEvent<UndockEvent>(OnUndock);
|
||||||
|
|
||||||
|
Subs.BuiEvents<DockingConsoleComponent>(DockingConsoleUiKey.Key, subs =>
|
||||||
|
{
|
||||||
|
subs.Event<BoundUIOpenedEvent>(OnOpened);
|
||||||
|
subs.Event<DockingConsoleFTLMessage>(OnFTL);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDock(DockEvent args)
|
||||||
|
{
|
||||||
|
UpdateConsoles(args.GridAUid, args.GridBUid);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnUndock(UndockEvent args)
|
||||||
|
{
|
||||||
|
UpdateConsoles(args.GridAUid, args.GridBUid);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnOpened(Entity<DockingConsoleComponent> ent, ref BoundUIOpenedEvent args)
|
||||||
|
{
|
||||||
|
if (TerminatingOrDeleted(ent.Comp.Shuttle))
|
||||||
|
UpdateShuttle(ent);
|
||||||
|
|
||||||
|
UpdateUI(ent);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateConsoles(EntityUid gridA, EntityUid gridB)
|
||||||
|
{
|
||||||
|
UpdateConsolesUsing(gridA);
|
||||||
|
UpdateConsolesUsing(gridB);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Update the UI of every console that is using a certain shuttle.
|
||||||
|
/// </summary>
|
||||||
|
public void UpdateConsolesUsing(EntityUid shuttle)
|
||||||
|
{
|
||||||
|
if (!HasComp<DockingShuttleComponent>(shuttle))
|
||||||
|
return;
|
||||||
|
|
||||||
|
var query = EntityQueryEnumerator<DockingConsoleComponent>();
|
||||||
|
while (query.MoveNext(out var uid, out var comp))
|
||||||
|
{
|
||||||
|
if (comp.Shuttle == shuttle)
|
||||||
|
UpdateUI((uid, comp));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateUI(Entity<DockingConsoleComponent> ent)
|
||||||
|
{
|
||||||
|
if (ent.Comp.Shuttle is not {} shuttle)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var ftlState = FTLState.Available;
|
||||||
|
StartEndTime ftlTime = default;
|
||||||
|
List<DockingDestination> destinations = new();
|
||||||
|
|
||||||
|
if (TryComp<FTLComponent>(shuttle, out var ftl))
|
||||||
|
{
|
||||||
|
ftlState = ftl.State;
|
||||||
|
ftlTime = _shuttle.GetStateTime(ftl);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TryComp<DockingShuttleComponent>(shuttle, out var docking))
|
||||||
|
{
|
||||||
|
destinations = docking.Destinations;
|
||||||
|
}
|
||||||
|
|
||||||
|
var state = new DockingConsoleState(ftlState, ftlTime, destinations);
|
||||||
|
_ui.SetUiState(ent.Owner, DockingConsoleUiKey.Key, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnFTL(Entity<DockingConsoleComponent> ent, ref DockingConsoleFTLMessage args)
|
||||||
|
{
|
||||||
|
if (ent.Comp.Shuttle is not {} shuttle || !TryComp<DockingShuttleComponent>(shuttle, out var docking))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (args.Index < 0 || args.Index > docking.Destinations.Count)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var dest = docking.Destinations[args.Index];
|
||||||
|
var map = dest.Map;
|
||||||
|
// can't FTL if its already there or somehow failed whitelist
|
||||||
|
if (map == Transform(shuttle).MapID || !_shuttle.CanFTLTo(shuttle, map, ent))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (FindLargestGrid(map) is not {} grid)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_shuttle.FTLToDock(shuttle, Comp<ShuttleComponent>(shuttle), grid, priorityTag: ent.Comp.DockTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
private EntityUid? FindLargestGrid(MapId map)
|
||||||
|
{
|
||||||
|
EntityUid? largestGrid = null;
|
||||||
|
var largestSize = 0f;
|
||||||
|
|
||||||
|
var query = EntityQueryEnumerator<MapGridComponent, TransformComponent>();
|
||||||
|
while (query.MoveNext(out var gridUid, out var grid, out var xform))
|
||||||
|
{
|
||||||
|
if (xform.MapID != map)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
var size = grid.LocalAABB.Size.LengthSquared();
|
||||||
|
if (size < largestSize)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
largestSize = size;
|
||||||
|
largestGrid = gridUid;
|
||||||
|
}
|
||||||
|
|
||||||
|
return largestGrid;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateShuttle(Entity<DockingConsoleComponent> ent)
|
||||||
|
{
|
||||||
|
var hadShuttle = ent.Comp.HasShuttle;
|
||||||
|
// no error if it cant find one since it would fail every test as shuttle.grid_fill is false in dev
|
||||||
|
ent.Comp.Shuttle = FindShuttle(ent.Comp.ShuttleWhitelist);
|
||||||
|
ent.Comp.HasShuttle = ent.Comp.Shuttle != null;
|
||||||
|
|
||||||
|
if (ent.Comp.HasShuttle != hadShuttle)
|
||||||
|
Dirty(ent);
|
||||||
|
}
|
||||||
|
|
||||||
|
private EntityUid? FindShuttle(EntityWhitelist whitelist)
|
||||||
|
{
|
||||||
|
var query = EntityQueryEnumerator<DockingShuttleComponent>();
|
||||||
|
while (query.MoveNext(out var uid, out _))
|
||||||
|
{
|
||||||
|
if (_whitelist.IsValid(whitelist, uid))
|
||||||
|
return uid;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
using Content.Server.Shuttles.Events;
|
||||||
|
using Content.Server.Station.Components;
|
||||||
|
using Content.Server.Station.Systems;
|
||||||
|
using Content.Shared.DeltaV.Shuttles.Components;
|
||||||
|
using Content.Shared.DeltaV.Shuttles.Systems;
|
||||||
|
using Content.Shared.Shuttles.Components;
|
||||||
|
using Content.Shared.Whitelist;
|
||||||
|
using Robust.Shared.Map.Components;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace Content.Server.DeltaV.Shuttles.Systems;
|
||||||
|
|
||||||
|
public sealed class DockingShuttleSystem : SharedDockingShuttleSystem
|
||||||
|
{
|
||||||
|
[Dependency] private readonly DockingConsoleSystem _console = default!;
|
||||||
|
[Dependency] private readonly EntityWhitelistSystem _whitelist = default!;
|
||||||
|
[Dependency] private readonly StationSystem _station = default!;
|
||||||
|
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
SubscribeLocalEvent<DockingShuttleComponent, MapInitEvent>(OnMapInit);
|
||||||
|
SubscribeLocalEvent<DockingShuttleComponent, FTLStartedEvent>(OnFTLStarted);
|
||||||
|
SubscribeLocalEvent<DockingShuttleComponent, FTLCompletedEvent>(OnFTLCompleted);
|
||||||
|
|
||||||
|
SubscribeLocalEvent<StationGridAddedEvent>(OnStationGridAdded);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnMapInit(Entity<DockingShuttleComponent> ent, ref MapInitEvent args)
|
||||||
|
{
|
||||||
|
// add any whitelisted destinations that it can FTL to
|
||||||
|
// since it needs a whitelist, this excludes the station
|
||||||
|
var query = EntityQueryEnumerator<FTLDestinationComponent, MapComponent>();
|
||||||
|
while (query.MoveNext(out var mapUid, out var dest, out var map))
|
||||||
|
{
|
||||||
|
if (!dest.Enabled || _whitelist.IsWhitelistFailOrNull(dest.Whitelist, ent))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
ent.Comp.Destinations.Add(new DockingDestination()
|
||||||
|
{
|
||||||
|
Name = Name(mapUid),
|
||||||
|
Map = map.MapId
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnFTLStarted(Entity<DockingShuttleComponent> ent, ref FTLStartedEvent args)
|
||||||
|
{
|
||||||
|
_console.UpdateConsolesUsing(ent);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnFTLCompleted(Entity<DockingShuttleComponent> ent, ref FTLCompletedEvent args)
|
||||||
|
{
|
||||||
|
_console.UpdateConsolesUsing(ent);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnStationGridAdded(StationGridAddedEvent args)
|
||||||
|
{
|
||||||
|
var uid = args.GridId;
|
||||||
|
if (!TryComp<DockingShuttleComponent>(uid, out var comp))
|
||||||
|
return;
|
||||||
|
|
||||||
|
// only add the destination once
|
||||||
|
if (comp.Station != null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_station.GetOwningStation(uid) is not {} station || !TryComp<StationDataComponent>(station, out var data))
|
||||||
|
return;
|
||||||
|
|
||||||
|
// add the source station as a destination
|
||||||
|
comp.Station = station;
|
||||||
|
comp.Destinations.Add(new DockingDestination()
|
||||||
|
{
|
||||||
|
Name = Name(station),
|
||||||
|
Map = Transform(data.Grids.First()).MapID
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
using Content.Server.DeltaV.Station.Systems;
|
||||||
|
using Content.Shared.DeltaV.Planet;
|
||||||
|
using Robust.Shared.Prototypes;
|
||||||
|
using Robust.Shared.Utility;
|
||||||
|
|
||||||
|
namespace Content.Server.DeltaV.Station.Components;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Loads a planet map on mapinit and spawns a grid on it (e.g. a mining base).
|
||||||
|
/// The map can then be FTLd to by any shuttle matching its whitelist.
|
||||||
|
/// </summary>
|
||||||
|
[RegisterComponent, Access(typeof(StationPlanetSpawnerSystem))]
|
||||||
|
public sealed partial class StationPlanetSpawnerComponent : Component
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The planet to create.
|
||||||
|
/// </summary>
|
||||||
|
[DataField(required: true)]
|
||||||
|
public ProtoId<PlanetPrototype> Planet;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Path to the grid to load onto the map.
|
||||||
|
/// </summary>
|
||||||
|
[DataField(required: true)]
|
||||||
|
public ResPath? GridPath;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The map that was loaded.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public EntityUid? Map;
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
using Content.Server.DeltaV.Planet;
|
||||||
|
using Content.Server.DeltaV.Station.Components;
|
||||||
|
|
||||||
|
namespace Content.Server.DeltaV.Station.Systems;
|
||||||
|
|
||||||
|
public sealed class StationPlanetSpawnerSystem : EntitySystem
|
||||||
|
{
|
||||||
|
[Dependency] private readonly PlanetSystem _planet = default!;
|
||||||
|
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
SubscribeLocalEvent<StationPlanetSpawnerComponent, MapInitEvent>(OnMapInit);
|
||||||
|
SubscribeLocalEvent<StationPlanetSpawnerComponent, ComponentShutdown>(OnShutdown);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnMapInit(Entity<StationPlanetSpawnerComponent> ent, ref MapInitEvent args)
|
||||||
|
{
|
||||||
|
if (ent.Comp.GridPath is not {} path)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ent.Comp.Map = _planet.LoadPlanet(ent.Comp.Planet, path.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnShutdown(Entity<StationPlanetSpawnerComponent> ent, ref ComponentShutdown args)
|
||||||
|
{
|
||||||
|
QueueDel(ent.Comp.Map);
|
||||||
|
}
|
||||||
|
}
|
||||||
49
Content.Shared/DeltaV/Planet/PlanetPrototype.cs
Normal file
49
Content.Shared/DeltaV/Planet/PlanetPrototype.cs
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
using Content.Shared.Atmos;
|
||||||
|
using Content.Shared.Parallax.Biomes;
|
||||||
|
using Content.Shared.Parallax.Biomes.Markers;
|
||||||
|
using Robust.Shared.Prototypes;
|
||||||
|
|
||||||
|
namespace Content.Shared.DeltaV.Planet;
|
||||||
|
|
||||||
|
[Prototype]
|
||||||
|
public sealed partial class PlanetPrototype : IPrototype
|
||||||
|
{
|
||||||
|
[IdDataField]
|
||||||
|
public string ID { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The biome to create the planet with.
|
||||||
|
/// </summary>
|
||||||
|
[DataField(required: true)]
|
||||||
|
public ProtoId<BiomeTemplatePrototype> Biome;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Name to give to the map.
|
||||||
|
/// </summary>
|
||||||
|
[DataField(required: true)]
|
||||||
|
public LocId MapName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Ambient lighting for the map.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public Color MapLight = Color.FromHex("#D8B059");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Components to add to the map.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public ComponentRegistry? AddedComponents;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The gas mixture to use for the atmosphere.
|
||||||
|
/// </summary>
|
||||||
|
[DataField(required: true)]
|
||||||
|
public GasMixture Atmosphere = new();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Biome layers to add to the map, i.e. ores.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public List<ProtoId<BiomeMarkerLayerPrototype>> BiomeMarkerLayers = new();
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
using Content.Shared.DeltaV.Shuttles.Systems;
|
||||||
|
using Content.Shared.Tag;
|
||||||
|
using Content.Shared.Whitelist;
|
||||||
|
using Robust.Shared.GameStates;
|
||||||
|
using Robust.Shared.Prototypes;
|
||||||
|
|
||||||
|
namespace Content.Shared.DeltaV.Shuttles.Components;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A shuttle console that can only ftl-dock between 2 grids.
|
||||||
|
/// The shuttle used must have <see cref="DockingShuttleComponent"/>.
|
||||||
|
/// </summary>
|
||||||
|
[RegisterComponent, NetworkedComponent, Access(typeof(SharedDockingConsoleSystem))]
|
||||||
|
[AutoGenerateComponentState]
|
||||||
|
public sealed partial class DockingConsoleComponent : Component
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Title of the window to use
|
||||||
|
/// </summary>
|
||||||
|
[DataField(required: true)]
|
||||||
|
public LocId WindowTitle;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Airlock tag that it will prioritize docking to.
|
||||||
|
/// </summary>
|
||||||
|
[DataField(required: true)]
|
||||||
|
public ProtoId<TagPrototype> DockTag;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A whitelist the shuttle has to match to be piloted.
|
||||||
|
/// </summary>
|
||||||
|
[DataField(required: true)]
|
||||||
|
public EntityWhitelist ShuttleWhitelist = new();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The shuttle that matches <see cref="ShuttleWhitelist"/>.
|
||||||
|
/// If this is null a shuttle was not found and this console does nothing.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public EntityUid? Shuttle;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Whether <see cref="Shuttle"/> is set on the server or not.
|
||||||
|
/// Client can't use Shuttle outside of PVS range so that isn't networked.
|
||||||
|
/// </summary>
|
||||||
|
[DataField, AutoNetworkedField]
|
||||||
|
public bool HasShuttle;
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
using Content.Shared.DeltaV.Shuttles.Systems;
|
||||||
|
using Robust.Shared.GameStates;
|
||||||
|
using Robust.Shared.Map;
|
||||||
|
using Robust.Shared.Serialization;
|
||||||
|
|
||||||
|
namespace Content.Shared.DeltaV.Shuttles.Components;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Component that stores destinations a docking-only shuttle can use.
|
||||||
|
/// Used by <see cref="DockingConsoleComponent"/> to access destinations.
|
||||||
|
/// </summary>
|
||||||
|
[RegisterComponent, NetworkedComponent, Access(typeof(SharedDockingShuttleSystem))]
|
||||||
|
public sealed partial class DockingShuttleComponent : Component
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The station this shuttle belongs to.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public EntityUid? Station;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Every destination this console can FTL to.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public List<DockingDestination> Destinations = new();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A map a shuttle can FTL to.
|
||||||
|
/// Created automatically on shuttle mapinit.
|
||||||
|
/// </summary>
|
||||||
|
[DataDefinition, Serializable, NetSerializable]
|
||||||
|
public partial struct DockingDestination
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The name of the destination to use in UI.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public LocId Name;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The map ID.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public MapId Map;
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
using Robust.Shared.GameStates;
|
||||||
|
|
||||||
|
namespace Content.Shared.DeltaV.Shuttles.Components;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Marker component for the mining shuttle grid.
|
||||||
|
/// Used for lavaland's FTL whitelist.
|
||||||
|
/// </summary>
|
||||||
|
[RegisterComponent, NetworkedComponent]
|
||||||
|
public sealed partial class MiningShuttleComponent : Component;
|
||||||
26
Content.Shared/DeltaV/Shuttles/DockingConsoleUI.cs
Normal file
26
Content.Shared/DeltaV/Shuttles/DockingConsoleUI.cs
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
using Content.Shared.DeltaV.Shuttles.Components;
|
||||||
|
using Content.Shared.Shuttles.Systems;
|
||||||
|
using Content.Shared.Timing;
|
||||||
|
using Robust.Shared.Serialization;
|
||||||
|
|
||||||
|
namespace Content.Shared.DeltaV.Shuttles;
|
||||||
|
|
||||||
|
[Serializable, NetSerializable]
|
||||||
|
public enum DockingConsoleUiKey : byte
|
||||||
|
{
|
||||||
|
Key
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable, NetSerializable]
|
||||||
|
public sealed class DockingConsoleState(FTLState ftlState, StartEndTime ftlTime, List<DockingDestination> destinations) : BoundUserInterfaceState
|
||||||
|
{
|
||||||
|
public FTLState FTLState = ftlState;
|
||||||
|
public StartEndTime FTLTime = ftlTime;
|
||||||
|
public List<DockingDestination> Destinations = destinations;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable, NetSerializable]
|
||||||
|
public sealed class DockingConsoleFTLMessage(int index) : BoundUserInterfaceMessage
|
||||||
|
{
|
||||||
|
public int Index = index;
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
namespace Content.Shared.DeltaV.Shuttles.Systems;
|
||||||
|
|
||||||
|
public abstract class SharedDockingConsoleSystem : EntitySystem;
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
namespace Content.Shared.DeltaV.Shuttles.Systems;
|
||||||
|
|
||||||
|
public abstract class SharedDockingShuttleSystem : EntitySystem;
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
docking-console-no-shuttle = No Shuttle Detected
|
||||||
|
docking-console-ftl = FTL
|
||||||
|
|
||||||
|
mining-console-window-title = Mining Shuttle Console
|
||||||
|
|
||||||
|
shuttle-destination-lavaland = Lavaland
|
||||||
|
shuttle-destination-glacier-surface = Glacier Surface
|
||||||
3887
Resources/Maps/Nonstations/DeltaV/lavaland_mining_base.yml
Normal file
3887
Resources/Maps/Nonstations/DeltaV/lavaland_mining_base.yml
Normal file
File diff suppressed because it is too large
Load Diff
495
Resources/Maps/Shuttles/DeltaV/mining.yml
Normal file
495
Resources/Maps/Shuttles/DeltaV/mining.yml
Normal file
@@ -0,0 +1,495 @@
|
|||||||
|
meta:
|
||||||
|
format: 6
|
||||||
|
postmapinit: false
|
||||||
|
tilemap:
|
||||||
|
0: Space
|
||||||
|
74: FloorMono
|
||||||
|
84: FloorReinforced
|
||||||
|
89: FloorShuttleBlue
|
||||||
|
98: FloorSteel
|
||||||
|
130: Lattice
|
||||||
|
131: Plating
|
||||||
|
entities:
|
||||||
|
- proto: ""
|
||||||
|
entities:
|
||||||
|
- uid: 1
|
||||||
|
components:
|
||||||
|
- type: MetaData
|
||||||
|
name: Mining Shuttle
|
||||||
|
- type: Transform
|
||||||
|
- type: MapGrid
|
||||||
|
chunks:
|
||||||
|
0,0:
|
||||||
|
ind: 0,0
|
||||||
|
tiles: YgAAAAAAYgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAAAYgAAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAgwAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
version: 6
|
||||||
|
0,-1:
|
||||||
|
ind: 0,-1
|
||||||
|
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAgwAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAWQAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
version: 6
|
||||||
|
-1,-1:
|
||||||
|
ind: -1,-1
|
||||||
|
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAWQAAAAAA
|
||||||
|
version: 6
|
||||||
|
-1,0:
|
||||||
|
ind: -1,0
|
||||||
|
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
version: 6
|
||||||
|
- type: Broadphase
|
||||||
|
- type: Physics
|
||||||
|
bodyStatus: InAir
|
||||||
|
angularDamping: 0.05
|
||||||
|
linearDamping: 0.05
|
||||||
|
fixedRotation: False
|
||||||
|
bodyType: Dynamic
|
||||||
|
- type: Fixtures
|
||||||
|
fixtures: {}
|
||||||
|
- type: OccluderTree
|
||||||
|
- type: SpreaderGrid
|
||||||
|
- type: Shuttle
|
||||||
|
- type: MiningShuttle
|
||||||
|
- type: DockingShuttle
|
||||||
|
destinations: []
|
||||||
|
- type: ProtectedGrid
|
||||||
|
- type: Gravity
|
||||||
|
gravityShakeSound: !type:SoundPathSpecifier
|
||||||
|
path: /Audio/Effects/alert.ogg
|
||||||
|
- type: GridPathfinding
|
||||||
|
- type: DecalGrid
|
||||||
|
chunkCollection:
|
||||||
|
version: 2
|
||||||
|
nodes: []
|
||||||
|
- type: GridAtmosphere
|
||||||
|
version: 2
|
||||||
|
data:
|
||||||
|
tiles:
|
||||||
|
0,0:
|
||||||
|
0: 823
|
||||||
|
1: 16384
|
||||||
|
0,-1:
|
||||||
|
0: 13072
|
||||||
|
1: 64
|
||||||
|
-1,0:
|
||||||
|
0: 2184
|
||||||
|
1: 16384
|
||||||
|
-1,-1:
|
||||||
|
0: 34816
|
||||||
|
1: 64
|
||||||
|
uniqueMixes:
|
||||||
|
- volume: 2500
|
||||||
|
temperature: 293.15
|
||||||
|
moles:
|
||||||
|
- 21.824879
|
||||||
|
- 82.10312
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- volume: 2500
|
||||||
|
immutable: True
|
||||||
|
moles:
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
chunkSize: 4
|
||||||
|
- type: GasTileOverlay
|
||||||
|
- type: RadiationGridResistance
|
||||||
|
- proto: AirlockShuttle
|
||||||
|
entities:
|
||||||
|
- uid: 2
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: 1.5707963267948966 rad
|
||||||
|
pos: 2.5,0.5
|
||||||
|
parent: 1
|
||||||
|
- proto: APCBasic
|
||||||
|
entities:
|
||||||
|
- uid: 3
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: -1.5707963267948966 rad
|
||||||
|
pos: 2.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- proto: AtmosDeviceFanDirectional
|
||||||
|
entities:
|
||||||
|
- uid: 4
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: 1.5707963267948966 rad
|
||||||
|
pos: 2.5,0.5
|
||||||
|
parent: 1
|
||||||
|
- proto: CableApcExtension
|
||||||
|
entities:
|
||||||
|
- uid: 5
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 2.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 6
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 1.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 7
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 0.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 8
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 0.5,-0.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 9
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 0.5,0.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 10
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 0.5,1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 11
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 0.5,2.5
|
||||||
|
parent: 1
|
||||||
|
- proto: CableHV
|
||||||
|
entities:
|
||||||
|
- uid: 12
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -0.5,-2.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 13
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -0.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 14
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -1.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- proto: CableMV
|
||||||
|
entities:
|
||||||
|
- uid: 15
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -1.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 16
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 0.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 17
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 1.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 18
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 2.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 19
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -0.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- proto: ChairPilotSeat
|
||||||
|
entities:
|
||||||
|
- uid: 20
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: 3.141592653589793 rad
|
||||||
|
pos: 0.5,1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 21
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: 3.141592653589793 rad
|
||||||
|
pos: -0.5,-0.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 22
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: 3.141592653589793 rad
|
||||||
|
pos: 0.5,-0.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 23
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: 3.141592653589793 rad
|
||||||
|
pos: 1.5,-0.5
|
||||||
|
parent: 1
|
||||||
|
- proto: ComputerShuttleMining
|
||||||
|
entities:
|
||||||
|
- uid: 24
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 0.5,2.5
|
||||||
|
parent: 1
|
||||||
|
- proto: CrateGenericSteel
|
||||||
|
entities:
|
||||||
|
- uid: 25
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -0.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- proto: GasPassiveVent
|
||||||
|
entities:
|
||||||
|
- uid: 26
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: 3.141592653589793 rad
|
||||||
|
pos: 0.5,-2.5
|
||||||
|
parent: 1
|
||||||
|
- type: AtmosPipeColor
|
||||||
|
color: '#990000FF'
|
||||||
|
- proto: GasPipeStraight
|
||||||
|
entities:
|
||||||
|
- uid: 27
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 0.5,-0.5
|
||||||
|
parent: 1
|
||||||
|
- type: AtmosPipeColor
|
||||||
|
color: '#990000FF'
|
||||||
|
- uid: 28
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 0.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- type: AtmosPipeColor
|
||||||
|
color: '#990000FF'
|
||||||
|
- proto: GasVentScrubber
|
||||||
|
entities:
|
||||||
|
- uid: 29
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 0.5,0.5
|
||||||
|
parent: 1
|
||||||
|
- type: AtmosPipeColor
|
||||||
|
color: '#990000FF'
|
||||||
|
- proto: GeneratorWallmountBasic
|
||||||
|
entities:
|
||||||
|
- uid: 30
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -0.5,-2.5
|
||||||
|
parent: 1
|
||||||
|
- proto: GravityGeneratorMini
|
||||||
|
entities:
|
||||||
|
- uid: 63
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 0.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- proto: Grille
|
||||||
|
entities:
|
||||||
|
- uid: 31
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -1.5,-0.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 32
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -1.5,1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 33
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 2.5,1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 34
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 2.5,-0.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 35
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 0.5,3.5
|
||||||
|
parent: 1
|
||||||
|
- proto: OreBox
|
||||||
|
entities:
|
||||||
|
- uid: 36
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 1.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- proto: Poweredlight
|
||||||
|
entities:
|
||||||
|
- uid: 37
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: 1.5707963267948966 rad
|
||||||
|
pos: -0.5,0.5
|
||||||
|
parent: 1
|
||||||
|
- proto: ShuttleWindow
|
||||||
|
entities:
|
||||||
|
- uid: 38
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 2.5,1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 39
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 0.5,3.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 40
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -1.5,1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 41
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -1.5,-0.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 42
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 2.5,-0.5
|
||||||
|
parent: 1
|
||||||
|
- proto: SubstationWallBasic
|
||||||
|
entities:
|
||||||
|
- uid: 43
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: 1.5707963267948966 rad
|
||||||
|
pos: -1.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- proto: Table
|
||||||
|
entities:
|
||||||
|
- uid: 44
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -0.5,2.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 45
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 1.5,2.5
|
||||||
|
parent: 1
|
||||||
|
- proto: Thruster
|
||||||
|
entities:
|
||||||
|
- uid: 46
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: 3.141592653589793 rad
|
||||||
|
pos: 0.5,-2.5
|
||||||
|
parent: 1
|
||||||
|
- proto: WallShuttle
|
||||||
|
entities:
|
||||||
|
- uid: 47
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 2.5,2.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 48
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 1.5,3.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 49
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -0.5,3.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 50
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -1.5,2.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 51
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -1.5,0.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 52
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -1.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 53
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -0.5,-2.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 54
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 1.5,-2.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 55
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: 2.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- proto: WallShuttleDiagonal
|
||||||
|
entities:
|
||||||
|
- uid: 56
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: -1.5707963267948966 rad
|
||||||
|
pos: 2.5,3.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 57
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: 3.141592653589793 rad
|
||||||
|
pos: 2.5,-2.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 58
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: 1.5707963267948966 rad
|
||||||
|
pos: -1.5,-2.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 59
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
pos: -1.5,3.5
|
||||||
|
parent: 1
|
||||||
|
- proto: WindowReinforcedDirectional
|
||||||
|
entities:
|
||||||
|
- uid: 60
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: 1.5707963267948966 rad
|
||||||
|
pos: 0.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 61
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: -1.5707963267948966 rad
|
||||||
|
pos: 0.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
- uid: 62
|
||||||
|
components:
|
||||||
|
- type: Transform
|
||||||
|
rot: 3.141592653589793 rad
|
||||||
|
pos: 0.5,-1.5
|
||||||
|
parent: 1
|
||||||
|
...
|
||||||
@@ -6,6 +6,7 @@
|
|||||||
- id: BoxFolderQmClipboard
|
- id: BoxFolderQmClipboard
|
||||||
- id: BoxQMCircuitboards
|
- id: BoxQMCircuitboards
|
||||||
- id: BoxQMStamps
|
- id: BoxQMStamps
|
||||||
|
- id: MiningShuttleConsoleCircuitboard
|
||||||
- id: CigPackGreen
|
- id: CigPackGreen
|
||||||
prob: 0.50
|
prob: 0.50
|
||||||
- id: ClothingHeadsetAltCargo
|
- id: ClothingHeadsetAltCargo
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
- BaseStationAllEventsEligible
|
- BaseStationAllEventsEligible
|
||||||
- BaseStationNanotrasen
|
- BaseStationNanotrasen
|
||||||
- BaseStationDeliveries
|
- BaseStationDeliveries
|
||||||
|
- BaseStationLavaland # DeltaV
|
||||||
categories: [ HideSpawnMenu ]
|
categories: [ HideSpawnMenu ]
|
||||||
components:
|
components:
|
||||||
- type: Transform
|
- type: Transform
|
||||||
|
|||||||
@@ -656,13 +656,18 @@
|
|||||||
startNode: start
|
startNode: start
|
||||||
targetNode: Catwalk
|
targetNode: Catwalk
|
||||||
category: construction-category-structures
|
category: construction-category-structures
|
||||||
conditions:
|
description: Just like a lattice. Except it looks better.
|
||||||
- !type:TileNotBlocked
|
# DeltaV - This prevented building catwalk over lava
|
||||||
failIfSpace: false
|
#conditions:
|
||||||
- !type:TileType
|
#- !type:TileNotBlocked
|
||||||
targets:
|
# failIfSpace: false
|
||||||
- Lattice
|
#- !type:TileType
|
||||||
- Plating
|
# targets:
|
||||||
|
# - Lattice
|
||||||
|
# - Plating
|
||||||
|
icon:
|
||||||
|
sprite: Structures/catwalk.rsi
|
||||||
|
state: catwalk_preview
|
||||||
objectType: Structure
|
objectType: Structure
|
||||||
placementMode: SnapgridCenter
|
placementMode: SnapgridCenter
|
||||||
canBuildInImpassable: false
|
canBuildInImpassable: false
|
||||||
|
|||||||
Reference in New Issue
Block a user