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 all 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
@@ -1,3 +1,13 @@

/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

/obj/item/reagent_containers/hypospray/autoinjector/yautja
name = "unusual crystal"
desc = "A strange glowing crystal with a spike at one end."
Expand Down
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 @@ -95,6 +95,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\stacks\sheets\mineral.dm"
#include "code\game\objects\items\stacks\sheets\sheet_types.dm"
Expand All @@ -107,6 +109,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 Expand Up @@ -415,7 +418,7 @@
#include "code\modules\mob\living\carbon\xenomorph\castes\beetle\beetle.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\mantis\mantis.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\scorpion\scorpion.dm"
#include "code\game\objects\items\reagent_containers\autoinjectors.dm"

Check warning on line 421 in modular_RUtgmc/includes.dm

View workflow job for this annotation

GitHub Actions / Run Linters

duplicate #include "modular_RUtgmc/code/game/objects/items/reagent_containers/autoinjectors.dm"
#include "code\game\objects\items\card_ids.dm"
#include "code\game\objects\structures\crates_lockers\secure\freezer.dm"
#include "code\game\objects\machinery\computer\crew.dm"
Expand Down
Loading