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