diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 53f4108042..d68716c360 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1303,7 +1303,8 @@ datum/preferences b_type = new_b_type if("hair") - if(species == "Human" || species == "Unathi" || species == "Tajara" || species == "Skrell") + var/datum/species/S = all_species[species] + if(S && (S.appearance_flags & HAS_HAIR_COLOR)) var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference", rgb(r_hair, g_hair, b_hair)) as color|null if(new_hair) r_hair = hex2num(copytext(new_hair, 2, 4)) @@ -1383,7 +1384,8 @@ datum/preferences s_tone = 35 - max(min( round(new_s_tone), 220),1) if("skin") - if(species == "Unathi" || species == "Tajara" || species == "Skrell") + var/datum/species/S = all_species[species] + if(S && (S.appearance_flags & HAS_SKIN_COLOR)) var/new_skin = input(user, "Choose your character's skin colour: ", "Character Preference", rgb(r_skin, g_skin, b_skin)) as color|null if(new_skin) r_skin = hex2num(copytext(new_skin, 2, 4)) @@ -1465,7 +1467,16 @@ datum/preferences rlimb_data[second_limb] = null if("Prothesis") - var/choice = input(user, "Which manufacturer do you wish to use for this limb?") as null|anything in chargen_robolimbs + var/tmp_species = species ? species : "Human" + var/list/usable_manufacturers = list() + for(var/company in chargen_robolimbs) + var/datum/robolimb/M = chargen_robolimbs[company] + if(tmp_species in M.species_cannot_use) + continue + usable_manufacturers[company] = M + if(!usable_manufacturers.len) + return + var/choice = input(user, "Which manufacturer do you wish to use for this limb?") as null|anything in usable_manufacturers if(!choice) return rlimb_data[limb] = choice diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index da12fdbb1c..fd8e9a7833 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -897,6 +897,8 @@ Note that amputating the affected organ does in fact remove the infection from t if(company) model = company var/datum/robolimb/R = all_robolimbs[company] + if(species && (species.name in R.species_cannot_use)) + R = basic_robolimb if(R) force_icon = R.icon name = "[R.company] [initial(name)]" diff --git a/code/modules/organs/robolimbs.dm b/code/modules/organs/robolimbs.dm index 87da7f0353..52e2bd97dd 100644 --- a/code/modules/organs/robolimbs.dm +++ b/code/modules/organs/robolimbs.dm @@ -16,6 +16,7 @@ var/global/datum/robolimb/basic_robolimb var/desc = "A generic unbranded robotic prosthesis." // Seen when examining a limb. var/icon = 'icons/mob/human_races/robotic.dmi' // Icon base to draw from. var/unavailable_at_chargen // If set, not available at chargen. + var/list/species_cannot_use = list("Resomi") /datum/robolimb/bishop company = "Bishop Cybernetics"