CentComm Map Updates (#34475)

* Bandage fix denied animations playing on devices without them

* CentComm blast door prototype

* CentComm button

* CentComm window shutters

* CC Updates

* Save as grid

* Remove an extra detective figurine

I like them better in the interrogation room

* Remove paramed locker, let pumps shut off

* Fix wrong HOP locker prototype
This commit is contained in:
War Pigeon
2025-01-18 23:32:33 -06:00
committed by GitHub
parent a2df7719b1
commit b471c1094d
5 changed files with 910 additions and 841 deletions

View File

@@ -1,13 +1,13 @@
using Content.Server.Administration.Logs; using Content.Server.Administration.Logs;
using Content.Shared.Interaction;
using Content.Shared.Doors.Components;
using Content.Shared.Access.Components;
using Content.Server.Doors.Systems; using Content.Server.Doors.Systems;
using Content.Server.Power.EntitySystems; using Content.Server.Power.EntitySystems;
using Content.Shared.Access.Components;
using Content.Shared.Database; using Content.Shared.Database;
using Content.Shared.Doors.Components;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Remotes.EntitySystems; using Content.Shared.Interaction;
using Content.Shared.Remotes.Components; using Content.Shared.Remotes.Components;
using Content.Shared.Remotes.EntitySystems;
namespace Content.Shared.Remotes namespace Content.Shared.Remotes
{ {
@@ -17,6 +17,7 @@ namespace Content.Shared.Remotes
[Dependency] private readonly AirlockSystem _airlock = default!; [Dependency] private readonly AirlockSystem _airlock = default!;
[Dependency] private readonly DoorSystem _doorSystem = default!; [Dependency] private readonly DoorSystem _doorSystem = default!;
[Dependency] private readonly ExamineSystemShared _examine = default!; [Dependency] private readonly ExamineSystemShared _examine = default!;
public override void Initialize() public override void Initialize()
{ {
base.Initialize(); base.Initialize();
@@ -31,9 +32,12 @@ namespace Content.Shared.Remotes
if (args.Handled if (args.Handled
|| args.Target == null || args.Target == null
|| !TryComp<DoorComponent>(args.Target, out var doorComp) // If it isn't a door we don't use it || !TryComp<DoorComponent>(args.Target, out var doorComp) // If it isn't a door we don't use it
// Only able to control doors if they are within your vision and within your max range. // Only able to control doors if they are within your vision and within your max range.
// Not affected by mobs or machines anymore. // Not affected by mobs or machines anymore.
|| !_examine.InRangeUnOccluded(args.User, args.Target.Value, SharedInteractionSystem.MaxRaycastRange, null)) || !_examine.InRangeUnOccluded(args.User,
args.Target.Value,
SharedInteractionSystem.MaxRaycastRange,
null))
{ {
return; return;
@@ -50,7 +54,8 @@ namespace Content.Shared.Remotes
if (TryComp<AccessReaderComponent>(args.Target, out var accessComponent) if (TryComp<AccessReaderComponent>(args.Target, out var accessComponent)
&& !_doorSystem.HasAccess(args.Target.Value, args.Used, doorComp, accessComponent)) && !_doorSystem.HasAccess(args.Target.Value, args.Used, doorComp, accessComponent))
{ {
_doorSystem.Deny(args.Target.Value, doorComp, args.User); if (isAirlock)
_doorSystem.Deny(args.Target.Value, doorComp, args.User);
Popup.PopupEntity(Loc.GetString("door-remote-denied"), args.User, args.User); Popup.PopupEntity(Loc.GetString("door-remote-denied"), args.User, args.User);
return; return;
} }
@@ -59,7 +64,9 @@ namespace Content.Shared.Remotes
{ {
case OperatingMode.OpenClose: case OperatingMode.OpenClose:
if (_doorSystem.TryToggleDoor(args.Target.Value, doorComp, args.Used)) if (_doorSystem.TryToggleDoor(args.Target.Value, doorComp, args.Used))
_adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(args.User):player} used {ToPrettyString(args.Used)} on {ToPrettyString(args.Target.Value)}: {doorComp.State}"); _adminLogger.Add(LogType.Action,
LogImpact.Medium,
$"{ToPrettyString(args.User):player} used {ToPrettyString(args.Used)} on {ToPrettyString(args.Target.Value)}: {doorComp.State}");
break; break;
case OperatingMode.ToggleBolts: case OperatingMode.ToggleBolts:
if (TryComp<DoorBoltComponent>(args.Target, out var boltsComp)) if (TryComp<DoorBoltComponent>(args.Target, out var boltsComp))
@@ -67,17 +74,22 @@ namespace Content.Shared.Remotes
if (!boltsComp.BoltWireCut) if (!boltsComp.BoltWireCut)
{ {
_doorSystem.SetBoltsDown((args.Target.Value, boltsComp), !boltsComp.BoltsDown, args.Used); _doorSystem.SetBoltsDown((args.Target.Value, boltsComp), !boltsComp.BoltsDown, args.Used);
_adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(args.User):player} used {ToPrettyString(args.Used)} on {ToPrettyString(args.Target.Value)} to {(boltsComp.BoltsDown ? "" : "un")}bolt it"); _adminLogger.Add(LogType.Action,
LogImpact.Medium,
$"{ToPrettyString(args.User):player} used {ToPrettyString(args.Used)} on {ToPrettyString(args.Target.Value)} to {(boltsComp.BoltsDown ? "" : "un")}bolt it");
} }
} }
break; break;
case OperatingMode.ToggleEmergencyAccess: case OperatingMode.ToggleEmergencyAccess:
if (airlockComp != null) if (airlockComp != null)
{ {
_airlock.SetEmergencyAccess((args.Target.Value, airlockComp), !airlockComp.EmergencyAccess); _airlock.SetEmergencyAccess((args.Target.Value, airlockComp), !airlockComp.EmergencyAccess);
_adminLogger.Add(LogType.Action, LogImpact.Medium, _adminLogger.Add(LogType.Action,
LogImpact.Medium,
$"{ToPrettyString(args.User):player} used {ToPrettyString(args.Used)} on {ToPrettyString(args.Target.Value)} to set emergency access {(airlockComp.EmergencyAccess ? "on" : "off")}"); $"{ToPrettyString(args.User):player} used {ToPrettyString(args.Used)} on {ToPrettyString(args.Target.Value)} to set emergency access {(airlockComp.EmergencyAccess ? "on" : "off")}");
} }
break; break;
default: default:
throw new InvalidOperationException( throw new InvalidOperationException(

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
#Blast door
- type: entity
parent: BlastDoor
id: BlastDoorCentralCommand
suffix: Central Command, Locked
components:
- type: ContainerFill
containers:
board: [ DoorElectronicsCentralCommand ]
#Window shutters
- type: entity
parent: ShuttersWindow
id: ShuttersWindowCentralCommand
suffix: Central Command, Locked
components:
- type: ContainerFill
containers:
board: [ DoorElectronicsCentralCommand ]
- type: AccessReader
containerAccessProvider: board

View File

@@ -5,6 +5,7 @@
description: This one says 'BLAST DONGER'. description: This one says 'BLAST DONGER'.
components: components:
- type: AccessReader - type: AccessReader
containerAccessProvider: board
- type: Sprite - type: Sprite
sprite: Structures/Doors/Shutters/blastdoor.rsi sprite: Structures/Doors/Shutters/blastdoor.rsi
layers: layers:

View File

@@ -494,6 +494,14 @@
- type: AccessReader - type: AccessReader
access: [["Atmospherics"]] access: [["Atmospherics"]]
- type: entity
id: LockableButtonCentcomm
suffix: CentComm
parent: LockableButton
components:
- type: AccessReader
access: [["CentralCommand"]]
# button frames # button frames
- type: entity - type: entity