From a9fda932e2a9d8cf20f5f74fdcbdbcca86d580e6 Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 14 Dec 2022 23:48:20 -0600 Subject: [PATCH] Drinking singulo ignores supermatter hallucinations and pulls nearby objects (#71927) ## About The Pull Request Drinking a singulo will now: - Give immunity to supermatter hallucinations - Pulls objects to you based on the total volume in your system (20u = 1x1, 45u = 2x2, 80u = 3x3) - Makes a burp and supermatter rays/sound when objects are pulled The new ingredient is: - Vokda 5u - Wine 5u - Liquid Dark Matter 1u (replaces Radium) ## Why It's Good For The Game More cool effects for drinks. Singularity is all about gravity and the drink should have a theme around that. ![dreamseeker_2q21YXS698](https://user-images.githubusercontent.com/5195984/207297517-90d26395-dd30-4106-bdd4-b30b1ba3e20b.gif) ## Changelog :cl: add: Drinking singulo will now ignore supermatter hallucinations and pull objects to you balance: Change singulo drink recipe to require liquid dark matter instead of radium. /:cl: --- .../recipes/drinks/drinks_alcoholic.dm | 2 +- .../chemistry/reagents/alcohol_reagents.dm | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm b/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm index dfc0f4c9902..9843d3e380b 100644 --- a/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm +++ b/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm @@ -198,7 +198,7 @@ /datum/chemical_reaction/drink/singulo results = list(/datum/reagent/consumable/ethanol/singulo = 10) - required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 5, /datum/reagent/uranium/radium = 1, /datum/reagent/consumable/ethanol/wine = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 5, /datum/reagent/liquid_dark_matter = 1, /datum/reagent/consumable/ethanol/wine = 5) /datum/chemical_reaction/drink/alliescocktail results = list(/datum/reagent/consumable/ethanol/alliescocktail = 2) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 998b4377388..59595694b58 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -1445,6 +1445,32 @@ quality = DRINK_VERYGOOD taste_description = "concentrated matter" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + var/static/list/ray_filter = list(type = "rays", size = 40, density = 15, color = SUPERMATTER_SINGULARITY_RAYS_COLOUR, factor = 15) + +/datum/reagent/consumable/ethanol/singulo/on_mob_metabolize(mob/living/drinker) + ADD_TRAIT(drinker, TRAIT_MADNESS_IMMUNE, type) + +/datum/reagent/consumable/ethanol/singulo/on_mob_end_metabolize(mob/living/drinker) + REMOVE_TRAIT(drinker, TRAIT_MADNESS_IMMUNE, type) + drinker.remove_filter("singulo_rays") + +/datum/reagent/consumable/ethanol/singulo/on_mob_life(mob/living/carbon/drinker, delta_time, times_fired) + if(DT_PROB(2.5, delta_time)) + // 20u = 1x1, 45u = 2x2, 80u = 3x3 + var/volume_to_radius = FLOOR(sqrt(volume/5), 1) - 1 + var/suck_range = clamp(volume_to_radius, 0, 3) + + if(!suck_range) + return ..() + + var/turf/gravity_well_turf = get_turf(drinker) + goonchem_vortex(gravity_well_turf, 0, suck_range) + playsound(get_turf(drinker), 'sound/effects/supermatter.ogg', 150, TRUE) + drinker.add_filter("singulo_rays", 1, ray_filter) + animate(drinker.get_filter("singulo_rays"), offset = 10, time = 1.5 SECONDS, loop = -1) + addtimer(CALLBACK(drinker, TYPE_PROC_REF(/atom/, remove_filter), "singulo_rays"), 1.5 SECONDS) + drinker.emote("burp") + return ..() /datum/glass_style/drinking_glass/singulo required_drink_type = /datum/reagent/consumable/ethanol/singulo