From d398c5276c4fc4e64675047157ac4c7fdf4e0860 Mon Sep 17 00:00:00 2001 From: Putnam Date: Fri, 3 Apr 2020 01:59:48 -0700 Subject: [PATCH] Also made all these "else ifs" into a "switch" --- code/modules/vore/eating/bellymodes.dm | 376 ++++++++++++------------- 1 file changed, 185 insertions(+), 191 deletions(-) diff --git a/code/modules/vore/eating/bellymodes.dm b/code/modules/vore/eating/bellymodes.dm index ea15892a30..27aff93180 100644 --- a/code/modules/vore/eating/bellymodes.dm +++ b/code/modules/vore/eating/bellymodes.dm @@ -60,204 +60,198 @@ var/sound/pred_digest = sound(get_sfx("digest_pred")) var/sound/pred_death = sound(get_sfx("death_pred")) -///////////////////////////// DM_HOLD ///////////////////////////// - if(digest_mode == DM_HOLD) - return SSBELLIES_PROCESSED + switch(digest_mode) + if(DM_HOLD) + return SSBELLIES_PROCESSED -//////////////////////////// DM_DIGEST //////////////////////////// - else if(digest_mode == DM_DIGEST) - if(HAS_TRAIT(owner, TRAIT_PACIFISM)) //obvious. - digest_mode = DM_NOISY - return + if(DM_DIGEST) + if(HAS_TRAIT(owner, TRAIT_PACIFISM)) //obvious. + digest_mode = DM_NOISY + return - for (var/mob/living/M in contents) - if(prob(25)) - if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES) - SEND_SOUND(M,prey_digest) - play_sound = pick(pred_digest) + for (var/mob/living/M in contents) + if(prob(25)) + if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES) + SEND_SOUND(M,prey_digest) + play_sound = pick(pred_digest) - //Pref protection! - if (!M.digestable || M.absorbed) - continue + //Pref protection! + if (!M.digestable || M.absorbed) + continue + + //Person just died in guts! + if(M.stat == DEAD) + var/digest_alert_owner = pick(digest_messages_owner) + var/digest_alert_prey = pick(digest_messages_prey) + + //Replace placeholder vars + digest_alert_owner = replacetext(digest_alert_owner,"%pred",owner) + digest_alert_owner = replacetext(digest_alert_owner,"%prey",M) + digest_alert_owner = replacetext(digest_alert_owner,"%belly",lowertext(name)) + + digest_alert_prey = replacetext(digest_alert_prey,"%pred",owner) + digest_alert_prey = replacetext(digest_alert_prey,"%prey",M) + digest_alert_prey = replacetext(digest_alert_prey,"%belly",lowertext(name)) + + //Send messages + to_chat(owner, "[digest_alert_owner]") + to_chat(M, "[digest_alert_prey]") + M.visible_message("You watch as [owner]'s form loses its additions.") + + owner.nutrition += 400 // so eating dead mobs gives you *something*. + play_sound = pick(pred_death) + if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES) + SEND_SOUND(M,prey_death) + M.stop_sound_channel(CHANNEL_PREYLOOP) + digestion_death(M) + owner.update_icons() + to_update = TRUE + continue + + + // Deal digestion damage (and feed the pred) + if(!(M.status_flags & GODMODE)) + M.adjustFireLoss(digest_burn) + owner.nutrition += 1 + + //Contaminate or gurgle items + var/obj/item/T = pick(touchable_items) + if(istype(T)) + if(istype(T,/obj/item/reagent_containers/food) || istype(T,/obj/item/organ)) + digest_item(T) + + if(DM_HEAL) + for (var/mob/living/M in contents) + if(prob(25)) + if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES) + SEND_SOUND(M,prey_digest) + play_sound = pick(pred_digest) + if(M.stat != DEAD) + if(owner.nutrition >= NUTRITION_LEVEL_STARVING && (M.health < M.maxHealth)) + M.adjustBruteLoss(-3) + M.adjustFireLoss(-3) + owner.nutrition -= 5 + + //for when you just want people to squelch around + if(DM_NOISY) + if(prob(35)) + for(var/mob/M in contents) + if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES) + SEND_SOUND(M,prey_digest) + play_sound = pick(pred_digest) + + + if(DM_ABSORB) + + for (var/mob/living/M in contents) + + if(prob(10))//Less often than gurgles. People might leave this on forever. + if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES) + SEND_SOUND(M,prey_digest) + play_sound = pick(pred_digest) + + if(M.absorbed) + continue + + if(M.nutrition >= 100) //Drain them until there's no nutrients left. Slowly "absorb" them. + var/oldnutrition = (M.nutrition * 0.05) + M.nutrition = (M.nutrition * 0.95) + owner.nutrition += oldnutrition + else if(M.nutrition < 100) //When they're finally drained. + absorb_living(M) + to_update = TRUE + + if(DM_UNABSORB) + + for (var/mob/living/M in contents) + if(M.absorbed && owner.nutrition >= 100) + M.absorbed = FALSE + to_chat(M,"You suddenly feel solid again ") + to_chat(owner,"You feel like a part of you is missing.") + owner.nutrition -= 100 + to_update = TRUE + + //because dragons need snowflake guts + if(digest_mode == DM_DRAGON) + if(HAS_TRAIT(owner, TRAIT_PACIFISM)) //imagine var editing this when you're a pacifist. smh + digest_mode = DM_NOISY + return + + 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) + 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)) + 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))) + SEND_SOUND(H,pred_digest) + else if(H?.client && (H in contents)) + SEND_SOUND(H,prey_digest) + + //No digestion protection for megafauna. //Person just died in guts! - if(M.stat == DEAD) - var/digest_alert_owner = pick(digest_messages_owner) - var/digest_alert_prey = pick(digest_messages_prey) + if(M.stat == DEAD) + var/digest_alert_owner = pick(digest_messages_owner) + var/digest_alert_prey = pick(digest_messages_prey) - //Replace placeholder vars - digest_alert_owner = replacetext(digest_alert_owner,"%pred",owner) - digest_alert_owner = replacetext(digest_alert_owner,"%prey",M) - digest_alert_owner = replacetext(digest_alert_owner,"%belly",lowertext(name)) + //Replace placeholder vars + digest_alert_owner = replacetext(digest_alert_owner,"%pred",owner) + digest_alert_owner = replacetext(digest_alert_owner,"%prey",M) + digest_alert_owner = replacetext(digest_alert_owner,"%belly",lowertext(name)) - digest_alert_prey = replacetext(digest_alert_prey,"%pred",owner) - digest_alert_prey = replacetext(digest_alert_prey,"%prey",M) - digest_alert_prey = replacetext(digest_alert_prey,"%belly",lowertext(name)) + digest_alert_prey = replacetext(digest_alert_prey,"%pred",owner) + digest_alert_prey = replacetext(digest_alert_prey,"%prey",M) + digest_alert_prey = replacetext(digest_alert_prey,"%belly",lowertext(name)) - //Send messages - to_chat(owner, "[digest_alert_owner]") - to_chat(M, "[digest_alert_prey]") - M.visible_message("You watch as [owner]'s form loses its additions.") - - owner.nutrition += 400 // so eating dead mobs gives you *something*. - play_sound = pick(pred_death) - if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES) - SEND_SOUND(M,prey_death) - M.stop_sound_channel(CHANNEL_PREYLOOP) - digestion_death(M) - owner.update_icons() - to_update = TRUE - continue - - - // Deal digestion damage (and feed the pred) - if(!(M.status_flags & GODMODE)) - M.adjustFireLoss(digest_burn) - owner.nutrition += 1 - - //Contaminate or gurgle items - var/obj/item/T = pick(touchable_items) - if(istype(T)) - if(istype(T,/obj/item/reagent_containers/food) || istype(T,/obj/item/organ)) - digest_item(T) - -///////////////////////////// DM_HEAL ///////////////////////////// - if(digest_mode == DM_HEAL) - for (var/mob/living/M in contents) - if(prob(25)) - if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES) - SEND_SOUND(M,prey_digest) - play_sound = pick(pred_digest) - if(M.stat != DEAD) - if(owner.nutrition >= NUTRITION_LEVEL_STARVING && (M.health < M.maxHealth)) - M.adjustBruteLoss(-3) - M.adjustFireLoss(-3) - owner.nutrition -= 5 - -////////////////////////// DM_NOISY ///////////////////////////////// -//for when you just want people to squelch around - if(digest_mode == DM_NOISY) - if(prob(35)) - for(var/mob/M in contents) - if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES) - SEND_SOUND(M,prey_digest) - play_sound = pick(pred_digest) - - -//////////////////////////// DM_ABSORB //////////////////////////// - else if(digest_mode == DM_ABSORB) - - for (var/mob/living/M in contents) - - if(prob(10))//Less often than gurgles. People might leave this on forever. - if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES) - SEND_SOUND(M,prey_digest) - play_sound = pick(pred_digest) - - if(M.absorbed) - continue - - if(M.nutrition >= 100) //Drain them until there's no nutrients left. Slowly "absorb" them. - var/oldnutrition = (M.nutrition * 0.05) - M.nutrition = (M.nutrition * 0.95) - owner.nutrition += oldnutrition - else if(M.nutrition < 100) //When they're finally drained. - absorb_living(M) - to_update = TRUE - -//////////////////////////// DM_UNABSORB //////////////////////////// - else if(digest_mode == DM_UNABSORB) - - for (var/mob/living/M in contents) - if(M.absorbed && owner.nutrition >= 100) - M.absorbed = FALSE - to_chat(M,"You suddenly feel solid again ") - to_chat(owner,"You feel like a part of you is missing.") - owner.nutrition -= 100 - to_update = TRUE - -//////////////////////////DM_DRAGON ///////////////////////////////////// -//because dragons need snowflake guts - if(digest_mode == DM_DRAGON) - if(HAS_TRAIT(owner, TRAIT_PACIFISM)) //imagine var editing this when you're a pacifist. smh - digest_mode = DM_NOISY - return - - 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) - 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)) - 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))) - SEND_SOUND(H,pred_digest) - else if(H?.client && (H in contents)) - SEND_SOUND(H,prey_digest) - - //No digestion protection for megafauna. - - //Person just died in guts! - if(M.stat == DEAD) - var/digest_alert_owner = pick(digest_messages_owner) - var/digest_alert_prey = pick(digest_messages_prey) - - //Replace placeholder vars - digest_alert_owner = replacetext(digest_alert_owner,"%pred",owner) - digest_alert_owner = replacetext(digest_alert_owner,"%prey",M) - digest_alert_owner = replacetext(digest_alert_owner,"%belly",lowertext(name)) - - digest_alert_prey = replacetext(digest_alert_prey,"%pred",owner) - digest_alert_prey = replacetext(digest_alert_prey,"%prey",M) - digest_alert_prey = replacetext(digest_alert_prey,"%belly",lowertext(name)) - - //Send messages - 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.") - play_sound = pick(pred_death) - if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES) - SEND_SOUND(M,prey_death) - M.spill_organs(FALSE,TRUE,TRUE) - M.stop_sound_channel(CHANNEL_PREYLOOP) - digestion_death(M) - owner.update_icons() - to_update = TRUE - continue - - - // Deal digestion damage (and feed the pred) - if(!(M.status_flags & GODMODE)) - M.adjustFireLoss(digest_burn) - M.adjustToxLoss(2) // something something plasma based acids - M.adjustCloneLoss(1) // eventually this'll kill you if you're healing everything else, you nerds. - //Contaminate or gurgle items - var/obj/item/T = pick(touchable_items) - if(istype(T)) - if(istype(T,/obj/item/reagent_containers/food) || istype(T,/obj/item/organ)) - digest_item(T) - -/////////////////////////// Make any noise /////////////////////////// - if(play_sound) - if((world.time + NORMIE_HEARCHECK) > last_hearcheck) - LAZYCLEARLIST(hearing_mobs) - for(var/mob/M in hearers(VORE_SOUND_RANGE, owner)) - if(!M.client || !(M.client.prefs.cit_toggles & DIGESTION_NOISES)) + //Send messages + 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.") + play_sound = pick(pred_death) + if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES) + SEND_SOUND(M,prey_death) + M.spill_organs(FALSE,TRUE,TRUE) + M.stop_sound_channel(CHANNEL_PREYLOOP) + digestion_death(M) + owner.update_icons() + to_update = TRUE continue - LAZYADD(hearing_mobs, M) - last_hearcheck = world.time - for(var/mob/M in hearing_mobs) //so we don't fill the whole room with the sound effect - if(M && M.client && (isturf(M.loc) || (M.loc != src.contents))) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check - M.playsound_local(owner.loc, play_sound, vol = 75, vary = 1, falloff = VORE_SOUND_FALLOFF) - //these are all external sound triggers now, so it's ok. - if(to_update) - for(var/mob/living/M in contents) - if(M.client) - M.updateVRPanel() - if(owner.client) - owner.updateVRPanel() - return SSBELLIES_PROCESSED \ No newline at end of file + + // Deal digestion damage (and feed the pred) + if(!(M.status_flags & GODMODE)) + M.adjustFireLoss(digest_burn) + M.adjustToxLoss(2) // something something plasma based acids + M.adjustCloneLoss(1) // eventually this'll kill you if you're healing everything else, you nerds. + //Contaminate or gurgle items + var/obj/item/T = pick(touchable_items) + if(istype(T)) + if(istype(T,/obj/item/reagent_containers/food) || istype(T,/obj/item/organ)) + digest_item(T) + + /////////////////////////// Make any noise /////////////////////////// + if(play_sound) + if((world.time + NORMIE_HEARCHECK) > last_hearcheck) + LAZYCLEARLIST(hearing_mobs) + for(var/mob/M in hearers(VORE_SOUND_RANGE, owner)) + if(!M.client || !(M.client.prefs.cit_toggles & DIGESTION_NOISES)) + continue + LAZYADD(hearing_mobs, M) + last_hearcheck = world.time + for(var/mob/M in hearing_mobs) //so we don't fill the whole room with the sound effect + if(M && M.client && (isturf(M.loc) || (M.loc != src.contents))) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check + M.playsound_local(owner.loc, play_sound, vol = 75, vary = 1, falloff = VORE_SOUND_FALLOFF) + //these are all external sound triggers now, so it's ok. + if(to_update) + for(var/mob/living/M in contents) + if(M.client) + M.updateVRPanel() + if(owner.client) + owner.updateVRPanel() + + return SSBELLIES_PROCESSED