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