From 37756634828a183c21b033de17fe0b9147f55aad Mon Sep 17 00:00:00 2001 From: SatinIsle <98125273+SatinIsle@users.noreply.github.com> Date: Sun, 21 Jul 2024 10:56:52 +0100 Subject: [PATCH] Mega nukies (#16110) * Mega Nukies Added a variety of Nukies called Mega Nukies that can only rarely be found in maintenance loot. These super caffeinated drinks come with a warning label about health hazards and may have the following effects: The ability to see in the dark perfectly, with a small risk to your eyes. Good healing of brute and burn damage at the risk of damaging your heart. Putting you to sleep until you've processed all of it. Repairing your NIF and filling you up, but confuses you if you don't have a NIF installed! Hyperzine speed, way less addictive but may cause modest burns! Gets you real high. Slowly shrinks you. Slowly grows you. * Unique colours --- code/__defines/chemistry.dm | 1 + code/game/objects/random/maintenance.dm | 3 +- code/game/objects/random/misc_vr.dm | 18 ++ code/modules/food/food/cans.dm | 91 ++++++++++ .../mob/living/carbon/human/human_helpers.dm | 7 + code/modules/mob/living/carbon/human/life.dm | 8 + .../reagents/reagents/food_drinks_vr.dm | 168 ++++++++++++++++++ icons/obj/drinks.dmi | Bin 102676 -> 104352 bytes 8 files changed, 295 insertions(+), 1 deletion(-) diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm index 3b4815b3533..63ea0e136f6 100644 --- a/code/__defines/chemistry.dm +++ b/code/__defines/chemistry.dm @@ -38,6 +38,7 @@ #define CE_SLOWDOWN "goslow" // Slowdown #define CE_ANTACID "nopuke" // Don't puke. #define CE_ALLERGEN "allergyreaction" // Self explanatory +#define CE_DARKSIGHT "darksight" // Gives perfect vision in dark #define REAGENTS_PER_SHEET 20 diff --git a/code/game/objects/random/maintenance.dm b/code/game/objects/random/maintenance.dm index b3370c2792c..a5b47951276 100644 --- a/code/game/objects/random/maintenance.dm +++ b/code/game/objects/random/maintenance.dm @@ -114,7 +114,8 @@ something, make sure it's not in one of the other lists.*/ prob(1);/obj/item/toy/baseball, prob(1);/obj/item/pizzavoucher, prob(5);/obj/item/weapon/material/fishing_net/butterfly_net, - prob(2);/obj/item/weapon/cracker + prob(2);/obj/item/weapon/cracker, + prob(5);/obj/random/mega_nukies /* VOREStation Edit End */ ) diff --git a/code/game/objects/random/misc_vr.dm b/code/game/objects/random/misc_vr.dm index f16d2385d89..b1781eb66ef 100644 --- a/code/game/objects/random/misc_vr.dm +++ b/code/game/objects/random/misc_vr.dm @@ -366,3 +366,21 @@ prob(10);/obj/item/device/perfect_tele/magic, prob(10);/obj/item/weapon/reagent_containers/glass/bottle/potion/truepolymorph ) + +/obj/random/mega_nukies + name = "random mega nukie" + desc = "A random mega nukie." + icon = 'icons/obj/drinks.dmi' + icon_state = "nukie_mega_high" + spawn_nothing_percentage = 0 + +/obj/random/mega_nukies/item_to_spawn() + return pick(prob(5);/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_sight, + prob(2);/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_heart, + prob(5);/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_sleep, + prob(5);/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_shock, + prob(5);/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_fast, + prob(5);/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_high, + prob(10);/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_shrink, + prob(10);/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_grow + ) diff --git a/code/modules/food/food/cans.dm b/code/modules/food/food/cans.dm index 7e52a15d5c8..592c706edc1 100644 --- a/code/modules/food/food/cans.dm +++ b/code/modules/food/food/cans.dm @@ -549,3 +549,94 @@ /obj/item/weapon/reagent_containers/food/drinks/cans/nukie_special/Initialize() . = ..() reagents.add_reagent("nukie_special", 60) + +/////////////////////////MEGA NUKIES///////////////////////// +//Rare loot energy drinks with special properties, for the funnies. + +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_sight + name = "\improper Nukies Mega - Plum Peeper" + desc = "Harness the power of the atom with this illegal, unfit for organic consumption and absolutely not regulator approved energy drink." + icon_state = "nukie_mega_sight" + center_of_mass = list("x"=16, "y"=8) + volume = 60 + +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_sight/Initialize() + . = ..() + reagents.add_reagent("nukie_mega_sight", 60) + +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_heart + name = "\improper Nukies Mega - Juice Pumper" + desc = "Harness the power of the atom with this illegal, unfit for organic consumption and absolutely not regulator approved energy drink." + icon_state = "nukie_mega_heart" + center_of_mass = list("x"=16, "y"=8) + volume = 60 + +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_heart/Initialize() + . = ..() + reagents.add_reagent("nukie_mega_heart", 60) + +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_sleep + name = "\improper Nukies Nega - Vibrating Nights" + desc = "Harness the power of the atom with this illegal, unfit for organic consumption and absolutely not regulator approved energy drink." + icon_state = "nukie_mega_sleep" + center_of_mass = list("x"=16, "y"=8) + volume = 60 + +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_sleep/Initialize() + . = ..() + reagents.add_reagent("nukie_mega_sleep", 60) + +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_shock + name = "\improper Nukies Mega - Jolt Railer" + desc = "Harness the power of the atom with this illegal, unfit for organic consumption and absolutely not regulator approved energy drink." + icon_state = "nukie_mega_strong" + center_of_mass = list("x"=16, "y"=8) + volume = 60 + +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_shock/Initialize() + . = ..() + reagents.add_reagent("nukie_mega_shock", 60) + +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_fast + name = "\improper Nukies Mega - Rapid Rager" + desc = "Harness the power of the atom with this illegal, unfit for organic consumption and absolutely not regulator approved energy drink." + icon_state = "nukie_mega_fast" + center_of_mass = list("x"=16, "y"=8) + volume = 60 + +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_fast/Initialize() + . = ..() + reagents.add_reagent("nukie_mega_fast", 60) + +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_high + name = "\improper Nukies Mega - Diamond Sky" + desc = "Harness the power of the atom with this illegal, unfit for organic consumption and absolutely not regulator approved energy drink." + icon_state = "nukie_mega_high" + center_of_mass = list("x"=16, "y"=8) + volume = 60 + +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_high/Initialize() + . = ..() + reagents.add_reagent("nukie_mega_high", 60) + +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_shrink + name = "\improper Nukies Mega - Shrinking Flower" + desc = "Harness the power of the atom with this illegal, unfit for organic consumption and absolutely not regulator approved energy drink." + icon_state = "nukie_mega_shrink" + center_of_mass = list("x"=16, "y"=8) + volume = 60 + +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_shrink/Initialize() + . = ..() + reagents.add_reagent("nukie_mega_shrink", 60) + +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_grow + name = "\improper Nukies Mega - Growing Geyser" + desc = "Harness the power of the atom with this illegal, unfit for organic consumption and absolutely not regulator approved energy drink." + icon_state = "nukie_mega_grow" + center_of_mass = list("x"=16, "y"=8) + volume = 60 + +/obj/item/weapon/reagent_containers/food/drinks/cans/nukie_mega_grow/Initialize() + . = ..() + reagents.add_reagent("nukie_mega_growth", 60) diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index c531ef5086f..1b8a9957544 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -171,6 +171,13 @@ var/list/slots = list(slot_glasses,slot_head) var/list/compiled_vis = list() + if(CE_DARKSIGHT in chem_effects) //Putting this near the beginning so it can be overwritten by equipment + plane_holder.set_vis(VIS_FULLBRIGHT,TRUE) + compiled_vis += VIS_FULLBRIGHT + else + plane_holder.set_vis(VIS_FULLBRIGHT,FALSE) + compiled_vis -= VIS_FULLBRIGHT + for(var/slot in slots) var/obj/item/clothing/O = get_equipped_item(slot) //Change this type if you move the vision stuff to item or something. if(istype(O) && O.enables_planes && (slot in O.plane_slots)) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 53e5e240d66..115c9defdc3 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -18,6 +18,7 @@ /mob/living/carbon/human var/in_stasis = 0 var/heartbeat = 0 + var/chemical_darksight = 0 /mob/living/carbon/human/Life() set invisibility = 0 @@ -1162,6 +1163,13 @@ playsound(src, growlsound, vol = growlmultiplier, vary = 1, falloff = 0.1, ignore_walls = TRUE, preference = /datum/client_preference/digestion_noises) // VOREStation Edit End + if((CE_DARKSIGHT in chem_effects) && chemical_darksight == 0) + recalculate_vis() + chemical_darksight = 1 + if(!(CE_DARKSIGHT in chem_effects) && chemical_darksight == 1) + recalculate_vis() + chemical_darksight = 0 + // TODO: stomach and bloodstream organ. if(!isSynthetic()) handle_trace_chems() diff --git a/code/modules/reagents/reagents/food_drinks_vr.dm b/code/modules/reagents/reagents/food_drinks_vr.dm index 01514b4ee4c..038bb30aac9 100644 --- a/code/modules/reagents/reagents/food_drinks_vr.dm +++ b/code/modules/reagents/reagents/food_drinks_vr.dm @@ -781,3 +781,171 @@ id = "nukie_special" color = "#ffffff" taste_description = "sitting in your college dorm one week before your exams start, staring at a screen without anything particularly interesting on, knowing that you should really be studying, but you can put it off for another day right? Plus your friends are gonna be getting on soon and there's an event starting that you need to prep for" + +/datum/reagent/drink/coffee/nukie/mega + + name = "Mega Nukie" + id = "nukie_mega" + description = "An extremely dangerously concentrated caffinated drink." + color = "#102838" + adj_temp = 0 + adj_dizzy = 0 + adj_drowsy = -5 + adj_sleepy = -10 + + glass_name = "nukie" + glass_desc = "A drink that might just explode your heart!" + overdose = 5 + + taste_description = "flavourless energy" + +/datum/reagent/drink/coffee/nukie/mega/sight + name = "Nukie Mega Plum" + id = "nukie_mega_sight" + color = "#f4fc03" + taste_description = "seeing beyond the margins of this world" + +/datum/reagent/drink/coffee/nukie/mega/sight/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + ..() + if(prob(1)) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name[O_EYES] + if(istype(E)) + if(E.robotic >= ORGAN_ROBOT) + return + if(E.damage < 100) + E.damage = max(E.damage + 1 * removed, 0) + M.add_chemical_effect(CE_DARKSIGHT, 1) + +/datum/reagent/drink/coffee/nukie/mega/heart //Heals you pretty damn well but damages your heart + name = "Nukie Mega Juice" + id = "nukie_mega_heart" + color = "#fc03e7" + taste_description = "the end is rapidly approaching, yet remains forever far" + +/datum/reagent/drink/coffee/nukie/mega/heart/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + var/chem_effective = 1 * M.species.chem_strength_heal + if(alien == IS_SLIME) + chem_effective = 0.75 + if(alien != IS_DIONA) + M.heal_organ_damage(6 * removed * chem_effective, 6 * removed * chem_effective) //VOREStation Edit + if(ishuman(M)) + var/mob/living/carbon/human/H = M + for(var/obj/item/organ/I in H.internal_organs) + if(I.robotic >= ORGAN_ROBOT || !(I.organ_tag in list(O_HEART))) + continue + if(I.damage < 100 && prob(10)) + I.damage = max(I.damage + 0.2 * removed, 0) + ..() + +/datum/reagent/drink/coffee/nukie/mega/nega //Makes you both jittery and sleepy + name = "Nukie Nega" + id = "nukie_mega_sleep" + color = "#00dded" + taste_description = "the void encompassing you" + adj_drowsy = 0 + adj_sleepy = 0 + var/adj_tiredness = 5 + +/datum/reagent/drink/coffee/nukie/mega/nega/affect_ingest(var/mob/living/carbon/human/M) + if(M.tiredness < 105) + M.tiredness = (M.tiredness + adj_tiredness) + ..() + +/datum/reagent/drink/coffee/nukie/mega/shock //Rapidly fills you up and even repairs your NIF, unless you don't have one in which case you'll be confused. + name = "Nukie Mega Shock" + id = "nukie_mega_shock" + color = "#ede500" + taste_description = "a thousand volts running down your spine" + +/datum/reagent/drink/coffee/nukie/mega/shock/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + ..() + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.nif) + var/obj/item/device/nif/nif = H.nif //L o c a l + if(nif.stat == NIF_TEMPFAIL) + nif.stat = NIF_INSTALLING + nif.repair(removed) + else if(prob(5)) + M.confused = max(M.confused, 20) + M.emote(pick("shudders", "seems lost", "blanks for a moment")) + M.adjust_nutrition(4 * removed) + + +/datum/reagent/drink/coffee/nukie/mega/fast //Like hyperzine, but instead of overdosing, it occassionally burns you + name = "Nukie Mega Rapid" + id = "nukie_mega_fast" + color = "#000000" + taste_description = "more, more, now, quick, get yourself some more, don't stop" + +/datum/reagent/drink/coffee/nukie/mega/fast/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + ..() + if(prob(1)) + M.visible_message("\The [M] sizzles!") + M.adjustFireLoss(5) + M.add_chemical_effect(CE_SPEEDBOOST, 1) + +/datum/reagent/drink/coffee/nukie/mega/high //Simultaneously makes you high and hungry + name = "Nukie Mega Sky" + id = "nukie_mega_high" + color = "#fafafa" + taste_description = "moreishness, you could really go for a proper snack right now" + +/datum/reagent/drink/coffee/nukie/mega/high/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + ..() + var/threshold = 1 * M.species.chem_strength_tox + if(alien == IS_SKRELL) + threshold = 1.2 + + if(alien == IS_SLIME) + threshold = 0.8 + + M.druggy = max(M.druggy, 30) + M.adjust_nutrition(-10 * removed) + + var/drug_strength = 20 + var/effective_dose = dose + if(issmall(M)) effective_dose *= 2 + if(effective_dose < 1 * threshold) + M.apply_effect(3, STUTTER) + M.make_dizzy(5) + if(prob(3)) + M.emote(pick("twitch", "giggle")) + else if(effective_dose < 2 * threshold) + M.apply_effect(3, STUTTER) + M.make_jittery(5) + M.make_dizzy(5) + M.druggy = max(M.druggy, 35) + M.hallucination = max(M.hallucination, drug_strength * threshold) + if(prob(5)) + M.emote(pick("twitch", "giggle")) + else + M.apply_effect(3, STUTTER) + M.make_jittery(10) + M.make_dizzy(10) + M.druggy = max(M.druggy, 40) + M.hallucination = max(M.hallucination, drug_strength * threshold) + if(prob(10)) + M.emote(pick("twitch", "giggle")) + +/datum/reagent/drink/coffee/nukie/mega/shrink //Basically microcillin but for ingesting + name = "Nukie Mega Shrink" + id = "nukie_mega_shrink" + color = "#15ff00" + taste_description = "a plastic bag floating gently on the breeze" + +/datum/reagent/drink/coffee/nukie/mega/shrink/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + ..() + M.resize((M.size_multiplier - 0.01), uncapped = M.has_large_resize_bounds(), aura_animation = FALSE) + +/datum/reagent/drink/coffee/nukie/mega/grow //Basically macrocillin but for ingesting + name = "Nukie Mega Growth" + id = "nukie_mega_growth" + color = "#90ed87" + taste_description = "absurd hugeness" + +/datum/reagent/drink/coffee/nukie/mega/grow/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + ..() + M.resize((M.size_multiplier + 0.01), uncapped = M.has_large_resize_bounds(), aura_animation = FALSE) diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index b93b37da2f4a81ddbd81377bb8364406ca519513..d15f3417d0e0508bcac79d7cbc0ccf4f925947c2 100644 GIT binary patch delta 10322 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 delta 8639 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 WEaIt^m8c22d0r~0%a=ZX9r`~Q4g){{