-Admins can now make their own advance diseases via the secret button! Instead of the useless "virus2" button, there will now be an option called "Create Your Own"! Use this button and pick from 5 symptoms to make your disease from.

-Fixed a bug where blood/vomit decals would be creating new viruses.
-Medical computer won't recognize advance diseases... for now.
-Used english_list when displaying symptoms.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5100 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
giacomand@gmail.com
2012-11-17 19:53:00 +00:00
parent e86ba45882
commit e2acdcfe47
12 changed files with 66 additions and 37 deletions

View File

@@ -182,8 +182,8 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
return 1 return 1
return 0 return 0
/datum/disease/proc/Copy() /datum/disease/proc/Copy(var/process = 0)
return new type(0, src) return new type(process, src)
/* /*
/datum/disease/Del() /datum/disease/Del()

View File

@@ -96,8 +96,8 @@ var/list/archive_diseases = list()
return return
// Returns the advance disease with a different reference memory. // Returns the advance disease with a different reference memory.
/datum/disease/advance/Copy() /datum/disease/advance/Copy(var/process = 0)
return new /datum/disease/advance(0, src, 1) return new /datum/disease/advance(process, src, 1)
/* /*
@@ -288,7 +288,7 @@ var/list/archive_diseases = list()
var/s = safepick(GenerateSymptoms(level, 1)) var/s = safepick(GenerateSymptoms(level, 1))
if(s) if(s)
AddSymptom(s) AddSymptom(s)
Refresh() Refresh(1)
return return
// Randomly remove a symptom. // Randomly remove a symptom.
@@ -297,7 +297,7 @@ var/list/archive_diseases = list()
var/s = safepick(symptoms) var/s = safepick(symptoms)
if(s) if(s)
RemoveSymptom(s) RemoveSymptom(s)
Refresh() Refresh(1)
return return
// Name the disease. // Name the disease.

View File

@@ -30,7 +30,7 @@ Bonus
/datum/symptom/vomit/Activate(var/datum/disease/advance/A) /datum/symptom/vomit/Activate(var/datum/disease/advance/A)
..() ..()
if(prob(SYMPTOM_ACTIVATION_PROB)) if(prob(SYMPTOM_ACTIVATION_PROB / 2))
var/mob/living/M = A.affected_mob var/mob/living/M = A.affected_mob
switch(A.stage) switch(A.stage)
if(1, 2, 3, 4) if(1, 2, 3, 4)
@@ -42,7 +42,6 @@ Bonus
/datum/symptom/vomit/proc/Vomit(var/mob/living/M) /datum/symptom/vomit/proc/Vomit(var/mob/living/M)
M.Stun(5)
M.visible_message("<B>[M]</B> vomits on the floor!") M.visible_message("<B>[M]</B> vomits on the floor!")
M.nutrition -= 20 M.nutrition -= 20
@@ -82,7 +81,7 @@ Bonus
/datum/symptom/vomit/blood/Vomit(var/mob/living/M) /datum/symptom/vomit/blood/Vomit(var/mob/living/M)
M.Stun(5) M.Stun(1)
M.visible_message("<B>[M]</B> vomits on the floor!") M.visible_message("<B>[M]</B> vomits on the floor!")
// They lose blood and health. // They lose blood and health.

View File

@@ -459,7 +459,7 @@ its easier to just keep the beam vertical.
if(!B.blood_DNA[M.dna.unique_enzymes]) if(!B.blood_DNA[M.dna.unique_enzymes])
B.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type B.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
for(var/datum/disease/D in M.viruses) for(var/datum/disease/D in M.viruses)
var/datum/disease/newDisease = new D.type var/datum/disease/newDisease = D.Copy(1)
B.viruses += newDisease B.viruses += newDisease
newDisease.holder = B newDisease.holder = B
return 1 //we bloodied the floor return 1 //we bloodied the floor
@@ -468,7 +468,7 @@ its easier to just keep the beam vertical.
var/obj/effect/decal/cleanable/blood/newblood = new /obj/effect/decal/cleanable/blood(T) var/obj/effect/decal/cleanable/blood/newblood = new /obj/effect/decal/cleanable/blood(T)
newblood.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type newblood.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
for(var/datum/disease/D in M.viruses) for(var/datum/disease/D in M.viruses)
var/datum/disease/newDisease = new D.type var/datum/disease/newDisease = D.Copy(1)
newblood.viruses += newDisease newblood.viruses += newDisease
newDisease.holder = newblood newDisease.holder = newblood
return 1 //we bloodied the floor return 1 //we bloodied the floor
@@ -493,7 +493,7 @@ its easier to just keep the beam vertical.
this.icon_state = "vomittox_[pick(1,4)]" this.icon_state = "vomittox_[pick(1,4)]"
for(var/datum/disease/D in M.viruses) for(var/datum/disease/D in M.viruses)
var/datum/disease/newDisease = new D.type var/datum/disease/newDisease = D.Copy(1)
this.viruses += newDisease this.viruses += newDisease
newDisease.holder = this newDisease.holder = this
@@ -505,7 +505,7 @@ its easier to just keep the beam vertical.
var/obj/effect/decal/cleanable/blood/this = new /obj/effect/decal/cleanable/blood(source1) var/obj/effect/decal/cleanable/blood/this = new /obj/effect/decal/cleanable/blood(source1)
this.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type this.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
for(var/datum/disease/D in M.viruses) for(var/datum/disease/D in M.viruses)
var/datum/disease/newDisease = new D.type var/datum/disease/newDisease = D.Copy(1)
this.viruses += newDisease this.viruses += newDisease
newDisease.holder = this newDisease.holder = this
@@ -515,7 +515,7 @@ its easier to just keep the beam vertical.
var/obj/effect/decal/cleanable/xenoblood/this = new /obj/effect/decal/cleanable/xenoblood(source2) var/obj/effect/decal/cleanable/xenoblood/this = new /obj/effect/decal/cleanable/xenoblood(source2)
this.blood_DNA["UNKNOWN BLOOD"] = "X*" this.blood_DNA["UNKNOWN BLOOD"] = "X*"
for(var/datum/disease/D in M.viruses) for(var/datum/disease/D in M.viruses)
var/datum/disease/newDisease = new D.type var/datum/disease/newDisease = D.Copy(1)
this.viruses += newDisease this.viruses += newDisease
newDisease.holder = this newDisease.holder = this

View File

@@ -206,7 +206,7 @@
// world << sound('sound/AI/outbreak7.ogg') // world << sound('sound/AI/outbreak7.ogg')
var/virus_type var/virus_type
if(!virus) if(!virus)
virus_type = pick(/datum/disease/dnaspread,/datum/disease/flu,/datum/disease/cold,/datum/disease/brainrot,/datum/disease/magnitis,/datum/disease/pierrot_throat) virus_type = pick(/datum/disease/dnaspread,/datum/disease/advance/flu,/datum/disease/advance/cold,/datum/disease/brainrot,/datum/disease/magnitis,/datum/disease/pierrot_throat)
else else
switch(virus) switch(virus)
if("fake gbs") if("fake gbs")
@@ -220,16 +220,16 @@
if("brain rot") if("brain rot")
virus_type = /datum/disease/brainrot virus_type = /datum/disease/brainrot
if("cold") if("cold")
virus_type = /datum/disease/cold virus_type = /datum/disease/advance/cold
if("retrovirus") if("retrovirus")
virus_type = /datum/disease/dnaspread virus_type = /datum/disease/dnaspread
if("flu") if("flu")
virus_type = /datum/disease/flu virus_type = /datum/disease/advance/flu
// if("t-virus") // if("t-virus")
// virus_type = /datum/disease/t_virus // virus_type = /datum/disease/t_virus
if("pierrot's throat") if("pierrot's throat")
virus_type = /datum/disease/pierrot_throat virus_type = /datum/disease/pierrot_throat
for(var/mob/living/carbon/human/H in living_mob_list) for(var/mob/living/carbon/human/H in shuffle(living_mob_list))
var/foundAlready = 0 // don't infect someone that already has the virus var/foundAlready = 0 // don't infect someone that already has the virus
for(var/datum/disease/D in H.viruses) for(var/datum/disease/D in H.viruses)

View File

@@ -74,6 +74,8 @@
dat += "<CENTER><B>Virus Database</B></CENTER>" dat += "<CENTER><B>Virus Database</B></CENTER>"
for(var/Dt in typesof(/datum/disease/)) for(var/Dt in typesof(/datum/disease/))
var/datum/disease/Dis = new Dt(0) var/datum/disease/Dis = new Dt(0)
if(istype(Dis, /datum/disease/advance))
continue // TODO (tm): Add advance diseases to the virus database which no one uses.
if(!Dis.desc) if(!Dis.desc)
continue continue
dat += "<br><a href='?src=\ref[src];vir=[Dt]'>[Dis.name]</a>" dat += "<br><a href='?src=\ref[src];vir=[Dt]'>[Dis.name]</a>"

View File

@@ -82,7 +82,7 @@
for(var/datum/disease/D in O.viruses) for(var/datum/disease/D in O.viruses)
if(D.spread_type != SPECIAL) if(D.spread_type != SPECIAL)
B.data["viruses"] = new D.type(0, D) B.data["viruses"] = D.Copy()
B.data["blood_DNA"] = copytext(O.dna.unique_enzymes,1,0) B.data["blood_DNA"] = copytext(O.dna.unique_enzymes,1,0)
if(O.resistances&&O.resistances.len) if(O.resistances&&O.resistances.len)

View File

@@ -26,7 +26,7 @@
if (i > 0) if (i > 0)
var/obj/effect/decal/cleanable/xenoblood/b = new /obj/effect/decal/cleanable/xenoblood/xsplatter(src.loc) var/obj/effect/decal/cleanable/xenoblood/b = new /obj/effect/decal/cleanable/xenoblood/xsplatter(src.loc)
for(var/datum/disease/D in src.viruses) for(var/datum/disease/D in src.viruses)
b.viruses += new D.type(0, D, 1) b.viruses += D.Copy()
if (step_to(src, get_step(src, direction), 0)) if (step_to(src, get_step(src, direction), 0))
break break

View File

@@ -69,6 +69,6 @@
if (i > 0) if (i > 0)
var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc) var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc)
for(var/datum/disease/D in src.viruses) for(var/datum/disease/D in src.viruses)
b.viruses += new D.type(0, D, 1) b.viruses += D.Copy()
if (step_to(src, get_step(src, direction), 0)) if (step_to(src, get_step(src, direction), 0))
break break

View File

@@ -47,7 +47,7 @@
if(viruses.len > 0) if(viruses.len > 0)
for(var/datum/disease/D in viruses) for(var/datum/disease/D in viruses)
if(prob(virusProb)) if(prob(virusProb))
var/datum/disease/viruus = new D.type(0, D, 1) var/datum/disease/viruus = D.Copy()
gib.viruses += viruus gib.viruses += viruus
viruus.holder = gib viruus.holder = gib
viruus.spread_type = CONTACT_FEET viruus.spread_type = CONTACT_FEET

View File

@@ -2064,7 +2064,7 @@
if("virus") if("virus")
feedback_inc("admin_secrets_fun_used",1) feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","V") feedback_add_details("admin_secrets_fun_used","V")
var/answer = alert("Do you want this to be a random disease or do you have something in mind?",,"Virus2","Random","Choose") var/answer = alert("Do you want this to be a random disease or do you have something in mind?",,"Make Your Own","Random","Choose")
if(answer=="Random") if(answer=="Random")
viral_outbreak() viral_outbreak()
message_admins("[key_name_admin(usr)] has triggered a virus outbreak", 1) message_admins("[key_name_admin(usr)] has triggered a virus outbreak", 1)
@@ -2074,17 +2074,43 @@
viral_outbreak(V) viral_outbreak(V)
message_admins("[key_name_admin(usr)] has triggered a virus outbreak of [V]", 1) message_admins("[key_name_admin(usr)] has triggered a virus outbreak of [V]", 1)
else else
usr << "Nope" var/i = 5
/*
var/lesser = (alert("Do you want to infect the mob with a major or minor disease?",,"Major","Minor") == "Minor") var/datum/disease/advance/D = new(0, null)
var/mob/living/carbon/victim = input("Select a mob to infect", "Virus2") as null|mob in world D.symptoms = list()
if(!istype(victim)) return
if(lesser) var/list/symptoms = list()
infect_mob_random_lesser(victim) symptoms += "Done"
else symptoms += list_symptoms.Copy()
infect_mob_random_greater(victim) do
message_admins("[key_name_admin(usr)] has infected [victim] with a [lesser ? "minor" : "major"] virus2.", 1) var/symptom = input("Choose a symptom to add ([i] remaining)", "Choose a Symptom") in symptoms
*/ if(istext(symptom))
i = 0
else if(ispath(symptom))
var/datum/symptom/S = new symptom
if(!D.HasSymptom(S))
D.symptoms += S
i -= 1
while(i > 0)
if(D.symptoms.len > 0)
var/new_name = input("Name your new disease.", "New Name")
D.AssignName(new_name)
D.Refresh()
for(var/datum/disease/advance/AD in active_diseases)
AD.Refresh()
for(var/mob/living/carbon/human/H in shuffle(living_mob_list))
if(!H.has_disease(D))
H.contract_disease(D, 1)
break
var/list/name_symptoms = list()
for(var/datum/symptom/S in D.symptoms)
name_symptoms += S.name
message_admins("[key_name_admin(usr)] has triggered a custom virus outbreak of [D.name]! It has these symptoms: [english_list(name_symptoms)]", 1)
if("retardify") if("retardify")
feedback_inc("admin_secrets_fun_used",1) feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","RET") feedback_add_details("admin_secrets_fun_used","RET")

View File

@@ -649,11 +649,13 @@
if(istype(D, /datum/disease/advance)) if(istype(D, /datum/disease/advance))
var/datum/disease/advance/A = D var/datum/disease/advance/A = D
dat += "<b>Symptoms:</b> " dat += "<b>Symptoms:</b> "
var/english_symptoms = list()
for(var/datum/symptom/S in A.symptoms) for(var/datum/symptom/S in A.symptoms)
dat += " [S.name] " english_symptoms += S.name
dat += english_list(english_symptoms)
dat += "<b>Contains antibodies to:</b> " dat += "<BR><b>Contains antibodies to:</b> "
if(Blood.data["resistances"]) if(Blood.data["resistances"])
var/list/res = Blood.data["resistances"] var/list/res = Blood.data["resistances"]
if(res.len) if(res.len)