diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm
index 19a578b355..2bb1731335 100644
--- a/code/game/jobs/job/assistant.dm
+++ b/code/game/jobs/job/assistant.dm
@@ -12,6 +12,8 @@
access = list() //See /datum/job/assistant/get_access()
minimal_access = list() //See /datum/job/assistant/get_access()
alt_titles = list("Technical Assistant","Medical Intern","Research Assistant","Visitor", "Resident")
+ minimum_character_age = null
+ ideal_character_age = null
/datum/job/assistant/equip(var/mob/living/carbon/human/H)
if(!H) return 0
diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm
index 839870de91..2f6ab79644 100644
--- a/code/game/jobs/job/job.dm
+++ b/code/game/jobs/job/job.dm
@@ -19,8 +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/minimum_character_age = 17
+ var/ideal_character_age = 30
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_controller.dm b/code/game/jobs/job_controller.dm
index 125c3a38bf..122ca43aa3 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -49,9 +49,15 @@ var/global/datum/controller/occupations/job_master
Debug("Running AR, Player: [player], Rank: [rank], LJ: [latejoin]")
if(player && player.mind && rank)
var/datum/job/job = GetJob(rank)
- if(!job) return 0
- if(jobban_isbanned(player, rank)) return 0
- if(!job.player_old_enough(player.client)) return 0
+ if(!job)
+ return 0
+ if(job.minimum_character_age && (player.client.prefs.age < job.minimum_character_age))
+ return 0
+ if(jobban_isbanned(player, rank))
+ return 0
+ if(!job.player_old_enough(player.client))
+ return 0
+
var/position_limit = job.total_positions
if(!latejoin)
position_limit = job.spawn_positions
@@ -82,6 +88,9 @@ var/global/datum/controller/occupations/job_master
if(!job.player_old_enough(player.client))
Debug("FOC player not old enough, Player: [player]")
continue
+ if(job.minimum_character_age && (player.client.prefs.age < job.minimum_character_age))
+ Debug("FOC character not old enough, Player: [player]")
+ continue
if(flag && (!player.client.prefs.be_special & flag))
Debug("FOC flag failed, Player: [player], Flag: [flag], ")
continue
@@ -96,6 +105,9 @@ var/global/datum/controller/occupations/job_master
if(!job)
continue
+ if(job.minimum_character_age && (player.client.prefs.age < job.minimum_character_age))
+ continue
+
if(istype(job, GetJob("Assistant"))) // We don't want to give him assistant, that's boring!
continue
diff --git a/code/modules/client/preference_setup/occupation/occupation.dm b/code/modules/client/preference_setup/occupation/occupation.dm
index 561ffb3ec4..92c6320c64 100644
--- a/code/modules/client/preference_setup/occupation/occupation.dm
+++ b/code/modules/client/preference_setup/occupation/occupation.dm
@@ -89,6 +89,9 @@
var/available_in_days = job.available_in_days(user.client)
. += "[rank]