Merge pull request #2440 from Citadel-Station-13/upstream-merge-29866

[MIRROR] You can now click on symptoms in the Pandemic to see their description and stats
This commit is contained in:
LetterJay
2017-09-06 10:10:58 -05:00
committed by GitHub
37 changed files with 4911 additions and 152 deletions
+1 -1
View File
@@ -811,7 +811,7 @@
/obj/item/reagent_containers/glass/bottle/magnitis,
/obj/item/reagent_containers/glass/bottle/pierrot_throat,
/obj/item/reagent_containers/glass/bottle/brainrot,
/obj/item/reagent_containers/glass/bottle/hullucigen_virion,
/obj/item/reagent_containers/glass/bottle/hallucigen_virion,
/obj/item/reagent_containers/glass/bottle/anxiety,
/obj/item/reagent_containers/glass/bottle/beesease,
/obj/item/storage/box/syringes,
@@ -1,3 +1,6 @@
#define MAIN_SCREEN 1
#define SYMPTOM_DETAILS 2
/obj/machinery/computer/pandemic
name = "PanD.E.M.I.C 2200"
desc = "Used to work with viruses."
@@ -10,6 +13,8 @@
idle_power_usage = 20
resistance_flags = ACID_PROOF
var/wait
var/mode = MAIN_SCREEN
var/datum/symptom/selected_symptom
var/obj/item/reagent_containers/beaker
/obj/machinery/computer/pandemic/Initialize()
@@ -34,9 +39,7 @@
/obj/machinery/computer/pandemic/proc/get_viruses_data(datum/reagent/blood/B)
. = list()
if(!islist(B.data["viruses"]))
return
var/list/V = B.data["viruses"]
var/list/V = B.get_diseases()
var/index = 1
for(var/virus in V)
var/datum/disease/D = virus
@@ -47,21 +50,24 @@
this["name"] = D.name
if(istype(D, /datum/disease/advance))
var/datum/disease/advance/A = D
var/datum/disease/advance/archived = SSdisease.archive_diseases[D.GetDiseaseID()]
if(archived.name == "Unknown")
var/disease_name = SSdisease.get_disease_name(A.GetDiseaseID())
if(disease_name == "Unknown")
this["can_rename"] = TRUE
this["name"] = archived.name
this["name"] = disease_name
this["is_adv"] = TRUE
this["resistance"] = A.totalResistance()
this["stealth"] = A.totalStealth()
this["stage_speed"] = A.totalStageSpeed()
this["transmission"] = A.totalTransmittable()
this["symptoms"] = list()
var/symptom_index = 1
for(var/symptom in A.symptoms)
var/datum/symptom/S = symptom
var/list/this_symptom = list()
this_symptom["name"] = S.name
this_symptom["sym_index"] = symptom_index
symptom_index++
this["symptoms"] += list(this_symptom)
this["resistance"] = A.totalResistance()
this["stealth"] = A.totalStealth()
this["stage_speed"] = A.totalStageSpeed()
this["transmission"] = A.totalTransmittable()
this["index"] = index++
this["agent"] = D.agent
this["description"] = D.desc || "none"
@@ -70,6 +76,20 @@
. += list(this)
/obj/machinery/computer/pandemic/proc/get_symptom_data(datum/symptom/S)
. = list()
var/list/this = list()
this["name"] = S.name
this["desc"] = S.desc
this["stealth"] = S.stealth
this["resistance"] = S.resistance
this["stage_speed"] = S.stage_speed
this["transmission"] = S.transmittable
this["level"] = S.level
this["neutered"] = S.neutered
this["threshold_desc"] = S.threshold_desc
. += this
/obj/machinery/computer/pandemic/proc/get_resistance_data(datum/reagent/blood/B)
. = list()
if(!islist(B.data["resistances"]))
@@ -81,6 +101,7 @@
if(D)
this["id"] = id
this["name"] = D.name
. += list(this)
/obj/machinery/computer/pandemic/proc/reset_replicator_cooldown()
@@ -113,18 +134,23 @@
/obj/machinery/computer/pandemic/ui_data(mob/user)
var/list/data = list()
data["is_ready"] = !wait
if(beaker)
data["has_beaker"] = TRUE
if(!beaker.reagents.total_volume || !beaker.reagents.reagent_list)
data["beaker_empty"] = TRUE
var/datum/reagent/blood/B = locate() in beaker.reagents.reagent_list
if(B)
data["has_blood"] = TRUE
data["blood"] = list()
data["blood"]["dna"] = B.data["blood_DNA"] || "none"
data["blood"]["type"] = B.data["blood_type"] || "none"
data["viruses"] = get_viruses_data(B)
data["resistances"] = get_resistance_data(B)
data["mode"] = mode
switch(mode)
if(MAIN_SCREEN)
if(beaker)
data["has_beaker"] = TRUE
if(!beaker.reagents.total_volume || !beaker.reagents.reagent_list)
data["beaker_empty"] = TRUE
var/datum/reagent/blood/B = locate() in beaker.reagents.reagent_list
if(B)
data["has_blood"] = TRUE
data["blood"] = list()
data["blood"]["dna"] = B.data["blood_DNA"] || "none"
data["blood"]["type"] = B.data["blood_type"] || "none"
data["viruses"] = get_viruses_data(B)
data["resistances"] = get_resistance_data(B)
if(SYMPTOM_DETAILS)
data["symptom"] = get_symptom_data(selected_symptom)
return data
@@ -166,8 +192,8 @@
addtimer(CALLBACK(src, .proc/reset_replicator_cooldown), 50)
. = TRUE
if("create_vaccine_bottle")
var/index = params["index"]
var/datum/disease/D = SSdisease.archive_diseases[index]
var/index = text2num(params["index"])
var/datum/disease/D = SSdisease.archive_diseases[get_virus_id_by_index(index)]
var/obj/item/reagent_containers/glass/bottle/B = new(get_turf(src))
B.name = "[D.name] vaccine bottle"
B.reagents.add_reagent("vaccine", 15, list(index))
@@ -175,6 +201,19 @@
update_icon()
addtimer(CALLBACK(src, .proc/reset_replicator_cooldown), 200)
. = TRUE
if("symptom_details")
var/picked_symptom_index = text2num(params["picked_symptom"])
var/index = text2num(params["index"])
var/datum/disease/advance/A = get_by_index("viruses", index)
var/datum/symptom/S = A.symptoms[picked_symptom_index]
mode = SYMPTOM_DETAILS
selected_symptom = S
. = TRUE
if("back")
mode = MAIN_SCREEN
selected_symptom = null
. = TRUE
/obj/machinery/computer/pandemic/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER_1))
@@ -182,14 +221,13 @@
if(stat & (NOPOWER|BROKEN))
return
if(beaker)
to_chat(user, "<span class='warning'>A beaker is already loaded into the machine!</span>")
to_chat(user, "<span class='warning'>A container is already loaded into [src]!</span>")
return
if(!user.drop_item())
if(!user.transferItemToLoc(I, src))
return
beaker = I
beaker.forceMove(src)
to_chat(user, "<span class='notice'>You add the beaker to the machine.</span>")
to_chat(user, "<span class='notice'>You insert [I] into [src].</span>")
update_icon()
else
return ..()
@@ -276,11 +276,11 @@
icon_state = "bottle3"
spawned_disease = /datum/disease/advance/heal
/obj/item/reagent_containers/glass/bottle/hullucigen_virion
name = "Hullucigen virion culture bottle"
desc = "A small bottle. Contains hullucigen virion culture in synthblood medium."
/obj/item/reagent_containers/glass/bottle/hallucigen_virion
name = "Hallucigen virion culture bottle"
desc = "A small bottle. Contains hallucigen virion culture in synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/advance/hullucigen
spawned_disease = /datum/disease/advance/hallucigen
/obj/item/reagent_containers/glass/bottle/pierrot_throat
name = "Pierrot's Throat culture bottle"