From 04b414f6b4fb686d136b6ac55e4b65f6b89ba5e1 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 15 Oct 2019 08:58:22 -0500 Subject: [PATCH] Improving Sounds yet again --- code/__DEFINES/voreconstants.dm | 36 +++++++- code/modules/vore/eating/belly_obj.dm | 112 ++++++++++++++++++------- code/modules/vore/eating/bellymodes.dm | 48 +++++------ code/modules/vore/eating/living.dm | 22 +++-- code/modules/vore/eating/vorepanel.dm | 8 +- 5 files changed, 154 insertions(+), 72 deletions(-) diff --git a/code/__DEFINES/voreconstants.dm b/code/__DEFINES/voreconstants.dm index 710b11ae16..9c91de0be2 100644 --- a/code/__DEFINES/voreconstants.dm +++ b/code/__DEFINES/voreconstants.dm @@ -20,7 +20,7 @@ GLOBAL_LIST_INIT(player_sizes_list, list("Macro" = SIZESCALE_HUGE, "Big" = SIZES // Edited to make the new travis check go away */ -GLOBAL_LIST_INIT(vore_sounds, list( +GLOBAL_LIST_INIT(pred_vore_sounds, list( "Gulp" = 'sound/vore/pred/swallow_01.ogg', "Swallow" = 'sound/vore/pred/swallow_02.ogg', "Insertion1" = 'sound/vore/pred/insertion_01.ogg', @@ -40,7 +40,27 @@ GLOBAL_LIST_INIT(vore_sounds, list( "None" = null )) -GLOBAL_LIST_INIT(release_sounds, list( +GLOBAL_LIST_INIT(prey_vore_sounds, list( + "Gulp" = 'sound/vore/prey/swallow_01.ogg', + "Swallow" = 'sound/vore/prey/swallow_02.ogg', + "Insertion1" = 'sound/vore/prey/insertion_01.ogg', + "Insertion2" = 'sound/vore/prey/insertion_02.ogg', + "Tauric Swallow" = 'sound/vore/prey/taurswallow.ogg', + "Stomach Move" = 'sound/vore/prey/stomachmove.ogg', + "Schlorp" = 'sound/vore/prey/schlorp.ogg', + "Squish1" = 'sound/vore/prey/squish_01.ogg', + "Squish2" = 'sound/vore/prey/squish_02.ogg', + "Squish3" = 'sound/vore/prey/squish_03.ogg', + "Squish4" = 'sound/vore/prey/squish_04.ogg', + "Rustle (cloth)" = 'sound/effects/rustle5.ogg', + "Rustle 2 (cloth)" = 'sound/effects/rustle2.ogg', + "Rustle 3 (cloth)" = 'sound/effects/rustle3.ogg', + "Rustle 4 (cloth)" = 'sound/effects/rustle4.ogg', + "Rustle 5 (cloth)" = 'sound/effects/rustle5.ogg', + "None" = null + )) + +GLOBAL_LIST_INIT(pred_release_sounds, list( "Rustle (cloth)" = 'sound/effects/rustle1.ogg', "Rustle 2 (cloth)" = 'sound/effects/rustle2.ogg', "Rustle 3 (cloth)" = 'sound/effects/rustle3.ogg', @@ -51,3 +71,15 @@ GLOBAL_LIST_INIT(release_sounds, list( "Splatter" = 'sound/effects/splat.ogg', "None" = null )) + +GLOBAL_LIST_INIT(prey_release_sounds, list( + "Rustle (cloth)" = 'sound/effects/rustle1.ogg', + "Rustle 2 (cloth)" = 'sound/effects/rustle2.ogg', + "Rustle 3 (cloth)" = 'sound/effects/rustle3.ogg', + "Rustle 4 (cloth)" = 'sound/effects/rustle4.ogg', + "Rustle 5 (cloth)" = 'sound/effects/rustle5.ogg', + "Stomach Move" = 'sound/vore/prey/stomachmove.ogg', + "Pred Escape" = 'sound/vore/prey/escape.ogg', + "Splatter" = 'sound/effects/splat.ogg', + "None" = null + )) diff --git a/code/modules/vore/eating/belly_obj.dm b/code/modules/vore/eating/belly_obj.dm index 9b54b39ba9..b88be59863 100644 --- a/code/modules/vore/eating/belly_obj.dm +++ b/code/modules/vore/eating/belly_obj.dm @@ -170,12 +170,21 @@ //Sound w/ antispam flag setting if(vore_sound && !recent_sound) - var/turf/source = get_turf(owner) - var/sound/eating = GLOB.vore_sounds[vore_sound] - for(var/mob/living/M in get_hearers_in_view(3, source)) - if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) - SEND_SOUND(M, eating) - recent_sound = TRUE + if((world.time + NORMIE_HEARCHECK) > last_hearcheck) + LAZYCLEARLIST(hearing_mobs) + for(var/mob/living/H in get_hearers_in_view(3, owner)) + if(!H.client || !(H.client.prefs.cit_toggles & EATING_NOISES)) + continue + LAZYADD(hearing_mobs, H) + last_hearcheck = world.time + for(var/mob/living/H in hearing_mobs) + if(H && H.client && (isturf(H.loc) || (H.loc != src.contents))) + var/sound/eating = GLOB.pred_vore_sounds[vore_sound] + SEND_SOUND(H,eating) + else if(H && H in contents && H.client) + var/sound/eating = GLOB.prey_vore_sounds[vore_sound] + SEND_SOUND(H,eating) + recent_sound = TRUE //Messages if it's a mob if(isliving(thing)) @@ -214,10 +223,22 @@ owner.update_icons() if(!silent) - for(var/mob/living/M in get_hearers_in_view(2, get_turf(owner))) - if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) - var/sound/releasement = GLOB.release_sounds[release_sound] - SEND_SOUND(M, releasement) + if(release_sound && !recent_sound) + if((world.time + NORMIE_HEARCHECK) > last_hearcheck) + LAZYCLEARLIST(hearing_mobs) + for(var/mob/living/H in get_hearers_in_view(3, owner)) + if(!H.client || !(H.client.prefs.cit_toggles & EATING_NOISES)) + continue + LAZYADD(hearing_mobs, H) + last_hearcheck = world.time + for(var/mob/living/H in hearing_mobs) + if(H && H.client && (isturf(H.loc) || (H.loc != src.contents))) + var/sound/releasement = GLOB.pred_release_sounds[release_sound] + SEND_SOUND(H,releasement) + else if(H && H in contents && H.client) + var/sound/releasement = GLOB.prey_release_sounds[release_sound] + SEND_SOUND(H,releasement) + recent_sound = TRUE owner.visible_message("[owner] expels everything from their [lowertext(name)]!") return count @@ -259,10 +280,22 @@ owner.update_icons() if(!silent) - for(var/mob/living/H in get_hearers_in_view(2, get_turf(owner))) - if(H.client && (H.client.prefs.cit_toggles & EATING_NOISES)) - var/sound/releasement = GLOB.release_sounds[release_sound] - SEND_SOUND(H, releasement) + if(release_sound && !recent_sound) + if((world.time + NORMIE_HEARCHECK) > last_hearcheck) + LAZYCLEARLIST(hearing_mobs) + for(var/mob/living/H in get_hearers_in_view(3, owner)) + if(!H.client || !(H.client.prefs.cit_toggles & EATING_NOISES)) + continue + LAZYADD(hearing_mobs, H) + last_hearcheck = world.time + for(var/mob/living/H in hearing_mobs) + if(H && H.client && (isturf(H.loc) || (H.loc != src.contents))) + var/sound/releasement = GLOB.pred_release_sounds[release_sound] + SEND_SOUND(H,releasement) + else if(H && H in contents && H.client) + var/sound/releasement = GLOB.prey_release_sounds[release_sound] + SEND_SOUND(H,releasement) + recent_sound = TRUE owner.visible_message("[owner] expels [M] from their [lowertext(name)]!") return TRUE @@ -312,11 +345,22 @@ for(var/mob/living/M in contents) M.cure_blind("belly_[REF(src)]") // target.nom_mob(content, target.owner) - if(!silent) - var/sound/eating = GLOB.vore_sounds[vore_sound] - for(var/mob/living/M in get_hearers_in_view(3, src)) - if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) - SEND_SOUND(M, eating) + if(vore_sound && !recent_sound && !silent) + if((world.time + NORMIE_HEARCHECK) > last_hearcheck) + LAZYCLEARLIST(hearing_mobs) + for(var/mob/living/H in get_hearers_in_view(3, owner)) + if(!H.client || !(H.client.prefs.cit_toggles & EATING_NOISES)) + continue + LAZYADD(hearing_mobs, H) + last_hearcheck = world.time + for(var/mob/living/H in hearing_mobs) + if(H && H.client && (isturf(H.loc) || (H.loc != src.contents))) + var/sound/eating = GLOB.pred_vore_sounds[vore_sound] + SEND_SOUND(H,eating) + else if(H && H in contents && H.client) + var/sound/eating = GLOB.prey_vore_sounds[vore_sound] + SEND_SOUND(H,eating) + recent_sound = TRUE owner.updateVRPanel() for(var/mob/living/M in contents) @@ -524,23 +568,31 @@ struggle_outer_message = "" + struggle_outer_message + "" struggle_user_message = "" + struggle_user_message + "" - var/sound/struggle_snuggle = sound(get_sfx("struggle_sound")) + var/sound/pred_struggle_snuggle = sound(get_sfx("struggle_sound")) + var/sound/prey_struggle_snuggle = sound(get_sfx("prey_struggle")) var/sound/struggle_rustle = sound(get_sfx("rustle")) + LAZYCLEARLIST(hearing_mobs) + for(var/mob/living/H in get_hearers_in_view(3, owner)) + if(!H.client || !(H.client.prefs.cit_toggles & EATING_NOISES)) + continue + LAZYADD(hearing_mobs, H) + if(is_wet) - for(var/mob/living/M in get_hearers_in_view(3, src)) - if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) - SEND_SOUND(M, struggle_snuggle) + for(var/mob/living/H in hearing_mobs) + if(H && H.client && (isturf(H.loc) || (H.loc != src.contents))) + SEND_SOUND(H,pred_struggle_snuggle) + else if(H && H in contents && H.client) + SEND_SOUND(H,prey_struggle_snuggle) else - for(var/mob/living/M in get_hearers_in_view(3, src)) - if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) - SEND_SOUND(M, struggle_rustle) + for(var/mob/living/H in hearing_mobs) + if(H && H.client) + SEND_SOUND(H, struggle_rustle) - var/list/watching = hearers(3, owner) - for(var/mob/living/M in watching) - if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) //Might as well censor the normies here too. - M.show_message(struggle_outer_message, 1) // visible + for(var/mob/living/H in hearing_mobs) + if(H && H.client && (isturf(H.loc))) + H.show_message(struggle_outer_message, 1) // visible to_chat(R,struggle_user_message) diff --git a/code/modules/vore/eating/bellymodes.dm b/code/modules/vore/eating/bellymodes.dm index 69b517ee3b..0ecaf49abc 100644 --- a/code/modules/vore/eating/bellymodes.dm +++ b/code/modules/vore/eating/bellymodes.dm @@ -31,16 +31,16 @@ ///////////////////// Prey Loop Refresh/hack ////////////////////// for(var/mob/living/M in contents) - if(isbelly(M.loc)) + if(M && isbelly(M.loc)) if(world.time > M.next_preyloop) if(is_wet && wet_loop) if(!M.client) continue M.stop_sound_channel(CHANNEL_PREYLOOP) // sanity just in case if(M.client.prefs.cit_toggles & DIGESTION_NOISES) - var/sound/preyloop = sound('sound/vore/prey/loop.ogg', repeat = TRUE) + var/sound/preyloop = sound('sound/vore/prey/loop.ogg') M.playsound_local(get_turf(src),preyloop, 80,0, channel = CHANNEL_PREYLOOP) - M.next_preyloop = (world.time + 52 SECONDS) + M.next_preyloop = (world.time + 51 SECONDS) /////////////////////////// Exit Early //////////////////////////// @@ -71,7 +71,7 @@ for (var/mob/living/M in contents) if(prob(25)) - if((world.time - NORMIE_HEARCHECK) > last_hearcheck) + if((world.time + NORMIE_HEARCHECK) > last_hearcheck) LAZYCLEARLIST(hearing_mobs) for(var/mob/living/H in get_hearers_in_view(3, owner)) if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES)) @@ -79,9 +79,9 @@ LAZYADD(hearing_mobs, H) last_hearcheck = world.time for(var/mob/living/H in hearing_mobs) - if(H.client && (isturf(H.loc) || (H.loc != src.contents))) + if(H && H.client && (isturf(H.loc) || (H.loc != src.contents))) SEND_SOUND(H,pred_digest) - else if(H in contents && H.client) + else if(H && H in contents && H.client) SEND_SOUND(H,prey_digest) //Pref protection! @@ -108,7 +108,7 @@ M.visible_message("You watch as [owner]'s form loses its additions.") owner.nutrition += 400 // so eating dead mobs gives you *something*. - if((world.time - NORMIE_HEARCHECK) > last_hearcheck) + if((world.time + NORMIE_HEARCHECK) > last_hearcheck) LAZYCLEARLIST(hearing_mobs) for(var/mob/living/H in get_hearers_in_view(3, owner)) if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES)) @@ -116,9 +116,9 @@ LAZYADD(hearing_mobs, H) last_hearcheck = world.time for(var/mob/living/H in hearing_mobs) - if(H.client && (isturf(H.loc) || (H.loc != src.contents))) + if(H && H.client && (isturf(H.loc) || (H.loc != src.contents))) SEND_SOUND(H,pred_death) - else if(H in contents && H.client) + else if(H && H in contents && H.client) SEND_SOUND(H,prey_death) M.stop_sound_channel(CHANNEL_PREYLOOP) digestion_death(M) @@ -142,7 +142,7 @@ if(digest_mode == DM_HEAL) for (var/mob/living/M in contents) if(prob(25)) - if((world.time - NORMIE_HEARCHECK) > last_hearcheck) + if((world.time + NORMIE_HEARCHECK) > last_hearcheck) LAZYCLEARLIST(hearing_mobs) for(var/mob/living/H in get_hearers_in_view(3, owner)) if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES)) @@ -150,9 +150,9 @@ LAZYADD(hearing_mobs, H) last_hearcheck = world.time for(var/mob/living/H in hearing_mobs) - if(H.client && (isturf(H.loc) || (H.loc != src.contents))) + if(H && H.client && (isturf(H.loc) || (H.loc != src.contents))) SEND_SOUND(H,pred_digest) - else if(H in contents && H.client) + else if(H && H in contents && H.client) SEND_SOUND(H,prey_digest) if(M.stat != DEAD) @@ -165,7 +165,7 @@ //for when you just want people to squelch around if(digest_mode == DM_NOISY) if(prob(35)) - if((world.time - NORMIE_HEARCHECK) > last_hearcheck) + if((world.time + NORMIE_HEARCHECK) > last_hearcheck) LAZYCLEARLIST(hearing_mobs) for(var/mob/living/H in get_hearers_in_view(3, owner)) if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES)) @@ -173,9 +173,9 @@ LAZYADD(hearing_mobs, H) last_hearcheck = world.time for(var/mob/living/H in hearing_mobs) - if(H.client && (isturf(H.loc) || (H.loc != src.contents))) + if(H && H.client && (isturf(H.loc) || (H.loc != src.contents))) SEND_SOUND(H,pred_digest) - else if(H in contents && H.client) + else if(H && H in contents && H.client) SEND_SOUND(H,prey_digest) @@ -185,7 +185,7 @@ for (var/mob/living/M in contents) if(prob(10))//Less often than gurgles. People might leave this on forever. - if((world.time - NORMIE_HEARCHECK) > last_hearcheck) + if((world.time + NORMIE_HEARCHECK) > last_hearcheck) LAZYCLEARLIST(hearing_mobs) for(var/mob/living/H in get_hearers_in_view(3, owner)) if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES)) @@ -193,9 +193,9 @@ LAZYADD(hearing_mobs, H) last_hearcheck = world.time for(var/mob/living/H in hearing_mobs) - if(H.client && (isturf(H.loc) || (H.loc != src.contents))) + if(H && H.client && (isturf(H.loc) || (H.loc != src.contents))) SEND_SOUND(H,pred_digest) - else if(H in contents && H.client) + else if(H && H in contents && H.client) SEND_SOUND(H,prey_digest) if(M.absorbed) @@ -229,7 +229,7 @@ for (var/mob/living/M in contents) if(prob(55)) //if you're hearing this, you're a vore ho anyway. - if((world.time - NORMIE_HEARCHECK) > last_hearcheck) + if((world.time + NORMIE_HEARCHECK) > last_hearcheck) LAZYCLEARLIST(hearing_mobs) for(var/mob/living/H in get_hearers_in_view(3, owner)) if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES)) @@ -237,9 +237,9 @@ LAZYADD(hearing_mobs, H) last_hearcheck = world.time for(var/mob/living/H in hearing_mobs) - if(H.client && (isturf(H.loc) || (H.loc != src.contents))) + if(H && H.client && (isturf(H.loc) || (H.loc != src.contents))) SEND_SOUND(H,pred_digest) - else if(H in contents && H.client) + else if(H && H in contents && H.client) SEND_SOUND(H,prey_digest) //No digestion protection for megafauna. @@ -262,7 +262,7 @@ to_chat(owner, "[digest_alert_owner]") to_chat(M, "[digest_alert_prey]") M.visible_message("You watch as [owner]'s guts loudly rumble as it finishes off a meal.") - if((world.time - NORMIE_HEARCHECK) > last_hearcheck) + if((world.time + NORMIE_HEARCHECK) > last_hearcheck) LAZYCLEARLIST(hearing_mobs) for(var/mob/living/H in get_hearers_in_view(3, owner)) if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES)) @@ -270,9 +270,9 @@ LAZYADD(hearing_mobs, H) last_hearcheck = world.time for(var/mob/living/H in hearing_mobs) - if(H.client && (isturf(H.loc) || (H.loc != src.contents))) + if(H && H.client && (isturf(H.loc) || (H.loc != src.contents))) SEND_SOUND(H,pred_death) - else if(H in contents && H.client) + else if(H && H in contents && H.client) SEND_SOUND(H,prey_death) M.spill_organs(FALSE,TRUE,TRUE) M.stop_sound_channel(CHANNEL_PREYLOOP) diff --git a/code/modules/vore/eating/living.dm b/code/modules/vore/eating/living.dm index e6ddcdc56d..1a00dde64f 100644 --- a/code/modules/vore/eating/living.dm +++ b/code/modules/vore/eating/living.dm @@ -126,7 +126,7 @@ //Sanity if(!user || !prey || !pred || !istype(belly) || !(belly in pred.vore_organs)) testing("[user] attempted to feed [prey] to [pred], via [lowertext(belly.name)] but it went wrong.") - return FALSE + return if (!prey.devourable) to_chat(user, "This can't be eaten!") @@ -151,9 +151,14 @@ user.visible_message(attempt_msg) // Now give the prey time to escape... return if they did - var/swallow_time = delay || ishuman(prey) ? belly.human_prey_swallow_time : belly.nonhuman_prey_swallow_time + var/swallow_time + if(delay) + swallow_time = delay + else + swallow_time = istype(prey, /mob/living/carbon/human) ? belly.human_prey_swallow_time : belly.nonhuman_prey_swallow_time - if(!do_mob(src, user, swallow_time)) + //Timer and progress bar + if(!do_after(user, swallow_time, prey)) return FALSE // Prey escaped (or user disabled) before timer expired. if(!prey.Adjacent(user)) //double check'd just in case they moved during the timer and the do_mob didn't fail for whatever reason @@ -162,13 +167,6 @@ // If we got this far, nom successful! Announce it! user.visible_message(success_msg) - // incredibly contentious eating noises time - var/turf/source = get_turf(user) - var/sound/eating = GLOB.vore_sounds[belly.vore_sound] - for(var/mob/living/M in get_hearers_in_view(3, source)) - if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) - SEND_SOUND(M, eating) - // Actually shove prey into the belly. belly.nom_mob(prey, user) stop_pulling() @@ -218,9 +216,9 @@ /mob/living/proc/preyloop_refresh() set name = "Internal loop refresh" set category = "Vore" + src.stop_sound_channel(CHANNEL_PREYLOOP) // sanity just in case if(isbelly(loc)) - src.stop_sound_channel(CHANNEL_PREYLOOP) // sanity just in case - var/sound/preyloop = sound('sound/vore/prey/loop.ogg', repeat = TRUE) + var/sound/preyloop = sound('sound/vore/prey/loop.ogg') SEND_SOUND(src, preyloop) else to_chat(src, "You aren't inside anything, you clod.") diff --git a/code/modules/vore/eating/vorepanel.dm b/code/modules/vore/eating/vorepanel.dm index 781417d17c..962fe54af7 100644 --- a/code/modules/vore/eating/vorepanel.dm +++ b/code/modules/vore/eating/vorepanel.dm @@ -548,7 +548,7 @@ selected.vore_verb = new_verb if(href_list["b_release"]) - var/choice = input(user,"Currently set to [selected.release_sound]","Select Sound") as null|anything in GLOB.release_sounds + var/choice = input(user,"Currently set to [selected.release_sound]","Select Sound") as null|anything in GLOB.pred_release_sounds if(!choice) return @@ -556,12 +556,12 @@ selected.release_sound = choice if(href_list["b_releasesoundtest"]) - var/sound/releasetest = GLOB.release_sounds[selected.release_sound] + var/sound/releasetest = GLOB.prey_release_sounds[selected.release_sound] if(releasetest) SEND_SOUND(user, releasetest) if(href_list["b_sound"]) - var/choice = input(user,"Currently set to [selected.vore_sound]","Select Sound") as null|anything in GLOB.vore_sounds + var/choice = input(user,"Currently set to [selected.vore_sound]","Select Sound") as null|anything in GLOB.pred_vore_sounds if(!choice) return @@ -569,7 +569,7 @@ selected.vore_sound = choice if(href_list["b_soundtest"]) - var/sound/voretest = GLOB.vore_sounds[selected.vore_sound] + var/sound/voretest = GLOB.prey_vore_sounds[selected.vore_sound] if(voretest) SEND_SOUND(user, voretest)