diff --git a/code/__DEFINES/~RUtgmc_defines/loadout.dm b/code/__DEFINES/~RUtgmc_defines/loadout.dm index 52ea5e4c1b856..fd2ea35e64ef8 100644 --- a/code/__DEFINES/~RUtgmc_defines/loadout.dm +++ b/code/__DEFINES/~RUtgmc_defines/loadout.dm @@ -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"), diff --git a/modular_RUtgmc/code/game/objects/items/reagent_containers/autoinjectors.dm b/modular_RUtgmc/code/game/objects/items/reagent_containers/autoinjectors.dm index 957e55e536bb5..fdda6e7d9c16d 100644 --- a/modular_RUtgmc/code/game/objects/items/reagent_containers/autoinjectors.dm +++ b/modular_RUtgmc/code/game/objects/items/reagent_containers/autoinjectors.dm @@ -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." diff --git a/modular_RUtgmc/code/game/objects/items/reagent_containers/pill.dm b/modular_RUtgmc/code/game/objects/items/reagent_containers/pill.dm new file mode 100644 index 0000000000000..3c3fcad6eecc4 --- /dev/null +++ b/modular_RUtgmc/code/game/objects/items/reagent_containers/pill.dm @@ -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 diff --git a/modular_RUtgmc/code/game/objects/items/storage/firstaid.dm b/modular_RUtgmc/code/game/objects/items/storage/firstaid.dm new file mode 100644 index 0000000000000..51d08a32826b0 --- /dev/null +++ b/modular_RUtgmc/code/game/objects/items/storage/firstaid.dm @@ -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" diff --git a/modular_RUtgmc/code/game/objects/machinery/vending/marine_vending.dm b/modular_RUtgmc/code/game/objects/machinery/vending/marine_vending.dm index c03db9fb5f35f..ec1645d53e666 100644 --- a/modular_RUtgmc/code/game/objects/machinery/vending/marine_vending.dm +++ b/modular_RUtgmc/code/game/objects/machinery/vending/marine_vending.dm @@ -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, @@ -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( @@ -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, @@ -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( diff --git a/modular_RUtgmc/code/modules/reagents/reagents/medical.dm b/modular_RUtgmc/code/modules/reagents/reagents/medical.dm index 8cd0d7a01ef8a..709d250b5bff1 100644 --- a/modular_RUtgmc/code/modules/reagents/reagents/medical.dm +++ b/modular_RUtgmc/code/modules/reagents/reagents/medical.dm @@ -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 ..() diff --git a/modular_RUtgmc/includes.dm b/modular_RUtgmc/includes.dm index 70858dbd29089..dd0db83c94bd1 100644 --- a/modular_RUtgmc/includes.dm +++ b/modular_RUtgmc/includes.dm @@ -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" @@ -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"