Viruses are properly transferred to spilled blood now.
Antigens prevent from infection properly.
Lowered frequency of blood puddle virus check to cut down on processing.

Conflicts:
	code/game/turfs/simulated.dm
	code/modules/mob/living/carbon/human/life.dm
	code/modules/organs/blood.dm
	code/modules/reagents/Chemistry-Reagents.dm
This commit is contained in:
Chinsky
2014-06-21 17:52:59 +04:00
committed by ZomgPonies
parent 3ae1d2011f
commit 47327042eb
5 changed files with 43 additions and 14 deletions
+9 -8
View File
@@ -166,21 +166,22 @@
for(var/obj/effect/decal/cleanable/blood/B in contents)
if(!B.blood_DNA[M.dna.unique_enzymes])
B.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
if (M.virus2.len)
B.virus2 |= virus_copylist(M.virus2)
B.virus2 = virus_copylist(M.virus2)
return 1 //we bloodied the floor
//if there isn't a blood decal already, make one.
if(M.species.bloodflags &BLOOD_GREEN)
var/obj/effect/decal/cleanable/blood/green/newblood = new /obj/effect/decal/cleanable/blood/green(src)
newblood.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
if (M.virus2.len)
newblood.virus2 |= virus_copylist(M.virus2)
else
var/obj/effect/decal/cleanable/blood/newblood = new /obj/effect/decal/cleanable/blood(src)
newblood.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
if (M.virus2.len)
newblood.virus2 |= virus_copylist(M.virus2)
newblood.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
newblood.virus2 = virus_copylist(M.virus2)
newblood.update_icon()
return 1 //we bloodied the floor
+14 -1
View File
@@ -1696,8 +1696,21 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
for (var/ID in virus2)
var/datum/disease2/disease/V = virus2[ID]
V.cure(src)
if(life_tick % 3) //don't spam checks over all objects in view every tick.
for(var/obj/effect/decal/cleanable/O in view(1,src))
if(istype(O,/obj/effect/decal/cleanable/blood))
var/obj/effect/decal/cleanable/blood/B = O
if(B.virus2.len)
for (var/ID in B.virus2)
var/datum/disease2/disease/V = B.virus2[ID]
infect_virus2(src,V.getcopy())
src.findAirborneVirii()
else if(istype(O,/obj/effect/decal/cleanable/mucus))
var/obj/effect/decal/cleanable/mucus/M = O
if(M.virus2.len)
for (var/ID in M.virus2)
var/datum/disease2/disease/V = M.virus2[ID]
infect_virus2(src,V.getcopy())
for (var/ID in virus2)
+6
View File
@@ -183,6 +183,9 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
this.icon_state = pick(iconL)
this.blood_DNA = list()
this.blood_DNA[dna.unique_enzymes] = dna.b_type
for (var/ID in virus2)
var/datum/disease2/disease/V = virus2[ID]
this.virus2[ID] = V.getcopy()
else
for(var/obj/effect/decal/cleanable/blood/drip/green/G in nums)
del G
@@ -201,6 +204,9 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
this.icon_state = pick(iconL)
this.blood_DNA = list()
this.blood_DNA[dna.unique_enzymes] = dna.b_type
for (var/ID in virus2)
var/datum/disease2/disease/V = virus2[ID]
this.virus2[ID] = V.getcopy()
else
for(var/obj/effect/decal/cleanable/blood/drip/G in nums)
del G
+12 -4
View File
@@ -147,10 +147,15 @@ datum
else //injected
M.contract_disease(D, 1, 0)
if(self.data && self.data["virus2"] && istype(M, /mob/living/carbon))//infecting...
if(method == TOUCH)
infect_virus2(M,self.data["virus2"])
else
infect_virus2(M,self.data["virus2"],1)
var/list/vlist = self.data["virus2"]
if (vlist.len)
for (var/ID in vlist)
var/datum/disease2/disease/V = vlist[ID]
if(method == TOUCH)
infect_virus2(M,V.getcopy())
else
infect_virus2(M,V.getcopy(),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"]
@@ -175,6 +180,9 @@ datum
blood_prop.viruses += newVirus
newVirus.holder = blood_prop
if(self.data["virus2"])
blood_prop.virus2 = virus_copylist(self.data["virus2"])
else if(istype(self.data["donor"], /mob/living/carbon/monkey))
var/obj/effect/decal/cleanable/blood/blood_prop = locate() in T
+2 -1
View File
@@ -63,10 +63,11 @@ proc/airborne_can_reach(turf/source, turf/target, var/radius=5)
if ("[disease.uniqueID]" in M.virus2)
return 0
// if one of the antibodies in the mob's body matches one of the disease's antigens, don't infect
if(M.antibodies & disease.antigen != 0)
if((M.antibodies & disease.antigen) != 0)
return
if(M.reagents.has_reagent("spaceacillin"))
return
if(istype(M,/mob/living/carbon/monkey))
var/mob/living/carbon/monkey/chimp = M
if (!(chimp.greaterform in disease.affected_species))