From bec8d7a7d472ac944b6cf3d266745ffc1460fb5f Mon Sep 17 00:00:00 2001
From: Ed <96445749+TheShuEd@users.noreply.github.com>
Date: Mon, 9 Dec 2024 20:39:46 +0300
Subject: [PATCH] Ghost z-levels move actions + mapping z-levels combine
command (#654)
* some setup
* fast ghost zlevels-moving
* zlevel combine command for mapping
---
Content.Server/Ghost/GhostSystem.cs | 18 ++--
.../Commands/CP14SetTimeEntryCommand.cs | 1 -
.../PortalAutoLink/CP14AutoLinkComponent.cs | 16 ---
.../PortalAutoLink/CP14AutoLinkSystem.cs | 44 --------
.../Commands/CP14CombileMapsIntoZLevels.cs | 94 ++++++++++++++++++
.../Components/CP14StationZLevelsComponent.cs | 7 +-
.../CP14ZLevelAutoPortalComponent.cs | 4 +-
.../CP14StationZLevelsSystem.Actions.cs | 41 ++++++++
.../CP14StationZLevelsSystem.Portals.cs | 50 ++++++++++
.../EntitySystems/CP14StationZLevelsSystem.cs | 51 ++--------
Content.Shared/Ghost/GhostComponent.cs | 14 +++
Content.Shared/_CP14/ZLevel/ZLevelActions.cs | 17 ++++
.../Entities/Mobs/Player/admin_ghost.yml | 94 +++++++++---------
.../_CP14/Entities/Actions/zLevels.yml | 17 ++++
.../_CP14/Actions/zLevel.rsi/down.png | Bin 0 -> 447 bytes
.../_CP14/Actions/zLevel.rsi/meta.json | 17 ++++
.../Textures/_CP14/Actions/zLevel.rsi/up.png | Bin 0 -> 384 bytes
17 files changed, 320 insertions(+), 165 deletions(-)
delete mode 100644 Content.Server/_CP14/PortalAutoLink/CP14AutoLinkComponent.cs
delete mode 100644 Content.Server/_CP14/PortalAutoLink/CP14AutoLinkSystem.cs
create mode 100644 Content.Server/_CP14/ZLevels/Commands/CP14CombileMapsIntoZLevels.cs
rename Content.Server/_CP14/{StationDungeonMap => ZLevels}/Components/CP14StationZLevelsComponent.cs (70%)
rename Content.Server/_CP14/{StationDungeonMap => ZLevels}/Components/CP14ZLevelAutoPortalComponent.cs (85%)
create mode 100644 Content.Server/_CP14/ZLevels/EntitySystems/CP14StationZLevelsSystem.Actions.cs
create mode 100644 Content.Server/_CP14/ZLevels/EntitySystems/CP14StationZLevelsSystem.Portals.cs
rename Content.Server/_CP14/{StationDungeonMap => ZLevels}/EntitySystems/CP14StationZLevelsSystem.cs (66%)
create mode 100644 Content.Shared/_CP14/ZLevel/ZLevelActions.cs
create mode 100644 Resources/Prototypes/_CP14/Entities/Actions/zLevels.yml
create mode 100644 Resources/Textures/_CP14/Actions/zLevel.rsi/down.png
create mode 100644 Resources/Textures/_CP14/Actions/zLevel.rsi/meta.json
create mode 100644 Resources/Textures/_CP14/Actions/zLevel.rsi/up.png
diff --git a/Content.Server/Ghost/GhostSystem.cs b/Content.Server/Ghost/GhostSystem.cs
index 85fec0d7d1..bd03e36a92 100644
--- a/Content.Server/Ghost/GhostSystem.cs
+++ b/Content.Server/Ghost/GhostSystem.cs
@@ -213,18 +213,22 @@ namespace Content.Server.Ghost
private void OnMapInit(EntityUid uid, GhostComponent component, MapInitEvent args)
{
- if (_actions.AddAction(uid, ref component.BooActionEntity, out var act, component.BooAction)
- && act.UseDelay != null)
- {
- var start = _gameTiming.CurTime;
- var end = start + act.UseDelay.Value;
- _actions.SetCooldown(component.BooActionEntity.Value, start, end);
- }
+ //if (_actions.AddAction(uid, ref component.BooActionEntity, out var act, component.BooAction)
+ // && act.UseDelay != null)
+ //{
+ // var start = _gameTiming.CurTime;
+ // var end = start + act.UseDelay.Value;
+ // _actions.SetCooldown(component.BooActionEntity.Value, start, end);
+ //}
_actions.AddAction(uid, ref component.ToggleGhostHearingActionEntity, component.ToggleGhostHearingAction);
_actions.AddAction(uid, ref component.ToggleLightingActionEntity, component.ToggleLightingAction);
_actions.AddAction(uid, ref component.ToggleFoVActionEntity, component.ToggleFoVAction);
_actions.AddAction(uid, ref component.ToggleGhostsActionEntity, component.ToggleGhostsAction);
+ //CP14
+ _actions.AddAction(uid, ref component.CP14ZLevelUpActionEntity, component.CP14ZLevelUpAction);
+ _actions.AddAction(uid, ref component.CP14ZLevelDownActionEntity, component.CP14ZLevelDownAction);
+ //CP14 end
}
private void OnGhostExamine(EntityUid uid, GhostComponent component, ExaminedEvent args)
diff --git a/Content.Server/_CP14/DayCycle/Commands/CP14SetTimeEntryCommand.cs b/Content.Server/_CP14/DayCycle/Commands/CP14SetTimeEntryCommand.cs
index c7239901bb..9cf8bc5f0b 100644
--- a/Content.Server/_CP14/DayCycle/Commands/CP14SetTimeEntryCommand.cs
+++ b/Content.Server/_CP14/DayCycle/Commands/CP14SetTimeEntryCommand.cs
@@ -1,5 +1,4 @@
using Content.Server.Administration;
-using Content.Shared._CP14.DayCycle;
using Content.Shared.Administration;
using Robust.Shared.Console;
using CP14DayCycleComponent = Content.Shared._CP14.DayCycle.Components.CP14DayCycleComponent;
diff --git a/Content.Server/_CP14/PortalAutoLink/CP14AutoLinkComponent.cs b/Content.Server/_CP14/PortalAutoLink/CP14AutoLinkComponent.cs
deleted file mode 100644
index 4e211f848f..0000000000
--- a/Content.Server/_CP14/PortalAutoLink/CP14AutoLinkComponent.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using Robust.Shared.Map;
-
-namespace Content.Server._CP14.PortalAutoLink;
-
-///
-/// allows you to automatically link entities to each other, through key matching searches
-///
-[RegisterComponent, Access(typeof(CP14AutoLinkSystem))]
-public sealed partial class CP14AutoLinkComponent : Component
-{
- ///
- /// a key that is used to search for another autolinked entity installed in the worlds
- ///
- [DataField]
- public string? AutoLinkKey = "Hello";
-}
diff --git a/Content.Server/_CP14/PortalAutoLink/CP14AutoLinkSystem.cs b/Content.Server/_CP14/PortalAutoLink/CP14AutoLinkSystem.cs
deleted file mode 100644
index 060c98f1ce..0000000000
--- a/Content.Server/_CP14/PortalAutoLink/CP14AutoLinkSystem.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using Content.Shared.Interaction;
-using Content.Shared.Teleportation.Systems;
-
-namespace Content.Server._CP14.PortalAutoLink;
-
-public sealed partial class CP14AutoLinkSystem : EntitySystem
-{
- [Dependency] private readonly LinkedEntitySystem _link = default!;
- [Dependency] private readonly IEntityManager _entityManager = default!;
-
- public override void Initialize()
- {
- base.Initialize();
-
- SubscribeLocalEvent(OnMapInit);
- }
-
- private void OnMapInit(Entity autolink, ref MapInitEvent args)
- {
- TryAutoLink(autolink, out var otherLink);
- }
- public bool TryAutoLink(Entity autolink, out EntityUid? linkedEnt)
- {
- linkedEnt = null;
-
- var query = EntityQueryEnumerator();
- while (query.MoveNext(out var uid, out var otherAutolink))
- {
- if (autolink.Comp == otherAutolink)
- continue;
-
- if (autolink.Comp.AutoLinkKey == otherAutolink.AutoLinkKey)
- {
- if (_link.TryLink(autolink, uid, false))
- {
- RemComp(uid);
- RemComp(autolink);
- return true;
- }
- }
- }
- return false;
- }
-}
diff --git a/Content.Server/_CP14/ZLevels/Commands/CP14CombileMapsIntoZLevels.cs b/Content.Server/_CP14/ZLevels/Commands/CP14CombileMapsIntoZLevels.cs
new file mode 100644
index 0000000000..e0b5ab1394
--- /dev/null
+++ b/Content.Server/_CP14/ZLevels/Commands/CP14CombileMapsIntoZLevels.cs
@@ -0,0 +1,94 @@
+using System.Linq;
+using Content.Server._CP14.ZLevels.Components;
+using Content.Server.Administration;
+using Content.Shared.Administration;
+using Robust.Shared.Console;
+using Robust.Shared.Map;
+
+namespace Content.Server._CP14.ZLevels.Commands;
+
+[AdminCommand(AdminFlags.VarEdit)]
+public sealed class CP14CombineMapsIntoZLevelsCommand : LocalizedCommands
+{
+ [Dependency] private readonly IEntityManager _entities = default!;
+ [Dependency] private readonly IMapManager _map = default!;
+
+ private const string Name = "cp14-combineMapsIntoZLevels";
+ public override string Command => Name;
+ public override string Description => "Connects a number of maps into a common network of z-levels. Does not work if one of the maps is already in the z-level network";
+ public override string Help => $"{Name} ... (from ground to sky)";
+
+ public override void Execute(IConsoleShell shell, string argStr, string[] args)
+ {
+ if (args.Length == 1)
+ {
+ shell.WriteError("Not enough maps to form a network of levels");
+ return;
+ }
+
+ List maps = new();
+ foreach (var arg in args)
+ {
+ if (!int.TryParse(arg, out var mapIdInt))
+ {
+ shell.WriteError($"Cannot parse `{arg}` into mapId");
+ return;
+ }
+
+ var mapId = new MapId(mapIdInt);
+
+ if (mapId == MapId.Nullspace)
+ {
+ shell.WriteError($"Cannot parse NullSpace");
+ return;
+ }
+
+ if (!_map.MapExists(mapId))
+ {
+ shell.WriteError($"Map {mapId} dont exist");
+ return;
+ }
+
+ //if (!_mapSystem.TryGetMap(mapId, out var mapUid))
+ //{
+ // shell.WriteError($"Map {mapId} dont exist");
+ // return;
+ //}
+
+ if (maps.Contains(mapId))
+ {
+ shell.WriteError($"Duplication maps: {mapId}");
+ return;
+ }
+
+ maps.Add(mapId);
+ }
+
+ //Check maps already in zLevel links
+ var query = _entities.EntityQueryEnumerator();
+ while (query.MoveNext(out var uid, out var zLevelComp))
+ {
+ foreach (var findMap in maps)
+ {
+ if (zLevelComp.LevelEntities.ContainsKey(findMap))
+ {
+ shell.WriteError($"{findMap} already in z-level network! Z-Network Entity: {uid}");
+ return;
+ }
+ }
+ }
+
+ //Ok, all check passed, we create new z-level network
+ var zLevelEnt = _entities.Spawn();
+ _entities.EnsureComponent(zLevelEnt, out var newZLevelComp);
+
+ var count = 0;
+ foreach (var map in maps)
+ {
+ newZLevelComp.LevelEntities.Add(map, count);
+ count++;
+ }
+
+ shell.WriteLine($"Successfully created z-level network! Z-Network entity: {zLevelEnt}");
+ }
+}
diff --git a/Content.Server/_CP14/StationDungeonMap/Components/CP14StationZLevelsComponent.cs b/Content.Server/_CP14/ZLevels/Components/CP14StationZLevelsComponent.cs
similarity index 70%
rename from Content.Server/_CP14/StationDungeonMap/Components/CP14StationZLevelsComponent.cs
rename to Content.Server/_CP14/ZLevels/Components/CP14StationZLevelsComponent.cs
index de408cd316..c984834707 100644
--- a/Content.Server/_CP14/StationDungeonMap/Components/CP14StationZLevelsComponent.cs
+++ b/Content.Server/_CP14/ZLevels/Components/CP14StationZLevelsComponent.cs
@@ -1,13 +1,14 @@
-using Content.Server._CP14.StationDungeonMap.EntitySystems;
+using Content.Server._CP14.ZLevels.Commands;
+using Content.Server._CP14.ZLevels.EntitySystems;
using Robust.Shared.Map;
using Robust.Shared.Utility;
-namespace Content.Server._CP14.StationDungeonMap.Components;
+namespace Content.Server._CP14.ZLevels.Components;
///
/// Initializes the z-level system by creating a series of linked maps
///
-[RegisterComponent, Access(typeof(CP14StationZLevelsSystem))]
+[RegisterComponent, Access(typeof(CP14StationZLevelsSystem), typeof(CP14CombineMapsIntoZLevelsCommand))]
public sealed partial class CP14StationZLevelsComponent : Component
{
[DataField(required: true)]
diff --git a/Content.Server/_CP14/StationDungeonMap/Components/CP14ZLevelAutoPortalComponent.cs b/Content.Server/_CP14/ZLevels/Components/CP14ZLevelAutoPortalComponent.cs
similarity index 85%
rename from Content.Server/_CP14/StationDungeonMap/Components/CP14ZLevelAutoPortalComponent.cs
rename to Content.Server/_CP14/ZLevels/Components/CP14ZLevelAutoPortalComponent.cs
index 6d6469d628..791121c52f 100644
--- a/Content.Server/_CP14/StationDungeonMap/Components/CP14ZLevelAutoPortalComponent.cs
+++ b/Content.Server/_CP14/ZLevels/Components/CP14ZLevelAutoPortalComponent.cs
@@ -1,7 +1,7 @@
-using Content.Server._CP14.StationDungeonMap.EntitySystems;
+using Content.Server._CP14.ZLevels.EntitySystems;
using Robust.Shared.Prototypes;
-namespace Content.Server._CP14.StationDungeonMap.Components;
+namespace Content.Server._CP14.ZLevels.Components;
///
/// automatically creates a linked portal at a different relative z-level, and then the component is removed
diff --git a/Content.Server/_CP14/ZLevels/EntitySystems/CP14StationZLevelsSystem.Actions.cs b/Content.Server/_CP14/ZLevels/EntitySystems/CP14StationZLevelsSystem.Actions.cs
new file mode 100644
index 0000000000..dd80ada075
--- /dev/null
+++ b/Content.Server/_CP14/ZLevels/EntitySystems/CP14StationZLevelsSystem.Actions.cs
@@ -0,0 +1,41 @@
+using System.Numerics;
+using Content.Shared._CP14.ZLevel;
+using Content.Shared.Ghost;
+using Robust.Shared.Map;
+
+namespace Content.Server._CP14.ZLevels.EntitySystems;
+
+public sealed partial class CP14StationZLevelsSystem
+{
+ private void InitActions()
+ {
+ SubscribeLocalEvent(OnZLevelUp);
+ SubscribeLocalEvent(OnZLevelDown);
+ }
+
+ private void OnZLevelDown(Entity ent, ref CP14ZLevelActionDown args)
+ {
+ ZLevelMove(ent, -1);
+ }
+
+ private void OnZLevelUp(Entity ent, ref CP14ZLevelActionUp args)
+ {
+ ZLevelMove(ent, 1);
+ }
+
+ private void ZLevelMove(EntityUid ent, int offset)
+ {
+ var xform = Transform(ent);
+ var map = xform.MapUid;
+
+ if (map is null)
+ return;
+
+ var targetMap = GetMapOffset(map.Value, offset);
+
+ if (targetMap is null)
+ return;
+
+ _transform.SetMapCoordinates(ent, new MapCoordinates(_transform.GetWorldPosition(ent), targetMap.Value));
+ }
+}
diff --git a/Content.Server/_CP14/ZLevels/EntitySystems/CP14StationZLevelsSystem.Portals.cs b/Content.Server/_CP14/ZLevels/EntitySystems/CP14StationZLevelsSystem.Portals.cs
new file mode 100644
index 0000000000..78e83fa1e9
--- /dev/null
+++ b/Content.Server/_CP14/ZLevels/EntitySystems/CP14StationZLevelsSystem.Portals.cs
@@ -0,0 +1,50 @@
+using Content.Server._CP14.ZLevels.Components;
+using Content.Server.GameTicking.Events;
+using Content.Shared.Teleportation.Systems;
+using Robust.Shared.Map;
+
+namespace Content.Server._CP14.ZLevels.EntitySystems;
+
+public sealed partial class CP14StationZLevelsSystem
+{
+ [Dependency] private readonly LinkedEntitySystem _linkedEntity = default!;
+ private void InitializePortals()
+ {
+ SubscribeLocalEvent(OnRoundStart);
+ SubscribeLocalEvent(OnPortalMapInit);
+ }
+
+ private void OnRoundStart(RoundStartingEvent ev)
+ {
+ var query = EntityQueryEnumerator();
+ while (query.MoveNext(out var uid, out var portal))
+ {
+ InitPortal((uid, portal));
+ }
+ }
+
+ private void OnPortalMapInit(Entity autoPortal, ref MapInitEvent args)
+ {
+ InitPortal(autoPortal);
+ }
+
+ private void InitPortal(Entity autoPortal)
+ {
+ var mapId = Transform(autoPortal).MapUid;
+ if (mapId is null)
+ return;
+
+ var offsetMap = GetMapOffset(mapId.Value, autoPortal.Comp.ZLevelOffset);
+
+ if (offsetMap is null)
+ return;
+
+ var currentWorldPos = _transform.GetWorldPosition(autoPortal);
+ var targetMapPos = new MapCoordinates(currentWorldPos, offsetMap.Value);
+
+ var otherSidePortal = Spawn(autoPortal.Comp.OtherSideProto, targetMapPos);
+
+ if (_linkedEntity.TryLink(autoPortal, otherSidePortal, true))
+ RemComp(autoPortal);
+ }
+}
diff --git a/Content.Server/_CP14/StationDungeonMap/EntitySystems/CP14StationZLevelsSystem.cs b/Content.Server/_CP14/ZLevels/EntitySystems/CP14StationZLevelsSystem.cs
similarity index 66%
rename from Content.Server/_CP14/StationDungeonMap/EntitySystems/CP14StationZLevelsSystem.cs
rename to Content.Server/_CP14/ZLevels/EntitySystems/CP14StationZLevelsSystem.cs
index ae7c1ae11b..b8531b9f9b 100644
--- a/Content.Server/_CP14/StationDungeonMap/EntitySystems/CP14StationZLevelsSystem.cs
+++ b/Content.Server/_CP14/ZLevels/EntitySystems/CP14StationZLevelsSystem.cs
@@ -1,17 +1,14 @@
-using Content.Server._CP14.StationDungeonMap.Components;
-using Content.Server.GameTicking.Events;
+using Content.Server._CP14.ZLevels.Components;
using Content.Server.Station.Components;
using Content.Server.Station.Events;
using Content.Server.Station.Systems;
using Content.Shared.Maps;
using Content.Shared.Station.Components;
-using Content.Shared.Teleportation.Systems;
using Robust.Server.GameObjects;
using Robust.Server.Maps;
using Robust.Shared.Map;
-using Robust.Shared.Random;
-namespace Content.Server._CP14.StationDungeonMap.EntitySystems;
+namespace Content.Server._CP14.ZLevels.EntitySystems;
public sealed partial class CP14StationZLevelsSystem : EntitySystem
{
@@ -20,29 +17,18 @@ public sealed partial class CP14StationZLevelsSystem : EntitySystem
[Dependency] private readonly MapLoaderSystem _mapLoader = default!;
[Dependency] private readonly TransformSystem _transform = default!;
[Dependency] private readonly ITileDefinitionManager _tileDefManager = default!;
- [Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly TileSystem _tile = default!;
[Dependency] private readonly SharedMapSystem _maps = default!;
- [Dependency] private readonly LinkedEntitySystem _linkedEntity = default!;
public override void Initialize()
{
base.Initialize();
+ InitializePortals();
+ InitActions();
- SubscribeLocalEvent(OnPortalMapInit);
- SubscribeLocalEvent(OnRoundStart);
SubscribeLocalEvent(OnStationPostInit);
}
- private void OnRoundStart(RoundStartingEvent ev)
- {
- var query = EntityQueryEnumerator();
- while (query.MoveNext(out var uid, out var portal))
- {
- InitPortal((uid, portal));
- }
- }
-
private void OnStationPostInit(Entity ent, ref StationPostInitEvent args)
{
if (ent.Comp.Initialized)
@@ -98,35 +84,10 @@ public sealed partial class CP14StationZLevelsSystem : EntitySystem
}
}
- private void OnPortalMapInit(Entity autoPortal, ref MapInitEvent args)
- {
- InitPortal(autoPortal);
- }
-
- private void InitPortal(Entity autoPortal)
- {
- var mapId = Transform(autoPortal).MapUid;
- if (mapId is null)
- return;
-
- var offsetMap = GetMapOffset(mapId.Value, autoPortal.Comp.ZLevelOffset);
-
- if (offsetMap is null)
- return;
-
- var currentWorldPos = _transform.GetWorldPosition(autoPortal);
- var targetMapPos = new MapCoordinates(currentWorldPos, offsetMap.Value);
-
- var otherSidePortal = Spawn(autoPortal.Comp.OtherSideProto, targetMapPos);
-
- if (_linkedEntity.TryLink(autoPortal, otherSidePortal, true))
- RemComp(autoPortal);
- }
-
public MapId? GetMapOffset(EntityUid mapUid, int offset)
{
- var query = EntityQueryEnumerator();
- while (query.MoveNext(out var uid, out var zLevel, out _))
+ var query = EntityQueryEnumerator();
+ while (query.MoveNext(out var uid, out var zLevel))
{
if (!zLevel.LevelEntities.TryGetValue(Transform(mapUid).MapID, out var currentLevel))
continue;
diff --git a/Content.Shared/Ghost/GhostComponent.cs b/Content.Shared/Ghost/GhostComponent.cs
index 96e9b717b9..43f32ef87b 100644
--- a/Content.Shared/Ghost/GhostComponent.cs
+++ b/Content.Shared/Ghost/GhostComponent.cs
@@ -39,6 +39,20 @@ public sealed partial class GhostComponent : Component
[DataField, AutoNetworkedField]
public EntityUid? BooActionEntity;
+ //CP14 Ghost abilities
+ [DataField]
+ public EntProtoId CP14ZLevelUpAction = "CP14ActionZLevelUp";
+
+ [DataField, AutoNetworkedField]
+ public EntityUid? CP14ZLevelUpActionEntity;
+
+ [DataField]
+ public EntProtoId CP14ZLevelDownAction = "CP14ActionZLevelDown";
+
+ [DataField, AutoNetworkedField]
+ public EntityUid? CP14ZLevelDownActionEntity;
+ //CP14 Ghost entities end
+
// End actions
[ViewVariables(VVAccess.ReadWrite), DataField]
diff --git a/Content.Shared/_CP14/ZLevel/ZLevelActions.cs b/Content.Shared/_CP14/ZLevel/ZLevelActions.cs
new file mode 100644
index 0000000000..041ed47f50
--- /dev/null
+++ b/Content.Shared/_CP14/ZLevel/ZLevelActions.cs
@@ -0,0 +1,17 @@
+using Content.Shared.Actions;
+
+namespace Content.Shared._CP14.ZLevel;
+
+///
+/// Should be relayed upon using the action.
+///
+public sealed partial class CP14ZLevelActionUp : InstantActionEvent
+{
+}
+
+///
+/// Should be relayed upon using the action.
+///
+public sealed partial class CP14ZLevelActionDown : InstantActionEvent
+{
+}
diff --git a/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml b/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml
index 0a40e64fd7..7d55cbbd44 100644
--- a/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml
+++ b/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml
@@ -34,53 +34,53 @@
- NuclearOperative
- SyndicateAgent
- CentralCommand
- - type: UserInterface
- interfaces:
- enum.SolarControlConsoleUiKey.Key:
- type: SolarControlConsoleBoundUserInterface
- enum.CommunicationsConsoleUiKey.Key:
- type: CommunicationsConsoleBoundUserInterface
- enum.RadarConsoleUiKey.Key:
- type: RadarConsoleBoundUserInterface
- enum.CargoConsoleUiKey.Orders:
- type: CargoOrderConsoleBoundUserInterface
- enum.CrewMonitoringUIKey.Key:
- type: CrewMonitoringBoundUserInterface
- enum.GeneralStationRecordConsoleKey.Key:
- # who the fuck named this bruh
- type: GeneralStationRecordConsoleBoundUserInterface
- - type: IntrinsicUI
- uis:
- enum.SolarControlConsoleUiKey.Key:
- toggleAction: ActionAGhostShowSolar
- enum.CommunicationsConsoleUiKey.Key:
- toggleAction: ActionAGhostShowCommunications
- enum.RadarConsoleUiKey.Key:
- toggleAction: ActionAGhostShowRadar
- enum.CargoConsoleUiKey.Orders:
- toggleAction: ActionAGhostShowCargo
- enum.CrewMonitoringUIKey.Key:
- toggleAction: ActionAGhostShowCrewMonitoring
- enum.GeneralStationRecordConsoleKey.Key:
- toggleAction: ActionAGhostShowStationRecords
- - type: SolarControlConsole # look ma i AM the computer!
- - type: CommunicationsConsole
- title: comms-console-announcement-title-centcom
- color: "#228b22"
- - type: RadarConsole
- followEntity: true
- - type: CargoOrderConsole
- - type: BankClient
- - type: CrewMonitoringConsole
- - type: GeneralStationRecordConsole
- canDeleteEntries: true
- - type: DeviceNetwork
- deviceNetId: Wireless
- receiveFrequencyId: CrewMonitor
- transmitFrequencyId: ShuttleTimer
- - type: WirelessNetworkConnection
- range: 500
- - type: StationLimitedNetwork
+ #- type: UserInterface
+ # interfaces:
+ # enum.SolarControlConsoleUiKey.Key:
+ # type: SolarControlConsoleBoundUserInterface
+ # enum.CommunicationsConsoleUiKey.Key:
+ # type: CommunicationsConsoleBoundUserInterface
+ # enum.RadarConsoleUiKey.Key:
+ # type: RadarConsoleBoundUserInterface
+ # enum.CargoConsoleUiKey.Orders:
+ # type: CargoOrderConsoleBoundUserInterface
+ # enum.CrewMonitoringUIKey.Key:
+ # type: CrewMonitoringBoundUserInterface
+ # enum.GeneralStationRecordConsoleKey.Key:
+ # # who the fuck named this bruh
+ # type: GeneralStationRecordConsoleBoundUserInterface
+ #- type: IntrinsicUI
+ # uis:
+ # enum.SolarControlConsoleUiKey.Key:
+ # toggleAction: ActionAGhostShowSolar
+ # enum.CommunicationsConsoleUiKey.Key:
+ # toggleAction: ActionAGhostShowCommunications
+ # enum.RadarConsoleUiKey.Key:
+ # toggleAction: ActionAGhostShowRadar
+ # enum.CargoConsoleUiKey.Orders:
+ # toggleAction: ActionAGhostShowCargo
+ # enum.CrewMonitoringUIKey.Key:
+ # toggleAction: ActionAGhostShowCrewMonitoring
+ # enum.GeneralStationRecordConsoleKey.Key:
+ # toggleAction: ActionAGhostShowStationRecords
+ #- type: SolarControlConsole # look ma i AM the computer!
+ #- type: CommunicationsConsole
+ # title: comms-console-announcement-title-centcom
+ # color: "#228b22"
+ #- type: RadarConsole
+ # followEntity: true
+ #- type: CargoOrderConsole
+ #- type: BankClient
+ #- type: CrewMonitoringConsole
+ #- type: GeneralStationRecordConsole
+ # canDeleteEntries: true
+ #- type: DeviceNetwork
+ # deviceNetId: Wireless
+ # receiveFrequencyId: CrewMonitor
+ # transmitFrequencyId: ShuttleTimer
+ #- type: WirelessNetworkConnection
+ # range: 500
+ #- type: StationLimitedNetwork
- type: Thieving
stripTimeReduction: 9999
stealthy: true
diff --git a/Resources/Prototypes/_CP14/Entities/Actions/zLevels.yml b/Resources/Prototypes/_CP14/Entities/Actions/zLevels.yml
new file mode 100644
index 0000000000..0bbfee1e02
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Entities/Actions/zLevels.yml
@@ -0,0 +1,17 @@
+- type: entity
+ id: CP14ActionZLevelUp
+ name: Move up
+ description: Move up one Z-Level
+ components:
+ - type: InstantAction
+ icon: _CP14/Actions/zLevel.rsi/up.png
+ event: !type:CP14ZLevelActionUp
+
+- type: entity
+ id: CP14ActionZLevelDown
+ name: Move down
+ description: Move down one Z-Level
+ components:
+ - type: InstantAction
+ icon: _CP14/Actions/zLevel.rsi/down.png
+ event: !type:CP14ZLevelActionDown
\ No newline at end of file
diff --git a/Resources/Textures/_CP14/Actions/zLevel.rsi/down.png b/Resources/Textures/_CP14/Actions/zLevel.rsi/down.png
new file mode 100644
index 0000000000000000000000000000000000000000..e53a32fed370d88d37e1e0f63770ec20e35ef09c
GIT binary patch
literal 447
zcmV;w0YLtVP)Px$c}YY;R9J=Wma%QaFc3vQ1CJmtV7rh8ND;)X3r&zN8z>{V&oBcmXV4iF%aNB(z5@<;&>+pH7G@vECkaOYh3i09I-pB62?
zURvBCkz9xyF2G;e3@`)C05ib91B{kpZq2vZ*c@Z!dCewTYjZ(r
z?*U4&D&9|dnfXQR8q;N9OdJ5zWx0J?b_3tlS#dp7nBUPM2%5pu{ufuUs}AL`$W
pC2-wv>c#`y*_z}Sa*m#9zHcw&FfXwDAD#dJ002ovPDHLkV1gAyz4ibA
literal 0
HcmV?d00001
diff --git a/Resources/Textures/_CP14/Actions/zLevel.rsi/meta.json b/Resources/Textures/_CP14/Actions/zLevel.rsi/meta.json
new file mode 100644
index 0000000000..6dd9714094
--- /dev/null
+++ b/Resources/Textures/_CP14/Actions/zLevel.rsi/meta.json
@@ -0,0 +1,17 @@
+{
+ "version": 1,
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "license": "CLA",
+ "copyright": "Created by TheShuEd",
+ "states": [
+ {
+ "name": "down"
+ },
+ {
+ "name": "up"
+ }
+ ]
+}
diff --git a/Resources/Textures/_CP14/Actions/zLevel.rsi/up.png b/Resources/Textures/_CP14/Actions/zLevel.rsi/up.png
new file mode 100644
index 0000000000000000000000000000000000000000..186ffc908f95a416ab7eda10b2e2ac6ebd4f1636
GIT binary patch
literal 384
zcmV-`0e}99P)Px$I!Q!9R9J;$WFQl$C~N*l=HIz{osnF#$g(_c_3Qs}t6%^B@#Dw;4X?iaM|Tjh
zfMi#zC~N+=>NtcVHp`cnVaKO`3?-JvB!>h^im_QvsUwJ1h|h9L96^*KVk{@u5d;;G
zVmUdEz$;0P<)k_SrvxRIli~=hg4D2_SVv$8P}6c^9Dy?gu!)nB4Y2`iA;3bcLQ;!b
zV#@(0QVgX97VN@v0Lg7aV$@NkO^C}fWW!0RA1H1QpjW9dH8AmY2fs4R
z^5tbn+x!`?K6JZq*M=2#aNm*JCR}&$D?zn56CupC$i9Tt^W^q|umP+g0J8+$a^#S}
z7Thp^OPpv2V6&Wofq~&zg&katP6h6$LDr{J0TIKM2yuo00|UY*=#GIULS!|#0NMQl
eYGgxV$^!t8GWR=1hkGXg0000