WIP: Tabletop-Esque Exclusive Campaign Infrastructure #561

Closed
LukeZurg22 wants to merge 16 commits from campaign-whitelist into master
Contributor

PR Changes

Adds Campaign-specific player whitelist.

Reasons Behind Changes

There are people interested in a D&D-esque mini campaign, and it is about high time I add some infrastructure that has proven to be effective elsewhere.

Code & Technical details

The database model was changed to accommodate this new list. A lot of refactors were made to the Model.cs and ServerDb classes; purely syntactical.

Images; Sprites; Media

none

Checklist

  • I read the Pull Request and Changelog Guidelines and Byrd Station's Contributor Ruleset am following them.
  • I have added media to this PR, or it does not require an ingame showcase.
  • Add temporary GM permissions. Add permissions to GM on bunker "campaign mode", remove them on disable or round restart.
  • Add campaign-specific players? Separate GMs and their players lists by using GM name as key and detect if GM is present for them to join?
  • Finish commands and calls for [de]assigning temporary GM status.
  • Add localization.
  • Run add-migration.ps1 in powershell with arbitrary name; no date.
  • Test. (NON-GM NON-LISTED PLAYER FIRST. LISTED PLAYER SECOND.)

Note to self: Consider adding a timer. If a campaign session goes on too long, forcibly reopen the server and end their session. They can continue another time. Consider a timer for 24 hours to prevent instantly turning it back on? Also consider scheduling command to automate the process for close and reopen, and schedule close command to cancel it?

Consider a ForceCampaignRound command, where it starts a fresh round in Sandbox which will last for time provided?
Consider allowing non-campaigngoers to join and spectate, perhaps even ghost role. This partially solves the isolative effect.

Breaking changes

Ingame Changelog

🆑

  • add: Added Campaign-Specific Whitelist
