Skip to content

Implements dynamic latespawns#31005

Open
chuga-git wants to merge 15 commits intoParadiseSS13:masterfrom
chuga-git:dynamic-latespawn
Open

Implements dynamic latespawns#31005
chuga-git wants to merge 15 commits intoParadiseSS13:masterfrom
chuga-git:dynamic-latespawn

Conversation

@chuga-git
Copy link
Contributor

@chuga-git chuga-git commented Nov 15, 2025

What Does This PR Do

Generalizes the dynamic gamemode latespawn system to all antagonists. Latespawns were previously only implemented for traitors.

Brief description of how dynamic works:

  1. A random amount of rulesets are chosen at the start of the round. A ruleset is basically the type of antagonist that will be rolled.
  2. One antag from each ruleset is spawned, and their cost subtracted from the antagonist budget (if there are enough candidates).
  3. Antagonists are randomly rolled from the chosen rulesets until the budget is gone.
  4. Late joins increase the antagonist budget over the rest of the round.

My implementation works like this:

  • When a latejoin happens, we check if there's enough banked budget to buy an antagonist.
  • If there is, antagonists are randomly rolled from the round's rulesets until the budget is yet again exhausted.

Essentially, every antagonist now works like autotraitor.

Why It's Good For The Game

image

Testing

I tested it as best as I can locally, but this needs a TM.

Declaration

  • I confirm that I either do not require pre-approval for this PR, or I have obtained such approval and have included a screenshot to demonstrate this below.

Changelog

🆑
add: Vampires, Changelings, and Mindflayers can now be rolled mid-round.
/:cl:

@ParadiseSS13-Bot ParadiseSS13-Bot added the -Status: Awaiting type assignment This PR is waiting for its type to be assigned internally label Nov 15, 2025
@chuga-git chuga-git marked this pull request as ready for review November 15, 2025 23:07
@ParadiseSS13-Bot ParadiseSS13-Bot added -Status: Awaiting approval This PR is waiting for approval internally -Status: Awaiting review This PR is awaiting review from the review team Testmerge Requested This PR has a pending testmerge request and removed -Status: Awaiting type assignment This PR is waiting for its type to be assigned internally -Status: Awaiting approval This PR is waiting for approval internally labels Nov 19, 2025
@ParadiseSS13-Bot ParadiseSS13-Bot added the Testmerge Active This PR is currently testmerged on production label Nov 26, 2025
@chuga-git
Copy link
Contributor Author

chuga-git commented Nov 29, 2025

Post-TM update changelog:

  • Removed the autotraitor ruleset.
  • Prevented explorers from getting latespawned as vampires.
  • Fixed mindflayer ruleset not respecting banned jobs.
  • Tweaked budget population scaling formula to round result up to the nearest whole number.
  • Tweaked how the latespawn budget threshold is calculated. It is now set to the most expensive ruleset of the round. For example, if the rulesets were traitor (7 budget) and vampire (10 budget), min_latespawn_budget would be set to 10.

@spacegeese
Copy link
Contributor

Can the budget increase after it's been exhausted, say if an antag cryos?

Copy link
Contributor

@Contrabang Contrabang left a comment

Choose a reason for hiding this comment

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

looks pretty good to me

@ParadiseSS13-Bot ParadiseSS13-Bot added -Status: Awaiting merge This PR is ready for merge and removed -Status: Awaiting review This PR is awaiting review from the review team labels Dec 24, 2025
@Burzah Burzah added the On Hold Its gonna be a while before this is reviewed label Dec 31, 2025
@Burzah
Copy link
Member

Burzah commented Dec 31, 2025

On hold until after Heretic is merged.

@github-actions github-actions bot added the Merge Conflict This PR is merge conflicted label Jan 27, 2026
@PollardTheDragon PollardTheDragon removed the On Hold Its gonna be a while before this is reviewed label Jan 28, 2026
@PollardTheDragon
Copy link
Contributor

Heretic merged - removing hold

@PollardTheDragon
Copy link
Contributor

Issue found: It is antagging people who have the option to roll antag off on the main menu during the round.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

-Status: Awaiting merge This PR is ready for merge Testmerge Active This PR is currently testmerged on production Testmerge Requested This PR has a pending testmerge request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants