From ff28797d946be696ef5e08a9b7754ef5413c985c Mon Sep 17 00:00:00 2001 From: Poojawa Date: Mon, 18 Mar 2019 04:39:47 -0500 Subject: [PATCH 01/13] Initial belly interactions return + wet sound check --- .../code/modules/vore/eating/belly_obj_vr.dm | 101 ++++++++++-------- .../code/modules/vore/eating/living_vr.dm | 22 ++-- .../code/modules/vore/eating/vore_vr.dm | 2 +- .../code/modules/vore/eating/vorepanel_vr.dm | 7 ++ 4 files changed, 74 insertions(+), 58 deletions(-) diff --git a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm index 1aa8122be5..e76a09d4b7 100644 --- a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm +++ b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm @@ -26,18 +26,19 @@ var/escapetime = 20 SECONDS // Deciseconds, how long to escape this belly var/digestchance = 0 // % Chance of stomach beginning to digest if prey struggles var/absorbchance = 0 // % Chance of stomach beginning to absorb if prey struggles - var/escapechance = 100 // % Chance of prey beginning to escape if prey struggles. + var/escapechance = 0 // % Chance of prey beginning to escape if prey struggles. var/can_taste = FALSE // If this belly prints the flavor of prey when it eats someone. var/bulge_size = 0.25 // The minimum size the prey has to be in order to show up on examine. // var/shrink_grow_size = 1 // This horribly named variable determines the minimum/maximum size it will shrink/grow prey to. var/silent = FALSE - var/transferlocation = null // Location that the prey is released if they struggle and get dropped off. + var/transferlocation // Location that the prey is released if they struggle and get dropped off. var/transferchance = 0 // % Chance of prey being transferred to transfer location when resisting var/autotransferchance = 0 // % Chance of prey being autotransferred to transfer location var/autotransferwait = 10 // Time between trying to transfer. var/swallow_time = 10 SECONDS // for mob transfering automation var/vore_capacity = 1 // simple animal nom capacity + var/is_wet = TRUE // Is this belly inside slimy parts? //I don't think we've ever altered these lists. making them static until someone actually overrides them somewhere. var/tmp/static/list/digest_modes = list(DM_HOLD,DM_DIGEST,DM_HEAL,DM_NOISY,DM_ABSORB,DM_UNABSORB) // Possible digest modes @@ -138,7 +139,8 @@ "digest_messages_owner", "digest_messages_prey", "examine_messages", - "emote_lists" + "emote_lists", + "is_wet" ) //ommitted list @@ -167,7 +169,7 @@ to_chat(owner,"[thing] slides into your [lowertext(name)].") //Sound w/ antispam flag setting - if(!silent && !recent_sound) + if(is_wet && !recent_sound) for(var/mob/M in get_hearers_in_view(5, get_turf(owner))) if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) playsound(get_turf(owner),"[src.vore_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) @@ -268,8 +270,10 @@ prey.forceMove(src) var/sound/preyloop = sound('sound/vore/prey/loop.ogg', repeat = TRUE) - if(!silent) + + if(is_wet) prey.playsound_local(loc,preyloop,70,0, channel = CHANNEL_PREYLOOP) + owner.updateVRPanel() for(var/mob/living/M in contents) @@ -461,6 +465,9 @@ //Yes, it's ""safe"" to drop items here /obj/belly/AllowDrop() return TRUE +/* +/obj/belly/onDropInto(var/atom/movable/AM) + return null */ //Handle a mob struggling // Called from /mob/living/carbon/relaymove() @@ -469,6 +476,23 @@ return // User is not in this belly R.setClickCooldown(50) + + if(owner.stat) //If owner is stat (dead, KO) we can actually escape + to_chat(R,"You attempt to climb out of \the [lowertext(name)]. (This will take around [escapetime/10] seconds.)") + to_chat(owner,"Someone is attempting to climb out of your [lowertext(name)]!") + + if(do_after(R, owner, escapetime)) + if((owner.stat || escapable) && (R.loc == src)) //Can still escape? + release_specific_contents(R) + return + else if(R.loc != src) //Aren't even in the belly. Quietly fail. + return + else //Belly became inescapable or mob revived + to_chat(R,"Your attempt to escape [lowertext(name)] has failed!") + to_chat(owner,"The attempt to escape from your [lowertext(name)] has failed!") + return + return + var/struggle_outer_message = pick(struggle_messages_outside) var/struggle_user_message = pick(struggle_messages_inside) @@ -483,41 +507,33 @@ struggle_outer_message = "" + struggle_outer_message + "" struggle_user_message = "" + struggle_user_message + "" - if((owner.stat || !owner.client) && (R.a_intent != INTENT_HELP)) //If owner is stat (dead, KO) we can actually escape - to_chat(R,"You attempt to climb out of \the [lowertext(name)]. (This will take around 5 seconds.)") - to_chat(owner,"Someone is attempting to climb out of your [lowertext(name)]!") - - if(!do_mob(R,owner,50)) - return - if(!(R in contents)) //Aren't even in the belly. Quietly fail. - return - if(R.a_intent != INTENT_HELP) //still want to? - release_specific_contents(R) - return - else //Belly became inescapable or mob revived - to_chat(R,"Your attempt to escape [lowertext(name)] has failed!") - to_chat(owner,"The attempt to escape from your [lowertext(name)] has failed!") - return - else if(R.a_intent != INTENT_HELP) //failsafe to make sure people are able to struggle out. friendly ERP should be on help intent. - to_chat(R,"You attempt to climb out of [lowertext(name)]. (This will take around [escapetime] seconds.)") - to_chat(owner,"Someone is attempting to climb out of your [lowertext(name)]!") - if(!do_mob(R,owner,escapetime)) - return - release_specific_contents(R) - return - else if (R.a_intent == INTENT_HELP) - for(var/mob/M in get_hearers_in_view(3, get_turf(owner))) - M.show_message(struggle_outer_message, 1) // visible - to_chat(R,struggle_user_message) - - if(!silent) - for(var/mob/M in get_hearers_in_view(5, get_turf(owner))) + if(is_wet) + for(var/mob/M in get_hearers_in_view(2, get_turf(owner))) if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) playsound(get_turf(owner),"struggle_sound",35,0,-5,1,ignore_walls = FALSE,channel=CHANNEL_PRED) R.stop_sound_channel(CHANNEL_PRED) var/sound/prey_struggle = sound(get_sfx("prey_struggle")) R.playsound_local(get_turf(R),prey_struggle,45,0) + for(var/mob/M in get_hearers_in_view(3, get_turf(owner))) + 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 + to_chat(R,struggle_user_message) + + if(escapable) //If the stomach has escapable enabled. + if(prob(escapechance)) //Let's have it check to see if the prey escapes first. + to_chat(R,"You start to climb out of \the [lowertext(name)].") + to_chat(owner,"Someone is attempting to climb out of your [lowertext(name)]!") + if(do_after(R, escapetime)) + if((owner.stat || escapable) && (R.loc == src)) //Can still escape? + release_specific_contents(R) + return + else if(R.loc != src) //Aren't even in the belly. Quietly fail. + return + else //Belly became inescapable or mob revived + to_chat(R,"Your attempt to escape [lowertext(name)] has failed!") + to_chat(owner,"The attempt to escape from your [lowertext(name)] has failed!") + return else if(prob(transferchance) && transferlocation) //Next, let's have it see if they end up getting into an even bigger mess then when they started. var/obj/belly/dest_belly for(var/belly in owner.vore_organs) @@ -525,6 +541,7 @@ if(B.name == transferlocation) dest_belly = B break + if(!dest_belly) to_chat(owner, "Something went wrong with your belly transfer settings. Your [lowertext(name)] has had it's transfer chance and transfer location cleared as a precaution.") transferchance = 0 @@ -541,21 +558,10 @@ to_chat(owner,"You feel your [lowertext(name)] start to cling onto its contents...") digest_mode = DM_ABSORB return -/* - else if(prob(digestchance) && digest_mode != DM_ITEMWEAK && digest_mode != DM_DIGEST) //Finally, let's see if it should run the digest chance. + + else if(prob(digestchance) && digest_mode != DM_DIGEST) //Finally, let's see if it should run the digest chance. to_chat(R,"In response to your struggling, \the [lowertext(name)] begins to get more active...") to_chat(owner,"You feel your [lowertext(name)] beginning to become active!") - digest_mode = DM_ITEMWEAK - return - - else if(prob(digestchance) && digest_mode == DM_ITEMWEAK) //Oh god it gets even worse if you fail twice! - to_chat(R,"In response to your struggling, \the [lowertext(name)] begins to get even more active!") - to_chat(owner,"You feel your [lowertext(name)] beginning to become even more active!") - digest_mode = DM_DIGEST - return */ - else if(prob(digestchance)) //Finally, let's see if it should run the digest chance.) - to_chat(R, "In response to your struggling, \the [name] begins to get more active...") - to_chat(owner, "You feel your [name] beginning to become active!") digest_mode = DM_DIGEST return @@ -609,6 +615,7 @@ dupe.autotransferwait = autotransferwait dupe.swallow_time = swallow_time dupe.vore_capacity = vore_capacity + dupe.is_wet = is_wet //// Object-holding variables //struggle_messages_outside - strings diff --git a/modular_citadel/code/modules/vore/eating/living_vr.dm b/modular_citadel/code/modules/vore/eating/living_vr.dm index 2e6018f112..74ae0bfe35 100644 --- a/modular_citadel/code/modules/vore/eating/living_vr.dm +++ b/modular_citadel/code/modules/vore/eating/living_vr.dm @@ -1,15 +1,16 @@ ///////////////////// Mob Living ///////////////////// /mob/living var/digestable = FALSE // Can the mob be digested inside a belly? - var/obj/belly/vore_selected // Default to no vore capability. - var/list/vore_organs = list() // List of vore containers inside a mob + var/showvoreprefs = TRUE // Determines if the mechanical vore preferences button will be displayed on the mob or not. + var/obj/belly/vore_selected // Default to no vore capability. + var/list/vore_organs = list() // List of vore containers inside a mob var/devourable = FALSE // Can the mob be vored at all? -// var/feeding = FALSE // Are we going to feed someone else? - var/vore_taste = null // What the character tastes like +// var/feeding = FALSE // Are we going to feed someone else? + var/vore_taste = null // What the character tastes like var/no_vore = FALSE // If the character/mob can vore. - var/openpanel = 0 // Is the vore panel open? - var/noisy = FALSE // tummies are rumbly? - var/absorbed = FALSE //are we absorbed? + var/openpanel = 0 // Is the vore panel open? + var/noisy = FALSE // tummies are rumbly? + var/absorbed = FALSE //are we absorbed? var/next_preyloop // @@ -26,7 +27,8 @@ //Tries to load prefs if a client is present otherwise gives freebie stomach spawn(10 SECONDS) // long delay because the server delays in its startup. just on the safe side. - M.init_vore() + if(M) + M.init_vore() //Return 1 to hook-caller return 1 @@ -281,7 +283,7 @@ */ // -// Custom resist catches for /mob/living +// Our custom resist catches for /mob/living // /mob/living/proc/vore_process_resist() @@ -293,7 +295,7 @@ //Other overridden resists go here - return FALSE + return 0 // internal slimy button in case the loop stops playing but the player wants to hear it /mob/living/proc/preyloop_refresh() diff --git a/modular_citadel/code/modules/vore/eating/vore_vr.dm b/modular_citadel/code/modules/vore/eating/vore_vr.dm index 16366bbb14..32d19fc11b 100644 --- a/modular_citadel/code/modules/vore/eating/vore_vr.dm +++ b/modular_citadel/code/modules/vore/eating/vore_vr.dm @@ -28,7 +28,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE // The datum type bolted onto normal preferences datums for storing Vore stuff // -#define VORE_VERSION 2 +#define VORE_VERSION 3 GLOBAL_LIST_EMPTY(vore_preferences_datums) diff --git a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm index 30209b6da2..bc30de6ca6 100644 --- a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm +++ b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm @@ -156,6 +156,10 @@ dat += "Name:" dat += " '[selected.name]'" + //Belly Type button + dat += "Has Flesh Noises?" + dat += "[selected.is_wet ? "Yes" : "No"]" + //Digest Mode Button dat += "
Belly Mode:" dat += " [selected.digest_mode]" @@ -457,6 +461,9 @@ selected.name = new_name + if(href_list["b_wetness"]) + selected.is_wet = !selected.is_wet + if(href_list["b_mode"]) var/list/menu_list = selected.digest_modes From ae02f091ff3c27bef7a684717dc345d80739eb65 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Fri, 22 Mar 2019 15:06:36 -0500 Subject: [PATCH 02/13] Dragon fixes, UI fixes --- code/__DEFINES/voreconstants.dm | 123 +++--------------- .../living/simple_animal/hostile/hostile.dm | 6 +- .../hostile/megafauna/megafauna.dm | 16 +-- .../code/modules/vore/eating/belly_obj_vr.dm | 25 ++-- .../code/modules/vore/eating/bellymodes_vr.dm | 2 +- .../code/modules/vore/eating/vorepanel_vr.dm | 118 ++++++++--------- 6 files changed, 93 insertions(+), 197 deletions(-) diff --git a/code/__DEFINES/voreconstants.dm b/code/__DEFINES/voreconstants.dm index a133297315..a396cf9962 100644 --- a/code/__DEFINES/voreconstants.dm +++ b/code/__DEFINES/voreconstants.dm @@ -18,39 +18,6 @@ /* // removing sizeplay again GLOBAL_LIST_INIT(player_sizes_list, list("Macro" = SIZESCALE_HUGE, "Big" = SIZESCALE_BIG, "Normal" = SIZESCALE_NORMAL, "Small" = SIZESCALE_SMALL, "Tiny" = SIZESCALE_TINY)) // Edited to make the new travis check go away - - -GLOBAL_LIST_INIT(digest_pred, list( - 'sound/vore/pred/digest_01.ogg', - 'sound/vore/pred/digest_02.ogg', - 'sound/vore/pred/digest_03.ogg', - 'sound/vore/pred/digest_04.ogg', - 'sound/vore/pred/digest_05.ogg', - 'sound/vore/pred/digest_06.ogg', - 'sound/vore/pred/digest_07.ogg', - 'sound/vore/pred/digest_08.ogg', - 'sound/vore/pred/digest_09.ogg', - 'sound/vore/pred/digest_10.ogg', - 'sound/vore/pred/digest_11.ogg', - 'sound/vore/pred/digest_12.ogg', - 'sound/vore/pred/digest_13.ogg', - 'sound/vore/pred/digest_14.ogg', - 'sound/vore/pred/digest_15.ogg', - 'sound/vore/pred/digest_16.ogg', - 'sound/vore/pred/digest_17.ogg', - 'sound/vore/pred/digest_18.ogg')) - -GLOBAL_LIST_INIT(death_pred, list( - 'sound/vore/pred/death_01.ogg', - 'sound/vore/pred/death_02.ogg', - 'sound/vore/pred/death_03.ogg', - 'sound/vore/pred/death_04.ogg', - 'sound/vore/pred/death_05.ogg', - 'sound/vore/pred/death_06.ogg', - 'sound/vore/pred/death_07.ogg', - 'sound/vore/pred/death_08.ogg', - 'sound/vore/pred/death_09.ogg', - 'sound/vore/pred/death_10.ogg')) */ GLOBAL_LIST_INIT(vore_sounds, list( @@ -66,79 +33,21 @@ GLOBAL_LIST_INIT(vore_sounds, list( "Squish3" = 'sound/vore/pred/squish_03.ogg', "Squish4" = 'sound/vore/pred/squish_04.ogg', "Rustle (cloth)" = 'sound/effects/rustle5.ogg', - "rustle2(cloth)" = 'sound/effects/rustle2.ogg', - "rustle3(cloth)" = 'sound/effects/rustle3.ogg', - "rustle4(cloth)" = 'sound/effects/rustle4.ogg', - "rustle5(cloth)" = 'sound/effects/rustle5.ogg', - "None" = null)) -/* -GLOBAL_LIST_INIT(pred_struggle_sounds, list( - "Struggle1" = 'sound/vore/pred/struggle_01.ogg', - "Struggle2" = 'sound/vore/pred/struggle_02.ogg', - "Struggle3" = 'sound/vore/pred/struggle_03.ogg', - "Struggle4" = 'sound/vore/pred/struggle_04.ogg', - "Struggle5" = 'sound/vore/pred/struggle_05.ogg')) - -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', - "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')) - - -GLOBAL_LIST_INIT(prey_struggle_sounds, list( - "Struggle1" = 'sound/vore/prey/struggle_01.ogg', - "Struggle2" = 'sound/vore/prey/struggle_02.ogg', - "Struggle3" = 'sound/vore/prey/struggle_03.ogg', - "Struggle4" = 'sound/vore/prey/struggle_04.ogg', - "Struggle5" = 'sound/vore/prey/struggle_05.ogg')) - -GLOBAL_LIST_INIT(digest_prey, list( - "digest1" = 'sound/vore/prey/digest_01.ogg', - "digest2" = 'sound/vore/prey/digest_02.ogg', - "digest3" = 'sound/vore/prey/digest_03.ogg', - "digest4" = 'sound/vore/prey/digest_04.ogg', - "digest5" = 'sound/vore/prey/digest_05.ogg', - "digest6" = 'sound/vore/prey/digest_06.ogg', - "digest7" = 'sound/vore/prey/digest_07.ogg', - "digest8" = 'sound/vore/prey/digest_08.ogg', - "digest9" = 'sound/vore/prey/digest_09.ogg', - "digest10" = 'sound/vore/prey/digest_10.ogg', - "digest11" = 'sound/vore/prey/digest_11.ogg', - "digest12" = 'sound/vore/prey/digest_12.ogg', - "digest13" = 'sound/vore/prey/digest_13.ogg', - "digest14" = 'sound/vore/prey/digest_14.ogg', - "digest15" = 'sound/vore/prey/digest_15.ogg', - "digest16" = 'sound/vore/prey/digest_16.ogg', - "digest17" = 'sound/vore/prey/digest_17.ogg', - "digest18" = 'sound/vore/prey/digest_18.ogg')) - -GLOBAL_LIST_INIT(death_prey, list( - "death1" = 'sound/vore/prey/death_01.ogg', - "death2" = 'sound/vore/prey/death_02.ogg', - "death3" = 'sound/vore/prey/death_03.ogg', - "death4" = 'sound/vore/prey/death_04.ogg', - "death5" = 'sound/vore/prey/death_05.ogg', - "death6" = 'sound/vore/prey/death_06.ogg', - "death7" = 'sound/vore/prey/death_07.ogg', - "death8" = 'sound/vore/prey/death_08.ogg', - "death9" = 'sound/vore/prey/death_09.ogg', - "death10" = 'sound/vore/prey/death_10.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(release_sounds, list( - "rustle (cloth)" = 'sound/effects/rustle1.ogg', - "rustle2 (cloth)" = 'sound/effects/rustle2.ogg', - "rustle3 (cloth)" = 'sound/effects/rustle3.ogg', - "rustle4 (cloth)" = 'sound/effects/rustle4.ogg', - "rustle5 (cloth)" = 'sound/effects/rustle5.ogg', - "Stomach Move" = 'sound/vore/pred/stomachmove.ogg', - "Pred Escape" = 'sound/vore/pred/escape.ogg', - "Splatter" = 'sound/effects/splat.ogg', - "None" = null)) \ No newline at end of file + "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/pred/stomachmove.ogg', + "Pred Escape" = 'sound/vore/pred/escape.ogg', + "Splatter" = 'sound/effects/splat.ogg', + "None" = null + ) diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index d8635060ee..941ba0ec69 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -100,7 +100,7 @@ if(!target || !isturf(target.loc) || !isturf(loc) || stat == DEAD) return var/target_dir = get_dir(src,target) - + var/static/list/cardinal_sidestep_directions = list(-90,-45,0,45,90) var/static/list/diagonal_sidestep_directions = list(-45,0,45) var/chosen_dir = 0 @@ -202,6 +202,8 @@ if(see_invisible < the_target.invisibility)//Target's invisible to us, forget it return FALSE + if(isbelly(the_target.loc)) //Target's inside a gut, forget about it too + return FALSE if(search_objects < 2) if(isliving(the_target)) var/mob/living/L = the_target @@ -301,7 +303,7 @@ if(target) if(targets_from && isturf(targets_from.loc) && target.Adjacent(targets_from)) //If they're next to us, attack MeleeAction() - else + else if(rapid_melee > 1 && target_distance <= melee_queue_distance) MeleeAction(FALSE) in_melee = FALSE //If we're just preparing to strike do not enter sidestep mode diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 43bc2c26f8..92ac07b1a0 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -83,18 +83,12 @@ if(L.stat != DEAD) if(!client && ranged && ranged_cooldown <= world.time) OpenFire() - - else if(L.stat >= SOFT_CRIT) - if(vore_active == TRUE && L.devourable == TRUE) - if(isliving(target) && !target.Adjacent(targets_from)) - return - else + if(L.Adjacent(src) && (L.stat != CONSCIOUS)) + if(vore_active && L.devourable == TRUE) dragon_feeding(src,L) - if(L.loc == src.contents) - LoseTarget() - return 0 - else - devour(L) + LoseTarget() + else + devour(L) /mob/living/simple_animal/hostile/megafauna/proc/devour(mob/living/L) if(!L) diff --git a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm index e76a09d4b7..142e5880d5 100644 --- a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm +++ b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm @@ -15,7 +15,7 @@ desc = "It's a belly! You're in it!" // Flavor text description of inside sight/sound/smells/feels. var/vore_sound = "Gulp" // Sound when ingesting someone var/vore_verb = "ingest" // Verb for eating with this in messages - var/release_sound = "Splatter" + var/release_sound = "Splatter" // Sound for letting someone out. var/human_prey_swallow_time = 100 // Time in deciseconds to swallow /mob/living/carbon/human var/nonhuman_prey_swallow_time = 30 // Time in deciseconds to swallow anything else var/emote_time = 60 SECONDS // How long between stomach emotes at prey @@ -30,7 +30,6 @@ var/can_taste = FALSE // If this belly prints the flavor of prey when it eats someone. var/bulge_size = 0.25 // The minimum size the prey has to be in order to show up on examine. // var/shrink_grow_size = 1 // This horribly named variable determines the minimum/maximum size it will shrink/grow prey to. - var/silent = FALSE var/transferlocation // Location that the prey is released if they struggle and get dropped off. var/transferchance = 0 // % Chance of prey being transferred to transfer location when resisting @@ -127,7 +126,6 @@ "escapechance", "can_taste", "bulge_size", - "silent", "transferlocation", "transferchance", "autotransferchance", @@ -170,7 +168,7 @@ //Sound w/ antispam flag setting if(is_wet && !recent_sound) - for(var/mob/M in get_hearers_in_view(5, get_turf(owner))) + for(var/mob/M in get_hearers_in_view(2, get_turf(owner))) if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) playsound(get_turf(owner),"[src.vore_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) recent_sound = TRUE @@ -184,7 +182,7 @@ // Release all contents of this belly into the owning mob's location. // If that location is another mob, contents are transferred into whichever of its bellies the owning mob is in. // Returns the number of mobs so released. -/obj/belly/proc/release_all_contents(var/include_absorbed = FALSE) +/obj/belly/proc/release_all_contents(var/include_absorbed = FALSE, var/silent = FALSE) var/atom/destination = drop_location() var/count = 0 for(var/thing in contents) @@ -203,7 +201,7 @@ SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "emptyprey", /datum/mood_event/emptyprey) AM.forceMove(destination) // Move the belly contents into the same location as belly's owner. count++ - for(var/mob/M in get_hearers_in_view(5, get_turf(owner))) + for(var/mob/M in get_hearers_in_view(2, get_turf(owner))) if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) playsound(get_turf(owner),"[src.release_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) if(!silent) @@ -216,16 +214,15 @@ // Release a specific atom from the contents of this belly into the owning mob's location. // If that location is another mob, the atom is transferred into whichever of its bellies the owning mob is in. // Returns the number of atoms so released. -/obj/belly/proc/release_specific_contents(var/atom/movable/M) +/obj/belly/proc/release_specific_contents(var/atom/movable/M, var/silent = FALSE) if (!(M in contents)) return FALSE // They weren't in this belly anyway M.forceMove(drop_location()) // Move the belly contents into the same location as belly's owner. items_preserved -= M - if(release_sound) - for(var/mob/H in get_hearers_in_view(5, get_turf(owner))) - if(H.client && (H.client.prefs.cit_toggles & EATING_NOISES)) - playsound(get_turf(owner),"[src.release_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) + for(var/mob/H in get_hearers_in_view(2, get_turf(owner))) + if(H.client && (H.client.prefs.cit_toggles & EATING_NOISES)) + playsound(get_turf(owner),"[src.release_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) if(istype(M,/mob/living)) var/mob/living/ML = M @@ -515,6 +512,11 @@ var/sound/prey_struggle = sound(get_sfx("prey_struggle")) R.playsound_local(get_turf(R),prey_struggle,45,0) + else + for(var/mob/M in get_hearers_in_view(2, get_turf(owner))) + if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) + playsound(get_turf(owner),"rustle",35,0,-5,1,ignore_walls = FALSE,channel=CHANNEL_PRED) + for(var/mob/M in get_hearers_in_view(3, get_turf(owner))) 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 @@ -608,7 +610,6 @@ dupe.escapechance = escapechance dupe.can_taste = can_taste dupe.bulge_size = bulge_size - dupe.silent = silent dupe.transferlocation = transferlocation dupe.transferchance = transferchance dupe.autotransferchance = autotransferchance diff --git a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm b/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm index 6c528f75a9..542241e9f2 100644 --- a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm +++ b/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm @@ -25,7 +25,7 @@ for(var/mob/living/M in contents) if(isbelly(M.loc)) if(world.time > M.next_preyloop) - if(!silent) + if(is_wet) M.stop_sound_channel(CHANNEL_PREYLOOP) // sanity just in case var/sound/preyloop = sound('sound/vore/prey/loop.ogg', repeat = TRUE) M.playsound_local(get_turf(src),preyloop,80,0, channel = CHANNEL_PREYLOOP) diff --git a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm index bc30de6ca6..3d20526a5c 100644 --- a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm +++ b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm @@ -18,9 +18,10 @@ var/dat = picker_holder.gen_vui(src) - picker_holder.popup = new(src, "insidePanel","Vore Panel", 400, 600, picker_holder) + picker_holder.popup = new(src, "insidePanel","Vore Panel", 450, 700, picker_holder) picker_holder.popup.set_content(dat) picker_holder.popup.open() + src.openpanel = 1 /mob/living/proc/updateVRPanel() //Panel popup update call from belly events. if(src.openpanel == 1) @@ -30,7 +31,7 @@ var/dat = picker_holder.gen_vui(src) - picker_holder.popup = new(src, "insidePanel","Vore Panel", 400, 600, picker_holder) + picker_holder.popup = new(src, "insidePanel","Vore Panel", 450, 700, picker_holder) picker_holder.popup.set_content(dat) picker_holder.popup.open() @@ -39,7 +40,7 @@ // /datum/vore_look var/obj/belly/selected - var/show_interacts = TRUE + var/show_interacts = 0 var/datum/browser/popup var/loop = null; // Magic self-reference to stop the handler from being GC'd before user takes action. @@ -61,7 +62,7 @@ var/obj/belly/inside_belly = userloc var/mob/living/eater = inside_belly.owner - //Don't display this part if we couldn't find the belly since could be held in hand. + //Don't display this part if we couldn't find the belly since could be held in hand. if(inside_belly) dat += "You are currently [user.absorbed ? "absorbed into " : "inside "] [eater]'s [inside_belly]!

