From 4aecae30a466c417df998336f67ee7fb2e65f4e1 Mon Sep 17 00:00:00 2001 From: SomeRandomOwl <2568378+SomeRandomOwl@users.noreply.github.com> Date: Sat, 6 Apr 2024 22:33:20 -0500 Subject: [PATCH] [Semi-Modular] HMS Buffs (#1742) * Initial * Pills and Ilness * Reagent Recipe * recipe name * Notation * better values * Minor Fixes * Rework + Interdyne RP * Mapping edits * Smaller containers, less reagents * no deforest * Secret Recipe * Update modular_nova/modules/HMS_Changes/sansufentanyl.dm Co-authored-by: FlufflesTheDog * Fixes double call This was un needed, as it ended up generating the text on the sheet twice * Apply suggestions from code review Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> --------- Co-authored-by: FlufflesTheDog Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> --- .../icemoon_underground_interdyne_base1.dmm | 15 ++- .../nova/lavaland_surface_interdyne_base1.dmm | 4 + code/datums/diseases/chronic_illness.dm | 50 ++++++++-- .../reagents/reagent_containers/pill.dm | 2 +- .../modules/HMS_Changes/sansufentanyl.dm | 99 +++++++++++++++++++ tgstation.dme | 1 + 6 files changed, 156 insertions(+), 15 deletions(-) create mode 100644 modular_nova/modules/HMS_Changes/sansufentanyl.dm diff --git a/_maps/RandomRuins/IceRuins/nova/icemoon_underground_interdyne_base1.dmm b/_maps/RandomRuins/IceRuins/nova/icemoon_underground_interdyne_base1.dmm index e96139954eb..ab982cc45c2 100644 --- a/_maps/RandomRuins/IceRuins/nova/icemoon_underground_interdyne_base1.dmm +++ b/_maps/RandomRuins/IceRuins/nova/icemoon_underground_interdyne_base1.dmm @@ -2689,6 +2689,7 @@ control_area = "/area/ruin/interdyne_planetary_base"; ailock = 1 }, +/obj/item/folder/syndicate/red/secretformula, /turf/open/floor/iron/dark/textured_large, /area/ruin/interdyne_planetary_base/main/vault) "hi" = ( @@ -2930,6 +2931,7 @@ /obj/effect/turf_decal/stripes/white/line{ dir = 4 }, +/obj/item/reagent_containers/dropper, /turf/open/floor/iron/white/textured_large, /area/ruin/interdyne_planetary_base/med/pharm) "hR" = ( @@ -3113,9 +3115,8 @@ /obj/machinery/reagentgrinder{ pixel_x = 5 }, -/obj/item/storage/box/beakers/bluespace{ - pixel_x = -5; - pixel_y = 3 +/obj/item/storage/box/syndie_kit/sansufentanyl{ + pixel_x = -9 }, /turf/open/floor/iron/dark/textured_large, /area/ruin/interdyne_planetary_base/med/pharm) @@ -3480,14 +3481,18 @@ /area/ruin/interdyne_planetary_base/med/morgue) "jj" = ( /obj/structure/table/glass, -/obj/item/clothing/glasses/science, /obj/machinery/firealarm/directional/west{ dir = 4 }, +/obj/item/storage/box/beakers/bluespace{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/clothing/glasses/science, +/obj/item/reagent_containers/dropper, /obj/item/stack/sheet/mineral/plasma{ amount = 15 }, -/obj/item/reagent_containers/dropper, /turf/open/floor/iron/white/textured_large, /area/ruin/interdyne_planetary_base/med/pharm) "jk" = ( diff --git a/_maps/RandomRuins/LavaRuins/nova/lavaland_surface_interdyne_base1.dmm b/_maps/RandomRuins/LavaRuins/nova/lavaland_surface_interdyne_base1.dmm index 878efbfd25f..9a2dbe19b02 100644 --- a/_maps/RandomRuins/LavaRuins/nova/lavaland_surface_interdyne_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/nova/lavaland_surface_interdyne_base1.dmm @@ -4288,6 +4288,9 @@ }, /obj/effect/turf_decal/tile/dark_green/full, /obj/machinery/door/firedoor, +/obj/item/storage/box/syndie_kit/sansufentanyl{ + pixel_x = -3 + }, /turf/open/floor/iron/dark/textured_large, /area/ruin/interdyne_planetary_base/med/pharm) "JU" = ( @@ -5661,6 +5664,7 @@ /area/ruin/interdyne_planetary_base/med) "UE" = ( /obj/structure/table/reinforced, +/obj/item/folder/syndicate/red/secretformula, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/interdyne_planetary_base/main/vault) "UN" = ( diff --git a/code/datums/diseases/chronic_illness.dm b/code/datums/diseases/chronic_illness.dm index d99d29e61a8..97afef6fd53 100644 --- a/code/datums/diseases/chronic_illness.dm +++ b/code/datums/diseases/chronic_illness.dm @@ -6,7 +6,7 @@ disease_flags = CHRONIC infectable_biotypes = MOB_ORGANIC | MOB_MINERAL | MOB_ROBOTIC process_dead = TRUE - stage_prob = 0.25 + stage_prob = 0.10 // NOVA EDIT CHANGE = ORIGINAL: stage_prob = 0.25 cure_text = "Sansufentanyl" cures = list(/datum/reagent/medicine/sansufentanyl) infectivity = 0 @@ -25,25 +25,25 @@ if(1) carrier = FALSE // Go fuck yourself if(2) - if(SPT_PROB(0.5, seconds_per_tick)) + if(SPT_PROB(0.8, seconds_per_tick)) // NOVA EDIT CHANGE - ORIGINAL: if(SPT_PROB(0.5, seconds_per_tick)) to_chat(affected_mob, span_warning("You feel dizzy.")) affected_mob.adjust_confusion(6 SECONDS) - if(SPT_PROB(0.5, seconds_per_tick)) + if(SPT_PROB(0.8, seconds_per_tick)) // NOVA EDIT CHANGE - ORIGINAL: if(SPT_PROB(0.5, seconds_per_tick)) to_chat(affected_mob, span_notice("You look at your hand. Your vision blurs.")) affected_mob.set_eye_blur_if_lower(10 SECONDS) if(3) var/need_mob_update = FALSE - if(SPT_PROB(0.5, seconds_per_tick)) + if(SPT_PROB(0.8, seconds_per_tick)) // NOVA EDIT CHANGE - ORIGINAL: if(SPT_PROB(0.5, seconds_per_tick)) to_chat(affected_mob, span_danger("You feel a very sharp pain in your chest!")) if(prob(45)) affected_mob.vomit(VOMIT_CATEGORY_BLOOD, lost_nutrition = 20) - if(SPT_PROB(0.5, seconds_per_tick)) + if(SPT_PROB(0.8, seconds_per_tick)) // NOVA EDIT CHANGE - ORIGINAL: if(SPT_PROB(0.5, seconds_per_tick)) to_chat(affected_mob, span_userdanger("[pick("You feel your heart slowing...", "You relax and slow your heartbeat.")]")) need_mob_update += affected_mob.adjustStaminaLoss(70, updating_stamina = FALSE) - if(SPT_PROB(1, seconds_per_tick)) + if(SPT_PROB(1, seconds_per_tick)) // NOVA EDIT CHANGE - ORIGINAL: if(SPT_PROB(0.5, seconds_per_tick)) to_chat(affected_mob, span_danger("You feel a buzzing in your brain.")) SEND_SOUND(affected_mob, sound('sound/weapons/flash_ring.ogg')) - if(SPT_PROB(0.5, seconds_per_tick)) + if(SPT_PROB(0.8, seconds_per_tick)) // NOVA EDIT CHANGE - ORIGINAL: if(SPT_PROB(0.5, seconds_per_tick)) need_mob_update += affected_mob.adjustBruteLoss(1, updating_health = FALSE) if(need_mob_update) affected_mob.updatehealth() @@ -61,14 +61,14 @@ if(prob(30)) to_chat(affected_mob, span_danger("Your vision blurs as you faint!")) affected_mob.AdjustSleeping(10) - if(SPT_PROB(0.5, seconds_per_tick)) + if(SPT_PROB(0.8, seconds_per_tick)) // NOVA EDIT CHANGE - ORIGINAL: if(SPT_PROB(0.5, seconds_per_tick)) to_chat(affected_mob, span_danger("[pick("You feel as though your atoms are accelerating in place.", "You feel like you're being torn apart!")]")) affected_mob.emote("scream") need_mob_update += affected_mob.adjustBruteLoss(10, updating_health = FALSE) if(need_mob_update) affected_mob.updatehealth() if(5) - switch(rand(1,2)) + switch(rand(1,5)) // NOVA EDIT CHANGE - ORIGINAL: switch(rand(1,2)) if(1) to_chat(affected_mob, span_notice("You feel your atoms begin to realign. You're safe. For now.")) update_stage(1) @@ -85,3 +85,35 @@ affected_mob.investigate_log("has been dusted / deleted by [name].", INVESTIGATE_DEATHS) affected_mob.ghostize(can_reenter_corpse = FALSE) qdel(affected_mob) + // NOVA EDIT ADDITION START + if(3) + to_chat(affected_mob, span_warning("You body wracks with pain as you are shunted to another point in time.")) + affected_mob.visible_message(span_warning("A tear in reality opens up around [affected_mob] consuming them!"), span_userdanger("You are consumed by a hole in reality!")) + var/list/destinations = list() + + for(var/obj/item/beacon/teleport_beacon in GLOB.teleportbeacons) + var/turf/T = get_turf(teleport_beacon) + if(is_station_level(T.z)) + destinations += teleport_beacon + + var/chosen_beacon = pick(destinations) + var/obj/effect/portal/jaunt_tunnel/tunnel = new (get_turf(src), 100, null, FALSE, get_turf(chosen_beacon)) + tunnel.teleport(affected_mob) + affected_mob.vomit(VOMIT_CATEGORY_BLOOD, lost_nutrition = 20) + affected_mob.adjustBruteLoss(200) + playsound(src,'sound/effects/sparks4.ogg',50,TRUE) + qdel(tunnel) + update_stage(1) + if(4) + affected_mob.visible_message(span_warning("[affected_mob] is torn apart!"), span_userdanger("Your atoms accelerate into criticality!")) + affected_mob.gib(DROP_ALL_REMAINS) + update_stage(1) + if(5) + if(affected_mob.stat == CONSCIOUS) + affected_mob.visible_message(span_danger("[affected_mob] clutches at [affected_mob.p_their()] chest as if [affected_mob.p_their()] heart is stopping!"), \ + span_userdanger("You feel a horrible pain as your heart is replaced with one from another dimension!")) + var/obj/item/organ/internal/heart/cursed/cheart = new /obj/item/organ/internal/heart/cursed() + cheart.replace_into(affected_mob) + playsound(affected_mob, 'sound/hallucinations/far_noise.ogg', 50, 1) + update_stage(1) + // NOVA EDIT ADDITION END diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index fd2ab0eb493..e6be214d9b7 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -151,7 +151,7 @@ name = "sansufentanyl pill" desc = "Used to treat Hereditary Manifold Sickness. Temporary side effects include - nausea, dizziness, impaired motor coordination." icon_state = "pill19" - list_reagents = list(/datum/reagent/medicine/sansufentanyl = 5) + list_reagents = list(/datum/reagent/medicine/sansufentanyl = 10) // NOVA EDIT CHANGE - ORIGINAL: list_reagents = list(/datum/reagent/medicine/sansufentanyl = 5) //Lower quantity mannitol pills (50u pills heal 250 brain damage, 5u pills heal 25) /obj/item/reagent_containers/pill/mannitol/braintumor diff --git a/modular_nova/modules/HMS_Changes/sansufentanyl.dm b/modular_nova/modules/HMS_Changes/sansufentanyl.dm new file mode 100644 index 00000000000..ac1086ccc7f --- /dev/null +++ b/modular_nova/modules/HMS_Changes/sansufentanyl.dm @@ -0,0 +1,99 @@ +/datum/supply_pack/misc/experimentalmedicine + name = "Sanusfentanyl Medicine Crate" + desc = "A crate containing the medication required for living with Hereditary Manifold Sickness, Sansufentanyl." + cost = CARGO_CRATE_VALUE * 3 + contains = list(/obj/item/storage/pill_bottle/sansufentanyl = 2) + +/datum/chemical_reaction/medicine/sansufentanyl + results = list(/datum/reagent/medicine/sansufentanyl = 10) + required_reagents = list(/datum/reagent/medicine/sansufentanyl_base = 1, /datum/reagent/medicine/spaceacillin = 3, /datum/reagent/bluespace = 6) + reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_HEALING | REACTION_TAG_OTHER + +/datum/reagent/medicine/sansufentanyl + chemical_flags = REAGENT_NO_RANDOM_RECIPE + +/datum/reagent/medicine/sansufentanyl_base + name = "Experimental Fentanyl Base" + description = "The secret base reagent used to create sansufentanyl. Developed by Interdyne Pharmacuticals, it is a closely held secret recipe." + color = "#8659a6" + ph = 5 + chemical_flags = REAGENT_NO_RANDOM_RECIPE + +/datum/reagent/medicine/sansufentanyl_base/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = ..() + affected_mob.adjust_confusion_up_to(3 SECONDS * REM * seconds_per_tick, 10 SECONDS) + affected_mob.adjust_dizzy_up_to(6 SECONDS * REM * seconds_per_tick, 20 SECONDS) + if(affected_mob.adjustStaminaLoss(4 * REM * seconds_per_tick, updating_stamina = FALSE)) + . = UPDATE_MOB_HEALTH + + if(SPT_PROB(10, seconds_per_tick)) + to_chat(affected_mob, "You feel confused and disoriented.") + if(prob(30)) + SEND_SOUND(affected_mob, sound('sound/weapons/flash_ring.ogg')) + +/obj/item/paper/fluff/sansufentanyl + name = "sansufentanyl recipe" + default_raw_text = {"Sansufentanyl Recipe!
+ Within this box contains the base reagents in order to make the experimental medicine, sansufentanyl.
+ 1. Grind the bluespace crystals into a fine powder.
+ 2. Mix 1 part Experimental Fentanyl Base with 3 parts spaceacillin and 6 parts bluespace dust.
+ 3. Mix the reagents together in a beaker and keep tempratue to around 350k.
+ 4. Once the reagents have been mixed, pour the mixture into a chem master.
+ 5. Initiate the chem master's pill press and press the pills into units of 10 per pill.
+ 6. Once the pills have been pressed, place them into a pill bottle and store them in a cool, dark place.
+ + If you run out of the base reagent you can make more using the secret formula stored in the vault. + + + THE RECIPE STORED IN THE VAULT IS TOP SECRET, DO NOT GIVE IT AWAY UNDER ANY CIRCUMSTANCE. + IF YOU ARE CAUGHT GIVING AWAY THE RECIPE, YOU WILL BE TERMINATED. + "} + +/obj/item/reagent_containers/cup/beaker/sansufentanyl_base + list_reagents = list(/datum/reagent/medicine/sansufentanyl_base = 60) + +/obj/item/reagent_containers/cup/beaker/large/spaceacillin + list_reagents = list(/datum/reagent/medicine/spaceacillin = 120) + +/obj/item/storage/box/syndie_kit/sansufentanyl + name = "sansufentanyl reagent box" + desc = "Contains everything you'll need to create new batches of sansufentanyl. Careful, do not spill contents." + +/obj/item/storage/box/syndie_kit/sansufentanyl/PopulateContents() + generate_items_inside(list( + /obj/item/reagent_containers/cup/beaker/sansufentanyl_base = 1, + /obj/item/reagent_containers/cup/beaker/large/spaceacillin = 1, + /obj/item/stack/ore/bluespace_crystal = 15, + /obj/item/paper/fluff/sansufentanyl = 1, + ), src) + +/datum/chemical_reaction/randomized/sansufentanyl + randomize_req_temperature = FALSE + possible_catalysts = list(/datum/reagent/bluespace) + min_catalysts = 1 + max_catalysts = 1 + max_input_reagents = 4 + results = list(/datum/reagent/medicine/sansufentanyl_base=20) + +/datum/chemical_reaction/randomized/sansufentanyl/GetPossibleReagents(kind) + switch(kind) + if(RNGCHEM_INPUT) + var/list/possible_ingredients = list() + for(var/datum/reagent/compound as anything in GLOB.medicine_reagents) + if(initial(compound.chemical_flags) & REAGENT_CAN_BE_SYNTHESIZED) + possible_ingredients += compound + return possible_ingredients + return ..() + +/obj/item/paper/secretrecipe/secretformula + name = "\improper Sansufentanyl Secret Formula" + recipe_id = /datum/chemical_reaction/randomized/sansufentanyl + possible_recipes = list(/datum/chemical_reaction/randomized/sansufentanyl) + +/obj/item/folder/syndicate/red/secretformula + icon_state = "folder_sred" + +/obj/item/folder/syndicate/red/Initialize(mapload) + . = ..() + new /obj/item/paper/secretrecipe/secretformula(src) + update_appearance() diff --git a/tgstation.dme b/tgstation.dme index 3a4cee73008..ac155b92226 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7405,6 +7405,7 @@ #include "modular_nova\modules\hairbrush\code\mood_events.dm" #include "modular_nova\modules\height_scaling\code\icons.dm" #include "modular_nova\modules\height_scaling\code\preferences.dm" +#include "modular_nova\modules\HMS_Changes\sansufentanyl.dm" #include "modular_nova\modules\holdingfashion_port\code\backpack.dm" #include "modular_nova\modules\holdingfashion_port\code\bluespace_design.dm" #include "modular_nova\modules\holdingfashion_port\code\bluespace_node.dm"