medicine.dm

This commit is contained in:
Kashargul
2024-12-07 02:10:10 +01:00
parent a12a4d2d5e
commit 1d8d5b34b5
94 changed files with 881 additions and 789 deletions
+9 -9
View File
@@ -31,11 +31,11 @@
var/injection_amount = 15 //How much reagent do we inject at a time?
var/heal_threshold = 10 //Start healing when they have this much damage in a category
var/use_beaker = 0 //Use reagents in beaker instead of default treatment agents.
var/treatment_brute = "tricordrazine"
var/treatment_oxy = "tricordrazine"
var/treatment_fire = "tricordrazine"
var/treatment_tox = "tricordrazine"
var/treatment_virus = "spaceacillin"
var/treatment_brute = REAGENT_ID_TRICORDRAZINE
var/treatment_oxy = REAGENT_ID_TRICORDRAZINE
var/treatment_fire = REAGENT_ID_TRICORDRAZINE
var/treatment_tox = REAGENT_ID_TRICORDRAZINE
var/treatment_virus = REAGENT_ID_SPACEACILLIN
var/treatment_emag = REAGENT_ID_TOXIN
var/declare_treatment = 0 //When attempting to treat a patient, should it notify everyone wearing medhuds?
@@ -52,10 +52,10 @@
name = "\improper Mysterious Medibot"
desc = "International Medibot of mystery."
skin = "bezerk"
treatment_brute = "bicaridine"
treatment_fire = "dermaline"
treatment_oxy = "dexalin"
treatment_tox = "anti_toxin"
treatment_brute = REAGENT_ID_BICARIDINE
treatment_fire = REAGENT_ID_DERMALINE
treatment_oxy = REAGENT_ID_DEXALIN
treatment_tox = REAGENT_ID_ANTITOXIN
/mob/living/bot/medbot/handleIdle()
if(is_tipped) // Don't handle idle things if we're incapacitated!
@@ -82,8 +82,8 @@
// ========
/datum/medical_effect/headache
name = "Headache"
triggers = list("cryoxadone" = 10, "bicaridine" = 15, "tricordrazine" = 15)
cures = list("alkysine", "tramadol", "paracetamol", "oxycodone")
triggers = list(REAGENT_ID_CRYOXADONE = 10, REAGENT_ID_BICARIDINE = 15, REAGENT_ID_TRICORDRAZINE = 15)
cures = list(REAGENT_ID_ALKYSINE, REAGENT_ID_TRAMADOL, REAGENT_ID_PARACETAMOL, REAGENT_ID_OXYCODONE)
cure_message = "Your head stops throbbing..."
/datum/medical_effect/headache/on_life(mob/living/carbon/human/H, strength)
@@ -99,8 +99,8 @@
// ===========
/datum/medical_effect/bad_stomach
name = "Bad Stomach"
triggers = list("kelotane" = 30, "dermaline" = 15)
cures = list("anti_toxin")
triggers = list(REAGENT_ID_KELOTANE = 30, REAGENT_ID_DERMALINE = 15)
cures = list(REAGENT_ID_ANTITOXIN)
cure_message = "Your stomach feels a little better now..."
/datum/medical_effect/bad_stomach/on_life(mob/living/carbon/human/H, strength)
@@ -116,8 +116,8 @@
// ======
/datum/medical_effect/cramps
name = "Cramps"
triggers = list("anti_toxin" = 30, "tramadol" = 15)
cures = list("inaprovaline")
triggers = list(REAGENT_ID_ANTITOXIN = 30, REAGENT_ID_TRAMADOL = 15)
cures = list(REAGENT_ID_INAPROVALINE)
cure_message = "The cramps let up..."
/datum/medical_effect/cramps/on_life(mob/living/carbon/human/H, strength)
@@ -135,7 +135,7 @@
/datum/medical_effect/itch
name = "Itch"
triggers = list(REAGENT_ID_BLISS = 10)
cures = list("inaprovaline")
cures = list(REAGENT_ID_INAPROVALINE)
cure_message = "The itching stops..."
/datum/medical_effect/itch/on_life(mob/living/carbon/human/H, strength)
@@ -82,8 +82,8 @@
// ========
/datum/medical_effect/headache
name = "Headache"
triggers = list("cryoxadone" = 10, "bicaridine" = 15, "tricordrazine" = 15)
cures = list("alkysine", "tramadol", "paracetamol", "oxycodone")
triggers = list(REAGENT_ID_CRYOXADONE = 10, REAGENT_ID_BICARIDINE = 15, REAGENT_ID_TRICORDRAZINE = 15)
cures = list(REAGENT_ID_ALKYSINE, REAGENT_ID_TRAMADOL, REAGENT_ID_PARACETAMOL, REAGENT_ID_OXYCODONE)
cure_message = "Your head stops throbbing..."
/datum/medical_effect/headache/on_life(mob/living/carbon/human/H, strength)
@@ -99,8 +99,8 @@
// ===========
/datum/medical_effect/bad_stomach
name = "Bad Stomach"
triggers = list("kelotane" = 30, "dermaline" = 15)
cures = list("anti_toxin")
triggers = list(REAGENT_ID_KELOTANE = 30, REAGENT_ID_DERMALINE = 15)
cures = list(REAGENT_ID_ANTITOXIN)
cure_message = "Your stomach feels a little better now..."
/datum/medical_effect/bad_stomach/on_life(mob/living/carbon/human/H, strength)
@@ -116,8 +116,8 @@
// ======
/datum/medical_effect/cramps
name = "Cramps"
triggers = list("anti_toxin" = 30, "tramadol" = 15)
cures = list("inaprovaline")
triggers = list(REAGENT_ID_ANTITOXIN = 30, REAGENT_ID_TRAMADOL = 15)
cures = list(REAGENT_ID_INAPROVALINE)
cure_message = "The cramps let up..."
/datum/medical_effect/cramps/on_life(mob/living/carbon/human/H, strength)
@@ -135,7 +135,7 @@
/datum/medical_effect/itch
name = "Itch"
triggers = list(REAGENT_ID_BLISS = 10)
cures = list("inaprovaline")
cures = list(REAGENT_ID_INAPROVALINE)
cure_message = "The itching stops..."
/datum/medical_effect/itch/on_life(mob/living/carbon/human/H, strength)
@@ -203,7 +203,7 @@
name = "MediHound hypospray"
desc = "An advanced chemical synthesizer and injection system utilizing carrier's reserves, designed for heavy-duty medical equipment."
charge_cost = 10
reagent_ids = list("inaprovaline", "dexalin", "bicaridine", "kelotane", "anti_toxin", "spaceacillin", "paracetamol")
reagent_ids = list(REAGENT_ID_INAPROVALINE, REAGENT_ID_DEXALIN, REAGENT_ID_BICARIDINE, REAGENT_ID_KELOTANE, REAGENT_ID_ANTITOXIN, REAGENT_ID_SPACEACILLIN, REAGENT_ID_PARACETAMOL)
var/datum/matter_synth/water = null
/obj/item/reagent_containers/borghypo/hound/process() //Recharges in smaller steps and uses the water reserves as well.
@@ -220,12 +220,12 @@
/obj/item/reagent_containers/borghypo/hound/lost
name = "Hound hypospray"
desc = "An advanced chemical synthesizer and injection system utilizing carrier's reserves."
reagent_ids = list("tricordrazine", "inaprovaline", "bicaridine", "dexalin", "anti_toxin", "tramadol", "spaceacillin")
reagent_ids = list(REAGENT_ID_TRICORDRAZINE, REAGENT_ID_INAPROVALINE, REAGENT_ID_BICARIDINE, REAGENT_ID_DEXALIN, REAGENT_ID_ANTITOXIN, REAGENT_ID_TRAMADOL, REAGENT_ID_SPACEACILLIN)
/obj/item/reagent_containers/borghypo/hound/trauma
name = "Hound hypospray"
desc = "An advanced chemical synthesizer and injection system utilizing carrier's reserves."
reagent_ids = list("tricordrazine", "inaprovaline", "oxycodone", "dexalin" ,"spaceacillin")
reagent_ids = list(REAGENT_ID_TRICORDRAZINE, REAGENT_ID_INAPROVALINE, REAGENT_ID_OXYCODONE, REAGENT_ID_DEXALIN ,REAGENT_ID_SPACEACILLIN)
//Tongue stuff
@@ -13,7 +13,7 @@
var/min_health = -100
var/cleaning = 0
var/patient_laststat = null
var/list/injection_chems = list("inaprovaline", "bicaridine", "kelotane", "anti_toxin", "dexalin", "tricordrazine", "spaceacillin", "tramadol") //The borg is able to heal every damage type. As a nerf, they use 750 charge per injection.
var/list/injection_chems = list(REAGENT_ID_INAPROVALINE, REAGENT_ID_BICARIDINE, REAGENT_ID_KELOTANE, REAGENT_ID_ANTITOXIN, REAGENT_ID_DEXALIN, REAGENT_ID_TRICORDRAZINE, REAGENT_ID_SPACEACILLIN, REAGENT_ID_TRAMADOL) //The borg is able to heal every damage type. As a nerf, they use 750 charge per injection.
var/eject_port = "ingestion"
var/list/items_preserved = list()
var/UI_open = FALSE
@@ -449,7 +449,7 @@
return
if(patient && !(patient.stat & DEAD)) //What is bitwise NOT? ... Thought it was tilde.
if(href_list["inject"] == "inaprovaline" || patient.health > min_health)
if(href_list["inject"] == REAGENT_ID_INAPROVALINE || patient.health > min_health)
inject_chem(usr, href_list["inject"])
else
to_chat(usr, span_notice("ERROR: Subject is not in stable condition for injections."))
@@ -462,7 +462,7 @@
/obj/item/dogborg/sleeper/proc/inject_chem(mob/user, chem)
if(patient && patient.reagents)
if(chem in injection_chems + "inaprovaline")
if(chem in injection_chems + REAGENT_ID_INAPROVALINE)
if(hound.cell.charge < 800) //This is so borgs don't kill themselves with it.
to_chat(hound, span_notice("You don't have enough power to synthesize fluids."))
return
@@ -748,7 +748,7 @@
name = "Supply Storage"
desc = "A mounted survival unit with fuel processor, helpful with both deliveries and assisting injured miners."
icon_state = "sleeperc"
injection_chems = list("glucose","inaprovaline","tricordrazine")
injection_chems = list("glucose",REAGENT_ID_INAPROVALINE,REAGENT_ID_TRICORDRAZINE)
max_item_count = 10
recycles = FALSE
stabilizer = TRUE
@@ -775,19 +775,19 @@
name = "Emergency Storage"
desc = "A mounted 'emergency containment cell'."
icon_state = "sleeperert"
injection_chems = list("inaprovaline", "tramadol") // short list
injection_chems = list(REAGENT_ID_INAPROVALINE, REAGENT_ID_TRAMADOL) // short list
/obj/item/dogborg/sleeper/trauma //Trauma borg belly
name = "Recovery Belly"
desc = "A downgraded model of the sleeper belly, intended primarily for post-surgery recovery."
icon_state = "sleeper"
injection_chems = list("inaprovaline", "dexalin", "tricordrazine", "spaceacillin", "oxycodone")
injection_chems = list(REAGENT_ID_INAPROVALINE, REAGENT_ID_DEXALIN, REAGENT_ID_TRICORDRAZINE, REAGENT_ID_SPACEACILLIN, REAGENT_ID_OXYCODONE)
/obj/item/dogborg/sleeper/lost
name = "Multipurpose Belly"
desc = "A multipurpose belly, capable of functioning as both sleeper and processor."
icon_state = "sleeperlost"
injection_chems = list("tricordrazine", "bicaridine", "dexalin", "anti_toxin", "tramadol", "spaceacillin")
injection_chems = list(REAGENT_ID_TRICORDRAZINE, REAGENT_ID_BICARIDINE, REAGENT_ID_DEXALIN, REAGENT_ID_ANTITOXIN, REAGENT_ID_TRAMADOL, REAGENT_ID_SPACEACILLIN)
compactor = TRUE
max_item_count = 25
stabilizer = TRUE
@@ -797,7 +797,7 @@
name = "Combat Triage Belly"
desc = "A mounted sleeper that stabilizes patients and can inject reagents in the borg's reserves. This one is for more extreme combat scenarios."
icon_state = "sleepersyndiemed"
injection_chems = list("healing_nanites", "hyperzine", "tramadol", "oxycodone", "spaceacillin", "peridaxon", "osteodaxon", "myelamine", REAGENT_ID_SYNTHBLOOD)
injection_chems = list(REAGENT_ID_HEALINGNANITES, REAGENT_ID_HYPERZINE, REAGENT_ID_TRAMADOL, REAGENT_ID_OXYCODONE, REAGENT_ID_SPACEACILLIN, REAGENT_ID_PERIDAXON, REAGENT_ID_OSTEODAXON, REAGENT_ID_MYELAMINE, REAGENT_ID_SYNTHBLOOD)
digest_multiplier = 2
/obj/item/dogborg/sleeper/K9/syndie
@@ -1437,7 +1437,7 @@
water_state = "enzyme_shallow"
under_state = "flesh_floor"
reagent_type = "Sulphuric acid" //why not
reagent_type = REAGENT_ID_SACID //why not
outdoors = FALSE
var/mob/living/simple_mob/vore/overmap/stardog/linked_mob
var/mobstuff = TRUE //if false, we don't care about dogs, and that's terrible
@@ -218,7 +218,7 @@
if(chemicals < 50)
to_chat(src, span_warning("You don't have enough chemicals!"))
var/chem = tgui_input_list(usr, "Select a chemical to secrete.", "Chemicals", list("alkysine","bicaridine","hyperzine","tramadol"))
var/chem = tgui_input_list(usr, "Select a chemical to secrete.", "Chemicals", list(REAGENT_ID_ALKYSINE,REAGENT_ID_BICARIDINE,REAGENT_ID_HYPERZINE,REAGENT_ID_TRAMADOL))
if(!chem || chemicals < 50 || !host || controlling || !src || stat) //Sanity check.
return
@@ -49,9 +49,9 @@
var/list/bodypart_targets = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_TORSO,BP_GROIN,BP_HEAD)
var/infest_target = BP_TORSO // The currently chosen bodypart to infest.
var/mob/living/carbon/host // Our humble host.
var/list/produceable_chemicals = list("inaprovaline","anti_toxin","alkysine","bicaridine","tramadol","kelotane","leporazine",REAGENT_ID_IRON,REAGENT_ID_PHORON,REAGENT_ID_CONDENSEDCAPSAICINV,"frostoil")
var/list/produceable_chemicals = list(REAGENT_ID_INAPROVALINE,REAGENT_ID_ANTITOXIN,REAGENT_ID_ALKYSINE,REAGENT_ID_BICARIDINE,REAGENT_ID_TRAMADOL,REAGENT_ID_KELOTANE,REAGENT_ID_LEPORAZINE,REAGENT_ID_IRON,REAGENT_ID_PHORON,REAGENT_ID_CONDENSEDCAPSAICINV,"frostoil")
var/randomized_reagent = REAGENT_ID_IRON // The reagent chosen at random to be produced, if there's no one piloting the worm.
var/passive_reagent = "paracetamol" // Reagent passively produced by the leech. Should usually be a painkiller.
var/passive_reagent = REAGENT_ID_PARACETAMOL // Reagent passively produced by the leech. Should usually be a painkiller.
var/feeding_delay = 30 SECONDS // How long do we have to wait to bite our host's organs?
var/last_feeding = 0
@@ -159,7 +159,7 @@
ai_holder.hostile = FALSE
ai_holder.lose_target()
alpha = 5
if(host.reagents.has_reagent("cordradaxon") && !docile) // Overwhelms the leech with food.
if(host.reagents.has_reagent(REAGENT_ID_CORDRADAXON) && !docile) // Overwhelms the leech with food.
var/message = "We feel the rush of cardiac pluripotent cells in your host's blood, lulling us into docility."
to_chat(src, span_warning(message))
docile = TRUE
@@ -178,23 +178,23 @@
if(!docile && ishuman(host) && chemicals < max_chemicals)
var/mob/living/carbon/human/H = host
H.remove_blood(1)
if(!H.reagents.has_reagent("inaprovaline"))
H.reagents.add_reagent("inaprovaline", 1)
if(!H.reagents.has_reagent(REAGENT_ID_INAPROVALINE))
H.reagents.add_reagent(REAGENT_ID_INAPROVALINE, 1)
chemicals += 2
if(!client && !docile) // Automatic 'AI' to manage damage levels.
if(host.getBruteLoss() >= 30 && chemicals > 50)
host.reagents.add_reagent("bicaridine", 5)
host.reagents.add_reagent(REAGENT_ID_BICARIDINE, 5)
chemicals -= 30
if(host.getToxLoss() >= 30 && chemicals > 50)
var/randomchem = pickweight(list("tramadol" = 7, "anti_toxin" = 15, "frostoil" = 3))
var/randomchem = pickweight(list(REAGENT_ID_TRAMADOL = 7, REAGENT_ID_ANTITOXIN = 15, "frostoil" = 3))
host.reagents.add_reagent(randomchem, 5)
chemicals -= 50
if(host.getFireLoss() >= 30 && chemicals > 50)
host.reagents.add_reagent("kelotane", 5)
host.reagents.add_reagent("leporazine", 2)
host.reagents.add_reagent(REAGENT_ID_KELOTANE, 5)
host.reagents.add_reagent(REAGENT_ID_LEPORAZINE, 2)
chemicals -= 50
if(host.getOxyLoss() >= 30 && chemicals > 50)
@@ -202,8 +202,8 @@
chemicals -= 40
if(host.getBrainLoss() >= 10 && chemicals > 100)
host.reagents.add_reagent("alkysine", 5)
host.reagents.add_reagent("tramadol", 3)
host.reagents.add_reagent(REAGENT_ID_ALKYSINE, 5)
host.reagents.add_reagent(REAGENT_ID_TRAMADOL, 3)
chemicals -= 100
if(prob(30) && chemicals > 50)
@@ -1007,7 +1007,7 @@ I think I covered everything.
//Alternatively bully a coder (me) to make a unique digest_mode for mob healbellies that prevents death, or something.
if(istype(A, /mob/living/carbon/human))
var/mob/living/carbon/human/P = L
var/list/to_inject = list("myelamine","osteodaxon","spaceacillin","peridaxon", REAGENT_ID_IRON, "hyronalin")
var/list/to_inject = list(REAGENT_ID_MYELAMINE,REAGENT_ID_OSTEODAXON,REAGENT_ID_SPACEACILLIN,REAGENT_ID_PERIDAXON, REAGENT_ID_IRON, REAGENT_ID_HYRONALIN)
//Lets not OD them...
for(var/RG in to_inject)
if(!P.reagents.has_reagent(RG))