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

This commit is contained in:
Roxy
2025-10-15 19:34:41 -04:00
656 changed files with 24772 additions and 15866 deletions
@@ -35,19 +35,6 @@
/datum/dynamic_ruleset/latejoin/traitor/assign_role(datum/mind/candidate)
candidate.add_antag_datum(/datum/antagonist/traitor)
/datum/dynamic_ruleset/latejoin/heretic
name = "Heretic"
config_tag = "Latejoin Heretic"
preview_antag_datum = /datum/antagonist/heretic
pref_flag = ROLE_HERETIC_SMUGGLER
jobban_flag = ROLE_HERETIC
weight = 3
min_pop = 30 // Ensures good spread of sacrifice targets
ruleset_lazy_templates = list(LAZY_TEMPLATE_KEY_HERETIC_SACRIFICE)
blacklisted_roles = list(
JOB_HEAD_OF_PERSONNEL,
)
/datum/dynamic_ruleset/latejoin/heretic/assign_role(datum/mind/candidate)
candidate.add_antag_datum(/datum/antagonist/heretic)
@@ -13,8 +13,10 @@ ADMIN_VERB(dynamic_tester, R_DEBUG, "Dynamic Tester", "See dynamic probabilities
/// A formatted report of the weights of each roundstart ruleset, refreshed occasionally and sent to the UI.
var/list/roundstart_ruleset_report = list()
/// A formatted report of the weights of each midround ruleset, refreshed occasionally and sent to the UI.
var/list/midround_ruleset_report = list()
/// A formatted report of the weights of each light midround ruleset, refreshed occasionally and sent to the UI.
var/list/light_midround_ruleset_report = list()
/// A formatted report of the weights of each heavy midround ruleset, refreshed occasionally and sent to the UI.
var/list/heavy_midround_ruleset_report = list()
/// What is the tier we are testing?
var/tier = 1
@@ -57,8 +59,9 @@ ADMIN_VERB(dynamic_tester, R_DEBUG, "Dynamic Tester", "See dynamic probabilities
data["tier"] = tier
data["num_players"] = num_players
data["roundstart_ruleset_report"] = flatten_list(roundstart_ruleset_report)
data["midround_ruleset_report"] = flatten_list(midround_ruleset_report)
data["roundstart_ruleset_report"] = assoc_to_values(roundstart_ruleset_report)
data["light_midround_ruleset_report"] = assoc_to_values(light_midround_ruleset_report)
data["heavy_midround_ruleset_report"] = assoc_to_values(heavy_midround_ruleset_report)
return data
@@ -98,14 +101,16 @@ ADMIN_VERB(dynamic_tester, R_DEBUG, "Dynamic Tester", "See dynamic probabilities
"comment" = comment,
)
midround_ruleset_report.Cut()
light_midround_ruleset_report.Cut()
heavy_midround_ruleset_report.Cut()
for(var/datum/dynamic_ruleset/midround/ruleset as anything in midround_rulesets)
midround_ruleset_report[ruleset] = list(
var/list/list_to_add = ruleset.midround_type == LIGHT_MIDROUND ? light_midround_ruleset_report : heavy_midround_ruleset_report
list_to_add[ruleset] = list(
"name" = ruleset.name,
"weight" = ruleset.get_weight(num_players, tier),
"max_candidates" = ruleset.get_antag_cap(num_players, ruleset.max_antag_cap || ruleset.min_antag_cap),
"min_candidates" = ruleset.get_antag_cap(num_players, ruleset.min_antag_cap),
"comment" = ruleset.midround_type,
)
update_static_data_for_all_viewers()
+1 -1
View File
@@ -27,7 +27,7 @@ SUBSYSTEM_DEF(economy)
var/techweb_bounty = 250
/**
* List of normal (no department ones) accounts' identifiers with associated datum accounts, for big O performance.
* A list of sole account datums can be obtained with flatten_list(), another variable would be redundant rn.
* A list of sole account datums can be obtained with assoc_to_values(), another variable would be redundant rn.
*/
var/list/bank_accounts_by_id = list()
/// A list of bank accounts indexed by their assigned job typepath.
+3 -3
View File
@@ -127,7 +127,7 @@ SUBSYSTEM_DEF(throwing)
qdel(src)
/// Returns the mob thrower, or null
/// Returns the thrower, or null
/datum/thrownthing/proc/get_thrower()
. = thrower?.resolve()
if(isnull(.))
@@ -144,11 +144,11 @@ SUBSYSTEM_DEF(throwing)
return
var/atom/movable/actual_target = initial_target?.resolve()
var/mob/mob_thrower = get_thrower()
var/atom/thrower = get_thrower()
if(dist_travelled) //to catch sneaky things moving on our tile while we slept
for(var/atom/movable/obstacle as anything in get_turf(thrownthing))
if (obstacle == thrownthing || (obstacle == mob_thrower && !ismob(thrownthing)))
if(obstacle == thrownthing || (obstacle == thrower && !ismob(thrownthing)))
continue
if(ismob(obstacle) && thrownthing.pass_flags & PASSMOB && (obstacle != actual_target))
continue
+4
View File
@@ -14,7 +14,11 @@ SUBSYSTEM_DEF(ticker)
/// or a "round-ending" event, like summoning Nar'Sie, a blob victory, the nuke going off, etc. ([FORCE_END_ROUND])
var/force_ending = END_ROUND_AS_NORMAL
/// If TRUE, there is no lobby phase, the game starts immediately.
#ifdef ABSOLUTE_MINIMUM
var/start_immediately = TRUE
#else
var/start_immediately = FALSE
#endif
/// Boolean to track and check if our subsystem setup is done.
var/setup_done = FALSE