diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 5b2831260a..33c1f06908 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -56,7 +56,7 @@ return M.forceMove(src) occupant = M - update_icon() //icon_state = "body_scanner_1" //VOREStation Edit - Health display for consoles with light and such. + update_icon() playsound(src, 'sound/machines/medbayscanner1.ogg', 50) // Beepboop you're being scanned. <3 add_fingerprint(user) qdel(G) @@ -101,7 +101,7 @@ O.forceMove(src) occupant = O - update_icon() //icon_state = "body_scanner_1" //VOREStation Edit - Health display for consoles with light and such. + update_icon() playsound(src, 'sound/machines/medbayscanner1.ogg', 50) // Beepboop you're being scanned. <3 add_fingerprint(user) SStgui.update_uis(src) @@ -184,6 +184,14 @@ update_icon() //VOREStation Edit - Health display for consoles with light and such. var/mob/living/carbon/human/H = occupant occupantData["name"] = H.name + occupantData["species"] = H.species.name + if(H.custom_species) + if( H.species.name == SPECIES_CUSTOM ) + // Fully custom species + occupantData["species"] = "[H.custom_species]" + else + // Using another species as base, doctors should know this to avoid some meds + occupantData["species"] = "[H.custom_species] \[Similar biology to [H.species.name]\]" occupantData["stat"] = H.stat occupantData["health"] = H.health occupantData["maxHealth"] = H.getMaxHealth() @@ -262,7 +270,6 @@ for(var/obj/thing in E.implants) var/implantSubData[0] var/obj/item/implant/I = thing - //VOREStation Block Edit Start var/obj/item/nif/N = thing if(istype(I)) implantSubData["name"] = I.name @@ -272,7 +279,6 @@ implantSubData["name"] = N.name implantSubData["known"] = istype(N) && N.known_implant implantData.Add(list(implantSubData)) - //VOREStation Block Edit End organData["implants"] = implantData organData["implants_len"] = implantData.len @@ -306,6 +312,16 @@ occupantData["extOrgan"] = extOrganData var/intOrganData[0] + for(var/organ_tag in H.species.has_organ) //Check to see if we are missing any organs + var/organData[0] + var/obj/item/organ/O = H.species.has_organ[organ_tag] + var/name = initial(O.name) + organData["name"] = name + O = H.internal_organs_by_name[organ_tag] + if(!O) + organData["missing"] = TRUE + intOrganData.Add(list(organData)) + for(var/obj/item/organ/I in H.internal_organs) var/organData[0] organData["name"] = I.name @@ -367,6 +383,17 @@ dat = span_blue(span_bold("Occupant Statistics:")) + "
" //Blah obvious if(istype(occupant)) //is there REALLY someone in there? + if(ishuman(occupant)) + var/mob/living/carbon/human/H = occupant + var/speciestext = H.species.name + if(H.custom_species) + if(H.species.name == SPECIES_CUSTOM ) + // Fully custom species + speciestext = "[H.custom_species]" + dat += span_blue("Sapient Species: [speciestext]") + "
" + else + speciestext = "[H.custom_species] \[Similar biology to [H.species.name]\]" + dat += span_blue("Sapient Species: [speciestext]") + "
" var/t1 switch(occupant.stat) // obvious, see what their status is if(0) @@ -545,6 +572,16 @@ dat += "" dat += "[i.name]N/A[i.damage][infection]:[mech][i_dead]" dat += "" + for(var/organ_tag in occupant.species.has_organ) //Check to see if we are missing any organs + var/organData[0] + var/obj/item/organ/O = occupant.species.has_organ[organ_tag] + var/name = initial(O.name) + organData["name"] = name + O = occupant.internal_organs_by_name[organ_tag] + if(!O) // Missing organ + dat += "" + dat += "[name]N/ANAMISSING" + dat += "" dat += "" if(occupant.sdisabilities & BLIND) dat += span_red("Cataracts detected.") + "
" diff --git a/code/game/objects/items/weapons/storage/belt_vr.dm b/code/game/objects/items/weapons/storage/belt_vr.dm index 2df32605d0..4190ba76c6 100644 --- a/code/game/objects/items/weapons/storage/belt_vr.dm +++ b/code/game/objects/items/weapons/storage/belt_vr.dm @@ -119,7 +119,8 @@ /obj/item/storage/bag/sheetsnatcher, /obj/item/melee, /obj/item/kinetic_crusher, - /obj/item/mining_scanner + /obj/item/mining_scanner, + /obj/item/storage/bag/ore ) //Pretty much, if it's in the mining vendor, they should be able to put it on the belt. diff --git a/tgui/packages/tgui/interfaces/BodyScanner/BodyScannerMainOccupant.tsx b/tgui/packages/tgui/interfaces/BodyScanner/BodyScannerMainOccupant.tsx index 54499fe3a7..00f05da6de 100644 --- a/tgui/packages/tgui/interfaces/BodyScanner/BodyScannerMainOccupant.tsx +++ b/tgui/packages/tgui/interfaces/BodyScanner/BodyScannerMainOccupant.tsx @@ -35,6 +35,7 @@ export const BodyScannerMainOccupant = (props: { occupant: occupant }) => { > {occupant.name} + {occupant.species} {o.name} - 0 && '0.5rem'} - ranges={damageRange} - > - {toFixed(o.damage)} - + {!o.missing && ( + 0 && '0.5rem'} + ranges={damageRange} + > + {!!o.damage && toFixed(o.damage)} + + )} {reduceOrganStatus([ - germStatus(o.germ_level), + !!o.germ_level && germStatus(o.germ_level), !!o.inflamed && 'Appendicitis detected.', ])} @@ -52,6 +54,7 @@ export const BodyScannerMainOrgansInternal = (props: { o.robotic === 1 && 'Robotic', o.robotic === 2 && 'Assisted', !!o.dead && DEAD, + !!o.missing && MISSING, ])} diff --git a/tgui/packages/tgui/interfaces/BodyScanner/types.ts b/tgui/packages/tgui/interfaces/BodyScanner/types.ts index f24117d1d8..ba9c9c46fd 100644 --- a/tgui/packages/tgui/interfaces/BodyScanner/types.ts +++ b/tgui/packages/tgui/interfaces/BodyScanner/types.ts @@ -7,6 +7,7 @@ export type Data = { export type occupant = { name: string; + species: string; stat: number; health: number; maxHealth: number; @@ -43,15 +44,16 @@ type reagent = { name: string; amount: number; overdose: BooleanLike }; export type internalOrgan = { name: string; - desc: string | null; - germ_level: number; - damage: number; - maxHealth: number; - bruised: number; - broken: number; + desc?: string | null; + germ_level?: number; + damage?: number; + maxHealth?: number; + bruised?: number; + broken?: number; robotic: BooleanLike; dead: BooleanLike; inflamed: BooleanLike; + missing: BooleanLike; }; export type externalOrgan = {