Use nav beacon locations for announcements (#26437)

* use nav beacon locations for announcements

* :thumbs_up:
This commit is contained in:
Nemanja
2024-03-28 01:53:18 -04:00
committed by GitHub
parent b064985f24
commit 766192f4b5
15 changed files with 231 additions and 98 deletions

View File

@@ -13,6 +13,7 @@ using Robust.Shared.Serialization.Manager;
using System.Numerics; using System.Numerics;
using Robust.Shared.Audio; using Robust.Shared.Audio;
using Robust.Shared.Audio.Systems; using Robust.Shared.Audio.Systems;
using Robust.Shared.Utility;
namespace Content.Server.Dragon; namespace Content.Server.Dragon;
@@ -69,8 +70,9 @@ public sealed class DragonRiftSystem : EntitySystem
comp.State = DragonRiftState.AlmostFinished; comp.State = DragonRiftState.AlmostFinished;
Dirty(uid, comp); Dirty(uid, comp);
var location = xform.LocalPosition; var msg = Loc.GetString("carp-rift-warning",
_chat.DispatchGlobalAnnouncement(Loc.GetString("carp-rift-warning", ("location", location)), playSound: false, colorOverride: Color.Red); ("location", FormattedMessage.RemoveMarkup(_navMap.GetNearestBeaconString((uid, xform)))));
_chat.DispatchGlobalAnnouncement(msg, playSound: false, colorOverride: Color.Red);
_audio.PlayGlobal("/Audio/Misc/notice1.ogg", Filter.Broadcast(), true); _audio.PlayGlobal("/Audio/Misc/notice1.ogg", Filter.Broadcast(), true);
_navMap.SetBeaconEnabled(uid, true); _navMap.SetBeaconEnabled(uid, true);
} }

View File

