mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-18 11:36:24 +01:00
Merge remote-tracking branch 'tgstation/master' into upstream-2025-11-29
# Conflicts: # _maps/RandomRuins/SpaceRuins/derelict_sulaco.dmm # _maps/RandomRuins/SpaceRuins/garbagetruck2.dmm # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # _maps/map_files/tramstation/tramstation.dmm # code/_onclick/hud/new_player.dm # code/datums/components/squashable.dm # code/datums/diseases/advance/symptoms/heal.dm # code/datums/diseases/chronic_illness.dm # code/datums/status_effects/buffs.dm # code/datums/status_effects/debuffs/drunk.dm # code/datums/status_effects/debuffs/stamcrit.dm # code/game/machinery/computer/crew.dm # code/game/objects/items/devices/scanners/health_analyzer.dm # code/game/objects/items/wall_mounted.dm # code/game/turfs/closed/indestructible.dm # code/modules/admin/view_variables/filterrific.dm # code/modules/antagonists/heretic/influences.dm # code/modules/cargo/orderconsole.dm # code/modules/client/preferences.dm # code/modules/events/space_vines/vine_mutations.dm # code/modules/mob/dead/new_player/new_player.dm # code/modules/mob/living/carbon/human/death.dm # code/modules/mob/living/carbon/human/species_types/jellypeople.dm # code/modules/mob/living/damage_procs.dm # code/modules/mob/living/living.dm # code/modules/mob_spawn/ghost_roles/mining_roles.dm # code/modules/mob_spawn/mob_spawn.dm # code/modules/projectiles/ammunition/energy/laser.dm # code/modules/projectiles/guns/ballistic/launchers.dm # code/modules/projectiles/guns/energy/laser.dm # code/modules/reagents/chemistry/machinery/chem_dispenser.dm # code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm # code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm # code/modules/reagents/chemistry/reagents/medicine_reagents.dm # code/modules/surgery/healing.dm # code/modules/unit_tests/designs.dm # icons/mob/inhands/items_lefthand.dmi # icons/mob/inhands/items_righthand.dmi # tgui/packages/tgui/interfaces/ChemDispenser.tsx
This commit is contained in:
@@ -159,7 +159,7 @@
|
||||
if(AI && AI.loc == src)
|
||||
to_chat(AI, span_userdanger("Your core files are being wiped!"))
|
||||
while(AI.stat != DEAD && flush)
|
||||
AI.adjustOxyLoss(5)
|
||||
AI.adjust_oxy_loss(5)
|
||||
AI.updatehealth()
|
||||
sleep(0.5 SECONDS)
|
||||
flush = FALSE
|
||||
|
||||
@@ -56,13 +56,13 @@
|
||||
|
||||
/obj/item/blood_scanner/proc/scan_blood(mob/living/scanner, mob/living/carbon/scanned_person)
|
||||
var/render_list = list()
|
||||
var/oxy_loss = scanned_person.getOxyLoss()
|
||||
var/tox_loss = scanned_person.getToxLoss()
|
||||
var/oxy_loss = scanned_person.get_oxy_loss()
|
||||
var/tox_loss = scanned_person.get_tox_loss()
|
||||
render_list += span_info("You read the [src]'s screen:\n")
|
||||
render_list += "<span class='notice ml-1'>Blood Type: [scanned_person?.dna?.blood_type]</span>\n"
|
||||
if(oxy_loss > 50)//if they have knockout levels of suffocation damage
|
||||
render_list += "<span class='danger ml-1'>Warning: Hypoxic blood oxygen levels.</span>\n"
|
||||
if(scanned_person.blood_volume <= BLOOD_VOLUME_SAFE)
|
||||
if(scanned_person.get_blood_volume(apply_modifiers = TRUE) <= BLOOD_VOLUME_SAFE)
|
||||
render_list += "<span class='danger ml-1'>Warning: Dangerously low blood flow.</span>\n"
|
||||
if(tox_loss > 10)
|
||||
render_list += "<span class='danger ml-1'>Warning: Toxic buildup detected in bloodstream.</span>\n"
|
||||
|
||||
@@ -231,7 +231,7 @@
|
||||
. += span_notice_ml("[patient] has [pill_count] pill[pill_count > 1 ? "s" : ""] implanted in [patient.p_their()] teeth.\n")
|
||||
|
||||
//assess any suffocation damage
|
||||
var/hypoxia_status = patient.getOxyLoss() > 20
|
||||
var/hypoxia_status = patient.get_oxy_loss() > 20
|
||||
|
||||
if(patient == user)
|
||||
if(hypoxia_status)
|
||||
@@ -250,9 +250,11 @@
|
||||
else
|
||||
. += span_info_ml("You press a finger to [patient.p_their()] gums:\n")
|
||||
|
||||
if(patient.blood_volume <= BLOOD_VOLUME_SAFE && patient.blood_volume > BLOOD_VOLUME_OKAY)
|
||||
var/cached_blood_volume = patient.get_blood_volume(apply_modifiers = TRUE)
|
||||
|
||||
if(cached_blood_volume <= BLOOD_VOLUME_SAFE && cached_blood_volume > BLOOD_VOLUME_OKAY)
|
||||
. += span_danger_ml("Color returns slowly!\n")//low blood
|
||||
else if(patient.blood_volume <= BLOOD_VOLUME_OKAY)
|
||||
else if(cached_blood_volume <= BLOOD_VOLUME_OKAY)
|
||||
. += span_danger_ml("Color does not return!\n")//critical blood
|
||||
else
|
||||
. += span_notice_ml("Color returns quickly.\n")//they're okay :D
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
return
|
||||
RegisterSignal(current_area, COMSIG_AREA_POWER_CHANGE, PROC_REF(AreaPowerCheck))
|
||||
if(mapload)
|
||||
find_and_hang_on_wall()
|
||||
find_and_hang_on_atom()
|
||||
GLOB.intercoms_list += src
|
||||
|
||||
/obj/item/radio/intercom/Destroy()
|
||||
|
||||
@@ -67,10 +67,10 @@
|
||||
autopsy_information += "Time of Death - <b>[scanned.station_timestamp_timeofdeath]</b></br>"
|
||||
autopsy_information += "Subject has been dead for <b>[DisplayTimeText(round(world.time - scanned.timeofdeath))]</b>.<hr>"
|
||||
|
||||
var/oxy_loss = scanned.getOxyLoss()
|
||||
var/tox_loss = scanned.getToxLoss()
|
||||
var/fire_loss = scanned.getFireLoss()
|
||||
var/brute_loss = scanned.getBruteLoss()
|
||||
var/oxy_loss = scanned.get_oxy_loss()
|
||||
var/tox_loss = scanned.get_tox_loss()
|
||||
var/fire_loss = scanned.get_fire_loss()
|
||||
var/brute_loss = scanned.get_brute_loss()
|
||||
/// "Body Data" portion of the autopsy - damage, wounds, and limbs
|
||||
var/dmgreport = "<u><b>Body Data:</b></u>\
|
||||
<table class='ml-2'>\
|
||||
@@ -187,31 +187,32 @@
|
||||
|
||||
// Blood Info
|
||||
if(HAS_TRAIT(scanned, TRAIT_HUSK))
|
||||
autopsy_information += "Blood can't be found, subject is husked by: "
|
||||
if(HAS_TRAIT_FROM(scanned, TRAIT_HUSK, BURN))
|
||||
autopsy_information += "Severe burns.</br>"
|
||||
else if (HAS_TRAIT_FROM(scanned, TRAIT_HUSK, CHANGELING_DRAIN))
|
||||
autopsy_information += "Subject is husked by: "
|
||||
if(HAS_TRAIT_FROM(scanned, TRAIT_HUSK, CHANGELING_DRAIN))
|
||||
autopsy_information += "Desiccation, commonly caused by Changelings.</br>"
|
||||
else
|
||||
else if(!HAS_TRAIT_FROM(scanned, TRAIT_HUSK, BURN)) // prioritize showing unknown causes over burns
|
||||
autopsy_information += "Unknown causes.</br>"
|
||||
else
|
||||
var/datum/blood_type/blood_type = scanned.get_bloodtype()
|
||||
if(blood_type)
|
||||
var/blood_percent = round((scanned.blood_volume / BLOOD_VOLUME_NORMAL) * 100)
|
||||
var/blood_type_format
|
||||
var/level_format
|
||||
if(scanned.blood_volume <= BLOOD_VOLUME_SAFE && scanned.blood_volume > BLOOD_VOLUME_OKAY)
|
||||
level_format = "LOW [blood_percent]%, [scanned.blood_volume] cl"
|
||||
else if(scanned.blood_volume <= BLOOD_VOLUME_OKAY)
|
||||
level_format = "<u>CRITICAL [blood_percent]%</u>, [scanned.blood_volume] cl"
|
||||
else
|
||||
level_format = "[blood_percent]%, [scanned.blood_volume] cl"
|
||||
if(blood_type.get_type())
|
||||
blood_type_format = "type: [blood_type.get_type()]"
|
||||
autopsy_information += "<b>[blood_type.get_blood_name()] level:</b> [level_format], [blood_type_format]</br>"
|
||||
var/blood_alcohol_content = scanned.get_blood_alcohol_content()
|
||||
if(blood_alcohol_content > 0)
|
||||
autopsy_information += "↳ [blood_type?.get_blood_name() || "Blood"] alcohol content: [blood_alcohol_content]%</br>"
|
||||
else
|
||||
autopsy_information += "Severe burns.</br>"
|
||||
|
||||
var/datum/blood_type/blood_type = scanned.get_bloodtype()
|
||||
if(blood_type)
|
||||
var/cached_blood_volume = scanned.get_blood_volume(apply_modifiers = TRUE)
|
||||
var/blood_percent = round((cached_blood_volume / BLOOD_VOLUME_NORMAL) * 100)
|
||||
var/blood_type_format
|
||||
var/level_format
|
||||
if(cached_blood_volume <= BLOOD_VOLUME_SAFE && cached_blood_volume > BLOOD_VOLUME_OKAY)
|
||||
level_format = "LOW [blood_percent]%, [cached_blood_volume] cl"
|
||||
else if(cached_blood_volume <= BLOOD_VOLUME_OKAY)
|
||||
level_format = "<u>CRITICAL [blood_percent]%</u>, [cached_blood_volume] cl"
|
||||
else
|
||||
level_format = "[blood_percent]%, [cached_blood_volume] cl"
|
||||
if(blood_type.get_type())
|
||||
blood_type_format = "type: [blood_type.get_type()]"
|
||||
autopsy_information += "<b>[blood_type.get_blood_name()] level:</b> [level_format], [blood_type_format]</br>"
|
||||
var/blood_alcohol_content = scanned.get_blood_alcohol_content()
|
||||
if(blood_alcohol_content > 0)
|
||||
autopsy_information += "↳ [blood_type?.get_blood_name() || "Blood"] alcohol content: [blood_alcohol_content]%</br>"
|
||||
autopsy_information += "<hr>"
|
||||
|
||||
autopsy_information += "<u>Chemical Data:</u></br>"
|
||||
|
||||
@@ -156,10 +156,10 @@
|
||||
var/list/render_list = list()
|
||||
|
||||
// Damage specifics
|
||||
var/oxy_loss = target.getOxyLoss()
|
||||
var/tox_loss = target.getToxLoss()
|
||||
var/fire_loss = target.getFireLoss()
|
||||
var/brute_loss = target.getBruteLoss()
|
||||
var/oxy_loss = target.get_oxy_loss()
|
||||
var/tox_loss = target.get_tox_loss()
|
||||
var/fire_loss = target.get_fire_loss()
|
||||
var/brute_loss = target.get_brute_loss()
|
||||
var/mob_status = (!target.appears_alive() ? span_alert("<b>Deceased</b>") : "<b>[round(target.health / target.maxHealth, 0.01) * 100]% healthy</b>")
|
||||
|
||||
if(HAS_TRAIT(target, TRAIT_FAKEDEATH) && target.stat != DEAD)
|
||||
@@ -188,9 +188,9 @@
|
||||
render_list += "<span class='alert ml-1'>Subject has been [conditional_tooltip("husked", "Repair burns, then apply choice of: [SYNTHFLESH_UNHUSK_AMOUNT]u pure [/datum/reagent/medicine/c2/synthflesh::name] / up to [SYNTHFLESH_UNHUSK_MAX]u impure [/datum/reagent/medicine/c2/synthflesh::name] / 5u [/datum/reagent/medicine/rezadone::name].", tochat)] due to [husk_reason].</span><br>"
|
||||
// BUBBER EDIT END
|
||||
|
||||
if(target.getStaminaLoss())
|
||||
if(target.get_stamina_loss())
|
||||
if(advanced)
|
||||
render_list += "<span class='alert ml-1'>Fatigue level: [target.getStaminaLoss()]%.</span><br>"
|
||||
render_list += "<span class='alert ml-1'>Fatigue level: [target.get_stamina_loss()]%.</span><br>"
|
||||
else
|
||||
render_list += "<span class='alert ml-1'>Subject appears to be suffering from fatigue.</span><br>"
|
||||
|
||||
@@ -371,15 +371,16 @@
|
||||
// Blood Level
|
||||
var/datum/blood_type/blood_type = target.get_bloodtype()
|
||||
if(blood_type)
|
||||
var/blood_percent = round((target.blood_volume / BLOOD_VOLUME_NORMAL) * 100)
|
||||
var/cached_blood_volume = target.get_blood_volume(apply_modifiers = TRUE)
|
||||
var/blood_percent = round((cached_blood_volume / BLOOD_VOLUME_NORMAL) * 100)
|
||||
var/blood_type_format
|
||||
var/level_format
|
||||
if(target.blood_volume <= BLOOD_VOLUME_SAFE && target.blood_volume > BLOOD_VOLUME_OKAY)
|
||||
level_format = "LOW [blood_percent]%, [target.blood_volume] cl"
|
||||
if(cached_blood_volume <= BLOOD_VOLUME_SAFE && cached_blood_volume > BLOOD_VOLUME_OKAY)
|
||||
level_format = "LOW [blood_percent]%, [cached_blood_volume] cl"
|
||||
if (blood_type.restoration_chem)
|
||||
level_format = conditional_tooltip(level_format, "Recommendation: [blood_type.restoration_chem::name] supplement.", tochat)
|
||||
else if(target.blood_volume <= BLOOD_VOLUME_OKAY)
|
||||
level_format = "<b>CRITICAL [blood_percent]%</b>, [target.blood_volume] cl"
|
||||
else if(cached_blood_volume <= BLOOD_VOLUME_OKAY)
|
||||
level_format = "<b>CRITICAL [blood_percent]%</b>, [cached_blood_volume] cl"
|
||||
var/recommendation = list()
|
||||
if (blood_type.restoration_chem)
|
||||
recommendation += "[blood_type.restoration_chem::name] supplement"
|
||||
@@ -391,7 +392,7 @@
|
||||
recommendation += "immediate [blood_type.get_blood_name()] transufion"
|
||||
level_format = conditional_tooltip(level_format, "Recommendation: [english_list(recommendation, and_text = " or ")].", tochat)
|
||||
else
|
||||
level_format = "[blood_percent]%, [target.blood_volume] cl"
|
||||
level_format = "[blood_percent]%, [cached_blood_volume] cl"
|
||||
|
||||
if (blood_type.get_type())
|
||||
blood_type_format = "type: [blood_type.get_type()]"
|
||||
@@ -401,7 +402,7 @@
|
||||
compatible_types_readable |= initial(comp_blood_type.name)
|
||||
blood_type_format = span_tooltip("Can receive from types [english_list(compatible_types_readable)].", blood_type_format)
|
||||
|
||||
render_list += "<span class='[target.blood_volume < BLOOD_VOLUME_SAFE ? "alert" : "info"] ml-1'>[blood_type.get_blood_name()] level: [level_format],</span> <span class='info'>[blood_type_format]</span><br>"
|
||||
render_list += "<span class='[cached_blood_volume < BLOOD_VOLUME_SAFE ? "alert" : "info"] ml-1'>[blood_type.get_blood_name()] level: [level_format],</span> <span class='info'>[blood_type_format]</span><br>"
|
||||
|
||||
var/blood_alcohol_content = target.get_blood_alcohol_content()
|
||||
if(blood_alcohol_content > 0)
|
||||
@@ -716,7 +717,7 @@
|
||||
show_emotion(AID_EMOTION_HAPPY)
|
||||
|
||||
/obj/item/healthanalyzer/simple/proc/violence_damage(mob/living/user)
|
||||
user.adjustBruteLoss(4)
|
||||
user.adjust_brute_loss(4)
|
||||
|
||||
/obj/item/healthanalyzer/simple/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
|
||||
if(!isliving(interacting_with))
|
||||
@@ -784,7 +785,7 @@
|
||||
scan_for_what = "diseases"
|
||||
|
||||
/obj/item/healthanalyzer/simple/disease/violence_damage(mob/living/user)
|
||||
user.adjustBruteLoss(1)
|
||||
user.adjust_brute_loss(1)
|
||||
user.reagents.add_reagent(/datum/reagent/toxin, rand(1, 3))
|
||||
|
||||
/obj/item/healthanalyzer/simple/disease/do_the_scan(mob/living/carbon/scanning, mob/living/user)
|
||||
|
||||
Reference in New Issue
Block a user