diff --git a/code/game/jobs/faction/eridani.dm b/code/game/jobs/faction/eridani.dm index c5ccb868738..01195f26fbf 100644 --- a/code/game/jobs/faction/eridani.dm +++ b/code/game/jobs/faction/eridani.dm @@ -49,6 +49,14 @@ "Corporate Liaison" = /datum/outfit/job/representative/eridani ) + job_species_blacklist = list( + "Corporate Liaison" = list( + "Tajara", + "M'sai Tajara", + "Zhan-Khazan Tajara" + ) + ) + /datum/outfit/job/officer/eridani name = "Security Officer - Eridani" uniform = /obj/item/clothing/under/rank/security/eridani diff --git a/code/game/jobs/faction/faction.dm b/code/game/jobs/faction/faction.dm index b60cd8bde7b..d549319f5ad 100644 --- a/code/game/jobs/faction/faction.dm +++ b/code/game/jobs/faction/faction.dm @@ -5,6 +5,7 @@ var/list/allowed_role_types var/list/allowed_species_types + var/list/job_species_blacklist //will override the normal job species list for a member of this faction var/is_default = FALSE @@ -25,7 +26,10 @@ . = list() for (var/path in allowed_role_types) - . += SSjobs.type_occupations[path] + var/datum/job/role = SSjobs.type_occupations[path] + if(LAZYACCESS(job_species_blacklist, role.title)) + role.blacklisted_species = job_species_blacklist[role.title] + . += role /datum/faction/proc/get_selection_error(datum/preferences/prefs) if (!length(allowed_species_types)) @@ -60,4 +64,4 @@ objective = pick("Collect [rand(3,7)] pictures of secure station areas", "Make sure that [rand(2,4)] complaints related to contractors are solved on the station") - return objective \ No newline at end of file + return objective diff --git a/code/game/jobs/faction/hephaestus.dm b/code/game/jobs/faction/hephaestus.dm index e79c536a0de..bac58af6169 100644 --- a/code/game/jobs/faction/hephaestus.dm +++ b/code/game/jobs/faction/hephaestus.dm @@ -66,6 +66,14 @@ "Corporate Liaison" = /datum/outfit/job/representative/hephaestus ) + job_species_blacklist = list( + "Corporate Liaison" = list( + "Tajara", + "M'sai Tajara", + "Zhan-Khazan Tajara" + ) + ) + /datum/outfit/job/engineer/hephaestus name = "Station Engineer - Hephaestus" uniform = /obj/item/clothing/under/rank/hephaestus diff --git a/code/game/jobs/faction/idris.dm b/code/game/jobs/faction/idris.dm index 6e14368673b..4828e48e62e 100644 --- a/code/game/jobs/faction/idris.dm +++ b/code/game/jobs/faction/idris.dm @@ -66,6 +66,14 @@ "Corporate Liaison" = /datum/outfit/job/representative/idris ) + job_species_blacklist = list( + "Corporate Liaison" = list( + "Tajara", + "M'sai Tajara", + "Zhan-Khazan Tajara" + ) + ) + /datum/outfit/job/officer/idris name = "Security Officer - Idris" uniform = /obj/item/clothing/under/rank/security/idris diff --git a/code/game/jobs/faction/necropolis.dm b/code/game/jobs/faction/necropolis.dm index aafedcab66e..7cd73904be6 100644 --- a/code/game/jobs/faction/necropolis.dm +++ b/code/game/jobs/faction/necropolis.dm @@ -48,7 +48,8 @@ /datum/species/human, /datum/species/skrell, /datum/species/unathi, - /datum/species/diona + /datum/species/diona, + /datum/species/machine ) titles_to_loadout = list( @@ -72,6 +73,20 @@ "Corporate Liaison" = /datum/outfit/job/representative/necropolis ) + job_species_blacklist = list( + "Corporate Liaison" = list( + "Baseline Frame", + "Hephaestus G1 Industrial Frame", + "Hephaestus G2 Industrial Frame", + "Xion Industrial Frame", + "Zeng-Hu Mobility Frame", + "Bishop Accessory Frame", + "Shell Frame" + ) + ) + + + /datum/outfit/job/officer/necropolis name = "Security Officer - Necropolis" uniform = /obj/item/clothing/under/rank/security/necropolis diff --git a/code/modules/client/preference_setup/occupation/occupation.dm b/code/modules/client/preference_setup/occupation/occupation.dm index eb382b0328c..8308086ab75 100644 --- a/code/modules/client/preference_setup/occupation/occupation.dm +++ b/code/modules/client/preference_setup/occupation/occupation.dm @@ -284,10 +284,17 @@ if (!SSjobs.name_factions[pref.faction]) pref.faction = SSjobs.default_faction.name - to_client_chat("Your faction selection has been reset to [pref.faction].") - to_client_chat("Your jobs have been reset due to this!") + to_client_chat(SPAN_DANGER("Your faction selection has been reset to [pref.faction].")) + to_client_chat(SPAN_DANGER("Your jobs have been reset due to this!")) ResetJobs() + var/datum/faction/faction = SSjobs.name_factions[pref.faction] + for(var/datum/job/job in faction.get_occupations()) + if(pref.species in job.blacklisted_species) + to_client_chat(SPAN_DANGER("Your faction selection does not permit this species-occupation combination.")) + to_client_chat(SPAN_DANGER("Your jobs have been reset due to this!")) + ResetJobs() + /datum/category_item/player_setup_item/occupation/proc/SetPlayerAltTitle(datum/job/job, new_title) // remove existing entry pref.player_alt_titles -= job.title diff --git a/html/changelogs/paradoxspace-t1000.yml b/html/changelogs/paradoxspace-t1000.yml new file mode 100644 index 00000000000..26ff3d8e086 --- /dev/null +++ b/html/changelogs/paradoxspace-t1000.yml @@ -0,0 +1,42 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: ParadoxSpace & Myazaki + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "IPCs can now be Necropolis contractors. However, they cannot be corp reps." + - rscadd: "Tajara can only be NT/Independent corp reps." \ No newline at end of file