" @@ -102,7 +103,6 @@ dat += "
  • [B.name]" else dat += "
  • [B.name]" - var/spanstyle switch(B.digest_mode) if(DM_HOLD) @@ -157,7 +157,7 @@ dat += " '[selected.name]'" //Belly Type button - dat += "Has Flesh Noises?" + dat += "
    Is Fleshy:" dat += "[selected.is_wet ? "Yes" : "No"]" //Digest Mode Button @@ -173,11 +173,11 @@ dat += " '[selected.desc]'" //Belly sound - dat += "
    Set Vore Sound" + dat += "
    Vore Sound: [selected.vore_sound]" dat += "Test" //Release sound - dat += "
    Set Release Sound" + dat += "
    Release Sound: [selected.release_sound]" dat += "Test" //Belly messages @@ -205,10 +205,6 @@ dat += "
    Set Belly Escape Time" dat += " [selected.escapetime/10]s" - dat += "
    " - dat += "
    Set Belly Absorb Chance" - dat += " [selected.absorbchance]%" - //Special
    here to add a gap dat += "
    " dat += "
    Set Belly Transfer Chance" @@ -219,14 +215,13 @@ //Special
    here to add a gap dat += "
    " + dat += "
    Set Belly Absorb Chance" + dat += " [selected.absorbchance]%" + dat += "
    Set Belly Digest Chance" dat += " [selected.digestchance]%" dat += "
    " - // Belly Silence - dat += "
    Belly Silence (for not belly bellies):" - dat += " [selected.silent ? "Yes" : "No"]" - //Delete button dat += "
    Delete Belly" @@ -262,25 +257,26 @@ if(href_list["close"]) qdel(src) // Cleanup + user.openpanel = 0 return if(href_list["show_int"]) show_interacts = !show_interacts - return TRUE //Force update + return 1 //Force update if(href_list["int_help"]) - to_chat(usr,"These control how your belly responds to someone using 'resist' while inside you. The percent chance to trigger each is listed below, \ + alert("These control how your belly responds to someone using 'resist' while inside you. The percent chance to trigger each is listed below, \ and you can change them to whatever you see fit. Setting them to 0% will disable the possibility of that interaction. \ - These only function as long as interactions are turned on in general. Keep in mind, the 'belly mode' interactions (digest) \ - will affect all prey in that belly, if one resists and triggers digestion. If multiple trigger at the same time, \ - only the first in the order of 'Escape > Transfer > Absorb > Digest' will occur.") - return TRUE //Force update + These only function as long as interactions are turned on in general. Keep in mind, the 'belly mode' interactions (digest/absorb) \ + will affect all prey in that belly, if one resists and triggers digestion/absorption. If multiple trigger at the same time, \ + only the first in the order of 'Escape > Transfer > Absorb > Digest' will occur.","Interactions Help") + return 0 //Force update if(href_list["outsidepick"]) var/atom/movable/tgt = locate(href_list["outsidepick"]) var/obj/belly/OB = locate(href_list["outsidebelly"]) if(!(tgt in OB)) //Aren't here anymore, need to update menu. - return TRUE + return 1 var/intent = "Examine" if(istype(tgt,/mob/living)) @@ -293,11 +289,11 @@ if("Help Out") //Help the inside-mob out if(user.stat || user.absorbed || M.absorbed) to_chat(user,"You can't do that in your state!") - return + return 1 to_chat(user,"You begin to push [M] to freedom!") to_chat(M,"[usr] begins to push you to freedom!") - to_chat(OB.owner,"Someone is trying to escape from inside you!") + to_chat(M.loc,"Someone is trying to escape from inside you!") sleep(50) if(prob(33)) OB.release_specific_contents(M) @@ -309,15 +305,14 @@ to_chat(M," Even with [user]'s help, you slip back inside again.") to_chat(OB.owner,"Your body efficiently shoves [M] back where they belong.") - if("Devour") //Eat the inside mob if(user.absorbed || user.stat) to_chat(user,"You can't do that in your state!") - return + return 1 if(!user.vore_selected) to_chat(user,"Pick a belly on yourself first!") - return + return 1 var/obj/belly/TB = user.vore_selected to_chat(user,"You begin to [lowertext(TB.vore_verb)] [M] into your [lowertext(TB.name)]!") @@ -333,9 +328,9 @@ else if(istype(tgt,/obj/item)) var/obj/item/T = tgt - if(!(tgt in OB.contents)) + if(!(tgt in OB)) //Doesn't exist anymore, update. - return TRUE + return 1 intent = alert("What do you want to do to that?","Query","Examine","Use Hand") switch(intent) if("Examine") @@ -343,8 +338,8 @@ if("Use Hand") if(user.stat) - to_chat(user, "You can't do that in your state!") - return + to_chat(user,"You can't do that in your state!") + return 1 user.ClickOn(T) sleep(5) //Seems to exit too fast for the panel to update @@ -357,32 +352,31 @@ intent = alert("Eject all, Move all?","Query","Eject all","Cancel","Move all") switch(intent) if("Cancel") - return + return 0 if("Eject all") if(user.stat) - to_chat(user, "You can't do that in your state!") - return + to_chat(user,"You can't do that in your state!") + return 0 selected.release_all_contents() - to_chat(user.loc,"Everything is released from [user]!") if("Move all") if(user.stat) - to_chat(user, "You can't do that in your state!") - return FALSE + to_chat(user,"You can't do that in your state!") + return 0 var/obj/belly/choice = input("Move all where?","Select Belly") as null|anything in user.vore_organs if(!choice) - return FALSE + return 0 for(var/atom/movable/tgt in selected) - selected.transfer_contents(tgt, choice, 1) to_chat(tgt,"You're squished from [user]'s [lowertext(selected)] to their [lowertext(choice.name)]!") + selected.transfer_contents(tgt, choice, 1) var/atom/movable/tgt = locate(href_list["insidepick"]) if(!(tgt in selected)) //Old menu, needs updating because they aren't really there. - return TRUE//Forces update + return 1 //Forces update intent = "Examine" intent = alert("Examine, Eject, Move? Examine if you want to leave this box.","Query","Examine","Eject","Move") switch(intent) @@ -391,11 +385,10 @@ if("Eject") if(user.stat) - to_chat(user, "You can't do that in your state!") - return FALSE + to_chat(user,"You can't do that in your state!") + return 0 selected.release_specific_contents(tgt) - user.loc << "[tgt] is released from [user]!" if("Move") if(user.stat) @@ -547,7 +540,7 @@ if(!choice) return - selected.release_sound = GLOB.release_sounds[choice] + selected.release_sound = choice if(href_list["b_releasesoundtest"]) var/soundfile = selected.release_sound @@ -560,7 +553,7 @@ if(!choice) return - selected.vore_sound = GLOB.vore_sounds[choice] + selected.vore_sound = choice if(href_list["b_soundtest"]) var/soundfile = selected.vore_sound @@ -584,17 +577,17 @@ selected.bulge_size = (new_bulge/100) if(href_list["b_escapable"]) - if(selected.escapable == FALSE) //Possibly escapable and special interactions. - selected.escapable = TRUE - to_chat(usr,"Prey now have special interactions with your [selected.name] depending on your settings.") - else if(selected.escapable == TRUE) //Never escapable. - selected.escapable = FALSE - to_chat(usr,"Prey will not be able to have special interactions with your [selected.name].") - show_interacts = FALSE //Force the hiding of the panel + if(selected.escapable == 0) //Possibly escapable and special interactions. + selected.escapable = 1 + to_chat(usr,"Prey now have special interactions with your [lowertext(selected.name)] depending on your settings.") + else if(selected.escapable == 1) //Never escapable. + selected.escapable = 0 + to_chat(usr,"Prey will not be able to have special interactions with your [lowertext(selected.name)].") + show_interacts = 0 //Force the hiding of the panel else - to_chat(usr,"Something went wrong. Your stomach will now not have special interactions. Press the button enable them again and tell a dev.") //If they somehow have a varable that's not 0 or 1 - selected.escapable = TRUE - show_interacts = FALSE //Force the hiding of the panel + alert("Something went wrong. Your stomach will now not have special interactions. Press the button enable them again and tell a dev.","Error") //If they somehow have a varable that's not 0 or 1 + selected.escapable = 0 + show_interacts = 0 //Force the hiding of the panel if(href_list["b_escapechance"]) var/escape_chance_input = input(user, "Set prey escape chance on resist (as %)", "Prey Escape Chance") as num|null @@ -612,14 +605,14 @@ selected.transferchance = sanitize_integer(transfer_chance_input, 0, 100, initial(selected.transferchance)) if(href_list["b_transferlocation"]) - var/choice = input("Where do you want your [selected.name] to lead if prey resists?","Select Belly") as null|anything in (user.vore_organs + "None - Remove" - selected.name) + var/obj/belly/choice = input("Where do you want your [lowertext(selected.name)] to lead if prey resists?","Select Belly") as null|anything in (user.vore_organs + "None - Remove" - selected) if(!choice) //They cancelled, no changes - return FALSE + return 0 else if(choice == "None - Remove") selected.transferlocation = null else - selected.transferlocation = user.vore_organs[choice] + selected.transferlocation = choice.name if(href_list["b_absorbchance"]) var/absorb_chance_input = input(user, "Set belly absorb mode chance on resist (as %)", "Prey Absorb Chance") as num|null @@ -631,13 +624,10 @@ if(!isnull(digest_chance_input)) selected.digestchance = sanitize_integer(digest_chance_input, 0, 100, initial(selected.digestchance)) - if(href_list["b_silent"]) - selected.silent = !selected.silent - if(href_list["b_del"]) var/alert = alert("Are you sure you want to delete your [lowertext(selected.name)]?","Confirmation","Delete","Cancel") if(!alert == "Delete") - return FALSE + return 0 var/failure_msg = "" @@ -658,7 +648,7 @@ if(failure_msg) alert(user,failure_msg,"Error!") - return FALSE + return 0 qdel(selected) selected = user.vore_organs[1] From df0aa7cadbcf907dc4105570475a5644af247834 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Fri, 22 Mar 2019 17:16:38 -0500 Subject: [PATCH 03/13] missing ) in macro call --- code/__DEFINES/voreconstants.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__DEFINES/voreconstants.dm b/code/__DEFINES/voreconstants.dm index a396cf9962..710b11ae16 100644 --- a/code/__DEFINES/voreconstants.dm +++ b/code/__DEFINES/voreconstants.dm @@ -50,4 +50,4 @@ GLOBAL_LIST_INIT(release_sounds, list( "Pred Escape" = 'sound/vore/pred/escape.ogg', "Splatter" = 'sound/effects/splat.ogg', "None" = null - ) + )) From e8dcb44317f312e3347fbc7d6455895a90f1eeed Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sat, 23 Mar 2019 07:43:55 -0500 Subject: [PATCH 04/13] Prevents teleport mice teeth --- code/modules/mob/living/simple_animal/friendly/mouse.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 8c6300fab5..6ec95084dd 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -63,6 +63,9 @@ ..() /mob/living/simple_animal/mouse/handle_automated_action() + if(isbelly(loc) + return + if(prob(chew_probability)) var/turf/open/floor/F = get_turf(src) if(istype(F) && !F.intact) From bdfc3273b8e006f39f1170da8fea231ed133c69d Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sat, 23 Mar 2019 07:44:29 -0500 Subject: [PATCH 05/13] oops I commited before test compiling --- code/modules/mob/living/simple_animal/friendly/mouse.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 6ec95084dd..bf45c9cc73 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -63,7 +63,7 @@ ..() /mob/living/simple_animal/mouse/handle_automated_action() - if(isbelly(loc) + if(isbelly(loc)) return if(prob(chew_probability)) From b11e3bbc96acd0050f506fe547bfa3e5f310b7ce Mon Sep 17 00:00:00 2001 From: Poojawa Date: Mon, 25 Mar 2019 04:19:00 -0500 Subject: [PATCH 06/13] Vore mode button and feeding --- code/__DEFINES/citadel_defines.dm | 3 ++ code/_onclick/hud/_defines.dm | 1 + code/_onclick/hud/human.dm | 7 +++++ .../code/_onclick/hud/screen_objects.dm | 18 +++++++++++ .../code/modules/mob/living/carbon/carbon.dm | 17 ++++++++++ .../carbon/human/species_types/furrypeople.dm | 2 ++ .../code/modules/vore/eating/living_vr.dm | 26 ++++++++++------ .../code/modules/vore/eating/vore_vr.dm | 5 +++ .../code/modules/vore/eating/vorepanel_vr.dm | 29 +++++++++++++++--- modular_citadel/icons/ui/screen_clockwork.dmi | Bin 3074 -> 3641 bytes modular_citadel/icons/ui/screen_midnight.dmi | Bin 5406 -> 5740 bytes modular_citadel/icons/ui/screen_operative.dmi | Bin 5287 -> 5638 bytes .../icons/ui/screen_plasmafire.dmi | Bin 4769 -> 5141 bytes modular_citadel/icons/ui/screen_slimecore.dmi | Bin 4470 -> 4843 bytes 14 files changed, 94 insertions(+), 14 deletions(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index c7daff49ed..82f38eb092 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -12,6 +12,7 @@ #define ui_boxcraft "EAST-4:22,SOUTH+1:6" #define ui_boxarea "EAST-4:6,SOUTH+1:6" #define ui_boxlang "EAST-5:22,SOUTH+1:6" +#define ui_boxvore "EAST-4:22,SOUTH+1:6" //Filters #define CIT_FILTER_STAMINACRIT filter(type="drop_shadow", x=0, y=0, size=-3, border=0, color="#04080F") @@ -130,5 +131,7 @@ //component stuff #define COMSIG_COMBAT_TOGGLED "combatmode_toggled" //called by combat mode toggle on all equipped items. args: (mob/user, combatmode) +#define COMSIG_VORE_TOGGLED "voremode_toggled" // totally not copypasta + //belly sound pref things #define NORMIE_HEARCHECK 4 diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index b558e7c87c..a987f70d7b 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -85,6 +85,7 @@ #define ui_crafting "EAST-5:20,SOUTH:5"//CIT CHANGE - moves this over one tile to accommodate for combat mode toggle #define ui_building "EAST-5:20,SOUTH:21"//CIT CHANGE - ditto #define ui_language_menu "EAST-5:4,SOUTH:21"//CIT CHANGE - ditto +#define ui_voremode "EAST-5:20,SOUTH:5" #define ui_borg_pull "EAST-2:26,SOUTH+1:7" #define ui_borg_radio "EAST-1:28,SOUTH+1:7" diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 1106bee711..01e118aaed 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -109,6 +109,13 @@ using.screen_loc = ui_boxarea // CIT CHANGE static_inventory += using + using = new /obj/screen/voretoggle() //We fancy Vore now + using.icon = tg_ui_icon_to_cit_ui(ui_style) + using.screen_loc = ui_voremode + if(!widescreenlayout) + using.screen_loc = ui_boxvore + static_inventory += using + action_intent = new /obj/screen/act_intent/segmented action_intent.icon_state = mymob.a_intent static_inventory += action_intent diff --git a/modular_citadel/code/_onclick/hud/screen_objects.dm b/modular_citadel/code/_onclick/hud/screen_objects.dm index 5a193335f3..668abcb3d1 100644 --- a/modular_citadel/code/_onclick/hud/screen_objects.dm +++ b/modular_citadel/code/_onclick/hud/screen_objects.dm @@ -47,3 +47,21 @@ icon_state = "combat" else icon_state = "combat_off" + +/obj/screen/voretoggle + name = "toggle vore mode" + icon = 'modular_citadel/icons/ui/screen_midnight.dmi' + icon_state = "nom_off" + +/obj/screen/voretoggle/Click() + if(iscarbon(usr)) + var/mob/living/carbon/C = usr + C.toggle_vore_mode() + +/obj/screen/voretoggle/proc/rebaseintomygut(mob/living/carbon/C) + if(!C) + return + if(C.voremode) + icon_state = "nom" + else + icon_state = "nom_off" diff --git a/modular_citadel/code/modules/mob/living/carbon/carbon.dm b/modular_citadel/code/modules/mob/living/carbon/carbon.dm index d52cc6eabb..95ebe54b29 100644 --- a/modular_citadel/code/modules/mob/living/carbon/carbon.dm +++ b/modular_citadel/code/modules/mob/living/carbon/carbon.dm @@ -5,6 +5,9 @@ var/lastdirchange var/combatmessagecooldown + //oh no vore time + var/voremode = FALSE + /mob/living/carbon/CanPass(atom/movable/mover, turf/target) . = ..() if(.) @@ -19,6 +22,8 @@ if(recoveringstam) return TRUE combatmode = !combatmode + if(voremode) + toggle_vore_mode() if(combatmode) playsound_local(src, 'modular_citadel/sound/misc/ui_toggle.ogg', 50, FALSE, pressure_affected = FALSE) //Sound from interbay! else @@ -34,6 +39,18 @@ SEND_SIGNAL(src, COMSIG_COMBAT_TOGGLED, src, combatmode) return TRUE +mob/living/carbon/proc/toggle_vore_mode() + if(combatmode) + return FALSE //let's not override the main draw of the game these days + voremode = !voremode + if(client) + client.show_popup_menus = !voremode // it's the RIGHT way to nom. gettit + if(hud_used && hud_used.static_inventory) + for(var/obj/screen/voretoggle/selector in hud_used.static_inventory) + selector.rebaseintomygut(src) + SEND_SIGNAL(src, COMSIG_VORE_TOGGLED, src, voremode) + return TRUE + /mob/living/carbon/Move(atom/newloc, direct = 0) var/currentdirection = dir . = ..() diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index edc36ae3af..c34146a90c 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -233,3 +233,5 @@ /mob/living/carbon/human/vore devourable = TRUE + digestable = TRUE + feeding = TRUE diff --git a/modular_citadel/code/modules/vore/eating/living_vr.dm b/modular_citadel/code/modules/vore/eating/living_vr.dm index 74ae0bfe35..45f5667bcb 100644 --- a/modular_citadel/code/modules/vore/eating/living_vr.dm +++ b/modular_citadel/code/modules/vore/eating/living_vr.dm @@ -5,7 +5,7 @@ var/obj/belly/vore_selected // Default to no vore capability. var/list/vore_organs = list() // List of vore containers inside a mob var/devourable = FALSE // Can the mob be vored at all? -// var/feeding = FALSE // Are we going to feed someone else? + var/feeding = FALSE // Are we going to feed someone else? var/vore_taste = null // What the character tastes like var/no_vore = FALSE // If the character/mob can vore. var/openpanel = 0 // Is the vore panel open? @@ -77,13 +77,15 @@ // Critical adjustments due to TG grab changes - Poojawa -/mob/living/proc/vore_attack(var/mob/living/user, var/mob/living/prey) - if(!user || !prey) +/mob/living/proc/vore_attack(var/mob/living/user, var/mob/living/prey, var/mob/living/pred) + if(!user || !prey || !pred) return - if(prey == src && user.zone_selected == "mouth") //you click your target -// if(!feeding(src)) -// return + if(prey == src) //you click your target + if(!src.feeding) + to_chat(user, "They aren't able to be fed.") + to_chat(src, "[user] tried to feed you themselves, but you aren't voracious enough to be fed.") + return if(!is_vore_predator(prey)) to_chat(user, "They aren't voracious enough.") return @@ -96,8 +98,14 @@ user.feed_grabbed_to_self(src, prey) else // click someone other than you/prey -// if(!feeding(src)) -// return + if(!src.feeding) + to_chat(user, "They aren't voracious enough to be fed.") + to_chat(src, "[user] tried to feed you [prey], but you aren't voracious enough to be fed.") + return + if(!prey.feeding) + to_chat(user, "They aren't able to be fed to someone.") + to_chat(prey, "[user] tried to feed you to [src], but you aren't able to be fed to them.") + return if(!is_vore_predator(src)) to_chat(user, "They aren't voracious enough.") return @@ -122,7 +130,7 @@ return perform_the_nom(user, user, pred, belly) /mob/living/proc/feed_grabbed_to_other(var/mob/living/user, var/mob/living/prey, var/mob/living/pred) - return//disabled until I can make that toggle work +// return//disabled until I can make that toggle work var/belly = input("Choose Belly") in pred.vore_organs return perform_the_nom(user, prey, pred, belly) diff --git a/modular_citadel/code/modules/vore/eating/vore_vr.dm b/modular_citadel/code/modules/vore/eating/vore_vr.dm index 32d19fc11b..4cf223c3c4 100644 --- a/modular_citadel/code/modules/vore/eating/vore_vr.dm +++ b/modular_citadel/code/modules/vore/eating/vore_vr.dm @@ -39,6 +39,7 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums) //Actual preferences var/digestable = FALSE var/devourable = FALSE + var/feeding = FALSE // var/allowmobvore = TRUE var/list/belly_prefs = list() var/vore_taste = "nothing in particular" @@ -105,6 +106,7 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums) digestable = json_from_file["digestable"] devourable = json_from_file["devourable"] + feeding = json_from_file["feeding"] vore_taste = json_from_file["vore_taste"] belly_prefs = json_from_file["belly_prefs"] @@ -113,6 +115,8 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums) digestable = FALSE if(isnull(devourable)) devourable = FALSE + if(isnull(feeding)) + feeding = FALSE if(isnull(belly_prefs)) belly_prefs = list() @@ -127,6 +131,7 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums) "version" = version, "digestable" = digestable, "devourable" = devourable, + "feeding" = feeding, "vore_taste" = vore_taste, "belly_prefs" = belly_prefs, ) diff --git a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm index 3d20526a5c..2125e6f0cb 100644 --- a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm +++ b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm @@ -110,7 +110,7 @@ if(DM_DIGEST) spanstyle = "color:red;" if(DM_HEAL) - spanstyle = "color:green;" + spanstyle = "color:darkgreen;" if(DM_NOISY) spanstyle = "color:purple;" if(DM_ABSORB) @@ -238,15 +238,21 @@ dat += "
    " switch(user.digestable) if(TRUE) - dat += "Toggle Digestable (Currently: ON)" + dat += "Toggle Digestable (Currently: ON)" if(FALSE) - dat += "Toggle Digestable (Currently: OFF)" + dat += "Toggle Digestable (Currently: OFF)" switch(user.devourable) if(TRUE) - dat += "Toggle Devourable (Currently: ON)" + dat += "
    Toggle Devourable (Currently: ON)" if(FALSE) - dat += "Toggle Devourable (Currently: OFF)" + dat += "
    Toggle Devourable (Currently: OFF)" + + switch(user.feeding) + if(TRUE) + dat += "
    Toggle Feeding (Currently: ON)" + if(FALSE) + dat += "
    Toggle Feeding (Currently: OFF)" //Returns the dat html to the vore_look return dat @@ -708,5 +714,18 @@ if(user.client.prefs_vr) user.client.prefs_vr.devourable = user.devourable + if(href_list["toggledfeed"]) + var/choice = alert(user, "This button is to toggle your ability to be fed to others. Feeding predators is currently: [user.feeding ? "Allowed" : "Prevented"]", "", "Allow Feeding", "Cancel", "Prevent Feeding") + switch(choice) + if("Cancel") + return + if("Allow Feeding") + user.feeding = TRUE + if("Prevent Feeding") + user.feeding = FALSE + + if(user.client.prefs_vr) + user.client.prefs_vr.feeding = user.feeding + //Refresh when interacted with, returning 1 makes vore_look.Topic update return 1 \ No newline at end of file diff --git a/modular_citadel/icons/ui/screen_clockwork.dmi b/modular_citadel/icons/ui/screen_clockwork.dmi index 499d2663b6c60590f8baeba0c18835cf7459760d..2b70d37f1e812de2df0e59f96c509ca95e517299 100644 GIT binary patch literal 3641 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 GDdvCWQ!{P= literal 3074 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 CSpQ%E diff --git a/modular_citadel/icons/ui/screen_midnight.dmi b/modular_citadel/icons/ui/screen_midnight.dmi index 38d96b86d1564fffe07da6fb46ec6dbf3f9bddfb..396fd4a36ef241530322fb1660cdac416739c62d 100644 GIT binary patch literal 5740 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 ZPKrbH7g!<@Pyc)X4Ha$WdL>BM{{R^}^#%X{ literal 4769 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 RL%aY0002ovPDHLkV1hwYP4xf( literal 4470 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 Date: Wed, 27 Mar 2019 03:18:41 -0500 Subject: [PATCH 07/13] Feeding works! aaaaayyy. Didn't have to martial art it either --- code/modules/mob/living/living_defense.dm | 14 ++++++++ .../code/modules/mob/living/carbon/carbon.dm | 2 -- .../mob/living/carbon/human/human_defense.dm | 2 +- .../code/modules/vore/eating/belly_obj_vr.dm | 15 +++++++++ .../code/modules/vore/eating/living_vr.dm | 33 +++++++++++-------- .../code/modules/vore/eating/vorepanel_vr.dm | 3 +- 6 files changed, 51 insertions(+), 18 deletions(-) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index f5b44db70f..dddbe18666 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -129,6 +129,18 @@ /mob/living/proc/grabbedby(mob/living/carbon/user, supress_message = 0) if(user == src || anchored || !isturf(user.loc)) return FALSE + + if(user.pulling && user.grab_state == GRAB_AGGRESSIVE && user.voremode) + if(ismob(user.pulling)) + var/mob/P = user.pulling + if(P != src) + to_chat(world, "grabbedby check : [user], [P], [src] (target).") + user.vore_attack(user, P, src) //feed grabbed to other + else + to_chat(world, "grabbedby check : [user], [P], [src] (target).") + user.vore_attack(user, P, src) //feed self to grabbed + return + if(!user.pulling || user.pulling != src) user.start_pulling(src, supress_message) return @@ -163,6 +175,8 @@ return 0 if(!user.pulling || user.pulling != src || user.grab_state != old_grab_state || user.a_intent != INTENT_GRAB) return 0 + if(user.voremode && user.grab_state == GRAB_AGGRESSIVE) + return 0 user.grab_state++ switch(user.grab_state) if(GRAB_AGGRESSIVE) diff --git a/modular_citadel/code/modules/mob/living/carbon/carbon.dm b/modular_citadel/code/modules/mob/living/carbon/carbon.dm index 95ebe54b29..75a482745a 100644 --- a/modular_citadel/code/modules/mob/living/carbon/carbon.dm +++ b/modular_citadel/code/modules/mob/living/carbon/carbon.dm @@ -43,8 +43,6 @@ mob/living/carbon/proc/toggle_vore_mode() if(combatmode) return FALSE //let's not override the main draw of the game these days voremode = !voremode - if(client) - client.show_popup_menus = !voremode // it's the RIGHT way to nom. gettit if(hud_used && hud_used.static_inventory) for(var/obj/screen/voretoggle/selector in hud_used.static_inventory) selector.rebaseintomygut(src) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human_defense.dm b/modular_citadel/code/modules/mob/living/carbon/human/human_defense.dm index c1fc6623de..23add047ca 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human_defense.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human_defense.dm @@ -1,6 +1,6 @@ /mob/living/carbon/human/grabbedby(mob/living/carbon/user, supress_message = 0) if(user == src && pulling && !pulling.anchored && grab_state >= GRAB_AGGRESSIVE && isliving(pulling)) - vore_attack(user, pulling) + vore_attack(user, pulling, user) //feeding prey to self else ..() diff --git a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm index 142e5880d5..87c4ba495c 100644 --- a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm +++ b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm @@ -184,6 +184,10 @@ // Returns the number of mobs so released. /obj/belly/proc/release_all_contents(var/include_absorbed = FALSE, var/silent = FALSE) var/atom/destination = drop_location() + //Don't bother if we don't have contents + if(!contents.len) + return 0 + var/count = 0 for(var/thing in contents) var/atom/movable/AM = thing @@ -204,6 +208,12 @@ for(var/mob/M in get_hearers_in_view(2, get_turf(owner))) if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) playsound(get_turf(owner),"[src.release_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) + + //Clean up our own business + items_preserved.Cut() + if(isanimal(owner)) + owner.update_icons() + if(!silent) owner.visible_message("[owner] expels everything from their [lowertext(name)]!") items_preserved.Cut() @@ -244,6 +254,11 @@ if(P.absorbed) absorbed_count++ Pred.reagents.trans_to(Prey, Pred.reagents.total_volume / absorbed_count) + + //Clean up our own business + if(isanimal(owner)) + owner.update_icons() + if(!silent) owner.visible_message("[owner] expels [M] from their [lowertext(name)]!") owner.update_icons() diff --git a/modular_citadel/code/modules/vore/eating/living_vr.dm b/modular_citadel/code/modules/vore/eating/living_vr.dm index 45f5667bcb..cfbdcd49fa 100644 --- a/modular_citadel/code/modules/vore/eating/living_vr.dm +++ b/modular_citadel/code/modules/vore/eating/living_vr.dm @@ -81,35 +81,38 @@ if(!user || !prey || !pred) return - if(prey == src) //you click your target - if(!src.feeding) + if(!isliving(pred)) //no badmin, you can't feed people to ghosts or objects. + return + + if(pred == prey) //you click your target + if(!pred.feeding) to_chat(user, "They aren't able to be fed.") - to_chat(src, "[user] tried to feed you themselves, but you aren't voracious enough to be fed.") + to_chat(pred, "[user] tried to feed you themselves, but you aren't voracious enough to be fed.") return - if(!is_vore_predator(prey)) + if(!is_vore_predator(pred)) to_chat(user, "They aren't voracious enough.") return - feed_self_to_grabbed(user, src) + feed_self_to_grabbed(user, pred) - if(user == src) //you click yourself + else if(pred == user) //you click yourself if(!is_vore_predator(src)) to_chat(user, "You aren't voracious enough.") return - user.feed_grabbed_to_self(src, prey) + feed_grabbed_to_self(user, prey) else // click someone other than you/prey - if(!src.feeding) + if(!pred.feeding) to_chat(user, "They aren't voracious enough to be fed.") - to_chat(src, "[user] tried to feed you [prey], but you aren't voracious enough to be fed.") + to_chat(pred, "[user] tried to feed you [prey], but you aren't voracious enough to be fed.") return if(!prey.feeding) to_chat(user, "They aren't able to be fed to someone.") - to_chat(prey, "[user] tried to feed you to [src], but you aren't able to be fed to them.") + to_chat(prey, "[user] tried to feed you to [pred], but you aren't able to be fed to them.") return - if(!is_vore_predator(src)) + if(!is_vore_predator(pred)) to_chat(user, "They aren't voracious enough.") return - feed_grabbed_to_other(user, prey, src) + feed_grabbed_to_other(user, prey, pred) // // Eating procs depending on who clicked what // @@ -330,9 +333,9 @@ return //Actual escaping forceMove(get_turf(src)) //Just move me up to the turf, let's not cascade through bellies, there's been a problem, let's just leave. - if(is_blind(src) && !has_trait(TRAIT_BLIND)) - src.adjust_blindness(-1) + src.cure_blind("belly_[REF(src)]") src.stop_sound_channel(CHANNEL_PREYLOOP) + SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "fedprey", /datum/mood_event/fedprey) for(var/mob/living/simple_animal/SA in range(10)) SA.prey_excludes[src] = world.time @@ -384,6 +387,7 @@ P.digestable = src.digestable P.devourable = src.devourable + P.feeding = src.feeding P.vore_taste = src.vore_taste var/list/serialized = list() @@ -407,6 +411,7 @@ digestable = P.digestable devourable = P.devourable + feeding = P.feeding vore_taste = P.vore_taste release_vore_contents(silent = TRUE) diff --git a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm index 2125e6f0cb..1a1ec27093 100644 --- a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm +++ b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm @@ -56,7 +56,8 @@ /datum/vore_look/proc/gen_vui(var/mob/living/user) var/dat - + dat += "Remember to toggle the vore mode, it's to the left of your combat toggle. Open mouth means you're voracious!
    " + dat += "
    " var/atom/userloc = user.loc if (isbelly(userloc)) var/obj/belly/inside_belly = userloc From 6fdb5e97f8caf07096eff6a2e96346d2528aa38d Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 27 Mar 2019 03:43:18 -0500 Subject: [PATCH 08/13] removes debug and override --- code/modules/mob/living/living_defense.dm | 12 +++++------- .../modules/mob/living/carbon/human/human_defense.dm | 6 ------ .../code/modules/vore/eating/living_vr.dm | 2 +- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index dddbe18666..d4e14dbd20 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -127,20 +127,18 @@ IgniteMob() /mob/living/proc/grabbedby(mob/living/carbon/user, supress_message = 0) - if(user == src || anchored || !isturf(user.loc)) + if(user == anchored || !isturf(user.loc)) return FALSE if(user.pulling && user.grab_state == GRAB_AGGRESSIVE && user.voremode) if(ismob(user.pulling)) var/mob/P = user.pulling - if(P != src) - to_chat(world, "grabbedby check : [user], [P], [src] (target).") - user.vore_attack(user, P, src) //feed grabbed to other - else - to_chat(world, "grabbedby check : [user], [P], [src] (target).") - user.vore_attack(user, P, src) //feed self to grabbed + user.vore_attack(user, P, src) // User, Prey, Predator return + if(user == src) //we want to be able to self click if we're voracious + return FALSE + if(!user.pulling || user.pulling != src) user.start_pulling(src, supress_message) return diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human_defense.dm b/modular_citadel/code/modules/mob/living/carbon/human/human_defense.dm index 23add047ca..bbff8ee750 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human_defense.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human_defense.dm @@ -1,9 +1,3 @@ -/mob/living/carbon/human/grabbedby(mob/living/carbon/user, supress_message = 0) - if(user == src && pulling && !pulling.anchored && grab_state >= GRAB_AGGRESSIVE && isliving(pulling)) - vore_attack(user, pulling, user) //feeding prey to self - else - ..() - /mob/living/carbon/human/alt_attack_hand(mob/user) if(..()) return diff --git a/modular_citadel/code/modules/vore/eating/living_vr.dm b/modular_citadel/code/modules/vore/eating/living_vr.dm index cfbdcd49fa..fa711e911c 100644 --- a/modular_citadel/code/modules/vore/eating/living_vr.dm +++ b/modular_citadel/code/modules/vore/eating/living_vr.dm @@ -94,7 +94,7 @@ return feed_self_to_grabbed(user, pred) - else if(pred == user) //you click yourself + if(pred == user) //you click yourself if(!is_vore_predator(src)) to_chat(user, "You aren't voracious enough.") return From 181b29e08cdc408f80de001862d4c9150eddde41 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 27 Mar 2019 03:46:30 -0500 Subject: [PATCH 09/13] slightly better commenting --- code/modules/mob/living/living_defense.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index d4e14dbd20..643c91b95a 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -133,7 +133,7 @@ if(user.pulling && user.grab_state == GRAB_AGGRESSIVE && user.voremode) if(ismob(user.pulling)) var/mob/P = user.pulling - user.vore_attack(user, P, src) // User, Prey, Predator + user.vore_attack(user, P, src) // User, Pulled, Predator target (which can be user, pulling, or src) return if(user == src) //we want to be able to self click if we're voracious From e6190fa141966345b707d26200a741affecadca8 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 27 Mar 2019 04:23:37 -0500 Subject: [PATCH 10/13] Make combat mode actually override the VM icon --- modular_citadel/code/_onclick/hud/screen_objects.dm | 2 +- modular_citadel/code/modules/mob/living/carbon/carbon.dm | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modular_citadel/code/_onclick/hud/screen_objects.dm b/modular_citadel/code/_onclick/hud/screen_objects.dm index 668abcb3d1..511627b81f 100644 --- a/modular_citadel/code/_onclick/hud/screen_objects.dm +++ b/modular_citadel/code/_onclick/hud/screen_objects.dm @@ -61,7 +61,7 @@ /obj/screen/voretoggle/proc/rebaseintomygut(mob/living/carbon/C) if(!C) return - if(C.voremode) + if(C.voremode && !C.combatmode) icon_state = "nom" else icon_state = "nom_off" diff --git a/modular_citadel/code/modules/mob/living/carbon/carbon.dm b/modular_citadel/code/modules/mob/living/carbon/carbon.dm index 75a482745a..cd24bfc8a2 100644 --- a/modular_citadel/code/modules/mob/living/carbon/carbon.dm +++ b/modular_citadel/code/modules/mob/living/carbon/carbon.dm @@ -40,12 +40,12 @@ return TRUE mob/living/carbon/proc/toggle_vore_mode() - if(combatmode) - return FALSE //let's not override the main draw of the game these days voremode = !voremode if(hud_used && hud_used.static_inventory) for(var/obj/screen/voretoggle/selector in hud_used.static_inventory) selector.rebaseintomygut(src) + if(combatmode) + return FALSE //let's not override the main draw of the game these days SEND_SIGNAL(src, COMSIG_VORE_TOGGLED, src, voremode) return TRUE From 88d6cf7da8749f66f7a01087a8d449746cd689d4 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 27 Mar 2019 10:33:06 -0500 Subject: [PATCH 11/13] actually fix the god-damned sound issues. fuck --- code/modules/mob/living/death.dm | 3 +++ .../code/modules/vore/eating/belly_obj_vr.dm | 12 ++++++++---- .../code/modules/vore/eating/vorepanel_vr.dm | 14 ++++++++------ 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index f6888a21ec..11e0c56d9e 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -8,6 +8,8 @@ spill_organs(no_brain, no_organs, no_bodyparts) + release_vore_contents(silent = TRUE) // return of the bomb safe internals. + if(!no_bodyparts) spread_bodyparts(no_brain, no_organs) @@ -36,6 +38,7 @@ buckled.unbuckle_mob(src, force = TRUE) dust_animation() + release_vore_contents(silent = TRUE) //technically grief protection, I guess? if they're SM'd it doesn't matter seconds after anyway. spawn_dust(just_ash) QDEL_IN(src,5) // since this is sometimes called in the middle of movement, allow half a second for movement to finish, ghosting to happen and animation to play. Looks much nicer and doesn't cause multiple runtimes. diff --git a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm index 87c4ba495c..e931f37520 100644 --- a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm +++ b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm @@ -170,7 +170,8 @@ if(is_wet && !recent_sound) for(var/mob/M in get_hearers_in_view(2, get_turf(owner))) if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) - playsound(get_turf(owner),"[src.vore_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) + var/sound/devourments = GLOB.vore_sounds[vore_sound] + playsound(get_turf(owner),devourments,50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) recent_sound = TRUE //Messages if it's a mob @@ -207,7 +208,8 @@ count++ for(var/mob/M in get_hearers_in_view(2, get_turf(owner))) if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) - playsound(get_turf(owner),"[src.release_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) + var/sound/releasement = GLOB.release_sounds[release_sound] + playsound(get_turf(owner),releasement,50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) //Clean up our own business items_preserved.Cut() @@ -232,7 +234,8 @@ items_preserved -= M for(var/mob/H in get_hearers_in_view(2, get_turf(owner))) if(H.client && (H.client.prefs.cit_toggles & EATING_NOISES)) - playsound(get_turf(owner),"[src.release_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) + var/sound/releasement = GLOB.release_sounds[release_sound] + playsound(get_turf(owner),releasement,50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) if(istype(M,/mob/living)) var/mob/living/ML = M @@ -315,7 +318,8 @@ if(!silent) for(var/mob/M in get_hearers_in_view(5, get_turf(owner))) if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) - playsound(get_turf(owner),"[src.vore_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) + var/sound/devourments = GLOB.vore_sounds[vore_sound] + playsound(get_turf(owner),devourments,50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) owner.updateVRPanel() for(var/mob/living/M in contents) M.updateVRPanel() diff --git a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm index 1a1ec27093..c83ee788cb 100644 --- a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm +++ b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm @@ -116,6 +116,8 @@ spanstyle = "color:purple;" if(DM_ABSORB) spanstyle = "color:purple;" + if(DM_DRAGON) + spanstyle = "color:blue;" dat += " ([B.contents.len])

  • " @@ -550,9 +552,9 @@ selected.release_sound = choice if(href_list["b_releasesoundtest"]) - var/soundfile = selected.release_sound - if(soundfile) - user << soundfile + var/sound/releasetest = GLOB.release_sounds[selected.release_sound] + if(releasetest) + 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 @@ -563,9 +565,9 @@ selected.vore_sound = choice if(href_list["b_soundtest"]) - var/soundfile = selected.vore_sound - if(soundfile) - user << soundfile + var/sound/voretest = GLOB.vore_sounds[selected.vore_sound] + if(voretest) + user << voretest if(href_list["b_tastes"]) selected.can_taste = !selected.can_taste From d4503e77de2095b928a5b737c86d501beb7797a3 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 27 Mar 2019 10:58:38 -0500 Subject: [PATCH 12/13] Chance for quiet belly growls if HONGRY --- code/game/sound.dm | 3 +++ code/modules/mob/living/carbon/human/species.dm | 7 +++++++ .../code/modules/vore/eating/living_vr.dm | 2 +- sound/vore/growl1.ogg | Bin 0 -> 18952 bytes sound/vore/growl2.ogg | Bin 0 -> 16247 bytes sound/vore/growl3.ogg | Bin 0 -> 14842 bytes sound/vore/growl4.ogg | Bin 0 -> 27683 bytes sound/vore/growl5.ogg | Bin 0 -> 21808 bytes 8 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 sound/vore/growl1.ogg create mode 100644 sound/vore/growl2.ogg create mode 100644 sound/vore/growl3.ogg create mode 100644 sound/vore/growl4.ogg create mode 100644 sound/vore/growl5.ogg diff --git a/code/game/sound.dm b/code/game/sound.dm index cceed31cfb..5503c6103d 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -213,6 +213,9 @@ 'sound/vore/prey/death_04.ogg','sound/vore/prey/death_05.ogg','sound/vore/prey/death_06.ogg', 'sound/vore/prey/death_07.ogg','sound/vore/prey/death_08.ogg','sound/vore/prey/death_09.ogg', 'sound/vore/prey/death_10.ogg') + if("hunger_sounds") + soundin = pick( 'sound/vore/growl1.ogg','sound/vore/growl2.ogg','sound/vore/growl3.ogg','sound/vore/growl4.ogg', + 'sound/vore/growl5.ogg') if("clang") soundin = pick('sound/effects/clang1.ogg', 'sound/effects/clang2.ogg') if("clangsmall") diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 0e5eef2ffb..61b6ac0bec 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1144,6 +1144,13 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.update_inv_w_uniform() H.update_inv_wear_suit() + if(H.noisy && H.nutrition <= NUTRITION_LEVEL_HUNGRY) + if(prob(10)) + playsound(get_turf(H),"hunger_sounds",15,0,-5,1,ignore_walls = FALSE,channel=CHANNEL_PRED) + else if(H.noisy && H.nutrition <= NUTRITION_LEVEL_STARVING) + if(prob(10)) + playsound(get_turf(H),"hunger_sounds",35,0,-5,1,ignore_walls = FALSE,channel=CHANNEL_PRED) + // nutrition decrease and satiety if (H.nutrition > 0 && H.stat != DEAD && !H.has_trait(TRAIT_NOHUNGER)) // THEY HUNGER diff --git a/modular_citadel/code/modules/vore/eating/living_vr.dm b/modular_citadel/code/modules/vore/eating/living_vr.dm index fa711e911c..469dcee276 100644 --- a/modular_citadel/code/modules/vore/eating/living_vr.dm +++ b/modular_citadel/code/modules/vore/eating/living_vr.dm @@ -9,7 +9,7 @@ var/vore_taste = null // What the character tastes like var/no_vore = FALSE // If the character/mob can vore. var/openpanel = 0 // Is the vore panel open? - var/noisy = FALSE // tummies are rumbly? + var/noisy = TRUE // tummies are rumbly? var/absorbed = FALSE //are we absorbed? var/next_preyloop diff --git a/sound/vore/growl1.ogg b/sound/vore/growl1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6a9cef898849fa6e7c48b0e23ed78398328110db GIT binary patch literal 18952 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

    Rz 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 XgIWP_KR*{gp50i_ZY=j8Khp#Nq{LoI literal 0 HcmV?d00001 diff --git a/sound/vore/growl2.ogg b/sound/vore/growl2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..17a9a945599900f45f6899f33c64bfa7aba32938 GIT binary patch literal 16247 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 F|34+iz>)v} literal 0 HcmV?d00001 diff --git a/sound/vore/growl4.ogg b/sound/vore/growl4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5fb3c2db79a63d76e5664f95abf185c9ca17b01f GIT binary patch literal 27683 zcmagG1z1&2*Ec*TICOU(kPc}OlvKLA5s~f=B@U?w(jYA$At@jrAQB?oNFya8C@m6- z%D3@<-_LV@&--4_yRTuc*|YYnnOW<%)?Tw`4%!Y5`T!38b)_5rQwV9=HH0z2{5`yF zoO~{;V7IFN^+*8hZ=o5cecAHAuFIB}6e}9;MH2pt|KBx$_=gcAL^pBrbiAtV?SOW5 zvN8J09<7QN78H~a6c-l08?uRzCGr+>t5PW>f%1i&5lE8iUlA^$f>YIQ|Mi0HV;{1XrSx?gLgkmS*|x8&+~!^ zJmG$Hq=xX9;#4iEFVCMPNPXpM7+1jOZE zP_(ur3OJYSA99ywdPA)KnHCygplJf-WD3~A;g?>FloVwxFk-W+1u9Bn=qZFw4fhbHD<=`3XB^fLXOIvNHFu1IFAa~HAF6@8Q} zLPW(>!GZ0iNYJ<`tlTNjR7>rhYn*bL94njLhU)o->Iwcn0%;L>IT}#llwJCNBzw~g zyZ?8RbL{5tD|4O(YKsuGv^SJ>fW#3x^X&NKn zHHiPMgiEypAScAoyR$F z2eWz#vc|K0MpX&2Oa3VZk>y}lmrp`F zv>eXH7K4BI{R4*PoUtdJp(7@2x-_7)i-{Pxi z%Q?T5*^rgl$G53t{wJ{h%W?o@G*N$TGR-Dls4q8CO9A&E1^?S}yeRsT83vNs)a%(a zC;3LciE1B-PLM0=ifZapT24^xG!a(Ggmsk^XH;6CADTaZ%pVhxQnI`2xz8q52a3~Z z)F0&)liiK2h8h8E=nubeJc$w}M*)BhfgT=rbei5M_va+NL7@!>JvGU)T>Vi=9LA_Y zAyi%@33myD{wQ}JL)5VRMsDP|JQo1yP8js3z$I#{2uL`=swdl6s;D{zyE?hz7=_&| zx#n!T=!mG8u7TkYx#6^d;Ubl$VH3M1xu)iK14D8}LrTN<8JdQTZeyZ$^9F`XREE<{ zc8gS@#uZqo6QKhJ>zDX`7c(Q6n|NX8_qU~>G~S#8rqo}7@GRqnVuRN z&xEK$RDI2PN<+gY!}()3!;FwMUqee{yZKW?Q>sw&+32;CkTsf1&a=~g5cSTC-JMr{ zD_l<5PR>QoE3&yND#|OG+$w6S&5O1wiYf-{9V%+72J2r`*0^p%)SBlN^?Vf-e3kW8 z=M{Y0P0uS@s|V|Ab80HLoA&X$`Lvt}xt<~GTUfZpL!KK_orIlY>%UfIB zw_Cl2o7@`5Y^^WTEL5RWR zndF!ULkraGr8_-T*L%b(d*@n0i9cjNEPzS4_^SPfiu{X_Gb(s}#L>sD-&}OKFBPM99{QYy7<6<0^JCWma|BhdT6z@JVbr zHiEnk1_9(SxON4XF67c|gkDhx|Eg?5I26#c2R=}E+Z`fe89p6 zwFr7eaZVas9#PxBlfa-MF~$qUP}n>Y+RVL)!`+h!#WLg!_M)L^%{^ks3j7>s}gqoPVNnC9=P_cU}J#q-Xwf`yVm;e@E~C zTglv|8iL$^WM6XbCdtJP zp@f?of)8ZTX=Z9!K6-jQ>?IkOu4BqfjUVET&0aF2=M42Cg;UZnb=lRNyb5>8j9DB% zWO8cItxddGj2`qz&zwz_Q1PT5WS=y5s~`h1bAg8L!q43}V-w#9$sh6%Gd6KzGiLZ; z)!h?dRBF9q(u-fdoml;=YZfTjR`@IJ%Y}g+q>F+}w6NS#gHUye5tb-O4gb_dCH+?& ziPYvl(1HN9`OkA{ItqWGg;NOCaWg_7?GebnPud$FW}xUJI94AkjPJD!gvIDeNjG>P6$8} z)lZQ8(1d`Dydu2FMhci%SodRN2p&Ifh{N9!?!>bE;D?SvBUv8yz$lV1k>u`y9|^Ua zyKtoxONjni^1=WU04aoMR@Q9E1foRZB$8y(6tYzEGzh)`timwF0KcWTN(eFrs=b|R!Pmwf@XX3MFUlxFv?v>xGxef6cK>_Bvz8~{u3wC- z&dfduAf{>gUAz>(#HO`Vj(oRuFR0~;^Zv@RnlXdi_8&vvruXFmzWj{kHJ#V3EB}oD z%I9rPcJI-h^*rn`KeKWeexPzlMKsev$iT?nsGi(GsdZ-RmS;xQMgEWmYtMoG-uj~X z`g}=O-7)qPb4+$CMeRb}_JpgYg999Em60CJJ4h{D8FJXlL)Jkcw^I1X5=Qfhh>8cy zlrk)M;{P~W!wb0{EY=bLt$9D?;Pz=KbI4ueqfDx2a;mD2S8el9^frH*LyT$~n&?qf z`+3$nlGh$8b~WR*0~1AP!5<*{0<|+sZUeOhZ zz$}Q|4g&d(MGFjfpTY%4&$r4$OVYmIrMc2p@Wx|gON>8j*<0s_GZ!!gd>oc1u2ofz zlNYJ)iC3i*2VQ7BWMKJ?F<0EZMOTcEbP=|#`6)?Ad;@5}-5SRFa-AfHcW68}JOd^? zstUeq3hx&cf8h}^xDi(97mG_-WQipB6Q4d=5)0G!<*a~N=n>vJOm|O5nr$%qnD2fW zaXt5x%h;prsRV2%4@L5|agdrHEwBsvUizQ7C$S#~*-y)jajlflW|b)Nk&+EDS#~o{ z9nxqt+hxG*d&!!gttAYQJWNp%4d76?%XuxM=CKlIND7`>VjZzB__fsh%~t9O)#UlS z0!E9lMuI8~SM*zOFH6Sn++YOz`B&ywl<+8@rer;(1ve zJ&1e1iJ$tnqn}jYZ)Rn)2QCd((zJ}GT}G|!1{`;_f<2kwZW@gtA{CA!fdM_*UT(}^ zQx7#*b+WPI2w}1E(%wixujIf))3k>VUvs3R?>i!?gy2^*mF?m7I1jbkk4M3!Y1=Gn|t7K`Di-*%Zs?|)1)UqC6iAU z)_3dH_~75?aT;#otkm}0dC4zG7UCJ45*Gg~XRqqIm00Rpir25np3p~)6`7V~wp7#^ zj!(DJYvzDa*K%?!tw+a;?O)e&seXTgS@n(oe0b$Sr8#cUYq~1>`B;NP{Ge|z3nqt@ z)vVgrgOpt+-rr_s##PiiLcS+xMVFhr7iwjidU;f(?Z7P|v+(K*7Eh()?8O%`%t1hF z6GM9!i|sqcSAxc4!d=eg54MkKzWr|TImA>{d{ZvD$tJQO@kVTSeTLY0u6*>#ch8^h z-nn6m6uw$l?JD?OOoh}NKPEDs%zsOFAw6Zg6=*$~`-XP5#iN^cfBI1OQDc@MmLg;Q zL(Sjtfli|(hC|UzKmRD2^!c=mIf-}DSk!y5{`{M{_mUP~xC#o5cO&)m^o*(FMe=r3b-Y?Aqt3t2iF6N!iyaqq zE+I15H=f+C|6Oo?zxWt?s_PDqmc+`RwCSWG*YGAj8=SM)lc|&*5gBrR>6a`qCj;f8 zJ=s@AIp(5vJKRHlN*vcn`Ru=6D;kQ=9XDBAa*a!_wcezQvzsWjYM)Y*Hp0aP_!%6h z4Pzr`?!g$_AC-fVH|?)c%yH+Q+tJ?1;R^GkkCeVYB+PsAoNbT;kTY>p(rYM?1$PBH zj2#SpOO$U^f*JfUOy|nV;?_t$a(H>6eetu=)PI*^`^WZYsriiI%oFSQNAXf0tixMY z?0b(Gom;M#GJU6F(PE-Cor_63sXk{=fg2~CPRpFmtoDj&#V(yOcK1zJ9gGIMnVUWQ z;kY>?R>;8Xx%6KCMz{a4sIW#ojn&(qPYgzK@2FRK`jK%RSnzCOBTnxO-4e%7pe$DX zqh0kR^M}*15XHSo9mxdsiZx3-zI3AzqQSTB5MZJFXK^Wo{b`yYs}jSGaflMS^<3 zvgr?Z1&IvGRtxoCcSD!glrr-e$}7@>zif>qiKB^5v5l8;;0xVem7WU2RzhRTXQG)-axlcL&0~Wr1UAT9@G4{m;?G+OS^KM*HP-Wevdni z+iYx@Xq(?lgJm2)dMXxn?8lQqU*?v)+)8Ymu`5z0-MFu0+O|q|m=m#k$hwEM1WA>K z$ZYmaJ$WJh>#m3T*9!xh=(U%1bvb*rxMfeP(Gkj|^s>E3=LC#|Z5_ zaaSjOW?!H}t{E0$E}levbKbXEy8Xr*nUFgxDKQnQ=w6DT)Y4r$eV))|w}>vy zg7cf`vzs9i9R9EJYuzt`4Q1CwEgMuFN0waESIDJxiR~W{IMdUHPWU#n@zrfI-=MMo z)TCGz{k-CN3?T&t2&Ji}ckm{9CrRH9BQUaGrzxY8R;@$?ZEs!>rr1M>GJsH%r!Fh-&f_T)@{G76W=h|Toqt3$qv#Zm{$1O znl{^;RhBkvlGiHWcBeW$n7|sVNn4P?re$eGI&Pu# z`ivCZ&4?O4{kcSeDtqgSjbpJK=_~U(BVMGq1Z04TN7`F)3x6-ooaarG?Cy^Z-XZQA zG|!A%`Q1c$QBiNOU+s<2)?k}+E?zL1X;#(0KC0F2s;Ur=SynxH$ca_^!C$<+kSrC^ z@5nJsmi%Gk%GW$eNxE9CXyH?jA#C~KFDvx{K4knWwtLff)J|QE&5ZSN=h!&f(JL!c z-MczB&>bQ_sd8HxJ*>X?Mq96X&a^t3d$lg|bR+25)y93Krqft-cuRCdedcBTj8wag zqQ995dIoEl9^ATM;Mc>g@T0wMfBk^JI%%&J>8*IPSEe<+)|Y3c`WfsGt)(z|@P6dy zG^_gU0D?JXuYk_X7_$zu>OAYWq+;=(`^rzx>2o|1UkS*@rk|V!)(X77&fUK)8n$EcRtC=#@+Jbstl})(hpRQT2uIruS*>>+*x(h zti)5wXFpeCS>e5(L_10n`*CP5DbVet@j=P1u8TAyS@@Z3)09!iBFy1gTH-^4JA14M z4}Pg+3psnT>+xuv5NZ!Alo=17W0{=98-5Gv)bJ|oyI#}+;EB5&x zobA0k?8_TRrx6Fd<+l1w3Y>p%Ey?BbD7^4MQi{cK7px5Nd}mKD@n-yPVkFB@pJ3;| zA`X^+eCU1@e8D_SM0ENK<5q@M60W8%iF-D9*MYL0ZSQl(QwfdfM`xE01*-~l8wx3^NL&NCv0pqe*iw^-J93eG?89{*XAv+XS|CkUqG?E=R-KCBPELUr?VyRJA zNtHjTah)Gs=_MoDHJ&*YH-GbcgzrkLt=9vi^eDV;q+`}=+B7c(StpI=4dJDrkf$Tb z4BA(I>>0%ev--%SoB~~Ev$x(_Baa&8>nW~vtqXR(smT8&k|SZVYyMj{h3j>jlqmQ! z-}ZnhWY(<**VB2-uyh(GxSQg{zA%)W&Hq!a{po|H<%z5g*(w2XyX_foyZ4EP*)PZ4 z(;uw9MBMf@RlmDcs?Q=@F3)yUD|mCZxGd_5NUG$6FB=aE8c=&{{aI$VC2^Tb^mP&q zHTESJ$Ll$xqNT_Mey&^&Y0+yJ7J3cBjhqqqW#Eiin04EscAKR|FwnsL9=4asYa^QX z5}qG_ymj)Rt1q5$c3EhkAP3QkNs*DEK^lC6{OK++tRG#tU=BHGW{g|4s3%g|Nv@B) z>go;-7cSF68)i9}ybHD$dG{3(244`ZE;g{LwMLN|Z+xx&g4y2laX%^>c>LzmxnJtZ zz?Vn&-kO&wHXU3|Ysua%myj?Y$1>ut7nt??F{dK@Dr}fFF5$o>I$D_8Z@1@-X7RqQ zl~TYF0bcws6NEOs*XxQ`&-rKKBT`HYklk-=X0VpUkN40qGv&@!gnC>IRuQnwkF4v< z9$j^~ALxOO%i~m`9yyfK_cuFlUzGw4Om>C$j+km{aie+yd<3hTA~(^E`oMaQ`E7t4 z$e(XpSR%vkVjv~kik#ymrv=4Moym+Z?GkNCrW;@SaH@7|yZP}*5FIvf*5|mbvlSzW z3|LFn?fKdBn2Xh(NK8 zb()}^S8XRQjSPK?UeN~kzTxqafmNLRRWlkAG2n@h*}kh%+lAy15Z`K?kOhoMbGT^^ z-xxK(L1%?4#sjAFULMH&40h1d5-b%b-TQ8xNGc@9GCr}g*jHkB6LZV|6nSgXU3t&Wx=O6ko@qxvQ9^v2 zwdn;b>DMoB?v43-5c2Hks_AdMv)vFWYNz%#V~(WNTf`-j#>)HYNd(ignkT=o>5E+7 zvvXg~mv)!5AxXM8`K0izrtb-|(=?LYO!xS6u{1!eE&^Gicz^^ zLZ_O7ye?6nwyMRF2b|5fKj7)j?Fedxz~mBX&&-$lxhae%WVIq0WvYjH}Xn@ zY2G6I#mYNN+d(E5dj)xS@08g+{bVf1sqFGbQs$g&i9Gs1rHlD(((QFjwf}X+Ax#z# zI^Pyml0}}flKnuOCGNiGt+WC03}QkJo@zF)Vh`y=Pn~a#!R;~^i&{#(VP1owXXh7< zOG;x?h~zmcTqp5$g)!U*?%Z$pZEzoY*~^e)v*@Mj*i3NaKc7yg+ScB^F8-k-YWW<; zI!pDe__t{3aHYr7`O`#NwxVa**O7^Y?>18<=Mxfr5@fjh8emhrSUWgNoo|>!bn&}L zGr7=C z2dlr<kkca{ye{NggQAX;&$Pz4BpNg4b!_l&vxGekae zoxh=UnK8cDyh!#JB$pmx)(~-XPRIT_EYn~*7+5;<_}Kt#0C1mFx8+^sDDAuZAoK^^ zp%$$doRRc60q>F6wcFvaB7yX*NCVuW*;lnkBy@D?r9mG`I$tEQVJ1Sjl7Bbq)N(zfWrz_LniI{Y-av*9__McFMO>H}E3(__`I=3`H+IaCfD)~}0< zd3(;Ucn_yYA6RF%JQ#hsB*M!i$GEFw(b!^-{%zeVdn15muXnI1MgD+;+H{QC5jE3M z62(+x9#F;(ts>iFItK*e8pqVJJ8PtDX#{Gl`W-4mG_B1vTjk7xNiIZ57e7aQ{AyZy z%?Yp_Qkn9C&Y5vn4idvWlAmOBSkE>+X@Y48QD-xgO?Iqs9VW%wM4hRQJdO?|;PYs= z>I3Rrz&ICx>9{KB$SFBI{I)tF(iv zdf&tRUx(Vzm&edf-qo?M9gATe8g7CFEuJq?pn)F5pL8-{@ExDR$5l%lbj5t>3u6tL ztbN?>+zjM!GdURas#CI5uwe{T_s#m2SMi9-l3k1bDK}-BjGpWlEG}cwEtxGwG#(#e zAyMYo<6?XsQ2X5ETp&#T?AO5kd)XX=F5giN2az?%gr?>UNh*wV(sINzT9t*Z0ATvaBXvL0N((px!k5~0HUCI z@<6=dg;Wh-aRI81q3P}BjE2+)JSB=UmU(4#Gw@}Hs+;6HH&ozy$o;k~)E4Y}a0foB zw+)6~5iNE&JPiEx^>Co+4I<>odm^wdXlAuiz<4)BLwi3XC=zbOt)b0H8M;tKKmtA~ zBc88(5zUR<$2O8rUlN)ASrwlM55ud@P{gfZ~B+ynwv)30y8Uiq+TiTk z_9EN0VMY}8%M$&ful2o-wZZQe0`iM|pCGQfu$nnEtumBOby=5oRAgi6Ncq&AAH>F1 zODN1a@WbuR+E&QfU}(p0O@P51OAC-yz&w#al&}Dr2>{G|h_qA>7)At<_F|wE{;Oan zF2Y&x&eKyxd6->RA{DklZT ztJ94Zj)=tv;pzTou4-3$_K|a=5fMMBoCxkp))4Dlebw@%0DX{17;7vrq!9?ysf5WT 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

    LN82UIV!ezfkLq=I%X>&(QiV4`D5YEO`bj1C~VF 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 literal 0 HcmV?d00001 From 34ce97ef3354bec3a8dcfb2691cb871fe5f91513 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 27 Mar 2019 23:26:33 -0500 Subject: [PATCH 13/13] flip it turnways --- code/modules/mob/living/carbon/human/species.dm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 61b6ac0bec..3f3c2cd548 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1143,14 +1143,15 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.add_trait(TRAIT_FAT, OBESITY) H.update_inv_w_uniform() H.update_inv_wear_suit() - - if(H.noisy && H.nutrition <= NUTRITION_LEVEL_HUNGRY) - if(prob(10)) - playsound(get_turf(H),"hunger_sounds",15,0,-5,1,ignore_walls = FALSE,channel=CHANNEL_PRED) - else if(H.noisy && H.nutrition <= NUTRITION_LEVEL_STARVING) + + if(H.noisy && H.nutrition <= NUTRITION_LEVEL_STARVING) if(prob(10)) playsound(get_turf(H),"hunger_sounds",35,0,-5,1,ignore_walls = FALSE,channel=CHANNEL_PRED) - + + else if(H.noisy && H.nutrition <= NUTRITION_LEVEL_HUNGRY) + if(prob(10)) + playsound(get_turf(H),"hunger_sounds",15,0,-5,1,ignore_walls = FALSE,channel=CHANNEL_PRED) + // nutrition decrease and satiety if (H.nutrition > 0 && H.stat != DEAD && !H.has_trait(TRAIT_NOHUNGER)) // THEY HUNGER