mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 20:45:28 +01:00
Health analyzer can print results (#86464)
## About The Pull Request Adds det's scanner feature to health analyzer so it's able to print analyzed patient results. Show to your colleague how horribly was destroyed clown's body! Prove to sec that John Syndicate hurt you really badly!  ## Why It's Good For The Game It's good for when you want to roleplay in somethin' like a court and you able to prove that someone beat you up 'cause we can't always count on medic's words, people can lie you know ## Changelog 🆑 add: health analyzer now able to print scanned results via Ctrl-shift-click! qol: text from healthscan proc now use < br > /🆑
This commit is contained in:
@@ -30,6 +30,8 @@
|
||||
custom_price = PAYCHECK_COMMAND
|
||||
/// If this analyzer will give a bonus to wound treatments apon woundscan.
|
||||
var/give_wound_treatment_bonus = FALSE
|
||||
var/last_scan_text
|
||||
var/scanner_busy = FALSE
|
||||
|
||||
/obj/item/healthanalyzer/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -38,7 +40,7 @@
|
||||
/obj/item/healthanalyzer/examine(mob/user)
|
||||
. = ..()
|
||||
if(src.mode != SCANNER_NO_MODE)
|
||||
. += span_notice("Alt-click [src] to toggle the limb damage readout.")
|
||||
. += span_notice("Alt-click [src] to toggle the limb damage readout. Ctrl-shift-click to print readout report.")
|
||||
|
||||
/obj/item/healthanalyzer/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message(span_suicide("[user] begins to analyze [user.p_them()]self with [src]! The display shows that [user.p_theyre()] dead!"))
|
||||
@@ -71,10 +73,10 @@
|
||||
if ((HAS_TRAIT(user, TRAIT_CLUMSY) || HAS_TRAIT(user, TRAIT_DUMB)) && prob(50))
|
||||
user.visible_message(span_warning("[user] analyzes the floor's vitals!"), \
|
||||
span_notice("You stupidly try to analyze the floor's vitals!"))
|
||||
to_chat(user, "[span_info("Analyzing results for The floor:\n\tOverall status: <b>Healthy</b>")]\
|
||||
\n[span_info("Key: <font color='#00cccc'>Suffocation</font>/<font color='#00cc66'>Toxin</font>/<font color='#ffcc33'>Burn</font>/<font color='#ff3333'>Brute</font>")]\
|
||||
\n[span_info("\tDamage specifics: <font color='#66cccc'>0</font>-<font color='#00cc66'>0</font>-<font color='#ff9933'>0</font>-<font color='#ff3333'>0</font>")]\
|
||||
\n[span_info("Body temperature: ???")]")
|
||||
to_chat(user, "[span_info("Analyzing results for The floor:<br>\tOverall status: <b>Healthy</b>")]\
|
||||
<br>[span_info("Key: <font color='#00cccc'>Suffocation</font>/<font color='#00cc66'>Toxin</font>/<font color='#ffcc33'>Burn</font>/<font color='#ff3333'>Brute</font>")]\
|
||||
<br>[span_info("\tDamage specifics: <font color='#66cccc'>0</font>-<font color='#00cc66'>0</font>-<font color='#ff9933'>0</font>-<font color='#ff3333'>0</font>")]\
|
||||
<br>[span_info("Body temperature: ???")]")
|
||||
return
|
||||
|
||||
if(ispodperson(M) && !advanced)
|
||||
@@ -88,6 +90,7 @@
|
||||
switch (scanmode)
|
||||
if (SCANMODE_HEALTH)
|
||||
healthscan(user, M, mode, advanced)
|
||||
last_scan_text = healthscan(user, M, mode, advanced, tochat = FALSE)
|
||||
if (SCANMODE_WOUND)
|
||||
woundscan(user, M, src)
|
||||
|
||||
@@ -149,12 +152,12 @@
|
||||
mob_status = span_alert("<b>Deceased</b>")
|
||||
oxy_loss = max(rand(1, 40), oxy_loss, (300 - (tox_loss + fire_loss + brute_loss))) // Random oxygen loss
|
||||
|
||||
render_list += "[span_info("Analyzing results for [target]:")]\n<span class='info ml-1'>Overall status: [mob_status]</span>\n"
|
||||
render_list += "[span_info("Analyzing results for [target]:")]<br><span class='info ml-1'>Overall status: [mob_status]</span><br>"
|
||||
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/humantarget = target
|
||||
if(humantarget.undergoing_cardiac_arrest() && humantarget.stat != DEAD)
|
||||
render_list += "<span class='alert ml-1'><b>Subject suffering from heart attack: Apply defibrillation or other electric shock immediately!</b></span>\n"
|
||||
render_list += "<span class='alert ml-1'><b>Subject suffering from heart attack: Apply defibrillation or other electric shock immediately!</b></span><br>"
|
||||
if(humantarget.has_reagent(/datum/reagent/inverse/technetium))
|
||||
advanced = TRUE
|
||||
|
||||
@@ -164,22 +167,22 @@
|
||||
if(HAS_TRAIT(target, TRAIT_HUSK))
|
||||
if(advanced)
|
||||
if(HAS_TRAIT_FROM(target, TRAIT_HUSK, BURN))
|
||||
render_list += "<span class='alert ml-1'>Subject has been husked by severe burns.</span>\n"
|
||||
render_list += "<span class='alert ml-1'>Subject has been husked by severe burns.</span><br>"
|
||||
else if (HAS_TRAIT_FROM(target, TRAIT_HUSK, CHANGELING_DRAIN))
|
||||
render_list += "<span class='alert ml-1'>Subject has been husked by dessication.</span>\n"
|
||||
render_list += "<span class='alert ml-1'>Subject has been husked by dessication.</span><br>"
|
||||
else
|
||||
render_list += "<span class='alert ml-1'>Subject has been husked by mysterious causes.</span>\n"
|
||||
render_list += "<span class='alert ml-1'>Subject has been husked by mysterious causes.</span><br>"
|
||||
|
||||
else
|
||||
render_list += "<span class='alert ml-1'>Subject has been husked.</span>\n"
|
||||
render_list += "<span class='alert ml-1'>Subject has been husked.</span><br>"
|
||||
|
||||
if(target.getStaminaLoss())
|
||||
if(advanced)
|
||||
render_list += "<span class='alert ml-1'>Fatigue level: [target.getStaminaLoss()]%.</span>\n"
|
||||
render_list += "<span class='alert ml-1'>Fatigue level: [target.getStaminaLoss()]%.</span><br>"
|
||||
else
|
||||
render_list += "<span class='alert ml-1'>Subject appears to be suffering from fatigue.</span>\n"
|
||||
render_list += "<span class='alert ml-1'>Subject appears to be suffering from fatigue.</span><br>"
|
||||
if (!target.get_organ_slot(ORGAN_SLOT_BRAIN)) // kept exclusively for soul purposes
|
||||
render_list += "<span class='alert ml-1'>Subject lacks a brain.</span>\n"
|
||||
render_list += "<span class='alert ml-1'>Subject lacks a brain.</span><br>"
|
||||
|
||||
if(iscarbon(target))
|
||||
var/mob/living/carbon/carbontarget = target
|
||||
@@ -198,14 +201,14 @@
|
||||
trauma_desc += "permanent "
|
||||
trauma_desc += trauma.scan_desc
|
||||
trauma_text += trauma_desc
|
||||
render_list += "<span class='alert ml-1'>Cerebral traumas detected: subject appears to be suffering from [english_list(trauma_text)].</span>\n"
|
||||
render_list += "<span class='alert ml-1'>Cerebral traumas detected: subject appears to be suffering from [english_list(trauma_text)].</span><br>"
|
||||
if(carbontarget.quirks.len)
|
||||
render_list += "<span class='info ml-1'>Subject Major Disabilities: [carbontarget.get_quirk_string(FALSE, CAT_QUIRK_MAJOR_DISABILITY, from_scan = TRUE)].</span>\n"
|
||||
render_list += "<span class='info ml-1'>Subject Major Disabilities: [carbontarget.get_quirk_string(FALSE, CAT_QUIRK_MAJOR_DISABILITY, from_scan = TRUE)].</span><br>"
|
||||
if(advanced)
|
||||
render_list += "<span class='info ml-1'>Subject Minor Disabilities: [carbontarget.get_quirk_string(FALSE, CAT_QUIRK_MINOR_DISABILITY, TRUE)].</span>\n"
|
||||
render_list += "<span class='info ml-1'>Subject Minor Disabilities: [carbontarget.get_quirk_string(FALSE, CAT_QUIRK_MINOR_DISABILITY, TRUE)].</span><br>"
|
||||
|
||||
if (HAS_TRAIT(target, TRAIT_IRRADIATED))
|
||||
render_list += "<span class='alert ml-1'>Subject is irradiated. Supply toxin healing.</span>\n"
|
||||
render_list += "<span class='alert ml-1'>Subject is irradiated. Supply toxin healing.</span><br>"
|
||||
|
||||
//Eyes and ears
|
||||
if(advanced && iscarbon(target))
|
||||
@@ -215,24 +218,24 @@
|
||||
var/obj/item/organ/internal/ears/ears = carbontarget.get_organ_slot(ORGAN_SLOT_EARS)
|
||||
if(istype(ears))
|
||||
if(HAS_TRAIT_FROM(carbontarget, TRAIT_DEAF, GENETIC_MUTATION))
|
||||
render_list += "<span class='alert ml-2'>Subject is genetically deaf.\n</span>"
|
||||
render_list += "<span class='alert ml-2'>Subject is genetically deaf.<br></span>"
|
||||
else if(HAS_TRAIT_FROM(carbontarget, TRAIT_DEAF, EAR_DAMAGE))
|
||||
render_list += "<span class='alert ml-2'>Subject is deaf from ear damage.\n</span>"
|
||||
render_list += "<span class='alert ml-2'>Subject is deaf from ear damage.<br></span>"
|
||||
else if(HAS_TRAIT(carbontarget, TRAIT_DEAF))
|
||||
render_list += "<span class='alert ml-2'>Subject is deaf.\n</span>"
|
||||
render_list += "<span class='alert ml-2'>Subject is deaf.<br></span>"
|
||||
else
|
||||
if(ears.damage)
|
||||
render_list += "<span class='alert ml-2'>Subject has [ears.damage > ears.maxHealth ? "permanent ": "temporary "]hearing damage.\n</span>"
|
||||
render_list += "<span class='alert ml-2'>Subject has [ears.damage > ears.maxHealth ? "permanent ": "temporary "]hearing damage.<br></span>"
|
||||
if(ears.deaf)
|
||||
render_list += "<span class='alert ml-2'>Subject is [ears.damage > ears.maxHealth ? "permanently": "temporarily"] deaf.\n</span>"
|
||||
render_list += "<span class='alert ml-2'>Subject is [ears.damage > ears.maxHealth ? "permanently": "temporarily"] deaf.<br></span>"
|
||||
|
||||
// Eye status
|
||||
var/obj/item/organ/internal/eyes/eyes = carbontarget.get_organ_slot(ORGAN_SLOT_EYES)
|
||||
if(istype(eyes))
|
||||
if(carbontarget.is_blind())
|
||||
render_list += "<span class='alert ml-2'>Subject is blind.\n</span>"
|
||||
render_list += "<span class='alert ml-2'>Subject is blind.<br></span>"
|
||||
else if(carbontarget.is_nearsighted())
|
||||
render_list += "<span class='alert ml-2'>Subject is nearsighted.\n</span>"
|
||||
render_list += "<span class='alert ml-2'>Subject is nearsighted.<br></span>"
|
||||
|
||||
// Body part damage report
|
||||
if(iscarbon(target))
|
||||
@@ -264,7 +267,7 @@
|
||||
render_list += dmgreport // tables do not need extra linebreak
|
||||
for(var/obj/item/bodypart/limb as anything in carbontarget.bodyparts)
|
||||
for(var/obj/item/embed as anything in limb.embedded_objects)
|
||||
render_list += "<span class='alert ml-1'>Embedded object: [embed] located in \the [limb.plaintext_zone]</span>\n"
|
||||
render_list += "<span class='alert ml-1'>Embedded object: [embed] located in \the [limb.plaintext_zone]</span><br>"
|
||||
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/humantarget = target
|
||||
@@ -316,34 +319,34 @@
|
||||
|
||||
//Genetic stability
|
||||
if(advanced && humantarget.has_dna())
|
||||
render_list += "<span class='info ml-1'>Genetic Stability: [humantarget.dna.stability]%.</span>\n"
|
||||
render_list += "<span class='info ml-1'>Genetic Stability: [humantarget.dna.stability]%.</span><br>"
|
||||
|
||||
// Hulk and body temperature
|
||||
var/datum/species/targetspecies = humantarget.dna.species
|
||||
var/mutant = HAS_TRAIT(humantarget, TRAIT_HULK)
|
||||
|
||||
render_list += "<span class='info ml-1'>Species: [targetspecies.name][mutant ? "-derived mutant" : ""]</span>\n"
|
||||
render_list += "<span class='info ml-1'>Species: [targetspecies.name][mutant ? "-derived mutant" : ""]</span><br>"
|
||||
var/core_temperature_message = "Core temperature: [round(humantarget.coretemperature-T0C, 0.1)] °C ([round(humantarget.coretemperature*1.8-459.67,0.1)] °F)"
|
||||
if(humantarget.coretemperature >= humantarget.get_body_temp_heat_damage_limit())
|
||||
render_list += "<span class='alert ml-1'>☼ [core_temperature_message] ☼</span>\n"
|
||||
render_list += "<span class='alert ml-1'>☼ [core_temperature_message] ☼</span><br>"
|
||||
else if(humantarget.coretemperature <= humantarget.get_body_temp_cold_damage_limit())
|
||||
render_list += "<span class='alert ml-1'>❄ [core_temperature_message] ❄</span>\n"
|
||||
render_list += "<span class='alert ml-1'>❄ [core_temperature_message] ❄</span><br>"
|
||||
else
|
||||
render_list += "<span class='info ml-1'>[core_temperature_message]</span>\n"
|
||||
render_list += "<span class='info ml-1'>[core_temperature_message]</span><br>"
|
||||
|
||||
var/body_temperature_message = "Body temperature: [round(target.bodytemperature-T0C, 0.1)] °C ([round(target.bodytemperature*1.8-459.67,0.1)] °F)"
|
||||
if(target.bodytemperature >= target.get_body_temp_heat_damage_limit())
|
||||
render_list += "<span class='alert ml-1'>☼ [body_temperature_message] ☼</span>\n"
|
||||
render_list += "<span class='alert ml-1'>☼ [body_temperature_message] ☼</span><br>"
|
||||
else if(target.bodytemperature <= target.get_body_temp_cold_damage_limit())
|
||||
render_list += "<span class='alert ml-1'>❄ [body_temperature_message] ❄</span>\n"
|
||||
render_list += "<span class='alert ml-1'>❄ [body_temperature_message] ❄</span><br>"
|
||||
else
|
||||
render_list += "<span class='info ml-1'>[body_temperature_message]</span>\n"
|
||||
render_list += "<span class='info ml-1'>[body_temperature_message]</span><br>"
|
||||
|
||||
// Time of death
|
||||
if(target.station_timestamp_timeofdeath && (target.stat == DEAD || ((HAS_TRAIT(target, TRAIT_FAKEDEATH)) && !advanced)))
|
||||
render_list += "<span class='info ml-1'>Time of Death: [target.station_timestamp_timeofdeath]</span>\n"
|
||||
render_list += "<span class='info ml-1'>Time of Death: [target.station_timestamp_timeofdeath]</span><br>"
|
||||
var/tdelta = round(world.time - target.timeofdeath)
|
||||
render_list += "<span class='alert ml-1'><b>Subject died [DisplayTimeText(tdelta)] ago.</b></span>\n"
|
||||
render_list += "<span class='alert ml-1'><b>Subject died [DisplayTimeText(tdelta)] ago.</b></span><br>"
|
||||
|
||||
// Wounds
|
||||
if(iscarbon(target))
|
||||
@@ -354,14 +357,14 @@
|
||||
render_list += "<span class='alert ml-1'><b>Physical trauma[LAZYLEN(wounded_part.wounds) > 1 ? "s" : ""] detected in [wounded_part.name]</b>"
|
||||
for(var/k in wounded_part.wounds)
|
||||
var/datum/wound/W = k
|
||||
render_list += "<div class='ml-2'>[W.name] ([W.severity_text()])\nRecommended treatment: [W.treat_text]</div>" // less lines than in woundscan() so we don't overload people trying to get basic med info
|
||||
render_list += "<div class='ml-2'>[W.name] ([W.severity_text()])<br>Recommended treatment: [W.treat_text]</div>" // less lines than in woundscan() so we don't overload people trying to get basic med info
|
||||
render_list += "</span>"
|
||||
|
||||
//Diseases
|
||||
for(var/datum/disease/disease as anything in target.diseases)
|
||||
if(!(disease.visibility_flags & HIDDEN_SCANNER))
|
||||
render_list += "<span class='alert ml-1'><b>Warning: [disease.form] detected</b>\n\
|
||||
<div class='ml-2'>Name: [disease.name].\nType: [disease.spread_text].\nStage: [disease.stage]/[disease.max_stages].\nPossible Cure: [disease.cure_text]</div>\
|
||||
render_list += "<span class='alert ml-1'><b>Warning: [disease.form] detected</b><br>\
|
||||
<div class='ml-2'>Name: [disease.name].<br>Type: [disease.spread_text].<br>Stage: [disease.stage]/[disease.max_stages].<br>Possible Cure: [disease.cure_text]</div>\
|
||||
</span>" // divs do not need extra linebreak
|
||||
|
||||
// Blood Level
|
||||
@@ -370,26 +373,26 @@
|
||||
var/blood_id = carbontarget.get_blood_id()
|
||||
if(blood_id)
|
||||
if(carbontarget.is_bleeding())
|
||||
render_list += "<span class='alert ml-1'><b>Subject is bleeding!</b></span>\n"
|
||||
render_list += "<span class='alert ml-1'><b>Subject is bleeding!</b></span><br>"
|
||||
var/blood_percent = round((carbontarget.blood_volume / BLOOD_VOLUME_NORMAL) * 100)
|
||||
var/blood_type = carbontarget.dna.blood_type
|
||||
if(blood_id != /datum/reagent/blood) // special blood substance
|
||||
var/datum/reagent/R = GLOB.chemical_reagents_list[blood_id]
|
||||
blood_type = R ? R.name : blood_id
|
||||
if(carbontarget.blood_volume <= BLOOD_VOLUME_SAFE && carbontarget.blood_volume > BLOOD_VOLUME_OKAY)
|
||||
render_list += "<span class='alert ml-1'>Blood level: LOW [blood_percent]%, [carbontarget.blood_volume] cl,</span> [span_info("type: [blood_type]")]\n"
|
||||
render_list += "<span class='alert ml-1'>Blood level: LOW [blood_percent]%, [carbontarget.blood_volume] cl,</span> [span_info("type: [blood_type]")]<br>"
|
||||
else if(carbontarget.blood_volume <= BLOOD_VOLUME_OKAY)
|
||||
render_list += "<span class='alert ml-1'>Blood level: <b>CRITICAL [blood_percent]%</b>, [carbontarget.blood_volume] cl,</span> [span_info("type: [blood_type]")]\n"
|
||||
render_list += "<span class='alert ml-1'>Blood level: <b>CRITICAL [blood_percent]%</b>, [carbontarget.blood_volume] cl,</span> [span_info("type: [blood_type]")]<br>"
|
||||
else
|
||||
render_list += "<span class='info ml-1'>Blood level: [blood_percent]%, [carbontarget.blood_volume] cl, type: [blood_type]</span>\n"
|
||||
render_list += "<span class='info ml-1'>Blood level: [blood_percent]%, [carbontarget.blood_volume] cl, type: [blood_type]</span><br>"
|
||||
|
||||
// Blood Alcohol Content
|
||||
var/blood_alcohol_content = target.get_blood_alcohol_content()
|
||||
if(blood_alcohol_content > 0)
|
||||
if(blood_alcohol_content >= 0.24)
|
||||
render_list += "<span class='alert ml-1'>Blood alcohol content: <b>CRITICAL [blood_alcohol_content]%</b></span>\n"
|
||||
render_list += "<span class='alert ml-1'>Blood alcohol content: <b>CRITICAL [blood_alcohol_content]%</b></span><br>"
|
||||
else
|
||||
render_list += "<span class='info ml-1'>Blood alcohol content: [blood_alcohol_content]%</span>\n"
|
||||
render_list += "<span class='info ml-1'>Blood alcohol content: [blood_alcohol_content]%</span><br>"
|
||||
|
||||
// Cybernetics
|
||||
if(iscarbon(target))
|
||||
@@ -399,8 +402,8 @@
|
||||
if(IS_ROBOTIC_ORGAN(cyberimp) && !(cyberimp.organ_flags & ORGAN_HIDDEN))
|
||||
cyberimp_detect += "[!cyberimp_detect ? "[cyberimp.examine_title(user)]" : ", [cyberimp.examine_title(user)]"]"
|
||||
if(cyberimp_detect)
|
||||
render_list += "<span class='notice ml-1'>Detected cybernetic modifications:</span>\n"
|
||||
render_list += "<span class='notice ml-2'>[cyberimp_detect]</span>\n"
|
||||
render_list += "<span class='notice ml-1'>Detected cybernetic modifications:</span><br>"
|
||||
render_list += "<span class='notice ml-2'>[cyberimp_detect]</span><br>"
|
||||
// we handled the last <br> so we don't need handholding
|
||||
|
||||
if(tochat)
|
||||
@@ -408,6 +411,37 @@
|
||||
else
|
||||
return(jointext(render_list, ""))
|
||||
|
||||
/obj/item/healthanalyzer/click_ctrl_shift(mob/user)
|
||||
. = ..()
|
||||
if(!LAZYLEN(last_scan_text))
|
||||
balloon_alert(user, "no scans!")
|
||||
return
|
||||
if(scanner_busy)
|
||||
balloon_alert(user, "analyzer busy!")
|
||||
return
|
||||
scanner_busy = TRUE
|
||||
balloon_alert(user, "printing report...")
|
||||
addtimer(CALLBACK(src, PROC_REF(print_report)), 2 SECONDS)
|
||||
|
||||
/obj/item/healthanalyzer/proc/print_report(mob/user)
|
||||
var/obj/item/paper/report_paper = new(get_turf(src))
|
||||
|
||||
report_paper.color = COLOR_STARLIGHT
|
||||
report_paper.name = "Health scan report"
|
||||
var/report_text = "<center><B>Health scan report. Time of scan: [station_time_timestamp()]</B></center><HR><BR>"
|
||||
report_text += last_scan_text
|
||||
|
||||
report_paper.add_raw_text(report_text)
|
||||
report_paper.update_appearance()
|
||||
|
||||
if(ismob(loc))
|
||||
var/mob/printer = loc
|
||||
printer.put_in_hands(report_paper)
|
||||
balloon_alert(printer, "logs cleared")
|
||||
|
||||
report_text = list()
|
||||
scanner_busy = FALSE
|
||||
|
||||
/proc/chemscan(mob/living/user, mob/living/target)
|
||||
if(user.incapacitated)
|
||||
return
|
||||
@@ -422,12 +456,12 @@
|
||||
var/datum/reagent/reagent = r
|
||||
if(reagent.chemical_flags & REAGENT_INVISIBLE) //Don't show hidden chems on scanners
|
||||
continue
|
||||
render_block += "<span class='notice ml-2'>[round(reagent.volume, 0.001)] units of [reagent.name][reagent.overdosed ? "</span> - [span_boldannounce("OVERDOSING")]" : ".</span>"]\n"
|
||||
render_block += "<span class='notice ml-2'>[round(reagent.volume, 0.001)] units of [reagent.name][reagent.overdosed ? "</span> - [span_boldannounce("OVERDOSING")]" : ".</span>"]<br>"
|
||||
|
||||
if(!length(render_block)) //If no VISIBLY DISPLAYED reagents are present, we report as if there is nothing.
|
||||
render_list += "<span class='notice ml-1'>Subject contains no reagents in their blood.</span>\n"
|
||||
render_list += "<span class='notice ml-1'>Subject contains no reagents in their blood.</span><br>"
|
||||
else
|
||||
render_list += "<span class='notice ml-1'>Subject contains the following reagents in their blood:</span>\n"
|
||||
render_list += "<span class='notice ml-1'>Subject contains the following reagents in their blood:</span><br>"
|
||||
render_list += render_block //Otherwise, we add the header, reagent readouts, and clear the readout block for use on the stomach.
|
||||
render_block.Cut()
|
||||
|
||||
@@ -440,35 +474,35 @@
|
||||
if(bit.chemical_flags & REAGENT_INVISIBLE)
|
||||
continue
|
||||
if(!belly.food_reagents[bit.type])
|
||||
render_block += "<span class='notice ml-2'>[round(bit.volume, 0.001)] units of [bit.name][bit.overdosed ? "</span> - [span_boldannounce("OVERDOSING")]" : ".</span>"]\n"
|
||||
render_block += "<span class='notice ml-2'>[round(bit.volume, 0.001)] units of [bit.name][bit.overdosed ? "</span> - [span_boldannounce("OVERDOSING")]" : ".</span>"]<br>"
|
||||
else
|
||||
var/bit_vol = bit.volume - belly.food_reagents[bit.type]
|
||||
if(bit_vol > 0)
|
||||
render_block += "<span class='notice ml-2'>[round(bit_vol, 0.001)] units of [bit.name][bit.overdosed ? "</span> - [span_boldannounce("OVERDOSING")]" : ".</span>"]\n"
|
||||
render_block += "<span class='notice ml-2'>[round(bit_vol, 0.001)] units of [bit.name][bit.overdosed ? "</span> - [span_boldannounce("OVERDOSING")]" : ".</span>"]<br>"
|
||||
|
||||
if(!length(render_block))
|
||||
render_list += "<span class='notice ml-1'>Subject contains no reagents in their stomach.</span>\n"
|
||||
render_list += "<span class='notice ml-1'>Subject contains no reagents in their stomach.</span><br>"
|
||||
else
|
||||
render_list += "<span class='notice ml-1'>Subject contains the following reagents in their stomach:</span>\n"
|
||||
render_list += "<span class='notice ml-1'>Subject contains the following reagents in their stomach:</span><br>"
|
||||
render_list += render_block
|
||||
|
||||
// Addictions
|
||||
if(LAZYLEN(target.mind?.active_addictions))
|
||||
render_list += "<span class='boldannounce ml-1'>Subject is addicted to the following types of drug:</span>\n"
|
||||
render_list += "<span class='boldannounce ml-1'>Subject is addicted to the following types of drug:</span><br>"
|
||||
for(var/datum/addiction/addiction_type as anything in target.mind.active_addictions)
|
||||
render_list += "<span class='alert ml-2'>[initial(addiction_type.name)]</span>\n"
|
||||
render_list += "<span class='alert ml-2'>[initial(addiction_type.name)]</span><br>"
|
||||
|
||||
// Special eigenstasium addiction
|
||||
if(target.has_status_effect(/datum/status_effect/eigenstasium))
|
||||
render_list += "<span class='notice ml-1'>Subject is temporally unstable. Stabilising agent is recommended to reduce disturbances.</span>\n"
|
||||
render_list += "<span class='notice ml-1'>Subject is temporally unstable. Stabilising agent is recommended to reduce disturbances.</span><br>"
|
||||
|
||||
// Allergies
|
||||
for(var/datum/quirk/quirky as anything in target.quirks)
|
||||
if(istype(quirky, /datum/quirk/item_quirk/allergic))
|
||||
var/datum/quirk/item_quirk/allergic/allergies_quirk = quirky
|
||||
var/allergies = allergies_quirk.allergy_string
|
||||
render_list += "<span class='alert ml-1'>Subject is extremely allergic to the following chemicals:</span>\n"
|
||||
render_list += "<span class='alert ml-2'>[allergies]</span>\n"
|
||||
render_list += "<span class='alert ml-1'>Subject is extremely allergic to the following chemicals:</span><br>"
|
||||
render_list += "<span class='alert ml-2'>[allergies]</span><br>"
|
||||
|
||||
// we handled the last <br> so we don't need handholding
|
||||
to_chat(user, examine_block(jointext(render_list, "")), trailing_newline = FALSE, type = MESSAGE_TYPE_INFO)
|
||||
@@ -505,7 +539,7 @@
|
||||
render_list += "<span class='alert ml-1'><b>Warning: Physical trauma[LAZYLEN(wounded_part.wounds) > 1? "s" : ""] detected in [wounded_part.name]</b>"
|
||||
for(var/limb_wound in wounded_part.wounds)
|
||||
var/datum/wound/current_wound = limb_wound
|
||||
render_list += "<div class='ml-2'>[simple_scan ? current_wound.get_simple_scanner_description() : current_wound.get_scanner_description()]</div>\n"
|
||||
render_list += "<div class='ml-2'>[simple_scan ? current_wound.get_simple_scanner_description() : current_wound.get_scanner_description()]</div><br>"
|
||||
if (scanner.give_wound_treatment_bonus)
|
||||
ADD_TRAIT(current_wound, TRAIT_WOUND_SCANNED, ANALYZER_TRAIT)
|
||||
if(!advised)
|
||||
@@ -670,8 +704,8 @@
|
||||
var/list/render = list()
|
||||
for(var/datum/disease/disease as anything in patient.diseases)
|
||||
if(!(disease.visibility_flags & HIDDEN_SCANNER))
|
||||
render += "<span class='alert ml-1'><b>Warning: [disease.form] detected</b>\n\
|
||||
<div class='ml-2'>Name: [disease.name].\nType: [disease.spread_text].\nStage: [disease.stage]/[disease.max_stages].\nPossible Cure: [disease.cure_text]</div>\
|
||||
render += "<span class='alert ml-1'><b>Warning: [disease.form] detected</b><br>\
|
||||
<div class='ml-2'>Name: [disease.name].<br>Type: [disease.spread_text].<br>Stage: [disease.stage]/[disease.max_stages].<br>Possible Cure: [disease.cure_text]</div>\
|
||||
</span>"
|
||||
|
||||
if(!length(render))
|
||||
|
||||
Reference in New Issue
Block a user