diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets.dm b/code/game/gamemodes/dynamic/dynamic_rulesets.dm index 1ab26a2566..c510620334 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets.dm @@ -102,8 +102,10 @@ indice_pop = min(requirements.len,round(population/pop_per_requirement)+1) if(minimum_players > population) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to low pop") return FALSE if(maximum_players > 0 && population > maximum_players) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to high pop") return FALSE return (threat_level >= requirements[indice_pop]) @@ -156,6 +158,7 @@ /// IMPORTANT: If ready() returns TRUE, that means pre_execute() or execute() should never fail! /datum/dynamic_ruleset/proc/ready(forced = 0) if (required_candidates > candidates.len) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough candidates") return FALSE return TRUE diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index 849ccadd6e..49a474f55f 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -33,6 +33,7 @@ var/threat = round(mode.threat_level/10) if (job_check < required_enemies[threat]) + SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough enemy roles") return FALSE return ..() @@ -54,6 +55,7 @@ name = "Syndicate Infiltrator" antag_datum = /datum/antagonist/traitor antag_flag = "traitor late" + antag_flag_override = ROLE_TRAITOR protected_roles = list("Security Officer", "Warden", "Head of Personnel", "Detective", "Head of Security", "Captain") restricted_roles = list("AI","Cyborg") required_candidates = 1 @@ -73,7 +75,7 @@ persistent = TRUE antag_datum = /datum/antagonist/rev/head antag_flag = "rev head late" - antag_flag_override = "rev late" + antag_flag_override = ROLE_REV restricted_roles = list("AI", "Cyborg", "Prisoner", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director") enemy_roles = list("AI", "Cyborg", "Security Officer","Detective","Head of Security", "Captain", "Warden") required_enemies = list(2,2,1,1,1,1,1,0,0,0) @@ -149,6 +151,7 @@ name = "Heretic Smuggler" antag_datum = /datum/antagonist/heretic antag_flag = "heretic late" + antag_flag_override = ROLE_HERETIC protected_roles = list("Security Officer", "Warden", "Head of Personnel", "Detective", "Head of Security", "Captain","Prisoner") restricted_roles = list("AI","Cyborg") required_candidates = 1 diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index c133942108..56337d859d 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -104,7 +104,7 @@ message_admins("Polling [possible_volunteers.len] players to apply for the [name] ruleset.") log_game("DYNAMIC: Polling [possible_volunteers.len] players to apply for the [name] ruleset.") - candidates = pollGhostCandidates("The mode is looking for volunteers to become [antag_flag] for [name]", antag_flag, antag_flag_override ? antag_flag_override : antag_flag, poll_time = 300) + candidates = pollGhostCandidates("The mode is looking for volunteers to become [antag_flag] for [name]", antag_flag, be_special_flag = antag_flag_override ? antag_flag_override : antag_flag, poll_time = 300) if(!candidates || candidates.len <= 0) mode.dynamic_log("The ruleset [name] received no applications.") @@ -299,6 +299,7 @@ name = "Wizard" antag_datum = /datum/antagonist/wizard antag_flag = "wizard mid" + antag_flag_override = ROLE_WIZARD enemy_roles = list("Security Officer","Detective","Head of Security", "Captain") required_enemies = list(2,2,1,1,1,1,1,0,0,0) required_candidates = 1 @@ -330,6 +331,7 @@ name = "Nuclear Assault" antag_flag = "nukie mid" antag_datum = /datum/antagonist/nukeop + antag_flag_override = ROLE_OPERATIVE enemy_roles = list("AI", "Cyborg", "Security Officer", "Warden","Detective","Head of Security", "Captain") required_enemies = list(3,3,3,3,3,2,1,1,0,0) required_candidates = 5 diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index f7f3450f6e..2068ed47e8 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -33,6 +33,13 @@ . = ..() + GLOB.new_player_list += src + +/mob/dead/new_player/Destroy() + GLOB.new_player_list -= src + + return ..() + /mob/dead/new_player/prepare_huds() return @@ -391,7 +398,7 @@ var/id_max = text2num(href_list["maxid"]) if( (id_max - id_min) > 100 ) //Basic exploit prevention - //(protip, this stops no exploits) + //(protip, this stops no exploits) to_chat(usr, "The option ID difference is too big. Please contact administration or the database admin.") return