diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index 32552b0e62..03abfe9562 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -326,6 +326,7 @@ #define SPECIES_VULPKANIN "Vulpkanin" #define SPECIES_XENOCHIMERA "Xenochimera" #define SPECIES_ZORREN_HIGH "Zorren" +#define SPECIES_ZORREN_DARK "Dark Furred Zorren" #define SPECIES_CUSTOM "Custom Species" #define SPECIES_LLEILL "Lleill" #define SPECIES_HANNER "Hanner" @@ -385,6 +386,7 @@ #define SELECTS_BODYTYPE_FALSE 0 #define SELECTS_BODYTYPE_CUSTOM 1 #define SELECTS_BODYTYPE_SHAPESHIFTER 2 +#define SELECTS_BODYTYPE_ZORREN 3 #define MARKING_NONDIGI_ONLY (1 << 0) #define MARKING_DIGITIGRADE_ONLY (1 << 1) diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm index 03a0c033d2..fc2c3e5058 100644 --- a/code/_helpers/global_lists.dm +++ b/code/_helpers/global_lists.dm @@ -311,7 +311,7 @@ GLOBAL_LIST_EMPTY(mannequins) ///These are icons that you DO NOT want to be selectable! var/list/blacklisted_icons = list(SPECIES_CUSTOM,SPECIES_PROMETHEAN) ///These are icons that you WANT to be selectable, even if they're a whitelist species! - var/list/whitelisted_icons = list(SPECIES_FENNEC,SPECIES_XENOHYBRID,SPECIES_VOX) + var/list/whitelisted_icons = list(SPECIES_FENNEC,SPECIES_XENOHYBRID,SPECIES_VOX,SPECIES_ZORREN_DARK) for(var/species_name in GLOB.playable_species) if(species_name in blacklisted_icons) continue diff --git a/code/modules/client/preference_setup/general/12_traits.dm b/code/modules/client/preference_setup/general/12_traits.dm index e52e4f5a2b..f44f57569f 100644 --- a/code/modules/client/preference_setup/general/12_traits.dm +++ b/code/modules/client/preference_setup/general/12_traits.dm @@ -28,6 +28,9 @@ choices = GLOB.custom_species_bases.Copy() if(new_species != SPECIES_CUSTOM) choices = (choices | new_species) + else if (spec.selects_bodytype == SELECTS_BODYTYPE_ZORREN) + choices = list(SPECIES_ZORREN_HIGH,SPECIES_ZORREN_DARK) + choices = choices.Copy() return choices /datum/category_item/player_setup_item/general/traits/proc/get_pref_choice_from_trait(var/mob/user, var/datum/trait/trait, var/preference) @@ -154,10 +157,10 @@ var/datum/species/selected_species = GLOB.all_species[pref.species] if(selected_species.selects_bodytype) if (!(pref.custom_base in pref.get_custom_bases_for_species())) - pref.custom_base = SPECIES_HUMAN + pref.custom_base = selected_species.default_custom_base //otherwise, allowed! else if(!pref.custom_base || !(pref.custom_base in GLOB.custom_species_bases)) - pref.custom_base = SPECIES_HUMAN + pref.custom_base = selected_species.default_custom_base /datum/category_item/player_setup_item/general/traits/copy_to_mob(var/mob/living/carbon/human/character) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 9559c4c3d0..2c3f8c48f9 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -375,6 +375,8 @@ var/unarmed_bonus = 0 //do you have stronger unarmed attacks? var/shredding = FALSE //do you shred when attacking? Affects escaping restraints, and punching normally unpunchable things + var/default_custom_base = SPECIES_HUMAN + /datum/species/proc/update_attack_types() unarmed_attacks = list() for(var/u_type in unarmed_types) @@ -766,7 +768,7 @@ new_copy.race_key = race_key if (selects_bodytype && custom_base) new_copy.base_species = custom_base - if(selects_bodytype == SELECTS_BODYTYPE_CUSTOM) //If race selects a bodytype, retrieve the custom_base species and copy needed variables. + if(selects_bodytype == SELECTS_BODYTYPE_CUSTOM || SELECTS_BODYTYPE_ZORREN) //If race selects a bodytype, retrieve the custom_base species and copy needed variables. var/datum/species/S = GLOB.all_species[custom_base] S.copy_variables(new_copy, copy_vars) diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 536f346b35..2f789697a5 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -881,7 +881,7 @@ /datum/species/hi_zoxxen name = SPECIES_ZORREN_HIGH name_plural = "Zorren" - icobase = 'icons/mob/human_races/r_fox_vr.dmi' + icobase = 'icons/mob/human_races/r_fox_light_vr.dmi' deform = 'icons/mob/human_races/r_def_fox.dmi' tail = "tail" icobase_tail = 1 @@ -917,6 +917,9 @@ blood_reagents = REAGENT_ID_COPPER reagent_tag = IS_ZORREN color_mult = 1 + default_custom_base = SPECIES_ZORREN_HIGH + + selects_bodytype = SELECTS_BODYTYPE_ZORREN genders = list(MALE, FEMALE, PLURAL, NEUTER) @@ -926,6 +929,15 @@ "Your overheated skin itches." ) +/datum/species/hi_zoxxen/get_race_key() + var/datum/species/real = GLOB.all_species[base_species] + return real.race_key + +/datum/species/hi_zoxxen/dark //alternate sprite base for zorren + name = SPECIES_ZORREN_DARK + icobase = 'icons/mob/human_races/r_fox_vr.dmi' + spawn_flags = SPECIES_IS_RESTRICTED + /datum/species/vulpkanin name = SPECIES_VULPKANIN name_plural = "Vulpkanin" diff --git a/icons/mob/human_races/r_fox_light_vr.dmi b/icons/mob/human_races/r_fox_light_vr.dmi new file mode 100644 index 0000000000..1c1272f6b9 Binary files /dev/null and b/icons/mob/human_races/r_fox_light_vr.dmi differ diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/bay_prefs/general/SubtabInfo.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/bay_prefs/general/SubtabInfo.tsx index 103d2e4095..a88e939e60 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/bay_prefs/general/SubtabInfo.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/bay_prefs/general/SubtabInfo.tsx @@ -195,7 +195,7 @@ export const SubtabInfo = (props: { {selects_bodytype ? (