diff --git a/modular_skyrat/modules/customization/modules/clothing/~donator/donator_clothing.dm b/modular_skyrat/modules/customization/modules/clothing/~donator/donator_clothing.dm index e84f771e6af..8b33e34ea61 100644 --- a/modular_skyrat/modules/customization/modules/clothing/~donator/donator_clothing.dm +++ b/modular_skyrat/modules/customization/modules/clothing/~donator/donator_clothing.dm @@ -1433,7 +1433,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/poster/contraband/korpstech, 32) /obj/item/clothing/shoes/fancy_heels/drag/Initialize(mapload) . = ..() - AddComponent(/datum/component/squeak, list('modular_skyrat/modules/modular_items/lewd_items/sounds/highheel1.ogg' = 1, 'modular_skyrat/modules/modular_items/lewd_items/sounds/highheel2.ogg' = 1), 70) + AddComponent(/datum/component/squeak, list('modular_zubbers/sound/effects/footstep/highheel1.ogg' = 1, 'modular_zubbers/sound/effects/footstep/highheel2.ogg' = 1, 'modular_zubbers/sound/effects/footstep/highheel3.ogg' = 1, 'modular_zubbers/sound/effects/footstep/highheel4.ogg' = 1), 70) // Donation reward for Razurath diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/lewd_shoes.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/lewd_shoes.dm index 367160579bf..18686a9a5d3 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/lewd_shoes.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/lewd_shoes.dm @@ -12,7 +12,7 @@ /obj/item/clothing/shoes/latex_heels/Initialize(mapload) . = ..() - AddComponent(/datum/component/squeak, list('modular_skyrat/modules/modular_items/lewd_items/sounds/highheel1.ogg' = 1, 'modular_skyrat/modules/modular_items/lewd_items/sounds/highheel2.ogg' = 1), 70) + AddComponent(/datum/component/squeak, list('modular_zubbers/sound/effects/footstep/highheel1.ogg' = 1, 'modular_zubbers/sound/effects/footstep/highheel2.ogg' = 1, 'modular_zubbers/sound/effects/footstep/highheel3.ogg' = 1, 'modular_zubbers/sound/effects/footstep/highheel4.ogg' = 1), 70) /obj/item/clothing/shoes/latex_heels/domina_heels name = "dominant heels" diff --git a/modular_zubbers/code/modules/client/preferences/footstep_sound.dm b/modular_zubbers/code/modules/client/preferences/footstep_sound.dm new file mode 100644 index 00000000000..36c2eac71d1 --- /dev/null +++ b/modular_zubbers/code/modules/client/preferences/footstep_sound.dm @@ -0,0 +1,46 @@ +/datum/preference/choiced/footstep_sound + category = PREFERENCE_CATEGORY_SECONDARY_FEATURES + savefile_identifier = PREFERENCE_CHARACTER + savefile_key = "footstep_sound" + +/datum/preference/choiced/footstep_sound/init_possible_values() + return list("Default", "Shoes", "Highheels", "Claws", "Hooves") + +/datum/preference/choiced/footstep_sound/create_default_value() + return "Default" + +/datum/preference/choiced/footstep_sound/apply_to_human(mob/living/carbon/human/target, value) + if(value == "Default") + return + + /// Either use the TG footstep_type here, or specify a special_footstep_sounds list. + /// special_footstep_sounds list formatting must be: list(list(sounds, go, here), volume, range modifier) + /// Note: special_footstep_sounds will play the same effect on all turfs, but TG footstep sounds are very hardcoded + /// so if you want a new custom set of sounds that's the least-painful method of adding them, with the caveat of not being able to + /// support turf-based sounds. + var/static/list/value_to_define = list( + "Shoes" = FOOTSTEP_MOB_SHOE, + "Claws" = FOOTSTEP_MOB_CLAW, + "Highheels" = list(list( + 'modular_zubbers/sound/effects/footstep/highheel1.ogg', + 'modular_zubbers/sound/effects/footstep/highheel2.ogg', + 'modular_zubbers/sound/effects/footstep/highheel3.ogg', + 'modular_zubbers/sound/effects/footstep/highheel4.ogg'), 70, 1), + "Hooves" = list(list( + 'modular_zubbers/sound/effects/footstep/hardhoof1.ogg', + 'modular_zubbers/sound/effects/footstep/hardhoof2.ogg', + 'modular_zubbers/sound/effects/footstep/hardhoof3.ogg', + 'modular_zubbers/sound/effects/footstep/hardhoof4.ogg'), 35, 1), + ) + var/footstep_type = value_to_define[value] + + var/obj/item/bodypart/leg/left_leg = target.get_bodypart(BODY_ZONE_L_LEG) + var/obj/item/bodypart/leg/right_leg = target.get_bodypart(BODY_ZONE_R_LEG) + if(islist(footstep_type)) + left_leg?.special_footstep_sounds = footstep_type + right_leg?.special_footstep_sounds = footstep_type + else + left_leg?.footstep_type = footstep_type + right_leg?.footstep_type = footstep_type + + target.footstep_type = footstep_type // We are most likely going to have our legs get replaced during char creation immediately, so this is necessary to apply to any subsequent legs that get added. diff --git a/modular_zubbers/code/modules/clothing/outfits/lace.dm b/modular_zubbers/code/modules/clothing/outfits/lace.dm index 483bbc92d59..d786cd761df 100644 --- a/modular_zubbers/code/modules/clothing/outfits/lace.dm +++ b/modular_zubbers/code/modules/clothing/outfits/lace.dm @@ -22,7 +22,7 @@ /obj/item/clothing/shoes/heels/drag/lace/Initialize(mapload) . = ..() - AddComponent(/datum/component/squeak, list('modular_skyrat/modules/modular_items/lewd_items/sounds/highheel1.ogg' = 1, 'modular_skyrat/modules/modular_items/lewd_items/sounds/highheel2.ogg' = 1), 70) + AddComponent(/datum/component/squeak, list('modular_zubbers/sound/effects/footstep/highheel1.ogg' = 1, 'modular_zubbers/sound/effects/footstep/highheel2.ogg' = 1, 'modular_zubbers/sound/effects/footstep/highheel3.ogg' = 1, 'modular_zubbers/sound/effects/footstep/highheel4.ogg' = 1), 70) /obj/item/clothing/gloves/evening/lace name = "lace gloves" diff --git a/modular_zubbers/code/modules/clothing/shoes/clown.dm b/modular_zubbers/code/modules/clothing/shoes/clown.dm index 9b877e715a9..9ade9f97b1b 100644 --- a/modular_zubbers/code/modules/clothing/shoes/clown.dm +++ b/modular_zubbers/code/modules/clothing/shoes/clown.dm @@ -24,7 +24,7 @@ /obj/item/clothing/shoes/latex_heels/bubber/clussy/mute/Initialize(mapload) . = ..() - AddComponent(/datum/component/squeak, list('modular_skyrat/modules/modular_items/lewd_items/sounds/highheel1.ogg' = 1, 'modular_skyrat/modules/modular_items/lewd_items/sounds/highheel2.ogg' = 1), 70) + AddComponent(/datum/component/squeak, list('modular_zubbers/sound/effects/footstep/highheel1.ogg' = 1, 'modular_zubbers/sound/effects/footstep/highheel2.ogg' = 1, 'modular_zubbers/sound/effects/footstep/highheel3.ogg' = 1, 'modular_zubbers/sound/effects/footstep/highheel4.ogg' = 1), 70) /obj/item/clothing/shoes/clown_shoes/bubber/jester name = "amazing jester shoes" diff --git a/modular_zubbers/code/modules/mob/living/carbon/human/human.dm b/modular_zubbers/code/modules/mob/living/carbon/human/human.dm index 6ea0f44675d..73877d28f28 100644 --- a/modular_zubbers/code/modules/mob/living/carbon/human/human.dm +++ b/modular_zubbers/code/modules/mob/living/carbon/human/human.dm @@ -1,10 +1,22 @@ /mob/living/carbon/human /// Quad eyes offset in pixels. Positive is up, negative is down. (Suggested to not go above 2 or below -2) var/quad_eyes_offset = 0 + /// Used for footstep type pref, to apply to any new legs that get added to this mob. Uses a var instead of checking prefs because there are a lot of clientless mob situations. + var/footstep_type + /mob/living/carbon/human/species/shadekin race = /datum/species/shadekin +// Just blanket apply the footstep pref on limb addition, it gets far too complicated otherwise as limbs are getting replaced more often than you'd think +/obj/item/bodypart/leg/on_adding(mob/living/carbon/new_owner) + . = ..() + var/mob/living/carbon/human/human_owner = new_owner + if(istype(human_owner) && human_owner.footstep_type) + if(islist(human_owner.footstep_type)) + special_footstep_sounds = human_owner.footstep_type + else + footstep_type = human_owner.footstep_type // This is expected to be called or used in situations where you already know the mob is dead /mob/living/carbon/human/proc/get_dnr() diff --git a/modular_zubbers/sound/effects/footstep/hardhoof1.ogg b/modular_zubbers/sound/effects/footstep/hardhoof1.ogg new file mode 100644 index 00000000000..a7b4f2db050 Binary files /dev/null and b/modular_zubbers/sound/effects/footstep/hardhoof1.ogg differ diff --git a/modular_zubbers/sound/effects/footstep/hardhoof2.ogg b/modular_zubbers/sound/effects/footstep/hardhoof2.ogg new file mode 100644 index 00000000000..91891522dd3 Binary files /dev/null and b/modular_zubbers/sound/effects/footstep/hardhoof2.ogg differ diff --git a/modular_zubbers/sound/effects/footstep/hardhoof3.ogg b/modular_zubbers/sound/effects/footstep/hardhoof3.ogg new file mode 100644 index 00000000000..6bfa8852f26 Binary files /dev/null and b/modular_zubbers/sound/effects/footstep/hardhoof3.ogg differ diff --git a/modular_zubbers/sound/effects/footstep/hardhoof4.ogg b/modular_zubbers/sound/effects/footstep/hardhoof4.ogg new file mode 100644 index 00000000000..73df3fb103f Binary files /dev/null and b/modular_zubbers/sound/effects/footstep/hardhoof4.ogg differ diff --git a/modular_zubbers/sound/effects/footstep/highheel1.ogg b/modular_zubbers/sound/effects/footstep/highheel1.ogg new file mode 100644 index 00000000000..9c7b9fc9b5e Binary files /dev/null and b/modular_zubbers/sound/effects/footstep/highheel1.ogg differ diff --git a/modular_zubbers/sound/effects/footstep/highheel2.ogg b/modular_zubbers/sound/effects/footstep/highheel2.ogg new file mode 100644 index 00000000000..5d7add6ae05 Binary files /dev/null and b/modular_zubbers/sound/effects/footstep/highheel2.ogg differ diff --git a/modular_zubbers/sound/effects/footstep/highheel3.ogg b/modular_zubbers/sound/effects/footstep/highheel3.ogg new file mode 100644 index 00000000000..81602242e7e Binary files /dev/null and b/modular_zubbers/sound/effects/footstep/highheel3.ogg differ diff --git a/modular_zubbers/sound/effects/footstep/highheel4.ogg b/modular_zubbers/sound/effects/footstep/highheel4.ogg new file mode 100644 index 00000000000..347113f4208 Binary files /dev/null and b/modular_zubbers/sound/effects/footstep/highheel4.ogg differ diff --git a/tgstation.dme b/tgstation.dme index 7d5ef50149b..e36873c1bb5 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9265,6 +9265,7 @@ #include "modular_zubbers\code\modules\client\ssd.dm" #include "modular_zubbers\code\modules\client\autopunctuation\preferences.dm" #include "modular_zubbers\code\modules\client\flavor_text\flavor_text.dm" +#include "modular_zubbers\code\modules\client\preferences\footstep_sound.dm" #include "modular_zubbers\code\modules\client\preferences\permanent_limp.dm" #include "modular_zubbers\code\modules\client\preferences\player_panel.dm" #include "modular_zubbers\code\modules\client\preferences\sounds.dm" diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/footstep_sounds.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/footstep_sounds.tsx new file mode 100644 index 00000000000..ddb16d27a54 --- /dev/null +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/footstep_sounds.tsx @@ -0,0 +1,8 @@ +import type { FeatureChoiced } from '../../base'; +import { FeatureDropdownInput } from '../../dropdowns'; + +export const footstep_sound: FeatureChoiced = { + name: 'Footstep Sound', + description: 'The type of sound you will make when you walk around barefoot.', + component: FeatureDropdownInput, +};