diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index d8671b6a27..55ed3e72ff 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -57531,7 +57531,7 @@
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"nWU" = (
-/obj/machinery/smartfridge/organ,
+/obj/machinery/smartfridge/organ/preloaded,
/turf/closed/wall,
/area/medical/sleeper)
"oce" = (
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index c7a902f090..ac7d291b2f 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -103794,10 +103794,10 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"dsI" = (
-/obj/machinery/smartfridge/organ,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
+/obj/machinery/smartfridge/organ/preloaded,
/turf/closed/wall,
/area/medical/surgery)
"dsJ" = (
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index a21e6da9a8..0e6feb67c6 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -83998,7 +83998,7 @@
/turf/open/floor/plating,
/area/maintenance/port)
"qnB" = (
-/obj/machinery/smartfridge/organ,
+/obj/machinery/smartfridge/organ/preloaded,
/turf/closed/wall,
/area/medical/surgery)
"qqg" = (
diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm
index 0722811852..bd3d72dc85 100644
--- a/_maps/map_files/OmegaStation/OmegaStation.dmm
+++ b/_maps/map_files/OmegaStation/OmegaStation.dmm
@@ -42881,7 +42881,9 @@
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
"uvp" = (
-/obj/machinery/smartfridge/organ,
+/obj/machinery/smartfridge/organ/preloaded{
+ pixel_y = 2
+ },
/turf/closed/wall,
/area/medical/medbay/zone3)
"uxJ" = (
diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm
index 20bfe0e850..9f1c1824cd 100644
--- a/_maps/map_files/PubbyStation/PubbyStation.dmm
+++ b/_maps/map_files/PubbyStation/PubbyStation.dmm
@@ -55675,7 +55675,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"jdA" = (
-/obj/machinery/smartfridge/organ,
+/obj/machinery/smartfridge/organ/preloaded,
/turf/closed/wall,
/area/medical/surgery)
"jeq" = (
diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm
index 55fe37008a..1a57cf5051 100644
--- a/code/game/data_huds.dm
+++ b/code/game/data_huds.dm
@@ -190,10 +190,12 @@
var/tdelta = round(world.time - timeofdeath)
if(tdelta < (DEFIB_TIME_LIMIT * 10))
var/obj/item/organ/heart/He = getorgan(/obj/item/organ/heart)
- if(!He || He.organ_flags & ORGAN_FAILING)
- holder.icon_state = "huddefibheart"
- else
+ if(He)
holder.icon_state = "huddefib"
+ if(He.organ_flags & ORGAN_FAILING)
+ holder.icon_state = "huddefibheart"
+ else
+ holder.icon_state = "huddefibheart"
return
holder.icon_state = "huddead"
else
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 2cc0321f6a..b98cbc5495 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -150,11 +150,10 @@ SLIME SCANNER
msg += "\tSubject appears to have [M.getCloneLoss() > 30 ? "Severe" : "Minor"] cellular damage.\n"
if(advanced)
msg += "\tCellular Damage Level: [M.getCloneLoss()].\n"
- if (!M.getorgan(/obj/item/organ/brain))
- to_chat(user, "\tSubject lacks a brain.") //Unsure how this won't proc for 50% of the cit playerbase (This is a joke everyone on cit a cute.)
-
+ to_chat(user, msg)
+ msg = ""
// Body part damage report
var/list/dmgreport = list()
@@ -180,7 +179,7 @@ SLIME SCANNER
[(org.brute_dam > 0) ? "[org.brute_dam]" : "0"] | \
[(org.burn_dam > 0) ? "[org.burn_dam]" : "0"] | "
dmgreport += "\n"
- msg += dmgreport
+ to_chat(user, dmgreport.Join())
//Organ damages report
@@ -190,6 +189,7 @@ SLIME SCANNER
for(var/organ in C.internal_organs)
var/temp_message
+ var/damage_message
var/obj/item/organ/O = organ
//EYES
@@ -197,15 +197,15 @@ SLIME SCANNER
var/obj/item/organ/eyes/eyes = O
if(advanced)
if(HAS_TRAIT(C, TRAIT_BLIND))
- temp_message += "\tSubject is blind."
+ temp_message += " Subject is blind."
if(HAS_TRAIT(C, TRAIT_NEARSIGHT))
- temp_message += "\tSubject is nearsighted."
+ temp_message += " Subject is nearsighted."
if(eyes.damage > 30)
- temp_message += "\tSubject has severe eye damage."
+ damage_message += " Subject has severe eye damage."
else if(eyes.damage > 20)
- temp_message += "\tSubject has significant eye damage."
+ damage_message += " Subject has significant eye damage."
else if(eyes.damage)
- temp_message += "\tSubject has minor eye damage."
+ damage_message += " Subject has minor eye damage."
//EARS
@@ -213,28 +213,28 @@ SLIME SCANNER
var/obj/item/organ/ears/ears = O
if(advanced)
if(HAS_TRAIT_FROM(C, TRAIT_DEAF, GENETIC_MUTATION))
- temp_message += "\tSubject is genetically deaf."
+ temp_message += " Subject is genetically deaf."
else if(HAS_TRAIT(C, TRAIT_DEAF))
- temp_message += "\tSubject is deaf."
+ temp_message += " Subject is deaf."
else
if(ears.damage)
- temp_message += "\tSubject has [ears.damage > ears.maxHealth ? "permanent ": "temporary "]hearing damage."
+ damage_message += " Subject has [ears.damage > ears.maxHealth ? "permanent ": "temporary "]hearing damage."
if(ears.deaf)
- temp_message += "\tSubject is [ears.damage > ears.maxHealth ? "permanently ": "temporarily "] deaf."
+ damage_message += " Subject is [ears.damage > ears.maxHealth ? "permanently ": "temporarily "] deaf."
//BRAIN
if(istype(O, /obj/item/organ/brain))
if (C.getOrganLoss(ORGAN_SLOT_BRAIN) >= 200)
- temp_message += "\tSubject's brain function is non-existent. Neurine injection recomended."
+ damage_message += " Subject's brain function is non-existent. Neurine injection recomended."
else if (C.getOrganLoss(ORGAN_SLOT_BRAIN) >= 120)
- temp_message += "\tSevere brain damage detected. Subject likely to have mental traumas."
+ damage_message += " Severe brain damage detected. Subject likely to have mental traumas."
else if (C.getOrganLoss(ORGAN_SLOT_BRAIN) >= 45)
- temp_message += "\tBrain damage detected."
- else
- temp_message += "\tFunctional Brain detected."
+ damage_message += " Brain damage detected."
+ else if(!advanced)
+ damage_message += " Functional Brain detected."
if(advanced)
- temp_message += "\tBrain Activity Level: [(200 - M.getOrganLoss(ORGAN_SLOT_BRAIN))/2]%."
+ temp_message += " Brain Activity Level: [(200 - M.getOrganLoss(ORGAN_SLOT_BRAIN))/2]%."
//TRAUMAS
if(LAZYLEN(C.get_traumas()))
@@ -250,40 +250,42 @@ SLIME SCANNER
trauma_desc += "permanent "
trauma_desc += B.scan_desc
trauma_text += trauma_desc
- temp_message += "\tCerebral traumas detected: subject appears to be suffering from [english_list(trauma_text)]."
+ temp_message += " Cerebral traumas detected: subject appears to be suffering from [english_list(trauma_text)]."
if(C.roundstart_quirks.len)
- temp_message += "\tSubject has the following physiological traits: [C.get_trait_string()]."
+ temp_message += " Subject has the following physiological traits: [C.get_trait_string()]."
if(ishuman(C) && advanced)
var/mob/living/carbon/human/H = M
//MON PETIT CHAUFFEUR
if(H.hallucinating())
- temp_message += "\tSubject is hallucinating."
+ temp_message += " Subject is hallucinating."
//MKUltra
if(H.has_status_effect(/datum/status_effect/chem/enthrall))
- temp_message += "\tSubject has abnormal brain fuctions."
+ temp_message += " Subject has abnormal brain fuctions."
//Astrogen shenanigans
if(H.reagents.has_reagent("astral"))
if(H.mind)
- temp_message += "\tWarning: subject may be possesed."
+ temp_message += " Warning: subject may be possesed."
else
- temp_message += "\tSubject appears to be astrally projecting."
+ temp_message += " Subject appears to be astrally projecting."
//LIVER
if(istype(O, /obj/item/organ/liver))
var/obj/item/organ/liver/L = O
+ if(H.undergoing_liver_failure() && H.stat != DEAD) //might be depreciated
+ msg += "Subject is suffering from liver failure: Apply Corazone and begin a liver transplant immediately!"
if(L.swelling > 20)
- msg += "\tSubject is suffering from an enlarged liver." //i.e. shrink their liver or give them a transplant.
+ msg += " Subject is suffering from an enlarged liver." //i.e. shrink their liver or give them a transplant.
//HEART
if(ishuman(M) && (istype(O, /obj/item/organ/heart)))
var/obj/item/organ/heart/He = O
var/mob/living/carbon/human/H = M
if(H.undergoing_cardiac_arrest() && H.stat != DEAD)
- msg += "\tSubject suffering from heart attack: Apply defibrillation or other electric shock immediately!"
+ msg += " Subject suffering from heart attack: Apply defibrillation or other electric shock immediately!"
if(He.organ_flags & ORGAN_FAILING)
heart_ded = TRUE
@@ -291,30 +293,32 @@ SLIME SCANNER
if(istype(O, /obj/item/organ/tongue))
var/obj/item/organ/tongue/T = O
if(T.name == "fluffy tongue")
- msg += "\tSubject is suffering from a fluffified tongue. Suggested cure: Yamerol or a tongue transplant."
+ msg += " Subject is suffering from a fluffified tongue. Suggested cure: Yamerol or a tongue transplant."
//HECK
if(istype(O, /obj/item/organ/genital/penis))
var/obj/item/organ/genital/penis/P = O
if(P.length>20)
- msg += "\tSubject has a sizeable gentleman's organ at [P.length] inches."
+ msg += " Subject has a sizeable gentleman's organ at [P.length] inches."
if(istype(O, /obj/item/organ/genital/breasts))
var/obj/item/organ/genital/breasts/Br = O
if(Br.cached_size>5)
- msg += "\tSubject has a sizeable bosom with a [Br.size] cup."
+ msg += " Subject has a sizeable bosom with a [Br.size] cup."
+
+
//GENERAL HANDLER
- var/damage_message
- if(O.organ_flags & ORGAN_FAILING)
- damage_message += "\tEnd Stage [O.name] failure detected."
- else if(O.damage > O.high_threshold)
- damage_message += "\tChronic [O.name] failure detected."
- else if(O.damage > O.low_threshold && advanced)
- damage_message += "\tAcute [O.name] failure detected."
+ if(!damage_message)
+ if(O.organ_flags & ORGAN_FAILING)
+ damage_message += " End Stage [uppertext(O.name)] failure detected."
+ else if(O.damage > O.high_threshold)
+ damage_message += " Chronic [uppertext(O.name)] failure detected."
+ else if(O.damage > O.low_threshold && advanced)
+ damage_message += " Acute [uppertext(O.name)] failure detected."
if(temp_message || damage_message)
- msg += "[O.name]: [damage_message] [temp_message]\n"
+ msg += "[uppertext(O.name)]: [damage_message] [temp_message]\n"
@@ -418,7 +422,7 @@ SLIME SCANNER
if(cyberimp_detect)
msg += "Detected cybernetic modifications:\n"
msg += "[cyberimp_detect]\n"
- msg += "*---------*"
+ msg += "*---------*"
to_chat(user, msg)
SEND_SIGNAL(M, COMSIG_NANITE_SCAN, user, FALSE)
diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
index 88176f4f26..01e0001226 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
@@ -426,7 +426,7 @@
if(istype(AM))
AM.organ_flags &= ~ORGAN_FROZEN
-/obj/machinery/smartfridge/chemistry/preloaded
+/obj/machinery/smartfridge/organ/preloaded
initial_contents = list(
/obj/item/organ/random = 1,
/obj/item/reagent_containers/medspray/synthtissue = 1,
diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm
index ad0b7f46fe..73a15b2226 100644
--- a/code/modules/surgery/organs/organ_internal.dm
+++ b/code/modules/surgery/organs/organ_internal.dm
@@ -235,6 +235,7 @@
if(delta > 0)
if(damage >= maxHealth)
organ_flags |= ORGAN_FAILING
+ owner.med_hud_set_status()
return now_failing
if(damage > high_threshold && prev_damage <= high_threshold)
return high_threshold_passed
@@ -242,6 +243,7 @@
return low_threshold_passed
else
organ_flags &= ~ORGAN_FAILING
+ owner.med_hud_set_status()
if(!owner)//Processing is stopped when the organ is dead and outside of someone. This hopefully should restart it if a removed organ is repaired outside of a body.
START_PROCESSING(SSobj, src)
if(prev_damage > low_threshold && damage <= low_threshold)
@@ -368,12 +370,11 @@
/obj/item/organ/random
name = "Illegal organ"
- desc = "Something fucked up"
+ desc = "Something hecked up"
/obj/item/organ/random/Initialize()
..()
- var/list = subtypesof(/obj/item/organ)
- list -= /obj/item/organ/random
+ var/list = (/obj/item/organ/tongue, /obj/item/organ/brain, /obj/item/organ/heart, /obj/item/organ/liver, /obj/item/organ/ears, /obj/item/organ/eyes, /obj/item/organ/tail, /obj/item/organ/stomach)
var/newtype = pick(list)
new newtype(loc)
return INITIALIZE_HINT_QDEL
diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi
index 17b5e9fd99..5659e0208f 100644
Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