Virus optimizations

This commit is contained in:
ZomgPonies
2013-10-20 19:59:10 -04:00
parent 4b39f22e09
commit 6f552d6eab
3 changed files with 60 additions and 34 deletions
+28 -15
View File
@@ -1384,6 +1384,32 @@
if(!currentTurf.lighting_lumcount)
playsound_local(src,pick(scarySounds),50, 1, -1)
// Separate proc so we can jump out of it when we've succeeded in spreading disease.
proc/findAirborneVirii()
for(var/obj/effect/decal/cleanable/blood/B in get_turf(src))
if(B.virus2.len)
for (var/ID in B.virus2)
var/datum/disease2/disease/V = B.virus2[ID]
if (infect_virus2(src,V))
return 1
for(var/obj/effect/decal/cleanable/mucus/M in get_turf(src))
if(M.virus2.len)
for (var/ID in M.virus2)
var/datum/disease2/disease/V = M.virus2[ID]
if (infect_virus2(src,V))
return 1
for(var/obj/effect/decal/cleanable/poop/P in get_turf(src))
if(P.virus2.len)
for (var/ID in P.virus2)
var/datum/disease2/disease/V = P.virus2[ID]
if (infect_virus2(src,V))
return 1
return 0
proc/handle_virus_updates()
if(status_flags & GODMODE) return 0 //godmode
if(bodytemperature > 406)
@@ -1393,21 +1419,8 @@
var/datum/disease2/disease/V = virus2[ID]
V.cure(src)
for(var/obj/effect/decal/cleanable/blood/B in view(1,src))
if(B.virus2.len)
for (var/ID in B.virus2)
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)
for (var/ID in M.virus2)
var/datum/disease2/disease/V = M.virus2[ID]
infect_virus2(src,V)
for(var/obj/effect/decal/cleanable/poop/P in view(1,src))
if(P.virus2.len)
for (var/ID in P.virus2)
var/datum/disease2/disease/V = P.virus2[ID]
infect_virus2(src,V)
src.findAirborneVirii()
for (var/ID in virus2)
var/datum/disease2/disease/V = virus2[ID]
+26 -15
View File
@@ -164,6 +164,31 @@
emote("gasp")
updatehealth()
// Separate proc so we can jump out of it when we've succeeded in spreading disease.
proc/findAirborneVirii()
for(var/obj/effect/decal/cleanable/blood/B in get_turf(src))
if(B.virus2.len)
for (var/ID in B.virus2)
var/datum/disease2/disease/V = B.virus2[ID]
if (infect_virus2(src,V))
return 1
for(var/obj/effect/decal/cleanable/mucus/M in get_turf(src))
if(M.virus2.len)
for (var/ID in M.virus2)
var/datum/disease2/disease/V = M.virus2[ID]
if (infect_virus2(src,V))
return 1
for(var/obj/effect/decal/cleanable/poop/P in get_turf(src))
if(P.virus2.len)
for (var/ID in P.virus2)
var/datum/disease2/disease/V = P.virus2[ID]
if (infect_virus2(src,V))
return 1
return 0
proc/handle_virus_updates()
if(status_flags & GODMODE) return 0 //godmode
if(bodytemperature > 406)
@@ -173,21 +198,7 @@
var/datum/disease2/disease/V = virus2[ID]
V.cure(src)
for(var/obj/effect/decal/cleanable/blood/B in view(1,src))
if(B.virus2.len)
for (var/ID in B.virus2)
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)
for (var/ID in M.virus2)
var/datum/disease2/disease/V = M.virus2[ID]
infect_virus2(src,V)
for(var/obj/effect/decal/cleanable/poop/P in view(1,src))
if(P.virus2.len)
for (var/ID in P.virus2)
var/datum/disease2/disease/V = P.virus2[ID]
infect_virus2(src,V)
src.findAirborneVirii()
for (var/ID in virus2)
var/datum/disease2/disease/V = virus2[ID]
+6 -4
View File
@@ -51,14 +51,14 @@ proc/airborne_can_reach(turf/source, turf/target)
//Attemptes to infect mob M with virus. Set forced to 1 to ignore protective clothnig
/proc/infect_virus2(var/mob/living/carbon/M,var/datum/disease2/disease/disease,var/forced = 0)
if(!istype(disease))
return
return 0
if(!istype(M))
return
return 0
if ("[disease.uniqueID]" in M.virus2)
return
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)
return
return 0
if(prob(disease.infectionchance) || forced)
// certain clothes can prevent an infection
@@ -68,6 +68,8 @@ proc/airborne_can_reach(turf/source, turf/target)
var/datum/disease2/disease/D = disease.getcopy()
D.minormutate()
M.virus2["[D.uniqueID]"] = D
return 1
return 0
//Infects mob M with random lesser disease, if he doesn't have one
/proc/infect_mob_random_lesser(var/mob/living/carbon/M)