diff --git a/code/_macros.dm b/code/_macros.dm index 13afdb27b8..e6c6e10636 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -62,6 +62,11 @@ #define to_file(file_entry, source_var) file_entry << source_var #define from_file(file_entry, target_var) file_entry >> target_var +// From TG, might be useful to have. +// Didn't port SEND_TEXT() since to_chat() appears to serve the same purpose. +#define DIRECT_OUTPUT(A, B) A << B +#define SEND_IMAGE(target, image) DIRECT_OUTPUT(target, image) +#define SEND_SOUND(target, sound) DIRECT_OUTPUT(target, sound) #define CanInteract(user, state) (CanUseTopic(user, state) == STATUS_INTERACTIVE) diff --git a/code/datums/callback.dm b/code/datums/callback.dm index a92a715ece..74d5719ce2 100644 --- a/code/datums/callback.dm +++ b/code/datums/callback.dm @@ -166,7 +166,7 @@ // Use sparingly /world/proc/PushUsr(mob/M, datum/callback/CB) var/temp = usr - testing("PushUsr() in use") +// testing("PushUsr() in use") usr = M . = CB.Invoke() usr = temp diff --git a/code/datums/looping_sounds/item_sounds.dm b/code/datums/looping_sounds/item_sounds.dm new file mode 100644 index 0000000000..2cdc54adf4 --- /dev/null +++ b/code/datums/looping_sounds/item_sounds.dm @@ -0,0 +1,37 @@ +#define RAD_GEIGER_LOW 0.1 // Geiger counter sound thresholds +#define RAD_GEIGER_MEDIUM 10 +#define RAD_GEIGER_HIGH 25 + +/datum/looping_sound/geiger + mid_sounds = list( + list('sound/items/geiger/new/low1.ogg'=1, 'sound/items/geiger/new/low2.ogg'=1, 'sound/items/geiger/new/low3.ogg'=1, 'sound/items/geiger/new/low4.ogg'=1), + list('sound/items/geiger/new/med1.ogg'=1, 'sound/items/geiger/new/med2.ogg'=1, 'sound/items/geiger/new/med3.ogg'=1, 'sound/items/geiger/new/med4.ogg'=1), + list('sound/items/geiger/new/high1.ogg'=1, 'sound/items/geiger/new/high2.ogg'=1, 'sound/items/geiger/new/high3.ogg'=1, 'sound/items/geiger/new/high4.ogg'=1), + list('sound/items/geiger/new/ext1.ogg'=1, 'sound/items/geiger/new/ext2.ogg'=1, 'sound/items/geiger/new/ext3.ogg'=1, 'sound/items/geiger/new/ext4.ogg'=1) + ) + mid_length = 1 SECOND + volume = 25 + var/last_radiation + +/datum/looping_sound/geiger/get_sound(starttime) + var/danger + switch(last_radiation) + if(0 to RAD_GEIGER_LOW) + danger = 1 + if(RAD_GEIGER_LOW to RAD_GEIGER_MEDIUM) + danger = 2 + if(RAD_GEIGER_MEDIUM to RAD_GEIGER_HIGH) + danger = 3 + if(RAD_GEIGER_HIGH to INFINITY) + danger = 4 + else + return null + return ..(starttime, mid_sounds[danger]) + +/datum/looping_sound/geiger/stop() + . = ..() + last_radiation = 0 + +#undef RAD_GEIGER_LOW +#undef RAD_GEIGER_MEDIUM +#undef RAD_GEIGER_HIGH \ No newline at end of file diff --git a/code/datums/looping_sounds/looping_sound.dm b/code/datums/looping_sounds/looping_sound.dm new file mode 100644 index 0000000000..9c8c3fc8b4 --- /dev/null +++ b/code/datums/looping_sounds/looping_sound.dm @@ -0,0 +1,105 @@ +/* + output_atoms (list of atoms) The destination(s) for the sounds + + mid_sounds (list or soundfile) Since this can be either a list or a single soundfile you can have random sounds. May contain further lists but must contain a soundfile at the end. + mid_length (num) The length to wait between playing mid_sounds + + start_sound (soundfile) Played before starting the mid_sounds loop + start_length (num) How long to wait before starting the main loop after playing start_sound + + end_sound (soundfile) The sound played after the main loop has concluded + + chance (num) Chance per loop to play a mid_sound + volume (num) Sound output volume + muted (bool) Private. Used to stop the sound loop. + max_loops (num) The max amount of loops to run for. + direct (bool) If true plays directly to provided atoms instead of from them + opacity_check (bool) If true, things behind walls/opaque things won't hear the sounds. +*/ +/datum/looping_sound + var/list/atom/output_atoms + var/mid_sounds + var/mid_length + var/start_sound + var/start_length + var/end_sound + var/chance + var/volume = 100 + var/max_loops + var/direct + var/opacity_check + + var/timerid + +/datum/looping_sound/New(list/_output_atoms=list(), start_immediately=FALSE, _direct=FALSE) + if(!mid_sounds) + WARNING("A looping sound datum was created without sounds to play.") + return + + output_atoms = _output_atoms + direct = _direct + + if(start_immediately) + start() + +/datum/looping_sound/Destroy() + stop() + output_atoms = null + return ..() + +/datum/looping_sound/proc/start(atom/add_thing) + if(add_thing) + output_atoms |= add_thing + if(timerid) + return + on_start() + +/datum/looping_sound/proc/stop(atom/remove_thing) + if(remove_thing) + output_atoms -= remove_thing + if(!timerid) + return + on_stop() + deltimer(timerid) + timerid = null + +/datum/looping_sound/proc/sound_loop(starttime) + if(max_loops && world.time >= starttime + mid_length * max_loops) + stop() + return + if(!chance || prob(chance)) + play(get_sound(starttime)) + if(!timerid) + timerid = addtimer(CALLBACK(src, .proc/sound_loop, world.time), mid_length, TIMER_STOPPABLE | TIMER_LOOP) + +/datum/looping_sound/proc/play(soundfile) + var/list/atoms_cache = output_atoms + var/sound/S = sound(soundfile) + if(direct) + S.channel = open_sound_channel() + S.volume = volume + for(var/i in 1 to atoms_cache.len) + var/atom/thing = atoms_cache[i] + if(direct) + SEND_SOUND(thing, S) + else + playsound(thing, S, volume, ignore_walls = !opacity_check) + +/datum/looping_sound/proc/get_sound(starttime, _mid_sounds) + if(!_mid_sounds) + . = mid_sounds + else + . = _mid_sounds + while(!isfile(.) && !isnull(.)) + . = pickweight(.) + +/datum/looping_sound/proc/on_start() + var/start_wait = 0 + if(start_sound) + play(start_sound) + start_wait = start_length + addtimer(CALLBACK(src, .proc/sound_loop), start_wait) + +/datum/looping_sound/proc/on_stop() + if(end_sound) + play(end_sound) \ No newline at end of file diff --git a/code/datums/looping_sounds/machinery_sounds.dm b/code/datums/looping_sounds/machinery_sounds.dm new file mode 100644 index 0000000000..7129b305c9 --- /dev/null +++ b/code/datums/looping_sounds/machinery_sounds.dm @@ -0,0 +1,45 @@ +/datum/looping_sound/showering + start_sound = 'sound/machines/shower/shower_start.ogg' + start_length = 2 + mid_sounds = list('sound/machines/shower/shower_mid1.ogg'=1,'sound/machines/shower/shower_mid2.ogg'=1,'sound/machines/shower/shower_mid3.ogg'=1) + mid_length = 10 + end_sound = 'sound/machines/shower/shower_end.ogg' + volume = 20 + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/supermatter + mid_sounds = list('sound/machines/sm/supermatter1.ogg'=1,'sound/machines/sm/supermatter2.ogg'=1,'sound/machines/sm/supermatter3.ogg'=1) + mid_length = 10 + volume = 1 + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/generator + start_sound = 'sound/machines/generator/generator_start.ogg' + start_length = 4 + mid_sounds = list('sound/machines/generator/generator_mid1.ogg'=1, 'sound/machines/generator/generator_mid2.ogg'=1, 'sound/machines/generator/generator_mid3.ogg'=1) + mid_length = 4 + end_sound = 'sound/machines/generator/generator_end.ogg' + volume = 40 + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +/datum/looping_sound/deep_fryer + start_sound = 'sound/machines/fryer/deep_fryer_immerse.ogg' //my immersions + start_length = 10 + mid_sounds = list('sound/machines/fryer/deep_fryer_1.ogg' = 1, 'sound/machines/fryer/deep_fryer_2.ogg' = 1) + mid_length = 2 + end_sound = 'sound/machines/fryer/deep_fryer_emerge.ogg' + volume = 15 + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/microwave + start_sound = 'sound/machines/microwave/microwave-start.ogg' + start_length = 10 + mid_sounds = list('sound/machines/microwave/microwave-mid1.ogg'=10, 'sound/machines/microwave/microwave-mid2.ogg'=1) + mid_length = 10 + end_sound = 'sound/machines/microwave/microwave-end.ogg' + volume = 90 \ No newline at end of file diff --git a/code/game/objects/items/devices/geiger.dm b/code/game/objects/items/devices/geiger.dm index 9ab63afce7..2096b436dd 100644 --- a/code/game/objects/items/devices/geiger.dm +++ b/code/game/objects/items/devices/geiger.dm @@ -15,12 +15,16 @@ w_class = ITEMSIZE_SMALL var/scanning = 0 var/radiation_count = 0 + var/datum/looping_sound/generator/soundloop -/obj/item/device/geiger/New() +/obj/item/device/geiger/Initialize() START_PROCESSING(SSobj, src) + soundloop = new(list(src), FALSE) + return ..() /obj/item/device/geiger/Destroy() STOP_PROCESSING(SSobj, src) + QDEL_NULL(soundloop) return ..() /obj/item/device/geiger/process() @@ -44,15 +48,20 @@ if(amount > radiation_count) radiation_count = amount - var/sound = "geiger" - if(amount < 5) - sound = "geiger_weak" - playsound(src, sound, between(10, 10 + (radiation_count * 4), 100), 0) - if(sound == "geiger_weak") // A weak geiger sound every two seconds sounds too infrequent. - spawn(1 SECOND) - playsound(src, sound, between(10, 10 + (radiation_count * 4), 100), 0) + update_sound() update_icon() +/obj/item/device/geiger/proc/update_sound() + var/datum/looping_sound/geiger/loop = soundloop + if(!scanning) + loop.stop() + return + if(!radiation_count) + loop.stop() + return + loop.last_radiation = radiation_count + loop.start() + /obj/item/device/geiger/attack_self(var/mob/user) scanning = !scanning update_icon() diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index ff95dd44d8..464cf08f7d 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -131,10 +131,16 @@ var/watertemp = "normal" //freezing, normal, or boiling var/is_washing = 0 var/list/temperature_settings = list("normal" = 310, "boiling" = T0C+100, "freezing" = T0C) + var/datum/looping_sound/showering/soundloop -/obj/machinery/shower/New() - ..() +/obj/machinery/shower/Initialize() create_reagents(50) + soundloop = new(list(src), FALSE) + return ..() + +/obj/machinery/shower/Destroy() + QDEL_NULL(soundloop) + return ..() //add heat controls? when emagged, you can freeze to death in it? @@ -151,11 +157,14 @@ on = !on update_icon() if(on) + soundloop.start() if (M.loc == loc) wash(M) process_heat(M) for (var/atom/movable/G in src.loc) G.clean_blood() + else + soundloop.stop() /obj/machinery/shower/attackby(obj/item/I as obj, mob/user as mob) if(I.type == /obj/item/device/analyzer) diff --git a/code/game/sound.dm b/code/game/sound.dm index 0741b0338f..eb385c696d 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -128,8 +128,8 @@ if ("fracture") soundin = pick('sound/effects/bonebreak1.ogg','sound/effects/bonebreak2.ogg','sound/effects/bonebreak3.ogg','sound/effects/bonebreak4.ogg') if ("canopen") soundin = pick('sound/effects/can_open1.ogg','sound/effects/can_open2.ogg','sound/effects/can_open3.ogg','sound/effects/can_open4.ogg') if ("mechstep") soundin = pick('sound/mecha/mechstep1.ogg', 'sound/mecha/mechstep2.ogg') - if ("geiger") soundin = pick('sound/items/geiger1.ogg', 'sound/items/geiger2.ogg', 'sound/items/geiger3.ogg', 'sound/items/geiger4.ogg', 'sound/items/geiger5.ogg') - if ("geiger_weak") soundin = pick('sound/items/geiger_weak1.ogg', 'sound/items/geiger_weak2.ogg', 'sound/items/geiger_weak3.ogg', 'sound/items/geiger_weak4.ogg') + if ("geiger") soundin = pick('sound/items/geiger/old/geiger1.ogg', 'sound/items/geiger/old/geiger2.ogg', 'sound/items/geiger/old/geiger3.ogg', 'sound/items/geiger/old/geiger4.ogg', 'sound/items/geiger/old/geiger5.ogg') + if ("geiger_weak") soundin = pick('sound/items/geiger/old/geiger_weak1.ogg', 'sound/items/geiger/old/geiger_weak2.ogg', 'sound/items/geiger/old/geiger_weak3.ogg', 'sound/items/geiger/old/geiger_weak4.ogg') if ("thunder") soundin = pick('sound/effects/thunder/thunder1.ogg', 'sound/effects/thunder/thunder2.ogg', 'sound/effects/thunder/thunder3.ogg', 'sound/effects/thunder/thunder4.ogg', 'sound/effects/thunder/thunder5.ogg', 'sound/effects/thunder/thunder6.ogg', 'sound/effects/thunder/thunder7.ogg', 'sound/effects/thunder/thunder8.ogg', 'sound/effects/thunder/thunder9.ogg', 'sound/effects/thunder/thunder10.ogg') diff --git a/code/modules/food/kitchen/cooking_machines/_cooker.dm b/code/modules/food/kitchen/cooking_machines/_cooker.dm index 0ff53f4db7..a5215a747e 100644 --- a/code/modules/food/kitchen/cooking_machines/_cooker.dm +++ b/code/modules/food/kitchen/cooking_machines/_cooker.dm @@ -35,6 +35,10 @@ cooking_obj = null return ..() +/obj/machinery/cooker/proc/set_cooking(new_setting) + cooking = new_setting + icon_state = new_setting ? on_icon : off_icon + /obj/machinery/cooker/examine() ..() if(cooking_obj && Adjacent(usr)) @@ -113,7 +117,7 @@ user.visible_message("\The [user] puts \the [I] into \the [src].") cooking_obj = I cooking_obj.forceMove(src) - cooking = 1 + set_cooking(TRUE) icon_state = on_icon // Doop de doo. Jeopardy theme goes here. @@ -123,7 +127,7 @@ if(!cooking_obj || cooking_obj.loc != src) cooking_obj = null icon_state = off_icon - cooking = 0 + set_cooking(FALSE) return // RIP slow-moving held mobs. @@ -166,7 +170,7 @@ if(!can_burn_food) icon_state = off_icon - cooking = 0 + set_cooking(FALSE) result.forceMove(get_turf(src)) cooking_obj = null else @@ -192,7 +196,7 @@ failed = 1 if(failed) - cooking = 0 + set_cooking(FALSE) icon_state = off_icon break @@ -201,7 +205,7 @@ if(cooking_obj && user.Adjacent(src)) //Fixes borgs being able to teleport food in these machines to themselves. user << "You grab \the [cooking_obj] from \the [src]." user.put_in_hands(cooking_obj) - cooking = 0 + set_cooking(FALSE) cooking_obj = null icon_state = off_icon return diff --git a/code/modules/food/kitchen/cooking_machines/fryer.dm b/code/modules/food/kitchen/cooking_machines/fryer.dm index 451f84c2ff..e0dc15cc45 100644 --- a/code/modules/food/kitchen/cooking_machines/fryer.dm +++ b/code/modules/food/kitchen/cooking_machines/fryer.dm @@ -8,6 +8,22 @@ off_icon = "fryer_off" food_color = "#FFAD33" cooked_sound = 'sound/machines/ding.ogg' + var/datum/looping_sound/deep_fryer/fry_loop + +/obj/machinery/cooker/fryer/Initialize() + fry_loop = new(list(src), FALSE) + return ..() + +/obj/machinery/cooker/fryer/Destroy() + QDEL_NULL(fry_loop) + return ..() + +/obj/machinery/cooker/fryer/set_cooking(new_setting) + ..() + if(new_setting) + fry_loop.start() + else + fry_loop.stop() /obj/machinery/cooker/fryer/cook_mob(var/mob/living/victim, var/mob/user) @@ -17,16 +33,19 @@ user.visible_message("\The [user] starts pushing \the [victim] into \the [src]!") icon_state = on_icon cooking = 1 + fry_loop.start() if(!do_mob(user, victim, 20)) cooking = 0 icon_state = off_icon + fry_loop.stop() return if(!victim || !victim.Adjacent(user)) user << "Your victim slipped free!" cooking = 0 icon_state = off_icon + fry_loop.stop() return var/obj/item/organ/external/E @@ -62,4 +81,5 @@ icon_state = off_icon cooking = 0 + fry_loop.stop() return diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm index 1ece9225b1..1fbd66286b 100644 --- a/code/modules/food/kitchen/microwave.dm +++ b/code/modules/food/kitchen/microwave.dm @@ -16,6 +16,7 @@ var/global/list/acceptable_items // List of the items you can put in var/global/list/acceptable_reagents // List of the reagents you can put in var/global/max_n_of_items = 0 + var/datum/looping_sound/microwave/soundloop // see code/modules/food/recipes_microwave.dm for recipes @@ -24,8 +25,7 @@ * Initialising ********************/ -/obj/machinery/microwave/New() - ..() +/obj/machinery/microwave/Initialize() reagents = new/datum/reagents(100) reagents.my_atom = src @@ -54,6 +54,12 @@ acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown RefreshParts() + soundloop = new(list(src), FALSE) + return ..() + +/obj/machinery/microwave/Destroy() + QDEL_NULL(soundloop) + return ..() /******************* * Item Adding @@ -311,20 +317,19 @@ /obj/machinery/microwave/proc/start() src.visible_message("The microwave turns on.", "You hear a microwave.") - src.operating = 1 + soundloop.start() + src.operating = TRUE src.icon_state = "mw1" src.updateUsrDialog() /obj/machinery/microwave/proc/abort() - src.operating = 0 // Turn it off again aferwards - src.icon_state = "mw" - src.updateUsrDialog() + operating = FALSE // Turn it off again aferwards + icon_state = "mw" + updateUsrDialog() + soundloop.stop() /obj/machinery/microwave/proc/stop() - playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) - src.operating = 0 // Turn it off again aferwards - src.icon_state = "mw" - src.updateUsrDialog() + abort() /obj/machinery/microwave/proc/dispose() for (var/obj/O in ((contents-component_parts)-circuit)) diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index 02095e0f81..4fbad576ed 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -22,12 +22,18 @@ var/lastgen2 = 0 var/effective_gen = 0 var/lastgenlev = 0 + var/datum/looping_sound/generator/soundloop -/obj/machinery/power/generator/New() - ..() +/obj/machinery/power/generator/Initialize() + soundloop = new(list(src), FALSE) desc = initial(desc) + " Rated for [round(max_power/1000)] kW." spawn(1) reconnect() + return ..() + +/obj/machinery/power/generator/Destroy() + QDEL_NULL(soundloop) + return ..() //generators connect in dir and reverse_dir(dir) directions //mnemonic to determine circulator/generator directions: the cirulators orbit clockwise around the generator @@ -124,6 +130,13 @@ stored_energy -= lastgen1 effective_gen = (lastgen1 + lastgen2) / 2 + // Sounds. + if(effective_gen > (max_power * 0.05)) // More than 5% and sounds start. + soundloop.start() + soundloop.volume = LERP(1, 40, effective_gen / max_power) + else + soundloop.stop() + // update icon overlays and power usage only if displayed level has changed var/genlev = max(0, min( round(11*effective_gen / max_power), 11)) if(effective_gen > 100 && genlev == 0) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 87a0f3cb68..d1fd8151f7 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -88,9 +88,15 @@ var/debug = 0 + var/datum/looping_sound/supermatter/soundloop + +/obj/machinery/power/supermatter/Initialize() + soundloop = new(list(src), TRUE) + return ..() /obj/machinery/power/supermatter/Destroy() - . = ..() + QDEL_NULL(soundloop) + return ..() /obj/machinery/power/supermatter/proc/explode() message_admins("Supermatter exploded at ([x],[y],[z] - JMP)",0,1) @@ -196,6 +202,11 @@ if(grav_pulling) supermatter_pull(src) + if(power) + // Volume will be 1 at no power, ~12.5 at ENERGY_NITROGEN, and 20+ at ENERGY_PHORON. + // Capped to 20 volume since higher volumes get annoying and it sounds worse. + soundloop.volume = min(round(power/10)+1, 20) + //Ok, get the air from the turf var/datum/gas_mixture/removed = null var/datum/gas_mixture/env = null diff --git a/polaris.dme b/polaris.dme index 958ad5f353..d9f906f0bc 100644 --- a/polaris.dme +++ b/polaris.dme @@ -254,6 +254,9 @@ #include "code\datums\locations\tau_ceti.dm" #include "code\datums\locations\uueoa_esa.dm" #include "code\datums\locations\vir.dm" +#include "code\datums\looping_sounds\item_sounds.dm" +#include "code\datums\looping_sounds\looping_sound.dm" +#include "code\datums\looping_sounds\machinery_sounds.dm" #include "code\datums\observation\_debug.dm" #include "code\datums\observation\_defines.dm" #include "code\datums\observation\destroyed.dm" diff --git a/sound/items/geiger/new/ext1.ogg b/sound/items/geiger/new/ext1.ogg new file mode 100644 index 0000000000..ca1b44e4d8 Binary files /dev/null and b/sound/items/geiger/new/ext1.ogg differ diff --git a/sound/items/geiger/new/ext2.ogg b/sound/items/geiger/new/ext2.ogg new file mode 100644 index 0000000000..c0c316245b Binary files /dev/null and b/sound/items/geiger/new/ext2.ogg differ diff --git a/sound/items/geiger/new/ext3.ogg b/sound/items/geiger/new/ext3.ogg new file mode 100644 index 0000000000..fc367d9466 Binary files /dev/null and b/sound/items/geiger/new/ext3.ogg differ diff --git a/sound/items/geiger/new/ext4.ogg b/sound/items/geiger/new/ext4.ogg new file mode 100644 index 0000000000..d3b00ebaac Binary files /dev/null and b/sound/items/geiger/new/ext4.ogg differ diff --git a/sound/items/geiger/new/high1.ogg b/sound/items/geiger/new/high1.ogg new file mode 100644 index 0000000000..8725affdd4 Binary files /dev/null and b/sound/items/geiger/new/high1.ogg differ diff --git a/sound/items/geiger/new/high2.ogg b/sound/items/geiger/new/high2.ogg new file mode 100644 index 0000000000..f1e3868898 Binary files /dev/null and b/sound/items/geiger/new/high2.ogg differ diff --git a/sound/items/geiger/new/high3.ogg b/sound/items/geiger/new/high3.ogg new file mode 100644 index 0000000000..bdc5282a5c Binary files /dev/null and b/sound/items/geiger/new/high3.ogg differ diff --git a/sound/items/geiger/new/high4.ogg b/sound/items/geiger/new/high4.ogg new file mode 100644 index 0000000000..8e185d6f78 Binary files /dev/null and b/sound/items/geiger/new/high4.ogg differ diff --git a/sound/items/geiger/new/low1.ogg b/sound/items/geiger/new/low1.ogg new file mode 100644 index 0000000000..9bdb8bd327 Binary files /dev/null and b/sound/items/geiger/new/low1.ogg differ diff --git a/sound/items/geiger/new/low2.ogg b/sound/items/geiger/new/low2.ogg new file mode 100644 index 0000000000..ce4855f25f Binary files /dev/null and b/sound/items/geiger/new/low2.ogg differ diff --git a/sound/items/geiger/new/low3.ogg b/sound/items/geiger/new/low3.ogg new file mode 100644 index 0000000000..70aaea064f Binary files /dev/null and b/sound/items/geiger/new/low3.ogg differ diff --git a/sound/items/geiger/new/low4.ogg b/sound/items/geiger/new/low4.ogg new file mode 100644 index 0000000000..f36e3b7699 Binary files /dev/null and b/sound/items/geiger/new/low4.ogg differ diff --git a/sound/items/geiger/new/med1.ogg b/sound/items/geiger/new/med1.ogg new file mode 100644 index 0000000000..c062c4d2a8 Binary files /dev/null and b/sound/items/geiger/new/med1.ogg differ diff --git a/sound/items/geiger/new/med2.ogg b/sound/items/geiger/new/med2.ogg new file mode 100644 index 0000000000..210119a287 Binary files /dev/null and b/sound/items/geiger/new/med2.ogg differ diff --git a/sound/items/geiger/new/med3.ogg b/sound/items/geiger/new/med3.ogg new file mode 100644 index 0000000000..ed6f0f4d7f Binary files /dev/null and b/sound/items/geiger/new/med3.ogg differ diff --git a/sound/items/geiger/new/med4.ogg b/sound/items/geiger/new/med4.ogg new file mode 100644 index 0000000000..70635a97a3 Binary files /dev/null and b/sound/items/geiger/new/med4.ogg differ diff --git a/sound/items/geiger1.ogg b/sound/items/geiger/old/geiger1.ogg similarity index 100% rename from sound/items/geiger1.ogg rename to sound/items/geiger/old/geiger1.ogg diff --git a/sound/items/geiger2.ogg b/sound/items/geiger/old/geiger2.ogg similarity index 100% rename from sound/items/geiger2.ogg rename to sound/items/geiger/old/geiger2.ogg diff --git a/sound/items/geiger3.ogg b/sound/items/geiger/old/geiger3.ogg similarity index 100% rename from sound/items/geiger3.ogg rename to sound/items/geiger/old/geiger3.ogg diff --git a/sound/items/geiger4.ogg b/sound/items/geiger/old/geiger4.ogg similarity index 100% rename from sound/items/geiger4.ogg rename to sound/items/geiger/old/geiger4.ogg diff --git a/sound/items/geiger5.ogg b/sound/items/geiger/old/geiger5.ogg similarity index 100% rename from sound/items/geiger5.ogg rename to sound/items/geiger/old/geiger5.ogg diff --git a/sound/items/geiger_weak1.ogg b/sound/items/geiger/old/geiger_weak1.ogg similarity index 100% rename from sound/items/geiger_weak1.ogg rename to sound/items/geiger/old/geiger_weak1.ogg diff --git a/sound/items/geiger_weak2.ogg b/sound/items/geiger/old/geiger_weak2.ogg similarity index 100% rename from sound/items/geiger_weak2.ogg rename to sound/items/geiger/old/geiger_weak2.ogg diff --git a/sound/items/geiger_weak3.ogg b/sound/items/geiger/old/geiger_weak3.ogg similarity index 100% rename from sound/items/geiger_weak3.ogg rename to sound/items/geiger/old/geiger_weak3.ogg diff --git a/sound/items/geiger_weak4.ogg b/sound/items/geiger/old/geiger_weak4.ogg similarity index 100% rename from sound/items/geiger_weak4.ogg rename to sound/items/geiger/old/geiger_weak4.ogg diff --git a/sound/machines/fryer/deep_fryer_1.ogg b/sound/machines/fryer/deep_fryer_1.ogg new file mode 100644 index 0000000000..7b726c9de6 Binary files /dev/null and b/sound/machines/fryer/deep_fryer_1.ogg differ diff --git a/sound/machines/fryer/deep_fryer_2.ogg b/sound/machines/fryer/deep_fryer_2.ogg new file mode 100644 index 0000000000..4bd4be7d77 Binary files /dev/null and b/sound/machines/fryer/deep_fryer_2.ogg differ diff --git a/sound/machines/fryer/deep_fryer_emerge.ogg b/sound/machines/fryer/deep_fryer_emerge.ogg new file mode 100644 index 0000000000..a803dd4c67 Binary files /dev/null and b/sound/machines/fryer/deep_fryer_emerge.ogg differ diff --git a/sound/machines/fryer/deep_fryer_immerse.ogg b/sound/machines/fryer/deep_fryer_immerse.ogg new file mode 100644 index 0000000000..3c06b865ca Binary files /dev/null and b/sound/machines/fryer/deep_fryer_immerse.ogg differ diff --git a/sound/machines/generator/generator_end.ogg b/sound/machines/generator/generator_end.ogg new file mode 100644 index 0000000000..4397991167 Binary files /dev/null and b/sound/machines/generator/generator_end.ogg differ diff --git a/sound/machines/generator/generator_mid1.ogg b/sound/machines/generator/generator_mid1.ogg new file mode 100644 index 0000000000..10a0d01a7e Binary files /dev/null and b/sound/machines/generator/generator_mid1.ogg differ diff --git a/sound/machines/generator/generator_mid2.ogg b/sound/machines/generator/generator_mid2.ogg new file mode 100644 index 0000000000..77656772cc Binary files /dev/null and b/sound/machines/generator/generator_mid2.ogg differ diff --git a/sound/machines/generator/generator_mid3.ogg b/sound/machines/generator/generator_mid3.ogg new file mode 100644 index 0000000000..812a10e6fc Binary files /dev/null and b/sound/machines/generator/generator_mid3.ogg differ diff --git a/sound/machines/generator/generator_start.ogg b/sound/machines/generator/generator_start.ogg new file mode 100644 index 0000000000..53f734388e Binary files /dev/null and b/sound/machines/generator/generator_start.ogg differ diff --git a/sound/machines/microwave/microwave-end.ogg b/sound/machines/microwave/microwave-end.ogg new file mode 100644 index 0000000000..1c13d87e17 Binary files /dev/null and b/sound/machines/microwave/microwave-end.ogg differ diff --git a/sound/machines/microwave/microwave-mid1.ogg b/sound/machines/microwave/microwave-mid1.ogg new file mode 100644 index 0000000000..60a0cc8ec5 Binary files /dev/null and b/sound/machines/microwave/microwave-mid1.ogg differ diff --git a/sound/machines/microwave/microwave-mid2.ogg b/sound/machines/microwave/microwave-mid2.ogg new file mode 100644 index 0000000000..3b3dd32c28 Binary files /dev/null and b/sound/machines/microwave/microwave-mid2.ogg differ diff --git a/sound/machines/microwave/microwave-start.ogg b/sound/machines/microwave/microwave-start.ogg new file mode 100644 index 0000000000..5e59c78e8a Binary files /dev/null and b/sound/machines/microwave/microwave-start.ogg differ diff --git a/sound/machines/shower/shower_end.ogg b/sound/machines/shower/shower_end.ogg new file mode 100644 index 0000000000..80b93af39e Binary files /dev/null and b/sound/machines/shower/shower_end.ogg differ diff --git a/sound/machines/shower/shower_mid1.ogg b/sound/machines/shower/shower_mid1.ogg new file mode 100644 index 0000000000..e1ae5a0c45 Binary files /dev/null and b/sound/machines/shower/shower_mid1.ogg differ diff --git a/sound/machines/shower/shower_mid2.ogg b/sound/machines/shower/shower_mid2.ogg new file mode 100644 index 0000000000..4a54acd352 Binary files /dev/null and b/sound/machines/shower/shower_mid2.ogg differ diff --git a/sound/machines/shower/shower_mid3.ogg b/sound/machines/shower/shower_mid3.ogg new file mode 100644 index 0000000000..8b4776a9b9 Binary files /dev/null and b/sound/machines/shower/shower_mid3.ogg differ diff --git a/sound/machines/shower/shower_start.ogg b/sound/machines/shower/shower_start.ogg new file mode 100644 index 0000000000..e5529f401b Binary files /dev/null and b/sound/machines/shower/shower_start.ogg differ diff --git a/sound/machines/sm/supermatter1.ogg b/sound/machines/sm/supermatter1.ogg new file mode 100644 index 0000000000..1860e78800 Binary files /dev/null and b/sound/machines/sm/supermatter1.ogg differ diff --git a/sound/machines/sm/supermatter2.ogg b/sound/machines/sm/supermatter2.ogg new file mode 100644 index 0000000000..fb2d39fe26 Binary files /dev/null and b/sound/machines/sm/supermatter2.ogg differ diff --git a/sound/machines/sm/supermatter3.ogg b/sound/machines/sm/supermatter3.ogg new file mode 100644 index 0000000000..93ac3d505b Binary files /dev/null and b/sound/machines/sm/supermatter3.ogg differ