diff --git a/code/game/gamemodes/dynamic/antag_rulesets.dm b/code/game/gamemodes/dynamic/antag_rulesets.dm
index 500f9aa419f..9e251becabb 100644
--- a/code/game/gamemodes/dynamic/antag_rulesets.dm
+++ b/code/game/gamemodes/dynamic/antag_rulesets.dm
@@ -156,6 +156,8 @@
var/datum/mind/antag = pick_n_take(possible_antags)
antag.add_antag_datum(antagonist_type)
+ log_dynamic("Latespawned [late_antag_amount] [name]s.")
+
/datum/ruleset/traitor
name = "Traitor"
ruleset_weight = 11
@@ -228,7 +230,7 @@
banned_species_only = TRUE
/datum/ruleset/implied/mindflayer/on_implied(datum/ruleset/implier)
- // log_dynamic("Rolled implied [name]: +1 [name], -1 [implier.name].")
+ log_dynamic("Rolled implied [name]: +1 [name], -1 [implier.name].")
implier.antag_amount -= 1
antag_amount += 1
was_triggered = TRUE
diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm
index dfff3aa7aae..d16bea19608 100644
--- a/code/game/gamemodes/dynamic/dynamic.dm
+++ b/code/game/gamemodes/dynamic/dynamic.dm
@@ -12,6 +12,9 @@ GLOBAL_LIST_EMPTY(dynamic_forced_rulesets)
/// How much budget is left after roundstart antagonists roll
var/budget_overflow = 0
+ /// Log for what happens in a dynamic round
+ var/list/dynamic_log = list()
+
/datum/game_mode/dynamic/announce()
to_chat(world, "The current game mode is - Dynamic")
var/list/possible_rulesets = list()
@@ -25,7 +28,7 @@ GLOBAL_LIST_EMPTY(dynamic_forced_rulesets)
/datum/game_mode/dynamic/proc/allocate_ruleset_budget()
var/ruleset_budget = text2num(GLOB.dynamic_forced_rulesets["budget"] || pickweight(list("0" = 3, "1" = 5, "2" = 12, "3" = 3))) // more likely to or 2
- // log_dynamic("Allocated gamemode budget: [ruleset_budget]")
+ log_dynamic("Allocated gamemode budget: [ruleset_budget]")
var/list/possible_rulesets = list()
for(var/datum/ruleset/ruleset as anything in subtypesof(/datum/ruleset))
if(ruleset.ruleset_weight <= 0)
@@ -35,7 +38,7 @@ GLOBAL_LIST_EMPTY(dynamic_forced_rulesets)
var/datum/ruleset/new_ruleset = new ruleset()
possible_rulesets[new_ruleset] = new_ruleset.ruleset_weight
- // log_dynamic("Available rulesets: [english_list(possible_rulesets)]")
+ log_dynamic("Available rulesets: [english_list(possible_rulesets)]")
for(var/datum/ruleset/ruleset as anything in GLOB.dynamic_forced_rulesets)
if(ruleset == "budget")
@@ -45,7 +48,7 @@ GLOBAL_LIST_EMPTY(dynamic_forced_rulesets)
if(!ispath(ruleset, /datum/ruleset))
stack_trace("Non-ruleset in GLOB.dynamic_forced_rulesets: \"[ruleset]\" ([ruleset?.type])")
continue
- // log_dynamic("Forcing ruleset: [ruleset.name]")
+ log_dynamic("Forcing ruleset: [ruleset.name]")
ruleset_budget -= pick_ruleset(new ruleset, ruleset_budget, force = TRUE)
for(var/datum/ruleset/old_ruleset in possible_rulesets)
if(old_ruleset.type == ruleset)
@@ -55,11 +58,11 @@ GLOBAL_LIST_EMPTY(dynamic_forced_rulesets)
while(ruleset_budget >= 0)
var/datum/ruleset/ruleset = pickweight(possible_rulesets)
if(!ruleset)
- // log_dynamic("No more available rulesets")
+ log_dynamic("No more available rulesets")
return
ruleset_budget -= pick_ruleset(ruleset, ruleset_budget)
possible_rulesets -= ruleset
- // log_dynamic("No more ruleset budget")
+ log_dynamic("No more ruleset budget")
/datum/game_mode/dynamic/proc/pick_ruleset(datum/ruleset/ruleset, ruleset_budget, force)
if(!ruleset)
@@ -67,9 +70,9 @@ GLOBAL_LIST_EMPTY(dynamic_forced_rulesets)
if(!force)
var/failure_reason = ruleset.ruleset_possible(ruleset_budget, rulesets)
if(failure_reason)
- // log_dynamic("Failed [ruleset.name] ruleset: [failure_reason]")
+ log_dynamic("Failed [ruleset.name] ruleset: [failure_reason]")
return
- // log_dynamic("Rolled ruleset: [ruleset.name]")
+ log_dynamic("Rolled ruleset: [ruleset.name]")
rulesets[ruleset] = ruleset.antag_weight
. = ruleset.ruleset_cost // return the ruleset cost to be subtracted from the gamemode budget
if(!ruleset.implied_ruleset_type)
@@ -77,24 +80,24 @@ GLOBAL_LIST_EMPTY(dynamic_forced_rulesets)
var/datum/ruleset/implied/implied = locate(ruleset.implied_ruleset_type) in implied_rulesets
if(!implied)
- // log_dynamic("Adding implied ruleset: [ruleset.implied_ruleset_type.name]")
+ log_dynamic("Adding implied ruleset: [ruleset.implied_ruleset_type.name]")
implied = new ruleset.implied_ruleset_type
implied_rulesets += implied
implied.RegisterSignal(ruleset, implied.target_signal, TYPE_PROC_REF(/datum/ruleset/implied, on_implied))
/datum/game_mode/dynamic/proc/allocate_antagonist_budget()
if(!length(rulesets))
- // log_dynamic("No rulesets in play.")
+ log_dynamic("No rulesets in play.")
return
var/budget = num_players()
- // log_dynamic("Allocated antagonist budget: [budget].")
+ log_dynamic("Allocated antagonist budget: [budget].")
for(var/datum/ruleset/ruleset in rulesets)
ruleset.antag_amount = 1
budget -= ruleset.antag_cost
- // log_dynamic("Automatic deduction: +1 [ruleset.name]. Remaining budget: [budget].")
+ log_dynamic("Automatic deduction: +1 [ruleset.name]. Remaining budget: [budget].")
- // log_dynamic("Rulesets in play: [english_list((rulesets + implied_rulesets))]")
+ log_dynamic("Rulesets in play: [english_list((rulesets + implied_rulesets))]")
apply_antag_budget(budget)
@@ -103,42 +106,43 @@ GLOBAL_LIST_EMPTY(dynamic_forced_rulesets)
while(budget >= 0)
var/datum/ruleset/ruleset = pickweight(temp_rulesets)
if(!ruleset)
- // log_dynamic("No rulesets remaining. Remaining budget: [budget].")
+ log_dynamic("No rulesets remaining. Remaining budget: [budget].")
budget_overflow = budget
return
if(!ruleset.antagonist_possible(budget))
- // log_dynamic("Rolled [ruleset.name]: failed, removing [ruleset.name] ruleset.")
+ log_dynamic("Rolled [ruleset.name]: failed, removing [ruleset.name] ruleset.")
temp_rulesets -= ruleset
continue
ruleset.antag_amount++
budget -= ruleset.antag_cost
- // log_dynamic("Rolled [ruleset.name]: success, +1 [ruleset.name]. Remaining budget: [budget].")
- // log_dynamic("No more antagonist budget remaining.")
+ log_dynamic("Rolled [ruleset.name]: success, +1 [ruleset.name]. Remaining budget: [budget].")
+ log_dynamic("No more antagonist budget remaining.")
/datum/game_mode/dynamic/pre_setup()
- // var/watch = start_watch()
- // log_dynamic("Starting dynamic setup.")
+ var/watch = start_watch()
+ log_dynamic("Starting dynamic setup.")
allocate_ruleset_budget()
- // log_dynamic("-=-=-=-=-=-=-=-=-=-=-=-=-")
+ log_dynamic("-=-=-=-=-=-=-=-=-=-=-=-=-")
allocate_antagonist_budget()
- // log_dynamic("=-=-=-=-=-=-=-=-=-=-=-=-=")
+ log_dynamic("=-=-=-=-=-=-=-=-=-=-=-=-=")
for(var/datum/ruleset/ruleset in (rulesets + implied_rulesets)) // rulesets first, then implied rulesets
- // log_dynamic("Applying [ruleset.antag_amount] [ruleset.name]\s.")
+ log_dynamic("Applying [ruleset.antag_amount] [ruleset.name]\s.")
budget_overflow += ruleset.roundstart_pre_setup()
- // log_dynamic("Budget overflow: [budget_overflow].")
+ log_dynamic("Budget overflow: [budget_overflow].")
// for the future, maybe try readding antagonists with apply_antag_budget(budget_overflow)
- // log_dynamic("Finished dynamic setup in [stop_watch(watch)]s")
+ log_dynamic("Finished dynamic setup in [stop_watch(watch)]s.")
return TRUE
/datum/game_mode/dynamic/post_setup()
for(var/datum/ruleset/ruleset in (rulesets + implied_rulesets))
- // if(length(ruleset.pre_antags))
- // log_dynamic("Making antag datums for [ruleset.name] ruleset.")
+ if(length(ruleset.pre_antags))
+ log_dynamic("Making antag datums for [ruleset.name] ruleset.")
ruleset.roundstart_post_setup(src)
if(ruleset.latespawn_time)
addtimer(CALLBACK(ruleset, TYPE_PROC_REF(/datum/ruleset, latespawn), src), ruleset.latespawn_time)
+ log_dynamic("[ruleset]s will latespawn at [ruleset.latespawn_time / 600].")
..()
/datum/game_mode/dynamic/latespawn(mob)
@@ -156,6 +160,7 @@ GLOBAL_LIST_EMPTY(dynamic_forced_rulesets)
for(var/datum/ruleset/possible_ruleset as anything in subtypesof(/datum/ruleset))
if(istype(antag, possible_ruleset.antagonist_type))
budget_overflow += possible_ruleset.antag_cost
+ log_dynamic("[possible_ruleset] cryo. +[possible_ruleset.antag_cost] budget.")
/datum/game_mode/dynamic/get_webhook_name()
var/list/implied_and_used = list()
@@ -164,7 +169,9 @@ GLOBAL_LIST_EMPTY(dynamic_forced_rulesets)
implied_and_used += implied
return "[name] ([english_list(rulesets + implied_and_used, nothing_text = "Extended")])"
-// /proc/log_dynamic(text)
-// for(var/client/C in GLOB.admins)
-// if(check_rights(R_DEBUG, FALSE, C.mob) && (C.prefs.toggles & PREFTOGGLE_CHAT_DEBUGLOGS))
-// to_chat(C, "DYNAMIC: [text]", MESSAGE_TYPE_DEBUG, confidential = TRUE)
+/proc/log_dynamic(text)
+ log_game("Dynamic: [text]")
+ var/datum/game_mode/dynamic/dynamic = SSticker.mode
+ if(!istype(dynamic))
+ return
+ dynamic.dynamic_log += text