mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 02:09:41 +00:00
[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:
committed by
GitHub
parent
fa2f444342
commit
658b4e393f
@@ -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>"
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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">
|
||||
{!o.missing && (
|
||||
<ProgressBar
|
||||
minValue={0}
|
||||
maxValue={o.maxHealth / 100}
|
||||
value={o.damage / 100}
|
||||
maxValue={o.maxHealth ? o.maxHealth / 100 : 0}
|
||||
value={o.damage ? o.damage / 100 : 0}
|
||||
mt={i > 0 && '0.5rem'}
|
||||
ranges={damageRange}
|
||||
>
|
||||
{toFixed(o.damage)}
|
||||
{!!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>
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
Reference in New Issue
Block a user