diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm
index 3af5b6cd3e3..b05ad70d3b5 100644
--- a/code/game/objects/effects/decals/Cleanable/misc.dm
+++ b/code/game/objects/effects/decals/Cleanable/misc.dm
@@ -97,6 +97,12 @@
var/list/datum/disease2/disease/virus2 = list()
+/obj/effect/decal/cleanable/vomit/green
+ name = "green vomit"
+ desc = "It's all gummy. Ew."
+ icon_state = "gvomit_1"
+ random_icon_states = list("gvomit_1", "gvomit_2", "gvomit_3", "gvomit_4")
+
/obj/effect/decal/cleanable/poop
name = "poop"
desc = "Gosh, how unpleasant."
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index d871369edfb..7d85cc26b08 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -1441,11 +1441,15 @@ mob/proc/yank_out_object()
break
-/mob/proc/fakevomit() //for aesthetic vomits that need to be instant and do not stun. -Fox
+/mob/proc/fakevomit(green=0) //for aesthetic vomits that need to be instant and do not stun. -Fox
if(stat==DEAD)
return
- src.visible_message("[src] pukes all over \himself!","You puke all over yourself!")
var/turf/location = loc
if (istype(location, /turf/simulated))
- playsound(location, 'sound/effects/splat.ogg', 50, 1)
- location.add_vomit_floor(src, 1)
\ No newline at end of file
+ if(green)
+ src.visible_message("[src] vomits up some green goo!","You vomit up some green goo!")
+ new /obj/effect/decal/cleanable/vomit/green(location)
+ else
+ src.visible_message("[src] pukes all over \himself!","You puke all over yourself!")
+ location.add_vomit_floor(src, 1)
+ playsound(location, 'sound/effects/splat.ogg', 50, 1)
\ No newline at end of file
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index 2c0b448f32f..3d880331e83 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -861,7 +861,6 @@ datum
if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
src = null
if((method==TOUCH && prob(33)) || method==INGEST)
- randmuti(M)
if(prob(98))
randmutb(M)
else
@@ -873,6 +872,8 @@ datum
if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
if(!M) M = holder.my_atom
M.apply_effect(2*REM,IRRADIATE,0)
+ if(prob(4))
+ randmutb(M)
..()
return
diff --git a/code/modules/reagents/newchem/toxins.dm b/code/modules/reagents/newchem/toxins.dm
index f82e15b4cba..470d4684f2f 100644
--- a/code/modules/reagents/newchem/toxins.dm
+++ b/code/modules/reagents/newchem/toxins.dm
@@ -392,7 +392,7 @@ datum/reagent/sulfonal
id = "sulfonal"
description = "Deals some toxin damage, and puts you to sleep after 66 seconds."
reagent_state = LIQUID
- color = "#CF3600"
+ color = "#6BA688"
metabolization_rate = 0.1
/datum/chemical_reaction/sulfonal
@@ -401,12 +401,22 @@ datum/reagent/sulfonal
result = "sulfonal"
required_reagents = list("acetone" = 1, "diethylamine" = 1, "sulfur" = 1)
result_amount = 3
+ mix_message = "The mixture gives off quite a stench."
datum/reagent/sulfonal/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
- if(current_cycle >= 22)
- M.sleeping += 3
M.adjustToxLoss(1)
+ if(current_cycle >= 11)
+ M.drowsyness = max(M.drowsyness, 20)
+ switch(current_cycle)
+ if(0 to 10)
+ if(prob(5))
+ M.emote("yawn")
+ if(22)
+ M.emote("faint")
+ if(23 to INFINITY)
+ if(prob(20))
+ M.emote("faint")
..()
return
@@ -471,16 +481,18 @@ datum/reagent/coniine/on_mob_life(var/mob/living/M as mob)
datum/reagent/curare
name = "Curare"
id = "curare"
- description = "Does some oxygen and toxin damage, weakens you after 33 seconds."
+ description = "A highly dangerous paralytic poison."
reagent_state = LIQUID
- color = "#CF3600"
+ color = "#191919"
metabolization_rate = 0.1
penetrates_skin = 1
datum/reagent/curare/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
+ if(prob(5))
+ M.emote(pick("gasp","drool", "pale"))
if(current_cycle >= 11)
- M.Weaken(3)
+ M.Weaken(15)
M.adjustToxLoss(1)
M.adjustOxyLoss(1)
..()
@@ -645,3 +657,56 @@ datum/reagent/capulettium_plus/on_mob_life(var/mob/living/M as mob)
M.silent += REM + 1
..()
return
+
+datum/reagent/toxic_slurry
+ name = "Toxic Slurry"
+ id = "toxic_slurry"
+ description = "A filthy, carcinogenic sludge produced by the Slurrypod plant."
+ reagent_state = LIQUID
+ color = "#00C81E"
+
+datum/reagent/toxic_slurry/on_mob_life(var/mob/living/M as mob)
+ if(!M) M = holder.my_atom
+ if(prob(10))
+ M.adjustToxLoss(rand(2,4))
+ if(prob(7))
+ switch(pick(1,2))
+ if(1)
+ M.fakevomit(1)
+ if(2)
+ M.Stun(rand(4,10))
+ M << "A horrible migraine overpowers you."
+ ..()
+ return
+
+datum/reagent/glowing_slurry
+ name = "Glowing Slurry"
+ id = "glowing_slurry"
+ description = "This is probably not good for you."
+ reagent_state = LIQUID
+ color = "#00FD00"
+
+datum/reagent/glowing_slurry/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) //same as mutagen
+ if(!..()) return
+ if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
+ src = null
+ if((method==TOUCH && prob(33)) || method==INGEST)
+ if(prob(98))
+ randmutb(M)
+ else
+ randmutg(M)
+ domutcheck(M, null)
+ M.UpdateAppearance()
+ return
+
+datum/reagent/glowing_slurry/on_mob_life(var/mob/living/M as mob)
+ if(!M) M = holder.my_atom
+ M.apply_effect(2*REM,IRRADIATE,0)
+ if(prob(15))
+ randmutb(M)
+ if(prob(5))
+ randmutg(M)
+ domutcheck(M, null)
+ M.UpdateAppearance()
+ ..()
+ return
\ No newline at end of file
diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi
index 9820bb1f8ac..fb311bf9769 100644
Binary files a/icons/effects/blood.dmi and b/icons/effects/blood.dmi differ