Adds two heavy midround rulesets, mass traitors and mass changelings (#93447)

## About The Pull Request

- [ ] I tested this pr

Adds "Midround Mass Traitors" and "Midround Mass Changelings" heavy
rulesets

Midround Mass Traitors will turn a number of the crew into sleeper
agents

Midround Mass Lings will spawn a number of changeling meteors 

BY DEFAULT:
- Traitors will spawn 2-4 sleeper agents
- Lings will spawn 2-3 changeling meteors
- They won't run without >=2 candidates
- They have no config blacklist (so the HoP can roll mass midround
traitor, despite not being able to roll normal midround traitor. However
default blacklisted roles like security officers are still blocked)
- They're weighted impossible on tier 0, same weight as most midrounds
on tier 1, and fairly high on tiers 2 and 3
- They're repeatable but very unlikely to repeat
- Significantly higher min pop brackets than their solo counter part

## Why It's Good For The Game

Adds more options for lategame antags than big midrounds

## Changelog

🆑 Melbert
add: Two new heavy dynamic rulesets: "Midround Mass Traitors" and
"Midround Mass Changelings"
/🆑
This commit is contained in:
MrMelbert
2025-10-18 19:06:29 +02:00
committed by GitHub
parent 0286af8506
commit 8b8bcfd674
6 changed files with 73 additions and 7 deletions
@@ -43,6 +43,9 @@
/// Ruleset can be configured by admins (implements /proc/configure_ruleset)
/// Only implemented for midrounds currently
#define RULESET_ADMIN_CONFIGURABLE (1<<2)
/// Applied to rulesets which intentionally share a pref_flag with another rulesets
/// Denotes multiple rulesets which abide by the same preference, but are each a variation of some base ruleset
#define RULESET_VARIATION (1<<3)
/// Href for cancelling midround rulesets before execution
#define MIDROUND_CANCEL_HREF(...) "(<a href='byond://?src=[REF(src)];admin_cancel_midround=[REF(picked_ruleset)]'>CANCEL</a>)"
@@ -10,9 +10,12 @@
/// Don't change this unless you know what you're doing.
var/config_tag
/// What flag to check for jobbans? Optional, if unset, uses pref_flag
/// What flag to check for jobbans?
/// Optional, if unset, uses pref_flag for jobbans instead
var/jobban_flag
/// What flag to check for prefs? Required if the antag has an associated preference
/// What flag to check for prefs?
/// Required if the antag has an associated preference, and must be unique
/// (unless RULESET_VARIATION is set in ruleset_flags)
var/pref_flag
/// Flags for this ruleset
var/ruleset_flags = NONE
@@ -658,7 +658,7 @@
candidate_role = "Changeling"
pref_flag = ROLE_CHANGELING_MIDROUND
jobban_flag = ROLE_CHANGELING
ruleset_flags = RULESET_INVADER
ruleset_flags = RULESET_INVADER|RULESET_VARIATION
weight = 5
min_pop = 15
max_antag_cap = 1
@@ -670,6 +670,21 @@
/datum/dynamic_ruleset/midround/from_ghosts/space_changeling/assign_role(datum/mind/candidate)
generate_changeling_meteor(candidate)
/datum/dynamic_ruleset/midround/from_ghosts/space_changeling/mass
name = "Mass Space Changelings"
config_tag = "Mass Changelings"
midround_type = HEAVY_MIDROUND
min_pop = 25
min_antag_cap = 2
max_antag_cap = 3
repeatable_weight_decrease = 4
weight = list(
DYNAMIC_TIER_LOW = 0,
DYNAMIC_TIER_LOWMEDIUM = 3,
DYNAMIC_TIER_MEDIUMHIGH = 4,
DYNAMIC_TIER_HIGH = 5,
)
/datum/dynamic_ruleset/midround/from_ghosts/paradox_clone
name = "Paradox Clone"
config_tag = "Paradox Clone"
@@ -1064,6 +1079,7 @@
false_alarm_able = TRUE
pref_flag = ROLE_SLEEPER_AGENT
jobban_flag = ROLE_TRAITOR
ruleset_flags = RULESET_VARIATION
weight = 10
min_pop = 3
blacklisted_roles = list(
@@ -1079,6 +1095,22 @@
"[command_name()] High-Priority Update",
)
/datum/dynamic_ruleset/midround/from_living/traitor/mass
name = "Mass Traitors"
config_tag = "Mass Traitors"
midround_type = HEAVY_MIDROUND
min_pop = 15
min_antag_cap = 2
max_antag_cap = 4
repeatable_weight_decrease = 8
blacklisted_roles = list()
weight = list(
DYNAMIC_TIER_LOW = 0,
DYNAMIC_TIER_LOWMEDIUM = 3,
DYNAMIC_TIER_MEDIUMHIGH = 8,
DYNAMIC_TIER_HIGH = 10,
)
/datum/dynamic_ruleset/midround/from_living/malf_ai
name = "Malfunctioning AI"
config_tag = "Midround Malfunctioning AI"