Sound crusade part 1: footsteps (#37600)

* sounds take 1

take 1

* silent mime shoes

* greatly reduced range

* Silent walking, silent mimes
This commit is contained in:
mentgah
2025-05-27 14:23:40 +02:00
committed by GitHub
parent c1b7fe39d9
commit d0e258f3ef
93 changed files with 192 additions and 27 deletions

View File

@@ -0,0 +1,86 @@
#define FOOTSOUND_HUMAN 1
#define FOOTSOUND_VOX 2
var/list/sounds_asteroid = list(
'sound/effects/footstep/asteroid1.ogg',
'sound/effects/footstep/asteroid2.ogg',
'sound/effects/footstep/asteroid3.ogg',
'sound/effects/footstep/asteroid4.ogg',
'sound/effects/footstep/asteroid5.ogg'
)
var/list/sounds_carpet = list(
'sound/effects/footstep/carpet1.ogg',
'sound/effects/footstep/carpet2.ogg',
'sound/effects/footstep/carpet3.ogg',
'sound/effects/footstep/carpet4.ogg',
'sound/effects/footstep/carpet5.ogg'
)
var/list/sounds_carpet_barefoot = list(
'sound/effects/footstep/carpetbarefoot1.ogg',
'sound/effects/footstep/carpetbarefoot2.ogg',
'sound/effects/footstep/carpetbarefoot3.ogg',
'sound/effects/footstep/carpetbarefoot4.ogg',
'sound/effects/footstep/carpetbarefoot5.ogg'
)
var/list/sounds_floor = list(
'sound/effects/footstep/floor1.ogg',
'sound/effects/footstep/floor2.ogg',
'sound/effects/footstep/floor3.ogg',
'sound/effects/footstep/floor4.ogg',
'sound/effects/footstep/floor5.ogg'
)
var/list/sounds_floor_barefoot = list(
'sound/effects/footstep/hardbarefoot1.ogg',
'sound/effects/footstep/hardbarefoot2.ogg',
'sound/effects/footstep/hardbarefoot3.ogg',
'sound/effects/footstep/hardbarefoot4.ogg',
'sound/effects/footstep/hardbarefoot5.ogg'
)
var/list/sounds_floor_claw = list(
'sound/effects/footstep/hardclaw1.ogg',
'sound/effects/footstep/hardclaw2.ogg',
'sound/effects/footstep/hardclaw3.ogg',
'sound/effects/footstep/hardclaw4.ogg',
)
var/list/sounds_grass = list(
'sound/effects/footstep/grass1.ogg',
'sound/effects/footstep/grass2.ogg',
'sound/effects/footstep/grass3.ogg',
'sound/effects/footstep/grass4.ogg'
)
var/list/sounds_wood = list(
'sound/effects/footstep/wood1.ogg',
'sound/effects/footstep/wood2.ogg',
'sound/effects/footstep/wood3.ogg',
'sound/effects/footstep/wood4.ogg',
'sound/effects/footstep/wood5.ogg'
)
var/list/sounds_wood_barefoot = list(
'sound/effects/footstep/woodbarefoot1.ogg',
'sound/effects/footstep/woodbarefoot2.ogg',
'sound/effects/footstep/woodbarefoot3.ogg',
'sound/effects/footstep/woodbarefoot4.ogg',
'sound/effects/footstep/woodbarefoot5.ogg'
)
var/list/sounds_wood_claw = list(
'sound/effects/footstep/woodclaw1.ogg',
'sound/effects/footstep/woodclaw2.ogg',
'sound/effects/footstep/woodclaw3.ogg',
)
var/list/sounds_ayy = list(
'sound/effects/metal_walk.ogg',
'sound/effects/metal_walk2.ogg',
)
var/list/sounds_snow = list(
'sound/misc/snow1.ogg',
'sound/misc/snow2.ogg',
'sound/misc/snow3.ogg',
'sound/misc/snow4.ogg',
'sound/misc/snow5.ogg',
'sound/misc/snow6.ogg')

View File

@@ -9,7 +9,9 @@
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/human
var/datum/species/species //Contains icon generation and language information, set during New().
var/embedded_flag //To check if we've need to roll for damage on movement while an item is imbedded in us.
var/footsound = FOOTSOUND_HUMAN
var/stepstaken = 0
var/modulo_step = 2
var/fartCooldown = 20 SECONDS
/mob/living/carbon/human/dummy
@@ -42,6 +44,7 @@
/mob/living/carbon/human/vox/New(var/new_loc, delay_ready_dna = 0)
..(new_loc, "Vox")
my_appearance.h_style = "Short Vox Quills"
footsound = FOOTSOUND_VOX
regenerate_icons()
/mob/living/carbon/human/diona/New(var/new_loc, delay_ready_dna = 0)
@@ -91,6 +94,7 @@
/mob/living/carbon/human/insectoid/New(var/new_loc, delay_ready_dna = 0)
..(new_loc, "Insectoid")
my_appearance.h_style = "Insectoid Antennae"
footsound = FOOTSOUND_VOX
regenerate_icons()
/mob/living/carbon/human/NPC/New(var/new_loc, delay_ready_dna = 0)

View File

@@ -147,6 +147,7 @@
return 0*/
if(.)
if(shoes && istype(shoes, /obj/item/clothing/shoes))
var/obj/item/clothing/shoes/S = shoes
S.step_action()
@@ -158,6 +159,53 @@
for(var/obj/item/weapon/bomberman/dispenser in src)
if(dispenser.spam_bomb)
dispenser.attack_self(src)
//FOOTSTEPS
if (!on_foot()) //are our feet on the ground?
return
if (m_intent != "run")
return
if (mind?.miming)
return
stepstaken++
var/modulo = modulo_step
if(shoes && istype(shoes, /obj/item/clothing/shoes)) //shoes override
var/obj/item/clothing/shoes/S = shoes
if (S.clothing_flags & SILENT_SHOES)
return
modulo = S.modulo_steps<modulo? S.modulo_steps : modulo
if (stepstaken % modulo == 0) //once every other step by default, so that it doesn't spam too much (shoes override)
var/step_volume = 50
var/list/sounds_to_play
var/turf/T = get_turf(src)
if (!T || !T.footstep_sound || istype(T, /turf/space))
return
if(shoes && istype(shoes, /obj/item/clothing/shoes)) //shoes
var/obj/item/clothing/shoes/S = shoes
if (S.step_sound) //shoes override
sounds_to_play = S.step_sound
else //otherwise just use the turf's sound
sounds_to_play = T.footstep_sound
else
var/datum/organ/external/foot = has_vulnerable_foot()
if (foot)
switch(footsound)
if (FOOTSOUND_HUMAN)
sounds_to_play = T.footstep_sound_barefoot
if (FOOTSOUND_VOX)
sounds_to_play = T.footstep_sound_claw
else //check for robo limbs?
sounds_to_play = T.footstep_sound
stepstaken = 0
if (!sounds_to_play)
return
playsound(src, pick(sounds_to_play), step_volume, 1, -4)
/mob/living/carbon/human/CheckSlip(slip_on_walking = FALSE, overlay_type = TURF_WET_WATER, slip_on_magbooties = FALSE)
var/shoes_slip_factor
@@ -177,3 +225,5 @@
return SLIP_HAS_MAGBOOTS
// We don't have magboots, or magboots can't protect us
return (. && !shoes_slip_factor)