mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 19:44:09 +01:00
Added antibody-based, random symptom virology.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2686 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -1385,14 +1385,24 @@
|
||||
message_admins("[key_name_admin(usr)] broke all lights", 1)
|
||||
lightsout(0,0)
|
||||
if("virus")
|
||||
if(alert("Do you want this to be a random disease or do you have something in mind?",,"Random","Choose")=="Random")
|
||||
var/answer = alert("Do you want this to be a random disease or do you have something in mind?",,"Virus2","Random","Choose")
|
||||
if(answer=="Random")
|
||||
viral_outbreak()
|
||||
message_admins("[key_name_admin(usr)] has triggered a virus outbreak", 1)
|
||||
else
|
||||
else if(answer == "Choose")
|
||||
var/list/viruses = list("fake gbs","gbs","magnitis","wizarditis",/*"beesease",*/"brain rot","cold","retrovirus","flu","pierrot's throat","rhumba beat")
|
||||
var/V = input("Choose the virus to spread", "BIOHAZARD") in viruses
|
||||
viral_outbreak(V)
|
||||
message_admins("[key_name_admin(usr)] has triggered a virus outbreak of [V]", 1)
|
||||
else
|
||||
var/lesser = (alert("Do you want to infect the mob with a major or minor disease?",,"Major","Minor") == "Minor")
|
||||
var/mob/living/carbon/victim = input("Select a mob to infect", "Virus2") as null|mob in world
|
||||
if(!istype(victim)) return
|
||||
if(lesser)
|
||||
infect_mob_random_lesser(victim)
|
||||
else
|
||||
infect_mob_random_greater(victim)
|
||||
message_admins("[key_name_admin(usr)] has infected [victim] with a [lesser ? "minor" : "major"] virus2.", 1)
|
||||
if("retardify")
|
||||
if (src.rank in list("Badmin", "Game Admin", "Game Master"))
|
||||
for(var/mob/living/carbon/human/H in world)
|
||||
|
||||
@@ -96,7 +96,7 @@ datum
|
||||
|
||||
|
||||
blood
|
||||
data = new/list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"virus2"=null)
|
||||
data = new/list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"virus2"=null,"antibodies"=0)
|
||||
name = "Blood"
|
||||
id = "blood"
|
||||
reagent_state = LIQUID
|
||||
@@ -119,6 +119,15 @@ datum
|
||||
else
|
||||
infect_virus2(M,self.data["virus2"],1)
|
||||
|
||||
if(istype(M,/mob/living/carbon))
|
||||
// add the host's antibodies to their blood
|
||||
self.data["antibodies"] |= M:antibodies
|
||||
|
||||
// check if the blood has antibodies that cure our disease
|
||||
if(self.data["antibodies"] & M:virus2.antigen) if(prob(10))
|
||||
M:virus2.dead = 1
|
||||
|
||||
|
||||
/*
|
||||
if(self.data["virus"])
|
||||
var/datum/disease/V = self.data["virus"]
|
||||
|
||||
@@ -935,9 +935,9 @@
|
||||
|
||||
B.data["viruses"] += new D.type
|
||||
|
||||
if(B.data["virus2"])
|
||||
if(T.virus2)
|
||||
B.data["virus2"] = T.virus2.getcopy()
|
||||
// not sure why it was checking if(B.data["virus2"]), but it seemed wrong
|
||||
if(T.virus2)
|
||||
B.data["virus2"] = T.virus2.getcopy()
|
||||
|
||||
B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0)
|
||||
if(T.resistances&&T.resistances.len)
|
||||
@@ -950,6 +950,7 @@
|
||||
temp_chem += R.name
|
||||
temp_chem[R.name] = R.volume
|
||||
B.data["trace_chem"] = list2params(temp_chem)
|
||||
B.data["antibodies"] = T.antibodies
|
||||
//debug
|
||||
//for(var/D in B.data)
|
||||
// world << "Data [D] = [B.data[D]]"
|
||||
|
||||
@@ -985,15 +985,28 @@
|
||||
|
||||
|
||||
if(!virus2)
|
||||
for(var/mob/living/carbon/M in oviewers(4,src))
|
||||
// the following is silly since it lets you infect people through glass
|
||||
/*for(var/mob/living/carbon/M in oviewers(4,src))
|
||||
if(M.virus2)
|
||||
infect_virus2(src,M.virus2)
|
||||
infect_virus2(src,M.virus2)*/
|
||||
// instead we're going to use little floating disease objects
|
||||
for(var/obj/virus/V in src.loc) if(src.get_infection_chance())
|
||||
infect_virus2(src,V.disease)
|
||||
for(var/obj/effect/decal/cleanable/blood/B in view(4, src))
|
||||
if(B.virus2)
|
||||
infect_virus2(src,B.virus2)
|
||||
else
|
||||
virus2.activate(src)
|
||||
|
||||
// activate may have deleted the virus
|
||||
if(!virus2) return
|
||||
|
||||
// check if we're immune
|
||||
if(virus2.antigen & src.antibodies) virus2.dead = 1
|
||||
if(src.get_infection_chance())
|
||||
var/obj/virus/V = new(src.loc)
|
||||
V.disease = src.virus2
|
||||
|
||||
|
||||
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user