diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index aad87026b2..bef395e188 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -17,6 +17,7 @@ //If you died in the game and are a ghsot - this will remain as null. //Note that this is not a reliable way to determine if admins started as observers, since they change mobs a lot. var/has_enabled_antagHUD = 0 + var/medHUD = 0 var/antagHUD = 0 universal_speak = 1 var/atom/movable/following = null @@ -107,7 +108,62 @@ Works together with spawning an observer, noted above. target_list += target if(target_list.len) assess_targets(target_list, src) + if(medHUD) + process_medHUD(src) + +// Direct copied from medical HUD glasses proc, used to determine what health bar to put over the targets head. +/mob/dead/proc/RoundHealth(var/health) + switch(health) + if(100 to INFINITY) + return "health100" + if(70 to 100) + return "health80" + if(50 to 70) + return "health60" + if(30 to 50) + return "health40" + if(18 to 30) + return "health25" + if(5 to 18) + return "health10" + if(1 to 5) + return "health1" + if(-99 to 0) + return "health0" + else + return "health-100" + return "0" + + +// Pretty much a direct copy of Medical HUD stuff, except will show ill if they are ill instead of also checking for known illnesses. + +/mob/dead/proc/process_medHUD(var/mob/M) + var/client/C = M.client + var/image/holder + for(var/mob/living/carbon/human/patient in oview(M)) + var/foundVirus = 0 + for(var/datum/disease/D in patient.viruses) + if(!D.hidden[SCANNER]) + foundVirus++ + if(!C) continue // I have no idea why this is here but I'm leaving it here because it's in the medicalHUD code as well. + holder = patient.hud_list[HEALTH_HUD] + if(patient.stat == 2) + holder.icon_state = "hudhealth-100" + else + holder.icon_state = "hud[RoundHealth(patient.health)]" + C.images += holder + + holder = patient.hud_list[STATUS_HUD] + if(patient.stat == 2) + holder.icon_state = "huddead" + else if(patient.status_flags & XENO_HOST) + holder.icon_state = "hudxeno" + else if(foundVirus) + holder.icon_state = "hudill" + else + holder.icon_state = "hudhealthy" + C.images += holder /mob/dead/proc/assess_targets(list/target_list, mob/dead/observer/U) @@ -238,6 +294,19 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp mind.current.key = key return 1 +/mob/dead/observer/verb/toggle_medHUD() + set category = "Ghost" + set name = "Toggle MedicHUD" + set desc = "Toggles Medical HUD allowing you to see how everyone is doing" + if(!client) + return + if(medHUD) + medHUD = 0 + src << "\blue Medical HUD Disabled" + else + medHUD = 1 + src << "\blue Medical HUD Enabled" + /mob/dead/observer/verb/toggle_antagHUD() set category = "Ghost" set name = "Toggle AntagHUD"