diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm index 6c4e3b8f6e..70b0dc75f4 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -18,6 +18,11 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) minimal_access = list() //See get_access() minimal_player_age = 14 economic_modifier = 20 + + minimum_character_age = 30 + ideal_character_age = 70 // Old geezer captains ftw + + equip(var/mob/living/carbon/human/H) if(!H) return 0 H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_l_ear) @@ -63,6 +68,9 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) req_admin_notify = 1 minimal_player_age = 10 economic_modifier = 10 + minimum_character_age = 23 + ideal_character_age = 50 + access = list(access_security, access_sec_doors, access_brig, access_forensics_lockers, access_medical, access_engine, access_change_ids, access_ai_upload, access_eva, access_heads, access_all_personal_lockers, access_maint_tunnels, access_bar, access_janitor, access_construction, access_morgue, diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 5fe43b0a43..e6a0a779b7 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -101,6 +101,9 @@ access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) + minimum_character_age = 25 + ideal_character_age = 40 + equip(var/mob/living/carbon/human/H) if(!H) return 0 diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index 27cd6a753e..ae57428972 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -12,6 +12,11 @@ idtype = /obj/item/weapon/card/id/silver req_admin_notify = 1 economic_modifier = 10 + + minimum_character_age = 35 + ideal_character_age = 50 + + access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_teleporter, access_external_airlocks, access_atmospherics, access_emergency_storage, access_eva, access_heads, access_construction, access_sec_doors, diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index b84b673a40..839870de91 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -19,6 +19,8 @@ var/minimal_player_age = 0 // If you have use_age_restriction_for_jobs config option enabled and the database set up, this option will add a requirement for players to be at least minimal_player_age days old. (meaning they first signed in at least that many days before.) var/department = null // Does this position have a department tag? var/head_position = 0 // Is this position Command? + var/minimum_character_age + var/ideal_character_age var/account_allowed = 1 // Does this job type come with a station account? var/economic_modifier = 2 // With how much does this job modify the initial account amount? diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 179a4c4fea..1bc4ead480 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -18,7 +18,10 @@ minimal_access = list(access_medical, access_medical_equip, access_morgue, access_genetics, access_heads, access_chemistry, access_virology, access_cmo, access_surgery, access_RC_announce, access_keycard_auth, access_sec_doors, access_psychiatrist, access_eva, access_external_airlocks, access_maint_tunnels) + minimal_player_age = 10 + minimum_character_age = 35 + ideal_character_age = 50 equip(var/mob/living/carbon/human/H) if(!H) return 0 diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index 05690d4339..cfa96d6af1 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -20,7 +20,10 @@ access_tox_storage, access_teleporter, access_sec_doors, access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage, access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch) + minimal_player_age = 14 + minimum_character_age = 35 + ideal_character_age = 50 equip(var/mob/living/carbon/human/H) if(!H) return 0 diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 37f00428dd..125c3a38bf 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -137,30 +137,24 @@ var/global/datum/controller/occupations/job_master // Build a weighted list, weight by age. var/list/weightedCandidates = list() - - // Different head positions have different good ages. - var/good_age_minimal = 25 - var/good_age_maximal = 60 - if(command_position == "Captain") - good_age_minimal = 30 - good_age_maximal = 70 // Old geezer captains ftw - for(var/mob/V in candidates) // Log-out during round-start? What a bad boy, no head position for you! if(!V.client) continue var/age = V.client.prefs.age + + if(age < job.minimum_character_age) // Nope. + continue + switch(age) - if(good_age_minimal - 10 to good_age_minimal) + if(job.minimum_character_age to (job.minimum_character_age+10)) weightedCandidates[V] = 3 // Still a bit young. - if(good_age_minimal to good_age_minimal + 10) + if((job.minimum_character_age+10) to (job.ideal_character_age-10)) weightedCandidates[V] = 6 // Better. - if(good_age_minimal + 10 to good_age_maximal - 10) + if((job.ideal_character_age-10) to (job.ideal_character_age+10)) weightedCandidates[V] = 10 // Great. - if(good_age_maximal - 10 to good_age_maximal) + if((job.ideal_character_age+10) to (job.ideal_character_age+20)) weightedCandidates[V] = 6 // Still good. - if(good_age_maximal to good_age_maximal + 10) - weightedCandidates[V] = 6 // Bit old, don't you think? - if(good_age_maximal to good_age_maximal + 50) + if((job.ideal_character_age+20) to INFINITY) weightedCandidates[V] = 3 // Geezer. else // If there's ABSOLUTELY NOBODY ELSE