diff --git a/code/__defines/_reagents.dm b/code/__defines/_reagents.dm
index d7edd945a6..cb6e22c584 100644
--- a/code/__defines/_reagents.dm
+++ b/code/__defines/_reagents.dm
@@ -1403,3 +1403,10 @@
#define REAGENT_ID_SLIMEBONEFIXER "slime_bone_fixer"
#define REAGENT_SLIMEORGANFIXER "Agent C"
#define REAGENT_ID_SLIMEORGANFIXER "slime_organ_fixer"
+
+//Scanning difficulty. The higher the # the higher it is to find.
+#define SCANNABLE_BENEFICIAL 0
+#define SCANNABLE_ADVANCED 1
+#define SCANNABLE_DIFFICULT 2
+#define SCANNABLE_SECRETIVE 3
+#define SCANNABLE_UNSCANNABLE 99
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index e691950c43..697bac4f1a 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -17,16 +17,16 @@
light_color = "#00FF00"
var/obj/machinery/body_scanconsole/console
var/printing_text = null
- var/scan_level = 3 //One scan level for every scanning_module
+ var/scan_level = SCANNABLE_DIFFICULT //By default, we start with level 2 scanning level.
/obj/machinery/bodyscanner/Initialize(mapload)
. = ..()
default_apply_parts()
/obj/machinery/bodyscanner/RefreshParts()
- scan_level = 0
+ scan_level = SCANNABLE_DIFFICULT
for(var/obj/item/stock_parts/scanning_module/P in component_parts)
- scan_level += P.rating
+ scan_level += max(0, (P.rating - 2)) //We require T3 parts or higher to actually increase our scan level.
/obj/machinery/bodyscanner/Destroy()
if(console)
@@ -204,17 +204,21 @@
break
//Vars used if we have FAKEDEATH status.
- var/occupant_stat
- var/occupant_health
- var/oxygen_damage
+ var/occupant_stat = H.stat
+ var/occupant_health = H.health
+ var/oxygen_damage = H.getOxyLoss()
+ var/brain_damage = H.getBrainLoss()
+ var/occupant_paralysis = H.paralysis
+ var/paralysis_duration = round(H.paralysis / 4)
+ var/fakedeath = FALSE
if(H.status_flags & FAKEDEATH)
occupant_stat = DEAD
occupant_health = -200
- oxygen_damage = max(H.getOxyLoss(), (300 - (H.getToxLoss() + H.getFireLoss() + H.getBruteLoss())))
- else
- occupant_stat = H.stat
- occupant_health = H.health
- oxygen_damage = H.getOxyLoss()
+ //oxygen_damage = max(H.getOxyLoss(), (300 - (H.getToxLoss() + H.getFireLoss() + H.getBruteLoss()))) //Alternative oxygen based fakedeath.
+ brain_damage = 200
+ occupant_paralysis = 0
+ paralysis_duration = 0
+ fakedeath = TRUE
occupantData["stat"] = occupant_stat
occupantData["health"] = occupant_health
@@ -229,9 +233,9 @@
occupantData["radLoss"] = H.radiation
occupantData["cloneLoss"] = H.getCloneLoss()
- occupantData["brainLoss"] = H.getBrainLoss()
- occupantData["paralysis"] = H.paralysis
- occupantData["paralysisSeconds"] = round(H.paralysis / 4)
+ occupantData["brainLoss"] = brain_damage
+ occupantData["paralysis"] = occupant_paralysis
+ occupantData["paralysisSeconds"] = paralysis_duration
occupantData["bodyTempC"] = H.bodytemperature-T0C
occupantData["bodyTempF"] = (((H.bodytemperature-T0C) * 1.8) + 32)
@@ -256,7 +260,7 @@
var/reagentData[0]
if(H.reagents.reagent_list.len >= 1)
for(var/datum/reagent/R in H.reagents.reagent_list)
- if(!R.scannable && !(scan_level >= 8)) //Requires minimum of 2 T3 and 1 T2 scanning module, or 2 T4 scanning modules.
+ if(R.scannable >= scan_level) //By default, we can scan everything but secret chems (zombie/lich powder)
continue
reagentData[++reagentData.len] = list(
"name" = R.name,
@@ -368,6 +372,11 @@
organData["desc"] = null
organData["germ_level"] = I.germ_level
organData["damage"] = I.damage
+ if(fakedeath)
+ if(istype(I, /obj/item/organ/internal/brain))
+ organData["damage"] = 200
+ else if(istype(I, /obj/item/organ/internal/lungs))
+ organData["damage"] = 25
organData["maxHealth"] = I.max_damage
organData["bruised"] = I.min_bruised_damage
organData["broken"] = I.min_broken_damage
@@ -451,7 +460,7 @@
else
t1 = "*dead*"
var/health_text = "\tHealth %: [(occupant.health / occupant.getMaxHealth())*100], ([t1])"
- var/fake_oxy = max(occupant.getOxyLoss(), (300 - (occupant.getFireLoss() + occupant.getBruteLoss())))
+ //var/fake_oxy = max(occupant.getOxyLoss(), (300 - (occupant.getFireLoss() + occupant.getBruteLoss())))
var/fake_death = FALSE
if(occupant.status_flags & FAKEDEATH)
t1 = "*dead*"
@@ -474,16 +483,19 @@
damage_string = "\t-Brute Damage %: [occupant.getBruteLoss()]"
dat += (occupant.getBruteLoss() < 60 ? span_blue(damage_string) : span_red(damage_string)) + "
"
damage_string = "\t-Respiratory Damage %: [occupant.getOxyLoss()]"
+ /* //Alternative oxygen based fakedeath
if(fake_death)
damage_string = "\t-Respiratory Damage %: [fake_oxy]"
dat += (span_red(damage_string)) + "
"
- else
- dat += (occupant.getOxyLoss() < 60 ? span_blue(damage_string) : span_red(damage_string)) + "
"
+ else*/
+ dat += (occupant.getOxyLoss() < 60 ? span_blue(damage_string) : span_red(damage_string)) + "
"
- damage_string = "\t-Toxin Content %: [occupant.getToxLoss()]"
if(fake_death)
damage_string = "\t-Toxin Content %: 0"
- dat += (occupant.getToxLoss() < 60 ? span_blue(damage_string) : span_red(damage_string)) + "
"
+ dat += span_blue(damage_string) + "
"
+ else
+ damage_string = "\t-Toxin Content %: [occupant.getToxLoss()]"
+ dat += (occupant.getToxLoss() < 60 ? span_blue(damage_string) : span_red(damage_string)) + "
"
damage_string = "\t-Burn Severity %: [occupant.getFireLoss()]"
dat += (occupant.getFireLoss() < 60 ? span_blue(damage_string) : span_red(damage_string)) + "
"
@@ -494,10 +506,20 @@
damage_string = "\tGenetic Tissue Damage %: [occupant.getCloneLoss()]"
dat += (occupant.getCloneLoss() < 1 ? span_blue(damage_string) : span_red(damage_string)) + "
"
- damage_string = "\tApprox. Brain Damage %: [occupant.getBrainLoss()]"
- dat += (occupant.getBrainLoss() < 1 ? span_blue(damage_string) : span_red(damage_string)) + "
"
+ if(fake_death)
+ damage_string = "\tApprox. Brain Damage %: 100"
+ dat += (span_red(damage_string)) + "
"
+ else
+ damage_string = "\tApprox. Brain Damage %: [occupant.getBrainLoss()]"
+ dat += (occupant.getBrainLoss() < 1 ? span_blue(damage_string) : span_red(damage_string)) + "
"
- dat += "Paralysis Summary %: [occupant.paralysis] ([round(occupant.paralysis / 4)] seconds left!)
"
+ var/occupant_paralysis = occupant.paralysis
+ var/paralysis_duration = round(occupant.paralysis * 0.25)
+ if(fake_death)
+ occupant_paralysis = 0
+ paralysis_duration = 0
+
+ dat += "Paralysis Summary %: [occupant_paralysis] ([paralysis_duration] seconds left!)
"
dat += "Body Temperature: [occupant.bodytemperature-T0C]°C ([occupant.bodytemperature*1.8-459.67]°F)
"
dat += "
"
@@ -644,7 +666,12 @@
// CHOMPedit end
dat += ""
- dat += "| [i.name] | N/A | [i.damage] | [infection]:[mi][mech][i_dead] | | "
+ if(fake_death && istype(i, /obj/item/organ/internal/brain))
+ dat += "[i.name] | N/A | 200 | [infection]:[mi][mech][i_dead] | | "
+ else if(fake_death && istype(i, /obj/item/organ/internal/lungs))
+ dat += "[i.name] | N/A | 25 | [infection]:[mi][mech][i_dead] | | "
+ else
+ dat += "[i.name] | N/A | [i.damage] | [infection]:[mi][mech][i_dead] | | "
dat += "
"
for(var/organ_tag in occupant.species.has_organ) //Check to see if we are missing any organs
var/organData[0]
diff --git a/code/game/objects/items/devices/scanners/health.dm b/code/game/objects/items/devices/scanners/health.dm
index d8599c43ea..d1fa012688 100644
--- a/code/game/objects/items/devices/scanners/health.dm
+++ b/code/game/objects/items/devices/scanners/health.dm
@@ -14,7 +14,7 @@
matter = list(MAT_STEEL = 200)
origin_tech = list(TECH_MAGNET = 1, TECH_BIO = 1)
var/mode = 1;
- var/advscan = 0
+ var/advscan = SCANNABLE_BENEFICIAL
var/showadvscan = 1
var/guide = FALSE
@@ -23,7 +23,7 @@
/obj/item/healthanalyzer/Initialize(mapload)
. = ..()
- if(advscan >= 1)
+ if(advscan >= SCANNABLE_ADVANCED)
verbs += /obj/item/healthanalyzer/proc/toggle_adv
/obj/item/healthanalyzer/examine(mob/user)
@@ -129,12 +129,14 @@
TX = M.getToxLoss() > 50 ? "[span_green(span_bold("Dangerous amount of toxins detected"))]" : "Subject bloodstream toxin level minimal"
BU = M.getFireLoss() > 50 ? "[span_orange(span_bold("Severe burn damage detected"))]" : "Subject burn injury status O.K"
BR = M.getBruteLoss() > 50 ? "[span_red(span_bold("Severe anatomical damage detected"))]" : "Subject brute-force injury status O.K"
+ /* //Old variant of fakedeath.
if(M.status_flags & FAKEDEATH)
OX = fake_oxy > 50 ? span_warning("Severe oxygen deprivation detected") : "Subject bloodstream oxygen level normal"
TX = 0 //This is a dead giveaway if they're using zombiepowder.
+ */
dat += "[OX] | [TX] | [BU] | [BR]
"
if(M.radiation)
- if(advscan >= 2 && showadvscan == 1)
+ if(advscan >= SCANNABLE_DIFFICULT && showadvscan == 1)
var/severity = ""
if(M.radiation >= 1500)
severity = "Lethal"
@@ -152,7 +154,7 @@
dat += span_warning("Acute radiation sickness detected.")
dat += "
"
if(M.accumulated_rads)
- if(advscan >= 2 && showadvscan == 1)
+ if(advscan >= SCANNABLE_DIFFICULT && showadvscan == 1)
var/severity = ""
if(M.accumulated_rads >= 1500)
severity = "Critical"
@@ -175,86 +177,68 @@
var/unknown = 0
var/reagentdata[0]
var/unknownreagents[0]
- for(var/datum/reagent/R as anything in C.reagents.reagent_list)
- if(R.scannable)
+ for(var/datum/reagent/R in C.reagents.reagent_list)
+ if(advscan >= R.scannable)
reagentdata["[R.id]"] = span_notice("\t[round(C.reagents.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - [span_danger("Overdose")]" : ""]")
reagentdata["[R.id]"] += "
"
else
unknown++
unknownreagents["[R.id]"] = span_notice("\t[round(C.reagents.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - [span_danger("Overdose")]" : ""]")
unknownreagents["[R.id]"] += "
"
- if(reagentdata.len)
- dat += span_notice("Beneficial reagents detected in subject's blood:")
+ if(LAZYLEN(reagentdata) && showadvscan == 1)
+ dat += span_notice("Reagents detected in subject's blood:")
dat += "
"
for(var/d in reagentdata)
dat += reagentdata[d]
if(unknown)
- if(advscan >= 3 && showadvscan == 1)
- dat += span_warning("Warning: Non-medical reagent[(unknown>1)?"s":""] detected in subject's blood:")
- dat += "
"
- for(var/d in unknownreagents)
- dat += unknownreagents[d]
- else
- dat += span_warning("Warning: Unknown substance[(unknown>1)?"s":""] detected in subject's blood.")
- dat += "
"
+ dat += span_warning("Warning: Unknown substance[(unknown>1)?"s":""] detected in subject's blood.")
+ dat += "
"
if(C.ingested && C.ingested.total_volume)
var/unknown = 0
var/stomachreagentdata[0]
var/stomachunknownreagents[0]
- for(var/datum/reagent/R as anything in C.ingested.reagent_list)
- if(R.scannable)
+ for(var/datum/reagent/R in C.ingested.reagent_list)
+ if(advscan >= R.scannable)
stomachreagentdata["[R.id]"] = span_notice("\t[round(C.ingested.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - [span_danger("Overdose")]" : ""]")
stomachreagentdata["[R.id]"] += "
"
- if (advscan == 0 || showadvscan == 0)
+ if(!advscan || !showadvscan)
dat += span_notice("[R.name] found in subject's stomach.")
dat += "
"
else
++unknown
stomachunknownreagents["[R.id]"] = span_notice("\t[round(C.ingested.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - [span_danger("Overdose")]" : ""]")
stomachunknownreagents["[R.id]"] += "
"
- if(advscan >= 1 && showadvscan == 1)
- dat += span_notice("Beneficial reagents detected in subject's stomach:")
+ if(LAZYLEN(stomachreagentdata) && showadvscan == 1)
+ dat += span_notice("Reagents detected in subject's stomach:")
dat += "
"
for(var/d in stomachreagentdata)
dat += stomachreagentdata[d]
if(unknown)
- if(advscan >= 3 && showadvscan == 1)
- dat += span_warning("Warning: Non-medical reagent[(unknown > 1)?"s":""] found in subject's stomach:")
- dat += "
"
- for(var/d in stomachunknownreagents)
- dat += stomachunknownreagents[d]
- else
- dat += span_warning("Unknown substance[(unknown > 1)?"s":""] found in subject's stomach.")
- dat += "
"
+ dat += span_warning("Unknown substance[(unknown > 1)?"s":""] found in subject's stomach.")
+ dat += "
"
if(C.touching && C.touching.total_volume)
var/unknown = 0
var/touchreagentdata[0]
var/touchunknownreagents[0]
- for(var/datum/reagent/R as anything in C.touching.reagent_list)
- if(R.scannable)
+ for(var/datum/reagent/R in C.touching.reagent_list)
+ if(advscan >= R.scannable)
touchreagentdata["[R.id]"] = span_notice("\t[round(C.touching.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.can_overdose_touch && R.volume > R.overdose) ? " - [span_danger("Overdose")]" : ""]")
touchreagentdata["[R.id]"] += "
"
- if (advscan == 0 || showadvscan == 0)
+ if(!advscan || !showadvscan)
dat += span_notice("[R.name] found in subject's dermis.")
dat += "
"
else
++unknown
touchunknownreagents["[R.id]"] = span_notice("\t[round(C.ingested.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.can_overdose_touch && R.volume > R.overdose) ? " - [span_danger("Overdose")]" : ""]")
touchunknownreagents["[R.id]"] += "
"
- if(advscan >= 1 && showadvscan == 1)
- dat += span_notice("Beneficial reagents detected in subject's dermis:")
+ if(LAZYLEN(touchreagentdata) && showadvscan == 1)
+ dat += span_notice("Reagents detected in subject's dermis:")
dat += "
"
for(var/d in touchreagentdata)
dat += touchreagentdata[d]
if(unknown)
- if(advscan >= 3 && showadvscan == 1)
- dat += span_warning("Warning: Non-medical reagent[(unknown > 1)?"s":""] found in subject's dermis:")
- dat += "
"
- for(var/d in touchunknownreagents)
- dat += touchunknownreagents[d]
- else
- dat += span_warning("Unknown substance[(unknown > 1)?"s":""] found in subject's dermis.")
- dat += "
"
+ dat += span_warning("Unknown substance[(unknown > 1)?"s":""] found in subject's dermis.")
+ dat += "
"
if(C.IsInfected())
for (var/datum/disease/virus in C.GetViruses())
if(virus.visibility_flags & HIDDEN_SCANNER || virus.visibility_flags & HIDDEN_PANDEMIC)
@@ -266,10 +250,10 @@
dat += "
"
// if (M.reagents && M.reagents.get_reagent_amount(REAGENT_ID_INAPROVALINE))
// user.show_message(span_notice("Bloodstream Analysis located [M.reagents:get_reagent_amount(REAGENT_ID_INAPROVALINE)] units of rejuvenation chemicals."))
- if (advscan >= 2 && M.has_brain_worms()) // Borers need to hide
+ if (advscan >= SCANNABLE_DIFFICULT && M.has_brain_worms()) // Borers need to hide
dat += span_warning("Subject suffering from aberrant brain activity. Recommend further scanning.")
dat += "
"
- else if (M.getBrainLoss() >= 60 || !M.has_brain())
+ else if (M.getBrainLoss() >= 60 || !M.has_brain() ||(M.status_flags & FAKEDEATH))
dat += span_warning("Subject is brain dead.")
dat += "
"
else if (M.getBrainLoss() >= 25)
@@ -311,13 +295,13 @@
dat += span_warning("Biologically unstable, requires [REAGENT_ASUSTENANCE] to function properly.")
dat += "
"
for(var/addic in H.get_all_addictions())
- if(H.get_addiction_to_reagent(addic) > 0 && (advscan >= 2 || H.get_addiction_to_reagent(addic) <= 120)) // high enough scanner upgrade detects addiction even if not almost withdrawling
+ if(H.get_addiction_to_reagent(addic) > 0 && (advscan >= SCANNABLE_DIFFICULT || H.get_addiction_to_reagent(addic) <= 120)) // high enough scanner upgrade detects addiction even if not almost withdrawling
var/datum/reagent/R = SSchemistry.chemical_reagents[addic]
if(R.id == REAGENT_ID_ASUSTENANCE)
continue
- if(advscan >= 1)
+ if(advscan >= SCANNABLE_ADVANCED)
// Shows multiple
- if(advscan >= 2 && H.get_addiction_to_reagent(addic) <= 80)
+ if(advscan >= SCANNABLE_DIFFICULT && H.get_addiction_to_reagent(addic) <= 80)
dat += span_warning("Experiencing withdrawls from [R.name], [REAGENT_INAPROVALINE] treatment recomended.")
dat += "
"
else
@@ -355,8 +339,8 @@
continue // not there or robotic or brain which is handled separately
if(i.damage || i.status & ORGAN_DEAD)
int_damage_acc += (i.damage + ((i.status & ORGAN_DEAD) ? 30 : 0))
- if(advscan >= 2 && showadvscan == 1)
- if(advscan >= 3)
+ if(advscan >= SCANNABLE_DIFFICULT && showadvscan == 1)
+ if(advscan >= SCANNABLE_SECRETIVE)
var/dam_adj
if(i.damage >= i.min_broken_damage || i.status & ORGAN_DEAD)
dam_adj = "Severe"
@@ -369,7 +353,17 @@
else
dat += span_warning("Damage detected to subject's [i.name].")
dat += "
"
- if(int_damage_acc >= 1 && (advscan < 2 || !showadvscan))
+ else if((H.status_flags & FAKEDEATH) && istype(i, /obj/item/organ/internal/lungs))
+ int_damage_acc += 25
+ if(advscan >= SCANNABLE_DIFFICULT && showadvscan == 1)
+ if(advscan >= SCANNABLE_SECRETIVE)
+ dat += span_warning("Severe damage detected to subject's [i.name].")
+ dat += "
"
+ else
+ dat += span_warning("Damage detected to subject's [i.name].")
+ dat += "
"
+
+ if(int_damage_acc >= 1 && (advscan < SCANNABLE_DIFFICULT || !showadvscan))
dat += span_warning("Damage detected to subject's internal organs.")
dat += "
"
for(var/obj/item/organ/external/e in H.organs)
@@ -380,7 +374,7 @@
if((e.name in list(BP_L_ARM, BP_R_ARM, BP_L_LEG, BP_R_LEG, BP_HEAD, BP_TORSO, BP_GROIN)) && (!e.splinted))
fracture_dat += span_warning("Unsecured fracture in subject [e.name]. Splinting recommended for transport.")
fracture_dat += "
"
- else if(advscan >= 1 && showadvscan == 1)
+ else if(advscan >= SCANNABLE_ADVANCED && showadvscan == 1)
fracture_dat += span_warning("Bone fractures detected in subject [e.name].")
fracture_dat += "
"
else
@@ -389,14 +383,23 @@
if(e.has_infected_wound())
dat += span_warning("Infected wound detected in subject [e.name]. Disinfection recommended.")
dat += "
"
+ if(e.status & ORGAN_DEAD)
+ dat += span_danger("Full-depth necrosis detected in [e.name]. Urgent surgical removal/intervention required.")
+ dat += "
"
+ else if(e.germ_level > INFECTION_LEVEL_ONE)
+ if(e.germ_level >= INFECTION_LEVEL_TWO)
+ dat += span_danger("Necrosis detected in [e.name]. [showadvscan ? "Quantity: [e.germ_level]. " : ""] Antibiotics / surgical intervention urgently required.")
+ else
+ dat += span_warning("Cellulitis detected in [e.name]. [showadvscan ? "Quantity: [e.germ_level]. " : ""] Antibiotics / surgical intervention required.")
+ dat += "
"
// IB
for(var/datum/wound/W in e.wounds)
if(W.internal)
- if(advscan >= 1 && showadvscan == 1)
- ib_dat += span_warning("Internal bleeding detected in subject [e.name].")
+ if(advscan >= SCANNABLE_ADVANCED && showadvscan == 1)
+ ib_dat += span_warning("Internal bleeding detected in subject [e.name]. Severity: [H.calculate_internal_bloodloss(W) * 0.5] units of blood lost per second")
ib_dat += "
"
else
- basic_ib = 1
+ basic_ib = TRUE
if(basic_fracture)
fracture_dat += span_warning("Bone fractures detected. Advanced scanner required for location.")
fracture_dat += "
"
@@ -408,7 +411,7 @@
dat += ib_dat
// Blood level
- if(M:vessel)
+ if(H.vessel)
var/blood_volume = H.vessel.get_reagent_amount(REAGENT_ID_BLOOD)
var/blood_percent = round((blood_volume / H.species.blood_volume)*100)
var/blood_type = H.dna.b_type
@@ -493,21 +496,21 @@
/obj/item/healthanalyzer/improved //reports bone fractures, IB, quantity of beneficial reagents in stomach; also regular health analyzer stuff
name = "improved health analyzer"
desc = "A miracle of medical technology, this handheld scanner can produce an accurate and specific report of a patient's biosigns."
- advscan = 1
+ advscan = SCANNABLE_ADVANCED
origin_tech = list(TECH_MAGNET = 5, TECH_BIO = 6)
icon_state = "health1"
/obj/item/healthanalyzer/advanced //reports all of the above, as well as radiation severity and minor brain damage
name = "advanced health analyzer"
desc = "An even more advanced handheld health scanner, complete with a full biosign monitor and on-board radiation and neurological analysis suites."
- advscan = 2
+ advscan = SCANNABLE_DIFFICULT
origin_tech = list(TECH_MAGNET = 6, TECH_BIO = 7)
icon_state = "health2"
/obj/item/healthanalyzer/phasic //reports all of the above, as well as name and quantity of nonmed reagents in stomach
name = "phasic health analyzer"
desc = "Possibly the most advanced health analyzer to ever have existed, utilising bluespace technology to determine almost everything worth knowing about a patient."
- advscan = 3
+ advscan = SCANNABLE_SECRETIVE
origin_tech = list(TECH_MAGNET = 7, TECH_BIO = 8)
icon_state = "health3"
diff --git a/code/game/objects/items/weapons/circuitboards/frame.dm b/code/game/objects/items/weapons/circuitboards/frame.dm
index c6d60df6ca..e5f7e33177 100644
--- a/code/game/objects/items/weapons/circuitboards/frame.dm
+++ b/code/game/objects/items/weapons/circuitboards/frame.dm
@@ -220,7 +220,7 @@
board_type = new /datum/frame/frame_types/medical_pod
origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
req_components = list(
- /obj/item/stock_parts/scanning_module = 3,
+ /obj/item/stock_parts/scanning_module = 1,
/obj/item/stack/material/glass/reinforced = 2)
/obj/item/circuitboard/medical_kiosk
diff --git a/code/modules/admin/health_scan.dm b/code/modules/admin/health_scan.dm
index ac06978f40..7d625c6950 100644
--- a/code/modules/admin/health_scan.dm
+++ b/code/modules/admin/health_scan.dm
@@ -4,7 +4,7 @@
// showadvscan toggles whether to give additional scan information about chemicals in their body.
// By default this proc is set to it's most powerful scan.
-/mob/living/proc/scan_mob(mob/user, var/mode = 1, var/advscan = 3, var/showadvscan = 1)
+/mob/living/proc/scan_mob(mob/user, var/mode = 1, var/advscan = SCANNABLE_SECRETIVE, var/showadvscan = 1)
var/mob/living/M = src
var/dat = ""
@@ -146,7 +146,7 @@
OX = fake_oxy > 50 ? span_warning("Severe oxygen deprivation detected") : "Subject bloodstream oxygen level normal"
dat += "[OX] | [TX] | [BU] | [BR]
"
if(M.radiation)
- if(advscan >= 2 && showadvscan == 1)
+ if(advscan >= SCANNABLE_DIFFICULT && showadvscan == 1)
var/severity = ""
if(M.radiation >= 1500)
severity = "Lethal"
@@ -164,7 +164,7 @@
dat += span_warning("Acute radiation sickness detected.")
dat += "
"
if(M.accumulated_rads)
- if(advscan >= 2 && showadvscan == 1)
+ if(advscan >= SCANNABLE_DIFFICULT && showadvscan == 1)
var/severity = ""
if(M.accumulated_rads >= 1500)
severity = "Critical"
@@ -188,7 +188,7 @@
var/reagentdata[0]
var/unknownreagents[0]
for(var/datum/reagent/R as anything in C.reagents.reagent_list)
- if(R.scannable)
+ if(R.scannable && advscan >= R.scannable)
reagentdata["[R.id]"] = span_notice("\t[round(C.reagents.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - [span_danger("Overdose")]" : ""]")
reagentdata["[R.id]"] += "
"
else
@@ -201,72 +201,54 @@
for(var/d in reagentdata)
dat += reagentdata[d]
if(unknown)
- if(advscan >= 3 && showadvscan == 1)
- dat += span_warning("Warning: Non-medical reagent[(unknown>1)?"s":""] detected in subject's blood:")
- dat += "
"
- for(var/d in unknownreagents)
- dat += unknownreagents[d]
- else
- dat += span_warning("Warning: Unknown substance[(unknown>1)?"s":""] detected in subject's blood.")
- dat += "
"
+ dat += span_warning("Warning: Unknown substance[(unknown>1)?"s":""] detected in subject's blood.")
+ dat += "
"
if(C.ingested && C.ingested.total_volume)
var/unknown = 0
var/stomachreagentdata[0]
var/stomachunknownreagents[0]
for(var/datum/reagent/R as anything in C.ingested.reagent_list)
- if(R.scannable)
+ if(R.scannable && advscan >= R.scannable)
stomachreagentdata["[R.id]"] = span_notice("\t[round(C.ingested.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - [span_danger("Overdose")]" : ""]")
stomachreagentdata["[R.id]"] += "
"
- if (advscan == 0 || showadvscan == 0)
+ if(!advscan || !showadvscan)
dat += span_notice("[R.name] found in subject's stomach.")
dat += "
"
else
++unknown
stomachunknownreagents["[R.id]"] = span_notice("\t[round(C.ingested.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - [span_danger("Overdose")]" : ""]")
stomachunknownreagents["[R.id]"] += "
"
- if(advscan >= 1 && showadvscan == 1)
+ if(showadvscan == 1)
dat += span_notice("Beneficial reagents detected in subject's stomach:")
dat += "
"
for(var/d in stomachreagentdata)
dat += stomachreagentdata[d]
if(unknown)
- if(advscan >= 3 && showadvscan == 1)
- dat += span_warning("Warning: Non-medical reagent[(unknown > 1)?"s":""] found in subject's stomach:")
- dat += "
"
- for(var/d in stomachunknownreagents)
- dat += stomachunknownreagents[d]
- else
- dat += span_warning("Unknown substance[(unknown > 1)?"s":""] found in subject's stomach.")
- dat += "
"
+ dat += span_warning("Unknown substance[(unknown > 1)?"s":""] found in subject's stomach.")
+ dat += "
"
if(C.touching && C.touching.total_volume)
var/unknown = 0
var/touchreagentdata[0]
var/touchunknownreagents[0]
for(var/datum/reagent/R as anything in C.touching.reagent_list)
- if(R.scannable)
+ if(R.scannable && advscan >= R.scannable)
touchreagentdata["[R.id]"] = span_notice("\t[round(C.touching.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.can_overdose_touch && R.volume > R.overdose) ? " - [span_danger("Overdose")]" : ""]")
touchreagentdata["[R.id]"] += "
"
- if (advscan == 0 || showadvscan == 0)
+ if(!advscan || !showadvscan)
dat += span_notice("[R.name] found in subject's dermis.")
dat += "
"
else
++unknown
touchunknownreagents["[R.id]"] = span_notice("\t[round(C.ingested.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.can_overdose_touch && R.volume > R.overdose) ? " - [span_danger("Overdose")]" : ""]")
touchunknownreagents["[R.id]"] += "
"
- if(advscan >= 1 && showadvscan == 1)
+ if(showadvscan == 1)
dat += span_notice("Beneficial reagents detected in subject's dermis:")
dat += "
"
for(var/d in touchreagentdata)
dat += touchreagentdata[d]
if(unknown)
- if(advscan >= 3 && showadvscan == 1)
- dat += span_warning("Warning: Non-medical reagent[(unknown > 1)?"s":""] found in subject's dermis:")
- dat += "
"
- for(var/d in touchunknownreagents)
- dat += touchunknownreagents[d]
- else
- dat += span_warning("Unknown substance[(unknown > 1)?"s":""] found in subject's dermis.")
- dat += "
"
+ dat += span_warning("Unknown substance[(unknown > 1)?"s":""] found in subject's dermis.")
+ dat += "
"
if(C.IsInfected())
for (var/datum/disease/virus in C.GetViruses())
if(virus.visibility_flags & HIDDEN_SCANNER || virus.visibility_flags & HIDDEN_PANDEMIC)
@@ -344,8 +326,8 @@
continue // not there or robotic or brain which is handled separately
if(i.damage || i.status & ORGAN_DEAD)
int_damage_acc += (i.damage + ((i.status & ORGAN_DEAD) ? 30 : 0))
- if(advscan >= 2 && showadvscan == 1)
- if(advscan >= 3)
+ if(advscan >= SCANNABLE_DIFFICULT && showadvscan == 1)
+ if(advscan >= SCANNABLE_SECRETIVE)
var/dam_adj
if(i.damage >= i.min_broken_damage || i.status & ORGAN_DEAD)
dam_adj = "Severe"
@@ -358,7 +340,7 @@
else
dat += span_warning("Damage detected to subject's [i.name].")
dat += "
"
- if(int_damage_acc >= 1 && (advscan < 2 || !showadvscan))
+ if(int_damage_acc >= 1 && (advscan < SCANNABLE_DIFFICULT || !showadvscan))
dat += span_warning("Damage detected to subject's internal organs.")
dat += "
"
for(var/obj/item/organ/external/e in H.organs)
@@ -369,7 +351,7 @@
if((e.name in list(BP_L_ARM, BP_R_ARM, BP_L_LEG, BP_R_LEG, BP_HEAD, BP_TORSO, BP_GROIN)) && (!e.splinted))
fracture_dat += span_warning("Unsecured fracture in subject [e.name]. Splinting recommended for transport.")
fracture_dat += "
"
- else if(advscan >= 1 && showadvscan == 1)
+ else if(advscan >= SCANNABLE_ADVANCED && showadvscan == 1)
fracture_dat += span_warning("Bone fractures detected in subject [e.name].")
fracture_dat += "
"
else
@@ -381,7 +363,7 @@
// IB
for(var/datum/wound/W in e.wounds)
if(W.internal)
- if(advscan >= 1 && showadvscan == 1)
+ if(advscan >= SCANNABLE_ADVANCED && showadvscan == 1)
ib_dat += span_warning("Internal bleeding detected in subject [e.name].")
ib_dat += "
"
else
diff --git a/code/modules/eventkit/medical_issues.dm b/code/modules/eventkit/medical_issues.dm
index 79ab349094..5d8d6713f5 100644
--- a/code/modules/eventkit/medical_issues.dm
+++ b/code/modules/eventkit/medical_issues.dm
@@ -19,7 +19,7 @@
var/datum/surgery_step/cure_surgery //Which surgery step can be used to cure this?
var/unhealth = 100 //The amount of health the issue has, depleted by reagent
var/reagent_strength = 10 //How much health the reagent will remove per processing
- var/advscan_cure = 0 //What level of advanced scan is required to reveal the cure?
+ var/advscan_cure = SCANNABLE_BENEFICIAL //What level of advanced scan is required to reveal the cure?
var/symptom_text //Messages relayed to the patient about their symptoms
var/symptom_affect //Visible effects on the patient such as vomiting or weakness
diff --git a/code/modules/food/drinkingglass/metaglass.dm b/code/modules/food/drinkingglass/metaglass.dm
index 8c939226d5..e73efed4cb 100644
--- a/code/modules/food/drinkingglass/metaglass.dm
+++ b/code/modules/food/drinkingglass/metaglass.dm
@@ -71,11 +71,7 @@ Drinks Data
*/
/datum/reagent
- var/glass_icon_file = null
- var/glass_icon_state = null
- var/glass_center_of_mass_x = 0
- var/glass_center_of_mass_y = 0
- var/glass_icon_source = null //CHOMP A way for us to have metaglass identify and decide which dmi it wants to grab sprites from - Jack
+ var/glass_icon_source = null //CHOMPEdit A way for us to have metaglass identify and decide which dmi it wants to grab sprites from - Jack
/datum/reagent/adminordrazine
glass_icon_state = "golden_cup"
diff --git a/code/modules/mob/living/carbon/human/species/lleill/lleill_items.dm b/code/modules/mob/living/carbon/human/species/lleill/lleill_items.dm
index 31c9494181..70061a86a5 100644
--- a/code/modules/mob/living/carbon/human/species/lleill/lleill_items.dm
+++ b/code/modules/mob/living/carbon/human/species/lleill/lleill_items.dm
@@ -20,7 +20,7 @@
taste_description = "nothingness"
reagent_state = LIQUID
color = "#ffffff"
- scannable = 1
+ scannable = SCANNABLE_ADVANCED
supply_conversion_value = REFINERYEXPORT_VALUE_RARE
industrial_use = REFINERYEXPORT_REASON_MATSCI
@@ -58,7 +58,7 @@
taste_description = "difficult to discern"
reagent_state = LIQUID
color = "#ffffff"
- scannable = 1
+ scannable = SCANNABLE_ADVANCED
wiki_flag = WIKI_SPOILER
supply_conversion_value = REFINERYEXPORT_VALUE_RARE
industrial_use = REFINERYEXPORT_REASON_MATSCI
@@ -93,7 +93,7 @@
taste_description = "bright"
reagent_state = LIQUID
color = "#ffffff"
- scannable = 1
+ scannable = SCANNABLE_ADVANCED
supply_conversion_value = REFINERYEXPORT_VALUE_RARE
industrial_use = REFINERYEXPORT_REASON_MATSCI
diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities.dm
index 50af83a9b4..f4a00f1bbd 100644
--- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities.dm
@@ -1247,7 +1247,7 @@
description = "A unknown liquid, it smells sweet"
metabolism = REM * 0.8
color = "#8A0829"
- scannable = 0
+ scannable = SCANNABLE_ADVANCED
wiki_flag = WIKI_SPOILER
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_MATSCI
@@ -1265,7 +1265,7 @@
description = "A unknown liquid, it doesn't smell"
metabolism = REM * 0.5
color = "#41029B"
- scannable = 0
+ scannable = SCANNABLE_ADVANCED
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_MATSCI
@@ -1285,7 +1285,7 @@
description = "A unknown liquid, it doesn't smell"
metabolism= REM * 0.5
color = "#41029B"
- scannable = 0
+ scannable = SCANNABLE_ADVANCED
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_MATSCI
diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm
index c2e89b972b..e327dd7973 100644
--- a/code/modules/organs/blood.dm
+++ b/code/modules/organs/blood.dm
@@ -161,82 +161,120 @@ BLOOD_VOLUME_SURVIVE = 40
adjust_nutrition(-3)
//Bleeding out
- var/blood_max = 0
- var/blood_loss_divisor = 30.01 //lower factor = more blood loss
+ caculate_bloodloss_and_bleed(bleed = TRUE)
- // Some species bleed out differently
- blood_loss_divisor /= species.bloodloss_rate
+///Calculates our bloodloss divisor and returns what it is.
+/mob/living/carbon/human/proc/calculate_bloodloss_divisor()
+ var/blood_loss_divisor = 30.01 //lower factor = more blood loss
- // Some modifiers can make bleeding better or worse. Higher multiplers = more bleeding.
- var/blood_loss_modifier_multiplier = 1.0
- for(var/datum/modifier/M in modifiers)
- if(!isnull(M.bleeding_rate_percent))
- blood_loss_modifier_multiplier += (M.bleeding_rate_percent - 1.0)
+ // Some species bleed out differently
+ blood_loss_divisor /= species.bloodloss_rate
- blood_loss_divisor /= blood_loss_modifier_multiplier
+ // Some modifiers can make bleeding better or worse. Higher multiplers = more bleeding.
+ var/blood_loss_modifier_multiplier = 1.0
+ for(var/datum/modifier/M in modifiers)
+ if(!isnull(M.bleeding_rate_percent))
+ blood_loss_modifier_multiplier += (M.bleeding_rate_percent - 1.0)
+ blood_loss_divisor /= blood_loss_modifier_multiplier
+ return blood_loss_divisor
- //This 30 is the "baseline" of a cut in the "vital" regions (head and torso).
- for(var/obj/item/organ/external/temp in bad_external_organs)
+///Calculates how much blood we should lose from our wounds and makes us bleed that amount if bleed is TRUE
+///ARGS:
+/// bleed: If we bleed or not while checking. DEFAULT: True
+/// organ_to_check: The organ we want to check. If we don't, it checks ALL the bad organs.
+/// count_internal: Internal bleeding counts towards our bloodloss max. DEFAULT: False
+/// count_external: External bleeding counts towards our bloodloss max. DEFAULT: True
- ///First, we make sure it's not robotic.
- if(temp.robotic >= ORGAN_ROBOT)
- continue
+/mob/living/carbon/human/proc/caculate_bloodloss_and_bleed(bleed = TRUE, obj/item/organ/external/organ_to_check, count_internal = FALSE, count_external = TRUE)
+ var/total_blood_loss = 0
+ var/blood_max = 0
+ var/blood_loss_divisor = calculate_bloodloss_divisor()
+ var/list/organs_to_check = list()
- ///Second, we process internal bleeding.
+ if(organ_to_check)
+ organs_to_check += organ_to_check
+ else
+ organs_to_check = bad_external_organs
+ //This 30 is the "baseline" of a cut in the "vital" regions (head and torso).
+ for(var/obj/item/organ/external/temp in organs_to_check)
+
+ ///First, we make sure it's not robotic.
+ if(temp.robotic >= ORGAN_ROBOT)
+ continue
+
+ ///Second, we process internal bleeding.
+ if(bleed || count_internal)
for(var/datum/wound/internal_bleeding/W in temp.wounds)
- blood_loss_divisor = blood_loss_divisor+10 //IB is slower bloodloss than normal.
- var/bicardose
- if(reagents.get_reagent_amount(REAGENT_ID_BICARIDINE) || reagents.get_reagent_amount(REAGENT_ID_BICARIDAZE))
- bicardose = TRUE
- var/inaprovaline
- if(reagents.get_reagent_amount(REAGENT_ID_INAPROVALINE) || reagents.get_reagent_amount(REAGENT_ID_INAPROVALAZE))
- inaprovaline = TRUE
- var/myeldose = reagents.get_reagent_amount(REAGENT_ID_MYELAMINE)
- if(!(W.can_autoheal() || (bicardose && inaprovaline) || myeldose)) //bicaridine and inaprovaline stop internal wounds from growing bigger with time, unless it is so small that it is already healing
- W.open_wound(0.1)
+ var/internal_blood_to_lose = calculate_internal_bloodloss(W, applied_pressure = temp.applied_pressure)
+ if(count_internal)
+ total_blood_loss += internal_blood_to_lose
+ if(bleed)
+ remove_blood(internal_blood_to_lose)
if(prob(1))
custom_pain("You feel a stabbing pain in your [temp.name]!", 50)
- if((CE_STABLE in chem_effects) || myeldose)
- blood_loss_divisor = max(blood_loss_divisor + 30, 1) //Inaprovaline is great on internal wounds.
- if(temp.applied_pressure) //Putting pressure on the afflicted wound helps stop the arterial bleeding.
- blood_loss_divisor += 30
- if(W.clamped)
- blood_loss_divisor = blood_loss_divisor * 10 //We hemostatted the internal bleeding. Bloodloss is 10 times slower.
- remove_blood(W.damage/blood_loss_divisor) //line should possibly be moved to handle_blood, so all the bleeding stuff is in one place. //Hi. 2025 here. Just did that. ~Diana
- ///Thirdly, we check to see if the limb is bleeding EXTERNALLY
- if(!(temp.status & ORGAN_BLEEDING))
- continue
- ///Finally, we process external wounds.
- for(var/datum/wound/W in temp.wounds)
- if(W.bleeding())
- if(W.damage_type == PIERCE) //gunshots and spear stabs bleed more
- blood_loss_divisor = max(blood_loss_divisor - 5, 1)
- else if(W.damage_type == BRUISE) //bruises bleed less
- blood_loss_divisor = max(blood_loss_divisor + 5, 1)
- //the farther you get from those vital regions, the less you bleed
- //depending on how dangerous bleeding turns out to be, it might be better to only apply the reduction to hands and feet
- if((temp.organ_tag == BP_L_ARM) || (temp.organ_tag == BP_R_ARM) || (temp.organ_tag == BP_L_LEG) || (temp.organ_tag == BP_R_LEG))
- blood_loss_divisor = max(blood_loss_divisor + 5, 1)
- else if((temp.organ_tag == BP_L_HAND) || (temp.organ_tag == BP_R_HAND) || (temp.organ_tag == BP_L_FOOT) || (temp.organ_tag == BP_R_FOOT))
- blood_loss_divisor = max(blood_loss_divisor + 10, 1)
- if(CE_STABLE in chem_effects) //Inaprov slows bloodloss
- blood_loss_divisor = max(blood_loss_divisor + 10, 1)
- if(temp.applied_pressure)
- if(ishuman(temp.applied_pressure))
- var/mob/living/carbon/human/H = temp.applied_pressure
- H.bloody_hands(src, 0)
- //somehow you can apply pressure to every wound on the organ at the same time
- //you're basically forced to do nothing at all, so let's make it pretty effective
- var/min_eff_damage = max(0, W.damage - 10) / (blood_loss_divisor / 5) //still want a little bit to drip out, for effect
- blood_max += max(min_eff_damage, W.damage - 30) / blood_loss_divisor
- else
- blood_max += W.damage / blood_loss_divisor
+ ///Thirdly, we check to see if the limb is bleeding EXTERNALLY
+ if(!(temp.status & ORGAN_BLEEDING))
+ continue
+ ///Finally, we process external wounds.
+ for(var/datum/wound/W in temp.wounds)
+ if(W.bleeding())
+ var/temp_bld = blood_loss_divisor
+ if(W.damage_type == PIERCE) //gunshots and spear stabs bleed more
+ temp_bld = max(temp_bld - 5, 1)
+ else if(W.damage_type == BRUISE) //bruises bleed less
+ temp_bld = max(temp_bld + 5, 1)
+ //the farther you get from those vital regions, the less you bleed
+ //depending on how dangerous bleeding turns out to be, it might be better to only apply the reduction to hands and feet
+ if((temp.organ_tag == BP_L_ARM) || (temp.organ_tag == BP_R_ARM) || (temp.organ_tag == BP_L_LEG) || (temp.organ_tag == BP_R_LEG))
+ temp_bld = max(temp_bld + 5, 1)
+ else if((temp.organ_tag == BP_L_HAND) || (temp.organ_tag == BP_R_HAND) || (temp.organ_tag == BP_L_FOOT) || (temp.organ_tag == BP_R_FOOT))
+ temp_bld = max(temp_bld + 10, 1)
+ if(CE_STABLE in chem_effects) //Inaprov slows bloodloss
+ temp_bld = max(temp_bld + 10, 1)
+ if(temp.applied_pressure)
+ if(ishuman(temp.applied_pressure))
+ var/mob/living/carbon/human/H = temp.applied_pressure
+ H.bloody_hands(src, 0)
+ //somehow you can apply pressure to every wound on the organ at the same time
+ //you're basically forced to do nothing at all, so let's make it pretty effective
+ var/min_eff_damage = max(0, W.damage - 10) / (temp_bld / 5) //still want a little bit to drip out, for effect
+ blood_max += max(min_eff_damage, W.damage - 30) / temp_bld
+ else
+ blood_max += W.damage / temp_bld
- if(temp.open)
- blood_max += 2 //Yer stomach is cut open
+ if(temp.open)
+ blood_max += 2 //Yer stomach is cut open
+ if(bleed)
+ blood_max = round(blood_max, 0.1)
drip(blood_max)
+ total_blood_loss += blood_max
+ return round(total_blood_loss, 0.1)
+
+///Calculates how much blood we should lose from an internal wound.
+/mob/living/carbon/human/proc/calculate_internal_bloodloss(datum/wound/internal_bleeding/wound_to_check, applied_pressure = FALSE)
+ if(!wound_to_check)
+ return 0
+
+ var/temp_bld = calculate_bloodloss_divisor() + 10 //IB is slower bloodloss than normal.
+ var/bicardose
+ if(reagents.get_reagent_amount(REAGENT_ID_BICARIDINE) || reagents.get_reagent_amount(REAGENT_ID_BICARIDAZE))
+ bicardose = TRUE
+ var/inaprovaline
+ if(reagents.get_reagent_amount(REAGENT_ID_INAPROVALINE) || reagents.get_reagent_amount(REAGENT_ID_INAPROVALAZE))
+ inaprovaline = TRUE
+ var/myeldose = reagents.get_reagent_amount(REAGENT_ID_MYELAMINE)
+ if(!(wound_to_check.can_autoheal() || (bicardose && inaprovaline) || myeldose)) //bicaridine and inaprovaline stop internal wounds from growing bigger with time, unless it is so small that it is already healing
+ wound_to_check.open_wound(0.1)
+ if((CE_STABLE in chem_effects) || myeldose)
+ temp_bld = max(temp_bld + 30, 1) //Inaprovaline is great on internal wounds.
+ if(applied_pressure) //Putting pressure on the afflicted wound helps stop the arterial bleeding.
+ temp_bld += 30
+ if(wound_to_check.clamped)
+ temp_bld = temp_bld * 10 //We hemostatted the internal bleeding. Bloodloss is 10 times slower.
+ return round((wound_to_check.damage/temp_bld), 0.1)
+
//Makes a blood drop, leaking amt units of blood from the mob
/mob/living/carbon/human/proc/drip(var/amt)
diff --git a/code/modules/reagents/reagents/_reagents.dm b/code/modules/reagents/reagents/_reagents.dm
index 33b352b276..b07ddc1688 100644
--- a/code/modules/reagents/reagents/_reagents.dm
+++ b/code/modules/reagents/reagents/_reagents.dm
@@ -18,7 +18,7 @@
var/overdose = 0 //Amount at which overdose starts
var/overdose_mod = 1 //Modifier to overdose damage
var/can_overdose_touch = FALSE // Can the chemical OD when processing on touch?
- var/scannable = 0 // Shows up on health analyzers.
+ var/scannable = SCANNABLE_SECRETIVE // Shows up on health analyzers.
var/affects_dead = 0 // Does this chem process inside a corpse without outside intervention required?
var/affects_robots = 0 // Does this chem process inside a Synth?
@@ -49,6 +49,11 @@
var/coolant_modifier = -0.5 // this is multiplied by the volume of the reagent. Most things are not good coolant. EX: Water is 1, coolant is 2. -1 would be a bad reagent for cooling.
+ var/glass_icon_file = null
+ var/glass_icon_state = null
+ var/glass_center_of_mass_x = 0
+ var/glass_center_of_mass_y = 0
+
/datum/reagent/proc/remove_self(var/amount) // Shortcut
if(holder)
holder.remove_reagent(id, amount)
diff --git a/code/modules/reagents/reagents/core.dm b/code/modules/reagents/reagents/core.dm
index 3a3fd8b381..f658c0e232 100644
--- a/code/modules/reagents/reagents/core.dm
+++ b/code/modules/reagents/reagents/core.dm
@@ -247,6 +247,7 @@
taste_description = REAGENT_ID_WATER
description = "A ubiquitous chemical substance that is composed of hydrogen and oxygen."
reagent_state = LIQUID
+ scannable = SCANNABLE_BENEFICIAL
color = "#0064C877"
metabolism = REM * 10
@@ -349,6 +350,7 @@
description = "Required for welders. Flamable."
taste_description = "gross metal"
reagent_state = LIQUID
+ scannable = SCANNABLE_ADVANCED
color = "#660000"
glass_name = "welder fuel"
diff --git a/code/modules/reagents/reagents/dispenser.dm b/code/modules/reagents/reagents/dispenser.dm
index 7ac7265738..3ec9b1e1c7 100644
--- a/code/modules/reagents/reagents/dispenser.dm
+++ b/code/modules/reagents/reagents/dispenser.dm
@@ -6,6 +6,7 @@
taste_mult = 1.1
reagent_state = SOLID
color = "#A8A8A8"
+ scannable = SCANNABLE_ADVANCED
supply_conversion_value = 1 // has sheet value
industrial_use = REFINERYEXPORT_REASON_RAW
@@ -16,6 +17,7 @@
taste_description = "metallic chalk" // Apparently, calcium tastes like calcium.
taste_mult = 1.3
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#e9e6e4"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_RAW
@@ -39,6 +41,7 @@
taste_description = "sour chalk"
taste_mult = 1.5
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#1C1300"
ingest_met = REM * 5
supply_conversion_value = REFINERYEXPORT_VALUE_UNWANTED
@@ -71,6 +74,7 @@
taste_description = "pool water"
reagent_state = GAS
color = "#808080"
+ scannable = SCANNABLE_ADVANCED
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_RAW
coolant_modifier = 0.15
@@ -87,6 +91,7 @@
description = "A highly ductile metal."
taste_description = "pennies"
color = "#6E3B08"
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = 0.5 SHEET_TO_REAGENT_EQUIVILENT // has sheet value
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -96,6 +101,7 @@
description = "A well-known alcohol with a variety of applications."
taste_description = "pure alcohol"
reagent_state = LIQUID
+ scannable = SCANNABLE_BENEFICIAL
color = "#404030"
cup_prefix = "alcoholic"
@@ -303,6 +309,7 @@
description = "A highly-reactive chemical element."
taste_description = "acid"
reagent_state = GAS
+ scannable = SCANNABLE_ADVANCED
color = "#808080"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_RAW
@@ -319,6 +326,7 @@
description = "A colorless, odorless, nonmetallic, tasteless, highly combustible diatomic gas."
taste_mult = 0 //no taste
reagent_state = GAS
+ scannable = SCANNABLE_ADVANCED
color = "#808080"
supply_conversion_value = REFINERYEXPORT_VALUE_NO
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -329,6 +337,7 @@
description = "Pure iron is a metal."
taste_description = "metal"
reagent_state = SOLID
+ scannable = SCANNABLE_BENEFICIAL
color = "#353535"
supply_conversion_value = 1 SHEET_TO_REAGENT_EQUIVILENT // has sheet value
industrial_use = REFINERYEXPORT_REASON_RAW
@@ -339,6 +348,7 @@
description = "A chemical element, used as antidepressant."
taste_description = "metal"
reagent_state = SOLID
+ scannable = SCANNABLE_BENEFICIAL
color = "#808080"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -357,6 +367,7 @@
description = "A chemical element."
taste_mult = 0 //mercury apparently is tasteless. IDK
reagent_state = LIQUID
+ scannable = SCANNABLE_ADVANCED
color = "#484848"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -375,6 +386,7 @@
description = "A colorless, odorless, tasteless gas."
taste_mult = 0 //no taste
reagent_state = GAS
+ scannable = SCANNABLE_ADVANCED
color = "#808080"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_RAW
@@ -386,6 +398,7 @@
description = "A colorless, odorless gas."
taste_mult = 0
reagent_state = GAS
+ scannable = SCANNABLE_BENEFICIAL
color = "#808080"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_RAW
@@ -401,6 +414,7 @@
description = "A chemical element, the backbone of biological energy carriers."
taste_description = "vinegar"
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#832828"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_RAW
@@ -411,6 +425,7 @@
description = "A soft, low-melting solid that can easily be cut with a knife. Reacts violently with water."
taste_description = "sweetness" //potassium is bitter in higher doses but sweet in lower ones.
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#A0A0A0"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_RAW
@@ -421,6 +436,7 @@
description = "Radium is an alkaline earth metal. It is extremely radioactive."
taste_mult = 0 //Apparently radium is tasteless
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#C7C7C7"
supply_conversion_value = REFINERYEXPORT_VALUE_RARE
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -444,6 +460,7 @@
description = "Concentrated Radium is a more potent variant of regular radium, able to pierce and irradiate a subject through their skin."
taste_mult = 0 //Apparently radium is tasteless
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#C7C7C7"
supply_conversion_value = REFINERYEXPORT_VALUE_RARE
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -462,6 +479,7 @@
description = "A very corrosive mineral acid with the molecular formula H2SO4."
taste_description = "acid"
reagent_state = LIQUID
+ scannable = SCANNABLE_ADVANCED
color = "#DB5008"
metabolism = REM * 2
touch_met = 50 // It's acid!
@@ -598,6 +616,7 @@
description = "A tetravalent metalloid, silicon is less reactive than its chemical analog carbon."
taste_mult = 0
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#A8A8A8"
supply_conversion_value = REFINERYEXPORT_VALUE_UNWANTED
industrial_use = REFINERYEXPORT_REASON_RAW
@@ -608,6 +627,7 @@
description = "A chemical element, readily reacts with water."
taste_description = "salty metal"
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#808080"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_RAW
@@ -620,6 +640,7 @@
taste_description = "sugar"
taste_mult = 1.8
reagent_state = SOLID
+ scannable = SCANNABLE_BENEFICIAL
color = "#FFFFFF"
glass_name = REAGENT_ID_SUGAR
@@ -657,6 +678,7 @@
description = "A chemical element with a pungent smell."
taste_description = "old eggs"
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#BF8C00"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_RAW
@@ -669,6 +691,7 @@
taste_description = "metal"
taste_mult = 0 //no taste
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#DCDCDC"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -680,6 +703,7 @@
taste_description = "metal"
taste_mult = 0 //no taste
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#cadcef"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_COSMETIC
@@ -691,6 +715,7 @@
taste_description = "metal"
taste_mult = 0 //no taste
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#cadcef"
supply_conversion_value = REFINERYEXPORT_VALUE_RARE
industrial_use = REFINERYEXPORT_REASON_INDUSTRY
@@ -702,6 +727,7 @@
taste_description = "metal"
taste_mult = 0 //no taste
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#efe9ca"
supply_conversion_value = 0.5 SHEET_TO_REAGENT_EQUIVILENT // has sheet value
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -711,6 +737,7 @@
id = REAGENT_ID_MIASMA
description = "Not necessarily a gas, miasma refers to biological pollutants found in the atmosphere."
reagent_state = GAS
+ scannable = SCANNABLE_ADVANCED
taste_description = "indescribable"
color = "#808000"
supply_conversion_value = REFINERYEXPORT_VALUE_NO
diff --git a/code/modules/reagents/reagents/drugs.dm b/code/modules/reagents/reagents/drugs.dm
index 29340bb337..4ff0d750fd 100644
--- a/code/modules/reagents/reagents/drugs.dm
+++ b/code/modules/reagents/reagents/drugs.dm
@@ -10,6 +10,7 @@
taste_description = "a bad investment"
taste_mult = 1.2 /// The overwhelming flavor of a good(?) time!
color = "#f2f2f2"
+ scannable = SCANNABLE_ADVANCED
var/high_messages = TRUE
var/list/high_message_list = list("You feel great! For now...", "You feel a wave of happiness!")
var/list/sober_message_list = list("You feel like garbage...", "Your head aches.")
@@ -48,6 +49,7 @@
description = "Known for providing a euphoric high, this psychoactive drug is often used recreationally."
taste_description = "unpleasant bitterness"
taste_mult = 0.4
+ scannable = SCANNABLE_ADVANCED
high_message_list = list("You don't quite know what up or down is anymore...",
"Colors just seem much more amazing.",
"You feel incredibly confident. No one can stop you.",
@@ -268,6 +270,7 @@
high_message_list = list("You feel focused.", "Your attention is undivided.")
sober_message_list = list("It becomes harder to focus...", "You feel distractible.")
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
+ scannable = SCANNABLE_BENEFICIAL
industrial_use = REFINERYEXPORT_REASON_DRUG
/datum/reagent/drugs/citalopram
@@ -276,6 +279,7 @@
description = "Stabilizes the mind a little."
taste_description = "mild peppermint"
color = "#FF80FF"
+ scannable = SCANNABLE_BENEFICIAL
high_message_list = list("Everything feels a bit more steady.", "Your mind feels stable.")
sober_message_list = list("You feel a little tired.", "You feel a little more listless...")
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
@@ -292,6 +296,7 @@
description = "Stabilizes the mind greatly, but has a chance of adverse effects."
taste_description = "mild oranges"
color = "#FF80BF"
+ scannable = SCANNABLE_BENEFICIAL
high_message_list = list("Everything feels good, stable.", "You feel grounded.")
sober_message_list = list("The stability is gone...", "Everything is much less stable.")
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
@@ -312,6 +317,7 @@
description = "A potent sedative and anti-anxiety medication, made for the Qerr-Katish."
taste_description = "mint"
color = "#e6efe3"
+ scannable = SCANNABLE_BENEFICIAL
high_message_list = list("You feel sluggish...", "You feel calm and collected.")
sober_message_list = list("You feel so much more antsy...", "Your concentration wavers.")
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
diff --git a/code/modules/reagents/reagents/food_drinks.dm b/code/modules/reagents/reagents/food_drinks.dm
index 26baf2f917..7a659f1f7d 100644
--- a/code/modules/reagents/reagents/food_drinks.dm
+++ b/code/modules/reagents/reagents/food_drinks.dm
@@ -14,6 +14,7 @@
affects_robots = 1 //VOREStation Edit
wiki_flag = WIKI_FOOD
coolant_modifier = -1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_UNWANTED
industrial_use = REFINERYEXPORT_REASON_FOOD
@@ -867,6 +868,7 @@
/datum/reagent/condensedcapsaicin
name = REAGENT_CONDENSEDCAPSAICIN
id = REAGENT_ID_CONDENSEDCAPSAICIN
+ scannable = SCANNABLE_ADVANCED
description = "A chemical agent used for self-defense and in police work."
taste_description = "fire"
taste_mult = 10
diff --git a/code/modules/reagents/reagents/medicine.dm b/code/modules/reagents/reagents/medicine.dm
index 8bb03ec94c..c1b9445f55 100644
--- a/code/modules/reagents/reagents/medicine.dm
+++ b/code/modules/reagents/reagents/medicine.dm
@@ -9,7 +9,7 @@
color = "#00BFFF"
overdose = REAGENTS_OVERDOSE * 2
metabolism = REM * 0.2
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -28,7 +28,7 @@
color = "#00BFFF"
overdose = REAGENTS_OVERDOSE * 2
metabolism = REM * 0.2
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
touch_met = REM * 0.3
can_overdose_touch = TRUE
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
@@ -54,7 +54,7 @@
color = "#BF0000"
overdose = REAGENTS_OVERDOSE
overdose_mod = 0.25
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -91,7 +91,7 @@
reagent_state = LIQUID
color = "#BF0000"
overdose = REAGENTS_OVERDOSE * 0.75
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
touch_met = REM * 0.75
can_overdose_touch = TRUE
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
@@ -121,7 +121,7 @@
color = "#eae6e3"
overdose = REAGENTS_OVERDOSE * 0.8
metabolism = REM * 0.4
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -141,7 +141,7 @@
reagent_state = LIQUID
color = "#FFA800"
overdose = REAGENTS_OVERDOSE
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -163,7 +163,7 @@
reagent_state = LIQUID
color = "#FF8000"
overdose = REAGENTS_OVERDOSE * 0.5
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -183,7 +183,7 @@
reagent_state = LIQUID
color = "#FF8000"
overdose = REAGENTS_OVERDOSE * 0.4
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
touch_met = REM * 0.75
can_overdose_touch = TRUE
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
@@ -211,7 +211,7 @@
taste_description = "a roll of gauze"
reagent_state = LIQUID
color = "#00A000"
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -234,7 +234,7 @@
description = REAGENT_CARTHATOLINE + " is strong evacuant used to treat severe poisoning."
reagent_state = LIQUID
color = "#225722"
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
overdose = REAGENTS_OVERDOSE * 0.5
overdose_mod = 0 // Not used, but it shouldn't deal toxin damage anyways. Carth heals toxins!
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
@@ -273,7 +273,7 @@
reagent_state = LIQUID
color = "#0080FF"
overdose = REAGENTS_OVERDOSE
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
metabolism = REM * 0.25
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -301,7 +301,7 @@
color = "#0040FF"
overdose = REAGENTS_OVERDOSE * 0.5
overdose_mod = 1.25
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_SPECIALDRUG
@@ -326,8 +326,8 @@
taste_description = "bitterness"
reagent_state = LIQUID
color = "#8040FF"
- scannable = 1
overdose = REAGENTS_OVERDOSE * 4 //YW EDIT - TRICORD FUCKING KILLS YOU
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -356,7 +356,7 @@
taste_description = "bitterness"
reagent_state = SOLID
color = "#B060FF"
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
can_overdose_touch = TRUE
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_SPECIALDRUG
@@ -396,7 +396,7 @@
color = "#8080FF"
metabolism = REM * 0.5
mrate_static = TRUE
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_CLONEDRUG
@@ -423,7 +423,7 @@
color = "#80BFFF"
metabolism = REM * 0.5
mrate_static = TRUE
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_CLONEDRUG
@@ -452,7 +452,7 @@
metabolism = REM * 0.5
mrate_static = TRUE
affects_dead = FALSE //Clarifying this here since the original intent was this ONLY works on people that have the bloodpump_corpse modifier.
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_MASSINDUSTRY
industrial_use = REFINERYEXPORT_REASON_CLONEDRUG
@@ -492,7 +492,7 @@
color = "#94B21C"
metabolism = REM * 0.5
mrate_static = TRUE
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
affects_dead = TRUE
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_CLONEDRUG
@@ -529,7 +529,7 @@
color = "#C8A5DC"
overdose = REAGENTS_OVERDOSE * 2
overdose_mod = 0.75
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
metabolism = 0.02
mrate_static = TRUE
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
@@ -556,7 +556,7 @@
color = "#CB68FC"
overdose = REAGENTS_OVERDOSE
overdose_mod = 0.75
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
metabolism = 0.02
mrate_static = TRUE
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
@@ -582,7 +582,7 @@
color = "#800080"
overdose = 20
overdose_mod = 0.75
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
metabolism = 0.02
mrate_static = TRUE
supply_conversion_value = REFINERYEXPORT_VALUE_MASSINDUSTRY
@@ -612,8 +612,9 @@
reagent_state = LIQUID
color = "#99CCFF"
metabolism = REM * 0.05
+ mrate_static = TRUE
overdose = REAGENTS_OVERDOSE
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -644,6 +645,7 @@
reagent_state = LIQUID
color = "#FF3300"
overdose = REAGENTS_OVERDOSE * 0.5
+ scannable = SCANNABLE_ADVANCED
overdose_mod = 0.25
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_COMSTIM
@@ -677,7 +679,7 @@
color = "#FFFF66"
metabolism = REM * 0.25
overdose = REAGENTS_OVERDOSE
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_SPECIALDRUG
@@ -702,7 +704,7 @@
reagent_state = LIQUID
color = "#C8A5DC"
overdose = REAGENTS_OVERDOSE
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_SPECIALDRUG
@@ -729,7 +731,7 @@
color = "#561EC3"
overdose = 10
overdose_mod = 1.5
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_SPECIALDRUG
@@ -764,7 +766,7 @@
metabolism = REM * 0.5
overdose = REAGENTS_OVERDOSE * 0.5
overdose_mod = 1.5
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_MASSINDUSTRY
industrial_use = REFINERYEXPORT_REASON_SPECIALDRUG
@@ -798,7 +800,7 @@
metabolism = REM * 0.75
overdose = REAGENTS_OVERDOSE * 0.5
overdose_mod = 1.5
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
var/repair_strength = 6
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_SPECIALDRUG
@@ -848,7 +850,7 @@
metabolism = REM * 1.5
overdose = 10
overdose_mod = 1.75
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_SPECIALDRUG
@@ -882,7 +884,7 @@
metabolism = REM * 1.5
overdose = 10
overdose_mod = 1.75
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_SPECIALDRUG
@@ -916,7 +918,7 @@
metabolism = REM * 1.5
overdose = 10
overdose_mod = 1.75
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_SPECIALDRUG
@@ -952,7 +954,7 @@
metabolism = REM * 1.5
overdose = 10
overdose_mod = 1.75
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_SPECIALDRUG
@@ -982,7 +984,7 @@
color = "#7B4D4F"
overdose = 20
overdose_mod = 1.5
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
metabolism = REM * 0.06
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_SPECIALDRUG
@@ -1040,7 +1042,7 @@
metabolism = REM * 0.06
overdose = 20
overdose_mod = 1.5
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_SPECIALDRUG
@@ -1081,6 +1083,7 @@
description = REAGENT_RYETALYN + " can cure DNA, Cloning, and genetic damage via a catalytic process."
taste_description = "acid"
reagent_state = SOLID
+ scannable = SCANNABLE_BENEFICIAL
color = "#004000"
overdose = REAGENTS_OVERDOSE
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
@@ -1116,6 +1119,7 @@
description = "A powerful oxidizer that reacts with ethanol."
taste_description = "bitterness"
reagent_state = SOLID
+ scannable = SCANNABLE_BENEFICIAL
color = "#605048"
overdose = REAGENTS_OVERDOSE
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
@@ -1154,7 +1158,7 @@
color = "#408000"
metabolism = REM * 0.25
overdose = REAGENTS_OVERDOSE
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_SPECIALDRUG
@@ -1174,7 +1178,7 @@
metabolism = REM * 0.25
overdose = REAGENTS_OVERDOSE
overdose_mod = 1.25
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_CLONEDRUG
@@ -1197,7 +1201,7 @@
metabolism = REM * 0.25
mrate_static = TRUE
overdose = REAGENTS_OVERDOSE
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
data = 0
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -1228,7 +1232,7 @@
mrate_static = TRUE
overdose = 10
overdose_mod = 1.5
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
data = 0
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -1298,7 +1302,7 @@
metabolism = REM * 0.4
mrate_static = TRUE
overdose = REAGENTS_OVERDOSE
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
data = 0
can_overdose_touch = TRUE
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
@@ -1345,6 +1349,7 @@
taste_description = "bitterness"
reagent_state = LIQUID
color = "#C8A5DC"
+ scannable = SCANNABLE_BENEFICIAL
touch_met = 5
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_CLEAN
@@ -1398,7 +1403,7 @@
reagent_state = LIQUID
color = "#C8A5DC"
overdose = REAGENTS_OVERDOSE
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_CLONEDRUG
coolant_modifier = 0.5 // Okay substitute coolant
@@ -1424,7 +1429,7 @@
color = "#669900"
overdose = REAGENTS_OVERDOSE
overdose_mod = 2
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_MASSINDUSTRY
industrial_use = REFINERYEXPORT_REASON_CLONEDRUG
@@ -1474,7 +1479,7 @@
reagent_state = SOLID
color = "#555555"
metabolism = REM * 4 // Nanomachines gotta go fast.
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
affects_robots = TRUE
wiki_flag = WIKI_SPOILER
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
@@ -1495,7 +1500,7 @@
color = "#80af9c"
metabolism = REM * 0.002
overdose = REAGENTS_OVERDOSE
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_FOOD
@@ -1509,7 +1514,7 @@
overdose = REAGENTS_OVERDOSE * 0.50
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_DRUG
-
+ scannable = SCANNABLE_BENEFICIAL
/datum/reagent/earthsblood/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
M.heal_organ_damage (4 * removed, 4 * removed)
@@ -1531,7 +1536,7 @@
color = "#31d422"
overdose = 15
overdose_mod = 1.2
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -1588,6 +1593,7 @@
id = REAGENT_ID_TERCOZOLAM
color = "#afeb17"
metabolism = 0.05
+ scannable = SCANNABLE_BENEFICIAL
description = "A well respected drug used for treatment of schizophrenia in specific."
overdose = REAGENTS_OVERDOSE * 2
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
diff --git a/code/modules/reagents/reagents/medicine_ch.dm b/code/modules/reagents/reagents/medicine_ch.dm
index f258114917..6580571b57 100644
--- a/code/modules/reagents/reagents/medicine_ch.dm
+++ b/code/modules/reagents/reagents/medicine_ch.dm
@@ -6,6 +6,7 @@
id = REAGENT_ID_CLARIDYL
description = "Claridyl is an advanced medicine that cures all of your problems. Notice: Clarydil does not claim to fix marriages, car loans, student debt or insomnia and may cause severe pain."
taste_description = "sugar"
+ scannable = SCANNABLE_BENEFICIAL
reagent_state = LIQUID
color = "#AAAAFF"
overdose = REAGENTS_OVERDOSE * 100
@@ -62,6 +63,7 @@
id = REAGENT_ID_EDEN
description = "The ultimate anti toxin unrivaled, it corrects impurities within the body but punishes those who attain them with a burning sensation"
taste_description = "peace"
+ scannable = SCANNABLE_BENEFICIAL
color = "#00FFBE"
overdose = REAGENTS_OVERDOSE * 1
metabolism = 0
@@ -92,6 +94,7 @@
/datum/reagent/tercozolam
name = REAGENT_TERCOZOLAM
id = REAGENT_ID_TERCOZOLAM
+ scannable = SCANNABLE_BENEFICIAL
color = "#afeb17"
metabolism = 0.05
description = "A well respected drug used for treatment of schizophrenia in specific."
@@ -105,6 +108,7 @@
/datum/reagent/hannoa
name = REAGENT_HANNOA
id = REAGENT_ID_HANNOA
+ scannable = SCANNABLE_BENEFICIAL
description = "A powerful clotting agent that treats brute damage very quickly but takes a long time to be metabolised. Overdoses easily, reacts badly with other chemicals."
taste_description = "paint"
reagent_state = LIQUID
@@ -150,6 +154,7 @@
/datum/reagent/bullvalene //This is for the third sap. It converts Brute Oxy and burn into slightly less toxins.
name = REAGENT_BULLVALENE
id = REAGENT_ID_BULLVALENE
+ scannable = SCANNABLE_BENEFICIAL
description = "A catalytic chemical that can treat a wide variety of ailments at the cost of toxifying the host's body."
taste_description = "sulfur"
reagent_state = LIQUID
@@ -174,6 +179,7 @@
/datum/reagent/serazine
name = REAGENT_SERAZINE
id = REAGENT_ID_SERAZINE
+ scannable = SCANNABLE_BENEFICIAL
description = "A sweet tasting flower extract, it has very mild anti toxic properties, help with hallucinations and drowsyness, and can be used to make potent drugs."
taste_description = "sweet nectar"
reagent_state = LIQUID
@@ -192,6 +198,7 @@
/datum/reagent/alizene
name = REAGENT_ALIZENE
id = REAGENT_ID_ALIZENE
+ scannable = SCANNABLE_BENEFICIAL
description = "A derivative from bicaridine enhanced by serazine to more effectively mend flesh, but is ineffective against internal hemorrhage."
taste_description = "bittersweet"
taste_mult = 3
diff --git a/code/modules/reagents/reagents/medicine_vr.dm b/code/modules/reagents/reagents/medicine_vr.dm
index db6f3d8b71..271472896c 100644
--- a/code/modules/reagents/reagents/medicine_vr.dm
+++ b/code/modules/reagents/reagents/medicine_vr.dm
@@ -5,7 +5,7 @@
taste_description = "milk"
reagent_state = LIQUID
color = "#d5e2e5"
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -28,7 +28,7 @@
metabolism = 0.1 //Lasts up to 200 seconds if you give 20u which is OD.
mrate_static = TRUE
overdose = 20 //High OD. This is to make numbing bites have somewhat of a downside if you get bit too much. Have to go to medical for dialysis.
- scannable = 0 //Let's not have medical mechs able to make an extremely strong organic painkiller
+ scannable = SCANNABLE_ADVANCED //Let's not have medical mechs able to make an extremely strong organic painkiller
wiki_flag = WIKI_SPOILER
supply_conversion_value = REFINERYEXPORT_VALUE_RARE
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -73,7 +73,7 @@
reagent_state = LIQUID
color = "#750404"
overdose = REAGENTS_OVERDOSE * 0.5
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -94,7 +94,7 @@
reagent_state = LIQUID
color = "#b4dcdc"
overdose = 5
- scannable = 0
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_RARE
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -115,7 +115,7 @@
color = "#003153" //Blue!
metabolism = REM * 0.25//20 ticks to do things per unit injected. This means injecting 30u will give you 10 minutes to do what you need.
overdose = REAGENTS_OVERDOSE
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_DRUG
@@ -131,6 +131,7 @@
description = "A chemical compound that causes a dangerously powerful fat-burning reaction."
taste_description = "blandness"
reagent_state = LIQUID
+ scannable = SCANNABLE_BENEFICIAL
color = "#47AD6D"
overdose = REAGENTS_OVERDOSE
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
@@ -148,6 +149,7 @@
taste_description = "blubber"
reagent_state = LIQUID
color = "#61731C"
+ scannable = SCANNABLE_BENEFICIAL
overdose = REAGENTS_OVERDOSE
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_DIET
@@ -163,6 +165,7 @@
description = "A chemical that instantly transforms the consumer into another creature."
taste_description = "luck"
reagent_state = LIQUID
+ scannable = SCANNABLE_SECRETIVE
color = "#a754de"
scannable = 1
var/tf_type = /mob/living/simple_mob/animal/passive/mouse
@@ -276,7 +279,7 @@
taste_description = "change"
reagent_state = LIQUID
color = "#ffffff"
- scannable = 1
+ scannable = SCANNABLE_SECRETIVE
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_COSMETIC
diff --git a/code/modules/reagents/reagents/modifiers.dm b/code/modules/reagents/reagents/modifiers.dm
index 948e19d79e..5666fc0ae8 100644
--- a/code/modules/reagents/reagents/modifiers.dm
+++ b/code/modules/reagents/reagents/modifiers.dm
@@ -10,6 +10,7 @@
reagent_state = LIQUID
color = "#ff5555"
metabolism = REM
+ scannable = SCANNABLE_SECRETIVE
var/modifier_to_add = /datum/modifier/berserk
var/modifier_duration = 3 SECONDS // How long, per unit dose, will this last?
diff --git a/code/modules/reagents/reagents/other.dm b/code/modules/reagents/reagents/other.dm
index e884321e64..e2bb91b2fd 100644
--- a/code/modules/reagents/reagents/other.dm
+++ b/code/modules/reagents/reagents/other.dm
@@ -8,6 +8,7 @@
reagent_state = LIQUID
color = "#888888"
overdose = 10
+ scannable = SCANNABLE_ADVANCED
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_COSMETIC
@@ -59,6 +60,7 @@
reagent_state = LIQUID
color = "#888888"
overdose = 10
+ scannable = SCANNABLE_ADVANCED
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_COSMETIC
@@ -116,6 +118,7 @@
color = "#808080"
overdose = REAGENTS_OVERDOSE * 0.5
color_weight = 20
+ scannable = SCANNABLE_ADVANCED
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_COSMETIC
@@ -178,6 +181,7 @@
color = "#C8A5DC"
affects_dead = TRUE //This can even heal dead people.
metabolism = 0.1
+ scannable = SCANNABLE_UNSCANNABLE
mrate_static = TRUE //Just in case
glass_name = "liquid gold"
@@ -247,6 +251,7 @@
description = "Gold is a dense, soft, shiny metal and the most malleable and ductile metal known."
taste_description = "metal"
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#F7C430"
supply_conversion_value = 2 SHEET_TO_REAGENT_EQUIVILENT // has sheet value
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -257,6 +262,7 @@
description = "A soft, white, lustrous transition metal, it has the highest electrical conductivity of any element and the highest thermal conductivity of any metal."
taste_description = "metal"
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#D0D0D0"
supply_conversion_value = 1 SHEET_TO_REAGENT_EQUIVILENT // has sheet value
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -267,6 +273,7 @@
description = "Platinum is a dense, malleable, ductile, highly unreactive, precious, gray-white transition metal. It is very resistant to corrosion."
taste_description = "metal"
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#777777"
supply_conversion_value = 5 SHEET_TO_REAGENT_EQUIVILENT // has sheet value
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -277,6 +284,7 @@
description = "A silvery-white metallic chemical element in the actinide series, weakly radioactive."
taste_description = "metal"
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#B8B8C0"
supply_conversion_value = 2 SHEET_TO_REAGENT_EQUIVILENT // has sheet value
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -345,6 +353,7 @@
reagent_state = SOLID
affects_dead = TRUE
affects_robots = TRUE
+ scannable = SCANNABLE_UNSCANNABLE
description = "The immense power of a supermatter crystal, in liquid form. You're not entirely sure how that's possible, but it's probably best handled with care."
taste_description = "taffy" // 0. The supermatter is tasty, tasty taffy.
wiki_flag = WIKI_SPOILER
@@ -368,6 +377,7 @@
description = "Adrenaline is a hormone used as a drug to treat cardiac arrest and other cardiac dysrhythmias resulting in diminished or absent cardiac output."
taste_description = "bitterness"
reagent_state = LIQUID
+ scannable = SCANNABLE_BENEFICIAL
color = "#C8A5DC"
mrate_static = TRUE
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
@@ -387,6 +397,7 @@
taste_description = "water"
color = "#E0E8EF"
mrate_static = TRUE
+ scannable = SCANNABLE_BENEFICIAL
glass_name = "holy water"
glass_desc = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality."
@@ -431,6 +442,7 @@
taste_description = "mordant"
taste_mult = 2
reagent_state = GAS
+ scannable = SCANNABLE_ADVANCED
color = "#404030"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_RAW
@@ -442,6 +454,7 @@
description = "A secondary amine, mildly corrosive."
taste_description = REAGENT_ID_IRON
reagent_state = LIQUID
+ scannable = SCANNABLE_ADVANCED
color = "#604030"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -452,6 +465,7 @@
description = "Also known as sodium hydroxide. As a profession making this is somewhat underwhelming."
taste_description = "acid"
reagent_state = LIQUID
+ scannable = SCANNABLE_ADVANCED
color = "#FFFFD6" // very very light yellow"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -462,6 +476,7 @@
description = "A perfluoronated sulfonic acid that forms a foam when mixed with water."
taste_description = "metal"
reagent_state = LIQUID
+ scannable = SCANNABLE_ADVANCED
color = "#9E6B38"
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -472,6 +487,7 @@
description = "A agent that yields metallic foam when mixed with light metal and a strong acid."
taste_description = "metal"
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#664B63"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -482,6 +498,7 @@
description = "Thermite produces an aluminothermic reaction known as a thermite reaction. Can be used to melt walls."
taste_description = "sweet tasting metal"
reagent_state = SOLID
+ scannable = SCANNABLE_ADVANCED
color = "#673910"
touch_met = 50
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
@@ -511,6 +528,7 @@
description = "A compound used to clean things. Now with 50% more sodium hypochlorite!"
taste_description = "sourness"
reagent_state = LIQUID
+ scannable = SCANNABLE_ADVANCED
color = "#A5F0EE"
touch_met = 50
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
@@ -603,6 +621,7 @@
description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity."
taste_description = "slime"
reagent_state = LIQUID
+ scannable = SCANNABLE_ADVANCED
color = "#009CA8"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_LUBE
@@ -620,6 +639,7 @@
description = "A compound that can be used to reinforce glass."
taste_description = "plastic"
reagent_state = LIQUID
+ scannable = SCANNABLE_ADVANCED
color = "#C7FFFF"
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -638,6 +658,7 @@
description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity."
taste_description = "sweetness"
reagent_state = LIQUID
+ scannable = SCANNABLE_ADVANCED
color = "#808080"
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -649,6 +670,7 @@
description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol."
taste_description = "oil"
reagent_state = LIQUID
+ scannable = SCANNABLE_UNSCANNABLE
color = "#808080"
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
@@ -660,6 +682,7 @@
taste_description = "sourness"
taste_mult = 1.1
reagent_state = LIQUID
+ scannable = SCANNABLE_ADVANCED
color = "#C8A5DC"
affects_robots = TRUE
@@ -686,6 +709,7 @@
/datum/reagent/ultraglue
name = REAGENT_GLUE
id = REAGENT_ID_GLUE
+ scannable = SCANNABLE_ADVANCED
description = "An extremely powerful bonding agent."
taste_description = "a special education class"
color = "#FFFFCC"
@@ -695,6 +719,7 @@
/datum/reagent/woodpulp
name = REAGENT_WOODPULP
id = REAGENT_ID_WOODPULP
+ scannable = SCANNABLE_ADVANCED
description = "A mass of wood fibers."
taste_description = "wood"
reagent_state = LIQUID
@@ -705,6 +730,7 @@
/datum/reagent/luminol
name = REAGENT_LUMINOL
id = REAGENT_ID_LUMINOL
+ scannable = SCANNABLE_ADVANCED
description = "A compound that interacts with blood on the molecular level."
taste_description = "metal"
reagent_state = LIQUID
@@ -734,6 +760,7 @@
/datum/reagent/mineralfluid
name = REAGENT_MINERALIZEDFLUID
id = REAGENT_ID_MINERALIZEDFLUID
+ scannable = SCANNABLE_ADVANCED
description = "A warm, mineral-rich fluid."
taste_description = "salt"
reagent_state = LIQUID
@@ -746,6 +773,7 @@
/datum/reagent/defective_nanites
name = REAGENT_DEFECTIVENANITES
id = REAGENT_ID_DEFECTIVENANITES
+ scannable = SCANNABLE_DIFFICULT
description = "Miniature medical robots that are malfunctioning and cause bodily harm. Fortunately, they cannot self-replicate."
taste_description = "metal"
reagent_state = SOLID
@@ -787,6 +815,7 @@
/datum/reagent/carpet
name = REAGENT_LIQUIDCARPET
id = REAGENT_ID_LIQUIDCARPET
+ scannable = SCANNABLE_ADVANCED
description = "Liquified carpet fibers, ready for dyeing."
reagent_state = LIQUID
color = "#b51d05"
@@ -794,10 +823,6 @@
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
-/datum/reagent/carpet
- supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
- industrial_use = REFINERYEXPORT_REASON_PRECURSOR
-
/datum/reagent/carpet/black
name = REAGENT_LIQUIDCARPETB
id = REAGENT_ID_LIQUIDCARPETB
@@ -857,6 +882,7 @@
/datum/reagent/essential_oil
name = REAGENT_ESSENTIALOIL
id = REAGENT_ID_ESSENTIALOIL
+ scannable = SCANNABLE_ADVANCED
description = "A slurry of compounds that contains the basic requirements for life."
taste_description = "a mixture of thick, sweet, salty, salty and spicy flavours that all blend together to not be very nice at all"
reagent_state = LIQUID
diff --git a/code/modules/reagents/reagents/other_vr.dm b/code/modules/reagents/reagents/other_vr.dm
index 4140b57a48..85a52cbf7b 100644
--- a/code/modules/reagents/reagents/other_vr.dm
+++ b/code/modules/reagents/reagents/other_vr.dm
@@ -4,6 +4,7 @@
description = "A corruptive toxin produced by slimes. Turns the subject of the chemical into a Promethean."
reagent_state = LIQUID
color = "#13BC5E"
+ scannable = SCANNABLE_ADVANCED
supply_conversion_value = REFINERYEXPORT_VALUE_MASSINDUSTRY
industrial_use = REFINERYEXPORT_REASON_MATSCI
@@ -39,7 +40,7 @@
taste_description = "metallic"
reagent_state = LIQUID
color = "#333333"
- scannable = 1
+ scannable = SCANNABLE_BENEFICIAL
affects_robots = TRUE
wiki_flag = WIKI_SPOILER
@@ -61,6 +62,7 @@
description = "A historical fire suppressant. Originally believed to simply displace oxygen to starve fires, it actually interferes with the combustion reaction itself. Vastly superior to the cheap water-based extinguishers found on most NT vessels."
reagent_state = LIQUID
color = "#A6FAFF"
+ scannable = SCANNABLE_ADVANCED
taste_description = "the inside of a fire extinguisher"
supply_conversion_value = REFINERYEXPORT_VALUE_UNWANTED
industrial_use = REFINERYEXPORT_REASON_INDUSTRY
@@ -111,7 +113,7 @@
taste_description = "wiggly peanutbutter"
reagent_state = LIQUID
color = "#1d1d1d"
- scannable = 0
+ scannable = SCANNABLE_BENEFICIAL
metabolism = REM * 0.5
affects_robots = TRUE
supply_conversion_value = REFINERYEXPORT_VALUE_UNWANTED
@@ -142,6 +144,7 @@
reagent_state = LIQUID
color = "#E4EC2F"
metabolism = 2.50
+ scannable = SCANNABLE_ADVANCED
var/power = 9
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_PRECURSOR
diff --git a/code/modules/reagents/reagents/toxins.dm b/code/modules/reagents/reagents/toxins.dm
index e2ef14cd3c..3edd7b8645 100644
--- a/code/modules/reagents/reagents/toxins.dm
+++ b/code/modules/reagents/reagents/toxins.dm
@@ -10,6 +10,7 @@
color = "#CF3600"
metabolism = REM * 0.25 // 0.05 by default. Hopefully enough to get some help, or die horribly, whatever floats your boat
filtered_organs = list(O_LIVER, O_KIDNEYS)
+ scannable = SCANNABLE_DIFFICULT
var/strength = 4 // How much damage it deals per unit
var/skin_danger = 0.2 // The multiplier for how effective the toxin is when making skin contact.
supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED
@@ -54,8 +55,9 @@
/datum/reagent/toxin/amatoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
// Trojan horse. Waits until most of the toxin has gone through the body before dealing the bulk of it in one big strike.
- if(volume < max_dose * 0.2)
- M.adjustToxLoss(max_dose * strength * removed / (max_dose * 0.2))
+ if(volume < max_dose * 0.1)
+ M.adjustToxLoss(max_dose * strength) //Get hit all at once.
+ M.reagents.del_reagent(REAGENT_ID_AMATOXIN) //Remove the rest of ourselves.
/datum/reagent/toxin/carpotoxin
name = REAGENT_CARPOTOXIN
@@ -364,7 +366,7 @@
metabolism = REM
strength = 3
mrate_static = TRUE
- scannable = FALSE
+ scannable = SCANNABLE_SECRETIVE
supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED
industrial_use = REFINERYEXPORT_REASON_MEDSCI
@@ -374,11 +376,12 @@
return
if(!(M.status_flags & FAKEDEATH))
M.emote("deathgasp")
+ M.tod = stationtime2text()
+ M.timeofdeath = world.time
M.status_flags |= FAKEDEATH
M.adjustOxyLoss(1 * removed)
M.silent = max(M.silent, 10)
M.paralysis = max(M.paralysis, 10)
- M.tod = stationtime2text()
/datum/reagent/toxin/zombiepowder/Destroy()
if(holder && holder.my_atom && ismob(holder.my_atom))
@@ -394,7 +397,7 @@
color = "#666666"
metabolism = REM * 0.75
mrate_static = TRUE
- scannable = FALSE
+ scannable = SCANNABLE_SECRETIVE
supply_conversion_value = REFINERYEXPORT_VALUE_MASSINDUSTRY
industrial_use = REFINERYEXPORT_REASON_MEDSCI
@@ -403,10 +406,11 @@
return
if(!(M.status_flags & FAKEDEATH))
M.emote("deathgasp")
+ M.tod = stationtime2text()
+ M.timeofdeath = world.time
M.status_flags |= FAKEDEATH
M.silent = max(M.silent, 10)
M.paralysis = max(M.paralysis, 10)
- M.tod = stationtime2text()
if(prob(0.1))
M.visible_message("[M] wheezes.", "You wheeze sharply... it's cold.")
@@ -534,6 +538,7 @@
description = "Polytrinic acid is a an extremely corrosive chemical substance."
taste_description = "acid"
reagent_state = LIQUID
+ scannable = SCANNABLE_ADVANCED
color = "#8E18A9"
power = 10
meltdose = 4
@@ -546,6 +551,7 @@
description = "Some form of digestive slurry."
taste_description = "vomit"
reagent_state = LIQUID
+ scannable = SCANNABLE_ADVANCED
color = "#664330"
power = 2
meltdose = 30
@@ -619,6 +625,7 @@
/datum/reagent/lexorin
name = REAGENT_LEXORIN
id = REAGENT_ID_LEXORIN
+ scannable = SCANNABLE_DIFFICULT
description = "Lexorin temporarily stops respiration. Causes tissue damage."
taste_description = "acid"
reagent_state = LIQUID
@@ -644,6 +651,7 @@
/datum/reagent/mutagen
name = REAGENT_MUTAGEN
id = REAGENT_ID_MUTAGEN
+ scannable = SCANNABLE_ADVANCED
description = "Might cause unpredictable mutations. Keep away from children."
taste_description = "slime"
taste_mult = 0.9
@@ -711,6 +719,7 @@
/datum/reagent/slimejelly
name = REAGENT_SLIMEJELLY
id = REAGENT_ID_SLIMEJELLY
+ scannable = SCANNABLE_ADVANCED
description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL."
taste_description = "slime"
taste_mult = 1.3
@@ -739,6 +748,7 @@
/datum/reagent/soporific
name = REAGENT_STOXIN
id = REAGENT_ID_STOXIN
+ scannable = SCANNABLE_ADVANCED
description = "An effective hypnotic used to treat insomnia."
taste_description = "bitterness"
reagent_state = LIQUID
@@ -789,6 +799,7 @@
/datum/reagent/chloralhydrate
name = REAGENT_CHLORALHYDRATE
id = REAGENT_ID_CHLORALHYDRATE
+ scannable = SCANNABLE_ADVANCED
description = "A powerful sedative."
taste_description = "bitterness"
reagent_state = SOLID
@@ -843,6 +854,7 @@
/datum/reagent/chloralhydrate/beer2 //disguised as normal beer for use by emagged brobots
name = REAGENT_BEER2
id = REAGENT_ID_BEER2
+ scannable = SCANNABLE_SECRETIVE
description = "An alcoholic beverage made from malted grains, hops, yeast, and water. The fermentation appears to be incomplete." //If the players manage to analyze this, they deserve to know something is wrong.
taste_description = "beer"
reagent_state = LIQUID
@@ -859,6 +871,7 @@
id = REAGENT_ID_SEROTROTIUM
description = "A chemical compound that promotes concentrated production of the serotonin neurotransmitter in humans."
taste_description = "bitterness"
+ scannable = SCANNABLE_ADVANCED
reagent_state = LIQUID
color = "#202040"
metabolism = REM * 0.25
@@ -895,6 +908,7 @@
/datum/reagent/cryptobiolin
name = REAGENT_CRYPTOBIOLIN
id = REAGENT_ID_CRYPTOBIOLIN
+ scannable = SCANNABLE_ADVANCED
description = "Cryptobiolin causes confusion and dizzyness."
taste_description = "sourness"
reagent_state = LIQUID
@@ -920,6 +934,7 @@
/datum/reagent/impedrezene
name = REAGENT_IMPEDREZENE
id = REAGENT_ID_IMPEDREZENE
+ scannable = SCANNABLE_ADVANCED
description = "Impedrezene is a narcotic that impedes one's ability by slowing down the higher brain cell functions."
taste_description = "numbness"
reagent_state = LIQUID
@@ -943,6 +958,7 @@
/datum/reagent/mindbreaker
name = REAGENT_MINDBREAKER
id = REAGENT_ID_MINDBREAKER
+ scannable = SCANNABLE_DIFFICULT
description = "A powerful hallucinogen that causes immediate, prolonged hallucinations in its users."
taste_description = "sourness"
reagent_state = LIQUID
@@ -972,6 +988,7 @@
/datum/reagent/slimetoxin
name = REAGENT_MUTATIONTOXIN
id = REAGENT_ID_MUTATIONTOXIN
+ scannable = SCANNABLE_DIFFICULT
description = "A corruptive toxin produced by slimes."
taste_description = "sludge"
reagent_state = LIQUID
@@ -1001,6 +1018,7 @@
/datum/reagent/aslimetoxin
name = REAGENT_DOCILITYTOXIN
id = REAGENT_ID_DOCILITYTOXIN
+ scannable = SCANNABLE_DIFFICULT
description = "A corruptive toxin produced by slimes."
taste_description = "sludge"
reagent_state = LIQUID
@@ -1035,6 +1053,7 @@
/datum/reagent/shredding_nanites
name = REAGENT_SHREDDINGNANITES
id = REAGENT_ID_SHREDDINGNANITES
+ scannable = SCANNABLE_SECRETIVE
description = "Miniature medical robots that swiftly restore bodily damage. These ones seem to be malfunctioning."
taste_description = "metal"
reagent_state = SOLID
@@ -1052,6 +1071,7 @@
/datum/reagent/irradiated_nanites
name = REAGENT_IRRADIATEDNANITES
id = REAGENT_ID_IRRADIATEDNANITES
+ scannable = SCANNABLE_SECRETIVE
description = "Miniature medical robots that swiftly restore bodily damage. These ones seem to be malfunctioning."
taste_description = "metal"
reagent_state = SOLID
@@ -1069,6 +1089,7 @@
/datum/reagent/neurophage_nanites
name = REAGENT_NEUROPHAGENANITES
id = REAGENT_ID_NEUROPHAGENANITES
+ scannable = SCANNABLE_SECRETIVE
description = "Miniature medical robots that swiftly restore bodily damage. These ones seem to be completely hostile."
taste_description = "metal"
reagent_state = SOLID
@@ -1087,6 +1108,7 @@
/datum/reagent/salmonella
name = REAGENT_SALMONELLA
id = REAGENT_ID_SALMONELLA
+ scannable = SCANNABLE_ADVANCED
description = "A nasty bacteria found in spoiled food."
reagent_state = LIQUID
color = "#1E4600"
diff --git a/code/modules/reagents/reagents/virology.dm b/code/modules/reagents/reagents/virology.dm
index cfe06297dc..ccbd5e896d 100644
--- a/code/modules/reagents/reagents/virology.dm
+++ b/code/modules/reagents/reagents/virology.dm
@@ -3,6 +3,7 @@
id = REAGENT_ID_VACCINE
description = "Liquid vaccine against some type of virus."
color = "#C81040"
+ scannable = SCANNABLE_BENEFICIAL
taste_description = "antibodies"
supply_conversion_value = REFINERYEXPORT_VALUE_COMMON
industrial_use = REFINERYEXPORT_REASON_MEDSCI
diff --git a/code/modules/reagents/reagents/vore_ch.dm b/code/modules/reagents/reagents/vore_ch.dm
index ffbba0be6b..a1962c4881 100644
--- a/code/modules/reagents/reagents/vore_ch.dm
+++ b/code/modules/reagents/reagents/vore_ch.dm
@@ -5,6 +5,7 @@
description = "A frothy green liquid, for causing cellular-level hetrogenous structure merging."
reagent_state = LIQUID
color = "#10881A"
+ scannable = SCANNABLE_BENEFICIAL
overdose = REAGENTS_OVERDOSE
supply_conversion_value = REFINERYEXPORT_VALUE_RARE
industrial_use = REFINERYEXPORT_REASON_ILLDRUG
diff --git a/code/modules/reagents/reagents/vore_vr.dm b/code/modules/reagents/reagents/vore_vr.dm
index 0cb32177a3..883d1f657f 100644
--- a/code/modules/reagents/reagents/vore_vr.dm
+++ b/code/modules/reagents/reagents/vore_vr.dm
@@ -10,6 +10,7 @@
reagent_state = LIQUID
color = "#FFFF00" // rgb: 255, 255, 0
metabolism = 0.01
+ scannable = SCANNABLE_BENEFICIAL
mrate_static = TRUE
supply_conversion_value = REFINERYEXPORT_VALUE_GODTIER
industrial_use = REFINERYEXPORT_REASON_MEDSCI
@@ -22,6 +23,7 @@
/datum/reagent/microcillin
name = REAGENT_MICROCILLIN
id = REAGENT_ID_MICROCILLIN
+ scannable = SCANNABLE_BENEFICIAL
description = "Murky purple liquid."
reagent_state = LIQUID
color = "#800080"
@@ -39,6 +41,7 @@
/datum/reagent/normalcillin
name = REAGENT_NORMALCILLIN
id = REAGENT_ID_NORMALCILLIN
+ scannable = SCANNABLE_BENEFICIAL
description = "Translucent cyan liquid."
reagent_state = LIQUID
color = "#00FFFF"
@@ -58,6 +61,7 @@
/datum/reagent/sizeoxadone
name = REAGENT_SIZEOXADONE
id = REAGENT_ID_SIZEOXADONE
+ scannable = SCANNABLE_BENEFICIAL
description = "A volatile liquid used as a precursor to size-altering chemicals. Causes dizziness if taken unprocessed."
reagent_state = LIQUID
color = "#1E90FF"
@@ -77,6 +81,7 @@
/datum/reagent/ickypak
name = REAGENT_ICKYPAK
id = REAGENT_ID_ICKYPAK
+ scannable = SCANNABLE_BENEFICIAL
description = "A foul-smelling green liquid, for inducing muscle contractions to expel accidentally ingested things."
reagent_state = LIQUID
color = "#0E900E"
@@ -101,6 +106,7 @@
/datum/reagent/unsorbitol
name = REAGENT_UNSORBITOL
id = REAGENT_ID_UNSORBITOL
+ scannable = SCANNABLE_BENEFICIAL
description = "A frothy pink liquid, for causing cellular-level hetrogenous structure separation."
reagent_state = LIQUID
color = "#EF77E5"
@@ -134,6 +140,7 @@
/datum/reagent/amorphorovir
name = REAGENT_AMORPHOROVIR
id = REAGENT_ID_AMORPHOROVIR
+ scannable = SCANNABLE_BENEFICIAL
description = "A base medical concoction, capable of rapidly altering genetic and physical structure of the body. Requires extra processing to allow for a targeted transformation."
reagent_state = LIQUID
color = "#AAAAAA"
@@ -143,6 +150,7 @@
/datum/reagent/androrovir
name = REAGENT_ANDROROVIR
id = REAGENT_ID_ANDROROVIR
+ scannable = SCANNABLE_BENEFICIAL
description = "A medical concoction, capable of rapidly altering genetic and physical structure of the body. This one seems to realign the target's gender to be male."
reagent_state = LIQUID
color = "#00BBFF"
@@ -166,6 +174,7 @@
/datum/reagent/gynorovir
name = REAGENT_GYNOROVIR
id = REAGENT_ID_GYNOROVIR
+ scannable = SCANNABLE_BENEFICIAL
description = "A medical concoction, capable of rapidly altering genetic and physical structure of the body. This one seems to realign the target's gender to be female."
reagent_state = LIQUID
color = "#FF00AA"
@@ -189,6 +198,7 @@
/datum/reagent/androgynorovir
name = REAGENT_ANDROGYNOROVIR
id = REAGENT_ID_ANDROGYNOROVIR
+ scannable = SCANNABLE_BENEFICIAL
description = "A medical concoction, capable of rapidly altering genetic and physical structure of the body. This one seems to realign the target's gender to be mixed."
reagent_state = LIQUID
color = "#6600FF"
@@ -240,6 +250,7 @@
/datum/reagent/paralysis_toxin
name = REAGENT_PARALYSISTOXIN
id = REAGENT_ID_PARALYSISTOXIN
+ scannable = SCANNABLE_ADVANCED
description = "A potent toxin commonly found in a plethora of species. When exposed to the toxin, causes extreme, paralysis for a prolonged period, with only essential functions of the body being unhindered. Commonly used by covert operatives and used as a crowd control tool."
taste_description = "bitterness"
reagent_state = LIQUID
@@ -258,6 +269,7 @@
/datum/reagent/pain_enzyme
name = REAGENT_PAINENZYME
id = REAGENT_ID_PAINENZYME
+ scannable = SCANNABLE_ADVANCED
description = "An enzyme found in a variety of species. When exposed to the toxin, will cause severe, agonizing pain. The effects can last for hours depending on the dose. Only known cure is an equally strong painkiller or dialysis."
taste_description = "sourness"
reagent_state = LIQUID
@@ -277,6 +289,7 @@
/datum/reagent/aphrodisiac
name = REAGENT_APHRODISIAC
id = REAGENT_ID_APHRODISIAC
+ scannable = SCANNABLE_ADVANCED
description = "You so horny."
taste_description = "sweetness"
reagent_state = LIQUID
diff --git a/maps/redgate/fantasy_items.dm b/maps/redgate/fantasy_items.dm
index f51cf0e839..5e581f6ed9 100644
--- a/maps/redgate/fantasy_items.dm
+++ b/maps/redgate/fantasy_items.dm
@@ -2,7 +2,7 @@
/obj/item/healthanalyzer/scroll //reports all of the above, as well as name and quantity of nonmed reagents in stomach
name = "scroll of divination"
desc = "An unusual scroll that appears to report all of the details of a person's health when waved near them. Oddly, it seems to have a little metal chip up near the handles..."
- advscan = 3
+ advscan = SCANNABLE_SECRETIVE
origin_tech = list(TECH_MAGNET = 7, TECH_BIO = 8)
icon_state = "health_scroll"
diff --git a/modular_chomp/code/modules/reagents/reagents/medicine.dm b/modular_chomp/code/modules/reagents/reagents/medicine.dm
index 6f4a01e132..6250dda504 100644
--- a/modular_chomp/code/modules/reagents/reagents/medicine.dm
+++ b/modular_chomp/code/modules/reagents/reagents/medicine.dm
@@ -5,6 +5,7 @@
id = REAGENT_ID_AMORPHOROVIR
metabolism = 100 //set high enough that it does not process multiple times(delay implemented below)
description = "the bloods DNA in this seems aggressive"
+ scannable = SCANNABLE_BENEFICIAL
taste_description = "this shouldn't be here" //unobtainable ingame
color = "#7F0000"
var/gender_change = null //set the gender variable here so we can set it to others in varients
@@ -72,6 +73,7 @@
id = REAGENT_ID_CLEANSINGAGENT
description = "An agent that purges one's body of toxins."
reagent_state = LIQUID
+ scannable = SCANNABLE_ADVANCED
color = "#225722"
scannable = 1
overdose = REAGENTS_OVERDOSE
@@ -94,6 +96,7 @@
id = REAGENT_ID_PURIFYINGAGENT
description = "An agent that purges one's body of rads and toxins."
reagent_state = LIQUID
+ scannable = SCANNABLE_BENEFICIAL
color = "#225722"
scannable = 1
overdose = REAGENTS_OVERDOSE
@@ -116,6 +119,7 @@
id = REAGENT_ID_BURNCARD
description = "A more powerful variation of bicard that also burns the subject."
taste_description = "bitterness"
+ scannable = SCANNABLE_BENEFICIAL
taste_mult = 3
reagent_state = LIQUID
color = "#BF0000"
@@ -155,6 +159,7 @@
id = REAGENT_ID_FLAMECURE
description = "Used to rapidly clot internal hemorrhages by burning the wounded areas"
reagent_state = LIQUID
+ scannable = SCANNABLE_BENEFICIAL
color = "#4246C7"
overdose = REAGENTS_OVERDOSE * 0.5
scannable = 1
@@ -189,6 +194,7 @@
description = "An advancement of kelotane that scars and breaks apart the user's flesh to remove the burnt tissue."
taste_description = "bitterness"
reagent_state = LIQUID
+ scannable = SCANNABLE_BENEFICIAL
color = "#FF6600"
overdose = REAGENTS_OVERDOSE * 0.2
scannable = 1
@@ -210,6 +216,7 @@
description = "A strange chemical that will stablize bloodflow by burning the subject"
taste_description = "bitterness"
reagent_state = LIQUID
+ scannable = SCANNABLE_BENEFICIAL
color = "#00BFFF"
overdose = REAGENTS_OVERDOSE
scannable = 1
@@ -225,6 +232,7 @@
/datum/reagent/livingagent
name = REAGENT_LIVINGAGENT
id = REAGENT_ID_LIVINGAGENT
+ scannable = SCANNABLE_BENEFICIAL
description = "Fill the body with life, while making it more senstive to stimulus."
taste_description = "bitterness"
reagent_state = LIQUID
@@ -238,7 +246,6 @@
..()
M.druggy = max(M.druggy, 5)
M.Confuse(5)
- //YW ADDITIONS END
/datum/reagent/livingagent/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien != IS_DIONA)
@@ -254,6 +261,7 @@
name = REAGENT_PERFORMANCEPEAKER
id = REAGENT_ID_PERFORMANCEPEAKER
description = "A chemical created to bring a body to peak condition except it's highly toxic"
+ scannable = SCANNABLE_ADVANCED
taste_description = "bitterness"
reagent_state = LIQUID
color = "#006666"
@@ -278,6 +286,7 @@
description = "An experimental drug that solely works upon dead bodies"
taste_description = "ash"
reagent_state = LIQUID
+ scannable = SCANNABLE_ADVANCED
color = "#666699"
scannable = 1
overdose = REAGENTS_OVERDOSE * 2
@@ -299,6 +308,7 @@
id = REAGENT_ID_QUADCORD
description = "An experimental drug that is meant to further enhance tricord"
taste_description = "bitterness"
+ scannable = SCANNABLE_BENEFICIAL
reagent_state = LIQUID
color = "#FF3399"
scannable = 1
@@ -324,6 +334,7 @@
description = "An experimental that removes many ailments, such as poison and stiffening of muscles via frost"
taste_description = "bitterness"
reagent_state = LIQUID
+ scannable = SCANNABLE_BENEFICIAL
color = "#660066"
scannable = 1
overdose = REAGENTS_OVERDOSE * 0.5
@@ -352,6 +363,7 @@
description = "An experimental drug that mimics rapid regeneration seen in squishy creatures."
taste_description = "sweet"
reagent_state = LIQUID
+ scannable = SCANNABLE_BENEFICIAL
color = "#00CCFF"
scannable = 1
overdose = REAGENTS_OVERDOSE * 0.5
@@ -393,6 +405,7 @@
description = "An experimental chem that will bring those back from the brink, with severe side effects"
taste_description = "ash"
reagent_state = LIQUID
+ scannable = SCANNABLE_BENEFICIAL
color = "#fcac00"
scannable = 1
overdose = REAGENTS_OVERDOSE
@@ -410,6 +423,7 @@
description = "A desiccant. Can be used to dry things."
taste_description = "dryness"
reagent_state = LIQUID
+ scannable = SCANNABLE_ADVANCED
color = "#A70FFF"
scannable = 1
overdose = REAGENTS_OVERDOSE