^TqON!L)CR+e>U?fmUYxhvG
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
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm
index 4949cc6ecf..5f89a7e4ed 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm
@@ -102,20 +102,35 @@
pH = 7.6
metabolization_rate = 0.05 //Give them time to graft
data = list("grown_volume" = 0, "injected_vol" = 0)
+ var/borrowed_health
/datum/reagent/synthtissue/reaction_mob(mob/living/M, method=TOUCH, reac_volume,show_message = 1)
if(iscarbon(M))
- var/target = M.zone_selected
- if (M.stat == DEAD)
- show_message = 0
+ var/mob/living/carbon/C = M
+ var/healing_factor = (((data["grown_volume"] / 100) + 1)*reac_volume)
if(method in list(PATCH, TOUCH))
- M.apply_damage(reac_volume*-1.5, BRUTE, target)
- M.apply_damage(reac_volume*-1.5, BURN, target)
- if(show_message)
- to_chat(M, "You feel your [target] heal! It stings like hell!")
+ if (M.stat == DEAD)
+ M.visible_message("The synthetic tissue rapidly grafts into [M]'s wounds, attemping to repair the damage as quickly as possible.")
+ borrowed_health += healing_factor
+ M.adjustBruteLoss(-healing_factor*2)
+ M.adjustFireLoss(-healing_factor*2)
+ M.adjustToxLoss(-healing_factor)
+ M.adjustCloneLoss(-healing_factor)
+ M.updatehealth()
+ if(data["grown_volume"] > 135 && ((C.health + C.oxyloss)>=80))
+ if(M.revive())
+ M.emote("gasp")
+ log_combat(M, M, "revived", src)
+ else
+ M.adjustBruteLoss(-healing_factor)
+ M.adjustFireLoss(-healing_factor)
+ to_chat(M, "You feel your flesh merge with the synthetic tissue! It stings like hell!")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine)
- if(method==INJECT)
- data["injected_vol"] = reac_volume
+ if(method==INJECT)
+ data["injected_vol"] = reac_volume
+ var/obj/item/organ/heart/H = C.getorganslot(ORGAN_SLOT_HEART)
+ if(data["grown_volume"] > 50 && H.organ_flags & ORGAN_FAILING)
+ H.applyOrganDamage(-20)
..()
/datum/reagent/synthtissue/on_mob_life(mob/living/carbon/C)
@@ -129,6 +144,10 @@
to_chat(C, "You feel something reform inside of you!")
data["injected_vol"] -= metabolization_rate
+ if(borrowed_health)
+ C.adjustToxLoss(1)
+ C.adjustCloneLoss(1)
+ borrowed_health -= 1
..()
/datum/reagent/synthtissue/on_merge(passed_data)
@@ -139,6 +158,7 @@
if(iscarbon(holder.my_atom))
data["injected_vol"] = data["injected_vol"] + passed_data["injected_vol"]
passed_data["injected_vol"] = 0
+ update_name()
..()
/datum/reagent/synthtissue/on_new(passed_data)
@@ -146,6 +166,32 @@
return ..()
if(passed_data["grown_volume"] > data["grown_volume"])
data["grown_volume"] = passed_data["grown_volume"]
+ update_name()
..()
+/datum/reagent/synthtissue/proc/update_name()
+ switch(data["grown_volume"])
+ if(-INFINITY to 50)
+ name = "Young Synthtissue Colony"
+ if(50 to 80)
+ name = "Adolescent Synthtissue Colony"
+ if(80 to 135)
+ name = "Adult Synthtissue Colony"
+ if(135 to 175)
+ name = "Master Synthtissue Colony"
+ if(175 to INFINITY)
+ name = "Apex Synthtissue Colony"
+
+/datum/reagent/synthtissue/on_mob_delete(mob/living/M)
+ if(!iscarbon(M))
+ return
+ var/mob/living/carbon/C = M
+ C.adjustBruteLoss(borrowed_health*1.25)
+ C.adjustToxLoss(borrowed_health*1.25)
+ C.adjustCloneLoss(borrowed_health*1.25)
+ C.adjustAllOrganLoss(borrowed_health*0.25)
+ M.updatehealth()
+ if(borrowed_health && C.health < -20)
+ M.stat = DEAD
+ M.visible_message("The synthetic tissue degrades off [M]'s wounds as they collapse to the floor.")
//NEEDS ON_MOB_DEAD()
From ff7b070fa1164b7fb12b615fd0e03163813ed8cd Mon Sep 17 00:00:00 2001
From: Fermi <>
Date: Thu, 21 Nov 2019 02:16:15 +0000
Subject: [PATCH 002/103] Maps
---
_maps/map_files/BoxStation/BoxStation.dmm | 12 +++++++----
.../map_files/Deltastation/DeltaStation2.dmm | 11 +++++-----
_maps/map_files/MetaStation/MetaStation.dmm | 12 +++++++----
_maps/map_files/OmegaStation/OmegaStation.dmm | 6 +++++-
_maps/map_files/PubbyStation/PubbyStation.dmm | 20 +++++++++++--------
5 files changed, 39 insertions(+), 22 deletions(-)
diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index 53b12ca0bb..d8671b6a27 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -35129,9 +35129,6 @@
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
"bDD" = (
-/obj/structure/sign/warning/nosmoking{
- pixel_x = -28
- },
/obj/structure/bed,
/obj/item/bedsheet/medical,
/obj/effect/turf_decal/tile/blue{
@@ -36070,6 +36067,9 @@
"bFJ" = (
/obj/structure/bed,
/obj/item/bedsheet/medical,
+/obj/structure/sign/warning/nosmoking{
+ pixel_x = -28
+ },
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
"bFK" = (
@@ -57530,6 +57530,10 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"nWU" = (
+/obj/machinery/smartfridge/organ,
+/turf/closed/wall,
+/area/medical/sleeper)
"oce" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
@@ -93288,7 +93292,7 @@ bvj
bvj
bvd
bFu
-bvj
+nWU
bvj
bvd
bKH
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index d9d46066bf..7d4644dd35 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -103794,10 +103794,7 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"dsI" = (
-/obj/structure/sign/warning/nosmoking,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
+/obj/machinery/smartfridge/organ,
/turf/closed/wall,
/area/medical/surgery)
"dsJ" = (
@@ -127428,6 +127425,10 @@
/obj/item/assembly/signaler,
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
+"mMC" = (
+/obj/structure/sign/warning/nosmoking,
+/turf/closed/wall,
+/area/medical/surgery)
"mQE" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -174919,7 +174920,7 @@ dkv
dma
dma
dma
-dma
+mMC
dsI
dro
dvz
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index f72a787214..a21e6da9a8 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -62776,6 +62776,9 @@
"cro" = (
/obj/structure/bed/roller,
/obj/machinery/iv_drip,
+/obj/structure/sign/warning/nosmoking{
+ pixel_x = -28
+ },
/turf/open/floor/plasteel/white,
/area/medical/surgery)
"crq" = (
@@ -63296,9 +63299,6 @@
dir = 1;
pixel_y = -22
},
-/obj/structure/sign/warning/nosmoking{
- pixel_x = -28
- },
/obj/machinery/iv_drip,
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
@@ -83997,6 +83997,10 @@
},
/turf/open/floor/plating,
/area/maintenance/port)
+"qnB" = (
+/obj/machinery/smartfridge/organ,
+/turf/closed/wall,
+/area/medical/surgery)
"qqg" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 6
@@ -104229,7 +104233,7 @@ cia
cia
cpX
cia
-cia
+qnB
cia
ceu
dyg
diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm
index a7ab212bd6..0722811852 100644
--- a/_maps/map_files/OmegaStation/OmegaStation.dmm
+++ b/_maps/map_files/OmegaStation/OmegaStation.dmm
@@ -42880,6 +42880,10 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
+"uvp" = (
+/obj/machinery/smartfridge/organ,
+/turf/closed/wall,
+/area/medical/medbay/zone3)
"uxJ" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/public/glass{
@@ -81595,7 +81599,7 @@ aSh
bcf
bcW
blt
-aSh
+uvp
aOL
bfA
bfX
diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm
index d70bc0187b..20bfe0e850 100644
--- a/_maps/map_files/PubbyStation/PubbyStation.dmm
+++ b/_maps/map_files/PubbyStation/PubbyStation.dmm
@@ -37749,6 +37749,9 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/machinery/light_switch{
+ pixel_x = -22
+ },
/turf/open/floor/plasteel/white,
/area/medical/surgery)
"bIp" = (
@@ -38828,10 +38831,6 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
-/obj/machinery/firealarm{
- dir = 8;
- pixel_x = -26
- },
/obj/effect/turf_decal/tile/blue{
dir = 1
},
@@ -39305,15 +39304,16 @@
/obj/item/clothing/gloves/color/latex,
/obj/item/clothing/mask/surgical,
/obj/item/clothing/suit/apron/surgical,
-/obj/machinery/light_switch{
- pixel_x = -22
- },
/obj/effect/turf_decal/tile/blue{
dir = 1
},
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = -26
+ },
/turf/open/floor/plasteel/white,
/area/medical/surgery)
"bLN" = (
@@ -55674,6 +55674,10 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
+"jdA" = (
+/obj/machinery/smartfridge/organ,
+/turf/closed/wall,
+/area/medical/surgery)
"jeq" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -92221,7 +92225,7 @@ bFU
bFU
bIn
bJt
-bFU
+jdA
bFU
bFU
bFU
From ef78757ed8b6c978461c6d803f5a2694918aae47 Mon Sep 17 00:00:00 2001
From: Fermi <>
Date: Thu, 21 Nov 2019 02:19:25 +0000
Subject: [PATCH 003/103] oops
---
_maps/map_files/Deltastation/DeltaStation2.dmm | 3 +++
1 file changed, 3 insertions(+)
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index 7d4644dd35..c7a902f090 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -103795,6 +103795,9 @@
/area/medical/medbay/central)
"dsI" = (
/obj/machinery/smartfridge/organ,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/closed/wall,
/area/medical/surgery)
"dsJ" = (
From 435d2f893e7c314774fb3deb52d4c3a8f96380f9 Mon Sep 17 00:00:00 2001
From: Putnam
Date: Wed, 20 Nov 2019 18:31:39 -0800
Subject: [PATCH 004/103] Makes roundend threat log only show actual changes.
---
code/__HELPERS/roundend.dm | 7 +++----
code/game/gamemodes/dynamic/dynamic.dm | 6 +++---
2 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm
index 2c92816264..b899d7f6ab 100644
--- a/code/__HELPERS/roundend.dm
+++ b/code/__HELPERS/roundend.dm
@@ -313,14 +313,13 @@
parts += "[FOURSPACES]Threat level: [mode.threat_level]"
parts += "[FOURSPACES]Threat left: [mode.threat]"
parts += "[FOURSPACES]Executed rules:"
+ for(var/datum/dynamic_ruleset/rule in mode.executed_rules)
+ parts += "[FOURSPACES][FOURSPACES][rule.ruletype] - [rule.name]: -[rule.cost + rule.scaled_times * rule.scaling_cost] threat"
+ parts += "[FOURSPACES]Other threat changes:"
for(var/str in mode.threat_log)
parts += "[FOURSPACES][FOURSPACES][str]"
for(var/entry in mode.threat_tallies)
parts += "[FOURSPACES][FOURSPACES][entry] added [mode.threat_tallies[entry]]"
- /*
- for(var/datum/dynamic_ruleset/rule in mode.executed_rules)
- parts += "[FOURSPACES][FOURSPACES][rule.ruletype] - [rule.name]: -[rule.cost + rule.scaled_times * rule.scaling_cost] threat"
- */
return parts.Join("
")
/client/proc/roundend_report_file()
diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm
index 83a3debfdc..9b97b6a623 100644
--- a/code/game/gamemodes/dynamic/dynamic.dm
+++ b/code/game/gamemodes/dynamic/dynamic.dm
@@ -510,7 +510,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
var/added_threat = starting_rule.scale_up(extra_rulesets_amount, threat)
if (starting_rule.pre_execute())
spend_threat(starting_rule.cost + added_threat)
- log_threat("[starting_rule.ruletype] - [starting_rule.name] -[starting_rule.cost + starting_rule.scaled_times * starting_rule.scaling_cost] threat")
+ log_threat("[starting_rule.ruletype] - [starting_rule.name] -[starting_rule.cost + starting_rule.scaled_times * starting_rule.scaling_cost] threat", verbose = TRUE)
if(starting_rule.flags & HIGHLANDER_RULESET)
highlander_executed = TRUE
else if(starting_rule.flags & ONLY_RULESET)
@@ -605,7 +605,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
new_rule.trim_candidates()
if (new_rule.ready(forced))
spend_threat(new_rule.cost)
- log_threat("[new_rule.ruletype] - [new_rule.name] -[new_rule.cost] threat")
+ log_threat("[new_rule.ruletype] - [new_rule.name] -[new_rule.cost] threat", verbose = TRUE)
if (new_rule.execute()) // This should never fail since ready() returned 1
if(new_rule.flags & HIGHLANDER_RULESET)
highlander_executed = TRUE
@@ -626,7 +626,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
if (rule.execute())
log_game("DYNAMIC: Injected a [rule.ruletype == "latejoin" ? "latejoin" : "midround"] ruleset [rule.name].")
spend_threat(rule.cost)
- log_threat("[rule.ruletype] [rule.name] spent [rule.cost]")
+ log_threat("[rule.ruletype] [rule.name] spent [rule.cost]", verbose = TRUE)
if(rule.flags & HIGHLANDER_RULESET)
highlander_executed = TRUE
else if(rule.flags & ONLY_RULESET)
From 18e1246fd0e27a907aa4de8d5ba0f070fb4bfb56 Mon Sep 17 00:00:00 2001
From: Fermi <>
Date: Thu, 21 Nov 2019 03:16:18 +0000
Subject: [PATCH 005/103] Classic fixes
---
_maps/map_files/BoxStation/BoxStation.dmm | 2 +-
.../map_files/Deltastation/DeltaStation2.dmm | 2 +-
_maps/map_files/MetaStation/MetaStation.dmm | 2 +-
_maps/map_files/OmegaStation/OmegaStation.dmm | 4 +-
_maps/map_files/PubbyStation/PubbyStation.dmm | 2 +-
code/game/data_huds.dm | 8 +-
code/game/objects/items/devices/scanners.dm | 82 +++++++++---------
.../kitchen_machinery/smartfridge.dm | 2 +-
code/modules/surgery/organs/organ_internal.dm | 7 +-
icons/mob/hud.dmi | Bin 16268 -> 16277 bytes
10 files changed, 60 insertions(+), 51 deletions(-)
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 17b5e9fd99514ff6ae39c85e2390e04296d48d7e..5659e0208ff342e29e63face7571a4c5c543c7d2 100644
GIT binary patch
delta 14243
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
Q5by_6*Lzg_@a4Pz3)R|&I{*Lx
delta 14217
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