diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index f250c550ddb..2558653c510 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -496,7 +496,7 @@ // /obj/item/clothing signals -///from base of obj/item/clothing/shoes/proc/step_action(): () +///from [/mob/living/carbon/human/Move]: () #define COMSIG_SHOES_STEP_ACTION "shoes_step_action" ///from base of /obj/item/clothing/suit/space/proc/toggle_spacesuit(): (obj/item/clothing/suit/space/suit) #define COMSIG_SUIT_SPACE_TOGGLE "suit_space_toggle" diff --git a/code/__DEFINES/footstep.dm b/code/__DEFINES/footstep.dm new file mode 100644 index 00000000000..469549b8827 --- /dev/null +++ b/code/__DEFINES/footstep.dm @@ -0,0 +1,192 @@ +#define FOOTSTEP_WOOD "wood" +#define FOOTSTEP_FLOOR "floor" +#define FOOTSTEP_PLATING "plating" +#define FOOTSTEP_CARPET "carpet" +#define FOOTSTEP_SAND "sand" +#define FOOTSTEP_GRASS "grass" +#define FOOTSTEP_WATER "water" +#define FOOTSTEP_LAVA "lava" +#define FOOTSTEP_MEAT "meat" +//barefoot sounds +#define FOOTSTEP_WOOD_BAREFOOT "woodbarefoot" +#define FOOTSTEP_WOOD_CLAW "woodclaw" +#define FOOTSTEP_HARD_BAREFOOT "hardbarefoot" +#define FOOTSTEP_HARD_CLAW "hardclaw" +#define FOOTSTEP_CARPET_BAREFOOT "carpetbarefoot" +//misc footstep sounds +#define FOOTSTEP_GENERIC_HEAVY "heavy" + +//footstep mob defines +#define FOOTSTEP_MOB_CLAW 1 +#define FOOTSTEP_MOB_BAREFOOT 2 +#define FOOTSTEP_MOB_HEAVY 3 +#define FOOTSTEP_MOB_SHOE 4 +#define FOOTSTEP_MOB_HUMAN 5 //Warning: Only works on /mob/living/carbon/human +#define FOOTSTEP_MOB_SLIME 6 +#define FOOTSTEP_OBJ_MACHINE 7 +#define FOOTSTEP_OBJ_ROBOT 8 + +/* + +id = list( +list(sounds), +base volume, +extra range addition +) + + +*/ + +GLOBAL_LIST_INIT(footstep, list( + FOOTSTEP_WOOD = list(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'), 100, 0), + FOOTSTEP_FLOOR = list(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'), 75, -1), + FOOTSTEP_PLATING = list(list( + 'sound/effects/footstep/plating1.ogg', + 'sound/effects/footstep/plating2.ogg', + 'sound/effects/footstep/plating3.ogg', + 'sound/effects/footstep/plating4.ogg', + 'sound/effects/footstep/plating5.ogg'), 100, 1), + FOOTSTEP_CARPET = list(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'), 75, -1), + FOOTSTEP_SAND = list(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'), 75, 0), + FOOTSTEP_GRASS = list(list( + 'sound/effects/footstep/grass1.ogg', + 'sound/effects/footstep/grass2.ogg', + 'sound/effects/footstep/grass3.ogg', + 'sound/effects/footstep/grass4.ogg'), 75, 0), + FOOTSTEP_WATER = list(list( + 'sound/effects/footstep/water1.ogg', + 'sound/effects/footstep/water2.ogg', + 'sound/effects/footstep/water3.ogg', + 'sound/effects/footstep/water4.ogg'), 100, 1), + FOOTSTEP_LAVA = list(list( + 'sound/effects/footstep/lava1.ogg', + 'sound/effects/footstep/lava2.ogg', + 'sound/effects/footstep/lava3.ogg'), 100, 0), + FOOTSTEP_MEAT = list(list( + 'sound/effects/meatslap.ogg'), 100, 0) +)) +//bare footsteps lists +GLOBAL_LIST_INIT(barefootstep, list( + FOOTSTEP_WOOD_BAREFOOT = list(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'), 80, -1), + FOOTSTEP_HARD_BAREFOOT = list(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'), 80, -1), + FOOTSTEP_CARPET_BAREFOOT = list(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'), 75, -2), + FOOTSTEP_SAND = list(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'), 75, 0), + FOOTSTEP_GRASS = list(list( + 'sound/effects/footstep/grass1.ogg', + 'sound/effects/footstep/grass2.ogg', + 'sound/effects/footstep/grass3.ogg', + 'sound/effects/footstep/grass4.ogg'), 75, 0), + FOOTSTEP_WATER = list(list( + 'sound/effects/footstep/water1.ogg', + 'sound/effects/footstep/water2.ogg', + 'sound/effects/footstep/water3.ogg', + 'sound/effects/footstep/water4.ogg'), 100, 1), + FOOTSTEP_LAVA = list(list( + 'sound/effects/footstep/lava1.ogg', + 'sound/effects/footstep/lava2.ogg', + 'sound/effects/footstep/lava3.ogg'), 100, 0), + FOOTSTEP_MEAT = list(list( + 'sound/effects/meatslap.ogg'), 100, 0), +)) + +//claw footsteps lists +GLOBAL_LIST_INIT(clawfootstep, list( + FOOTSTEP_WOOD_CLAW = list(list( + 'sound/effects/footstep/woodclaw1.ogg', + 'sound/effects/footstep/woodclaw2.ogg', + 'sound/effects/footstep/woodclaw3.ogg', + 'sound/effects/footstep/woodclaw2.ogg', + 'sound/effects/footstep/woodclaw1.ogg'), 90, 1), + FOOTSTEP_HARD_CLAW = list(list( + 'sound/effects/footstep/hardclaw1.ogg', + 'sound/effects/footstep/hardclaw2.ogg', + 'sound/effects/footstep/hardclaw3.ogg', + 'sound/effects/footstep/hardclaw4.ogg', + 'sound/effects/footstep/hardclaw1.ogg'), 90, 1), + FOOTSTEP_CARPET_BAREFOOT = list(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'), 75, -2), + FOOTSTEP_SAND = list(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'), 75, 0), + FOOTSTEP_GRASS = list(list( + 'sound/effects/footstep/grass1.ogg', + 'sound/effects/footstep/grass2.ogg', + 'sound/effects/footstep/grass3.ogg', + 'sound/effects/footstep/grass4.ogg'), 75, 0), + FOOTSTEP_WATER = list(list( + 'sound/effects/footstep/water1.ogg', + 'sound/effects/footstep/water2.ogg', + 'sound/effects/footstep/water3.ogg', + 'sound/effects/footstep/water4.ogg'), 100, 1), + FOOTSTEP_LAVA = list(list( + 'sound/effects/footstep/lava1.ogg', + 'sound/effects/footstep/lava2.ogg', + 'sound/effects/footstep/lava3.ogg'), 100, 0), + FOOTSTEP_MEAT = list(list( + 'sound/effects/meatslap.ogg'), 100, 0), +)) + +//heavy footsteps list +GLOBAL_LIST_INIT(heavyfootstep, list( + FOOTSTEP_GENERIC_HEAVY = list(list( + 'sound/effects/footstep/heavy1.ogg', + 'sound/effects/footstep/heavy2.ogg'), 100, 2), + FOOTSTEP_WATER = list(list( + 'sound/effects/footstep/water1.ogg', + 'sound/effects/footstep/water2.ogg', + 'sound/effects/footstep/water3.ogg', + 'sound/effects/footstep/water4.ogg'), 100, 2), + FOOTSTEP_LAVA = list(list( + 'sound/effects/footstep/lava1.ogg', + 'sound/effects/footstep/lava2.ogg', + 'sound/effects/footstep/lava3.ogg'), 100, 0), + FOOTSTEP_MEAT = list(list( + 'sound/effects/meatslap.ogg'), 100, 0), +)) diff --git a/code/__HELPERS/traits.dm b/code/__HELPERS/traits.dm index ef22a8101a2..6faff552ff5 100644 --- a/code/__HELPERS/traits.dm +++ b/code/__HELPERS/traits.dm @@ -138,6 +138,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_BLOODCRAWL "bloodcrawl" #define TRAIT_BLOODCRAWL_EAT "bloodcrawl_eat" #define TRAIT_DWARF "dwarf" +#define TRAIT_SILENT_FOOTSTEPS "silent_footsteps" //makes your footsteps completely silent #define TRAIT_COMIC_SANS "comic_sans" #define TRAIT_NOFINGERPRINTS "no_fingerprints" diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index e91ea9b8e70..906b4b608c1 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -43,6 +43,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_BLOODCRAWL" = TRAIT_BLOODCRAWL, "TRAIT_BLOODCRAWL_EAT" = TRAIT_BLOODCRAWL_EAT, "TRAIT_DWARF" = TRAIT_DWARF, + "TRAIT_SILENT_FOOTSTEPS" = TRAIT_SILENT_FOOTSTEPS, "TRAIT_ALCOHOL_TOLERANCE" = TRAIT_ALCOHOL_TOLERANCE, "TRAIT_COMIC_SANS" = TRAIT_COMIC_SANS, diff --git a/code/datums/components/footstep.dm b/code/datums/components/footstep.dm new file mode 100644 index 00000000000..a946048487a --- /dev/null +++ b/code/datums/components/footstep.dm @@ -0,0 +1,133 @@ +///Footstep component. Plays footsteps at parents location when it is appropriate. +/datum/component/footstep + ///How many steps the parent has taken since the last time a footstep was played. + var/steps = 0 + ///volume determines the extra volume of the footstep. This is multiplied by the base volume, should there be one. + var/volume + ///e_range stands for extra range - aka how far the sound can be heard. This is added to the base value and ignored if there isn't a base value. + var/e_range + ///footstep_type is a define which determines what kind of sounds should get chosen. + var/footstep_type + ///This can be a list OR a soundfile OR null. Determines whatever sound gets played. + var/footstep_sounds + ///Whether or not to add variation to the sounds played + var/sound_vary = FALSE + +/datum/component/footstep/Initialize(footstep_type_ = FOOTSTEP_MOB_BAREFOOT, volume_ = 0.5, e_range_ = -8, vary) + if(!ismovable(parent)) + return COMPONENT_INCOMPATIBLE + volume = volume_ + e_range = e_range_ + footstep_type = footstep_type_ + sound_vary = vary + switch(footstep_type) + if(FOOTSTEP_MOB_HUMAN) + if(!ishuman(parent)) + return COMPONENT_INCOMPATIBLE + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/play_humanstep) + return + if(FOOTSTEP_MOB_CLAW) + footstep_sounds = GLOB.clawfootstep + if(FOOTSTEP_MOB_BAREFOOT) + footstep_sounds = GLOB.barefootstep + if(FOOTSTEP_MOB_HEAVY) + footstep_sounds = GLOB.heavyfootstep + if(FOOTSTEP_MOB_SHOE) + footstep_sounds = GLOB.footstep + if(FOOTSTEP_MOB_SLIME) + footstep_sounds = 'sound/effects/footstep/slime1.ogg' + if(FOOTSTEP_OBJ_MACHINE) + footstep_sounds = 'sound/effects/bang.ogg' + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/play_simplestep_machine) //Note that this doesn't get called for humans. + return + if(FOOTSTEP_OBJ_ROBOT) + footstep_sounds = 'sound/effects/tank_treads.ogg' + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/play_simplestep_machine) //Note that this doesn't get called for humans. + return + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/play_simplestep) //Note that this doesn't get called for humans. + +///Prepares a footstep. Determines if it should get played. Returns the turf it should get played on. Note that it is always a /turf/simulated/floor (eventually /turf/open) +/datum/component/footstep/proc/prepare_step() + var/turf/simulated/floor/T = get_turf(parent) + if(!istype(T)) + return + + var/mob/living/LM = parent + if(!T.footstep || LM.lying || !LM.canmove || LM.resting || LM.buckled || LM.throwing || LM.flying || istype(LM.loc, /obj/machinery/atmospherics)) + return + + if(ishuman(LM)) + var/mob/living/carbon/human/H = LM + if(!H.get_organ(BODY_ZONE_L_LEG) && !H.get_organ(BODY_ZONE_R_LEG)) + return + if(H.m_intent == MOVE_INTENT_WALK) + return// stealth + steps++ + + if(steps >= 6) + steps = 0 + + if(steps % 2) + return + + if(steps != 0 && !has_gravity(LM, T)) // don't need to step as often when you hop around + return + return T + +/datum/component/footstep/proc/play_simplestep() + SIGNAL_HANDLER + + var/turf/simulated/floor/T = prepare_step() + if(!T) + return + if(isfile(footstep_sounds) || istext(footstep_sounds)) + playsound(T, footstep_sounds, volume, falloff_distance = 1, vary = sound_vary) + return + var/turf_footstep + switch(footstep_type) + if(FOOTSTEP_MOB_CLAW) + turf_footstep = T.clawfootstep + if(FOOTSTEP_MOB_BAREFOOT) + turf_footstep = T.barefootstep + if(FOOTSTEP_MOB_HEAVY) + turf_footstep = T.heavyfootstep + if(FOOTSTEP_MOB_SHOE) + turf_footstep = T.footstep + if(!turf_footstep) + return + playsound(T, pick(footstep_sounds[turf_footstep][1]), footstep_sounds[turf_footstep][2] * volume, TRUE, footstep_sounds[turf_footstep][3] + e_range, falloff_distance = 1, vary = sound_vary) + +/datum/component/footstep/proc/play_humanstep() + SIGNAL_HANDLER + + if(HAS_TRAIT(parent, TRAIT_SILENT_FOOTSTEPS)) + return + var/turf/simulated/floor/T = prepare_step() + if(!T) + return + var/mob/living/carbon/human/H = parent + + if((H.wear_suit?.body_parts_covered | H.w_uniform?.body_parts_covered | H.shoes?.body_parts_covered) & FEET) + // we are wearing shoes + playsound(T, pick(GLOB.footstep[T.footstep][1]), + GLOB.footstep[T.footstep][2] * volume, + TRUE, + GLOB.footstep[T.footstep][3] + e_range, falloff_distance = 1, vary = sound_vary) + else + if(H.dna.species.special_step_sounds) + playsound(T, pick(H.dna.species.special_step_sounds), 50, TRUE, falloff_distance = 1, vary = sound_vary) + else + playsound(T, pick(GLOB.barefootstep[T.barefootstep][1]), + GLOB.barefootstep[T.barefootstep][2] * volume, + TRUE, + GLOB.barefootstep[T.barefootstep][3] + e_range, falloff_distance = 1, vary = sound_vary) + + +///Prepares a footstep for machine walking +/datum/component/footstep/proc/play_simplestep_machine() + SIGNAL_HANDLER + + var/turf/simulated/floor/T = get_turf(parent) + if(!istype(T)) + return + playsound(T, footstep_sounds, 50, falloff_distance = 1, vary = sound_vary) diff --git a/code/game/sound.dm b/code/game/sound.dm index bda8bbc341a..a836aba710f 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -205,10 +205,6 @@ falloff_distance - Distance at which falloff begins. Sound is at peak volume (in soundin = pick('sound/effects/bodyfall1.ogg','sound/effects/bodyfall2.ogg','sound/effects/bodyfall3.ogg','sound/effects/bodyfall4.ogg') if("punch") soundin = pick('sound/weapons/punch1.ogg','sound/weapons/punch2.ogg','sound/weapons/punch3.ogg','sound/weapons/punch4.ogg') - if("clownstep") - soundin = pick('sound/effects/clownstep1.ogg','sound/effects/clownstep2.ogg') - if("jackboot") - soundin = pick('sound/effects/jackboot1.ogg','sound/effects/jackboot2.ogg') if("swing_hit") soundin = pick('sound/weapons/genhit1.ogg', 'sound/weapons/genhit2.ogg', 'sound/weapons/genhit3.ogg') if("hiss") diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 614b8232b0b..3ba2e638099 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -31,6 +31,11 @@ GLOBAL_LIST_INIT(icons_to_ignore_at_floor_init, list("damaged1","damaged2","dama var/list/burnt_states = list("floorscorched1", "floorscorched2") var/list/prying_tool_list = list(TOOL_CROWBAR) //What tool/s can we use to pry up the tile? + var/footstep = FOOTSTEP_FLOOR + var/barefootstep = FOOTSTEP_HARD_BAREFOOT + var/clawfootstep = FOOTSTEP_HARD_CLAW + var/heavyfootstep = FOOTSTEP_GENERIC_HEAVY + /turf/simulated/floor/Initialize(mapload) . = ..() if(icon_state in GLOB.icons_to_ignore_at_floor_init) //so damaged/burned tiles or plating icons aren't saved as the default diff --git a/code/game/turfs/simulated/floor/asteroid.dm b/code/game/turfs/simulated/floor/asteroid.dm index d912e183aec..4e337008830 100644 --- a/code/game/turfs/simulated/floor/asteroid.dm +++ b/code/game/turfs/simulated/floor/asteroid.dm @@ -7,7 +7,10 @@ baseturf = /turf/simulated/floor/plating/asteroid icon_state = "asteroid" icon_plating = "asteroid" - footstep_sounds = list() + footstep = FOOTSTEP_SAND + barefootstep = FOOTSTEP_SAND + clawfootstep = FOOTSTEP_SAND + heavyfootstep = FOOTSTEP_GENERIC_HEAVY var/environment_type = "asteroid" var/turf_type = /turf/simulated/floor/plating/asteroid //Because caves do whacky shit to revert to normal var/floor_variance = 20 //probability floor has a different icon state diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm index bfbfa70331e..0b8938fc204 100644 --- a/code/game/turfs/simulated/floor/fancy_floor.dm +++ b/code/game/turfs/simulated/floor/fancy_floor.dm @@ -3,11 +3,10 @@ floor_tile = /obj/item/stack/tile/wood prying_tool_list = list(TOOL_SCREWDRIVER) broken_states = list("wood-broken", "wood-broken2", "wood-broken3", "wood-broken4", "wood-broken5", "wood-broken6", "wood-broken7") - - footstep_sounds = list( - "human" = list('sound/effects/footstep/wood_all.ogg'), //@RonaldVanWonderen of Freesound.org - "xeno" = list('sound/effects/footstep/wood_all.ogg') //@RonaldVanWonderen of Freesound.org - ) + footstep = FOOTSTEP_WOOD + barefootstep = FOOTSTEP_WOOD_BAREFOOT + clawfootstep = FOOTSTEP_WOOD_CLAW + heavyfootstep = FOOTSTEP_GENERIC_HEAVY /turf/simulated/floor/wood/screwdriver_act(mob/user, obj/item/I) . = TRUE @@ -48,6 +47,10 @@ icon_state = "grass1" floor_tile = /obj/item/stack/tile/grass broken_states = list("sand") + footstep = FOOTSTEP_GRASS + barefootstep = FOOTSTEP_GRASS + clawfootstep = FOOTSTEP_GRASS + heavyfootstep = FOOTSTEP_GENERIC_HEAVY /turf/simulated/floor/grass/Initialize(mapload) . = ..() @@ -73,12 +76,10 @@ broken_states = list("damaged") smooth = SMOOTH_TRUE canSmoothWith = null - - footstep_sounds = list( - "human" = list('sound/effects/footstep/carpet_human.ogg'), - "xeno" = list('sound/effects/footstep/carpet_xeno.ogg') - ) - + footstep = FOOTSTEP_CARPET + barefootstep = FOOTSTEP_CARPET_BAREFOOT + clawfootstep = FOOTSTEP_CARPET_BAREFOOT + heavyfootstep = FOOTSTEP_GENERIC_HEAVY /turf/simulated/floor/carpet/Initialize(mapload) . = ..() diff --git a/code/game/turfs/simulated/floor/indestructible.dm b/code/game/turfs/simulated/floor/indestructible.dm index 4f551fb485a..cd7abaeb188 100644 --- a/code/game/turfs/simulated/floor/indestructible.dm +++ b/code/game/turfs/simulated/floor/indestructible.dm @@ -46,6 +46,10 @@ nitrogen = 23 temperature = 300 planetary_atmos = TRUE + footstep = FOOTSTEP_LAVA + barefootstep = FOOTSTEP_LAVA + clawfootstep = FOOTSTEP_LAVA + heavyfootstep = FOOTSTEP_LAVA /turf/simulated/floor/indestructible/necropolis/Initialize(mapload) . = ..() diff --git a/code/game/turfs/simulated/floor/lava.dm b/code/game/turfs/simulated/floor/lava.dm index 14a08639132..29485f4a808 100644 --- a/code/game/turfs/simulated/floor/lava.dm +++ b/code/game/turfs/simulated/floor/lava.dm @@ -7,6 +7,10 @@ light_range = 2 light_power = 0.75 light_color = LIGHT_COLOR_LAVA + footstep = FOOTSTEP_LAVA + barefootstep = FOOTSTEP_LAVA + clawfootstep = FOOTSTEP_LAVA + heavyfootstep = FOOTSTEP_LAVA /turf/simulated/floor/plating/lava/ex_act() return diff --git a/code/game/turfs/simulated/floor/mineral.dm b/code/game/turfs/simulated/floor/mineral.dm index 4f62b4dc87b..6ab388fd3c5 100644 --- a/code/game/turfs/simulated/floor/mineral.dm +++ b/code/game/turfs/simulated/floor/mineral.dm @@ -205,8 +205,10 @@ name = "silent floor" icon_state = "tranquillite" floor_tile = /obj/item/stack/tile/mineral/tranquillite - shoe_running_volume = 0 - shoe_walking_volume = 0 + footstep = null + barefootstep = null + clawfootstep = null + heavyfootstep = null //DIAMOND /turf/simulated/floor/mineral/diamond diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm index c80cddff699..2876378eb06 100644 --- a/code/game/turfs/simulated/floor/misc_floor.dm +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -42,6 +42,10 @@ /turf/simulated/floor/beach name = "beach" icon = 'icons/misc/beach.dmi' + footstep = FOOTSTEP_SAND + barefootstep = FOOTSTEP_SAND + clawfootstep = FOOTSTEP_SAND + heavyfootstep = FOOTSTEP_GENERIC_HEAVY /turf/simulated/floor/beach/pry_tile(obj/item/C, mob/user, silent = FALSE) return @@ -56,17 +60,29 @@ icon = 'icons/misc/beach2.dmi' icon_state = "sandwater" baseturf = /turf/simulated/floor/beach/coastline + footstep = FOOTSTEP_WATER + barefootstep = FOOTSTEP_WATER + clawfootstep = FOOTSTEP_WATER + heavyfootstep = FOOTSTEP_WATER /turf/simulated/floor/beach/coastline_t name = "coastline" desc = "Tide's high tonight. Charge your batons." icon_state = "sandwater_t" baseturf = /turf/simulated/floor/beach/coastline_t + footstep = FOOTSTEP_WATER + barefootstep = FOOTSTEP_WATER + clawfootstep = FOOTSTEP_WATER + heavyfootstep = FOOTSTEP_WATER /turf/simulated/floor/beach/coastline_b name = "coastline" icon_state = "sandwater_b" baseturf = /turf/simulated/floor/beach/coastline_b + footstep = FOOTSTEP_WATER + barefootstep = FOOTSTEP_WATER + clawfootstep = FOOTSTEP_WATER + heavyfootstep = FOOTSTEP_WATER /turf/simulated/floor/beach/water // TODO - Refactor water so they share the same parent type - Or alternatively component something like that name = "water" @@ -74,6 +90,10 @@ mouse_opacity = MOUSE_OPACITY_TRANSPARENT var/obj/machinery/poolcontroller/linkedcontroller = null baseturf = /turf/simulated/floor/beach/water + footstep = FOOTSTEP_WATER + barefootstep = FOOTSTEP_WATER + clawfootstep = FOOTSTEP_WATER + heavyfootstep = FOOTSTEP_WATER /turf/simulated/floor/beach/water/Initialize(mapload) . = ..() diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index 703b98fd094..27eac4308a4 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -6,13 +6,11 @@ floor_tile = null broken_states = list("damaged1", "damaged2", "damaged3", "damaged4", "damaged5") burnt_states = list("floorscorched1", "floorscorched2") - var/unfastened = FALSE - - footstep_sounds = list( - "human" = list('sound/effects/footstep/plating_human.ogg'), - "xeno" = list('sound/effects/footstep/plating_xeno.ogg') - ) + footstep = FOOTSTEP_PLATING + barefootstep = FOOTSTEP_HARD_BAREFOOT + clawfootstep = FOOTSTEP_HARD_CLAW + heavyfootstep = FOOTSTEP_GENERIC_HEAVY /turf/simulated/floor/plating/Initialize(mapload) . = ..() @@ -127,6 +125,10 @@ thermal_conductivity = 0.025 heat_capacity = 325000 floor_tile = /obj/item/stack/rods + footstep = FOOTSTEP_PLATING + barefootstep = FOOTSTEP_HARD_BAREFOOT + clawfootstep = FOOTSTEP_HARD_CLAW + heavyfootstep = FOOTSTEP_GENERIC_HEAVY /turf/simulated/floor/engine/break_tile() return //unbreakable @@ -261,6 +263,10 @@ name = "snow" icon = 'icons/turf/snow.dmi' icon_state = "snow" + footstep = FOOTSTEP_SAND + barefootstep = FOOTSTEP_SAND + clawfootstep = FOOTSTEP_SAND + heavyfootstep = FOOTSTEP_GENERIC_HEAVY /turf/simulated/floor/plating/snow/ex_act(severity) return @@ -272,6 +278,10 @@ name = "snow" icon = 'icons/turf/snow.dmi' icon_state = "snow" + footstep = FOOTSTEP_SAND + barefootstep = FOOTSTEP_SAND + clawfootstep = FOOTSTEP_SAND + heavyfootstep = FOOTSTEP_GENERIC_HEAVY /turf/simulated/floor/snow/ex_act(severity) return diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 8fe9726525b..31408a0cad3 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -35,10 +35,6 @@ var/list/blueprint_data //for the station blueprints, images of objects eg: pipes - var/list/footstep_sounds - var/shoe_running_volume = 50 - var/shoe_walking_volume = 20 - /turf/Initialize(mapload) SHOULD_CALL_PARENT(FALSE) if(initialized) diff --git a/code/modules/awaymissions/mission_code/beach.dm b/code/modules/awaymissions/mission_code/beach.dm index 1252943e66f..418e256fd8d 100644 --- a/code/modules/awaymissions/mission_code/beach.dm +++ b/code/modules/awaymissions/mission_code/beach.dm @@ -47,6 +47,10 @@ icon_state = "desert" mouse_opacity = MOUSE_OPACITY_ICON baseturf = /turf/simulated/floor/beach/away/sand + footstep = FOOTSTEP_SAND + barefootstep = FOOTSTEP_SAND + clawfootstep = FOOTSTEP_SAND + heavyfootstep = FOOTSTEP_GENERIC_HEAVY /turf/simulated/floor/beach/away/sand/Initialize(mapload) . = ..() //adds some aesthetic randomness to the beach sand @@ -63,6 +67,10 @@ icon_state = "beach" water_overlay_image = "water_coast" baseturf = /turf/simulated/floor/beach/away/coastline + footstep = FOOTSTEP_WATER + barefootstep = FOOTSTEP_WATER + clawfootstep = FOOTSTEP_WATER + heavyfootstep = FOOTSTEP_WATER /turf/simulated/floor/beach/away/coastline/dense //for boundary "walls" density = TRUE @@ -74,6 +82,10 @@ water_overlay_image = "water_shallow" var/obj/machinery/poolcontroller/linkedcontroller = null baseturf = /turf/simulated/floor/beach/away/water + footstep = FOOTSTEP_WATER + barefootstep = FOOTSTEP_WATER + clawfootstep = FOOTSTEP_WATER + heavyfootstep = FOOTSTEP_WATER /turf/simulated/floor/beach/away/water/Entered(atom/movable/AM, atom/OldLoc) . = ..() diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 9a8fe19fa03..3f23b1e8736 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -442,9 +442,6 @@ BLIND // can't see anything body_parts_covered = FEET slot_flags = SLOT_FEET - var/silence_steps = 0 - var/shoe_sound_footstep = 1 - var/shoe_sound = null var/blood_state = BLOOD_STATE_NOT_BLOODY var/list/bloody_shoes = list(BLOOD_STATE_HUMAN = 0, BLOOD_STATE_XENO = 0, BLOOD_STATE_NOT_BLOODY = 0) @@ -484,26 +481,6 @@ BLIND // can't see anything else return ..() -/obj/item/clothing/shoes/proc/step_action(var/mob/living/carbon/human/H) //squeek squeek - SEND_SIGNAL(src, COMSIG_SHOES_STEP_ACTION) - if(shoe_sound) - var/turf/T = get_turf(H) - - if(!istype(H) || !istype(T)) - return 0 - - if(H.m_intent == MOVE_INTENT_RUN) - if(shoe_sound_footstep >= 2) - if(T.shoe_running_volume) - playsound(src, shoe_sound, T.shoe_running_volume, 1) - shoe_sound_footstep = 0 - else - shoe_sound_footstep++ - else if(T.shoe_walking_volume) - playsound(src, shoe_sound, T.shoe_walking_volume, 1) - - return 1 - /obj/item/proc/negates_gravity() return 0 diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index abe67fb68e6..abbd2a6f03c 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -78,11 +78,13 @@ slowdown_passive = SHOES_SLOWDOWN+1 magpulse_name = "honk-powered traction system" item_color = "clown" - silence_steps = 1 - shoe_sound = "clownstep" origin_tech = "magnets=4;syndicate=2" var/enabled_waddle = TRUE +/obj/item/clothing/shoes/magboots/clown/Initialize(mapload) + . = ..() + AddComponent(/datum/component/squeak, list('sound/effects/clownstep1.ogg' = 1, 'sound/effects/clownstep2.ogg' = 1), 50, falloff_exponent = 20) //die off quick please + /obj/item/clothing/shoes/magboots/clown/equipped(mob/user, slot) . = ..() if(slot == slot_shoes && enabled_waddle) diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 240d6181b66..b98661cc70a 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -57,7 +57,13 @@ desc = "A pair of purple rubber boots, designed to prevent slipping on wet surfaces while also drying them." icon_state = "galoshes_dry" -/obj/item/clothing/shoes/galoshes/dry/step_action() +/obj/item/clothing/shoes/galoshes/dry/Initialize(mapload) + . = ..() + RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, .proc/on_step) + +/obj/item/clothing/shoes/galoshes/dry/proc/on_step() + SIGNAL_HANDLER + var/turf/simulated/t_loc = get_turf(src) if(istype(t_loc) && t_loc.wet) t_loc.MakeDry(TURF_WET_WATER) @@ -69,10 +75,12 @@ item_state = "clown_shoes" slowdown = SHOES_SLOWDOWN+1 item_color = "clown" - var/footstep = 1 //used for squeeks whilst walking - shoe_sound = "clownstep" var/enabled_waddle = TRUE +/obj/item/clothing/shoes/clown_shoes/Initialize(mapload) + . = ..() + AddComponent(/datum/component/squeak, list('sound/effects/clownstep1.ogg' = 1, 'sound/effects/clownstep2.ogg' = 1), 50, falloff_exponent = 20) //die off quick please + /obj/item/clothing/shoes/clown_shoes/equipped(mob/user, slot) . = ..() if(slot == slot_shoes && enabled_waddle) @@ -113,8 +121,6 @@ strip_delay = 50 put_on_delay = 50 resistance_flags = NONE - var/footstep = 1 - shoe_sound = "jackboot" /obj/item/clothing/shoes/jackboots/jacksandals name = "jacksandals" @@ -208,16 +214,6 @@ item_color = "noble_boot" item_state = "noble_boot" -/obj/item/clothing/shoes/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/stack/tape_roll) && !silence_steps) - var/obj/item/stack/tape_roll/TR = I - if((!silence_steps || shoe_sound) && TR.use(4)) - silence_steps = TRUE - shoe_sound = null - to_chat(user, "You tape the soles of [src] to silence your footsteps.") - else - return ..() - /obj/item/clothing/shoes/sandal/white name = "White Sandals" desc = "Medical sandals that nerds wear." @@ -241,7 +237,10 @@ righthand_file = 'icons/goonstation/mob/inhands/clothing_righthand.dmi' resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF flags = NODROP - shoe_sound = "clownstep" + +/obj/item/clothing/shoes/cursedclown/Initialize(mapload) + . = ..() + AddComponent(/datum/component/squeak, list('sound/effects/clownstep1.ogg' = 1, 'sound/effects/clownstep2.ogg' = 1), 50, falloff_exponent = 20) //die off quick please /obj/item/clothing/shoes/singery name = "yellow performer's boots" @@ -311,7 +310,6 @@ icon_state = "clothwrap" item_state = "clothwrap" force = 0 - silence_steps = TRUE w_class = WEIGHT_CLASS_SMALL /obj/item/clothing/shoes/bhop @@ -351,4 +349,7 @@ desc = "These shoes are made for quacking, and thats just what they'll do." icon_state = "ducky" item_state = "ducky" - shoe_sound = "sound/items/squeaktoy.ogg" + +/obj/item/clothing/shoes/ducky/Initialize(mapload) + . = ..() + AddComponent(/datum/component/squeak, list('sound/items/squeaktoy.ogg' = 1), 50, falloff_exponent = 20) //die off quick please diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 130dbc39145..589ae6c8b6c 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -226,33 +226,6 @@ Des: Removes all infected images from the alien. /mob/living/carbon/alien/can_use_vents() return -/mob/living/carbon/alien/handle_footstep(turf/T) - if(..()) - if(T.footstep_sounds && T.footstep_sounds["xeno"]) - var/S = pick(T.footstep_sounds["xeno"]) - if(S) - if(m_intent == MOVE_INTENT_RUN) - if(!(step_count % 2)) //every other turf makes a sound - return 0 - - var/range = -(world.view - 2) - range -= 0.666 //-(7 - 2) = (-5) = -5 | -5 - (0.666) = -5.666 | (7 + -5.666) = 1.334 | 1.334 * 3 = 4.002 | range(4.002) = range(4) - var/volume = 5 - - if(m_intent == MOVE_INTENT_WALK) - return 0 //silent when walking - - if(buckled || lying || throwing) - return 0 //people flying, lying down or sitting do not step - - if(!has_gravity(src)) - if(step_count % 3) //this basically says, every three moves make a noise - return 0 //1st - none, 1%3==1, 2nd - none, 2%3==2, 3rd - noise, 3%3==0 - - playsound(T, S, volume, 1, range) - return 1 - return 0 - /mob/living/carbon/alien/getTrail() if(getBruteLoss() < 200) return pick("xltrails_1", "xltrails_2") diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index e82488ee064..028f5d94126 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -23,6 +23,7 @@ add_language("Xenomorph") add_language("Hivemind") ..() + AddComponent(/datum/component/footstep, FOOTSTEP_MOB_CLAW, 0.5, -11) /mob/living/carbon/alien/humanoid/Process_Spacemove(var/check_drift = 0) if(..()) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 2a412353b19..93992336a18 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -40,6 +40,8 @@ physiology = new() + AddComponent(/datum/component/footstep, FOOTSTEP_MOB_HUMAN, 1, -6) + UpdateAppearance() GLOB.human_list += src diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 7cb33bce249..cd7f743fa8f 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -42,6 +42,9 @@ var/obj/item/clothing/shoes/S = shoes + if(S && !lying && loc == NewLoc) + SEND_SIGNAL(S, COMSIG_SHOES_STEP_ACTION) + //Bloody footprints var/turf/T = get_turf(src) var/obj/item/organ/external/l_foot = get_organ("l_foot") @@ -69,59 +72,3 @@ if(bloody_feet[blood_state] > BLOOD_LOSS_IN_SPREAD) createFootprintsFrom(src, dir, T) update_inv_shoes() - //End bloody footprints - if(S) - S.step_action(src) - -/mob/living/carbon/human/handle_footstep(turf/T) - if(..()) - if(T.footstep_sounds && T.footstep_sounds["human"]) - var/S = pick(T.footstep_sounds["human"]) - if(S) - if(m_intent == MOVE_INTENT_RUN) - if(!(step_count % 2)) //every other turf makes a sound - return 0 - - if(istype(shoes, /obj/item/clothing/shoes)) - var/obj/item/clothing/shoes/shooess = shoes - if(shooess.silence_steps) - return 0 //silent - if(shooess.shoe_sound) - return //Handle it on the shoe - - var/range = -(world.view - 2) - if(m_intent == MOVE_INTENT_WALK) - range -= 0.333 - if(!shoes) - range -= 0.333 - - //shoes + running - //-(7 - 2) = -(5) = -5 | -5 - 0 = -5 | (7 + -5) = 2 | 2 * 3 = 6 | range(6) = range(6) - //running OR shoes - //-(7 - 2) = (-5) = -5 | -5 - 0.333 = -5.333 | (7 + -5.333) = 1.667 | 1.667 * 3 = 5.001 | range(5.001) = range(5) - //walking AND no shoes - //-(7 - 2) = (-5) = -5 | -5 - (0.333 * 2) = -5.666 | (7 + -5.666) = 1.334 | 1.334 * 3 = 4.002 | range(4.002) = range(4) - - var/volume = 13 - if(m_intent == MOVE_INTENT_WALK) - volume -= 4 - if(!shoes) - volume -= 4 - - if(!has_organ("l_foot") && !has_organ("r_foot")) - return 0 //no feet no footsteps - - if(buckled || lying || throwing) - return 0 //people flying, lying down or sitting do not step - - if(!has_gravity(src)) - if(step_count % 3) //this basically says, every three moves make a noise - return 0 //1st - none, 1%3==1, 2nd - none, 2%3==2, 3rd - noise, 3%3==0 - - if(dna.species.silent_steps) - return 0 //species is silent - - playsound(T, S, volume, 1, range) - return 1 - - return 0 diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index 9c05d98b452..a11a7189e54 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -17,7 +17,6 @@ var/tail // Name of tail image in species effects icon file. var/datum/unarmed_attack/unarmed //For empty hand harm-intent attack var/unarmed_type = /datum/unarmed_attack - var/silent_steps = 0 // Stops step noises var/cold_level_1 = 260 // Cold damage level 1 below this point. var/cold_level_2 = 200 // Cold damage level 2 below this point. @@ -62,6 +61,9 @@ var/ventcrawler = VENTCRAWLER_NONE //Determines if the mob can go through the vents. var/has_fine_manipulation = 1 // Can use small items. + ///Sounds to override barefeet walking + var/list/special_step_sounds + var/list/allowed_consumed_mobs = list() //If a species can consume mobs, put the type of mobs it can consume here. var/list/species_traits = list() diff --git a/code/modules/mob/living/carbon/human/species/shadowling.dm b/code/modules/mob/living/carbon/human/species/shadowling.dm index 61023134876..2c6309dfbcb 100644 --- a/code/modules/mob/living/carbon/human/species/shadowling.dm +++ b/code/modules/mob/living/carbon/human/species/shadowling.dm @@ -13,7 +13,6 @@ burn_mod = 1.5 //1.5x burn damage, 2x is excessive heatmod = 1.5 - silent_steps = 1 grant_vision_toggle = 0 has_organ = list( diff --git a/code/modules/mob/living/carbon/human/species/vox.dm b/code/modules/mob/living/carbon/human/species/vox.dm index 8ee3fa88567..1d646237c19 100644 --- a/code/modules/mob/living/carbon/human/species/vox.dm +++ b/code/modules/mob/living/carbon/human/species/vox.dm @@ -28,8 +28,6 @@ dietflags = DIET_OMNI bodyflags = HAS_ICON_SKIN_TONE | HAS_TAIL | TAIL_WAGGING | TAIL_OVERLAPPED | HAS_BODY_MARKINGS | HAS_TAIL_MARKINGS - silent_steps = TRUE - blood_color = "#2299FC" flesh_color = "#808D11" //Default styles for created mobs. diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 2ec0dae0522..4b18027d220 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -554,7 +554,6 @@ var/turf/T = loc . = ..() if(.) - handle_footstep(loc) step_count++ if(pulling && pulling == pullee) // we were pulling a thing and didn't lose it during our move. @@ -578,12 +577,6 @@ if(s_active && !(s_active in contents) && get_turf(s_active) != get_turf(src)) //check !( s_active in contents ) first so we hopefully don't have to call get_turf() so much. s_active.close(src) - -/mob/living/proc/handle_footstep(turf/T) - if(istype(T)) - return 1 - return 0 - /mob/living/proc/makeTrail(turf/T) if(!has_gravity(src)) return diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 7f832b4e089..75b120c888d 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -27,6 +27,7 @@ var/turns_since_scan = 0 var/mob/living/simple_animal/mouse/movement_target var/eats_mice = 1 + footstep_type = FOOTSTEP_MOB_CLAW //RUNTIME IS ALIVE! SQUEEEEEEEE~ /mob/living/simple_animal/pet/cat/Runtime diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 578b3ac7e75..76cec5d53f6 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -20,6 +20,7 @@ var/bark_sound = list('sound/creatures/dog_bark1.ogg','sound/creatures/dog_bark2.ogg') //Used in emote. var/yelp_sound = 'sound/creatures/dog_yelp.ogg' //Used on death. var/last_eaten = 0 + footstep_type = FOOTSTEP_MOB_CLAW /mob/living/simple_animal/pet/dog/verb/chasetail() set name = "Chase your tail" diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index b958c6a74d2..aa7dc216ffc 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -29,6 +29,7 @@ can_collar = 1 blood_volume = BLOOD_VOLUME_NORMAL var/obj/item/udder/udder = null + footstep_type = FOOTSTEP_MOB_SHOE /mob/living/simple_animal/hostile/retaliate/goat/New() udder = new() @@ -134,6 +135,7 @@ var/obj/item/udder/udder = null gender = FEMALE mob_biotypes = MOB_ORGANIC | MOB_BEAST + footstep_type = FOOTSTEP_MOB_SHOE /mob/living/simple_animal/cow/Initialize() udder = new() @@ -202,6 +204,7 @@ can_hide = 1 can_collar = 1 gold_core_spawnable = FRIENDLY_SPAWN + footstep_type = FOOTSTEP_MOB_CLAW /mob/living/simple_animal/chick/New() ..() @@ -258,6 +261,7 @@ GLOBAL_VAR_INIT(chicken_count, 0) var/list/layMessage = EGG_LAYING_MESSAGES var/list/validColors = list("brown","black","white") gold_core_spawnable = FRIENDLY_SPAWN + footstep_type = FOOTSTEP_MOB_CLAW /mob/living/simple_animal/chicken/New() ..() @@ -340,6 +344,7 @@ GLOBAL_VAR_INIT(chicken_count, 0) mob_biotypes = MOB_ORGANIC | MOB_BEAST gold_core_spawnable = FRIENDLY_SPAWN blood_volume = BLOOD_VOLUME_NORMAL + footstep_type = FOOTSTEP_MOB_SHOE /mob/living/simple_animal/turkey name = "turkey" @@ -364,6 +369,7 @@ GLOBAL_VAR_INIT(chicken_count, 0) can_collar = 1 mob_biotypes = MOB_ORGANIC | MOB_BEAST gold_core_spawnable = FRIENDLY_SPAWN + footstep_type = FOOTSTEP_MOB_CLAW /mob/living/simple_animal/goose name = "goose" @@ -388,6 +394,7 @@ GLOBAL_VAR_INIT(chicken_count, 0) can_collar = 1 mob_biotypes = MOB_ORGANIC | MOB_BEAST gold_core_spawnable = FRIENDLY_SPAWN + footstep_type = FOOTSTEP_MOB_CLAW /mob/living/simple_animal/seal name = "seal" diff --git a/code/modules/mob/living/simple_animal/friendly/penguin.dm b/code/modules/mob/living/simple_animal/friendly/penguin.dm index 08321b1bb5a..1f554d3552f 100644 --- a/code/modules/mob/living/simple_animal/friendly/penguin.dm +++ b/code/modules/mob/living/simple_animal/friendly/penguin.dm @@ -15,6 +15,7 @@ speak_chance = 1 turns_per_move = 10 icon = 'icons/mob/penguins.dmi' + footstep_type = FOOTSTEP_MOB_BAREFOOT /mob/living/simple_animal/pet/penguin/Initialize(mapload) . = ..() diff --git a/code/modules/mob/living/simple_animal/friendly/sloth.dm b/code/modules/mob/living/simple_animal/friendly/sloth.dm index d5b47c189ff..5a77ecbdc52 100644 --- a/code/modules/mob/living/simple_animal/friendly/sloth.dm +++ b/code/modules/mob/living/simple_animal/friendly/sloth.dm @@ -22,6 +22,7 @@ health = 50 maxHealth = 50 speed = 2 + footstep_type = FOOTSTEP_MOB_CLAW //Cargo Sloth diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 7c7b4dd6a2f..d64ce95bcd1 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -34,7 +34,7 @@ gold_core_spawnable = HOSTILE_SPAWN death_sound = 'sound/voice/hiss6.ogg' deathmessage = "lets out a waning guttural screech, green blood bubbling from its maw..." - + footstep_type = FOOTSTEP_MOB_CLAW /mob/living/simple_animal/hostile/alien/drone name = "alien drone" diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index e154b1b2cfd..516efa6e428 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -34,6 +34,7 @@ faction = list("russian") gold_core_spawnable = HOSTILE_SPAWN + footstep_type = FOOTSTEP_MOB_CLAW //SPACE BEARS! SQUEEEEEEEE~ OW! FUCK! IT BIT MY HAND OFF!! /mob/living/simple_animal/hostile/bear/Hudson diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index 5ccee07395e..218826a95e1 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -28,6 +28,7 @@ faction = list("faithless") gold_core_spawnable = HOSTILE_SPAWN + footstep_type = FOOTSTEP_MOB_SHOE /mob/living/simple_animal/hostile/faithless/Process_Spacemove(var/movement_dir = 0) return 1 diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 38b37a2a4b3..6f110d0bb13 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -19,6 +19,7 @@ turns_per_move = 5 see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE + footstep_type = FOOTSTEP_MOB_CLAW butcher_results = list(/obj/item/reagent_containers/food/snacks/monstermeat/spidermeat= 2, /obj/item/reagent_containers/food/snacks/monstermeat/spiderleg= 8) response_help = "pets" response_disarm = "gently pushes aside" diff --git a/code/modules/mob/living/simple_animal/hostile/hellhound.dm b/code/modules/mob/living/simple_animal/hostile/hellhound.dm index d99d42e610a..d22ca2e708f 100644 --- a/code/modules/mob/living/simple_animal/hostile/hellhound.dm +++ b/code/modules/mob/living/simple_animal/hostile/hellhound.dm @@ -34,6 +34,7 @@ var/smoke_lastuse = 0 var/smoke_freq = 300 // 30 seconds var/datum/action/innate/demon/whisper/whisper_action + footstep_type = FOOTSTEP_MOB_CLAW /mob/living/simple_animal/hostile/hellhound/New() . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index 75ca73eb2d5..7359d11384f 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -28,6 +28,7 @@ deathmessage = "blows apart!" bubble_icon = "machine" del_on_death = 1 + footstep_type = FOOTSTEP_MOB_CLAW /mob/living/simple_animal/hostile/hivebot/range name = "Hivebot" diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm index fb3049cf4d8..586a3224d8b 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm @@ -54,6 +54,7 @@ Difficulty: Medium var/transform_stop_attack = FALSE // stops the blood drunk miner from attacking after transforming his weapon until the next attack chain deathmessage = "falls to the ground, decaying into glowing particles." death_sound = "bodyfall" + footstep_type = FOOTSTEP_MOB_HEAVY attack_action_types = list(/datum/action/innate/megafauna_attack/dash, /datum/action/innate/megafauna_attack/kinetic_accelerator, /datum/action/innate/megafauna_attack/transform_weapon) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm index 14d2e933605..94a4acdeaca 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm @@ -60,6 +60,7 @@ Difficulty: Medium score_type = DRAKE_SCORE deathmessage = "collapses into a pile of bones, its flesh sloughing away." death_sound = 'sound/misc/demon_dies.ogg' + footstep_type = FOOTSTEP_MOB_HEAVY attack_action_types = list(/datum/action/innate/megafauna_attack/fire_cone, /datum/action/innate/megafauna_attack/fire_cone_meteors, /datum/action/innate/megafauna_attack/mass_fire, diff --git a/code/modules/mob/living/simple_animal/hostile/mining/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining/goliath.dm index ecf45181bdf..9169388ddbc 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/goliath.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/goliath.dm @@ -34,6 +34,7 @@ var/pre_attack = FALSE var/pre_attack_icon = "Goliath_preattack" loot = list(/obj/item/stack/sheet/animalhide/goliath_hide) + footstep_type = FOOTSTEP_MOB_HEAVY /mob/living/simple_animal/hostile/asteroid/goliath/Life() . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm index 66f475d4863..8f475f2251b 100644 --- a/code/modules/mob/living/simple_animal/hostile/pirate.dm +++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm @@ -30,6 +30,7 @@ del_on_death = 1 faction = list("pirate") sentience_type = SENTIENCE_OTHER + footstep_type = FOOTSTEP_MOB_SHOE /mob/living/simple_animal/hostile/pirate/ranged name = "Pirate Gunner" diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm index d0dacaf5a88..da242abe834 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm @@ -31,7 +31,7 @@ heat_damage_per_tick = 15 //amount of damage applied if animal's body temperature is higher than maxbodytemp cold_damage_per_tick = 10 //same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp unsuitable_atmos_damage = 10 - + footstep_type = FOOTSTEP_MOB_SHOE /mob/living/simple_animal/hostile/retaliate/clown/goblin icon = 'icons/mob/animal.dmi' diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/kangaroo.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/kangaroo.dm index 00bced469ce..0d4a84f7532 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/kangaroo.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/kangaroo.dm @@ -23,6 +23,7 @@ speed = -1 // '-1' converts to 1.5 total move delay, or 6.6 tiles/sec movespeed var/attack_cycles = 0 var/attack_cycles_max = 3 + footstep_type = FOOTSTEP_MOB_SHOE /mob/living/simple_animal/hostile/retaliate/kangaroo/New() . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm index d1170289f45..93b536e3965 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm @@ -92,6 +92,7 @@ faction = list("undead") loot = list(/obj/effect/decal/remains/human) del_on_death = 1 + footstep_type = FOOTSTEP_MOB_SHOE /mob/living/simple_animal/hostile/retaliate/zombie name = "zombie" diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/russian.dm index 933a2700b8a..034b855d116 100644 --- a/code/modules/mob/living/simple_animal/hostile/russian.dm +++ b/code/modules/mob/living/simple_animal/hostile/russian.dm @@ -28,6 +28,7 @@ /obj/item/kitchen/knife) del_on_death = 1 sentience_type = SENTIENCE_OTHER + footstep_type = FOOTSTEP_MOB_SHOE /mob/living/simple_animal/hostile/russian/ranged icon_state = "russianranged" diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 4664cdedf16..9c7959d94da 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -28,6 +28,7 @@ loot = list(/obj/effect/mob_spawn/human/corpse/syndicatesoldier) del_on_death = 1 sentience_type = SENTIENCE_OTHER + footstep_type = FOOTSTEP_MOB_SHOE ///////////////Sword and shield//////////// diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm index 35627d8e9a8..303bf8151ef 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm @@ -160,7 +160,7 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) // DEBUG OPTIONS & COMMANDS var/spider_growinstantly = FALSE // DEBUG OPTION, DO NOT ENABLE THIS ON LIVE. IT IS USED TO TEST NEST GROWTH/SETUP AI. var/spider_debug = FALSE - + footstep_type = FOOTSTEP_MOB_CLAW // -------------------------------------------------------------------------------- // --------------------- TERROR SPIDERS: SHARED ATTACK CODE ----------------------- diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 77513e456ad..f117d03ccdb 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -104,6 +104,8 @@ var/tame = 0 var/my_z // I don't want to confuse this with client registered_z + ///What kind of footstep this mob should have. Null if it shouldn't have any. + var/footstep_type /mob/living/simple_animal/Initialize(mapload) . = ..() @@ -120,6 +122,8 @@ if(pcollar) pcollar = new(src) regenerate_icons() + if(footstep_type) + AddComponent(/datum/component/footstep, footstep_type) /mob/living/simple_animal/Destroy() QDEL_NULL(pcollar) diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 6c798f749a6..9941e59373b 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -32,6 +32,8 @@ // for the sake of cleanliness, though, here they are. status_flags = CANPARALYSE | CANPUSH + footstep_type = FOOTSTEP_MOB_SLIME + var/cores = 1 // the number of /obj/item/slime_extract's the slime has left inside var/mutation_chance = 30 // Chance of mutating, should be between 25 and 35 diff --git a/paradise.dme b/paradise.dme index 90540ba5b49..362e7c2a6ce 100644 --- a/paradise.dme +++ b/paradise.dme @@ -40,6 +40,7 @@ #include "code\__DEFINES\dna.dm" #include "code\__DEFINES\error_handler.dm" #include "code\__DEFINES\flags.dm" +#include "code\__DEFINES\footstep.dm" #include "code\__DEFINES\game.dm" #include "code\__DEFINES\gamemode.dm" #include "code\__DEFINES\genetics.dm" @@ -293,6 +294,7 @@ #include "code\datums\components\decal.dm" #include "code\datums\components\ducttape.dm" #include "code\datums\components\edit_complainer.dm" +#include "code\datums\components\footstep.dm" #include "code\datums\components\label.dm" #include "code\datums\components\material_container.dm" #include "code\datums\components\paintable.dm" diff --git a/sound/effects/footstep/asteroid1.ogg b/sound/effects/footstep/asteroid1.ogg new file mode 100644 index 00000000000..1cb215dc782 Binary files /dev/null and b/sound/effects/footstep/asteroid1.ogg differ diff --git a/sound/effects/footstep/asteroid2.ogg b/sound/effects/footstep/asteroid2.ogg new file mode 100644 index 00000000000..331d0ef2417 Binary files /dev/null and b/sound/effects/footstep/asteroid2.ogg differ diff --git a/sound/effects/footstep/asteroid3.ogg b/sound/effects/footstep/asteroid3.ogg new file mode 100644 index 00000000000..90fbf251a0e Binary files /dev/null and b/sound/effects/footstep/asteroid3.ogg differ diff --git a/sound/effects/footstep/asteroid4.ogg b/sound/effects/footstep/asteroid4.ogg new file mode 100644 index 00000000000..186ff17a439 Binary files /dev/null and b/sound/effects/footstep/asteroid4.ogg differ diff --git a/sound/effects/footstep/asteroid5.ogg b/sound/effects/footstep/asteroid5.ogg new file mode 100644 index 00000000000..0ea4c962d0d Binary files /dev/null and b/sound/effects/footstep/asteroid5.ogg differ diff --git a/sound/effects/footstep/carpet1.ogg b/sound/effects/footstep/carpet1.ogg new file mode 100644 index 00000000000..2735a9bf3dc Binary files /dev/null and b/sound/effects/footstep/carpet1.ogg differ diff --git a/sound/effects/footstep/carpet2.ogg b/sound/effects/footstep/carpet2.ogg new file mode 100644 index 00000000000..07e5f2320aa Binary files /dev/null and b/sound/effects/footstep/carpet2.ogg differ diff --git a/sound/effects/footstep/carpet3.ogg b/sound/effects/footstep/carpet3.ogg new file mode 100644 index 00000000000..edb0193f6e2 Binary files /dev/null and b/sound/effects/footstep/carpet3.ogg differ diff --git a/sound/effects/footstep/carpet4.ogg b/sound/effects/footstep/carpet4.ogg new file mode 100644 index 00000000000..c9598e2b736 Binary files /dev/null and b/sound/effects/footstep/carpet4.ogg differ diff --git a/sound/effects/footstep/carpet5.ogg b/sound/effects/footstep/carpet5.ogg new file mode 100644 index 00000000000..076818323ae Binary files /dev/null and b/sound/effects/footstep/carpet5.ogg differ diff --git a/sound/effects/footstep/carpet_human.ogg b/sound/effects/footstep/carpet_human.ogg deleted file mode 100644 index 8e7d16e6810..00000000000 Binary files a/sound/effects/footstep/carpet_human.ogg and /dev/null differ diff --git a/sound/effects/footstep/carpet_xeno.ogg b/sound/effects/footstep/carpet_xeno.ogg deleted file mode 100644 index 86569b3f28b..00000000000 Binary files a/sound/effects/footstep/carpet_xeno.ogg and /dev/null differ diff --git a/sound/effects/footstep/carpetbarefoot1.ogg b/sound/effects/footstep/carpetbarefoot1.ogg new file mode 100644 index 00000000000..81615d29705 Binary files /dev/null and b/sound/effects/footstep/carpetbarefoot1.ogg differ diff --git a/sound/effects/footstep/carpetbarefoot2.ogg b/sound/effects/footstep/carpetbarefoot2.ogg new file mode 100644 index 00000000000..d1c7e1627ec Binary files /dev/null and b/sound/effects/footstep/carpetbarefoot2.ogg differ diff --git a/sound/effects/footstep/carpetbarefoot3.ogg b/sound/effects/footstep/carpetbarefoot3.ogg new file mode 100644 index 00000000000..13ecb3398b1 Binary files /dev/null and b/sound/effects/footstep/carpetbarefoot3.ogg differ diff --git a/sound/effects/footstep/carpetbarefoot4.ogg b/sound/effects/footstep/carpetbarefoot4.ogg new file mode 100644 index 00000000000..31850250bec Binary files /dev/null and b/sound/effects/footstep/carpetbarefoot4.ogg differ diff --git a/sound/effects/footstep/carpetbarefoot5.ogg b/sound/effects/footstep/carpetbarefoot5.ogg new file mode 100644 index 00000000000..e9a44765b18 Binary files /dev/null and b/sound/effects/footstep/carpetbarefoot5.ogg differ diff --git a/sound/effects/footstep/catwalk1.ogg b/sound/effects/footstep/catwalk1.ogg new file mode 100644 index 00000000000..5d6ad7b4a00 Binary files /dev/null and b/sound/effects/footstep/catwalk1.ogg differ diff --git a/sound/effects/footstep/catwalk2.ogg b/sound/effects/footstep/catwalk2.ogg new file mode 100644 index 00000000000..07a624dbe49 Binary files /dev/null and b/sound/effects/footstep/catwalk2.ogg differ diff --git a/sound/effects/footstep/catwalk3.ogg b/sound/effects/footstep/catwalk3.ogg new file mode 100644 index 00000000000..acff22e3864 Binary files /dev/null and b/sound/effects/footstep/catwalk3.ogg differ diff --git a/sound/effects/footstep/catwalk4.ogg b/sound/effects/footstep/catwalk4.ogg new file mode 100644 index 00000000000..7235a6b9feb Binary files /dev/null and b/sound/effects/footstep/catwalk4.ogg differ diff --git a/sound/effects/footstep/catwalk5.ogg b/sound/effects/footstep/catwalk5.ogg new file mode 100644 index 00000000000..c33f248acd6 Binary files /dev/null and b/sound/effects/footstep/catwalk5.ogg differ diff --git a/sound/effects/footstep/crawl1.ogg b/sound/effects/footstep/crawl1.ogg new file mode 100644 index 00000000000..61a73a58d0c Binary files /dev/null and b/sound/effects/footstep/crawl1.ogg differ diff --git a/sound/effects/footstep/floor1.ogg b/sound/effects/footstep/floor1.ogg new file mode 100644 index 00000000000..1e3e1558399 Binary files /dev/null and b/sound/effects/footstep/floor1.ogg differ diff --git a/sound/effects/footstep/floor2.ogg b/sound/effects/footstep/floor2.ogg new file mode 100644 index 00000000000..cce5a25d829 Binary files /dev/null and b/sound/effects/footstep/floor2.ogg differ diff --git a/sound/effects/footstep/floor3.ogg b/sound/effects/footstep/floor3.ogg new file mode 100644 index 00000000000..16ab67f729c Binary files /dev/null and b/sound/effects/footstep/floor3.ogg differ diff --git a/sound/effects/footstep/floor4.ogg b/sound/effects/footstep/floor4.ogg new file mode 100644 index 00000000000..9ef15430ff8 Binary files /dev/null and b/sound/effects/footstep/floor4.ogg differ diff --git a/sound/effects/footstep/floor5.ogg b/sound/effects/footstep/floor5.ogg new file mode 100644 index 00000000000..0f6a66057de Binary files /dev/null and b/sound/effects/footstep/floor5.ogg differ diff --git a/sound/effects/footstep/grass1.ogg b/sound/effects/footstep/grass1.ogg new file mode 100644 index 00000000000..357547cd77a Binary files /dev/null and b/sound/effects/footstep/grass1.ogg differ diff --git a/sound/effects/footstep/grass2.ogg b/sound/effects/footstep/grass2.ogg new file mode 100644 index 00000000000..75bf8657e8d Binary files /dev/null and b/sound/effects/footstep/grass2.ogg differ diff --git a/sound/effects/footstep/grass3.ogg b/sound/effects/footstep/grass3.ogg new file mode 100644 index 00000000000..04f82872b1d Binary files /dev/null and b/sound/effects/footstep/grass3.ogg differ diff --git a/sound/effects/footstep/grass4.ogg b/sound/effects/footstep/grass4.ogg new file mode 100644 index 00000000000..6d736f2fb2d Binary files /dev/null and b/sound/effects/footstep/grass4.ogg differ diff --git a/sound/effects/footstep/hardbarefoot1.ogg b/sound/effects/footstep/hardbarefoot1.ogg new file mode 100644 index 00000000000..26148721917 Binary files /dev/null and b/sound/effects/footstep/hardbarefoot1.ogg differ diff --git a/sound/effects/footstep/hardbarefoot2.ogg b/sound/effects/footstep/hardbarefoot2.ogg new file mode 100644 index 00000000000..7d89d96105b Binary files /dev/null and b/sound/effects/footstep/hardbarefoot2.ogg differ diff --git a/sound/effects/footstep/hardbarefoot3.ogg b/sound/effects/footstep/hardbarefoot3.ogg new file mode 100644 index 00000000000..639751fab0f Binary files /dev/null and b/sound/effects/footstep/hardbarefoot3.ogg differ diff --git a/sound/effects/footstep/hardbarefoot4.ogg b/sound/effects/footstep/hardbarefoot4.ogg new file mode 100644 index 00000000000..9cf363a18ca Binary files /dev/null and b/sound/effects/footstep/hardbarefoot4.ogg differ diff --git a/sound/effects/footstep/hardbarefoot5.ogg b/sound/effects/footstep/hardbarefoot5.ogg new file mode 100644 index 00000000000..72ebeca84d3 Binary files /dev/null and b/sound/effects/footstep/hardbarefoot5.ogg differ diff --git a/sound/effects/footstep/hardclaw1.ogg b/sound/effects/footstep/hardclaw1.ogg new file mode 100644 index 00000000000..1d66eb4d499 Binary files /dev/null and b/sound/effects/footstep/hardclaw1.ogg differ diff --git a/sound/effects/footstep/hardclaw2.ogg b/sound/effects/footstep/hardclaw2.ogg new file mode 100644 index 00000000000..a6a7951d778 Binary files /dev/null and b/sound/effects/footstep/hardclaw2.ogg differ diff --git a/sound/effects/footstep/hardclaw3.ogg b/sound/effects/footstep/hardclaw3.ogg new file mode 100644 index 00000000000..a2e5462199d Binary files /dev/null and b/sound/effects/footstep/hardclaw3.ogg differ diff --git a/sound/effects/footstep/hardclaw4.ogg b/sound/effects/footstep/hardclaw4.ogg new file mode 100644 index 00000000000..bd845a8782a Binary files /dev/null and b/sound/effects/footstep/hardclaw4.ogg differ diff --git a/sound/effects/footstep/heavy1.ogg b/sound/effects/footstep/heavy1.ogg new file mode 100644 index 00000000000..bfc80a42702 Binary files /dev/null and b/sound/effects/footstep/heavy1.ogg differ diff --git a/sound/effects/footstep/heavy2.ogg b/sound/effects/footstep/heavy2.ogg new file mode 100644 index 00000000000..514e3ac3e24 Binary files /dev/null and b/sound/effects/footstep/heavy2.ogg differ diff --git a/sound/effects/footstep/lava1.ogg b/sound/effects/footstep/lava1.ogg new file mode 100644 index 00000000000..e26dbaf8bda Binary files /dev/null and b/sound/effects/footstep/lava1.ogg differ diff --git a/sound/effects/footstep/lava2.ogg b/sound/effects/footstep/lava2.ogg new file mode 100644 index 00000000000..90b73f840b2 Binary files /dev/null and b/sound/effects/footstep/lava2.ogg differ diff --git a/sound/effects/footstep/lava3.ogg b/sound/effects/footstep/lava3.ogg new file mode 100644 index 00000000000..34363815106 Binary files /dev/null and b/sound/effects/footstep/lava3.ogg differ diff --git a/sound/effects/footstep/plating1.ogg b/sound/effects/footstep/plating1.ogg new file mode 100644 index 00000000000..0df770e6638 Binary files /dev/null and b/sound/effects/footstep/plating1.ogg differ diff --git a/sound/effects/footstep/plating2.ogg b/sound/effects/footstep/plating2.ogg new file mode 100644 index 00000000000..314b9133d25 Binary files /dev/null and b/sound/effects/footstep/plating2.ogg differ diff --git a/sound/effects/footstep/plating3.ogg b/sound/effects/footstep/plating3.ogg new file mode 100644 index 00000000000..5c571d77eb6 Binary files /dev/null and b/sound/effects/footstep/plating3.ogg differ diff --git a/sound/effects/footstep/plating4.ogg b/sound/effects/footstep/plating4.ogg new file mode 100644 index 00000000000..5953262764b Binary files /dev/null and b/sound/effects/footstep/plating4.ogg differ diff --git a/sound/effects/footstep/plating5.ogg b/sound/effects/footstep/plating5.ogg new file mode 100644 index 00000000000..4676a637a6d Binary files /dev/null and b/sound/effects/footstep/plating5.ogg differ diff --git a/sound/effects/footstep/plating_human.ogg b/sound/effects/footstep/plating_human.ogg deleted file mode 100644 index 72c04e7fe41..00000000000 Binary files a/sound/effects/footstep/plating_human.ogg and /dev/null differ diff --git a/sound/effects/footstep/plating_xeno.ogg b/sound/effects/footstep/plating_xeno.ogg deleted file mode 100644 index f38a1eb5c3f..00000000000 Binary files a/sound/effects/footstep/plating_xeno.ogg and /dev/null differ diff --git a/sound/effects/footstep/rustystep1.ogg b/sound/effects/footstep/rustystep1.ogg new file mode 100644 index 00000000000..bf90d52779c Binary files /dev/null and b/sound/effects/footstep/rustystep1.ogg differ diff --git a/sound/effects/footstep/slime1.ogg b/sound/effects/footstep/slime1.ogg new file mode 100644 index 00000000000..a83b7646f1f Binary files /dev/null and b/sound/effects/footstep/slime1.ogg differ diff --git a/sound/effects/footstep/water1.ogg b/sound/effects/footstep/water1.ogg new file mode 100644 index 00000000000..f22cbf28482 Binary files /dev/null and b/sound/effects/footstep/water1.ogg differ diff --git a/sound/effects/footstep/water2.ogg b/sound/effects/footstep/water2.ogg new file mode 100644 index 00000000000..e2a47650c63 Binary files /dev/null and b/sound/effects/footstep/water2.ogg differ diff --git a/sound/effects/footstep/water3.ogg b/sound/effects/footstep/water3.ogg new file mode 100644 index 00000000000..97ce152a5ce Binary files /dev/null and b/sound/effects/footstep/water3.ogg differ diff --git a/sound/effects/footstep/water4.ogg b/sound/effects/footstep/water4.ogg new file mode 100644 index 00000000000..5778a52560d Binary files /dev/null and b/sound/effects/footstep/water4.ogg differ diff --git a/sound/effects/footstep/wood1.ogg b/sound/effects/footstep/wood1.ogg new file mode 100644 index 00000000000..c76fc423fc2 Binary files /dev/null and b/sound/effects/footstep/wood1.ogg differ diff --git a/sound/effects/footstep/wood2.ogg b/sound/effects/footstep/wood2.ogg new file mode 100644 index 00000000000..71dc1aa9679 Binary files /dev/null and b/sound/effects/footstep/wood2.ogg differ diff --git a/sound/effects/footstep/wood3.ogg b/sound/effects/footstep/wood3.ogg new file mode 100644 index 00000000000..bf86889006e Binary files /dev/null and b/sound/effects/footstep/wood3.ogg differ diff --git a/sound/effects/footstep/wood4.ogg b/sound/effects/footstep/wood4.ogg new file mode 100644 index 00000000000..44734425ce6 Binary files /dev/null and b/sound/effects/footstep/wood4.ogg differ diff --git a/sound/effects/footstep/wood5.ogg b/sound/effects/footstep/wood5.ogg new file mode 100644 index 00000000000..5ad4fa81e77 Binary files /dev/null and b/sound/effects/footstep/wood5.ogg differ diff --git a/sound/effects/footstep/wood_all.ogg b/sound/effects/footstep/wood_all.ogg deleted file mode 100644 index 72628a8eaea..00000000000 Binary files a/sound/effects/footstep/wood_all.ogg and /dev/null differ diff --git a/sound/effects/footstep/woodbarefoot1.ogg b/sound/effects/footstep/woodbarefoot1.ogg new file mode 100644 index 00000000000..bb66da770e3 Binary files /dev/null and b/sound/effects/footstep/woodbarefoot1.ogg differ diff --git a/sound/effects/footstep/woodbarefoot2.ogg b/sound/effects/footstep/woodbarefoot2.ogg new file mode 100644 index 00000000000..67397d868ee Binary files /dev/null and b/sound/effects/footstep/woodbarefoot2.ogg differ diff --git a/sound/effects/footstep/woodbarefoot3.ogg b/sound/effects/footstep/woodbarefoot3.ogg new file mode 100644 index 00000000000..113a89003a6 Binary files /dev/null and b/sound/effects/footstep/woodbarefoot3.ogg differ diff --git a/sound/effects/footstep/woodbarefoot4.ogg b/sound/effects/footstep/woodbarefoot4.ogg new file mode 100644 index 00000000000..ccc2e82075b Binary files /dev/null and b/sound/effects/footstep/woodbarefoot4.ogg differ diff --git a/sound/effects/footstep/woodbarefoot5.ogg b/sound/effects/footstep/woodbarefoot5.ogg new file mode 100644 index 00000000000..6fbce27109e Binary files /dev/null and b/sound/effects/footstep/woodbarefoot5.ogg differ diff --git a/sound/effects/footstep/woodclaw1.ogg b/sound/effects/footstep/woodclaw1.ogg new file mode 100644 index 00000000000..181403b93f4 Binary files /dev/null and b/sound/effects/footstep/woodclaw1.ogg differ diff --git a/sound/effects/footstep/woodclaw2.ogg b/sound/effects/footstep/woodclaw2.ogg new file mode 100644 index 00000000000..29b04a95541 Binary files /dev/null and b/sound/effects/footstep/woodclaw2.ogg differ diff --git a/sound/effects/footstep/woodclaw3.ogg b/sound/effects/footstep/woodclaw3.ogg new file mode 100644 index 00000000000..9f4ac6d3340 Binary files /dev/null and b/sound/effects/footstep/woodclaw3.ogg differ diff --git a/sound/effects/jackboot1.ogg b/sound/effects/jackboot1.ogg deleted file mode 100644 index fdc56bb9e47..00000000000 Binary files a/sound/effects/jackboot1.ogg and /dev/null differ diff --git a/sound/effects/jackboot2.ogg b/sound/effects/jackboot2.ogg deleted file mode 100644 index 17a528feebf..00000000000 Binary files a/sound/effects/jackboot2.ogg and /dev/null differ diff --git a/sound/effects/meatslap.ogg b/sound/effects/meatslap.ogg new file mode 100644 index 00000000000..3d8ea7df1ac Binary files /dev/null and b/sound/effects/meatslap.ogg differ diff --git a/sound/effects/tank_treads.ogg b/sound/effects/tank_treads.ogg new file mode 100644 index 00000000000..be4e0ff273b Binary files /dev/null and b/sound/effects/tank_treads.ogg differ