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] + +
+
Health:
[patient.health]%
+
\> 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