-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 0
/datum/disease/proc/Copy()
return new type(0, src)
/datum/disease/proc/Copy(var/process = 0)
return new type(process, src)
/*
/datum/disease/Del()

View File

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

View File

@@ -30,7 +30,7 @@ Bonus
/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
switch(A.stage)
if(1, 2, 3, 4)
@@ -42,7 +42,6 @@ Bonus
/datum/symptom/vomit/proc/Vomit(var/mob/living/M)
M.Stun(5)
M.visible_message("<B>[M]</B> vomits on the floor!")
M.nutrition -= 20
@@ -82,7 +81,7 @@ Bonus
/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!")
// 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])
B.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
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
newDisease.holder = B
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)
newblood.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
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
newDisease.holder = newblood
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)]"
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
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)
this.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
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
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)
this.blood_DNA["UNKNOWN BLOOD"] = "X*"
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
newDisease.holder = this

View File

@@ -206,7 +206,7 @@
// world << sound('sound/AI/outbreak7.ogg')
var/virus_type
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
switch(virus)
if("fake gbs")
@@ -220,16 +220,16 @@
if("brain rot")
virus_type = /datum/disease/brainrot
if("cold")
virus_type = /datum/disease/cold
virus_type = /datum/disease/advance/cold
if("retrovirus")
virus_type = /datum/disease/dnaspread
if("flu")
virus_type = /datum/disease/flu
virus_type = /datum/disease/advance/flu
// if("t-virus")
// virus_type = /datum/disease/t_virus
if("pierrot's 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
for(var/datum/disease/D in H.viruses)

View File

@@ -74,6 +74,8 @@
dat += "<CENTER><B>Virus Database</B></CENTER>"
for(var/Dt in typesof(/datum/disease/))
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)
continue
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)
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)
if(O.resistances&&O.resistances.len)

View File

@@ -26,7 +26,7 @@
if (i > 0)
var/obj/effect/decal/cleanable/xenoblood/b = new /obj/effect/decal/cleanable/xenoblood/xsplatter(src.loc)
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))
break

View File

@@ -69,6 +69,6 @@
if (i > 0)
var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc)
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))
break

View File

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

View File

@@ -2064,7 +2064,7 @@
if("virus")
feedback_inc("admin_secrets_fun_used",1)
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")
viral_outbreak()
message_admins("[key_name_admin(usr)] has triggered a virus outbreak", 1)
@@ -2074,17 +2074,43 @@
viral_outbreak(V)
message_admins("[key_name_admin(usr)] has triggered a virus outbreak of [V]", 1)
else
usr << "Nope"
/*
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)
*/
var/i = 5
var/datum/disease/advance/D = new(0, null)
D.symptoms = list()
var/list/symptoms = list()
symptoms += "Done"
symptoms += list_symptoms.Copy()
do
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")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","RET")

View File

@@ -648,12 +648,14 @@
if(istype(D, /datum/disease/advance))
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)
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"])
var/list/res = Blood.data["resistances"]
if(res.len)