@@ -3,6 +3,7 @@ using Content.Server.Body.Systems;
using Content.Server.Chemistry.Containers.EntitySystems; using Content.Server.Chemistry.Containers.EntitySystems;
using Content.Server.Explosion.Components; using Content.Server.Explosion.Components;
using Content.Server.Flash; using Content.Server.Flash;
using Content.Server.Pinpointer;
using Content.Shared.Flash.Components; using Content.Shared.Flash.Components;
using Content.Server.Radio.EntitySystems; using Content.Server.Radio.EntitySystems;
using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components;
@@ -31,6 +32,7 @@ using Robust.Shared.Prototypes;
using Robust.Shared.Random; using Robust.Shared.Random;
using Robust.Shared.Player; using Robust.Shared.Player;
using Content.Shared.Coordinates; using Content.Shared.Coordinates;
using Robust.Shared.Utility;
namespace Content.Server.Explosion.EntitySystems namespace Content.Server.Explosion.EntitySystems
{ {
@@ -67,6 +69,7 @@ namespace Content.Server.Explosion.EntitySystems
[Dependency] private readonly BodySystem _body = default!; [Dependency] private readonly BodySystem _body = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedTransformSystem _transformSystem = default!; [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
[Dependency] private readonly NavMapSystem _navMap = default!;
[Dependency] private readonly RadioSystem _radioSystem = default!; [Dependency] private readonly RadioSystem _radioSystem = default!;
[Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
@@ -185,12 +188,7 @@ namespace Content.Server.Explosion.EntitySystems
return; return;
// Gets location of the implant // Gets location of the implant
var ownerXform = Transform(uid); var posText = FormattedMessage.RemoveMarkup(_navMap.GetNearestBeaconString(uid));
var pos = ownerXform.MapPosition;
var x = (int) pos.X;
var y = (int) pos.Y;
var posText = $"({x}, {y})";
var critMessage = Loc.GetString(component.CritMessage, ("user", implanted.ImplantedEntity.Value), ("position", posText)); var critMessage = Loc.GetString(component.CritMessage, ("user", implanted.ImplantedEntity.Value), ("position", posText));
var deathMessage = Loc.GetString(component.DeathMessage, ("user", implanted.ImplantedEntity.Value), ("position", posText)); var deathMessage = Loc.GetString(component.DeathMessage, ("user", implanted.ImplantedEntity.Value), ("position", posText));

View File

@@ -21,6 +21,7 @@ using Robust.Shared.Map;
using Robust.Shared.Map.Components; using Robust.Shared.Map.Components;
using Robust.Shared.Player; using Robust.Shared.Player;
using Robust.Shared.Random; using Robust.Shared.Random;
using Robust.Shared.Utility;
namespace Content.Server.Nuke; namespace Content.Server.Nuke;
@@ -463,7 +464,8 @@ public sealed class NukeSystem : EntitySystem
// warn a crew // warn a crew
var announcement = Loc.GetString("nuke-component-announcement-armed", var announcement = Loc.GetString("nuke-component-announcement-armed",
("time", (int) component.RemainingTime), ("position", posText)); ("time", (int) component.RemainingTime),
("location", FormattedMessage.RemoveMarkup(_navMap.GetNearestBeaconString((uid, nukeXform)))));
var sender = Loc.GetString("nuke-component-announcement-sender"); var sender = Loc.GetString("nuke-component-announcement-sender");
_chatSystem.DispatchStationAnnouncement(stationUid ?? uid, announcement, sender, false, null, Color.Red); _chatSystem.DispatchStationAnnouncement(stationUid ?? uid, announcement, sender, false, null, Color.Red);

View File

@@ -1,12 +1,16 @@
using System.Diagnostics.CodeAnalysis;
using Content.Server.Administration.Logs; using Content.Server.Administration.Logs;
using Content.Server.Station.Systems; using Content.Server.Station.Systems;
using Content.Server.Warps; using Content.Server.Warps;
using Content.Shared.Database; using Content.Shared.Database;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Localizations;
using Content.Shared.Pinpointer; using Content.Shared.Pinpointer;
using Content.Shared.Tag; using Content.Shared.Tag;
using JetBrains.Annotations;
using Robust.Server.GameObjects; using Robust.Server.GameObjects;
using Robust.Shared.GameStates; using Robust.Shared.GameStates;
using Robust.Shared.Map;
using Robust.Shared.Map.Components; using Robust.Shared.Map.Components;
using Robust.Shared.Physics; using Robust.Shared.Physics;
using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Components;
@@ -22,10 +26,15 @@ public sealed class NavMapSystem : SharedNavMapSystem
[Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly TagSystem _tags = default!; [Dependency] private readonly TagSystem _tags = default!;
[Dependency] private readonly MapSystem _map = default!; [Dependency] private readonly MapSystem _map = default!;
[Dependency] private readonly IMapManager _mapManager = default!;
[Dependency] private readonly TransformSystem _transform = default!;
private EntityQuery<PhysicsComponent> _physicsQuery; private EntityQuery<PhysicsComponent> _physicsQuery;
private EntityQuery<TagComponent> _tagQuery; private EntityQuery<TagComponent> _tagQuery;
public const float CloseDistance = 15f;
public const float FarDistance = 30f;
public override void Initialize() public override void Initialize()
{ {
base.Initialize(); base.Initialize();
@@ -40,6 +49,7 @@ public sealed class NavMapSystem : SharedNavMapSystem
SubscribeLocalEvent<NavMapComponent, ComponentGetState>(OnGetState); SubscribeLocalEvent<NavMapComponent, ComponentGetState>(OnGetState);
SubscribeLocalEvent<GridSplitEvent>(OnNavMapSplit); SubscribeLocalEvent<GridSplitEvent>(OnNavMapSplit);
SubscribeLocalEvent<NavMapBeaconComponent, MapInitEvent>(OnNavMapBeaconMapInit);
SubscribeLocalEvent<NavMapBeaconComponent, ComponentStartup>(OnNavMapBeaconStartup); SubscribeLocalEvent<NavMapBeaconComponent, ComponentStartup>(OnNavMapBeaconStartup);
SubscribeLocalEvent<NavMapBeaconComponent, AnchorStateChangedEvent>(OnNavMapBeaconAnchor); SubscribeLocalEvent<NavMapBeaconComponent, AnchorStateChangedEvent>(OnNavMapBeaconAnchor);
@@ -57,6 +67,16 @@ public sealed class NavMapSystem : SharedNavMapSystem
RefreshGrid(ev.GridId, comp, Comp<MapGridComponent>(ev.GridId)); RefreshGrid(ev.GridId, comp, Comp<MapGridComponent>(ev.GridId));
} }
private void OnNavMapBeaconMapInit(EntityUid uid, NavMapBeaconComponent component, MapInitEvent args)
{
if (component.DefaultText == null || component.Text != null)
return;
component.Text = Loc.GetString(component.DefaultText);
Dirty(uid, component);
RefreshNavGrid(uid);
}
private void OnNavMapBeaconStartup(EntityUid uid, NavMapBeaconComponent component, ComponentStartup args) private void OnNavMapBeaconStartup(EntityUid uid, NavMapBeaconComponent component, ComponentStartup args)
{ {
RefreshNavGrid(uid); RefreshNavGrid(uid);
@@ -384,4 +404,101 @@ public sealed class NavMapSystem : SharedNavMapSystem
SetBeaconEnabled(uid, !comp.Enabled, comp); SetBeaconEnabled(uid, !comp.Enabled, comp);
} }
/// <summary>
/// For a given position, tries to find the nearest configurable beacon that is marked as visible.
/// This is used for things like announcements where you want to find the closest "landmark" to something.
/// </summary>
[PublicAPI]
public bool TryGetNearestBeacon(Entity<TransformComponent?> ent,
[NotNullWhen(true)] out Entity<NavMapBeaconComponent>? beacon,
[NotNullWhen(true)] out MapCoordinates? beaconCoords)
{
beacon = null;
beaconCoords = null;
if (!Resolve(ent, ref ent.Comp))
return false;
return TryGetNearestBeacon(_transform.GetMapCoordinates(ent, ent.Comp), out beacon, out beaconCoords);
}
/// <summary>
/// For a given position, tries to find the nearest configurable beacon that is marked as visible.
/// This is used for things like announcements where you want to find the closest "landmark" to something.
/// </summary>
public bool TryGetNearestBeacon(MapCoordinates coordinates,
[NotNullWhen(true)] out Entity<NavMapBeaconComponent>? beacon,
[NotNullWhen(true)] out MapCoordinates? beaconCoords)
{
beacon = null;
beaconCoords = null;
var minDistance = float.PositiveInfinity;
var query = EntityQueryEnumerator<ConfigurableNavMapBeaconComponent, NavMapBeaconComponent, TransformComponent>();
while (query.MoveNext(out var uid, out _, out var navBeacon, out var xform))
{
if (!navBeacon.Enabled)
continue;
if (navBeacon.Text == null)
continue;
if (coordinates.MapId != xform.MapID)
continue;
var coords = _transform.GetWorldPosition(xform);
var distanceSquared = (coordinates.Position - coords).LengthSquared();
if (!float.IsInfinity(minDistance) && distanceSquared >= minDistance)
continue;
minDistance = distanceSquared;
beacon = (uid, navBeacon);
beaconCoords = new MapCoordinates(coords, xform.MapID);
}
return beacon != null;
}
[PublicAPI]
public string GetNearestBeaconString(Entity<TransformComponent?> ent)
{
if (!Resolve(ent, ref ent.Comp))
return Loc.GetString("nav-beacon-pos-no-beacons");
return GetNearestBeaconString(_transform.GetMapCoordinates(ent, ent.Comp));
}
public string GetNearestBeaconString(MapCoordinates coordinates)
{
if (!TryGetNearestBeacon(coordinates, out var beacon, out var pos))
return Loc.GetString("nav-beacon-pos-no-beacons");
var gridOffset = Angle.Zero;
if (_mapManager.TryFindGridAt(pos.Value, out var grid, out _))
gridOffset = Transform(grid).LocalRotation;
// get the angle between the two positions, adjusted for the grid rotation so that
// we properly preserve north in relation to the grid.
var dir = (pos.Value.Position - coordinates.Position).ToWorldAngle();
var adjustedDir = (dir - gridOffset).GetDir();
var length = (pos.Value.Position - coordinates.Position).Length();
if (length < CloseDistance)
{
return Loc.GetString("nav-beacon-pos-format",
("color", beacon.Value.Comp.Color),
("marker", beacon.Value.Comp.Text!));
}
var modifier = length > FarDistance
? Loc.GetString("nav-beacon-pos-format-direction-mod-far")
: string.Empty;
// we can null suppress the text being null because TRyGetNearestVisibleStationBeacon always gives us a beacon with not-null text.
return Loc.GetString("nav-beacon-pos-format-direction",
("modifier", modifier),
("direction", ContentLocalizationManager.FormatDirection(adjustedDir).ToLowerInvariant()),
("color", beacon.Value.Comp.Color),
("marker", beacon.Value.Comp.Text!));
}
} }

View File

@@ -8,6 +8,7 @@ using Content.Server.Communications;
using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Components;
using Content.Server.DeviceNetwork.Systems; using Content.Server.DeviceNetwork.Systems;
using Content.Server.GameTicking.Events; using Content.Server.GameTicking.Events;
using Content.Server.Pinpointer;
using Content.Server.Popups; using Content.Server.Popups;
using Content.Server.RoundEnd; using Content.Server.RoundEnd;
using Content.Server.Screens.Components; using Content.Server.Screens.Components;
@@ -33,6 +34,7 @@ using Robust.Shared.Map.Components;
using Robust.Shared.Player; using Robust.Shared.Player;
using Robust.Shared.Random; using Robust.Shared.Random;
using Robust.Shared.Timing; using Robust.Shared.Timing;
using Robust.Shared.Utility;
namespace Content.Server.Shuttles.Systems; namespace Content.Server.Shuttles.Systems;
@@ -55,6 +57,7 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem
[Dependency] private readonly DockingSystem _dock = default!; [Dependency] private readonly DockingSystem _dock = default!;
[Dependency] private readonly EntityManager _entityManager = default!; [Dependency] private readonly EntityManager _entityManager = default!;
[Dependency] private readonly IdCardSystem _idSystem = default!; [Dependency] private readonly IdCardSystem _idSystem = default!;
[Dependency] private readonly NavMapSystem _navMap = default!;
[Dependency] private readonly MapLoaderSystem _map = default!; [Dependency] private readonly MapLoaderSystem _map = default!;
[Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly PopupSystem _popup = default!;
[Dependency] private readonly RoundEndSystem _roundEnd = default!; [Dependency] private readonly RoundEndSystem _roundEnd = default!;
@@ -307,11 +310,8 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem
} }
else else
{ {
if (TryComp<TransformComponent>(targetGrid.Value, out var targetXform)) var location = FormattedMessage.RemoveMarkup(_navMap.GetNearestBeaconString((stationShuttle.EmergencyShuttle.Value, xform)));
{ _chatSystem.DispatchStationAnnouncement(stationUid, Loc.GetString("emergency-shuttle-nearby", ("direction", location)), playDefaultSound: false);
var angle = _dock.GetAngle(stationShuttle.EmergencyShuttle.Value, xform, targetGrid.Value, targetXform, xformQuery);
_chatSystem.DispatchStationAnnouncement(stationUid, Loc.GetString("emergency-shuttle-nearby", ("direction", angle.GetDir())), playDefaultSound: false);
}
_logger.Add(LogType.EmergencyShuttle, LogImpact.High, $"Emergency shuttle {ToPrettyString(stationUid)} unable to find a valid docking port for {ToPrettyString(stationUid)}"); _logger.Add(LogType.EmergencyShuttle, LogImpact.High, $"Emergency shuttle {ToPrettyString(stationUid)} unable to find a valid docking port for {ToPrettyString(stationUid)}");
// TODO: Need filter extensions or something don't blame me. // TODO: Need filter extensions or something don't blame me.

View File

@@ -119,6 +119,14 @@ namespace Content.Shared.Localizations
}; };
} }
/// <summary>
/// Formats a direction struct as a human-readable string.
/// </summary>
public static string FormatDirection(Direction dir)
{
return Loc.GetString($"zzzz-fmt-direction-{dir.ToString()}");
}
private static ILocValue FormatLoc(LocArgs args) private static ILocValue FormatLoc(LocArgs args)
{ {
var id = ((LocValueString) args.Args[0]).Value; var id = ((LocValueString) args.Args[0]).Value;

View File

@@ -16,6 +16,13 @@ public sealed partial class NavMapBeaconComponent : Component
[AutoNetworkedField] [AutoNetworkedField]
public string? Text; public string? Text;
/// <summary>
/// A localization string that populates <see cref="Text"/> if it is null at mapinit.
/// Used so that mappers can still override Text while mapping.
/// </summary>
[DataField]
public LocId? DefaultText;
[ViewVariables(VVAccess.ReadWrite), DataField] [ViewVariables(VVAccess.ReadWrite), DataField]
[AutoNetworkedField] [AutoNetworkedField]
public Color Color = Color.Orange; public Color Color = Color.Orange;

View File

@@ -8,13 +8,6 @@ public abstract class SharedNavMapSystem : EntitySystem
{ {
public const byte ChunkSize = 4; public const byte ChunkSize = 4;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<NavMapBeaconComponent, MapInitEvent>(OnNavMapBeaconMapInit);
}
/// <summary> /// <summary>
/// Converts the chunk's tile into a bitflag for the slot. /// Converts the chunk's tile into a bitflag for the slot.
/// </summary> /// </summary>
@@ -38,13 +31,6 @@ public abstract class SharedNavMapSystem : EntitySystem
return new Vector2i(x, y); return new Vector2i(x, y);
} }
private void OnNavMapBeaconMapInit(EntityUid uid, NavMapBeaconComponent component, MapInitEvent args)
{
component.Text ??= string.Empty;
component.Text = Loc.GetString(component.Text);
Dirty(uid, component);
}
[Serializable, NetSerializable] [Serializable, NetSerializable]
protected sealed class NavMapComponentState : ComponentState protected sealed class NavMapComponentState : ComponentState
{ {

View File

@@ -0,0 +1,8 @@
zzzz-fmt-direction-North = North
zzzz-fmt-direction-South = South
zzzz-fmt-direction-East = East
zzzz-fmt-direction-West = West
zzzz-fmt-direction-NorthEast = NorthEast
zzzz-fmt-direction-SouthEast = SouthEast
zzzz-fmt-direction-NorthWest = NorthWest
zzzz-fmt-direction-SouthWest = SouthWest

View File

@@ -1,4 +1,4 @@
carp-rift-warning = A rift is causing an unnaturally large energy flux at {$location}. Stop it at all costs! carp-rift-warning = A rift is causing an unnaturally large energy flux {$location}. Stop it at all costs!
carp-rift-duplicate = Cannot have 2 charging rifts at the same time! carp-rift-duplicate = Cannot have 2 charging rifts at the same time!
carp-rift-examine = It is [color=yellow]{$percentage}%[/color] charged! carp-rift-examine = It is [color=yellow]{$percentage}%[/color] charged!
carp-rift-max = You have reached your maximum amount of rifts carp-rift-max = You have reached your maximum amount of rifts

View File

@@ -22,5 +22,5 @@ scramble-implant-activated-popup = Your appearance shifts and changes!
## Implant Messages ## Implant Messages
deathrattle-implant-dead-message = {$user} has died at {$position}. deathrattle-implant-dead-message = {$user} has died {$position}.
deathrattle-implant-critical-message = {$user} life signs critical, immediate assistance required at {$position}. deathrattle-implant-critical-message = {$user} life signs critical, immediate assistance required {$position}.

View File

@@ -11,3 +11,8 @@ nav-beacon-examine-text = It is [color={$enabled ->
[true] forestgreen]on [true] forestgreen]on
*[false] crimson]off *[false] crimson]off
}[/color] and the display reads [color={$color}]"{$label}"[/color] }[/color] and the display reads [color={$color}]"{$label}"[/color]
nav-beacon-pos-no-beacons = in the middle of nowhere
nav-beacon-pos-format = [color={$color}]near {$marker}[/color]
nav-beacon-pos-format-direction = [color={$color}]{$modifier}{$direction} of {$marker}[/color]
nav-beacon-pos-format-direction-mod-far = far {""}

