diff --git a/code/__defines/species.dm b/code/__defines/species.dm index 75815f857ff..d571de2f5b0 100644 --- a/code/__defines/species.dm +++ b/code/__defines/species.dm @@ -101,4 +101,4 @@ SPECIES_IPC_G2, SPECIES_IPC_SHELL, SPECIES_IPC_UNBRANDED, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, \ SPECIES_DIONA, SPECIES_DIONA_COEUS, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_TAJARA, \ SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_UNATHI, SPECIES_VAURCA_WORKER, \ - SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_BREEDER) \ No newline at end of file + SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_BREEDER) diff --git a/code/controllers/subsystems/job.dm b/code/controllers/subsystems/job.dm index 6fb46f1115e..8d9102fe96a 100644 --- a/code/controllers/subsystems/job.dm +++ b/code/controllers/subsystems/job.dm @@ -173,16 +173,19 @@ var/age = V.client.prefs.age + var/min_job_age = job.get_minimum_character_age(V.get_species()) + var/ideal_job_age = job.get_ideal_character_age(V.get_species()) + switch(age) - if(job.minimum_character_age to (job.minimum_character_age+10)) + if(min_job_age to (min_job_age+10)) weightedCandidates[V] = 3 // Still a bit young. - if((job.minimum_character_age+10) to (job.ideal_character_age-10)) + if((min_job_age+10) to (ideal_job_age-10)) weightedCandidates[V] = 6 // Better. - if((job.ideal_character_age-10) to (job.ideal_character_age+10)) + if((ideal_job_age-10) to (ideal_job_age+10)) weightedCandidates[V] = 10 // Great. - if((job.ideal_character_age+10) to (job.ideal_character_age+20)) + if((ideal_job_age+10) to (ideal_job_age+20)) weightedCandidates[V] = 6 // Still good. - if((job.ideal_character_age+20) to INFINITY) + if((ideal_job_age+20) to INFINITY) weightedCandidates[V] = 3 // Geezer. else // If there's ABSOLUTELY NOBODY ELSE diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm index f0390114ae3..faafc6e7bfc 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -16,9 +16,17 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) minimal_player_age = 14 economic_modifier = 20 - minimum_character_age = 35 + minimum_character_age = list( + SPECIES_HUMAN = 35, + SPECIES_SKRELL = 100, + SPECIES_SKRELL_AXIORI = 100 + ) - ideal_character_age = 70 // Old geezer captains ftw + ideal_character_age = list( + SPECIES_HUMAN = 70, + SPECIES_SKRELL = 120, + SPECIES_SKRELL_AXIORI = 120 + ) // Old geezer captains ftw outfit = /datum/outfit/job/captain @@ -86,9 +94,17 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) selection_color = "#1e59c9" minimal_player_age = 10 economic_modifier = 10 - ideal_character_age = 50 + ideal_character_age = list( + SPECIES_HUMAN = 50, + SPECIES_SKRELL = 100, + SPECIES_SKRELL_AXIORI = 100 + ) - minimum_character_age = 30 + minimum_character_age = list( + SPECIES_HUMAN = 30, + SPECIES_SKRELL = 80, + SPECIES_SKRELL_AXIORI = 80 + ) outfit = /datum/outfit/job/xo @@ -140,9 +156,17 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) selection_color = "#2b5bb5" minimal_player_age = 20 economic_modifier = 10 - ideal_character_age = 30 + ideal_character_age = list( + SPECIES_HUMAN = 30, + SPECIES_SKRELL = 75, + SPECIES_SKRELL_AXIORI = 75 + ) - minimum_character_age = 25 + minimum_character_age = list( + SPECIES_HUMAN = 25, + SPECIES_SKRELL = 55, + SPECIES_SKRELL_AXIORI = 55 + ) outfit = /datum/outfit/job/bridge_crew diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 71481fe01cd..3d9f2e6e6aa 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -9,7 +9,11 @@ supervisors = "the executive officer" selection_color = "#90524b" - minimum_character_age = 18 + minimum_character_age = list( + SPECIES_HUMAN = 18, + SPECIES_SKRELL = 50, + SPECIES_SKRELL_AXIORI = 50 + ) access = list(access_hydroponics, access_bar, access_kitchen) minimal_access = list(access_bar) @@ -47,7 +51,11 @@ supervisors = "the executive officer" selection_color = "#90524b" - minimum_character_age = 18 + minimum_character_age = list( + SPECIES_HUMAN = 18, + SPECIES_SKRELL = 50, + SPECIES_SKRELL_AXIORI = 50 + ) access = list(access_hydroponics, access_bar, access_kitchen) minimal_access = list(access_kitchen) @@ -88,7 +96,11 @@ supervisors = "the executive officer" selection_color = "#90524b" - minimum_character_age = 18 + minimum_character_age = list( + SPECIES_HUMAN = 18, + SPECIES_SKRELL = 50, + SPECIES_SKRELL_AXIORI = 50 + ) access = list(access_hydroponics, access_bar, access_kitchen) minimal_access = list(access_hydroponics) @@ -173,7 +185,11 @@ supervisors = "the service managaer" selection_color = "#90524b" - minimum_character_age = 20 + minimum_character_age = list( + SPECIES_HUMAN = 20, + SPECIES_SKRELL = 50, + SPECIES_SKRELL_AXIORI = 50 + ) access = list(access_journalist, access_maint_tunnels) minimal_access = list(access_journalist, access_maint_tunnels) @@ -346,14 +362,22 @@ selection_color = "#967032" economic_modifier = 5 - minimum_character_age = 30 + minimum_character_age = list( + SPECIES_HUMAN = 30, + SPECIES_SKRELL = 70, + SPECIES_SKRELL_AXIORI = 70 + ) access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_keycard_auth, access_RC_announce, access_heads, access_sec_doors, access_research, access_medical, access_robotics) minimal_access = list(access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_keycard_auth, access_RC_announce, access_heads, access_sec_doors, access_research, access_medical, access_robotics) - ideal_character_age = 40 + ideal_character_age = list( + SPECIES_HUMAN = 40, + SPECIES_SKRELL = 90, + SPECIES_SKRELL_AXIORI = 90 + ) outfit = /datum/outfit/job/operations_manager @@ -390,7 +414,11 @@ supervisors = "the supply manager" selection_color = "#7B431C" - minimum_character_age = 18 + minimum_character_age = list( + SPECIES_HUMAN = 18, + SPECIES_SKRELL = 50, + SPECIES_SKRELL_AXIORI = 50 + ) access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) minimal_access = list(access_cargo, access_cargo_bot, access_mailsorting) @@ -428,7 +456,11 @@ selection_color = "#7B431C" economic_modifier = 5 - minimum_character_age = 18 + minimum_character_age = list( + SPECIES_HUMAN = 18, + SPECIES_SKRELL = 50, + SPECIES_SKRELL_AXIORI = 50 + ) access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) minimal_access = list(access_mining, access_mining_station, access_mailsorting) @@ -476,7 +508,11 @@ selection_color = "#7B431C" economic_modifier = 5 - minimum_character_age = 25 + minimum_character_age = list( + SPECIES_HUMAN = 25, + SPECIES_SKRELL = 55, + SPECIES_SKRELL_AXIORI = 55 + ) access = list(access_robotics, access_tox, access_tox_storage, access_tech_storage, access_morgue, access_research, access_mailsorting) minimal_access = list(access_robotics, access_tech_storage, access_morgue, access_mailsorting) diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index 89b3ee8e449..4eed21b3663 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -11,9 +11,17 @@ selection_color = "#c67519" economic_modifier = 10 - minimum_character_age = 30 + minimum_character_age = list( + SPECIES_HUMAN = 30, + SPECIES_SKRELL = 80, + SPECIES_SKRELL_AXIORI = 80 + ) - ideal_character_age = 50 + ideal_character_age = list( + SPECIES_HUMAN = 50, + SPECIES_SKRELL = 100, + SPECIES_SKRELL_AXIORI = 100 + ) access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, @@ -75,7 +83,11 @@ selection_color = "#c67519" economic_modifier = 5 - minimum_character_age = 25 + minimum_character_age = list( + SPECIES_HUMAN = 25, + SPECIES_SKRELL = 60, + SPECIES_SKRELL_AXIORI = 60 + ) access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics) minimal_access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction) @@ -129,7 +141,11 @@ selection_color = "#c67519" economic_modifier = 5 - minimum_character_age = 25 + minimum_character_age = list( + SPECIES_HUMAN = 25, + SPECIES_SKRELL = 60, + SPECIES_SKRELL_AXIORI = 60 + ) access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_external_airlocks) minimal_access = list(access_eva, access_engine, access_atmospherics, access_maint_tunnels, access_emergency_storage, access_construction, access_external_airlocks) @@ -185,7 +201,11 @@ outfit = /datum/outfit/job/intern_eng blacklisted_species = list(SPECIES_VAURCA_BREEDER) - minimum_character_age = 18 + minimum_character_age = list( + SPECIES_HUMAN = 18, + SPECIES_SKRELL = 50, + SPECIES_SKRELL_AXIORI = 50 + ) /datum/outfit/job/intern_eng name = "Engineering Apprentice" @@ -216,4 +236,4 @@ tab_pda = /obj/item/modular_computer/handheld/pda/engineering wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/engineering - tablet = /obj/item/modular_computer/handheld/preset/engineering \ No newline at end of file + tablet = /obj/item/modular_computer/handheld/preset/engineering diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 6444fd6f7ac..5c4feba9041 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -19,9 +19,17 @@ var/list/alt_titles // List of alternate titles, if any var/list/title_accesses // A map of title -> list of accesses to add if the person has this title. 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/minimum_character_age = 17 - var/list/alt_ages = null // assoc list of alt titles to minimum character ages - var/ideal_character_age = 30 + var/list/minimum_character_age = list(// Age restriction, assoc list of species define -> age; if species isn't found, defaults to SPECIES_HUMAN entry + SPECIES_HUMAN = 17, + SPECIES_SKRELL = 50, + SPECIES_SKRELL_AXIORI = 50 + ) + var/list/alt_ages = null // assoc list of alt titles to minimum character ages assoc lists (see above -- yes this is slightly awful) + var/list/ideal_character_age = list( // Ideal character ages (for heads), assoc list of species define -> age, see above + SPECIES_HUMAN = 30, + SPECIES_SKRELL = 100, + SPECIES_SKRELL_AXIORI = 100 + ) var/latejoin_at_spawnpoints = FALSE //If this job should use roundstart spawnpoints for latejoin (offstation jobs etc) @@ -146,6 +154,36 @@ var/total = get_total_positions() return (current_positions < total) || (total == -1) +/datum/job/proc/get_minimum_character_age(var/species) + if(!species || !(species in minimum_character_age)) + species = SPECIES_HUMAN + return minimum_character_age[species] + +/datum/job/proc/get_alt_character_age(var/species, var/title) + // call this w/o title to get the most minimum of alt ages, used in occupation.dm:/datum/category_item/player_setup_item/occupation/content + if(!species) + species = SPECIES_HUMAN + var/min_alt_age + if(!title) + for(var/t in alt_ages) + if(species in alt_ages[t]) + min_alt_age = min(min_alt_age, alt_ages[t][species]) + else + min_alt_age = min(min_alt_age, alt_ages[t][SPECIES_HUMAN]) + return min_alt_age + else if(title in alt_ages) + return (species in alt_ages[title]) ? alt_ages[title][species] : alt_ages[title][SPECIES_HUMAN] + +/datum/job/proc/get_ideal_character_age(var/species) + if(!species) + species = SPECIES_HUMAN + else if(!(species in ideal_character_age)) + // try to see if there's a min age set -- ideally this shouldn't happen, but better to take a min age than fall back to human just yet + if(species in minimum_character_age) // if there is one, just add 20 and send it + return minimum_character_age[species] + 20 + species = SPECIES_HUMAN // no such luck + return ideal_character_age[species] + /datum/job/proc/fetch_age_restriction() if (!config.age_restrictions_from_file) return diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 686c5f0a26b..4cde7f32f34 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -11,7 +11,11 @@ selection_color = "#15903a" economic_modifier = 10 - minimum_character_age = 35 + minimum_character_age = list( + SPECIES_HUMAN = 35, + SPECIES_SKRELL = 80, + SPECIES_SKRELL_AXIORI = 80 + ) access = list(access_medical, access_medical_equip, access_morgue, access_genetics, access_heads, access_pharmacy, access_virology, access_cmo, access_surgery, access_RC_announce, access_engine, access_construction, @@ -23,7 +27,11 @@ access_first_responder, access_maint_tunnels, access_intrepid) minimal_player_age = 10 - ideal_character_age = 50 + ideal_character_age = list( + SPECIES_HUMAN = 50, + SPECIES_SKRELL = 100, + SPECIES_SKRELL_AXIORI = 100 + ) outfit = /datum/outfit/job/cmo blacklisted_species = list(SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_BREEDER) @@ -65,7 +73,11 @@ selection_color = "#15903a" economic_modifier = 7 - minimum_character_age = 25 + minimum_character_age = list( + SPECIES_HUMAN = 25, + SPECIES_SKRELL = 60, + SPECIES_SKRELL_AXIORI = 60 + ) access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_pharmacy, access_virology, access_genetics, access_eva) minimal_access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_genetics, access_eva) @@ -85,7 +97,11 @@ spawn_positions = 2 total_positions = 2 - minimum_character_age = 30 + minimum_character_age = list( + SPECIES_HUMAN = 30, + SPECIES_SKRELL = 60, + SPECIES_SKRELL_AXIORI = 60 + ) access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_pharmacy, access_virology, access_genetics, access_eva) minimal_access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_genetics, access_eva) @@ -152,7 +168,11 @@ selection_color = "#15903a" economic_modifier = 5 - minimum_character_age = 26 + minimum_character_age = list( + SPECIES_HUMAN = 26, + SPECIES_SKRELL = 60, + SPECIES_SKRELL_AXIORI = 60 + ) access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_pharmacy, access_virology, access_genetics) minimal_access = list(access_medical, access_medical_equip, access_pharmacy, access_virology) @@ -192,7 +212,11 @@ spawn_positions = 1 economic_modifier = 5 - minimum_character_age = 30 + minimum_character_age = list( + SPECIES_HUMAN = 30, + SPECIES_SKRELL = 60, + SPECIES_SKRELL_AXIORI = 60 + ) supervisors = "the chief medical officer" selection_color = "#15903a" @@ -238,7 +262,11 @@ selection_color = "#15903a" economic_modifier = 4 - minimum_character_age = 20 + minimum_character_age = list( + SPECIES_HUMAN = 20, + SPECIES_SKRELL = 55, + SPECIES_SKRELL_AXIORI = 55 + ) access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_pharmacy, access_virology, access_eva, access_maint_tunnels, access_engine, access_research, access_sec_doors, access_external_airlocks, access_psychiatrist, access_first_responder) minimal_access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_eva, access_maint_tunnels, access_engine, access_research, access_sec_doors, access_external_airlocks, access_first_responder) @@ -286,7 +314,11 @@ selection_color = "#15903a" access = list(access_medical, access_surgery, access_medical_equip) minimal_access = list(access_medical, access_surgery, access_medical_equip) - minimum_character_age = 18 + minimum_character_age = list( + SPECIES_HUMAN = 18, + SPECIES_SKRELL = 50, + SPECIES_SKRELL_AXIORI = 50 + ) outfit = /datum/outfit/job/intern_med blacklisted_species = list(SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_BREEDER) diff --git a/code/game/jobs/job/outsider/merchant.dm b/code/game/jobs/job/outsider/merchant.dm index 74d8b313013..5e26e45e73c 100644 --- a/code/game/jobs/job/outsider/merchant.dm +++ b/code/game/jobs/job/outsider/merchant.dm @@ -8,7 +8,11 @@ supervisors = "yourself and the market" minimal_player_age = 10 economic_modifier = 5 - ideal_character_age = 30 + ideal_character_age = list( + SPECIES_HUMAN = 30, + SPECIES_SKRELL = 60, + SPECIES_SKRELL_AXIORI = 60 + ) create_record = FALSE account_allowed = TRUE diff --git a/code/game/jobs/job/outsider/representative.dm b/code/game/jobs/job/outsider/representative.dm index 49c94c5c4eb..1cb07628798 100644 --- a/code/game/jobs/job/outsider/representative.dm +++ b/code/game/jobs/job/outsider/representative.dm @@ -10,7 +10,11 @@ selection_color = "#6186cf" economic_modifier = 15 - minimum_character_age = 30 + minimum_character_age = list( + SPECIES_HUMAN = 30, + SPECIES_SKRELL = 80, + SPECIES_SKRELL_AXIORI = 80 + ) access = list(access_lawyer, access_maint_tunnels) minimal_access = list(access_lawyer) @@ -94,7 +98,17 @@ selection_color = "#6186cf" economic_modifier = 15 - minimum_character_age = 30 + minimum_character_age = list( + SPECIES_HUMAN = 30, + SPECIES_SKRELL = 150, + SPECIES_SKRELL_AXIORI = 150 + ) + + ideal_character_age = list( + SPECIES_HUMAN = 30, + SPECIES_SKRELL = 170, + SPECIES_SKRELL_AXIORI = 170 + ) access = list(access_consular, access_maint_tunnels) minimal_access = list(access_consular) diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index 8f32d6888b1..0c818656365 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -11,7 +11,11 @@ selection_color = "#a44799" economic_modifier = 15 - minimum_character_age = 35 + minimum_character_age = list( + SPECIES_HUMAN = 35, + SPECIES_SKRELL = 80, + SPECIES_SKRELL_AXIORI = 80 + ) access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue, access_eva, access_external_airlocks, access_tox_storage, access_teleporter, access_sec_doors, access_medical, access_engine, access_construction, @@ -24,7 +28,11 @@ access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_network, access_maint_tunnels, access_it) minimal_player_age = 14 - ideal_character_age = 50 + ideal_character_age = list( + SPECIES_HUMAN = 50, + SPECIES_SKRELL = 100, + SPECIES_SKRELL_AXIORI = 100 + ) outfit = /datum/outfit/job/rd blacklisted_species = list(SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK) @@ -66,7 +74,11 @@ selection_color = "#a44799" economic_modifier = 7 - minimum_character_age = 30 + minimum_character_age = list( + SPECIES_HUMAN = 30, + SPECIES_SKRELL = 60, + SPECIES_SKRELL_AXIORI = 60 + ) access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch) minimal_access = list(access_tox, access_tox_storage, access_research, access_xenoarch) @@ -116,7 +128,11 @@ selection_color = "#a44799" economic_modifier = 7 - minimum_character_age = 30 + minimum_character_age = list( + SPECIES_HUMAN = 30, + SPECIES_SKRELL = 60, + SPECIES_SKRELL_AXIORI = 60 + ) access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology) minimal_access = list(access_research, access_xenobiology, access_tox_storage) @@ -165,4 +181,4 @@ tab_pda = /obj/item/modular_computer/handheld/pda/research wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/research - tablet = /obj/item/modular_computer/handheld/preset/research \ No newline at end of file + tablet = /obj/item/modular_computer/handheld/preset/research diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 22eaa1f7e26..a0e8ae46b07 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -11,7 +11,11 @@ selection_color = "#991818" economic_modifier = 10 - minimum_character_age = 30 + minimum_character_age = list( + SPECIES_HUMAN = 30, + SPECIES_SKRELL = 80, + SPECIES_SKRELL_AXIORI = 80 + ) access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_forensics_lockers, access_morgue, access_maint_tunnels, access_all_personal_lockers, @@ -73,7 +77,11 @@ selection_color = "#991818" economic_modifier = 5 - minimum_character_age = 25 + minimum_character_age = list( + SPECIES_HUMAN = 25, + SPECIES_SKRELL = 60, + SPECIES_SKRELL_AXIORI = 60 + ) access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_morgue, access_external_airlocks, access_weapons) minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_external_airlocks, access_weapons) @@ -121,7 +129,11 @@ selection_color = "#991818" economic_modifier = 5 - minimum_character_age = 25 + minimum_character_age = list( + SPECIES_HUMAN = 25, + SPECIES_SKRELL = 60, + SPECIES_SKRELL_AXIORI = 60 + ) access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_weapons) minimal_access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_weapons) @@ -166,7 +178,11 @@ selection_color = "#991818" economic_modifier = 4 - minimum_character_age = 18 + minimum_character_age = list( + SPECIES_HUMAN = 18, + SPECIES_SKRELL = 50, + SPECIES_SKRELL_AXIORI = 50 + ) access = list(access_security, access_eva, access_sec_doors, access_brig, access_maint_tunnels, access_morgue, access_external_airlocks, access_weapons) minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_external_airlocks, access_weapons) @@ -214,7 +230,11 @@ access = list(access_security, access_sec_doors, access_maint_tunnels) minimal_access = list(access_security, access_sec_doors) outfit = /datum/outfit/job/intern_sec - minimum_character_age = 18 + minimum_character_age = list( + SPECIES_HUMAN = 18, + SPECIES_SKRELL = 50, + SPECIES_SKRELL_AXIORI = 50 + ) blacklisted_species = list(SPECIES_IPC_ZENGHU, SPECIES_VAURCA_BULWARK, SPECIES_DIONA_COEUS, SPECIES_VAURCA_BREEDER) diff --git a/code/modules/client/preference_setup/occupation/occupation.dm b/code/modules/client/preference_setup/occupation/occupation.dm index 62062aaeac6..1d2a99a66d3 100644 --- a/code/modules/client/preference_setup/occupation/occupation.dm +++ b/code/modules/client/preference_setup/occupation/occupation.dm @@ -179,7 +179,7 @@ dat += "[dispRank] \[IN [(available_in_days)] DAYS]" continue else if(!LAZYLEN(pref.GetValidTitles(job))) // we have no available jobs the character is old enough for - dat += "[dispRank] \[MINIMUM AGE: [LAZYLEN(job.alt_ages) ? min(job.alt_ages[min(job.alt_ages)], job.minimum_character_age) : job.minimum_character_age]]" + dat += "[dispRank] \[MINIMUM AGE: [LAZYLEN(job.alt_ages) ? min(job.get_alt_character_age(), job.get_minimum_character_age(user.get_species())) : job.get_minimum_character_age(user.get_species())]]" continue else if (ban_reason) dat += "[dispRank] \[BANNED]" @@ -464,7 +464,7 @@ if((global.all_species[src.species].spawn_flags & NO_AGE_MINIMUM)) return choices for(var/t in choices) - if (src.age >= (LAZYACCESS(job.alt_ages, t) || job.minimum_character_age)) + if (src.age >= (job.get_alt_character_age(t) || job.get_minimum_character_age(species))) continue choices -= t return choices diff --git a/code/modules/mob/living/carbon/human/species/station/skrell/skrell.dm b/code/modules/mob/living/carbon/human/species/station/skrell/skrell.dm index d96202aef34..c1712ef9e51 100644 --- a/code/modules/mob/living/carbon/human/species/station/skrell/skrell.dm +++ b/code/modules/mob/living/carbon/human/species/station/skrell/skrell.dm @@ -4,7 +4,7 @@ name_plural = "Skrell" category_name = "Skrell" bodytype = BODYTYPE_SKRELL - age_min = 30 + age_min = 50 age_max = 500 default_genders = list(PLURAL) economic_modifier = 12 diff --git a/html/changelogs/johnwildkins-speciesage.yml b/html/changelogs/johnwildkins-speciesage.yml new file mode 100644 index 00000000000..3c106758dc4 --- /dev/null +++ b/html/changelogs/johnwildkins-speciesage.yml @@ -0,0 +1,7 @@ +author: JohnWildkins + +delete-after: True + +changes: + - rscadd: "Adds species-based age restriction for jobs, for now only affecting Skrell." + - tweak: "Skrell minimum age raised from 30 to 50."