diff --git a/code/datums/diseases/advance/symptoms/vomit.dm b/code/datums/diseases/advance/symptoms/vomit.dm
index f214c0755a..20aab58acc 100644
--- a/code/datums/diseases/advance/symptoms/vomit.dm
+++ b/code/datums/diseases/advance/symptoms/vomit.dm
@@ -42,7 +42,7 @@ Bonus
return
/datum/symptom/vomit/proc/Vomit(mob/living/carbon/M)
- M.vomit(20)
+ M.vomit(20)
/*
//////////////////////////////////////
@@ -75,7 +75,7 @@ Bonus
severity = 5
/datum/symptom/vomit/blood/Vomit(mob/living/carbon/M)
- M.vomit(0, 1)
+ M.vomit(0,TRUE)
/*
@@ -103,4 +103,4 @@ Bonus
level = 4
/datum/symptom/vomit/projectile/Vomit(mob/living/carbon/M)
- M.vomit(6,0,1,5,1)
+ M.vomit(6, distance = 5)
diff --git a/code/datums/diseases/appendicitis.dm b/code/datums/diseases/appendicitis.dm
index 051adfc3de..64cd95c747 100644
--- a/code/datums/diseases/appendicitis.dm
+++ b/code/datums/diseases/appendicitis.dm
@@ -31,4 +31,4 @@
affected_mob.adjustToxLoss(1)
if(3)
if(prob(1))
- affected_mob.vomit(95)
+ affected_mob.vomit(95)
diff --git a/code/game/gamemodes/changeling/powers/panacea.dm b/code/game/gamemodes/changeling/powers/panacea.dm
index 08d51be262..5fe037042f 100644
--- a/code/game/gamemodes/changeling/powers/panacea.dm
+++ b/code/game/gamemodes/changeling/powers/panacea.dm
@@ -17,7 +17,7 @@
B.leave_victim()
if(iscarbon(user))
var/mob/living/carbon/C = user
- C.vomit(0)
+ C.vomit(0, toxic = TRUE)
to_chat(user, "A parasite exits our form.")
var/list/bad_organs = list(
user.getorgan(/obj/item/organ/body_egg),
@@ -31,7 +31,7 @@
O.Remove(user)
if(iscarbon(user))
var/mob/living/carbon/C = user
- C.vomit(0)
+ C.vomit(0, toxic = TRUE)
O.forceMove(get_turf(user))
user.reagents.add_reagent("mutadone", 10)
diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm b/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm
index 3b0c220b87..13cb65f081 100644
--- a/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm
+++ b/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm
@@ -37,7 +37,7 @@
user.visible_message("As [user] puts [src] on, it flickers off their head!", "The helmet flickers off your head, leaving only nausea!")
if(iscarbon(user))
var/mob/living/carbon/C = user
- C.vomit(20, 1, 1, 0, 1)
+ C.vomit(20)
else
to_chat(user, "\"Do you have a hole in your head? You're about to.\"")
to_chat(user, "The helmet tries to drive a spike through your head as you scramble to remove it!")
@@ -98,7 +98,7 @@
user.visible_message("As [user] puts [src] on, it flickers off their body!", "The curiass flickers off your body, leaving only nausea!")
if(iscarbon(user))
var/mob/living/carbon/C = user
- C.vomit(20, 1, 1, 0, 1)
+ C.vomit(20)
else
to_chat(user, "\"I think this armor is too hot for you to handle.\"")
to_chat(user, "The curiass emits a burst of flame as you scramble to get it off!")
@@ -159,7 +159,7 @@
user.visible_message("As [user] puts [src] on, it flickers off their arms!", "The gauntlets flicker off your arms, leaving only nausea!")
if(iscarbon(user))
var/mob/living/carbon/C = user
- C.vomit(10, 1, 1, 0, 1)
+ C.vomit()
else
to_chat(user, "\"Did you like having arms?\"")
to_chat(user, "The gauntlets suddenly squeeze tight, crushing your arms before you manage to get them off!")
@@ -209,7 +209,7 @@
user.visible_message("As [user] puts [src] on, it flickers off their feet!", "The treads flicker off your feet, leaving only nausea!")
if(iscarbon(user))
var/mob/living/carbon/C = user
- C.vomit(10, 1, 1, 0, 1)
+ C.vomit()
else
to_chat(user, "\"Let's see if you can dance with these.\"")
to_chat(user, "The treads turn searing hot as you scramble to get them off!")
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index f90d100724..e39887fca4 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -523,7 +523,7 @@
to_chat(M, "An overpowering wave of nausea consumes over you. You hunch over, your stomach's contents preparing for a spectacular exit.")
M.Stun(5)
sleep(30)
- M.vomit(50)
+ M.vomit(10, distance = 5)
if(ORION_TRAIL_FLUX)
if(prob(75))
M.Weaken(3)
diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm
index 2d3765a934..7da4eb0a1c 100644
--- a/code/game/machinery/pipe/construction.dm
+++ b/code/game/machinery/pipe/construction.dm
@@ -250,7 +250,7 @@ GLOBAL_LIST_INIT(pipeID2State, list(
if(istype(user, /mob/living/carbon))
var/mob/living/carbon/C = user
for(var/i=1 to 20)
- C.vomit(0,1,0,4,0)
+ C.vomit(0, TRUE, FALSE, 4, FALSE)
if(prob(20))
C.spew_organ()
sleep(5)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 06145235a0..1a7c33a4ab 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -450,7 +450,7 @@
return 0
return ..()
-/mob/living/carbon/proc/vomit(var/lost_nutrition = 10, var/blood = 0, var/stun = 1, var/distance = 0, var/message = 1, var/toxic = 0)
+/mob/living/carbon/proc/vomit(lost_nutrition = 10, blood = FALSE, stun = TRUE, distance = 1, message = TRUE, toxic = FALSE)
if(dna && dna.species && NOHUNGER in dna.species.species_traits)
return 1
@@ -476,6 +476,9 @@
playsound(get_turf(src), 'sound/effects/splat.ogg', 50, 1)
var/turf/T = get_turf(src)
+ if(!blood)
+ nutrition -= lost_nutrition
+ adjustToxLoss(-3)
for(var/i=0 to distance)
if(blood)
if(T)
@@ -485,8 +488,6 @@
else
if(T)
T.add_vomit_floor(src, toxic)//toxic barf looks different
- nutrition -= lost_nutrition
- adjustToxLoss(-3)
T = get_step(T, dir)
if (is_blocked_turf(T))
break
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 7324e156a4..18c0c9ca4b 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -282,9 +282,9 @@
//Puke if toxloss is too high
if(!stat)
if(getToxLoss() >= 45 && nutrition > 20)
- lastpuke ++
- if(lastpuke >= 25) // about 25 second delay I guess
- vomit(20, 0, 1, 0, 1, 1)
+ lastpuke += prob(50)
+ if(lastpuke >= 50) // about 25 second delay I guess
+ vomit(20, toxic = TRUE)
lastpuke = 0
diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm
index 5c56a34a20..0718a1bfdc 100644
--- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm
@@ -17,7 +17,7 @@
var/datum/reagent/consumable/nutri_check = chem
if(nutri_check.nutriment_factor > 0)
var/turf/pos = get_turf(H)
- H.vomit(0, 0, 0, 1, 1)
+ H.vomit(0, FALSE, FALSE, 2, TRUE)
playsound(pos, 'sound/effects/splat.ogg', 50, 1)
H.visible_message("[H] vomits on the floor!", \
"You throw up on the floor!")
diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
index 11db7e8d68..4ac608e680 100644
--- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
@@ -662,7 +662,7 @@
.=..()
if(current_cycle >=11 && prob(min(50,current_cycle)) && ishuman(M))
var/mob/living/carbon/human/H = M
- H.vomit(lost_nutrition = 10, blood = prob(10), stun = prob(50), distance = rand(0,4), message = TRUE, toxic = prob(30))
+ H.vomit(10, prob(10), prob(50), rand(0,4), TRUE, prob(30))
for(var/datum/reagent/toxin/R in M.reagents.reagent_list)
if(R != src)
H.reagents.remove_reagent(R.id,1)
@@ -672,7 +672,7 @@
if(current_cycle >=33 && prob(15) && ishuman(M))
var/mob/living/carbon/human/H = M
H.spew_organ()
- H.vomit(lost_nutrition = 0, blood = 1, stun = 1, distance = 4)
+ H.vomit(0, TRUE, TRUE, 4)
to_chat(H, "You feel something lumpy come up as you vomit.")
/datum/reagent/toxin/curare
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index a166be04a4..37d4a72276 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -277,7 +277,7 @@
else if((findtext(message, vomit_words)))
cooldown = COOLDOWN_STUN
for(var/mob/living/carbon/C in listeners)
- C.vomit(10 * power_multiplier)
+ C.vomit(10 * power_multiplier, distance = power_multiplier)
//SILENCE
else if((findtext(message, silence_words)))