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