Skip to content
This repository has been archived by the owner on Aug 21, 2024. It is now read-only.

Химия 3.0 : Мегалодон #642

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions code/__DEFINES/~RUtgmc_defines/loadout.dm
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ GLOBAL_LIST_INIT(medic_gear_listed_products, list(
/obj/effect/vendor_bundle/medic = list(CAT_ESS, "Essential Medic Set", 0, "white"),
/obj/item/storage/pill_bottle/meralyne = list(CAT_MEDSUP, "Meralyne pills", 14, "orange"),
/obj/item/storage/pill_bottle/dermaline = list(CAT_MEDSUP, "Dermaline pills", 14, "orange"),
/obj/item/storage/pill_bottle/imidalk = list(CAT_MEDSUP, "Imidalk pills", 2, "orange"),
/obj/item/tool/surgery/solderingtool = list(CAT_MEDSUP, "Soldering tool", 2, "orange"),
/obj/item/stack/medical/heal_pack/advanced/bruise_combat_pack = list(CAT_MEDSUP, "Combat Trauma Kit", 3, "orange"),
/obj/item/stack/medical/heal_pack/advanced/burn_combat_pack = list(CAT_MEDSUP, "Combat Burn Kit", 3, "orange"),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/obj/item/reagent_containers/hypospray/autoinjector/bacteriophages
name = "bacteriophages autoinjector"
desc = "An auto-injector loaded with medical nanites. A potent new method of healing that that reproduces using a subject's blood and has a brief but potentially dangerous activation period! Beware of Neurotoxin!"
icon_state = "autoinjector-6"
amount_per_transfer_from_this = 1
volume = 1
list_reagents = list(/datum/reagent/medicine/research/bacteriophages_agent = 1)
free_refills = FALSE
19 changes: 19 additions & 0 deletions modular_RUtgmc/code/game/objects/items/reagent_containers/pill.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/obj/item/reagent_containers/pill/ibuprofen
pill_desc = "A ibuprofen pill. A long-duration nonsteroidal anti-inflammatory drug. Heal cuts and bruises. Do not mix with bicaridine"
list_reagents = list(/datum/reagent/medicine/ibuprofen = 15)
pill_id = 7

/obj/item/reagent_containers/pill/ketoprofen
pill_desc = "A ketoprofen pill. A long-duration nonsteroidal anti-inflammatory drug. Heal burns. Do not mix with kelotane"
list_reagents = list(/datum/reagent/medicine/ketoprofen = 15)
pill_id = 7

/obj/item/reagent_containers/pill/ifex
pill_desc = "A Ifosfamide pill. A cytostatic antitumor drug. Quickly heals wounds and burns, but releases histamine. Do not mix with BKTT and -fen drugs"
list_reagents = list(/datum/reagent/medicine/ifex = 15)
pill_id = 11

/obj/item/reagent_containers/pill/imidalk
pill_desc = "A imidalk pill. Used to fix brain, ear and eye damage."
list_reagents = list(/datum/reagent/medicine/alkysine = 3.5, /datum/reagent/medicine/imidazoline = 11.5)
pill_id = 18
35 changes: 35 additions & 0 deletions modular_RUtgmc/code/game/objects/items/storage/firstaid.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/obj/item/storage/pill_bottle/ibuprofen
name = "ibuprofen pill bottle"
desc = "Contains pills capable of long-duration nonsteroidal anti-inflammatory effect."
icon_state = "pill_canistercomplete"
pill_type_to_fill = /obj/item/reagent_containers/pill/ibuprofen
greyscale_colors = "#FC3D03#ffffff"
greyscale_config = /datum/greyscale_config/pillbottleround
description_overlay = "Ib"

/obj/item/storage/pill_bottle/ketoprofen
name = "ketoprofen pill bottle"
desc = "Contains pills capable of long-duration nonsteroidal anti-inflammatory effect."
icon_state = "pill_canistercomplete"
pill_type_to_fill = /obj/item/reagent_containers/pill/ketoprofen
greyscale_colors = "#FF8C00#ffffff"
greyscale_config = /datum/greyscale_config/pillbottleround
description_overlay = "Kf"

/obj/item/storage/pill_bottle/ifex
name = "ifex pill bottle"
desc = "Contains pills of cytostatic antitumor emergency use drug."
icon_state = "pill_canistercomplete"
pill_type_to_fill = /obj/item/reagent_containers/pill/ifex
greyscale_colors = "#9ACD32#ffffff"
greyscale_config = /datum/greyscale_config/pillbottleround
description_overlay = "If"

/obj/item/storage/pill_bottle/imidalk
name = "imidalk pill bottle"
desc = "Contains pills used to fix brain, ear and eye damage"
icon_state = "pill_canistercomplete"
pill_type_to_fill = /obj/item/reagent_containers/pill/imidalk
greyscale_colors = "#E467B3#ffffff"
greyscale_config = /datum/greyscale_config/pillbottleround
description_overlay = "IA"
Original file line number Diff line number Diff line change
Expand Up @@ -339,9 +339,12 @@
products = list(
"Pill Bottles" = list(
/obj/item/storage/pill_bottle/bicaridine = -1,
/obj/item/storage/pill_bottle/ibuprofen = -1,
/obj/item/storage/pill_bottle/kelotane = -1,
/obj/item/storage/pill_bottle/ketoprofen = -1,
/obj/item/storage/pill_bottle/tramadol = -1,
/obj/item/storage/pill_bottle/tricordrazine = -1,
/obj/item/storage/pill_bottle/ifex = -1,
/obj/item/storage/pill_bottle/dylovene = -1,
/obj/item/storage/pill_bottle/dexalin = -1,
/obj/item/storage/pill_bottle/paracetamol = -1,
Expand All @@ -364,6 +367,7 @@
/obj/item/reagent_containers/hypospray/autoinjector/imidazoline = 20,
/obj/item/reagent_containers/hypospray/autoinjector/quickclot = 10,
/obj/item/reagent_containers/hypospray/autoinjector/medicalnanites = 20,
/obj/item/reagent_containers/hypospray/autoinjector/bacteriophages = 20,
/obj/item/reagent_containers/hypospray/autoinjector/russian_red = 10,
),
"Heal Pack" = list(
Expand All @@ -386,9 +390,12 @@
products = list(
"Pill Bottles" = list(
/obj/item/storage/pill_bottle/bicaridine = -1,
/obj/item/storage/pill_bottle/ibuprofen = -1,
/obj/item/storage/pill_bottle/kelotane = -1,
/obj/item/storage/pill_bottle/ketoprofen = -1,
/obj/item/storage/pill_bottle/tramadol = -1,
/obj/item/storage/pill_bottle/tricordrazine = -1,
/obj/item/storage/pill_bottle/ifex = -1,
/obj/item/storage/pill_bottle/dylovene = -1,
/obj/item/storage/pill_bottle/dexalin = -1,
/obj/item/storage/pill_bottle/paracetamol = -1,
Expand All @@ -410,6 +417,7 @@
/obj/item/reagent_containers/hypospray/autoinjector/imidazoline = -1,
/obj/item/reagent_containers/hypospray/autoinjector/quickclot = -1,
/obj/item/reagent_containers/hypospray/autoinjector/medicalnanites = -1,
/obj/item/reagent_containers/hypospray/autoinjector/bacteriophages = -1,
/obj/item/reagent_containers/hypospray/autoinjector/russian_red = -1,
),
"Heal Pack" = list(
Expand Down
206 changes: 206 additions & 0 deletions modular_RUtgmc/code/modules/reagents/reagents/medical.dm
Original file line number Diff line number Diff line change
Expand Up @@ -115,3 +115,209 @@

/datum/reagent/medicine/research/medicalnanites/overdose_crit_process(mob/living/L, metabolism)
L.adjustCloneLoss(1) //YUM!

/datum/reagent/medicine/ibuprofen
name = "Ibuprofen"
description = "Ibuprofen is a nonsteroidal anti-inflammatory drug"
color = COLOR_REAGENT_BICARIDINE
purge_list = list(/datum/reagent/medicine/ryetalyn, /datum/reagent/medicine/bicaridine)
purge_rate = 5
custom_metabolism = REAGENTS_METABOLISM * 0.5
overdose_threshold = REAGENTS_OVERDOSE
overdose_crit_threshold = REAGENTS_OVERDOSE_CRITICAL
scannable = TRUE

/datum/reagent/medicine/ibuprofen/on_mob_life(mob/living/L, metabolism)

var/tricordrazine = L.reagents.get_reagent_amount(/datum/reagent/medicine/tricordrazine)
if(tricordrazine)
L.apply_damages(0.2, 0.2)

L.heal_overall_damage(effect_str, 0)
if(volume < 10)
L.reagent_pain_modifier -= PAIN_REDUCTION_LIGHT
L.heal_overall_damage(0.5*effect_str, 0)
else
L.reagent_pain_modifier -= PAIN_REDUCTION_VERY_LIGHT
return ..()

/datum/reagent/medicine/ibuprofen/overdose_process(mob/living/L, metabolism)
L.apply_damage(effect_str, BURN)

/datum/reagent/medicine/ibuprofen/overdose_crit_process(mob/living/L, metabolism)
L.apply_damages(effect_str, 3*effect_str, 2*effect_str)

/datum/reagent/medicine/ketoprofen
name = "Ketoprofen"
description = "Ketoprofen is one of the propionic acid class of nonsteroidal anti-inflammatory drug"
color = COLOR_REAGENT_BICARIDINE
purge_list = list(/datum/reagent/medicine/ryetalyn, /datum/reagent/medicine/kelotane)
purge_rate = 5
custom_metabolism = REAGENTS_METABOLISM * 0.5
overdose_threshold = REAGENTS_OVERDOSE
overdose_crit_threshold = REAGENTS_OVERDOSE_CRITICAL
scannable = TRUE

/datum/reagent/medicine/ketoprofen/on_mob_life(mob/living/L, metabolism)

var/tricordrazine = L.reagents.get_reagent_amount(/datum/reagent/medicine/tricordrazine)
if(tricordrazine)
L.apply_damages(0.2, 0.2)

L.heal_overall_damage(0, effect_str)
if(volume < 10)
L.reagent_pain_modifier -= PAIN_REDUCTION_LIGHT
L.heal_overall_damage(0, 0.5*effect_str)
else
L.reagent_pain_modifier -= PAIN_REDUCTION_VERY_LIGHT
return ..()

/datum/reagent/medicine/ketoprofen/overdose_process(mob/living/L, metabolism)
L.apply_damages(effect_str, BRUTE)

/datum/reagent/medicine/ketoprofen/overdose_crit_process(mob/living/L, metabolism)
L.apply_damages(3*effect_str, effect_str, 2*effect_str)

/datum/reagent/histamine
name = "Histamine"
description = "Histamine is an organic nitrogenous compound involved in local immune responses communication"
color = COLOR_REAGENT_BICARIDINE
custom_metabolism = 0
overdose_threshold = REAGENTS_OVERDOSE * 0.5
overdose_crit_threshold = REAGENTS_OVERDOSE_CRITICAL * 0.5
scannable = TRUE

/datum/reagent/histamine/on_mob_life(mob/living/L, metabolism)

//reagents
var/Ifex = L.reagents.get_reagent_amount(/datum/reagent/medicine/ifex)
var/ibuprofen = L.reagents.get_reagent_amount(/datum/reagent/medicine/ibuprofen)
var/ketoprofen = L.reagents.get_reagent_amount(/datum/reagent/medicine/ketoprofen)
var/tricordrazine = L.reagents.get_reagent_amount(/datum/reagent/medicine/tricordrazine)
var/kelotane = L.reagents.get_reagent_amount(/datum/reagent/medicine/kelotane)
var/bicaridine = L.reagents.get_reagent_amount(/datum/reagent/medicine/bicaridine)

if(!Ifex)
holder.remove_reagent(/datum/reagent/histamine, 0.4)

//debuffs
if(ibuprofen)
L.apply_damages(2*effect_str, 0)
if(ketoprofen)
L.apply_damages(0, 2*effect_str)
if(tricordrazine)
L.apply_damages(effect_str, effect_str, effect_str)
if(kelotane)
L.apply_damages(0, 2*effect_str)
if(bicaridine)
L.apply_damages(2*effect_str, 0)

L.apply_damage(0.5*effect_str, OXY)

current_cycle++

/datum/reagent/histamine/on_mob_add(mob/living/L, metabolism)
to_chat(L, span_userdanger("You feel your throat tightening!"))

/datum/reagent/histamine/on_mob_delete(mob/living/L, metabolism)
to_chat(L, span_userdanger("You feel how it becomes easier for you to breathe"))

/datum/reagent/histamine/overdose_process(mob/living/L, metabolism)
L.apply_damages(1*effect_str, 1*effect_str, 1*effect_str)

/datum/reagent/histamine/overdose_crit_process(mob/living/L, metabolism)
L.apply_damages(0, 0, 6*effect_str)

/datum/reagent/medicine/ifex
name = "Ifex"
description = "Ifosfamide is a cytostatic antitumor drug"
color = COLOR_REAGENT_BICARIDINE
custom_metabolism = REAGENTS_METABOLISM * 2
overdose_threshold = REAGENTS_OVERDOSE * 0.5
overdose_crit_threshold = REAGENTS_OVERDOSE_CRITICAL * 0.5
scannable = TRUE

/datum/reagent/medicine/ifex/on_mob_life(mob/living/L, metabolism)

L.adjustOxyLoss(-0.5*effect_str)
L.adjustToxLoss(-0.5*effect_str)
L.heal_overall_damage(4*effect_str, 4*effect_str)

if(volume > 5)
L.reagent_pain_modifier -= PAIN_REDUCTION_MEDIUM
else
L.reagent_pain_modifier -= PAIN_REDUCTION_LIGHT

L.reagents.add_reagent(/datum/reagent/histamine, 0.4)

return ..()

/datum/reagent/medicine/ifex/overdose_process(mob/living/L, metabolism)
L.adjustToxLoss(2*effect_str)

/datum/reagent/medicine/ifex/overdose_crit_process(mob/living/L, metabolism)
L.adjustToxLoss(4*effect_str)

/datum/reagent/medicine/research/bacteriophages_agent
name = "Artificial bacteriophages"
description = "These are a batch of construction nanites altered for in-vivo replication. They can heal wounds using the iron present in the bloodstream. Medical care is recommended during injection."
color = COLOR_REAGENT_MEDICALNANITES
purge_rate = 5
scannable = FALSE
taste_description = "metal, followed by mild burning"

/datum/reagent/medicine/research/bacteriophages_agent/on_mob_add(mob/living/L, metabolism)
var/bacteriophages = L.reagents.get_reagent_amount(/datum/reagent/bacteriophages)
if(!bacteriophages)
L.reagents.add_reagent(/datum/reagent/bacteriophages, 1)


/datum/reagent/bacteriophages
name = "Artificial bacteriophages"
description = "These are a batch of construction nanites altered for in-vivo replication. They can heal wounds using the iron present in the bloodstream. Medical care is recommended during injection."
color = COLOR_REAGENT_MEDICALNANITES
custom_metabolism = 0
purge_list = list(/datum/reagent/medicine/research/medicalnanites)
purge_rate = 5
scannable = TRUE
taste_description = "metal, followed by mild burning"
overdose_threshold = REAGENTS_OVERDOSE_CRITICAL //slight buffer to keep you safe

//artificial bacteriophage
/datum/reagent/bacteriophages/on_mob_add(mob/living/L, metabolism)
to_chat(L, span_userdanger("You feel like you should stay near medical help until this shot settles in."))

/datum/reagent/bacteriophages/on_mob_life(mob/living/L, metabolism)
switch(current_cycle)
if(1 to 80)
L.reagent_pain_modifier -= PAIN_REDUCTION_SUPER_HEAVY
L.reagents.add_reagent(/datum/reagent/bacteriophages, 0.5)
L.adjustStaminaLoss(2*effect_str)
if(prob(5))
to_chat(L, span_notice("You feel intense itching!"))
if(81)
to_chat(L, span_warning("The pain rapidly subsides. Looks like they've adapted to you."))
if(82 to INFINITY)
if(volume < 20)
L.reagents.add_reagent(/datum/reagent/bacteriophages, 0.4)
L.adjustStaminaLoss(2*effect_str)
L.adjustToxLoss(1*effect_str)
if(volume < 30)
L.reagents.add_reagent(/datum/reagent/bacteriophages, 0.3)
L.adjustStaminaLoss(2*effect_str)
L.adjustToxLoss(0.5*effect_str)
if(volume < 40)
L.reagents.add_reagent(/datum/reagent/bacteriophages, 0.2)

if (volume > 10 && (1 < L.getBruteLoss(organic_only = TRUE)))
L.heal_overall_damage(1*effect_str, 0)
L.adjustToxLoss(0.1*effect_str)
holder.remove_reagent(/datum/reagent/bacteriophages, 0.5)
if(prob(20))
to_chat(L, span_notice("Your cuts and bruises begin to scab over rapidly!"))
if (volume > 10 && (1 < L.getFireLoss(organic_only = TRUE)))
L.heal_overall_damage(0, 1*effect_str)
holder.remove_reagent(/datum/reagent/bacteriophages, 0.5)
if(prob(20))
to_chat(L, span_notice("Your burns begin to slough off, revealing healthy tissue!"))
return ..()
3 changes: 3 additions & 0 deletions modular_RUtgmc/includes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,8 @@
#include "code\game\objects\items\radio\intercom.dm"
#include "code\game\objects\items\reagent_containers\glass\bottle.dm"
#include "code\game\objects\items\reagent_containers\hypospray.dm"
#include "code\game\objects\items\reagent_containers\autoinjectors.dm"
#include "code\game\objects\items\reagent_containers\pill.dm"
#include "code\game\objects\items\robot\robot_parts.dm"
#include "code\game\objects\items\sheets\sheet_types.dm"
#include "code\game\objects\items\stacks\medical.dm"
Expand All @@ -101,6 +103,7 @@
#include "code\game\objects\items\storage\boxes.dm"
#include "code\game\objects\items\storage\dispenser.dm"
#include "code\game\objects\items\storage\holsters.dm"
#include "code\game\objects\items\storage\firstaid.dm"
#include "code\game\objects\items\tools\cleaning_tools.dm"
#include "code\game\objects\items\tools\maintenance_tools.dm"
#include "code\game\objects\items\tools\mining_tools.dm"
Expand Down
Loading