diff --git a/code/WorkInProgress/virus2/base.dm b/code/WorkInProgress/virus2/base.dm index 375ff1dc650..5130d01142c 100644 --- a/code/WorkInProgress/virus2/base.dm +++ b/code/WorkInProgress/virus2/base.dm @@ -38,7 +38,7 @@ proc/airborne_can_reach(turf/source, turf/target) for(var/i=0, i<5, i++) if(!step_towards(dummy, target)) break - var/rval = (dummy.loc == target) + var/rval = (dummy.loc in range(1,target)) del dummy return rval @@ -396,6 +396,12 @@ proc/airborne_can_reach(turf/source, turf/target) mob.say("*sneeze") if(mob.virus2) mob.virus2.spread_airborne(mob) if(mob.virus2) mob.virus2.spread_airborne(mob) + if(prob(5)) + var/obj/effect/decal/cleanable/mucus/this = new(mob.loc) + this.anchored = 0 + step(this, mob.dir) + this.anchored = 1 + this.virus2 = mob.virus2 /datum/disease2/effect/greater/cough @@ -405,6 +411,9 @@ proc/airborne_can_reach(turf/source, turf/target) mob.say("*cough") if(mob.virus2) mob.virus2.spread_airborne(mob) if(mob.virus2) mob.virus2.spread_airborne(mob) + if(prob(2)) + var/obj/effect/decal/cleanable/mucus/this = new(mob.loc) + this.virus2 = mob.virus2 /datum/disease2/effect/greater/gunck name = "Flemmingtons" @@ -481,6 +490,12 @@ proc/airborne_can_reach(turf/source, turf/target) mob.say("*sneeze") if(mob.virus2) mob.virus2.spread_airborne(mob) if(mob.virus2) mob.virus2.spread_airborne(mob) + if(prob(10)) + var/obj/effect/decal/cleanable/mucus/this = new(mob.loc) + this.anchored = 0 + step(this, mob.dir) + this.anchored = 1 + this.virus2 = mob.virus2 /datum/disease2/effect/lesser/cough name = "Anima Syndrome" @@ -489,6 +504,9 @@ proc/airborne_can_reach(turf/source, turf/target) mob.say("*cough") if(mob.virus2) mob.virus2.spread_airborne(mob) if(mob.virus2) mob.virus2.spread_airborne(mob) + if(prob(10)) + var/obj/effect/decal/cleanable/mucus/this = new(mob.loc) + this.virus2 = mob.virus2 /*/datum/disease2/effect/lesser/hallucinations name = "Hallucinational Syndrome" diff --git a/code/defines/obj/decal.dm b/code/defines/obj/decal.dm index eea0a6f926d..29e1ee6519f 100644 --- a/code/defines/obj/decal.dm +++ b/code/defines/obj/decal.dm @@ -58,6 +58,17 @@ D.cure(0) ..() +/obj/effect/decal/cleanable/mucus + name = "Mucus" + desc = "Icky mucus!" + density = 0 + anchored = 1 + layer = 2 + icon = 'blood.dmi' + icon_state = "mucus" + random_icon_states = list("mucus") + var/datum/disease2/disease/virus2 = null + /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm index 332289a01b0..329ab981dbe 100644 --- a/code/game/atom_procs.dm +++ b/code/game/atom_procs.dm @@ -142,6 +142,7 @@ var/obj/effect/decal/cleanable/blood/this = new /obj/effect/decal/cleanable/blood(source2) this.blood_DNA = M.dna.unique_enzymes this.blood_type = M.b_type + this.virus2 = M.virus2 for(var/datum/disease/D in M.viruses) var/datum/disease/newDisease = new D.type this.viruses += newDisease diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 1c38fe1637d..60780b57203 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -998,9 +998,12 @@ D.cure() if(!virus2) - for(var/obj/effect/decal/cleanable/blood/B in src.loc) - if(B.virus2) + for(var/obj/effect/decal/cleanable/blood/B in view(1,src)) + if(B.virus2 && get_infection_chance()) infect_virus2(src,B.virus2) + for(var/obj/effect/decal/cleanable/mucus/M in view(1,src)) + if(M.virus2 && get_infection_chance()) + infect_virus2(src,M.virus2) else virus2.activate(src) diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 92e95d713df..6bcc6460fc9 100644 Binary files a/icons/effects/blood.dmi and b/icons/effects/blood.dmi differ