From 9db8cf519108161fc252fb62ad371c87769d3851 Mon Sep 17 00:00:00 2001 From: Geeves Date: Sat, 8 May 2021 12:08:56 +0200 Subject: [PATCH] Triage Tags (#11684) --- code/__defines/misc.dm | 1 + code/__defines/mobs.dm | 9 ++++++- code/defines/procs/hud.dm | 4 ++- .../mob/living/carbon/human/examine.dm | 5 ++-- code/modules/mob/living/carbon/human/human.dm | 15 ++++++++++- .../mob/living/carbon/human/human_defines.dm | 2 ++ code/modules/mob/living/carbon/human/life.dm | 24 +++++++++++------- html/changelogs/geeves-triage_tags.yml | 7 +++++ icons/mob/hud_med.dmi | Bin 495 -> 672 bytes icons/mob/screen/triage_tag.dmi | Bin 0 -> 729 bytes 10 files changed, 53 insertions(+), 14 deletions(-) create mode 100644 html/changelogs/geeves-triage_tags.yml create mode 100644 icons/mob/screen/triage_tag.dmi diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index b5a01d275f2..c89c563cf11 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -91,6 +91,7 @@ #define SPECIALROLE_HUD 8 // AntagHUD image. #define STATUS_HUD_OOC 9 // STATUS_HUD without virus DB check for someone being ill. #define LIFE_HUD 10 // STATUS_HUD that only reports dead or alive +#define TRIAGE_HUD 11 // a HUD that creates a bar above the user showing their medical status // Shuttles. diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index 2411d32bd84..f72337b96a3 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -390,6 +390,13 @@ #define CURE_SURGERY "surgery" #define CURE_ADMIN "all" +// triage tags +#define TRIAGE_NONE "None" +#define TRIAGE_GREEN "Green" +#define TRIAGE_YELLOW "Yellow" +#define TRIAGE_RED "Red" +#define TRIAGE_BLACK "Black" + // Surgery Stuff #define SURGERY_SUCCESS 2 // Proceed with surgery #define SURGERY_FAIL 1 // Autofail surgery @@ -419,4 +426,4 @@ // Robot Overlay Defines #define ROBOT_PANEL_EXPOSED "exposed" #define ROBOT_PANEL_CELL "cell" -#define ROBOT_PANEL_NO_CELL "no cell" +#define ROBOT_PANEL_NO_CELL "no cell" \ No newline at end of file diff --git a/code/defines/procs/hud.dm b/code/defines/procs/hud.dm index b37c9193b81..1e037d0d929 100644 --- a/code/defines/procs/hud.dm +++ b/code/defines/procs/hud.dm @@ -4,7 +4,7 @@ the HUD updates properly! */ //HUD image type used to properly clear client.images precisely /image/hud_overlay - appearance_flags = RESET_COLOR|RESET_ALPHA + appearance_flags = RESET_COLOR|RESET_ALPHA|RESET_TRANSFORM //Medical HUD outputs. Called by the Life() proc of the mob using it, usually. proc/process_med_hud(var/mob/M, var/local_scanner, var/mob/Alt) @@ -19,12 +19,14 @@ proc/process_med_hud(var/mob/M, var/local_scanner, var/mob/Alt) if(local_scanner) P.Client.images += patient.hud_list[HEALTH_HUD] P.Client.images += patient.hud_list[STATUS_HUD] + P.Client.images += patient.hud_list[TRIAGE_HUD] else var/sensor_level = getsensorlevel(patient) if(sensor_level >= SUIT_SENSOR_VITAL) P.Client.images += patient.hud_list[HEALTH_HUD] if(sensor_level >= SUIT_SENSOR_BINARY) P.Client.images += patient.hud_list[LIFE_HUD] + P.Client.images += patient.hud_list[TRIAGE_HUD] //Security HUDs. Pass a value for the second argument to enable implant viewing or other special features. proc/process_sec_hud(var/mob/M, var/advanced_mode, var/mob/Alt) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 99707d22266..134df1f27e8 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -366,8 +366,9 @@ if(istype(R)) medical = R.physical_status - msg += "Physical status: \[[medical]\]\n" - msg += "Medical records: \[View\] \[Add comment\]\n" + msg += "Physical Status: \[[medical]\]\n" + msg += "Medical Records: \[View\] \[Add Comment\]\n" + msg += "Triage Tag: \[[triage_tag]\]\n" if(print_flavor_text()) msg += "[print_flavor_text()]\n" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 934b891e04c..bb1183256b1 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -9,7 +9,7 @@ var/species_items_equipped // used so species that need special items (autoinhalers for vaurca/RMT for offworlders) don't get them twice when they shouldn't. - var/list/hud_list[10] + var/list/hud_list[11] var/embedded_flag //To check if we've need to roll for damage on movement while an item is imbedded in us. var/obj/item/rig/wearing_rig // This is very not good, but it's much much better than calling get_rig() every update_canmove() call. mob_size = 9//Based on average weight of a human @@ -47,6 +47,7 @@ hud_list[SPECIALROLE_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") hud_list[STATUS_HUD_OOC] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudhealthy") hud_list[LIFE_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudhealthy") + hud_list[TRIAGE_HUD] = new /image/hud_overlay('icons/mob/hud_med.dmi', src, triage_tag) //Scaling down the ID hud var/image/holder = hud_list[ID_HUD] @@ -759,6 +760,18 @@ var/mob/living/silicon/robot/U = usr R.medical.comments += text("Made by [U.name] ([U.mod_type] [U.braintype]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]
[t1]") + if(href_list["triagetag"]) + if(hasHUD(usr, "medical")) + var/static/list/tags = list() + if(!length(tags)) + for(var/thing in list(TRIAGE_NONE, TRIAGE_GREEN, TRIAGE_YELLOW, TRIAGE_RED, TRIAGE_BLACK)) + tags[thing] = image(icon = 'icons/mob/screen/triage_tag.dmi', icon_state = thing) + var/chosen_tag = show_radial_menu(usr, src, tags, radius = 42, tooltips = TRUE) + if(chosen_tag) + triage_tag = chosen_tag + BITSET(hud_updateflag, HEALTH_HUD) + handle_hud_list() + if (href_list["lookitem"]) var/obj/item/I = locate(href_list["lookitem"]) if(!I) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index e644bba8e65..e8f1e24542e 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -124,3 +124,5 @@ var/datum/martial_art/primary_martial_art = null var/list/datum/martial_art/known_martial_arts = null + + var/triage_tag = TRIAGE_NONE \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 9cd396b9bd4..f76be394e56 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1153,15 +1153,21 @@ /mob/living/carbon/human/proc/handle_hud_list(var/force_update = FALSE) if(force_update) hud_updateflag = 1022 - if (BITTEST(hud_updateflag, HEALTH_HUD) && hud_list[HEALTH_HUD]) - var/image/holder = hud_list[HEALTH_HUD] - if(stat == DEAD || (status_flags & FAKEDEATH)) - holder.icon_state = "0" // X_X - else if(is_asystole()) - holder.icon_state = "flatline" - else - holder.icon_state = "[pulse()]" - hud_list[HEALTH_HUD] = holder + + if (BITTEST(hud_updateflag, HEALTH_HUD)) + if(hud_list[HEALTH_HUD]) + var/image/holder = hud_list[HEALTH_HUD] + if(stat == DEAD || (status_flags & FAKEDEATH)) + holder.icon_state = "0" // X_X + else if(is_asystole()) + holder.icon_state = "flatline" + else + holder.icon_state = "[pulse()]" + hud_list[HEALTH_HUD] = holder + if(hud_list[TRIAGE_HUD]) + var/image/holder = hud_list[TRIAGE_HUD] + holder.icon_state = triage_tag + hud_list[TRIAGE_HUD] = holder if (BITTEST(hud_updateflag, LIFE_HUD) && hud_list[LIFE_HUD]) var/image/holder = hud_list[LIFE_HUD] diff --git a/html/changelogs/geeves-triage_tags.yml b/html/changelogs/geeves-triage_tags.yml new file mode 100644 index 00000000000..b4ffa348b84 --- /dev/null +++ b/html/changelogs/geeves-triage_tags.yml @@ -0,0 +1,7 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "Added triage tags. Examine any humanoid while wearing any MedHUD to edit their triage tags. It comes in four variants, green, yellow, red, black, to show how critical the patient is." + - tweak: "Made HUD elements for humanoids not inherit the rotation applied to them, so a horizontal human will still have a normal upright medHUD display." diff --git a/icons/mob/hud_med.dmi b/icons/mob/hud_med.dmi index 705886a5490f95c68ac672c9474559e431422aa4..20656a19fb964882c895a64778864d6eff6b79ec 100644 GIT binary patch literal 672 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I8A$FCoGuTfLIQk3Tn`*LaEyT=4ahxnhM%85 z_!`r?YfRUUGBHdCiC)WLVtCHLu$iH2Izwz4!*pH-2499N&l#3%W^ngqcrMJ4#=*eL z3lwG8%+KJ<#$an}D<>!CF*nH^D8yJ2Ma(^Q8L&uJbE0*NO3c5>dU9fKLUy)`}u{mF)bk~H*R!DfJvXvh( z$m-c~c*$JvCb9FLms+)Bj^FgzaQ48IWyW&3kLG-m?BBj#TII^yn}_OW8{9l18QT*r z)sS~rNZ+buiZ8b^^Ws-ezE7U(_`2?nWD(O&W5vslihk=KR(GAdfB!>n&F!mK&8y$J z0O(ISPZ!6KiaBp@oL<*tAmWxNA{fA!AE5vK|GZ^a96M+G@`d`bzxEbp-~YmEmW4s& zURC95`N_ZKmu#LF#T#e0mR;ZR5ueZGD{}6)YJ(m$2v{i896V+oWx*USqxJ8=(>hS_ zF)%nZ=zRE@`{47>E7Fhn&P+N3Qk``78kmaB>o<;*SfI~yLHyODeMw;T3^ksCFRCNY z{k(E_PP@y|y7gky+7G)Yz7u|3_RZqbyWg%4mhAfwT~~Y*qB`QpmHFnOOW&8uZZq%Q zH~skHsEE0KS&6lFt69H3UG(nk*Hz+f@)CbVLFtEq;eq_t+#B~wf93hyxOXov%dvX@ v>gw+mD_WoZ4B_sXsnKI+@JpKwtnz?RoQMbSw|&X`)j)htS3j3^P6 literal 495 zcmV)@%a6z`(w^iSGaa00DGTPE!Ct=GbNc0066cR9JLG zWpiV4X>fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TB zGg33tGfE(w;*!LYR3K9+Ehn)gCo?ZqiHkEOv#1y-WXQ#tR+N~V3St9wrKIL0R)Uy1 zP>9fLfL)UzLWLngV=Z)`5TVJ4pe7R?C`4#7ChP${QymaC20?^I6QX>Mrpc6`CPN)4 zYEo4FEwOYUsW#r7Hjc0LV#1K~!jg?bSUBgfI{V;Mo<8rQSe1fshMqu?Mh8 zZ}JFKyx7`WyF?Zc^KrN>P)82$4T&58 l001(xY&m-k0002kJOD-FAtgZbsI&k8002ovPDHLkV1oaZ%l7~P diff --git a/icons/mob/screen/triage_tag.dmi b/icons/mob/screen/triage_tag.dmi new file mode 100644 index 0000000000000000000000000000000000000000..19ea11fc4ca87e28f813aba221a3c89b1c410f83 GIT binary patch literal 729 zcmV;~0w(>5P)Ri(5T>oBP{|*lS006+iz~?zO5fKsSNJSnV9_n0NF)=YA-|e>m z0004WQchCV=-0C=2JR&a84_w-Y6@%7{?OD!tS z%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5$uB=IRf&r;C9|j)$Tj5R zOe;#vO@*-GirkA*Q}YO_icHPP$uB3UEGRXFpcO3!3eT=SV0z#6p=Roe%~X(Vf*|ck7>T( zQvv03ujz1wPXq;@{SJl;`#<6HO(6?t{`3H7{`_YQB5EO?2&A4vhulK^K_J%X{(erZ zp@sNNAh&dS|5-y6NEI3dph7zbvT}#JC&L?776iO3 z2za$1;w3@EYXu1}2ohc?m=m5CED5g?%sHPCEID5x$l_rISv)GiVf&2WuziJq@~MFG zuL=r25fuE3f^z>S{Hskt^QQ+u^S^w;4&sSG({m2u4+33{I*88%+Ln$2sY0Vb-O;c? zKLY(F<3Kz~V7bH`#J>d=d=Q}LmMd}>;Gc-q$gf~NUSQ