From 9ab11c0aebe5d23f8c7a929ad5656b7ad37282ca Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Sat, 5 Oct 2013 18:52:08 +0100 Subject: [PATCH] virus fixes. WIP will update commit message later Signed-off-by: Mloc-Argent --- code/modules/mob/living/carbon/human/life.dm | 8 ++++---- code/modules/mob/living/carbon/monkey/life.dm | 8 ++++---- code/modules/reagents/Chemistry-Reagents.dm | 2 +- code/modules/virus2/disease2.dm | 12 +++++++++--- code/modules/virus2/effect.dm | 5 +++-- code/modules/virus2/items_devices.dm | 4 ++-- 6 files changed, 23 insertions(+), 16 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index fb962023b8c..437f9ddf23a 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1361,14 +1361,14 @@ V.cure(src) for(var/obj/effect/decal/cleanable/blood/B in view(1,src)) - if(B.virus2.len && get_infection_chance(src)) + if(B.virus2.len) for (var/ID in B.virus2) - var/datum/disease2/disease/V = virus2[ID] + var/datum/disease2/disease/V = B.virus2[ID] infect_virus2(src,V) for(var/obj/effect/decal/cleanable/mucus/M in view(1,src)) - if(M.virus2.len && get_infection_chance(src)) + if(M.virus2.len) for (var/ID in M.virus2) - var/datum/disease2/disease/V = virus2[ID] + var/datum/disease2/disease/V = M.virus2[ID] infect_virus2(src,V) for (var/ID in virus2) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 675f2c76a59..a2ee1d3e205 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -171,14 +171,14 @@ V.cure(src) for(var/obj/effect/decal/cleanable/blood/B in view(1,src)) - if(B.virus2.len && get_infection_chance(src)) + if(B.virus2.len) for (var/ID in B.virus2) - var/datum/disease2/disease/V = virus2[ID] + var/datum/disease2/disease/V = B.virus2[ID] infect_virus2(src,V) for(var/obj/effect/decal/cleanable/mucus/M in view(1,src)) - if(M.virus2.len && get_infection_chance(src)) + if(M.virus2.len) for (var/ID in M.virus2) - var/datum/disease2/disease/V = virus2[ID] + var/datum/disease2/disease/V = M.virus2[ID] infect_virus2(src,V) for (var/ID in virus2) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 9f52fe6dd86..580cd19bce9 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -126,7 +126,7 @@ datum if(method == TOUCH) infect_virus2(M,self.data["virus2"]) else - infect_virus2(M,self.data["virus2"],1) + infect_virus2(M,self.data["virus2"],1) //injected, force infection! if(self.data && self.data["antibodies"] && istype(M, /mob/living/carbon))//... and curing var/mob/living/carbon/C = M C.antibodies |= self.data["antibodies"] diff --git a/code/modules/virus2/disease2.dm b/code/modules/virus2/disease2.dm index 8efff4f1ca4..2637221525e 100644 --- a/code/modules/virus2/disease2.dm +++ b/code/modules/virus2/disease2.dm @@ -38,9 +38,9 @@ if(mob.stat == 2) return if(stage <= 1 && clicks == 0) // with a certain chance, the mob may become immune to the disease before it starts properly - if(prob(20)) - mob.antibodies |= antigen // 20% immunity is a good chance IMO, because it allows finding an immune person easily - else + if(prob(10)) + mob.antibodies |= antigen + if(mob.radiation > 50) if(prob(1)) majormutate() @@ -65,6 +65,12 @@ for(var/datum/disease2/effectholder/e in effects) e.runeffect(mob,stage) + //Short airborne spread + if(src.spreadtype == "Airborne") + for(var/mob/living/carbon/M in oview(1,mob)) + if(airborne_can_reach(get_turf(mob), get_turf(M))) + infect_virus2(M,src) + //fever mob.bodytemperature = max(mob.bodytemperature, min(310+5*stage ,mob.bodytemperature+5*stage)) clicks+=speed diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm index 0945f60b72c..fb901a4bae1 100644 --- a/code/modules/virus2/effect.dm +++ b/code/modules/virus2/effect.dm @@ -285,9 +285,10 @@ stage = 2 activate(var/mob/living/carbon/mob,var/multiplier) mob.say("*cough") - for(var/mob/living/carbon/M in view(1,mob)) + for(var/mob/living/carbon/M in oview(2,mob)) if(airborne_can_reach(get_turf(mob), get_turf(M))) - for (var/datum/disease2/disease/V in mob.virus2) + for (var/key in mob.virus2) + var/datum/disease2/disease/V = mob.virus2[key] if(V.spreadtype == "Airborne") infect_virus2(M,V) diff --git a/code/modules/virus2/items_devices.dm b/code/modules/virus2/items_devices.dm index 27b01513ea5..5e067f92adc 100644 --- a/code/modules/virus2/items_devices.dm +++ b/code/modules/virus2/items_devices.dm @@ -53,8 +53,8 @@ if(prob(50)) user << "The dish shatters" if(virus2.infectionchance > 0) - for(var/mob/living/carbon/target in view(null, src)) - if(airborne_can_reach(src.loc, target.loc)) + for(var/mob/living/carbon/target in view(1, get_turf(src))) + if(airborne_can_reach(get_turf(src), get_turf(target))) if(get_infection_chance(target)) infect_virus2(target,src.virus2) del src