mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 03:27:05 +01:00
Virus optimizations
This commit is contained in:
@@ -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]
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user