View File

@@ -1,6 +1,6 @@
nuke-component-cant-anchor-floor = The anchoring bolts fail to lock into the floor! nuke-component-cant-anchor-floor = The anchoring bolts fail to lock into the floor!
nuke-component-announcement-sender = Nuclear Fission Explosive nuke-component-announcement-sender = Nuclear Fission Explosive
nuke-component-announcement-armed = Attention! The station's self-destruct mechanism has been engaged at global coordinates {$position}. {$time} seconds until detonation. If this was made in error, the mechanism may still be disarmed. nuke-component-announcement-armed = Attention! The station's self-destruct mechanism has been engaged {$location}. {$time} seconds until detonation. If this was made in error, the mechanism may still be disarmed.
nuke-component-announcement-unarmed = The station's self-destruct was deactivated! Have a nice day! nuke-component-announcement-unarmed = The station's self-destruct was deactivated! Have a nice day!
nuke-component-announcement-send-codes = Attention! Self-destruction codes have been sent to designated fax machines. nuke-component-announcement-send-codes = Attention! Self-destruction codes have been sent to designated fax machines.
nuke-component-doafter-warning = You start fiddling with wires and knobs in order to disarm the nuke.. This may take a while. nuke-component-doafter-warning = You start fiddling with wires and knobs in order to disarm the nuke.. This may take a while.

