diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 53e49224c6c..2b5366c8eac 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -93,7 +93,7 @@ qdel(G) -/obj/machinery/bodyscanner/MouseDrop_T(mob/living/carbon/O, mob/user as mob) +/obj/machinery/bodyscanner/MouseDrop_T(mob/living/carbon/human/O, mob/user as mob) if(!istype(O)) return 0 //not a mob if(user.incapacitated()) @@ -310,11 +310,12 @@ data["occupied"] = connected.occupant ? 1 : 0 var/occupantData[0] - if(connected.occupant && ishuman(connected.occupant)) + if(connected.occupant) var/mob/living/carbon/human/H = connected.occupant occupantData["name"] = H.name occupantData["stat"] = H.stat occupantData["health"] = H.health + occupantData["maxHealth"] = H.maxHealth occupantData["hasVirus"] = H.virus2.len @@ -334,23 +335,17 @@ occupantData["hasBorer"] = H.has_brain_worms() var/bloodData[0] - if(H.vessel) + bloodData["hasBlood"] = 0 + if(ishuman(H) && H.vessel && !(H.species && H.species.flags & NO_BLOOD)) var/blood_volume = round(H.vessel.get_reagent_amount("blood")) + bloodData["hasBlood"] = 1 bloodData["volume"] = blood_volume bloodData["percent"] = round(((blood_volume / 560)*100)) - + bloodData["pulse"] = H.get_pulse(GETPULSE_TOOL) + bloodData["bloodLevel"] = round(H.vessel.get_reagent_amount("blood")) + bloodData["bloodMax"] = H.max_blood occupantData["blood"] = bloodData - var/reagentData[0] - if(H.reagents) - reagentData["epinephrine"] = H.reagents.get_reagent_amount("Epinephrine") - reagentData["ether"] = H.reagents.get_reagent_amount("ether") - reagentData["silver_sulfadiazine"] = H.reagents.get_reagent_amount("silver_sulfadiazine") - reagentData["styptic_powder"] = H.reagents.get_reagent_amount("styptic_powder") - reagentData["salbutamol"] = H.reagents.get_reagent_amount("salbutamol") - - occupantData["reagents"] = reagentData - var/extOrganData[0] for(var/obj/item/organ/external/E in H.organs) var/organData[0] @@ -359,6 +354,10 @@ organData["germ_level"] = E.germ_level organData["bruteLoss"] = E.brute_dam organData["fireLoss"] = E.burn_dam + organData["totalLoss"] = E.brute_dam + E.burn_dam + organData["maxHealth"] = E.max_damage + organData["bruised"] = E.min_bruised_damage + organData["broken"] = E.min_broken_damage var/implantData[0] for(var/obj/I in E.implants) @@ -405,6 +404,9 @@ organData["desc"] = I.desc organData["germ_level"] = I.germ_level organData["damage"] = I.damage + organData["maxHealth"] = I.max_damage + organData["bruised"] = I.min_broken_damage + organData["broken"] = I.min_bruised_damage intOrganData.Add(list(organData)) @@ -427,6 +429,9 @@ if(..()) return 1 + if (href_list["ejectify"]) + src.connected.eject() + if (href_list["print_p"]) generate_printing_text() @@ -609,4 +614,4 @@ else dat = " Error: No Body Scanner connected." - printing_text = dat \ No newline at end of file + printing_text = dat diff --git a/nano/css/shared.css b/nano/css/shared.css index 8aaf9c4f257..67d726f5ebd 100644 --- a/nano/css/shared.css +++ b/nano/css/shared.css @@ -371,6 +371,11 @@ div.notice { background: #4f7529; } +.displayBarFill.notgood { + color: #ffffff; + background: #ffb400; +} + .displayBarFill.average { color: #ffffff; background: #cd6500; @@ -560,6 +565,11 @@ th.misc { color: #ffffff; } +/* Table styling for Med Scanner */ +.striped tr:nth-child(even) { + background-color: #404040 +} + /* Damage colors for crew monitoring computer */ .burn { color: orange; @@ -637,4 +647,4 @@ th.misc { .hot3 { color: #FF6600; -} \ No newline at end of file +} diff --git a/nano/templates/adv_med.tmpl b/nano/templates/adv_med.tmpl index 6e0e0d98752..a8790d09310 100644 --- a/nano/templates/adv_med.tmpl +++ b/nano/templates/adv_med.tmpl @@ -1,14 +1,15 @@ - + {{if !data.occupied}}

