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