diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm
index 80c7e262d0a..a6b29ab6203 100644
--- a/code/game/machinery/computer/Operating.dm
+++ b/code/game/machinery/computer/Operating.dm
@@ -10,6 +10,13 @@
/obj/machinery/computer/operating/New()
..()
+ if(ticker)
+ find_table()
+
+/obj/machinery/computer/operating/initialize()
+ find_table()
+
+/obj/machinery/computer/operating/proc/find_table()
for(var/dir in cardinal)
table = locate(/obj/structure/optable, get_step(src, dir))
if(table)
@@ -23,37 +30,38 @@
interact(user)
/obj/machinery/computer/operating/interact(mob/user)
- if(get_dist(src, user) > 1 || stat & (BROKEN|NOPOWER))
- if(!istype(user, /mob/living/silicon))
- user.unset_machine()
- user << browse(null, "window=op")
- return
-
- user.set_machine(src)
- var/dat = "
Operating Computer"
+ var/dat = ""
if(table)
dat += "Patient information:
"
if(table.check_patient())
patient = table.patient
- dat += {"Patient Status: [patient.stat ? "Non-Responsive" : "Stable"]
- Blood Type: [patient.blood_type]
-
- Health: [round(patient.health)]
- Brute Damage: [round(patient.getBruteLoss())]
- Toxins Damage: [round(patient.getToxLoss())]
- Fire Damage: [round(patient.getFireLoss())]
- Suffocation Damage: [round(patient.getOxyLoss())]
- "}
- if(patient.surgeries.len)
- dat += "
Initiated Procedures:
"
- for(var/datum/surgery/procedure in patient.surgeries)
- dat += "[procedure.name]
"
+ dat += get_patient_info()
else
patient = null
dat += "No patient detected"
else
dat += "Operating table not found."
- dat += ""
- user << browse(dat, "window=op")
- onclose(user, "op")
\ No newline at end of file
+ var/datum/browser/popup = new(user, "op", "Operating Computer", 400, 500)
+ popup.set_content(dat)
+ popup.open()
+
+/obj/machinery/computer/operating/proc/get_patient_info()
+ var/dat = {"
+ Patient:
[patient.stat ? "Non-Responsive" : "Stable"]
+ Blood Type:
[patient.blood_type]
+
+
+
+ \> Brute Damage:
[patient.getBruteLoss()]%
+ \> Resp. Damage:
[patient.getOxyLoss()]%
+ \> Toxin Content:
[patient.getToxLoss()]%
+ \> Burn Severity:
[patient.getFireLoss()]%
+
+ "}
+ if(patient.surgeries.len)
+ dat += "
Initiated Procedures"
+ for(var/datum/surgery/procedure in patient.surgeries)
+ dat += "[capitalize(procedure.name)]
"
+ dat += "
"
+ return dat
\ No newline at end of file
diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm
index ebba423b6f8..0ade9193386 100644
--- a/code/modules/surgery/surgery.dm
+++ b/code/modules/surgery/surgery.dm
@@ -11,18 +11,19 @@
var/has_multi_loc = 0 //Multiple locations - RR
-
-
/datum/surgery/proc/next_step(mob/user, mob/living/carbon/target)
if(step_in_progress) return
- var/procedure = steps[status]
- var/datum/surgery_step/S = new procedure
+ var/datum/surgery_step/S = get_surgery_step()
if(S)
if(S.try_op(user, target, user.zone_sel.selecting, user.get_active_hand(), src))
return 1
return 0
+/datum/surgery/proc/get_surgery_step()
+ var/step_type = steps[status]
+ return new step_type
+
/datum/surgery/proc/complete(mob/living/carbon/human/target)
target.surgeries -= src