No occupant detected.

{{else}}

Occupant Data:

- Name: + Name:
{{:data.occupant.name}} @@ -18,328 +19,196 @@ Used In File(s): \code\game\machinery\adv_med.dm
Health:
- {{:helper.displayBar(data.occupant.health, 0, 100, (data.occupant.health >= 50) ? 'good' : (data.occupant.health >= 25) ? 'average' : 'bad')}} + {{:helper.displayBar(data.occupant.health, -100, 100, (data.occupant.health >= 50) ? 'good' : (data.occupant.health >= 0) ? 'average' : 'bad')}}
{{:helper.round(data.occupant.health*10)/10}}%
+
Status:
{{if data.occupant.stat==0}} - Alive + Alive {{else data.occupant.stat==1}} - Critical + Critical {{else}} - Dead + Dead {{/if}}
- {{:helper.link('Print', 'document', {'print_p' : 1, 'name' : data.occupant.name})}} +
-

Damage:

-
- Brute: +
+ Temperature:
-
- {{:data.occupant.bruteLoss}} -

-
- Burn: -
-
- {{:data.occupant.fireLoss}} -

-
- Oxygen: -
-
- {{:data.occupant.oxyLoss}} -

-
- Toxins: -
-
- {{:data.occupant.toxLoss}} -

-
- Brain: -
-
- {{:data.occupant.brainLoss}} -

-
- Radiation Level: -
-
- {{:data.occupant.radLoss}} -

-
- Genetic: -
-
- {{:data.occupant.cloneLoss}} -

-
- Paralysis: -
-
- {{:data.occupant.paralysis}}% ({{:data.occupant.paralysisSeconds}} seconds left!) -

-
-
-
- Body Temperature: -
-
+
{{:data.occupant.bodyTempC}}°C, {{:data.occupant.bodyTempF}}°F
- {{if data.occupant.hasVirus}} -
- Viral pathogen detected in blood stream. -
- {{/if}} {{if data.occupant.hasBorer}} -
- Large growth detected in frontal lobe, possibly cancerous. Surgical removal is recommended. -
+ + Large growth detected in frontal lobe, possibly cancerous. Surgical removal is recommended.
{{/if}} {{if data.occupant.blind}} - Pupils unresponsive.
+ Pupils unresponsive.
{{/if}} {{if data.occupant.nearsighted}} - Retinal Misalignment Detected + Retinal misalignment detected
{{/if}}
+ {{:helper.link('Print', 'document', {'print_p' : 1, 'name' : data.occupant.name})}} + {{:helper.link('Eject Occupant', 'arrowreturnthick-1-s', {'ejectify' : 1}, data.occupied ? null : 'disabled')}} +

