diff --git a/code/game/antagonist/antagonist.dm b/code/game/antagonist/antagonist.dm
index 46e2e4ea137..ca05aea9d76 100644
--- a/code/game/antagonist/antagonist.dm
+++ b/code/game/antagonist/antagonist.dm
@@ -3,7 +3,8 @@
// Text shown when becoming this antagonist.
var/list/restricted_jobs = list() // Jobs that cannot be this antagonist (depending on config)
var/list/protected_jobs = list() // As above.
- var/list/restricted_species = list() // species that cannot be this antag - Ryan784
+ var/list/restricted_species = list() // species that cannot be this antag - Ryan784
+ var/required_age = null // how old should player clients be before being allowed to play this antag
// Strings.
var/welcome_text = "Cry havoc and let slip the dogs of war!"
@@ -105,12 +106,14 @@
log_debug("[key_name(player)] is not eligible to become a [role_text]: Simple animals cannot be this role!")
else if(player.special_role)
log_debug("[key_name(player)] is not eligible to become a [role_text]: They already have a special role ([player.special_role])!")
- else if (player in pending_antagonists)
+ else if(player in pending_antagonists)
log_debug("[key_name(player)] is not eligible to become a [role_text]: They have already been selected for this role!")
else if(!can_become_antag(player))
log_debug("[key_name(player)] is not eligible to become a [role_text]: They are blacklisted for this role!")
else if(player_is_antag(player))
log_debug("[key_name(player)] is not eligible to become a [role_text]: They are already an antagonist!")
+ else if(required_age && required_age > player.current.client?.player_age)
+ log_debug("[key_name(player)] is not eligible to become a [role_text]: Their playtime age is too low!")
else
candidates += player
diff --git a/code/game/antagonist/mutiny/mutineer.dm b/code/game/antagonist/mutiny/mutineer.dm
index 3abef6e6a08..ea90bdb375b 100644
--- a/code/game/antagonist/mutiny/mutineer.dm
+++ b/code/game/antagonist/mutiny/mutineer.dm
@@ -7,6 +7,7 @@ var/datum/antagonist/mutineer/mutineers
id = MODE_MUTINEER
antag_indicator = "mutineer"
restricted_jobs = list("Captain")
+ required_age = 10
/datum/antagonist/mutineer/New(var/no_reference)
..()
diff --git a/code/game/antagonist/outsider/mercenary.dm b/code/game/antagonist/outsider/mercenary.dm
index 1d03fc60f05..77bc61fc229 100644
--- a/code/game/antagonist/outsider/mercenary.dm
+++ b/code/game/antagonist/outsider/mercenary.dm
@@ -12,6 +12,7 @@ var/datum/antagonist/mercenary/mercs
flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_HAS_NUKE | ANTAG_SET_APPEARANCE | ANTAG_HAS_LEADER
id_type = /obj/item/card/id/syndicate
antaghud_indicator = "hudoperative"
+ required_age = 10
hard_cap = 4
hard_cap_round = 8
diff --git a/code/game/antagonist/outsider/ninja.dm b/code/game/antagonist/outsider/ninja.dm
index d8e319b8a49..d7e2090194f 100644
--- a/code/game/antagonist/outsider/ninja.dm
+++ b/code/game/antagonist/outsider/ninja.dm
@@ -10,6 +10,7 @@ var/datum/antagonist/ninja/ninjas
restricted_species = list("Diona")
flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_RANDSPAWN | ANTAG_VOTABLE | ANTAG_SET_APPEARANCE
antaghud_indicator = "hudninja"
+ required_age = 10
initial_spawn_req = 2
initial_spawn_target = 2
diff --git a/code/game/antagonist/outsider/raider.dm b/code/game/antagonist/outsider/raider.dm
index e8e1f097604..8920bae5719 100644
--- a/code/game/antagonist/outsider/raider.dm
+++ b/code/game/antagonist/outsider/raider.dm
@@ -10,6 +10,7 @@ var/datum/antagonist/raider/raiders
welcome_text = "Use :H to talk on your encrypted channel."
flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_VOTABLE | ANTAG_SET_APPEARANCE | ANTAG_HAS_LEADER
antaghud_indicator = "hudmutineer"
+ required_age = 10
hard_cap = 6
hard_cap_round = 10
diff --git a/code/game/antagonist/outsider/wizard.dm b/code/game/antagonist/outsider/wizard.dm
index c6d9849d659..71f9b24ffa9 100644
--- a/code/game/antagonist/outsider/wizard.dm
+++ b/code/game/antagonist/outsider/wizard.dm
@@ -9,6 +9,7 @@ var/datum/antagonist/wizard/wizards
welcome_text = "You will find a list of available spells in your spell book. Choose your magic arsenal carefully.
In your pockets you will find a teleport scroll. Use it as needed."
flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_VOTABLE | ANTAG_SET_APPEARANCE
antaghud_indicator = "hudwizard"
+ required_age = 10
hard_cap = 1
hard_cap_round = 3
diff --git a/code/game/antagonist/station/changeling.dm b/code/game/antagonist/station/changeling.dm
index d11f74a3c6d..e085d7ca0c0 100644
--- a/code/game/antagonist/station/changeling.dm
+++ b/code/game/antagonist/station/changeling.dm
@@ -16,6 +16,7 @@
"Zeng-Hu Mobility Frame",
"Bishop Accessory Frame"
)
+ required_age = 10
welcome_text = "Use say \"#g message\" to communicate with your fellow changelings. Remember: you get all of their absorbed DNA if you perform a Full DNA Extraction them."
flags = ANTAG_SUSPICIOUS | ANTAG_RANDSPAWN | ANTAG_VOTABLE
diff --git a/code/game/antagonist/station/cultist.dm b/code/game/antagonist/station/cultist.dm
index 463195f8058..c704b06b3d0 100644
--- a/code/game/antagonist/station/cultist.dm
+++ b/code/game/antagonist/station/cultist.dm
@@ -32,6 +32,7 @@ var/datum/antagonist/cultist/cult
initial_spawn_req = 4
initial_spawn_target = 6
antaghud_indicator = "hudcultist"
+ required_age = 10
faction = "cult"
diff --git a/code/game/antagonist/station/loyalist.dm b/code/game/antagonist/station/loyalist.dm
index adf62d50e72..c32ea43165d 100644
--- a/code/game/antagonist/station/loyalist.dm
+++ b/code/game/antagonist/station/loyalist.dm
@@ -28,6 +28,7 @@ var/datum/antagonist/loyalists/loyalists
faction_indicator = "loyal"
faction_invisible = 1
restricted_jobs = list("AI", "Cyborg")
+ required_age = 31
/datum/antagonist/loyalists/New()
..()
diff --git a/code/game/antagonist/station/revolutionary.dm b/code/game/antagonist/station/revolutionary.dm
index e2b33cf7a4c..32290b6e4f2 100644
--- a/code/game/antagonist/station/revolutionary.dm
+++ b/code/game/antagonist/station/revolutionary.dm
@@ -30,6 +30,7 @@ var/datum/antagonist/revolutionary/revs
restricted_jobs = list("AI", "Cyborg")
protected_jobs = list("Security Officer", "Security Cadet", "Warden", "Detective", "Forensic Technician", "Head of Personnel", "Chief Engineer", "Research Director", "Chief Medical Officer", "Captain", "Head of Security", "Internal Affairs Agent")
+ required_age = 31
/datum/antagonist/revolutionary/New()
..()
diff --git a/code/game/antagonist/station/rogue_ai.dm b/code/game/antagonist/station/rogue_ai.dm
index 44a24ff9b0d..41f66ed63ba 100644
--- a/code/game/antagonist/station/rogue_ai.dm
+++ b/code/game/antagonist/station/rogue_ai.dm
@@ -15,6 +15,7 @@ var/datum/antagonist/rogue_ai/malf
initial_spawn_req = 1
initial_spawn_target = 1
antaghud_indicator = "hudmalai"
+ required_age = 31
/datum/antagonist/rogue_ai/New()
..()
diff --git a/code/game/antagonist/station/traitor.dm b/code/game/antagonist/station/traitor.dm
index 8f357370ebf..e5cf94fb252 100644
--- a/code/game/antagonist/station/traitor.dm
+++ b/code/game/antagonist/station/traitor.dm
@@ -6,6 +6,7 @@ var/datum/antagonist/traitor/traitors
restricted_jobs = list("Internal Affairs Agent", "Head of Security", "Captain", "AI")
protected_jobs = list("Security Officer", "Security Cadet", "Warden", "Detective", "Forensic Technician")
flags = ANTAG_SUSPICIOUS | ANTAG_RANDSPAWN | ANTAG_VOTABLE
+ required_age = 10
faction = "syndicate"
diff --git a/code/game/antagonist/station/vampire.dm b/code/game/antagonist/station/vampire.dm
index 142d80cb6c5..b60ca33959f 100644
--- a/code/game/antagonist/station/vampire.dm
+++ b/code/game/antagonist/station/vampire.dm
@@ -19,6 +19,7 @@ var/datum/antagonist/vampire/vamp = null
"Zeng-Hu Mobility Frame",
"Bishop Accessory Frame"
)
+ required_age = 10
welcome_text = "You are a Vampire! Use the \"Vampire Help\" command to learn about the backstory and mechanics! Stay away from the Chaplain, and use the darkness to your advantage."
flags = ANTAG_SUSPICIOUS | ANTAG_RANDSPAWN | ANTAG_VOTABLE
diff --git a/html/changelogs/geeves - antagAge.yml b/html/changelogs/geeves - antagAge.yml
new file mode 100644
index 00000000000..689b39972ba
--- /dev/null
+++ b/html/changelogs/geeves - antagAge.yml
@@ -0,0 +1,6 @@
+author: Geeves
+
+delete-after: True
+
+changes:
+ - rscadd: "Antagonist roles are now restricted by player account (on Aurora) age."