mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 02:16:05 +00:00
-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:
@@ -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()
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -649,11 +649,13 @@
|
||||
if(istype(D, /datum/disease/advance))
|
||||
var/datum/disease/advance/A = D
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user