[MIRROR] Makes bodyscanners show missing internal organs (#10708)

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-04-21 15:38:14 -07:00
committed by GitHub
parent fa2f444342
commit 658b4e393f
5 changed files with 65 additions and 21 deletions

View File

@@ -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:")) + "<br>" //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]") + "<BR>"
else
speciestext = "[H.custom_species] \[Similar biology to [H.species.name]\]"
dat += span_blue("Sapient Species: [speciestext]") + "<BR>"
var/t1
switch(occupant.stat) // obvious, see what their status is
if(0)
@@ -545,6 +572,16 @@
dat += "<tr>"
dat += "<td>[i.name]</td><td>N/A</td><td>[i.damage]</td><td>[infection]:[mech][i_dead]</td><td></td>"
dat += "</tr>"
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 += "<tr>"
dat += "<td>[name]</td><td>N/A</td><td>NA</td><td>MISSING</td><td></td>"
dat += "</tr>"
dat += "</table>"
if(occupant.sdisabilities & BLIND)
dat += span_red("Cataracts detected.") + "<BR>"

View File

@@ -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.

View File

@@ -35,6 +35,7 @@ export const BodyScannerMainOccupant = (props: { occupant: occupant }) => {
>
<LabeledList>
<LabeledList.Item label="Name">{occupant.name}</LabeledList.Item>
<LabeledList.Item label="Species">{occupant.species}</LabeledList.Item>
<LabeledList.Item label="Health">
<ProgressBar
minValue={0}

View File

@@ -30,20 +30,22 @@ export const BodyScannerMainOrgansInternal = (props: {
<Table.Row key={i} style={{ textTransform: 'capitalize' }}>
<Table.Cell width="33%">{o.name}</Table.Cell>
<Table.Cell textAlign="center">
<ProgressBar
minValue={0}
maxValue={o.maxHealth / 100}
value={o.damage / 100}
mt={i > 0 && '0.5rem'}
ranges={damageRange}
>
{toFixed(o.damage)}
</ProgressBar>
{!o.missing && (
<ProgressBar
minValue={0}
maxValue={o.maxHealth ? o.maxHealth / 100 : 0}
value={o.damage ? o.damage / 100 : 0}
mt={i > 0 && '0.5rem'}
ranges={damageRange}
>
{!!o.damage && toFixed(o.damage)}
</ProgressBar>
)}
</Table.Cell>
<Table.Cell textAlign="right" width="33%">
<Box color="average" inline>
{reduceOrganStatus([
germStatus(o.germ_level),
!!o.germ_level && germStatus(o.germ_level),
!!o.inflamed && 'Appendicitis detected.',
])}
</Box>
@@ -52,6 +54,7 @@ export const BodyScannerMainOrgansInternal = (props: {
o.robotic === 1 && 'Robotic',
o.robotic === 2 && 'Assisted',
!!o.dead && <Box color="bad">DEAD</Box>,
!!o.missing && <Box color="bad">MISSING</Box>,
])}
</Box>
</Table.Cell>

View File

@@ -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 = {