diff --git a/Content.Client/Commands/ActionsCommands.cs b/Content.Client/Commands/ActionsCommands.cs
index c155c7a9dea..738a6544763 100644
--- a/Content.Client/Commands/ActionsCommands.cs
+++ b/Content.Client/Commands/ActionsCommands.cs
@@ -1,5 +1,8 @@
-using Content.Client.Actions;
+using Content.Client.Actions;
+using System.IO;
using Content.Shared.Administration;
+using Robust.Client.UserInterface;
+using YamlDotNet.RepresentationModel;
using Robust.Shared.Console;
namespace Content.Client.Commands;
@@ -46,7 +49,7 @@ public override void Execute(IConsoleShell shell, string argStr, string[] args)
{
if (args.Length != 1)
{
- shell.WriteLine(Help);
+ LoadActs(); // DeltaV - Load from a file dialogue instead
return;
}
@@ -59,4 +62,24 @@ public override void Execute(IConsoleShell shell, string argStr, string[] args)
shell.WriteError(LocalizationManager.GetString($"cmd-{Command}-error"));
}
}
+
+ ///
+ /// DeltaV - Load actions from a file stream instead
+ ///
+ private static async void LoadActs()
+ {
+ var fileMan = IoCManager.Resolve();
+ var actMan = IoCManager.Resolve().GetEntitySystem();
+
+ var stream = await fileMan.OpenFile(new FileDialogFilters(new FileDialogFilters.Group("yml")));
+ if (stream is null)
+ return;
+
+ var reader = new StreamReader(stream);
+ var yamlStream = new YamlStream();
+ yamlStream.Load(reader);
+
+ actMan.LoadActionAssignments(yamlStream);
+ reader.Close();
+ }
}
diff --git a/Resources/mapping_actions_alarms.yml b/Resources/mapping_actions_alarms.yml
new file mode 100644
index 00000000000..ce569d7d052
--- /dev/null
+++ b/Resources/mapping_actions_alarms.yml
@@ -0,0 +1,139 @@
+- action: !type:InstantActionComponent
+ icon:
+ entity: AirAlarm
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: AirAlarm
+ assignments:
+ - 0: 1
+ name: Air Alarm
+- action: !type:InstantActionComponent
+ icon:
+ entity: FireAlarm
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: FireAlarm
+ assignments:
+ - 0: 2
+ name: Fire Alarm
+- action: !type:InstantActionComponent
+ icon:
+ entity: AirSensor
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: AirSensor
+ assignments:
+ - 0: 3
+ name: Air Sensor
+- action: !type:InstantActionComponent
+ icon:
+ entity: Firelock
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: Firelock
+ assignments:
+ - 0: 4
+ name: Firelock
+- action: !type:InstantActionComponent
+ icon:
+ entity: FirelockGlass
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: FirelockGlass
+ assignments:
+ - 0: 5
+ name: Firelock Glass
+- action: !type:InstantActionComponent
+ icon:
+ entity: FirelockEdge
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: FirelockEdge
+ assignments:
+ - 0: 6
+ name: Firelock Edge
+- action: !type:InstantActionComponent
+ icon:
+ entity: Multitool
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: Multitool
+ assignments:
+ - 0: 7
+ name: Multitool
+- action: !type:InstantActionComponent
+ icon:
+ entity: GasVentScrubber
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: GasVentScrubber
+ assignments:
+ - 0: 8
+ name: Gas Vent Scrubber
+- action: !type:InstantActionComponent
+ icon:
+ entity: GasVentPump
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: GasVentPump
+ assignments:
+ - 0: 9
+ name: Gas Vent Pump
+- action: !type:InstantActionComponent
+ icon: Interface/VerbIcons/delete.svg.192dpi.png
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ eraser: True
+ assignments:
+ - 0: 0
+ name: action-name-mapping-erase
+...
diff --git a/Resources/mapping_actions_deltav.yml b/Resources/mapping_actions_deltav.yml
new file mode 100644
index 00000000000..2cf8994595d
--- /dev/null
+++ b/Resources/mapping_actions_deltav.yml
@@ -0,0 +1,136 @@
+- action: !type:InstantActionComponent
+ icon:
+ entity: WallSolid
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: WallSolid
+ assignments:
+ - 0: 1
+ name: Wall Solid
+- action: !type:InstantActionComponent
+ icon:
+ entity: WallReinforced
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: WallReinforced
+ assignments:
+ - 0: 2
+ name: WallReinforced
+- action: !type:InstantActionComponent
+ icon:
+ entity: Window
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: Window
+ assignments:
+ - 0: 3
+ name: Window
+- action: !type:InstantActionComponent
+ icon:
+ entity: ReinforcedWindow
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: ReinforcedWindow
+ assignments:
+ - 0: 4
+ name: ReinforcedWindow
+- action: !type:InstantActionComponent
+ icon:
+ entity: Grille
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: Grille
+ assignments:
+ - 0: 5
+ name: Grille
+- action: !type:InstantActionComponent
+ icon: /Textures/Tiles/steel.png
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: AlignTileAny
+ tileId: FloorSteel
+ assignments:
+ - 0: 6
+ name: steel floor
+- action: !type:InstantActionComponent
+ icon:
+ entity: Firelock
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: Firelock
+ assignments:
+ - 0: 7
+ name: Firelock
+- action: !type:InstantActionComponent
+ icon: /Textures/Tiles/plating.png
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: AlignTileAny
+ tileId: Plating
+ assignments:
+ - 0: 8
+ name: plating
+- action: !type:InstantActionComponent
+ icon: /Textures/Tiles/cropped_parallax.png
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: AlignTileAny
+ tileId: Space
+ assignments:
+ - 0: 9
+ name: space
+- action: !type:InstantActionComponent
+ icon: Interface/VerbIcons/delete.svg.192dpi.png
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ eraser: True
+ assignments:
+ - 0: 0
+ name: action-name-mapping-erase
+...
diff --git a/Resources/mapping_actions_disposals.yml b/Resources/mapping_actions_disposals.yml
new file mode 100644
index 00000000000..bcccbefc17e
--- /dev/null
+++ b/Resources/mapping_actions_disposals.yml
@@ -0,0 +1,140 @@
+
+- action: !type:InstantActionComponent
+ icon:
+ entity: DisposalUnit
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: DisposalUnit
+ assignments:
+ - 0: 1
+ name: Disposal Unit
+- action: !type:InstantActionComponent
+ icon:
+ entity: DisposalTrunk
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: DisposalTrunk
+ assignments:
+ - 0: 2
+ name: Disposal Trunk
+- action: !type:InstantActionComponent
+ icon:
+ entity: DisposalPipe
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: DisposalPipe
+ assignments:
+ - 0: 3
+ name: Disposal Pipe
+- action: !type:InstantActionComponent
+ icon:
+ entity: DisposalBend
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: DisposalBend
+ assignments:
+ - 0: 4
+ name: Disposal Bend
+- action: !type:InstantActionComponent
+ icon:
+ entity: DisposalJunction
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: DisposalJunction
+ assignments:
+ - 0: 5
+ name: Disposal Junction
+- action: !type:InstantActionComponent
+ icon:
+ entity: DisposalJunctionFlipped
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: DisposalJunctionFlipped
+ assignments:
+ - 0: 6
+ name: Disposal Junction Flipped
+- action: !type:InstantActionComponent
+ icon:
+ entity: DisposalYJunction
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: DisposalYJunction
+ assignments:
+ - 0: 7
+ name: Disposal Y-Junction
+- action: !type:InstantActionComponent
+ icon:
+ entity: DisposalTagger
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: DisposalTagger
+ assignments:
+ - 0: 8
+ name: Disposal Tagger
+- action: !type:InstantActionComponent
+ icon:
+ entity: SignDisposalSpace
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: SignDisposalSpace
+ assignments:
+ - 0: 9
+ name: Sign Disposal Space
+- action: !type:InstantActionComponent
+ icon: Interface/VerbIcons/delete.svg.192dpi.png
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ eraser: True
+ assignments:
+ - 0: 0
+ name: action-name-mapping-erase
+...
diff --git a/Resources/mapping_actions_pipes.yml b/Resources/mapping_actions_pipes.yml
new file mode 100644
index 00000000000..5799fead740
--- /dev/null
+++ b/Resources/mapping_actions_pipes.yml
@@ -0,0 +1,139 @@
+- action: !type:InstantActionComponent
+ icon:
+ entity: GasPipeStraight
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: GasPipeStraight
+ assignments:
+ - 0: 1
+ name: Gas Pipe Straight
+- action: !type:InstantActionComponent
+ icon:
+ entity: GasPipeBend
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: GasPipeBend
+ assignments:
+ - 0: 2
+ name: Gas Pipe Bend
+- action: !type:InstantActionComponent
+ icon:
+ entity: GasPipeTJunction
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: GasPipeTJunction
+ assignments:
+ - 0: 3
+ name: Gas Pipe T-Junction
+- action: !type:InstantActionComponent
+ icon:
+ entity: GasPipeFourway
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: GasPipeFourway
+ assignments:
+ - 0: 4
+ name: Gas Pipe Fourway
+- action: !type:InstantActionComponent
+ icon:
+ entity: GasVentScrubber
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: GasVentScrubber
+ assignments:
+ - 0: 5
+ name: Gas Vent Scrubber
+- action: !type:InstantActionComponent
+ icon:
+ entity: GasVentPump
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: GasVentPump
+ assignments:
+ - 0: 6
+ name: Gas Vent Pump
+- action: !type:InstantActionComponent
+ icon:
+ entity: GasVolumePump
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: GasVolumePump
+ assignments:
+ - 0: 7
+ name: Gas Volume Pump
+- action: !type:InstantActionComponent
+ EntityIcon:
+ entity: GasPort
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: GasPort
+ assignments:
+ - 0: 8
+ name: Gas Port
+- action: !type:InstantActionComponent
+ icon:
+ entity: GasPressurePump
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: GasPressurePump
+ assignments:
+ - 0: 9
+ name: Gas Pressure Pump
+- action: !type:InstantActionComponent
+ icon: Interface/VerbIcons/delete.svg.192dpi.png
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ eraser: True
+ assignments:
+ - 0: 0
+ name: action-name-mapping-erase
+...
diff --git a/Resources/mapping_actions_power.yml b/Resources/mapping_actions_power.yml
new file mode 100644
index 00000000000..f1e59b9789b
--- /dev/null
+++ b/Resources/mapping_actions_power.yml
@@ -0,0 +1,139 @@
+- action: !type:InstantActionComponent
+ icon:
+ entity: APCBasic
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: APCBasic
+ assignments:
+ - 0: 1
+ name: APC Basic
+- action: !type:InstantActionComponent
+ icon:
+ entity: CableApcExtension
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: CableApcExtension
+ assignments:
+ - 0: 2
+ name: Cable ApcExtension
+- action: !type:InstantActionComponent
+ icon:
+ entity: CableMV
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: CableMV
+ assignments:
+ - 0: 3
+ name: Cable MV
+- action: !type:InstantActionComponent
+ icon:
+ entity: CableHV
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: CableHV
+ assignments:
+ - 0: 4
+ name: Cable HV
+- action: !type:InstantActionComponent
+ icon:
+ entity: SubstationBasic
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: SubstationBasic
+ assignments:
+ - 0: 5
+ name: Substation Basic
+- action: !type:InstantActionComponent
+ icon:
+ entity: SMESBasic
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: SMESBasic
+ assignments:
+ - 0: 6
+ name: SMES Basic
+- action: !type:InstantActionComponent
+ icon:
+ entity: CableTerminal
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: CableTerminal
+ assignments:
+ - 0: 7
+ name: Cable Terminal
+- action: !type:InstantActionComponent
+ icon:
+ entity: Poweredlight
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: Poweredlight
+ assignments:
+ - 0: 8
+ name: Powered light
+- action: !type:InstantActionComponent
+ icon:
+ entity: PoweredSmallLightMaintenance
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ placementOption: SnapgridCenter
+ entityType: PoweredSmallLightMaintenance
+ assignments:
+ - 0: 9
+ name: Small Light Maintenance
+- action: !type:InstantActionComponent
+ icon: Interface/VerbIcons/delete.svg.192dpi.png
+ keywords: []
+ checkCanInteract: False
+ clientExclusive: True
+ autoPopulate: False
+ temporary: True
+ event: !type:StartPlacementActionEvent
+ eraser: True
+ assignments:
+ - 0: 0
+ name: action-name-mapping-erase
+...