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/A200[infection]:[mi][mech][i_dead]" + else if(fake_death && istype(i, /obj/item/organ/internal/lungs)) + dat += "[i.name]N/A25[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