Skip to content

Port spare ID cabinet, port automaticspareidsystem, add spareid:unlock command - #94

Open
JustTNE wants to merge 2 commits into
DeltaV-Station:masterfrom
JustTNE:spare-id
Open

Port spare ID cabinet, port automaticspareidsystem, add spareid:unlock command#94
JustTNE wants to merge 2 commits into
DeltaV-Station:masterfrom
JustTNE:spare-id

Conversation

@JustTNE

@JustTNE JustTNE commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

About the PR

Partially port DeltaV-Station/Delta-v#671
Port DeltaV-Station/Delta-v#3691
Port DeltaV-Station/Delta-v#5104
Closes #83

DCO: #1 (comment)
DCO: #1 (comment)

Other content reverse engineered, entirely rewritten or licensed under a compatible license.

Compared to original, adds two extra functions: ForceUnlock (public API), UnlockCabinet (private helper)
Adds extra command: spareid:unlock which can unlock the spare id cabinet. Common usage stations:get | spareid:unlock true

Why / Balance

Port from old codebase.

Technical details

1-1 port of DVAutomaticSpareIdSystem, changes to locale strings, two extra functions added
Command spareid:unlock added.
RSI ported
Biscuits are dropped since they are not commonly used and complications with licensing being in the way.

Test plan

Join game, wait 15 minutes, observe announcement. Wait 5 minutes, observe announcement and command access on cabinet. Use command -> observe announcement + access change. Nukeops war is untested (I am not sure how to test this well locally. War declarator does not seem to work even with the gamerule in play and one operative alive),

Requirements

  • I have tested this pull request and written instructions on how to test it
  • I have added media to this PR or it does not require an in-game showcase.

Licensing

Breaking changes

None

@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

RSI Diff Bot; head commit 86cb89d merging into 0e686ea
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/_DVA/Structures/Wallmounts/idcard_cabinet.rsi

State Old New Status
cabinet-empty-closed Added
cabinet-empty-open Added
cabinet-filled-closed Added
cabinet-filled-open Added
cabinet Added
card Added
glass-1 Added
glass-2 Added
glass-3 Added
glass-4 Added
glass-up Added
glass Added
locked Added
unlocked Added

Edit: diff updated after 86cb89d

@ShepardToTheStars ShepardToTheStars left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whats the command usage? It looks like it requires a param. Is that the cabinet's ID?

Comment thread Resources/Locale/en-US/_DVA/job/captain-state.ftl Outdated
Comment thread Resources/Locale/en-US/_DVA/job/captain-state.ftl Outdated
Comment thread Resources/Locale/en-US/_DVA/job/captain-state.ftl Outdated
Comment thread Resources/Locale/en-US/_DVA/job/captain-state.ftl Outdated
Comment thread Resources/Locale/en-US/_DVA/job/captain-state.ftl Outdated
Comment thread Content.Server/Station/Systems/StationJobsSystem.cs Outdated
Comment thread Content.Server/_DVA/Station/Systems/DVAutomaticSpareIdSystem.Commands.cs Outdated
@ShepardToTheStars

Copy link
Copy Markdown
Contributor

I am not sure how to test this well locally. War declarator does not seem to work even with the gamerule in play and one operative alive

You can query the entity with NukeOpsRuleComponent and change the WarDeclarationMinOps to 0 or 1.

@JustTNE

JustTNE commented Jul 30, 2026

Copy link
Copy Markdown
Contributor Author

Whats the command usage? It looks like it requires a param. Is that the cabinet's ID?

The command applies the access to every cabinet in the exact same way the auto ACO procedure does it. It hooks directly into its API to keep the state of the auto ACO procedure updated to prevent erroneous/duplicate announcements.

The syntax is simply unlockspareid <true|false> where the true/false value refers to if an announcement should be made automatically:

Command access authority has been manually granted to the Spare ID cabinet by Central Command. Unauthorized possession of the spare captain ID is punishable under Grand Felony Offense [307]: Grand Larceny.

…cabinet command

DCO: DeltaV-Station#1 (comment)
DCO: DeltaV-Station#1 (comment)

Other content reverse engineered, entirely rewritten or licensed under a compatible license.

Compared to original, adds two extra functions: ForceUnlock (public API), UnlockCabinet (private helper)

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
@JustTNE JustTNE changed the title Port spare ID cabinet, port automaticspareidsystem, add unlockspareidcabinet command Port spare ID cabinet, port automaticspareidsystem, add unlockspareid command Jul 30, 2026
@JustTNE

JustTNE commented Jul 30, 2026

Copy link
Copy Markdown
Contributor Author

Switched to toolshed by @sowelipililimute's request

@JustTNE JustTNE changed the title Port spare ID cabinet, port automaticspareidsystem, add unlockspareid command Port spare ID cabinet, port automaticspareidsystem, add spareid:unlock command Jul 30, 2026
Common usage: stations:get | spareid:unlock true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Spare ID cabinet

2 participants