View File

@@ -15,7 +15,7 @@ emergency-shuttle-left = The Emergency Shuttle has left the station. Estimate {$
emergency-shuttle-launch-time = The emergency shuttle will launch in {$consoleAccumulator} seconds. emergency-shuttle-launch-time = The emergency shuttle will launch in {$consoleAccumulator} seconds.
emergency-shuttle-docked = The Emergency Shuttle has docked with the station on the {$direction} side. It will leave in {$time} seconds. emergency-shuttle-docked = The Emergency Shuttle has docked with the station on the {$direction} side. It will leave in {$time} seconds.
emergency-shuttle-good-luck = The Emergency Shuttle is unable to find a station. Good luck. emergency-shuttle-good-luck = The Emergency Shuttle is unable to find a station. Good luck.
emergency-shuttle-nearby = The Emergency Shuttle is unable to find a valid docking port. It has warped in {$direction} of the station. emergency-shuttle-nearby = The Emergency Shuttle is unable to find a valid docking port. It has warped {$direction}.
# Emergency shuttle console popup / announcement # Emergency shuttle console popup / announcement
emergency-shuttle-console-no-early-launches = Early launch is disabled emergency-shuttle-console-no-early-launches = Early launch is disabled

View File

@@ -22,7 +22,7 @@
False: {state: icon} False: {state: icon}
- type: ConfigurableNavMapBeacon - type: ConfigurableNavMapBeacon
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-general defaultText: station-beacon-general
color: "#D4D4D496" color: "#D4D4D496"
- type: WarpPoint - type: WarpPoint
- type: ActivatableUI - type: ActivatableUI
@@ -118,7 +118,7 @@
suffix: Command suffix: Command
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-command defaultText: station-beacon-command
color: "#FFFF00" color: "#FFFF00"
- type: entity - type: entity
@@ -127,7 +127,7 @@
suffix: Bridge suffix: Bridge
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-bridge defaultText: station-beacon-bridge
- type: entity - type: entity
parent: DefaultStationBeaconCommand parent: DefaultStationBeaconCommand
@@ -135,7 +135,7 @@
suffix: Vault suffix: Vault
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-vault defaultText: station-beacon-vault
- type: entity - type: entity
parent: DefaultStationBeaconCommand parent: DefaultStationBeaconCommand
@@ -143,7 +143,7 @@
suffix: Captain's Quarters suffix: Captain's Quarters
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-captain defaultText: station-beacon-captain
- type: entity - type: entity
parent: DefaultStationBeaconCommand parent: DefaultStationBeaconCommand
@@ -151,7 +151,7 @@
suffix: HOP's Office suffix: HOP's Office
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-hop defaultText: station-beacon-hop
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -159,7 +159,7 @@
suffix: Security suffix: Security
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-security defaultText: station-beacon-security
color: "#DE3A3A" color: "#DE3A3A"
- type: entity - type: entity
@@ -168,7 +168,7 @@
suffix: Brig suffix: Brig
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-brig defaultText: station-beacon-brig
- type: entity - type: entity
parent: DefaultStationBeaconSecurity parent: DefaultStationBeaconSecurity
@@ -176,7 +176,7 @@
suffix: Warden's Office suffix: Warden's Office
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-warden defaultText: station-beacon-warden
- type: entity - type: entity
parent: DefaultStationBeaconSecurity parent: DefaultStationBeaconSecurity
@@ -184,7 +184,7 @@
suffix: HOSs Room suffix: HOSs Room
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-hos defaultText: station-beacon-hos
- type: entity - type: entity
parent: DefaultStationBeaconSecurity parent: DefaultStationBeaconSecurity
@@ -192,7 +192,7 @@
suffix: Armory suffix: Armory
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-armory defaultText: station-beacon-armory
- type: entity - type: entity
parent: DefaultStationBeaconSecurity parent: DefaultStationBeaconSecurity
@@ -200,7 +200,7 @@
suffix: Perma Brig suffix: Perma Brig
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-perma-brig defaultText: station-beacon-perma-brig
- type: entity - type: entity
parent: DefaultStationBeaconSecurity parent: DefaultStationBeaconSecurity
@@ -208,7 +208,7 @@
suffix: Detective's Room suffix: Detective's Room
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-detective defaultText: station-beacon-detective
- type: entity - type: entity
parent: DefaultStationBeaconSecurity parent: DefaultStationBeaconSecurity
@@ -216,7 +216,7 @@
suffix: Courtroom suffix: Courtroom
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-courtroom defaultText: station-beacon-courtroom
- type: entity - type: entity
parent: DefaultStationBeaconSecurity parent: DefaultStationBeaconSecurity
@@ -224,7 +224,7 @@
suffix: Law Office suffix: Law Office
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-law defaultText: station-beacon-law
- type: entity - type: entity
parent: DefaultStationBeaconSecurity parent: DefaultStationBeaconSecurity
@@ -232,7 +232,7 @@
suffix: Sec Checkpoint suffix: Sec Checkpoint
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-security-checkpoint defaultText: station-beacon-security-checkpoint
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -240,7 +240,7 @@
suffix: Medical suffix: Medical
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-medical defaultText: station-beacon-medical
color: "#52B4E9" color: "#52B4E9"
- type: entity - type: entity
@@ -249,7 +249,7 @@
suffix: Medbay suffix: Medbay
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-medbay defaultText: station-beacon-medbay
- type: entity - type: entity
parent: DefaultStationBeaconMedical parent: DefaultStationBeaconMedical
@@ -257,7 +257,7 @@
suffix: Chemistry suffix: Chemistry
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-chemistry defaultText: station-beacon-chemistry
- type: entity - type: entity
parent: DefaultStationBeaconMedical parent: DefaultStationBeaconMedical
@@ -265,7 +265,7 @@
suffix: Cryonics suffix: Cryonics
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-cryonics defaultText: station-beacon-cryonics
- type: entity - type: entity
parent: DefaultStationBeaconMedical parent: DefaultStationBeaconMedical
@@ -273,7 +273,7 @@
suffix: CMO's room suffix: CMO's room
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-cmo defaultText: station-beacon-cmo
- type: entity - type: entity
parent: DefaultStationBeaconMedical parent: DefaultStationBeaconMedical
@@ -281,7 +281,7 @@
suffix: Morgue suffix: Morgue
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-morgue defaultText: station-beacon-morgue
- type: entity - type: entity
parent: DefaultStationBeaconMedical parent: DefaultStationBeaconMedical
@@ -289,7 +289,7 @@
suffix: Surgery suffix: Surgery
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-surgery defaultText: station-beacon-surgery
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -297,7 +297,7 @@
suffix: Science suffix: Science
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-science defaultText: station-beacon-science
color: "#D381C9" color: "#D381C9"
- type: entity - type: entity
@@ -306,7 +306,7 @@
suffix: Research and Development suffix: Research and Development
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-research-and-development defaultText: station-beacon-research-and-development
- type: entity - type: entity
parent: DefaultStationBeaconScience parent: DefaultStationBeaconScience
@@ -314,7 +314,7 @@
suffix: Research Server Room suffix: Research Server Room
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-research-server defaultText: station-beacon-research-server
- type: entity - type: entity
parent: DefaultStationBeaconScience parent: DefaultStationBeaconScience
@@ -322,7 +322,7 @@
suffix: RD's Room suffix: RD's Room
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-research-director defaultText: station-beacon-research-director
- type: entity - type: entity
parent: DefaultStationBeaconScience parent: DefaultStationBeaconScience
@@ -330,7 +330,7 @@
suffix: Robotics suffix: Robotics
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-robotics defaultText: station-beacon-robotics
- type: entity - type: entity
parent: DefaultStationBeaconScience parent: DefaultStationBeaconScience
@@ -338,7 +338,7 @@
suffix: Artifact Lab suffix: Artifact Lab
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-artifact-lab defaultText: station-beacon-artifact-lab
- type: entity - type: entity
parent: DefaultStationBeaconScience parent: DefaultStationBeaconScience
@@ -346,7 +346,7 @@
suffix: Anomaly Generator suffix: Anomaly Generator
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-anomaly-gen defaultText: station-beacon-anomaly-gen
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -354,7 +354,7 @@
suffix: Supply suffix: Supply
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-supply defaultText: station-beacon-supply
color: "#A46106" color: "#A46106"
- type: entity - type: entity
@@ -363,7 +363,7 @@
suffix: Cargo Reception suffix: Cargo Reception
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-cargo defaultText: station-beacon-cargo
- type: entity - type: entity
parent: DefaultStationBeaconSupply parent: DefaultStationBeaconSupply
@@ -371,7 +371,7 @@
suffix: Cargo Bay suffix: Cargo Bay
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-cargo-bay defaultText: station-beacon-cargo-bay
- type: entity - type: entity
parent: DefaultStationBeaconSupply parent: DefaultStationBeaconSupply
@@ -379,7 +379,7 @@
suffix: QM's Room suffix: QM's Room
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-qm defaultText: station-beacon-qm
- type: entity - type: entity
parent: DefaultStationBeaconSupply parent: DefaultStationBeaconSupply
@@ -387,7 +387,7 @@
suffix: Salvage suffix: Salvage
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-salvage defaultText: station-beacon-salvage
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -395,7 +395,7 @@
suffix: Engineering suffix: Engineering
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-engineering defaultText: station-beacon-engineering
color: "#EFB341" color: "#EFB341"
- type: entity - type: entity
@@ -404,7 +404,7 @@
suffix: CE's Room suffix: CE's Room
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-ce defaultText: station-beacon-ce
- type: entity - type: entity
parent: DefaultStationBeaconEngineering parent: DefaultStationBeaconEngineering
@@ -412,7 +412,7 @@
suffix: AME suffix: AME
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-ame defaultText: station-beacon-ame
- type: entity - type: entity
parent: DefaultStationBeaconEngineering parent: DefaultStationBeaconEngineering
@@ -420,7 +420,7 @@
suffix: Solars suffix: Solars
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-solars defaultText: station-beacon-solars
- type: entity - type: entity
parent: DefaultStationBeaconEngineering parent: DefaultStationBeaconEngineering
@@ -428,7 +428,7 @@
suffix: Grav Gen suffix: Grav Gen
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-gravgen defaultText: station-beacon-gravgen
- type: entity - type: entity
parent: DefaultStationBeaconEngineering parent: DefaultStationBeaconEngineering
@@ -436,7 +436,7 @@
suffix: PA Control suffix: PA Control
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-pa defaultText: station-beacon-pa
- type: entity - type: entity
parent: DefaultStationBeaconEngineering parent: DefaultStationBeaconEngineering
@@ -444,7 +444,7 @@
suffix: SMES Power Bank suffix: SMES Power Bank
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-smes defaultText: station-beacon-smes
- type: entity - type: entity
parent: DefaultStationBeaconEngineering parent: DefaultStationBeaconEngineering
@@ -452,7 +452,7 @@
suffix: Telecoms suffix: Telecoms
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-telecoms defaultText: station-beacon-telecoms
- type: entity - type: entity
parent: DefaultStationBeaconEngineering parent: DefaultStationBeaconEngineering
@@ -460,7 +460,7 @@
suffix: Atmospherics suffix: Atmospherics
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-atmos defaultText: station-beacon-atmos
- type: entity - type: entity
parent: DefaultStationBeaconEngineering parent: DefaultStationBeaconEngineering
@@ -468,7 +468,7 @@
suffix: TEG suffix: TEG
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-teg defaultText: station-beacon-teg
- type: entity - type: entity
parent: DefaultStationBeaconEngineering parent: DefaultStationBeaconEngineering
@@ -476,7 +476,7 @@
suffix: Tech Vault suffix: Tech Vault
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-tech-vault defaultText: station-beacon-tech-vault
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -484,7 +484,7 @@
suffix: Service suffix: Service
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-service defaultText: station-beacon-service
color: "#9FED58" color: "#9FED58"
- type: entity - type: entity
@@ -493,7 +493,7 @@
suffix: Kitchen suffix: Kitchen
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-kitchen defaultText: station-beacon-kitchen
- type: entity - type: entity
parent: DefaultStationBeaconService parent: DefaultStationBeaconService
@@ -501,7 +501,7 @@
suffix: Bar suffix: Bar
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-bar defaultText: station-beacon-bar
- type: entity - type: entity
parent: DefaultStationBeaconService parent: DefaultStationBeaconService
@@ -509,7 +509,7 @@
suffix: Botany suffix: Botany
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-botany defaultText: station-beacon-botany
- type: entity - type: entity
parent: DefaultStationBeaconService parent: DefaultStationBeaconService
@@ -517,7 +517,7 @@
suffix: Janitor's Closet suffix: Janitor's Closet
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-janitor defaultText: station-beacon-janitor
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -525,7 +525,7 @@
suffix: AI suffix: AI
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-ai defaultText: station-beacon-ai
color: "#2ed2fd" color: "#2ed2fd"
- type: entity - type: entity
@@ -534,7 +534,7 @@
suffix: AI Satellite suffix: AI Satellite
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-ai-sat defaultText: station-beacon-ai-sat
- type: entity - type: entity
parent: DefaultStationBeaconAI parent: DefaultStationBeaconAI
@@ -542,7 +542,7 @@
suffix: AI Core suffix: AI Core
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-ai-core defaultText: station-beacon-ai-core
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -550,7 +550,7 @@
suffix: Arrivals suffix: Arrivals
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-arrivals defaultText: station-beacon-arrivals
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -558,7 +558,7 @@
suffix: Evac suffix: Evac
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-evac defaultText: station-beacon-evac
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -566,7 +566,7 @@
suffix: EVA Storage suffix: EVA Storage
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-eva-storage defaultText: station-beacon-eva-storage
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -574,7 +574,7 @@
suffix: Chapel suffix: Chapel
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-chapel defaultText: station-beacon-chapel
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -582,7 +582,7 @@
suffix: Library suffix: Library
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-library defaultText: station-beacon-library
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -590,7 +590,7 @@
suffix: Theater suffix: Theater
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-theater defaultText: station-beacon-theater
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -598,7 +598,7 @@
suffix: Dorms suffix: Dorms
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-dorms defaultText: station-beacon-dorms
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -606,7 +606,7 @@
suffix: Tool Room suffix: Tool Room
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-tools defaultText: station-beacon-tools
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -614,7 +614,7 @@
suffix: Disposals suffix: Disposals
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-disposals defaultText: station-beacon-disposals
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -622,7 +622,7 @@
suffix: Cryosleep suffix: Cryosleep
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-cryosleep defaultText: station-beacon-cryosleep
- type: entity - type: entity
parent: DefaultStationBeacon parent: DefaultStationBeacon
@@ -630,4 +630,4 @@
suffix: Escape Pod suffix: Escape Pod
components: components:
- type: NavMapBeacon - type: NavMapBeacon
text: station-beacon-escape-pod defaultText: station-beacon-escape-pod