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:
smellie
2024-04-13 16:14:51 +00:00
committed by GitHub
parent 34e3c3570c
commit 11f8eff319
31 changed files with 466 additions and 122 deletions
@@ -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)
+1 -1
View File
@@ -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)
+5 -5
View File
@@ -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
+1
View File
@@ -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"
+3 -1
View File
@@ -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]"
+5 -3
View File
@@ -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)
+25 -24
View File
@@ -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)
+2 -5
View File
@@ -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)