-
-
Blood
-
-
- Volume -
-
- {{:data.occupant.blood.volume}} -
-
-
-
- Percent -
-
- {{:data.occupant.blood.percent}}% -
-
-
+ Damage: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Brute Damage: Brain Damage:
{{:helper.displayBar(data.occupant.bruteLoss, 0, data.occupant.maxHealth+100, (data.occupant.bruteLoss < 15) ? 'notgood' : (data.occupant.bruteLoss < 40) ? 'average' : 'bad', data.occupant.bruteLoss) }} {{:helper.displayBar(data.occupant.brainLoss, 0, data.occupant.maxHealth+100, (data.occupant.brainLoss < 15) ? 'notgood' : (data.occupant.brainLoss < 40) ? 'average' : 'bad', data.occupant.brainLoss)}}
Resp. Damage: Radiation Level:
{{:helper.displayBar(data.occupant.oxyLoss, 0, data.occupant.maxHealth+100, (data.occupant.oxyLoss < 15) ? 'notgood' : (data.occupant.oxyLoss < 40) ? 'average' : 'bad', data.occupant.oxyLoss)}} {{:helper.displayBar(data.occupant.radLoss, 0, data.occupant.maxHealth+100, (data.occupant.radLoss < 15) ? 'notgood' : (data.occupant.radLoss < 40) ? 'average' : 'bad', data.occupant.radLoss)}}
Toxin Damage: Genetic Damage:
{{:helper.displayBar(data.occupant.toxLoss, 0, data.occupant.maxHealth+100, (data.occupant.toxLoss < 15) ? 'notgood' : (data.occupant.toxLoss < 40) ? 'average' : 'bad', data.occupant.toxLoss)}} {{:helper.displayBar(data.occupant.cloneLoss, 0, data.occupant.maxHealth+100, (data.occupant.cloneLoss < 15) ? 'notgood' : (data.occupant.cloneLoss < 40) ? 'average' : 'bad', data.occupant.cloneLoss)}}
Burn Severity: Paralysis %: ({{:data.occupant.paralysisSeconds}} seconds left)
{{:helper.displayBar(data.occupant.fireLoss, 0, data.occupant.maxHealth+100, (data.occupant.fireLoss < 15) ? 'notgood' : (data.occupant.fireLoss < 40) ? 'average' : 'bad', data.occupant.fireLoss)}} {{:helper.displayBar(data.occupant.paralysis, 0, 100, (data.occupant.paralysis < 25) ? 'notgood' : (data.occupant.paralysis < 50) ? 'average' : 'bad', data.occupant.paralysis)}}
+ {{if data.occupant.blood.hasBlood}} +
+ Blood: +
+
Pulse:
{{:data.occupant.blood.pulse}} bpm
+
+
+
Blood Level:
+ {{:helper.displayBar(data.occupant.blood.bloodLevel, 0, data.occupant.blood.bloodMax, (data.occupant.blood.percent <= 60) ? 'bad' : (data.occupant.blood.percent <= 90) ? 'average' : 'good' )}} +
{{:data.occupant.blood.percent}}%, {{:data.occupant.blood.bloodLevel}}cl
+
+ + {{/if}}
- -
-
Reagents
-
-
- Epinephrine -
-
- {{:data.occupant.reagents.epinephrine}} -
-
-
-
- Ether -
-
- {{:data.occupant.reagents.ether}} -
-
-
-
- - Silver Sulfadiazine - -
-
- - {{:data.occupant.reagents.silver_sulfadiazine}} - -
-
-
-
- - Styptic Powder - -
-
- - {{:data.occupant.reagents.styptic_powder}} - -
-
-
-
- - Salbutamol - -
-
- - {{:data.occupant.reagents.salbutamol}} - -
-
-
- -
- + {{if data.occupant.hasVirus}} + + Viral pathogen detected in blood stream. +
+ {{/if}} External Organs -
- {{for data.occupant.extOrgan}} - {{if value.status.destroyed}} -
-
- {{:value.name}} - DESTROYED -
-
- {{else}} -
-
- {{:value.name}} -
-
- {{if value.status.broken}} - {{:value.status.broken}} - {{else value.status.splinted}} - Splinted - {{else value.status.robotic}} - Robotic - {{/if}} -
-
-
-
-  Brute/Burn -
-
- {{:value.bruteLoss}}/{{:value.fireLoss}} -
-
-
-
-  Injuries -
-
- {{if !value.status.bleeding}} - {{if !value.status.internalBleeding}} - No Injuries Detected - {{else}} - Internal Bleeding Detected + + + + + + + + + + + {{for data.occupant.extOrgan}} + + + + + + + + {{/for}} + +
Name Total damage Brute damage Burn damage Injuries
{{:value.name}} {{:helper.displayBar(value.totalLoss, 0, value.maxHealth, (value.totalLoss < value.bruised) ? 'notgood' : (value.totalLoss < value.broken) ? 'average' : 'bad', value.totalLoss) }} {{if value.bruteLoss> 0}} {{else}} {{/if}} {{:value.bruteLoss}} {{if value.fireLoss> 0}} {{else}} {{/if}} {{:value.fireLoss}} + + {{if value.status.destroyed}} DESTROYED
{{/if}} + {{if value.status.bleeding}} external bleeding
{{/if}} + {{if value.internalBleeding}} internal bleeding
{{/if}} + {{if value.lungRuptured}} lung ruptured
{{/if}} + {{if value.status.broken}} {{:value.status.broken}}
{{/if}} + {{if value.germ_level > 100}} + {{if value.germ_level < 300}} + mild infection
+ {{else value.germ_level < 400}} + mild infection+
+ {{else value.germ_level < 500}} + mild infection++
+ {{else value.germ_level < 700}} + acute infection
+ {{else value.germ_level < 800}} + acute infection+
+ {{else value.germ_level < 900}} + acute infection++
+ {{else value.germ_level >= 900}} + septic
+ {{/if}} {{/if}} - {{else}} - {{if value.status.internalBleeding}} -
Internal Bleeding Detected. External Bleeding Detected.
- {{else}} - External Bleeding Detected + {{if value.open}} open incision
{{/if}} +
+ {{if value.status.splinted}} splinted
{{/if}} + {{if value.status.robotic}} robotic
{{/if}} + {{if value.implants_len}} + {{for value.implants : impValue:impindex}} + {{:impValue.known ? impValue.name : "unknown object"}}
+ {{/for}} {{/if}} - {{/if}} - - - {{if value.germ_level > 100}} -
-
-  Infection -
-
- {{if value.germ_level < 300}} - Mild Infection - {{else value.germ_level < 400}} - Mild Infection+ - {{else value.germ_level < 500}} - Mild Infection++ - {{else value.germ_level < 700}} - Acute Infection - {{else value.germ_level < 800}} - Acute Infection+ - {{else value.germ_level < 900}} - Acute Infection++ - {{else value.germ_level >= 900}} - Septic - {{/if}} -
-
- {{/if}} - {{if value.open}} -
-
-  Operation Status -
-
- Open Incision -
-
- {{/if}} - {{if value.implants_len}} -
-
-  Implants -

