Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-23-10-2025

This commit is contained in:
Roxy
2025-10-23 17:38:23 -04:00
453 changed files with 20635 additions and 15897 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"
@@ -290,6 +290,7 @@ SUBSYSTEM_DEF(id_access)
desc_by_access["[ACCESS_VIROLOGY]"] = "Virology"
desc_by_access["[ACCESS_PSYCHOLOGY]"] = "Psychology"
desc_by_access["[ACCESS_CMO]"] = "CMO Office"
desc_by_access["[ACCESS_PARAMEDIC]"] = "Paramedic Office"
desc_by_access["[ACCESS_QM]"] = "QM Office"
desc_by_access["[ACCESS_SURGERY]"] = "Surgery"
desc_by_access["[ACCESS_THEATRE]"] = "Theatre"
@@ -20,16 +20,9 @@ SUBSYSTEM_DEF(stock_market)
/datum/controller/subsystem/stock_market/Initialize()
for(var/datum/material/possible_market as anything in subtypesof(/datum/material)) // I need to make this work like this, but lets hardcode it for now
if(possible_market.tradable)
materials_prices += possible_market
materials_prices[possible_market] = possible_market.value_per_unit * SHEET_MATERIAL_AMOUNT
materials_trends += possible_market
materials_trends[possible_market] = rand(MARKET_TREND_DOWNWARD,MARKET_TREND_UPWARD) //aka -1 to 1
materials_trend_life += possible_market
materials_trend_life[possible_market] = rand(1,3)
materials_quantity += possible_market
materials_quantity[possible_market] = possible_market.tradable_base_quantity + (rand(-(possible_market.tradable_base_quantity) * 0.5, possible_market.tradable_base_quantity * 0.5))
return SS_INIT_SUCCESS