diff --git a/code/defines/obj/computer.dm b/code/defines/obj/computer.dm
index a7a588842a0..23148356dd7 100644
--- a/code/defines/obj/computer.dm
+++ b/code/defines/obj/computer.dm
@@ -125,6 +125,8 @@
var/a_id = null
var/temp = null
var/printing = null
+ var/list/Perp
+ var/tempname = null
/obj/machinery/computer/med_data/laptop
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index d490f45f4ba..3c200f6158a 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -21,6 +21,7 @@
if(..())
return
var/dat
+
if (src.temp)
dat = text("[src.temp]
Clear Screen")
else
@@ -28,23 +29,94 @@
if (src.authenticated)
switch(src.screen)
if(1.0)
+ dat += "
"
+ dat += text("Search Records
", src)
dat += {"
-Search Records
-
List Records
-
Search DNA
-
-
Virus Database
-
Medbot Tracking
-
-
Record Maintenance
-
{Log Out}
-"}
- if(2.0)
- dat += "Record List:
"
+
+
+
+
+ | Name |
+ ID |
+ Rank |
+ Fingerprints |
+ Physical Status |
+ Mental Status |
+
"}
for(var/datum/data/record/R in data_core.general)
- dat += text("[]: []
", src, R, R.fields["id"], R.fields["name"])
- //Foreach goto(132)
- dat += text("
Back", src)
+ var/physstat = R.fields["p_stat"]
+ var/background
+ switch(physstat)
+ if("*Deceased*")
+ background = "'background-color:#CD853F;'"
+ if("*Unconscious*")
+ background = "'background-color:#DC143C;'"
+ if("Physically Unfit")
+ background = "'background-color:#3BB9FF;'"
+ if("Active")
+ background = "'background-color:#00FF7F;'"
+ if("")
+ background = "'background-color:#FFFFFF;'"
+ physstat = "No Record."
+ dat += text("| [] | ", background, src, R, R.fields["name"])
+ dat += text("[] | ", R.fields["id"])
+ dat += text("[] | ", R.fields["rank"])
+ dat += text("[] | ", R.fields["fingerprint"])
+ dat += text("[] | ", physstat)
+ dat += text("[] |
", R.fields["m_stat"])
+ dat += "
"
+ dat += "Virus Database
"
+ dat += "Medbot Tracking
"
+ dat += "Record Maintenance
"
+ dat += "{Log Out}"
+ if(2.0)
+ if(!Perp.len)
+ dat += text("ERROR. String could not be located.
Back", src)
+ else
+ dat += {"
+
+ "}
+ dat += text("| Search Results for '[]': | ", tempname)
+ dat += {"
+
+
+
+
+ | Name |
+ ID |
+ Rank |
+ Fingerprints |
+ Physical Status |
+ Mental Status |
+
"}
+ for(var/i=1, i<=Perp.len, i += 2)
+ var/datum/data/record/R = Perp[i]
+ var/physstat = R.fields["p_stat"]
+ var/background
+ switch(physstat)
+ if("*Deceased*")
+ background = "'background-color:#CD853F;'"
+ if("*Unconscious*")
+ background = "'background-color:#DC143C;'"
+ if("Physically Unfit")
+ background = "'background-color:#3BB9FF;'"
+ if("Active")
+ background = "'background-color:#00FF7F;'"
+ if("")
+ background = "'background-color:#FFFFFF;'"
+ physstat = "No Record."
+ dat += text("| [] | ", background, src, R, R.fields["name"])
+ dat += text("[] | ", R.fields["id"])
+ dat += text("[] | ", R.fields["rank"])
+ dat += text("[] | ", R.fields["fingerprint"])
+ dat += text("[] | ", physstat)
+ dat += text("[] |
", R.fields["m_stat"])
+ dat += "
"
+ dat += text("
Return to index.", src)
if(3.0)
dat += "Records Maintenance
"
if(disk)
@@ -81,19 +153,18 @@
else
dat += "Medical Record Lost!
"
dat += text("New Record
")
- dat += text("\nPrint Record
\nBack
", src, src)
+ dat += text("\nPrint Record
\nBack
", src, src)
if(5.0)
- dat += "Virus Database"
+ dat += "Virus Database
"
for(var/Dt in typesof(/datum/disease/))
var/datum/disease/Dis = new Dt(0)
if(!Dis.desc)
continue
- dat += "
[Dis.name]"
+ dat += "[Dis.name]
"
dat += "
Back"
if(6.0)
- dat += "Medical Robot Monitor"
- dat += "Back"
- dat += "
Medical Robots:"
+ dat += "Medical Robot Monitor
"
+ dat += "Medical Robots:
"
var/bdat = null
for(var/obj/machinery/bot/medbot/M in world)
var/turf/bl = get_turf(M)
@@ -104,14 +175,16 @@
bdat += "Using Internal Synthesizer.
"
if(!bdat)
- dat += "
None detected"
+ dat += "None detected
"
else
- dat += "
[bdat]"
+ dat += "[bdat]
"
+
+ dat += "Back"
else
else
dat += text("{Log In}", src)
- user << browse(text("Medical Records[]", dat), "window=med_rec")
+ user << browse(text("Medical Records[]", dat), "window=med_rec;size=600x400")
onclose(user, "med_rec")
return
@@ -309,7 +382,7 @@
if("watch")
src.active1.fields["m_stat"] = "*Watch*"
if("stable")
- src.active2.fields["m_stat"] = "Stable"
+ src.active1.fields["m_stat"] = "Stable"
if (href_list["b_type"])
@@ -395,26 +468,33 @@
src.active2.fields[text("com_[]", href_list["del_c"])] = "Deleted"
if (href_list["search"])
- var/t1 = input("Search String: (Name or ID)", "Med. records", null, null) as text
+ var/t1 = input("Search String: (Partial Name or ID or Fingerprints or DNA or Rank)", "Med. records", null, null) as text
if ((!( t1 ) || usr.stat || !( src.authenticated ) || usr.restrained() || ((!in_range(src, usr)) && (!istype(usr, /mob/living/silicon)))))
return
- src.active1 = null
- src.active2 = null
+ Perp = new/list()
t1 = lowertext(t1)
+ var/list/components = dd_text2list(t1, " ")
+ if(components.len > 5)
+ return //Lets not let them search too greedily.
for(var/datum/data/record/R in data_core.general)
- if ((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"])))
- src.active1 = R
- else
- //Foreach continue //goto(3229)
- if (!( src.active1 ))
- src.temp = text("Could not locate record [].", t1)
- else
+ var/temptext = R.fields["name"] + " " + R.fields["id"] + " " + R.fields["fingerprint"] + " " + R.fields["rank"]
+
for(var/datum/data/record/E in data_core.medical)
- if ((E.fields["name"] == src.active1.fields["name"] || E.fields["id"] == src.active1.fields["id"]))
- src.active2 = E
- else
- //Foreach continue //goto(3334)
- src.screen = 4
+ if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
+ temptext += " " + E.fields["b_dna"]
+
+ for(var/i = 1, i<=components.len, i++)
+ if(findtext(temptext,components[i]))
+ var/prelist = new/list(2)
+ prelist[1] = R
+ Perp += prelist
+ for(var/i = 1, i<=Perp.len, i+=2)
+ for(var/datum/data/record/E in data_core.medical)
+ var/datum/data/record/R = Perp[i]
+ if ((E.fields["name"] == R.fields["name"] && E.fields["id"] == R.fields["id"]))
+ Perp[i+1] = E
+ tempname = t1
+ src.screen = 2
if (href_list["print_p"])
if (!( src.printing ))
@@ -437,24 +517,6 @@
P.info += ""
P.name = "paper - 'Medical Record'"
src.printing = null
-
- if (href_list["search_dna"])
- var/t1 = input("Search String: (DNA)", "Medical records", null, null) as text
- if ((!( t1 ) || usr.stat || !( authenticated ) || usr.restrained() || (!in_range(src, usr)) && (!istype(usr, /mob/living/silicon))))
- return
- active1 = null
- active2 = null
- t1 = lowertext(t1)
- for(var/datum/data/record/R in data_core.medical)
- if (lowertext(R.fields["b_dna"]) == t1)
- active2 = R
- if (!( active2 ))
- temp = text("Could not locate record [].", t1)
- else
- for(var/datum/data/record/E in data_core.general)
- if ((E.fields["name"] == active2.fields["name"] || E.fields["id"] == active2.fields["id"]))
- active1 = E
- screen = 4
if (href_list["eject_disk"])
if (!disk)
return