From 85926d166ea237735dc648a5cc53cd136fb8fc1f Mon Sep 17 00:00:00 2001 From: Cameron Lennox Date: Tue, 14 Oct 2025 10:34:48 -0400 Subject: [PATCH] Various species related fixes (#18600) * Gives High Zorren the proper species sound * Fennec too * Mouse too * Vulp Sounds * Fixes tesh picking up --- code/modules/mob/holder.dm | 6 +--- .../carbon/human/species/station/station.dm | 13 ++++++- code/modules/vore/resizing/holder_micro_vr.dm | 33 +++++++++++++++++- code/modules/vore/resizing/resize_vr.dm | 18 +++++----- icons/mob/items/lefthand_toys.dmi | Bin 0 -> 3755 bytes icons/mob/items/righthand_toys.dmi | Bin 0 -> 3746 bytes icons/mob/toy_worn.dmi | Bin 0 -> 3641 bytes 7 files changed, 54 insertions(+), 16 deletions(-) create mode 100644 icons/mob/items/lefthand_toys.dmi create mode 100644 icons/mob/items/righthand_toys.dmi create mode 100644 icons/mob/toy_worn.dmi diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index e7f9424ada..1847728390 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -364,6 +364,7 @@ var/list/holder_mob_icon_cache = list() if(grabber.incapacitated()) return var/obj/item/holder/H = new holder_type(get_turf(src), src) + H.sync(src) grabber.put_in_hands(H) if(self_grab) @@ -377,11 +378,6 @@ var/list/holder_mob_icon_cache = list() add_attack_logs(grabber, H.held_mob, "Scooped up", FALSE) // Not important enough to notify admins, but still helpful. return H -/obj/item/holder/human - icon = 'icons/mob/holder_complex.dmi' - var/list/generate_for_slots = list(slot_l_hand_str, slot_r_hand_str, slot_back_str) - slot_flags = SLOT_BACK - /obj/item/holder/proc/sync(var/mob/living/M) dir = 2 overlays.Cut() 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 aca6e21afd..cb7c66e102 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -897,6 +897,8 @@ min_age = 20 max_age = 80 + species_sounds = "Vulpine" + blurb = "The fennec-like, blue-blooded Zorren are native to Virgo 4/Menhir and are descendants of a precursor species \ that is thought to be responsible for the near-collapse of the biosphere of the planet. \ With societies organised around hierarchal caste systems (such as the Royal Zorren) or freedom and strength (such as the Free Tribe Zorren), \ @@ -960,6 +962,11 @@ inherent_verbs = list(/mob/living/carbon/human/proc/lick_wounds, /mob/living/carbon/human/proc/tie_hair) + pain_verb_1p = list("yelp", "growl") + pain_verb_3p = list("yelps", "growls") + + species_sounds = "Canine" + wikilink="https://wiki.vore-station.net/Backstory#Vulpkanin" catalogue_data = list(/datum/category_item/catalogue/fauna/vulpkanin) @@ -1126,7 +1133,7 @@ burn_mod = 1.35 mob_size = MOB_MEDIUM pass_flags = PASSTABLE - holder_type = /obj/item/holder/human + holder_type = /obj/item/holder/micro // short_sighted = 1 has_vibration_sense = TRUE blood_volume = 400 @@ -1403,6 +1410,8 @@ min_age = 18 max_age = 80 + species_sounds = "Vulpine" + //primitive_form = "" //We don't have fennec-monkey sprites. spawn_flags = SPECIES_IS_RESTRICTED appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR @@ -1473,6 +1482,8 @@ min_age = 18 max_age = 80 + species_sounds = "Mouse" + blurb = "The Altevian are a species of tall, rodent humanoids that are akin to rats for their features. \ The Altevian, unlike most species, do not have a home planet, nor system, adopting a fully nomadic lifestyle \ for their survival across the stars. Instead, they have opted to live in massive super capital-class colony-ships \ diff --git a/code/modules/vore/resizing/holder_micro_vr.dm b/code/modules/vore/resizing/holder_micro_vr.dm index 19b07c20df..47107ce945 100644 --- a/code/modules/vore/resizing/holder_micro_vr.dm +++ b/code/modules/vore/resizing/holder_micro_vr.dm @@ -5,11 +5,42 @@ desc = "Another crewmember, small enough to fit in your hand." icon_state = "micro" icon_override = 'icons/inventory/head/mob.dmi' - slot_flags = SLOT_FEET | SLOT_HEAD | SLOT_ID | SLOT_HOLSTER + slot_flags = SLOT_FEET | SLOT_HEAD | SLOT_ID | SLOT_HOLSTER | SLOT_BACK w_class = ITEMSIZE_SMALL item_icons = null // No in-hand sprites (for now, anyway, we could totally add some) pixel_y = 0 // Override value from parent. +/obj/item/holder/micro/Initialize(mapload, mob/held) + . = ..() + var/mob/living/carbon/human/H = held_mob + if(istype(H) && H.species.get_bodytype() == SPECIES_TESHARI) + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_toys.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_toys.dmi', + slot_back_str = 'icons/mob/toy_worn.dmi', + slot_head_str = 'icons/mob/toy_worn.dmi') + + // Leaving the following two set makes the sprite not visible + icon_override = null + sprite_sheets = null + icon_state = "teshariplushie_white" + item_state = "teshariplushie_white" + // Add back slot + slot_flags = SLOT_FEET | SLOT_HEAD | SLOT_ID | SLOT_BACK + +/obj/item/holder/micro/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer,var/icon/clip_mask = null) + var/mob/living/carbon/human/H = held_mob + // Only proceed if dealing with a tesh (or something shaped like a tesh) + if(istype(H) && H.species.get_bodytype() == SPECIES_TESHARI) + var/colortemp = color //save original color var to a temp var + //convert numerical RGB to Hex #000000 format - is this necessary? + //then 'inject' changed color (from skin color) into original proc call + color = addtext("#", num2hex(H.r_skin, 2), num2hex(H.g_skin, 2), num2hex(H.b_skin, 2)) + . = ..() + color = colortemp //reset color var to it's old value after original proc call before proceeding - otherwise we change hand-slot icon color too! + else + . = ..() + /obj/item/holder/examine(mob/user) SHOULD_CALL_PARENT(FALSE) . = list() diff --git a/code/modules/vore/resizing/resize_vr.dm b/code/modules/vore/resizing/resize_vr.dm index 6bb7b1dea8..aacb51ed3e 100644 --- a/code/modules/vore/resizing/resize_vr.dm +++ b/code/modules/vore/resizing/resize_vr.dm @@ -190,33 +190,33 @@ */ /mob/living/proc/attempt_to_scoop(mob/living/M, mob/living/G, ignore_size = FALSE) //second one is for the Grabber, only exists for animals to self-grab if(src == M) - return 0 + return FALSE if(!(pickup_pref && M.pickup_pref && M.pickup_active)) - return 0 + return FALSE if(!(M.a_intent == I_HELP)) - return 0 + return FALSE var/size_diff = M.get_effective_size(FALSE) - get_effective_size(TRUE) if(!holder_default && holder_type) holder_default = holder_type if(!istype(M)) - return 0 + return FALSE if(isanimal(M)) var/mob/living/simple_mob/SA = M if(!SA.has_hands) - return 0 + return FALSE if(mob_size < MOB_SMALL && src == M) - return 0 + return FALSE if(size_diff >= 0.50 || mob_size < MOB_SMALL || size_diff >= get_effective_size() || ignore_size) if(buckled) to_chat(src,span_notice("You have to unbuckle \the [src] before you pick them up.")) - return 0 + return FALSE holder_type = /obj/item/holder/micro var/obj/item/holder/m_holder = get_scooped(M, G) holder_type = holder_default if (m_holder) - return 1 + return TRUE else - return 0; // Unable to scoop, let other code run + return FALSE; // Unable to scoop, let other code run #define STEP_TEXT_OWNER(x) "[replacetext(x,"%prey",tmob)]" #define STEP_TEXT_PREY(x) "[replacetext(x,"%owner",src)]" diff --git a/icons/mob/items/lefthand_toys.dmi b/icons/mob/items/lefthand_toys.dmi new file mode 100644 index 0000000000000000000000000000000000000000..93ec60c66cc765ec0a64ba57da6812ebf9b82ca5 GIT binary patch literal 3755 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 V?8O$HTLl0B002ovPDHLkV1mFxD`Efu literal 0 HcmV?d00001 diff --git a/icons/mob/items/righthand_toys.dmi b/icons/mob/items/righthand_toys.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b1d4b6de7077906aae3f13546d32f0d7375140d8 GIT binary patch literal 3746 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 LNkvXXu0mjf?)&b* literal 0 HcmV?d00001