- {{for value.implants :impValue:impindex}} -
-   {{:impValue.known ? impValue.name : "Unknown"}} -

- {{/for}} -
- {{/if}} - {{/if}} +

- {{/for}} -
Internal Organs -
- {{for data.occupant.intOrgan}} -
-
- {{:value.name}} -
-
- {{:value.desc != null ? value.desc : ""}} -
-
- {{if value.germ_level > 100}} -
-
-  Infection -
-
- {{if value.germ_level < 300}} - Mild Infection - {{else value.germ_level < 400}} - Mild Infection+ - {{else value.germ_level < 500}} - Mild Infection++ - {{else value.germ_level < 700}} - Acute Infection - {{else value.germ_level < 800}} - Acute Infection+ - {{else value.germ_level < 900}} - Acute Infection++ - {{else value.germ_level >= 900}} - Septic - {{/if}} -
-
- {{/if}} -
-
-  Damage -
-
- {{:value.damage}} -
-
- {{/for}} -
-{{/if}} \ No newline at end of file + + + + + + + + + {{for data.occupant.intOrgan}} + + + + + + {{/for}} + +
Name Brute damage Injuries
{{:value.name}}
{{:helper.displayBar(value.damage, 0, value.maxHealth, (value.damage < value.bruised) ? 'notgood' : (value.damage < value.broken) ? 'average' : 'bad', value.damage) }} + {{if value.germ_level > 100}} + {{if value.germ_level < 300}} + mild infection
+ {{else value.germ_level < 400}} + mild infection+
+ {{else value.germ_level < 500}} + mild infection++
+ {{else value.germ_level < 700}} + acute Infection
+ {{else value.germ_level < 800}} + acute Infection+
+ {{else value.germ_level < 900}} + acute Infection++
+ {{else value.germ_level >= 900}} + septic
+ {{/if}} + {{/if}} +
+{{/if}}