From caf8ef88a47528c909016423119982c56f47f97d Mon Sep 17 00:00:00 2001 From: CHOMPStation2StaffMirrorBot <94713762+CHOMPStation2StaffMirrorBot@users.noreply.github.com> Date: Sat, 2 Aug 2025 11:44:59 -0700 Subject: [PATCH] [MIRROR] Alternate base sprites for zorren (#11284) Co-authored-by: SatinIsle <98125273+SatinIsle@users.noreply.github.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> --- code/__defines/mobs.dm | 2 ++ code/_helpers/global_lists.dm | 2 +- .../client/preference_setup/general/12_traits.dm | 7 +++++-- .../mob/living/carbon/human/species/species.dm | 4 +++- .../carbon/human/species/station/station.dm | 14 +++++++++++++- icons/mob/human_races/r_fox_light_vr.dmi | Bin 0 -> 2631 bytes .../bay_prefs/general/SubtabInfo.tsx | 2 +- 7 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 icons/mob/human_races/r_fox_light_vr.dmi diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index 1a3a0b986c..c425bf8808 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 579e0efaf1..fac2e220f3 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,SPECIES_SHADEKIN) //CHOMPedit + var/list/whitelisted_icons = list(SPECIES_FENNEC,SPECIES_XENOHYBRID,SPECIES_VOX,SPECIES_ZORREN_DARK,SPECIES_SHADEKIN) //CHOMEdit 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 6cbec6e06f..1542b652a6 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) @@ -767,7 +769,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 3635269c05..88506211a9 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -884,7 +884,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 @@ -920,6 +920,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) @@ -929,6 +932,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 0000000000000000000000000000000000000000..1c1272f6b90e08be0c0ad495f2aa879dc9804e51 GIT binary patch literal 2631 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 literal 0 HcmV?d00001 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 ? (