Midpoint: New EOR destination station (#3894)

* Midpoint

* Midpoint code

* Map polish

* Nav enabled

* Renamed traitor "escape to CC" objective

* meow

* Midpoint Extensions

* Extra beacons

* Latest Fixes

* Revert CC time being only 30 seconds

* Last fix

---------

Co-authored-by: Janet Blackquill <uhhadd@gmail.com>
This commit is contained in:
Field Command 2025-06-13 20:14:58 +02:00 committed by GitHub
parent ad4ee5c0e5
commit 1ec61d6df6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 63395 additions and 3 deletions

View File

@ -16,7 +16,7 @@ public sealed partial class StationCentcommComponent : Component
public float ShuttleIndex;
[DataField]
public ResPath Map = new("/Maps/_DV/centcomm.yml"); // DeltaV
public ResPath Map = new("/Maps/_DV/midpoint.yml"); // DeltaV
/// <summary>
/// Centcomm entity that was loaded.

View File

@ -218,7 +218,7 @@ public sealed partial class EmergencyShuttleSystem
if (!ShuttlesLeft && _consoleAccumulator <= 0f)
{
ShuttlesLeft = true;
_chatSystem.DispatchGlobalAnnouncement(Loc.GetString("emergency-shuttle-left", ("transitTime", $"{TransitTime:0}")));
_chatSystem.DispatchGlobalAnnouncement(Loc.GetString("emergency-shuttle-left-deltav", ("transitTime", $"{TransitTime:0}"))); // DeltaV - midpoint station
Timer.Spawn((int)(TransitTime * 1000) + _bufferTime.Milliseconds, () => _roundEnd.EndRound(), _roundEndCancelToken?.Token ?? default);
}

View File

@ -0,0 +1,29 @@
using Content.Server._DV.Station.Systems;
using Robust.Shared.Utility;
namespace Content.Server._DV.Station.Components;
/// <summary>
/// Spawns the non-emergency shuttle Central Command for a station on the same map as the <see cref="StationCentcommComponent"/>
/// </summary>
[RegisterComponent, Access(typeof(StationSecondaryCentcommSystem))]
public sealed partial class StationSecondaryCentcommComponent : Component
{
/// <summary>
/// The grid to load as secondary Central Command
/// </summary>
[DataField]
public ResPath Path = new("/Maps/_DV/centcomm.yml");
/// <summary>
/// Minimum distance to load the grid at.
/// </summary>
[DataField]
public float MinRange = 1000f;
/// <summary>
/// Maximum distance to load the grid at.
/// </summary>
[DataField]
public float MaxRange = 1200f;
}

View File

@ -0,0 +1,34 @@
using Content.Server._DV.Station.Components;
using Content.Server.Shuttles.Components;
using Content.Server.Station.Events;
using Robust.Shared.EntitySerialization.Systems;
using Robust.Shared.Map.Components;
using Robust.Shared.Random;
namespace Content.Server._DV.Station.Systems;
public sealed partial class StationSecondaryCentcommSystem : EntitySystem
{
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly MapLoaderSystem _mapLoader = default!;
[Dependency] private readonly SharedTransformSystem _xform = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<StationSecondaryCentcommComponent, StationPostInitEvent>(OnStationPostInit);
}
private void OnStationPostInit(Entity<StationSecondaryCentcommComponent> ent, ref StationPostInitEvent args)
{
if (!TryComp<StationCentcommComponent>(ent, out var centComm) || centComm.Entity is not { } gridUid || centComm.MapEntity is not { } mapUid)
return;
if (!TryComp<MapComponent>(mapUid, out var map))
return;
var offset = _random.NextVector2(ent.Comp.MinRange, ent.Comp.MaxRange);
_mapLoader.TryLoadGrid(map.MapId, ent.Comp.Path, out _, offset: _xform.GetWorldPosition(gridUid) + offset);
}
}

View File

@ -1,7 +1,6 @@
[game]
hostname = "[EN][MRP] Delta-v (Ψ) | Apoapsis [US East 1]"
soft_max_players = 80
round_restart_time = 30
[game.spare_id]
auto_unlock = false # Disabled for apo until if/when command whitelist

View File

@ -6,6 +6,7 @@ station-beacon-logistics-reception = Logistics
station-beacon-lo = LO
station-beacon-conference-room = Conference Room
station-beacon-command-bar = Command Bar
station-beacon-cloning = Cloning
station-beacon-virology = Virology
@ -23,11 +24,13 @@ station-beacon-engi-outpost = Engi Outpost
station-beacon-janitor-office = Jani Office
station-beacon-janitor-closet = Jani Closet
station-beacon-reporter = Reporter
station-beacon-shop = Shop
station-beacon-camera-servers = Cameras
station-beacon-boxing-ring = Boxing
station-beacon-park = Park
station-beacon-laser-tag = Laser Tag
station-beacon-corpsman = Corpsman

View File

@ -0,0 +1 @@
ent-EscapeShuttleObjective = Escape to Midpoint alive and unrestrained

View File

@ -0,0 +1 @@
emergency-shuttle-left-deltav = The Emergency Shuttle has left the station. Estimate {$transitTime} seconds until the shuttle arrives at Midpoint Station.

File diff suppressed because it is too large Load Diff

View File

@ -120,6 +120,7 @@
abstract: true
components:
- type: StationCentcomm
- type: StationSecondaryCentcomm # DeltaV - midpoint station
- type: entity
id: BaseStationEvacuation

View File

@ -7,6 +7,14 @@
- type: NavMapBeacon
defaultText: station-beacon-conference-room
- type: entity
parent: DefaultStationBeaconCommand
id: DefaultStationBeaconCommandBar
suffix: Command Bar
components:
- type: NavMapBeacon
defaultText: station-beacon-command-bar
#Medical
- type: entity
parent: DefaultStationBeaconMedical
@ -100,6 +108,14 @@
- type: NavMapBeacon
defaultText: station-beacon-reporter
- type: entity
parent: DefaultStationBeaconService
id: DefaultStationBeaconShop
suffix: Shop
components:
- type: NavMapBeacon
defaultText: station-beacon-shop
#Surveilance
- type: entity
parent: DefaultStationBeaconAI
@ -126,6 +142,14 @@
- type: NavMapBeacon
defaultText: station-beacon-park
- type: entity
parent: DefaultStationBeacon
id: DefaultStationBeaconLaserTag
suffix: Laser Tag
components:
- type: NavMapBeacon
defaultText: station-beacon-laser-tag
#Security
- type: entity
parent: DefaultStationBeaconSecurity