## PR Changes Adds Campaign-specific player whitelist. ## Reasons Behind Changes There are people interested in a D&D-esque mini campaign, and it is about high time I add some infrastructure that has proven to be effective elsewhere. ## Code & Technical details The database model was changed to accommodate this new list. A lot of refactors were made to the Model.cs and ServerDb classes; purely syntactical. ## Images; Sprites; Media none ## Checklist <!--Understand that not following all Contributor rule standards may get your PR closed at a maintainer’s discretion. Failure to follow the Contributor's ruleset may lead to your removal as a contributor.--> <!-- Confirm by placing an X in the brackets [X]: --> - [X] I read the [Pull Request and Changelog Guidelines](https://docs.spacestation14.com/en/general-development/codebase-info/pull-request-guidelines.html) and [Byrd Station's Contributor Ruleset](https://docs.google.com/document/d/1oxCSRBc_2IlrcykljB5SPt783uJX7rMHTT7cImxlKFM/edit?tab=t.0#heading=h.vigrxrnffwji) am following them. - [X] I have added media to this PR, or it does not require an ingame showcase. - [ ] Add temporary GM permissions. Add permissions to GM on bunker "campaign mode", remove them on disable or round restart. - [ ] Add campaign-specific players? Separate GMs and their players lists by using GM name as key and detect if GM is present for them to join? - [ ] Finish commands and calls for [de]assigning temporary GM status. - [ ] Add localization. - [ ] Run add-migration.ps1 in powershell with arbitrary name; no date. - [ ] Test. (NON-GM NON-LISTED PLAYER FIRST. LISTED PLAYER SECOND.) Note to self: Consider adding a timer. If a campaign session goes on too long, forcibly reopen the server and end their session. They can continue another time. Consider a timer for 24 hours to prevent instantly turning it back on? Also consider scheduling command to automate the process for close and reopen, and schedule close command to cancel it? Consider a ForceCampaignRound command, where it starts a fresh round in Sandbox which will last for <X> time provided? Consider allowing non-campaigngoers to join and spectate, perhaps even ghost role. This partially solves the isolative effect. ## Breaking changes <!-- List any breaking changes, including namespaces, public class/method/field changes, prototype renames; and provide instructions for fixing them. This will be posted in #codebase-changes. --> **Ingame Changelog** <!-- Add a Changelog entry to make players ingame aware of new changes that could affect gameplay.--> :cl: - add: Added Campaign-Specific Whitelist
Set to Campaign List Calls
All checks were successful
CRLF Check / CRLF Check (pull_request) Has been skipped
Close PRs on master / run (pull_request_target) Has been skipped
RGA schema validator / YAML RGA schema validator (pull_request) Has been skipped
Test Packaging / Test Packaging (pull_request) Has been skipped
Labels: Size / size-label (pull_request_target) Successful in 3s
Labels: PR / labeler (pull_request_target) Successful in 3s
YAML Linter / YAML Linter (pull_request) Has been skipped
Map file schema validator / YAML map schema validator (pull_request) Has been skipped
RSI Validator / Validate RSIs (pull_request) Successful in 1m0s
c56ed02ba8
LukeZurg22 changed title from WIP: Tabletop-Esque Exclusive Campaign to WIP: Tabletop-Esque Exclusive Campaign Infrastructure 2026-07-05 10:08:45 +00:00
Cleanup CampaignListCommands.cs
All checks were successful
Test Packaging / Test Packaging (pull_request) Has been skipped
CRLF Check / CRLF Check (pull_request) Has been skipped
RGA schema validator / YAML RGA schema validator (pull_request) Has been skipped
Labels: Size / size-label (pull_request_target) Successful in 3s
Labels: PR / labeler (pull_request_target) Successful in 4s
YAML Linter / YAML Linter (pull_request) Has been skipped
Map file schema validator / YAML map schema validator (pull_request) Has been skipped
RSI Validator / Validate RSIs (pull_request) Successful in 56s
5959f6cba0
Cleanup wording in CCVars.Game.cs
All checks were successful
Test Packaging / Test Packaging (pull_request) Has been skipped
CRLF Check / CRLF Check (pull_request) Has been skipped
RGA schema validator / YAML RGA schema validator (pull_request) Has been skipped
Labels: Size / size-label (pull_request_target) Successful in 2s
Labels: PR / labeler (pull_request_target) Successful in 3s
YAML Linter / YAML Linter (pull_request) Has been skipped
Map file schema validator / YAML map schema validator (pull_request) Has been skipped
RSI Validator / Validate RSIs (pull_request) Successful in 59s
2b76c83567
Added CampaignHost player profile check.
All checks were successful
CRLF Check / CRLF Check (pull_request) Has been skipped
Test Packaging / Test Packaging (pull_request) Has been skipped
RGA schema validator / YAML RGA schema validator (pull_request) Has been skipped
Labels: PR / labeler (pull_request_target) Successful in 3s
Labels: Size / size-label (pull_request_target) Successful in 3s
Map file schema validator / YAML map schema validator (pull_request) Has been skipped
YAML Linter / YAML Linter (pull_request) Has been skipped
RSI Validator / Validate RSIs (pull_request) Successful in 1m8s
0834aa9fd7
Note: VERY important! Used for permissions and whatnot later.
Adjust Model.cs so that campaign host isn't character-specific.
All checks were successful
CRLF Check / CRLF Check (pull_request) Has been skipped
Test Packaging / Test Packaging (pull_request) Has been skipped
RGA schema validator / YAML RGA schema validator (pull_request) Has been skipped
Labels: Size / size-label (pull_request_target) Successful in 2s
Labels: PR / labeler (pull_request_target) Successful in 3s
Map file schema validator / YAML map schema validator (pull_request) Has been skipped
YAML Linter / YAML Linter (pull_request) Has been skipped
RSI Validator / Validate RSIs (pull_request) Successful in 55s
bbbdcf3900
Grammar adjustment in ServerDbManager.cs
All checks were successful
Test Packaging / Test Packaging (pull_request) Has been skipped
CRLF Check / CRLF Check (pull_request) Has been skipped
RGA schema validator / YAML RGA schema validator (pull_request) Has been skipped
Labels: Size / size-label (pull_request_target) Successful in 3s
Labels: PR / labeler (pull_request_target) Successful in 3s
Map file schema validator / YAML map schema validator (pull_request) Has been skipped
YAML Linter / YAML Linter (pull_request) Has been skipped
RSI Validator / Validate RSIs (pull_request) Successful in 58s
PR Changelogs / changelog (pull_request_target) Has been skipped
a73a5fcfe1
LukeZurg22 closed this pull request 2026-07-24 04:32:14 +00:00
All checks were successful
Test Packaging / Test Packaging (pull_request) Has been skipped
CRLF Check / CRLF Check (pull_request) Has been skipped
RGA schema validator / YAML RGA schema validator (pull_request) Has been skipped
Labels: Size / size-label (pull_request_target) Successful in 3s
Labels: PR / labeler (pull_request_target) Successful in 3s
Map file schema validator / YAML map schema validator (pull_request) Has been skipped
YAML Linter / YAML Linter (pull_request) Has been skipped
RSI Validator / Validate RSIs (pull_request) Successful in 58s
PR Changelogs / changelog (pull_request_target) Has been skipped

Pull request closed

Sign in to join this conversation.
No description provided.