mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 02:16:05 +00:00
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:
86
code/modules/mob/living/carbon/human/footsteps.dm
Normal file
86
code/modules/mob/living/carbon/human/footsteps.dm
Normal 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')
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user