From 8b68a038f547c19dd56c9718da972319c10b4622 Mon Sep 17 00:00:00 2001 From: SatinIsle <98125273+SatinIsle@users.noreply.github.com> Date: Sat, 2 Aug 2025 14:26:26 +0100 Subject: [PATCH] Alternate base sprites for zorren (#18093) * [WIP] Alternate base sprites for zorren Currently does not work, may need some help to figure out why. The idea is to change the default base sprite of the zorren to a much lighter one, as many people complain about the dark greyscaling on the original. However, to preserve people's characters who incorporate the current sprites, I wanted to make this an option that could be selected through the custom species icon menu. If I disable the "selects bodytype" var for the species, then the new light version appears as you would expect and everything works fine. However, if I enable the new zorren define for selects bodytype, it gives you the two options in the menu as you would expect, but the appearance for both types is the dark version ingame. Basically, this does not seem to work and I can't get my head around why. * Actually works now! --- 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 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 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 ? (