mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-22 20:43:10 +01:00
Cryonics Additions + IV Bag Stuff (#18415)
### Summary: This PR fleshes out cryonics, both inside a cryotube and outside of a cryotube, and gives a pharmacist a lot more to do during those high energy rounds as they will be required to prepare and oversee any cryonic mixes. Lots of ways you can go about doing with the biggest reward being brain regeneration that bypasses oxygenation requirements, at the cost of significant downsides if done improperly. This generally empowers pharmacists and physicians and offers non-surgical treatment alternatives, though often incurs a penalty or takes a little longer than surgical treatment, so it doesn't make surgeons redundant. This list'll be exhaustive so medical players aren't left in the dark and can just refer to this while a wiki update is worked on, instead of digging through code. **Changes to Stasis/Cryotubes:** - Stasis at temperates between 120K and 200K has been reduced to between 5 and 10, as opposed to 10 and 20. This means chemicals still have a good chance of metabolising if you set a cryotube to above ~140K. Cryotubes will still achieve good stasis if you cool below 120K - upgraded stockparts from the workshop/R&D will help with this. - (Bugfix) IPCs will not longer be knocked unconscious if they enter an active cryotube. **Misc. Reagent Additions/Tweaks:** - Bicaridine now only requires 30u in the blood to begin attempting to repair arterial bleeds, as opposed to 50u. - Adds a Blood Thinning chemical effect. This prevents Coagzolug's blood clotting effect from working and works in the opposite way - increasing how much blood you lose per blood loss tick. Fluvectionem and Synaptizine apply Blood Thinning at a strength of 25, translating to 25% faster blood loss. **Cryonic Chemicals:** - Cryoxadone and Clonexadone both overdose at 5u. **_This is not a problem when using a cryotube due to how cryotubes administer reagents._** Overdosing either results in genetic damage and severe eye damage. - Cryoxadone and Clonexadone's organ healing capabilities have been significantly nerfed. The organ healing is still noticable and useful for pharmacist/surgeonless rounds; they cannot heal the brain though. - Cryosurfactant has been renamed to Cryosilicate, mimicking Pyrosilicate - the recipe now uses silicate instead of surfactant. - Cryosilicate and Pyrosilicate now have an effect when used in the body: cryosilicate will supercool a patient; pyrosilicate will chemically incinerate someone. Leporazine will inhibit these functions. - Bicaridine will repair arterial bleeds when used in cryogenic conditions. - Kelotane will repair disfigurement when used in cryogenic conditions. - Peridaxon 2x effective in cryogenic conditions. Peridaxon can denecrotise livers and kidneys in extracool cryogenic conditions - it cannot denecrotise other organs. Using peridaxon in cryogenic conditions will result in benign tumour growth (see below). - Red Nightshade can repair bone breaks in cryogenic conditions. It will still put a patient into a berserk state. - Cataleptinol - see below. **Cataleptinol Rework:** Cataleptinol has been reworked from the ground up and is where pharmacist's will be able to shine by making fancy cryotube beaker mixers or cryonic mixtures for use in IV stands. - The new recipe is 2 parts Alkysine, 0.5 parts Phoron, 1 part Clonexadone and a 5u Cryosilicate catalyst. This translates to: 120u Alkysine + 60u Clonexadone + 30u Phoron w/ 5u Cryosilicate = 60u (1 bottle) of Cataleptinol - expensive and lots of tricky precursors, leaves enough left over to make a 2nd bottle without having to remake all of the precursors. - **In cryogenic conditions**, Cataleptinol will restore 7.5% brain activity per metabolisation tick. This _bypasses the 85% oxygenation requirement_, at the cost of hallucinations, blood thinning and liver damage. The trade is roughly 40% brain activity (assuming nothing is causing brain damage) for total liver failure. - **Outside of cryogenic conditions**, Cataleptinol becomes a lot less reliable and a lot more dangerous to use, with only a 75% chance of restoring 2% brain activity per metabolisation tick. It will still bypass oxygenation requirements, making it useful during _**severe emergencies**_, at the cost of inducing painshock in addition to the above hallucinations, blood thinning and liver damage. The trade is roughly 25% brain activity (assuming nothing is causing brain damage) for total liver failure. - Cataleptinol _**overdoses at 3u**_ and has a fast metabolisation of 0.6u/tick - this makes it hard to dose without using an IV drip. If you overdose Cataleptinol by using another method of administration, then the patient's liver will crash, brain regeneration undone and the patient will have severe seizures resulting in more pain. Using Cataleptinol outside of cryogenic conditions **is high risk and only potentially high reward**, but it could buy a couple more minutes. **Tumours:** - Adds Benign Tumours. Benign tumours simply drain nutrition and cause frequent pain; they do not spread or affect nearby organs. - Adds Malignant Tumours. Malignant tumours will begin by draining nutrition then effecting symptoms based on the tumour's location (chest tumours -> coughing, gasping, chest pain; brain tumours -> disorientation, memory loss; abdominal -> vomiting, abdominal pain; anywhere else -> lethargy). In the later stages, malignant tumours will begin to damage the organs they are close to, then will eventually enter the circulatory _~~and lymphatic~~_ system and spawn more malignant tumours in other parts of the body. - Peridaxon will result in benign tumour growth when overdosed or used in cryogenic conditions. - Genetic damage will result in malignant tumour growth. - Ryetalyn is the anti-tumour drug and will put both benign and malignant tumours into recession. You can also surgically intervene and excise tumours as you would k'ois mycosis or fluke parasites. - You cannot have more than 3 of any tumour - things won't get too out of hand. **IV Bag Stuff:** - Adds 2 labels for IV bags: Cryonics Mixture, denoted by a CR; Other Mixture, denoted by an M. - Renames `blood packs` to `IV bags` and changes their formatting. What was `blood pack O+` will now appear as `IV bag - O+ Blood`; `blood pack Saline Plus` -> `IV bag - Saline Plus`. **Misc.:** - Only 20 genetic degradation on a limb is required to deform it instead of 30. This should make it slightly more common, as 30 is a large number to reach when this number is calculated per limb. - Seizures can be given variable strengths. - (Bugfix) Coolant tanks no longer just set a room's temperature to 0K when destroyed. The amount it cools a room scales with the amount of coolant still in the tank but cannot go below 173K/-100°C. - Cryocells now have stockparts and can be upgraded/deconstructed.
This commit is contained in:
@@ -92,7 +92,7 @@ STOCK_ITEM_UNCOMMON(chempack, 5)
|
||||
var/list/exclusion = list(/singleton/reagent/drink, /singleton/reagent, /singleton/reagent/adminordrazine, /singleton/reagent/polysomnine/beer2, /singleton/reagent/azoth, /singleton/reagent/elixir,\
|
||||
/singleton/reagent/liquid_fire, /singleton/reagent/philosopher_stone, /singleton/reagent/toxin/undead, /singleton/reagent/love_potion, /singleton/reagent/shapesand, /singleton/reagent/usolve,\
|
||||
/singleton/reagent/sglue, /singleton/reagent/black_matter, /singleton/reagent/drugs/cocaine, /singleton/reagent/drugs/raskara_dust, /singleton/reagent/drugs/heroin, /singleton/reagent/drugs/joy, /singleton/reagent/toxin/stimm, /singleton/reagent/drugs/impedrezene, /singleton/reagent/bottle_lightning, /singleton/reagent/toxin/hylemnomil, /singleton/reagent/toxin/nanites, /singleton/reagent/nitroglycerin,
|
||||
/singleton/reagent/aslimetoxin, /singleton/reagent/sanasomnum, /singleton/reagent/rezadone, /singleton/reagent/kois/black, /singleton/reagent/toxin/carpotoxin)
|
||||
/singleton/reagent/aslimetoxin, /singleton/reagent/sanasomnum, /singleton/reagent/rezadone, /singleton/reagent/kois/black, /singleton/reagent/toxin/carpotoxin, /singleton/reagent/toxin/malignant_tumour_cells)
|
||||
chems -= exclusion
|
||||
for (var/i in 1 to rand(2, 4))
|
||||
var/obj/item/reagent_containers/chem_disp_cartridge/C = new /obj/item/reagent_containers/chem_disp_cartridge(L)
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
new /datum/stack_recipe("plastic rack", /obj/structure/table/rack, BUILD_AMT, time = 5, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("plastic crate", /obj/structure/closet/crate/plastic, BUILD_AMT, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("plastic bag", /obj/item/storage/bag/plasticbag, 3, on_floor = 1),
|
||||
new /datum/stack_recipe("blood pack", /obj/item/reagent_containers/blood/empty, 4, on_floor = 0),
|
||||
new /datum/stack_recipe("IV bag", /obj/item/reagent_containers/blood/empty, 4, on_floor = 0),
|
||||
new /datum/stack_recipe("reagent dispenser cartridge (large)", /obj/item/reagent_containers/chem_disp_cartridge, 5, on_floor=0), // 500u
|
||||
new /datum/stack_recipe("reagent dispenser cartridge (med)", /obj/item/reagent_containers/chem_disp_cartridge/medium, 3, on_floor=0), // 250u
|
||||
new /datum/stack_recipe("reagent dispenser cartridge (small)", /obj/item/reagent_containers/chem_disp_cartridge/small, 1, on_floor=0), // 100u
|
||||
|
||||
@@ -254,13 +254,13 @@
|
||||
return 0
|
||||
else if(bodytemperature > species.cold_level_2)
|
||||
. = 5 * (1 - (bodytemperature - species.cold_level_2) / (species.cold_level_1 - species.cold_level_2))
|
||||
. = max(2, .)
|
||||
. = max(2, .) //stasis factor range: 2 to 5 after rounding
|
||||
else if(bodytemperature > species.cold_level_3)
|
||||
. = 20 * (1 - (bodytemperature - species.cold_level_3) / (species.cold_level_2 - species.cold_level_3))
|
||||
. = max(5, .)
|
||||
. = 11 * (1 - (bodytemperature - species.cold_level_3) / (species.cold_level_2 - species.cold_level_3))
|
||||
. = max(5, .) //stasis factor range: 5 to 10 after rounding. we still want chemicals to metabolise at a bearable speed for those sick pharmacy beaker mixes.
|
||||
else
|
||||
. = 80 * (1 - bodytemperature / species.cold_level_3)
|
||||
. = max(20, .)
|
||||
. = max(20, .) //stasis factor range: 20 to 80 after rounding. irl cryonics ''achieves full stasis'' in bodies at 80K.
|
||||
if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell))
|
||||
var/obj/machinery/atmospherics/unary/cryo_cell/cryo = loc
|
||||
if(cryo.current_stasis_mult)
|
||||
|
||||
@@ -970,12 +970,12 @@ default behaviour is:
|
||||
/mob/living/proc/get_resist_power()
|
||||
return 1
|
||||
|
||||
/mob/living/proc/seizure()
|
||||
/mob/living/proc/seizure(var/severity_multiplier = 1)
|
||||
if(!paralysis && stat == CONSCIOUS)
|
||||
visible_message("<span class='danger'>\The [src] starts having a seizure!</span>")
|
||||
Paralyse(rand(16,24))
|
||||
make_jittery(rand(150,200))
|
||||
adjustHalLoss(rand(50,60))
|
||||
visible_message(SPAN_HIGHDANGER("\The [src] starts having a seizure!"))
|
||||
Paralyse(24*severity_multiplier)
|
||||
make_jittery(200*severity_multiplier)
|
||||
adjustHalLoss(60*severity_multiplier)
|
||||
|
||||
/mob/living/proc/InStasis()
|
||||
return FALSE
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
max_damage = 45
|
||||
min_broken_damage = 25
|
||||
relative_size = 5
|
||||
toxin_type = CE_OCULOTOXIC
|
||||
var/list/eye_colour = list(0,0,0)
|
||||
var/singular_name = "eye"
|
||||
|
||||
|
||||
@@ -148,8 +148,10 @@
|
||||
if(temp.status & ORGAN_ARTERY_CUT)
|
||||
var/bleed_amount = FLOOR((owner.vessel.total_volume / (temp.applied_pressure || !open_wound ? 450 : 250)) * temp.arterial_bleed_severity, 1)
|
||||
if(bleed_amount)
|
||||
if(CE_BLOODCLOT in owner.chem_effects)
|
||||
if((CE_BLOODCLOT in owner.chem_effects) && !(owner.chem_effects[CE_BLOODTHIN]))
|
||||
bleed_amount *= 0.8 // won't do much, but it'll help
|
||||
if(CE_BLOODTHIN in owner.chem_effects)
|
||||
bleed_amount *= 1+(owner.chem_effects[CE_BLOODTHIN]/100)
|
||||
if(open_wound)
|
||||
blood_max += bleed_amount
|
||||
do_spray += "[temp.name]"
|
||||
|
||||
@@ -1526,7 +1526,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
if(genetic_degradation <= 30)
|
||||
if(status & ORGAN_MUTATED)
|
||||
unmutate()
|
||||
to_chat(src, "<span class = 'notice'>Your [name] is shaped normally again.</span>")
|
||||
to_chat(src, SPAN_NOTICE("Your [name] is shaped normally again."))
|
||||
return -(genetic_degradation - last_gene_dam)
|
||||
|
||||
/obj/item/organ/external/proc/add_genetic_damage(var/amount)
|
||||
@@ -1536,10 +1536,12 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
return
|
||||
var/last_gene_dam = genetic_degradation
|
||||
genetic_degradation = min(100,max(0,genetic_degradation + amount))
|
||||
if(genetic_degradation > 30)
|
||||
if(genetic_degradation > 10)
|
||||
owner.infest_with_parasite(owner, BP_TUMOUR_SPREADING, src)
|
||||
if(genetic_degradation > 20)
|
||||
if(!(status & ORGAN_MUTATED) && prob(genetic_degradation))
|
||||
mutate()
|
||||
to_chat(owner, "<span class = 'notice'>Something is not right with your [name]...</span>")
|
||||
to_chat(owner, SPAN_NOTICE("Something is not right with your [name]..."))
|
||||
return (genetic_degradation - last_gene_dam)
|
||||
|
||||
// Pain/halloss
|
||||
|
||||
@@ -73,3 +73,25 @@
|
||||
|
||||
/obj/item/organ/internal/parasite/proc/stage_effect()
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/proc/infest_with_parasite(var/mob/living/carbon/victim, var/parasite_type, var/obj/item/organ/external/organ_to_infest, var/chance_to_infest = 100, var/parasite_limit = 3)
|
||||
if(ishuman(victim))
|
||||
var/mob/living/carbon/human/H = victim
|
||||
if(BP_IS_ROBOTIC(organ_to_infest))
|
||||
return
|
||||
var/i = 0
|
||||
for(var/obj/item/organ/internal/O in H.internal_organs) //dont want there to be a silly amount of parasites
|
||||
if(istype(O, /obj/item/organ/internal/parasite))
|
||||
i++
|
||||
if((i < parasite_limit) && prob(chance_to_infest))
|
||||
switch(parasite_type) //such a shitty way to do this but i couldnt get a better alternative to work in a sane amount of time :/
|
||||
if("malignant tumour")
|
||||
var/obj/item/organ/internal/parasite/malignant_tumour/P = new()
|
||||
P.parent_organ = organ_to_infest
|
||||
P.replaced(H, organ_to_infest)
|
||||
P.generate_name()
|
||||
if("benign tumour")
|
||||
var/obj/item/organ/internal/parasite/benign_tumour/P = new()
|
||||
P.parent_organ = organ_to_infest
|
||||
P.replaced(H, organ_to_infest)
|
||||
P.generate_name()
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
/obj/item/organ/internal/parasite/benign_tumour
|
||||
name = "benign tumour"
|
||||
icon = 'icons/obj/organs/organs.dmi'
|
||||
icon_state = "tumour"
|
||||
dead_icon = "tumour"
|
||||
|
||||
organ_tag = BP_TUMOUR_NONSPREADING
|
||||
parent_organ = BP_CHEST
|
||||
subtle = 1
|
||||
|
||||
drug_resistance = 1
|
||||
|
||||
max_stage = 3
|
||||
stage_interval = 300 //~5 minutes minutes/stage
|
||||
|
||||
origin_tech = list(TECH_BIO = 2)
|
||||
|
||||
/obj/item/organ/internal/parasite/benign_tumour/proc/generate_name()
|
||||
if(parent_organ)
|
||||
switch(parent_organ)
|
||||
if(BP_CHEST)
|
||||
name = "benign chest lipoma"
|
||||
if(BP_GROIN)
|
||||
name = "benign abdominal tumour"
|
||||
if(BP_HEAD)
|
||||
name = "benign skull cavity tumour"
|
||||
if(BP_L_ARM)
|
||||
name = "benign lipoma (left arm)"
|
||||
if(BP_R_ARM)
|
||||
name = "benign lipoma (right arm)"
|
||||
if(BP_L_HAND)
|
||||
name = "benign chondroma (left hand)"
|
||||
if(BP_R_HAND)
|
||||
name = "benign chondroma (right hand)"
|
||||
if(BP_L_LEG)
|
||||
name = "benign lipoma (left leg)"
|
||||
if(BP_R_LEG)
|
||||
name = "benign lipoma (right leg)"
|
||||
if(BP_L_FOOT)
|
||||
name = "benign plantar fibroma (left foot)"
|
||||
if(BP_R_FOOT)
|
||||
name = "benign plantar fibroma (right foot)"
|
||||
|
||||
/obj/item/organ/internal/parasite/benign_tumour/process()
|
||||
..()
|
||||
if (!owner)
|
||||
return
|
||||
if(REAGENT_VOLUME(owner.reagents, /singleton/reagent/ryetalyn)) //10u will treat most tumours, 20u will nuke fully developed tumours
|
||||
recession = 20
|
||||
if(prob(2))
|
||||
owner.adjustNutritionLoss(5)
|
||||
if(stage >= 2) //after ~5 minutes
|
||||
if(prob(5))
|
||||
owner.adjustHalLoss(10*stage)
|
||||
|
||||
/obj/item/organ/internal/parasite/malignant_tumour
|
||||
name = "malignant tumour"
|
||||
icon = 'icons/obj/organs/organs.dmi'
|
||||
icon_state = "tumour"
|
||||
dead_icon = "tumour"
|
||||
|
||||
organ_tag = BP_TUMOUR_SPREADING
|
||||
parent_organ = BP_CHEST
|
||||
subtle = 1
|
||||
|
||||
drug_resistance = 1
|
||||
|
||||
max_stage = 4
|
||||
stage_interval = 300 //~5 minutes minutes/stage
|
||||
|
||||
origin_tech = list(TECH_BIO = 3)
|
||||
|
||||
egg = /singleton/reagent/toxin/malignant_tumour_cells
|
||||
|
||||
/obj/item/organ/internal/parasite/malignant_tumour/proc/generate_name()
|
||||
if(parent_organ)
|
||||
switch(parent_organ)
|
||||
if(BP_CHEST)
|
||||
name = "malignant chest wall sarcoma"
|
||||
if(BP_GROIN)
|
||||
name = "gastric cancer"
|
||||
if(BP_HEAD)
|
||||
name = "malignant brain tumour"
|
||||
if(BP_L_ARM)
|
||||
name = "malignant melanoma (left arm)"
|
||||
if(BP_R_ARM)
|
||||
name = "malignant melanoma (right arm)"
|
||||
if(BP_L_HAND)
|
||||
name = "malignant chondrosarcoma (left hand)"
|
||||
if(BP_R_HAND)
|
||||
name = "malignant chondrosarcoma (right hand)"
|
||||
if(BP_L_LEG)
|
||||
name = "malignant melanoma (left leg)"
|
||||
if(BP_R_LEG)
|
||||
name = "malignant melanoma (right leg)"
|
||||
if(BP_L_FOOT)
|
||||
name = "malignant chondrosarcoma (left foot)"
|
||||
if(BP_R_FOOT)
|
||||
name = "malignant chondrosarcoma (right foot)"
|
||||
|
||||
/obj/item/organ/internal/parasite/malignant_tumour/process()
|
||||
..()
|
||||
if (!owner)
|
||||
return
|
||||
if(REAGENT_VOLUME(owner.reagents, /singleton/reagent/ryetalyn)) //10u will treat most tumours, 20u will nuke fully developed tumours
|
||||
recession = 20
|
||||
if(prob(5))
|
||||
owner.adjustNutritionLoss(5)
|
||||
if(prob(5))
|
||||
owner.adjustHalLoss((10*stage)/2)
|
||||
if(stage >= 2) //after ~5 minutes
|
||||
switch(parent_organ)
|
||||
if(BP_HEAD)
|
||||
owner.confused = min(owner.confused + (stage*2), 10)
|
||||
owner.slurring = min(owner.slurring + (stage*2), 50)
|
||||
if(prob(5))
|
||||
to_chat(owner, SPAN_WARNING(pick("You struggle to remember the last several moments.", "You smell something funny.", "You taste something funny.", "You can't figure out how to properly string words together.", "What was I just doing?")))
|
||||
owner.emote("drool")
|
||||
if(BP_CHEST)
|
||||
if(prob(3))
|
||||
to_chat(owner, SPAN_WARNING(pick("You feel a tightness in your chest.", "You feel a little lightheaded.", "You need to take larger breaths than normal.")))
|
||||
owner.emote(pick("cough", "gasp"))
|
||||
if(BP_GROIN)
|
||||
if(prob(3))
|
||||
to_chat(owner, SPAN_WARNING(pick("You feel a sharp pain in your gut.", "You feel a little bloated.")))
|
||||
owner.visible_message("<b>[owner]</b> winces slightly.")
|
||||
owner.delayed_vomit()
|
||||
else
|
||||
if(prob(stage*2))
|
||||
to_chat(owner, SPAN_WARNING("You feel very lethargic."))
|
||||
if(stage >= 3) //after ~10 minutes
|
||||
for(var/obj/item/organ/internal/O in owner.internal_organs)
|
||||
if(O.parent_organ == parent_organ)
|
||||
if(BP_IS_ROBOTIC(O))
|
||||
continue
|
||||
if(prob(stage*stage))
|
||||
O.damage = min(O.damage+stage, O.max_damage)
|
||||
|
||||
if(stage >= 4) //after 15 minutes
|
||||
if(prob(3))
|
||||
owner.reagents.add_reagent(egg, 2) //malignant cells breaking off, enter circulatory/lymphatic nodes to spread
|
||||
@@ -284,7 +284,7 @@
|
||||
if(prob(85))
|
||||
M.emote(pick("twitch", "shiver"))
|
||||
else
|
||||
M.seizure()
|
||||
M.seizure(rand(2,3))
|
||||
|
||||
/singleton/reagent/drugs/colorspace
|
||||
name = "Colorspace"
|
||||
|
||||
@@ -40,6 +40,12 @@
|
||||
M.add_chemical_effect(CE_ITCH, M.chem_doses[type] * 2)
|
||||
M.adjustHydrationLoss(2*removed)
|
||||
M.adjustCloneLoss(2.5*removed) // Cell regeneration spiralling out of control resulting in genetic damage.
|
||||
if(((M.chem_doses[type] > 30) && prob(2)) || ((M.bodytemperature < 189) && prob(10))) //Bicaridine treats arterial bleeding when dose is greater than 30u. Alternatively, if the drug is used in a cryotube.
|
||||
var/mob/living/carbon/human/H = M
|
||||
for(var/obj/item/organ/external/E in H.organs)
|
||||
if(E.status & ORGAN_ARTERY_CUT)
|
||||
E.status &= ~ORGAN_ARTERY_CUT
|
||||
M.visible_message("<b>[M]</b> spasms!", SPAN_DANGER("You feel a stabbing pain in your [E.name]!"))
|
||||
|
||||
/singleton/reagent/bicaridine/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
M.dizziness = max(100, M.dizziness)
|
||||
@@ -47,12 +53,6 @@
|
||||
M.adjustHydrationLoss(5*removed)
|
||||
M.adjustNutritionLoss(5*removed)
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(M.chem_doses[type] > 30) //Bicaridine treats arterial bleeding when dose is greater than 30u and when the drug is overdosing (chemical volume in blood greater than 20).
|
||||
for(var/obj/item/organ/external/E in H.organs)
|
||||
if(E.status & ORGAN_ARTERY_CUT && prob(2))
|
||||
E.status &= ~ORGAN_ARTERY_CUT
|
||||
|
||||
/singleton/reagent/butazoline
|
||||
name = "Butazoline"
|
||||
description = "Butazoline, a recent improvement upon Bicaridine, is specialised at treating the most traumatic of wounds, though less so for treating severe bleeding."
|
||||
@@ -86,6 +86,13 @@
|
||||
M.adjustHydrationLoss(2*removed)
|
||||
M.adjustCloneLoss(2.5*removed) //Cell regeneration spiralling out of control resulting in genetic damage.
|
||||
|
||||
if((M.bodytemperature < 192))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/head = H.get_organ(BP_HEAD)
|
||||
if(head.disfigured && prob(10))
|
||||
M.visible_message("<b>[M]</b>'s face begins to contort back into it's original shape.", SPAN_DANGER("You feel a truly disgusting sensation as the skin and muscles of your face twist, crawl and turn."))
|
||||
head.disfigured = FALSE
|
||||
|
||||
/singleton/reagent/kelotane/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/head = H.get_organ(BP_HEAD)
|
||||
@@ -217,13 +224,14 @@
|
||||
description = "Cryoxadone is a ground-breaking and complex medication that, when acting on bodies cooler than 170K, is capable of increasing the rate at which wounds regenerate, as well as treating genetic damage. Cryoxadone, alongside Clonexadone, are the backbones of the cloning industry."
|
||||
reagent_state = LIQUID
|
||||
color = "#8080FF"
|
||||
metabolism = REM * 0.5
|
||||
metabolism = REM*3 //0.6u/t
|
||||
overdose = 5
|
||||
scannable = TRUE
|
||||
taste_description = "sludge"
|
||||
|
||||
/singleton/reagent/cryoxadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
M.add_chemical_effect(CE_CRYO, 1)
|
||||
if(M.bodytemperature < 170 && !M.is_diona())
|
||||
if(M.bodytemperature < 170 && !M.is_diona() && (REAGENT_VOLUME(holder, type) < overdose))
|
||||
M.add_chemical_effect(CE_PULSE, -2)
|
||||
M.add_chemical_effect(CE_OXYGENATED, 1)
|
||||
M.adjustCloneLoss(-100 * removed)
|
||||
@@ -232,22 +240,30 @@
|
||||
var/mob/living/carbon/human/H = M
|
||||
for(var/obj/item/organ/internal/I in H.internal_organs)
|
||||
if(!BP_IS_ROBOTIC(I))
|
||||
I.heal_damage(20*removed)
|
||||
if(I.organ_tag == BP_BRAIN)
|
||||
if(I.damage > I.max_damage/2) //will only treat brain activity above 50% brain activity
|
||||
continue
|
||||
I.heal_damage(4*removed)
|
||||
else if(M.is_diona() && M.bodytemperature < 170)
|
||||
M.adjustFireLoss(5 * removed)//Cryopods kill diona. This damage combines with the normal cold temp damage, and their disabled regen
|
||||
|
||||
/singleton/reagent/cryoxadone/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
M.adjustCloneLoss(10*removed) //'genetic healing' spirals out of control.
|
||||
M.add_chemical_effect(CE_OCULOTOXIC, 4*removed)
|
||||
|
||||
/singleton/reagent/clonexadone
|
||||
name = "Clonexadone"
|
||||
description = "Clonexadone is a ground-breaking, complex medication that improved upon Cryoxadone. When acting on bodies cooler than 170K, the drug is capable of increasing the rate at which wounds regenerate, as well as treating genetic damage. Clonexadone, alongside Cryoxadone, are the backbones of the cloning industry."
|
||||
reagent_state = LIQUID
|
||||
color = "#80BFFF"
|
||||
metabolism = REM * 0.5
|
||||
metabolism = REM*2 //0.4u/t
|
||||
overdose = 5
|
||||
scannable = TRUE
|
||||
taste_description = "slime"
|
||||
|
||||
/singleton/reagent/clonexadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
M.add_chemical_effect(CE_CRYO, 1)
|
||||
if(M.bodytemperature < 170 && !M.is_diona())
|
||||
if(M.bodytemperature < 170 && !M.is_diona() && (REAGENT_VOLUME(holder, type) < overdose))
|
||||
M.add_chemical_effect(CE_PULSE, -2)
|
||||
M.add_chemical_effect(CE_OXYGENATED, 2)
|
||||
M.adjustCloneLoss(-300 * removed)
|
||||
@@ -256,10 +272,17 @@
|
||||
var/mob/living/carbon/human/H = M
|
||||
for(var/obj/item/organ/internal/I in H.internal_organs)
|
||||
if(!BP_IS_ROBOTIC(I))
|
||||
I.heal_damage(30*removed)
|
||||
if(I.organ_tag == BP_BRAIN)
|
||||
if(I.damage > I.max_damage/2) //will only treat brain activity above 50% brain activity
|
||||
continue
|
||||
I.heal_damage(4*removed)
|
||||
else if(M.is_diona() && M.bodytemperature < 170)
|
||||
M.adjustFireLoss(15 * removed)//Cryopods kill diona. This damage combines with the normal cold temp damage, and their disabled regen
|
||||
|
||||
/singleton/reagent/clonexadone/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
M.adjustCloneLoss(20*removed) //'genetic healing' spirals out of control.
|
||||
M.add_chemical_effect(CE_OCULOTOXIC, 8*removed)
|
||||
|
||||
/* Painkillers */
|
||||
|
||||
/singleton/reagent/perconol
|
||||
@@ -552,6 +575,7 @@
|
||||
M.add_chemical_effect(CE_PAINKILLER, 30)
|
||||
M.add_chemical_effect(CE_HALLUCINATE, -1)
|
||||
M.add_up_to_chemical_effect(CE_ADRENALINE, 1)
|
||||
M.add_chemical_effect(CE_BLOODTHIN, 25)
|
||||
|
||||
/singleton/reagent/synaptizine/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
|
||||
if(prob(M.chem_doses[type] / 2))
|
||||
@@ -560,7 +584,7 @@
|
||||
if(prob(75))
|
||||
M.emote(pick("twitch", "shiver"))
|
||||
else
|
||||
M.seizure()
|
||||
M.seizure(rand(1,2))
|
||||
|
||||
/singleton/reagent/alkysine
|
||||
name = "Alkysine"
|
||||
@@ -647,31 +671,47 @@
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.add_chemical_effect(CE_CLUMSY, 1)
|
||||
|
||||
for(var/obj/item/organ/internal/I in H.internal_organs)
|
||||
if(I.organ_tag == BP_BRAIN)
|
||||
if(I.damage >= I.min_bruised_damage)
|
||||
continue
|
||||
if((I.damage > 0) && (I.robotic != 2)) //Peridaxon heals only non-robotic organs
|
||||
I.damage = max(I.damage - removed, 0)
|
||||
var/damage_healed = ((M.bodytemperature < 186) && M.chem_effects[CE_CRYO]) ? 2 : 1 //2x effective if administered in cryogenic conditions
|
||||
I.damage = max(I.damage - damage_healed*removed, 0)
|
||||
|
||||
if((M.bodytemperature < 153) && M.chem_effects[CE_ANTIBIOTIC]) //peridaxon in extracool cryogenic conditions alongside antibiotics will have a chance to de-nercotise liver and kidneys, though will incur overdose symptoms
|
||||
H.infest_with_parasite(H, BP_TUMOUR_NONSPREADING, pick(H.organs), 10)
|
||||
for(var/obj/item/organ/internal/O in H.internal_organs)
|
||||
if((O.organ_tag == BP_LIVER) || (O.organ_tag == BP_KIDNEYS))
|
||||
if(O.damage && prob(5))
|
||||
if((O.status & ORGAN_DEAD) && !BP_IS_ROBOTIC(O))
|
||||
if(O.can_recover())
|
||||
O.status &= ~ORGAN_DEAD
|
||||
O.heal_damage(5)
|
||||
M.visible_message("<b>[M]</b> spasms!", SPAN_DANGER("You feel a stabbing pain!"))
|
||||
|
||||
/singleton/reagent/peridaxon/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
|
||||
M.dizziness = max(150, M.dizziness)
|
||||
M.make_dizzy(5)
|
||||
if(prob(M.chem_doses[type] / 2))
|
||||
to_chat(M, SPAN_DANGER("You feel your insides twisting and burning."))
|
||||
M.adjustHalLoss(5)
|
||||
if(REAGENT_VOLUME(M.reagents, /singleton/reagent/ryetalyn))
|
||||
return
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.infest_with_parasite(H, BP_TUMOUR_NONSPREADING, pick(H.organs), 5)
|
||||
|
||||
/singleton/reagent/ryetalyn
|
||||
name = "Ryetalyn"
|
||||
description = "Ryetalyn is a novel, highly advanced, broad-spectrum medication, developed by Dominian scientists, which has varying clinical uses in treating genetic abnormalities including certain cancers, autoimmune conditions, and Hulk Syndrome."
|
||||
description = "Ryetalyn is a highly advanced, broad-spectrum medication developed by Dominian scientists, which has varying clinical uses in treating genetic abnormalities including certain cancers, autoimmune conditions, and Hulk Syndrome."
|
||||
reagent_state = SOLID
|
||||
color = "#004000"
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
taste_description = "acid"
|
||||
metabolism = 1
|
||||
metabolism = REM
|
||||
metabolism_min = 0.25
|
||||
|
||||
/singleton/reagent/ryetalyn/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
holder.remove_reagent(/singleton/reagent/toxin/malignant_tumour_cells, 2)
|
||||
|
||||
var/needs_mutation_update = M.mutations > 0
|
||||
M.mutations = 0
|
||||
M.disabilities = 0
|
||||
@@ -1048,6 +1088,8 @@
|
||||
description = "Leporazine is a complex medication which improves thermal homeostasis, stabilising and regulating the body's core temperature. Leporazine often results in hyperventilation which should be monitored."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC"
|
||||
metabolism = REM/2 //0.1u/t
|
||||
breathe_met = REM/4 //0.05u/t
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
scannable = TRUE
|
||||
taste_description = "bitterness"
|
||||
@@ -1056,7 +1098,7 @@
|
||||
if(!check_min_dose(M))
|
||||
return
|
||||
M.add_up_to_chemical_effect(CE_NOFEVER, 5) //Also handles the effects of fevers
|
||||
if(!(REAGENT_VOLUME(holder, type) > 20))
|
||||
if(!(REAGENT_VOLUME(holder, type) > overdose))
|
||||
if(M.bodytemperature > 310)
|
||||
M.bodytemperature = max(310, M.bodytemperature - (40 * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
else if(M.bodytemperature < 311)
|
||||
@@ -1315,34 +1357,58 @@
|
||||
|
||||
/singleton/reagent/cataleptinol
|
||||
name = "Cataleptinol"
|
||||
description = "Cataleptinol is a highly advanced, expensive medication capable of regenerating the most damaged of brain tissues. Cataleptinol is used in the treatment of dumbness, cerebral blindness, cerebral paralysis and aphasia. The drug is more effective when the patient's core temperature is below 170K."
|
||||
description = "Cataleptinol is a highly advanced, expensive medication recently developed by Yomi Genetics. Originally developed as a drug to facilitate the advanced cloning of non-human animal brains for wealthy pet owners, some doctors have found it exceptional at treating significant brain injuries in humans. The drug is licensed as a safe medication for use in cryogenics; outside of cryogenic conditions, the drug performs worse, though emergency, off-label uses of cataleptinol can prove lifesaving."
|
||||
reagent_state = LIQUID
|
||||
color = "#FFFF00"
|
||||
metabolism = REM //0.2u/tick
|
||||
overdose = 15
|
||||
metabolism = REM*3 //0.6u/t
|
||||
od_minimum_dose = 2.4
|
||||
overdose = 3
|
||||
scannable = TRUE
|
||||
taste_description = "bitterness"
|
||||
taste_description = "sharp cardamom"
|
||||
metabolism_min = REM * 0.25
|
||||
|
||||
|
||||
/singleton/reagent/cataleptinol/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 10)
|
||||
M.dizziness = max(100, M.dizziness)
|
||||
M.make_dizzy(5)
|
||||
var/chance = M.chem_doses[type]*removed
|
||||
if(M.bodytemperature < 170)
|
||||
chance = (chance*4) + 5
|
||||
M.add_chemical_effect(CE_BRAIN_REGEN, 30) //1 unit of cryo-tube Cataleptinol will raise brain activity by 10%.
|
||||
else
|
||||
M.add_chemical_effect(CE_BRAIN_REGEN, 20) //1 unit of Cataleptinol will raise brain activity by 5%.
|
||||
if(REAGENT_VOLUME(M.reagents, /singleton/reagent/alkysine)) //don't mix alkysine and cataleptinol
|
||||
overdose(M, alien, removed, holder)
|
||||
return
|
||||
|
||||
var/obj/item/organ/internal/brain = M.internal_organs_by_name[BP_BRAIN]
|
||||
if((M.bodytemperature < 179) && (M.chem_effects[CE_CRYO])) //best use in cryogenics, experiment with Balanced or Prioritising Metabolisation settings, aiming for a gas cooler temperature target that minimises the cryostasis multiplier. remember the cryotube heats slowly when someone is inside.
|
||||
if(brain)
|
||||
if(brain.damage && brain.damage < brain.max_damage && !(M.chem_effects[CE_NEUROTOXIC])) //skips the oxygenation check under brain.dm
|
||||
brain.damage = max(brain.damage - 16*removed, 0) //high number, as cryo slows metabolism. also needs to slightly outpace rough injuries to actually make it worthwhile to use.
|
||||
else //without cryogenics. skips the oxygen check, however has large downsides if not pushed thorugh an IV to moderate volume in blood.
|
||||
if(brain)
|
||||
if(brain.damage && brain.damage < brain.max_damage && !(M.chem_effects[CE_NEUROTOXIC]) && prob(75))
|
||||
brain.damage = max(brain.damage - 8*removed, 0) //pretty slow, non-guaranteed brain healing - 75% chance of restoring 2.5% brain activity per tick. only really useful during apocalyptic scenarios.
|
||||
M.dizziness = max(200, M.dizziness + 15)
|
||||
M.hallucination = max(M.hallucination, 100)
|
||||
M.add_chemical_effect(CE_BLOODTHIN, 40) //treat (arterial) bleeding first
|
||||
if(prob(40))
|
||||
to_chat(M, SPAN_HIGHDANGER(pick("You have a painful headache!", "You feel a throbbing pain behind your eyes!", "You feel a painful pressure build up within your skull!", "An unbearable pain radiates throughout your head!")))
|
||||
M.adjustHalLoss(rand(30,60)) //painshock levels of pain, though still managable.
|
||||
M.Weaken(2)
|
||||
M.stuttering = 40
|
||||
M.emote(pick("flail", "twitch_v", "choke", "scream"))
|
||||
else if(prob(25))
|
||||
if(prob(50))
|
||||
to_chat(M, SPAN_WARNING(pick("You feel a tingly sensation in your body.", "You can smell something unusual.", "You can taste something unusual.")))
|
||||
else
|
||||
M.emote(pick("twitch", "shiver"))
|
||||
|
||||
/singleton/reagent/cataleptinol/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed) //hallucinations done under here so antipsychotics can still work
|
||||
. = ..()
|
||||
if(.)
|
||||
M.add_chemical_effect(CE_HALLUCINATE, 2)
|
||||
if(prob(40))
|
||||
M.add_chemical_effect(CE_HEPATOTOXIC, 2) //major downside of using cataleptinol, this will create more problems if left unchecked. outside of cryogenic conditions, this translates to trading ~25% brain activity for total liver failure; in cryogenic conditions, you trade ~40% brain activity for total liver failure.
|
||||
|
||||
/singleton/reagent/cataleptinol/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
M.hallucination = max(M.hallucination, 15)
|
||||
if(prob(5))
|
||||
to_chat(M, SPAN_WARNING(pick("You have a painful headache!", "You feel a throbbing pain behind your eyes!")))
|
||||
..()
|
||||
|
||||
M.add_chemical_effect(CE_NEUROTOXIC, 6*removed) //crashes both the brain & liver if you OD. Neurotoxic also stops it from healing, so you just fucked up a patient for no gain.
|
||||
if(prob(40))
|
||||
M.add_chemical_effect(CE_HEPATOTOXIC, 2) //stacks on top of ambient liver damage from using cataleptinol
|
||||
if(prob(30))
|
||||
M.seizure(rand(2,3))
|
||||
|
||||
/singleton/reagent/fluvectionem
|
||||
name = "Fluvectionem"
|
||||
@@ -1379,6 +1445,11 @@
|
||||
|
||||
. = ..()
|
||||
|
||||
/singleton/reagent/fluvectionem/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
. = ..()
|
||||
if(.)
|
||||
M.add_chemical_effect(CE_BLOODTHIN, 25)
|
||||
|
||||
/singleton/reagent/pulmodeiectionem
|
||||
name = "Pulmodeiectionem"
|
||||
description = "Pulmodeiectionem is a complex anti-toxin medication that is capable of purging the lungs of toxic reagents by damaging the mucous lining of the bronchi and trachea, allowing particulate to be coughed out of the lungs. Pulmodeiectionem works only when inhaled and can cause long-term damage to the lungs."
|
||||
@@ -1477,7 +1548,7 @@
|
||||
|
||||
/singleton/reagent/sanasomnum
|
||||
name = "Sanasomnum"
|
||||
description = "Not strictly a drug, Sanasomnum is actually a cocktail of biomechanical stem cells, which induce a regenerative state of unconsciousness capable healing almost any injury in minutes - however, usage nearly guarantees long-term and irreversible complications, and it is banned from medical use throughout the spur."
|
||||
description = "Not strictly a drug, Sanasomnum is a cocktail of biomechanical stem cells known to cause paralysis and cancerous growths in the few human studies it was trialled during. As a result, little further research has been done on it... nothing that's available to the public, at least."
|
||||
reagent_state = SOLID
|
||||
color = "#b2db5e"
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
@@ -550,17 +550,31 @@
|
||||
description = "A bright orange powder consisting of strange self-heating properties that reacts when exposed to sodium chloride."
|
||||
reagent_state = SOLID
|
||||
color = "#FFFF00"
|
||||
scannable = TRUE
|
||||
breathe_met = REM/2
|
||||
touch_met = REM/2
|
||||
taste_description = "chalk"
|
||||
default_temperature = 600 //Kelvin
|
||||
|
||||
/singleton/reagent/cryosurfactant
|
||||
name = "Cryosurfactant"
|
||||
/singleton/reagent/pyrosilicate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
if(M.bodytemperature < M.species.heat_level_3)
|
||||
M.bodytemperature = min(474, M.bodytemperature + (50 * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
/singleton/reagent/cryosilicate
|
||||
name = "Cryosilicate"
|
||||
description = "A bright cyan liquid consisting of strange self-cooling properties that reacts when exposed to water."
|
||||
reagent_state = LIQUID
|
||||
color = "#00FFFF"
|
||||
scannable = TRUE
|
||||
breathe_met = REM/2
|
||||
touch_met = REM/2
|
||||
taste_description = "needles"
|
||||
default_temperature = 100 //Kelvin
|
||||
|
||||
/singleton/reagent/cryosilicate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
if(!(REAGENT_VOLUME(M.reagents, /singleton/reagent/leporazine) > 5))
|
||||
if(M.bodytemperature > M.species.cold_level_3)
|
||||
M.bodytemperature = max(140, M.bodytemperature - (50 * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
|
||||
/singleton/reagent/venenum
|
||||
name = "Venenum"
|
||||
description = "A thick tar like liquid that seems to move around on it's own every now and then. Limited data shows it only works when injected into the bloodstream."
|
||||
|
||||
@@ -805,6 +805,16 @@
|
||||
if(prob(5))
|
||||
M.emote(pick("twitch_v", "grunt"))
|
||||
|
||||
if((M.bodytemperature < 151)) //red nightshade in extracool cryogenic conditions will restore bonebreaks, at the cost of blood depletion
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.vessel.remove_reagent(/singleton/reagent/blood, rand(15,30))
|
||||
for(var/obj/item/organ/external/E in H.organs)
|
||||
if(E.status & ORGAN_BROKEN)
|
||||
if(prob(10))
|
||||
H.vessel.remove_reagent(/singleton/reagent/blood, rand(30, 60))
|
||||
E.status &= ~ORGAN_BROKEN
|
||||
M.visible_message("<b>[M]</b> spasms!", SPAN_DANGER("You feel a stabbing pain!"))
|
||||
|
||||
/singleton/reagent/toxin/berserk/overdose(var/mob/living/carbon/M, var/datum/reagents/holder)
|
||||
if(prob(25))
|
||||
M.add_chemical_effect(CE_CARDIOTOXIC, 1)
|
||||
@@ -997,3 +1007,23 @@
|
||||
var/obj/item/organ/external/affected = H.get_organ(BP_CHEST)
|
||||
var/obj/item/organ/internal/parasite/heartworm/infest = new()
|
||||
infest.replaced(H, affected)
|
||||
|
||||
/singleton/reagent/toxin/malignant_tumour_cells
|
||||
name = "Malignant Tumour Cells"
|
||||
description = "Cells of a malignant tumour which have broken off and entered the circulatory and/or lymphatic system to spread to other regions of the body."
|
||||
reagent_state = SOLID
|
||||
color = "#460000"
|
||||
metabolism = REM/2 //Slow metabolisation so medical can potentially screen it early, given it's danger.
|
||||
ingest_mul = 0
|
||||
touch_mul = 0
|
||||
breathe_mul = 0
|
||||
taste_description = "blood"
|
||||
taste_mult = 0.1
|
||||
strength = 0
|
||||
|
||||
/singleton/reagent/toxin/malignant_tumour_cells/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder)
|
||||
..()
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!(REAGENT_VOLUME(M.reagents, /singleton/reagent/cytophenolate)) && !H.internal_organs_by_name[BP_TUMOUR_SPREADING]) //only affects people with immunosuppressants or a pre-existing malignant tumour
|
||||
return
|
||||
H.infest_with_parasite(H, BP_TUMOUR_SPREADING, pick(H.organs), 10)
|
||||
|
||||
@@ -733,7 +733,8 @@
|
||||
name = "Cataleptinol"
|
||||
id = "cataleptinol"
|
||||
result = /singleton/reagent/cataleptinol
|
||||
required_reagents = list(/singleton/reagent/toxin/phoron = 0.1, /singleton/reagent/alkysine = 1, /singleton/reagent/cryoxadone = 0.1)
|
||||
required_reagents = list(/singleton/reagent/toxin/phoron = 0.5, /singleton/reagent/alkysine = 2, /singleton/reagent/clonexadone = 1)
|
||||
catalysts = list(/singleton/reagent/cryosilicate = 5)
|
||||
result_amount = 1
|
||||
|
||||
/datum/chemical_reaction/coughsyrup
|
||||
@@ -3891,41 +3892,41 @@
|
||||
result_amount = 4
|
||||
required_reagents = list(/singleton/reagent/silicate = 1, /singleton/reagent/acid = 1, /singleton/reagent/hydrazine = 1, /singleton/reagent/iron = 1)
|
||||
|
||||
/datum/chemical_reaction/cryosurfactant
|
||||
name = "Cryosurfactant"
|
||||
id = "cryosurfactant"
|
||||
result = /singleton/reagent/cryosurfactant
|
||||
/datum/chemical_reaction/cryosilicate
|
||||
name = "Cryosilicate"
|
||||
id = "cryosilicate"
|
||||
result = /singleton/reagent/cryosilicate
|
||||
result_amount = 3
|
||||
required_reagents = list(/singleton/reagent/surfactant = 1, /singleton/reagent/drink/ice = 1, /singleton/reagent/sodium = 1)
|
||||
required_reagents = list(/singleton/reagent/silicate = 1, /singleton/reagent/drink/ice = 1, /singleton/reagent/sodium = 1)
|
||||
|
||||
//WATER
|
||||
/datum/chemical_reaction/cryosurfactant_cooling_water
|
||||
name = "Cryosurfactant Cooling Water"
|
||||
id = "cryosurfactant_cooling_water"
|
||||
/datum/chemical_reaction/cryosilicate_cooling_water
|
||||
name = "Cryosilicate Cooling Water"
|
||||
id = "cryosilicate_cooling_water"
|
||||
result = null
|
||||
result_amount = 1
|
||||
required_reagents = list(/singleton/reagent/cryosurfactant = 1)
|
||||
required_reagents = list(/singleton/reagent/cryosilicate = 1)
|
||||
inhibitors = list(/singleton/reagent/pyrosilicate = 1)
|
||||
catalysts = list(/singleton/reagent/water = 1)
|
||||
mix_message = "The solution begins to freeze."
|
||||
|
||||
/datum/chemical_reaction/cryosurfactant_cooling_water/on_reaction(var/datum/reagents/holder, var/created_volume, var/created_thermal_energy)
|
||||
holder.del_reagent(/singleton/reagent/cryosurfactant)
|
||||
/datum/chemical_reaction/cryosilicate_cooling_water/on_reaction(var/datum/reagents/holder, var/created_volume, var/created_thermal_energy)
|
||||
holder.del_reagent(/singleton/reagent/cryosilicate)
|
||||
holder.add_thermal_energy(-created_volume*500)
|
||||
|
||||
//ICE
|
||||
/datum/chemical_reaction/cryosurfactant_cooling_ice
|
||||
name = "Cryosurfactant Cooling Ice"
|
||||
id = "cryosurfactant_cooling_ice"
|
||||
/datum/chemical_reaction/cryosilicate_cooling_ice
|
||||
name = "Cryosilicate Cooling Ice"
|
||||
id = "cryosilicate_cooling_ice"
|
||||
result = null
|
||||
result_amount = 1
|
||||
required_reagents = list(/singleton/reagent/cryosurfactant = 1)
|
||||
required_reagents = list(/singleton/reagent/cryosilicate = 1)
|
||||
inhibitors = list(/singleton/reagent/pyrosilicate = 1)
|
||||
catalysts = list(/singleton/reagent/drink/ice = 1)
|
||||
mix_message = "The solution begins to freeze."
|
||||
|
||||
/datum/chemical_reaction/cryosurfactant_cooling_ice/on_reaction(var/datum/reagents/holder, var/created_volume, var/created_thermal_energy)
|
||||
holder.del_reagent(/singleton/reagent/cryosurfactant)
|
||||
/datum/chemical_reaction/cryosilicate_cooling_ice/on_reaction(var/datum/reagents/holder, var/created_volume, var/created_thermal_energy)
|
||||
holder.del_reagent(/singleton/reagent/cryosilicate)
|
||||
holder.add_thermal_energy(-created_volume*500)
|
||||
|
||||
/datum/chemical_reaction/pyrosilicate_heating
|
||||
@@ -3934,22 +3935,22 @@
|
||||
result = null
|
||||
result_amount = 1
|
||||
required_reagents = list(/singleton/reagent/pyrosilicate = 1)
|
||||
inhibitors = list(/singleton/reagent/cryosurfactant = 1)
|
||||
inhibitors = list(/singleton/reagent/cryosilicate = 1)
|
||||
catalysts = list(/singleton/reagent/sodiumchloride = 1)
|
||||
|
||||
/datum/chemical_reaction/pyrosilicate_heating/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
holder.del_reagent(/singleton/reagent/pyrosilicate)
|
||||
holder.add_thermal_energy(created_volume*1000)
|
||||
|
||||
/datum/chemical_reaction/pyrosilicate_cryosurfactant
|
||||
name = "Pyrosilicate Cryosurfactant Reaction"
|
||||
id = "pyrosilicate_cryosurfactant"
|
||||
/datum/chemical_reaction/pyrosilicate_cryosilicate
|
||||
name = "Pyrosilicate Cryosilicate Reaction"
|
||||
id = "pyrosilicate_cryosilicate"
|
||||
result = null
|
||||
required_reagents = list(/singleton/reagent/pyrosilicate = 1, /singleton/reagent/cryosurfactant = 1)
|
||||
required_reagents = list(/singleton/reagent/pyrosilicate = 1, /singleton/reagent/cryosilicate = 1)
|
||||
required_temperature_min = T0C //Does not react when below these temperatures.
|
||||
result_amount = 1
|
||||
|
||||
/datum/chemical_reaction/pyrosilicate_cryosurfactant/on_reaction(var/datum/reagents/holder, var/created_volume, var/created_thermal_energy)
|
||||
/datum/chemical_reaction/pyrosilicate_cryosilicate/on_reaction(var/datum/reagents/holder, var/created_volume, var/created_thermal_energy)
|
||||
if(created_volume)
|
||||
var/turf/simulated/floor/T = get_turf(holder.my_atom.loc)
|
||||
if(istype(T))
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/storage/box/bloodpacks
|
||||
name = "blood packs bags"
|
||||
desc = "This box contains blood packs."
|
||||
name = "\improper IV bags"
|
||||
desc = "This box contains IV bags."
|
||||
illustration = "blood"
|
||||
|
||||
/obj/item/storage/box/bloodpacks/fill()
|
||||
@@ -14,7 +14,7 @@
|
||||
new /obj/item/reagent_containers/blood/empty(src)
|
||||
|
||||
/obj/item/reagent_containers/blood
|
||||
name = "blood pack"
|
||||
name = "\improper IV bag"
|
||||
desc = "Contains fluids used for transfusions."
|
||||
icon = 'icons/obj/bloodpack.dmi'
|
||||
icon_state = "bloodpack"
|
||||
@@ -37,7 +37,7 @@
|
||||
/obj/item/reagent_containers/blood/Initialize()
|
||||
. = ..()
|
||||
if(blood_type != null)
|
||||
name = "blood pack [blood_type]"
|
||||
name = "\improper IV bag - [blood_type] blood"
|
||||
reagents.add_reagent(/singleton/reagent/blood, volume, list("donor"=null,"blood_DNA"=null,"blood_type"=blood_type,"trace_chem"=null,"dose_chem"=null))
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
update_icon()
|
||||
@@ -163,10 +163,10 @@
|
||||
/obj/item/reagent_containers/blood/attackby(obj/item/attacking_item, mob/user)
|
||||
..()
|
||||
if (attacking_item.ispen())
|
||||
if (REAGENT_VOLUME(reagents, /singleton/reagent/blood) && name != "empty blood pack") //Stops people mucking with bloodpacks that are filled
|
||||
if (REAGENT_VOLUME(reagents, /singleton/reagent/blood) && name != "empty IV bag") //Stops people mucking with bloodpacks that are filled
|
||||
to_chat(user, SPAN_NOTICE("You can't relabel [name] until it is empty!"))
|
||||
return
|
||||
var/blood_name = tgui_input_list(user, "What blood type would you like to label it as?", "Blood Types", list("A+", "A-", "B+", "B-", "O+", "O-", "AB+", "AB-", "Saline Plus", "Clear", "Cancel"))
|
||||
var/blood_name = tgui_input_list(user, "What would you like to label the IV bag?", "Label Selection", list("A+ blood", "A- blood", "B+ blood", "B- blood", "O+ blood", "O- blood", "AB+ blood", "AB- blood", "Saline Plus", "Cryonics mixture", "Other mixture", "Clear", "Cancel"))
|
||||
if(blood_name == "Cancel")
|
||||
return
|
||||
var/obj/item/i = user.get_active_hand()
|
||||
@@ -176,13 +176,13 @@
|
||||
blood_type = null
|
||||
name = initial(name)
|
||||
desc = initial(desc)
|
||||
to_chat(user, SPAN_NOTICE("You clear the blood pack label."))
|
||||
to_chat(user, SPAN_NOTICE("You clear the IV bag label."))
|
||||
update_icon()
|
||||
return
|
||||
blood_type = blood_name
|
||||
name = "blood pack [blood_type]"
|
||||
name = "\improper IV bag - [blood_type]"
|
||||
desc = "Contains fluids used for transfusions."
|
||||
to_chat(user, SPAN_NOTICE("You label the blood pack as [blood_type]."))
|
||||
to_chat(user, SPAN_NOTICE("You label the IV bag as [blood_type]."))
|
||||
update_icon()
|
||||
return
|
||||
|
||||
@@ -269,12 +269,12 @@
|
||||
blood_type = "O-"
|
||||
|
||||
/obj/item/reagent_containers/blood/empty
|
||||
name = "empty blood pack"
|
||||
name = "empty IV bag"
|
||||
desc = "Seems pretty useless... Maybe if there were a way to fill it?"
|
||||
icon_state = "bloodpack"
|
||||
|
||||
/obj/item/reagent_containers/blood/ripped
|
||||
name = "ripped blood pack"
|
||||
name = "ripped IV bag"
|
||||
desc = "It's torn up and useless."
|
||||
icon = 'icons/obj/bloodpack.dmi'
|
||||
icon_state = "ripped"
|
||||
|
||||
@@ -145,15 +145,15 @@
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/pyrosilicate
|
||||
name = "pyrosilicate bottle"
|
||||
desc = "A small bottle. Contains pyrosilicate - used to heat up reagents."
|
||||
desc = "A small bottle. Contains pyrosilicate which is used to heat up reagents."
|
||||
icon_state = "bottle-4"
|
||||
reagents_to_add = list(/singleton/reagent/pyrosilicate = 60)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/cryosurfactant
|
||||
name = "cryosurfactant bottle"
|
||||
desc = "A small bottle. Contains cryosurfactant - used to cool down reagents."
|
||||
/obj/item/reagent_containers/glass/bottle/cryosilicate
|
||||
name = "cryosilicate bottle"
|
||||
desc = "A small bottle. Contains cryosilicate which is used to cool down reagents."
|
||||
icon_state = "bottle-4"
|
||||
reagents_to_add = list(/singleton/reagent/cryosurfactant = 60)
|
||||
reagents_to_add = list(/singleton/reagent/cryosilicate = 60)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/epinephrine
|
||||
name = "epinephrine bottle"
|
||||
@@ -229,7 +229,7 @@
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/trioxin
|
||||
name = "hylemnomil-zeta vial"
|
||||
desc = "A small, unmarked lial with an ominous label. <span class='cult'>It contains a swirling, purple liquid.</span>"
|
||||
desc = "A small, unmarked vial with an ominous label. <span class='cult'>It contains a swirling, purple liquid.</span>"
|
||||
icon_state = "bouteille"
|
||||
reagents_to_add = list(/singleton/reagent/toxin/hylemnomil = 60)
|
||||
|
||||
|
||||
@@ -321,7 +321,7 @@
|
||||
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/sanasomnum
|
||||
name = "sanasomnum autoinjector"
|
||||
desc = "A special autoinjector loaded with outlawed biomechanical stem cells, inducing a regenerative coma so intense it can heal almost any injury - even broken bones, organ and brain damage, severed tendons, and arterial damage. Upon use one will fall immediately into a state of unconsciousness lasting roughly three to five minutes, arising completely healed. The only thing it cannot fix are organs that have been destroyed outright, or so much cumulative damage that death is all but certain. The only downside is that Sanasomnum use guarantees extreme cancerous growth months or years down the line, which is invariably fatal in the long-term. However, in the short-term, it will save your life."
|
||||
desc = "An autoinjector loaded with sanasomnum, an experimental and outlawed combination medicine known to cause paralysis and cancerous growths in the few human studies it was trialled during. As a result, little further research has been done on it... nothing that's available to the public, at least." //antag chemical. this is the non-antag facing description so no one reads the autoinjector desc and considers it fairgame to then use it.
|
||||
volume = 20
|
||||
amount_per_transfer_from_this = 20
|
||||
|
||||
|
||||
@@ -370,3 +370,8 @@
|
||||
icon_state = "cleanertablet"
|
||||
reagents_to_add = list(/singleton/reagent/spacecleaner = 15)
|
||||
|
||||
/obj/item/reagent_containers/pill/ryetalyn
|
||||
name = "10u Ryetalyn Pill"
|
||||
desc = "A medicine used to treat genetic conditions, including benign and malignant tumours."
|
||||
icon_state = "pill11"
|
||||
reagents_to_add = list(/singleton/reagent/ryetalyn = 10)
|
||||
|
||||
@@ -419,11 +419,8 @@
|
||||
|
||||
if(src.loc)
|
||||
var/datum/gas_mixture/env = src.loc.return_air()
|
||||
if(env)
|
||||
if (reagents.total_volume > 750)
|
||||
env.temperature = 0
|
||||
else if (reagents.total_volume > 500)
|
||||
env.temperature -= 100
|
||||
if(env && reagents.total_volume)
|
||||
env.temperature = max(173, env.temperature - (reagents.total_volume/10))
|
||||
|
||||
QDEL_IN(src, 10)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user