diff --git a/code/controllers/configuration_vr.dm b/code/controllers/configuration_vr.dm index 2ee0c8e8cf..70aebfbcbf 100644 --- a/code/controllers/configuration_vr.dm +++ b/code/controllers/configuration_vr.dm @@ -4,6 +4,8 @@ /datum/configuration var/list/engine_map // Comma separated list of engines to choose from. Blank means fully random. + var/assistants_ratio + var/assistants_assured = 15 // Default 15, only used if the ratio is set though. /hook/startup/proc/read_vs_config() var/list/Lines = file2list("config/config.txt") @@ -40,4 +42,8 @@ config.fax_export_dir = value if ("items_survive_digestion") config.items_survive_digestion = 1 + if ("assistants_ratio") + config.assistants_ratio = value + if ("assistants_assured") + config.assistants_assured = value return 1 diff --git a/code/modules/mob/new_player/new_player_vr.dm b/code/modules/mob/new_player/new_player_vr.dm index d92df60859..ce06c3830c 100644 --- a/code/modules/mob/new_player/new_player_vr.dm +++ b/code/modules/mob/new_player/new_player_vr.dm @@ -47,6 +47,22 @@ pass = FALSE to_chat(src,"Your custom species is not playable. Reconfigure your traits on the VORE tab.") + //Assistant ratio enforcement + if (config.assistants_ratio) + + var/nonassistants = 0 + var/assistants = 0 + for(var/job in job_master.occupations) + var/datum/job/J = job + if(istype(J,/datum/job/assistant)) + assistants += J.current_positions + else + nonassistants += J.current_positions + + if(assistants != 0 && assistants >= config.assistants_assured && nonassistants/assistants < config.assistants_ratio) + pass = FALSE + to_chat(src,"There are currently [assistants] assistants, and [nonassistants] normal employees, while we enforce a specific ratio. Please join as a job instead of assistant.") + //Final popup notice if (!pass) alert(src,"There were problems with spawning your character. Check your message log for details.","Error","OK")