diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 196b32603e9..28a824d3576 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -386,4 +386,4 @@ var/list/bloody_footprints_cache = list() #define PLANT_NORMAL 0 #define PLANT_WEED 1 #define PLANT_MUSHROOM 2 -#define PLANT_ALIEN 3 \ No newline at end of file +#define PLANT_ALIEN 3 diff --git a/code/game/gamemodes/changeling/powers/panacea.dm b/code/game/gamemodes/changeling/powers/panacea.dm index b34d41a7881..e72decb7b34 100644 --- a/code/game/gamemodes/changeling/powers/panacea.dm +++ b/code/game/gamemodes/changeling/powers/panacea.dm @@ -1,6 +1,6 @@ /obj/effect/proc_holder/changeling/panacea name = "Anatomic Panacea" - desc = "Expels impurifications from our form; curing diseases, removing parasites, toxins and radiation, and resetting our genetic code completely." + desc = "Expels impurifications from our form; curing diseases, removing parasites, sobering us, purging toxins and radiation, and resetting our genetic code completely." helptext = "Can be used while unconscious." chemical_cost = 20 dna_cost = 1 @@ -21,6 +21,7 @@ user.reagents.add_reagent("mutadone", 10) user.reagents.add_reagent("potass_iodide", 10) user.reagents.add_reagent("charcoal", 20) + user.reagents.add_reagent("antihol", 10) for(var/datum/disease/D in user.viruses) D.cure() diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 4ad70d8a672..145b97cc6fb 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -621,7 +621,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C /obj/item/weapon/reagent_containers/food/drinks/bottle/tequila = 5,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth = 5,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/wine = 5,/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac = 5, - /obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua = 5,/obj/item/weapon/reagent_containers/food/drinks/beer = 6, + /obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua = 5,/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe = 5, /obj/item/weapon/reagent_containers/food/drinks/ale = 6,/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice = 4, /obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice = 4,/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice = 4, /obj/item/weapon/reagent_containers/food/drinks/bottle/cream = 4,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/tonic = 8, diff --git a/code/modules/food&drinks/drinks/drinks/bottle.dm b/code/modules/food&drinks/drinks/drinks/bottle.dm index 69061995ba6..89bb14f42ab 100644 --- a/code/modules/food&drinks/drinks/drinks/bottle.dm +++ b/code/modules/food&drinks/drinks/drinks/bottle.dm @@ -235,6 +235,12 @@ icon_state = "winebottle" list_reagents = list("wine" = 100) +/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe + name = "T&T Extra-Strong Absinthe" + desc = "An strong alcoholic drink brewed and distributed by Terb & Tonte Inc." + icon_state = "absinthebottle" + list_reagents = list("absinthe" = 100) + //////////////////////////JUICES AND STUFF /////////////////////// /obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice diff --git a/code/modules/food&drinks/drinks/drinks/drinkingglass.dm b/code/modules/food&drinks/drinks/drinks/drinkingglass.dm index bd70905ff91..d8629f5180e 100644 --- a/code/modules/food&drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food&drinks/drinks/drinks/drinkingglass.dm @@ -486,6 +486,26 @@ icon_state = "gibbfloats" name = "Gibbfloat" desc = "Dr. Gibb with ice cream on top." + if("whiskey_sour") + icon_state = "whiskey_sour" + name = "Whiskey Sour" + desc = "Lemon juice mixed with whiskey and a dash of sugar. Surprisingly satisfying." + if("fetching_fizz") + icon_state = "fetching_fizz" + name = "Fetching Fizz" + desc = "Induces magnetism in the imbiber. Started as a barroom prank but evolved to become popular with miners and scrappers. Metallic aftertaste." + if("hearty_punch") + icon_state = "hearty_punch" + name = "Hearty Punch" + desc = "Aromatic beverage served piping hot. According to folk tales it can almost wake the dead." + if("absinthe") + icon_state = "absinthe" + name = "glass of absinthe" + desc = "It's as strong as it smells." + if("bacchus_blessing") + icon_state = "glass_brown2" + name = "Bacchus' Blessing" + desc = "You didn't think it was possible for a liquid to be so utterly revolting. Are you sure about this...?" else icon_state ="glass_brown" var/image/I = image(icon, "glassoverlay") diff --git a/code/modules/food&drinks/recipes/drinks_recipes.dm b/code/modules/food&drinks/recipes/drinks_recipes.dm index c93a638d9b6..c869a11842d 100644 --- a/code/modules/food&drinks/recipes/drinks_recipes.dm +++ b/code/modules/food&drinks/recipes/drinks_recipes.dm @@ -577,4 +577,39 @@ result = "grappa" required_reagents = list ("wine" = 10) required_catalysts = list ("enzyme" = 5) - result_amount = 10 \ No newline at end of file + result_amount = 10 + +/datum/chemical_reaction/whiskey_sour + name = "Whiskey Sour" + id = "whiskey_sour" + result = "whiskey_sour" + required_reagents = list("whiskey" = 1, "lemonjuice" = 1, "sugar" = 1) + result_amount = 3 + mix_message = "The mixture darkens to a rich gold hue." + mix_sound = null + +/datum/chemical_reaction/fetching_fizz + name = "Fetching Fizz" + id = "fetching_fizz" + result = "fetching_fizz" + required_reagents = list("nuka_cola" = 1, "iron" = 1) //Manufacturable from only the mining station + result_amount = 3 + mix_message = "The mixture slightly vibrates before settling." + +/datum/chemical_reaction/hearty_punch + name = "Hearty Punch" + id = "hearty_punch" + result = "hearty_punch" + required_reagents = list("bravebull" = 5, "syndicatebomb" = 5, "absinthe" = 5) + result_amount = 1 //Very little, for balance reasons + mix_message = "The mixture darkens to a healthy crimson." + mix_sound = null + required_temp = 315 //Piping hot! + +/datum/chemical_reaction/bacchus_blessing + name = "Bacchus' Blessing" + id = "bacchus_blessing" + result = "bacchus_blessing" + required_reagents = list("hooch" = 1, "absinthe" = 1, "manlydorf" = 1, "syndicatebomb" = 1) + result_amount = 4 + mix_message = "The mixture turns to a sickening froth." diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index 697462bab78..43d343dcbf9 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -56,6 +56,8 @@ var/mob/living/victim = src.pulling if(victim.stat == CONSCIOUS) src.visible_message("[victim] kicks free of the blood pool just before entering it!") + else if(victim.reagents && victim.reagents.has_reagent("demonsblood")) + visible_message("Something prevents [victim] from entering the pool!", "A strange force is blocking [victim] from entering!") else victim.loc = holder victim.emote("scream") @@ -69,13 +71,19 @@ playsound(get_turf(src),'sound/magic/Demon_consume.ogg', 100, 1) sleep(30) if(kidnapped) - src << "You devour [kidnapped]. Your health is fully restored." - src.adjustBruteLoss(-1000) - src.adjustFireLoss(-1000) - src.adjustOxyLoss(-1000) - src.adjustToxLoss(-1000) - kidnapped.ghostize() - qdel(kidnapped) + if(kidnapped.reagents && kidnapped.reagents.has_reagent("devilskiss")) + src << "AAH! THEIR FLESH! IT BURNS!" + adjustBruteLoss(25) //I can't use adjustHealth() here because bloodcrawl affects /mob/living and adjustHealth() only affects simple mobs + kidnapped.loc = get_turf(B) + kidnapped.visible_message("[B] violently expels [kidnapped]!") + else + src << "You devour [kidnapped]. Your health is fully restored." + src.adjustBruteLoss(-1000) + src.adjustFireLoss(-1000) + src.adjustOxyLoss(-1000) + src.adjustToxLoss(-1000) + kidnapped.ghostize() + qdel(kidnapped) else src << "You happily devour... nothing? Your meal vanished at some point!" src.notransform = 0 diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 6a8d07444aa..5227981c056 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -246,6 +246,21 @@ if(reagents.has_reagent("teslium")) msg += "[t_He] is emitting a gentle blue glow!\n" + if(drunkenness && !skipface && stat != DEAD) //Drunkenness + switch(drunkenness) + if(11 to 21) + msg += "[t_He] [t_is] slightly flushed.\n" + if(21.01 to 41) //.01s are used in case drunkenness ends up to be a small decimal + msg += "[t_He] [t_is] flushed.\n" + if(41.01 to 51) + msg += "[t_He] [t_is] quite flushed and [t_his] breath smells of alcohol.\n" + if(51.01 to 61) + msg += "[t_He] is very flushed and [t_his] movements jerky, with breath reeking of alcohol.\n" + if(61.01 to 91) + msg += "[t_He] looks like a drunken mess.\n" + if(91.01 to INFINITY) + msg += "[t_He] is a shitfaced, slobbering wreck.\n" + msg += "" if(!appears_dead) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index c2a6b07536c..451fd823185 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -951,6 +951,7 @@ L.Insert(src) restore_blood() remove_all_embedded_objects() + drunkenness = 0 for(var/datum/mutation/human/HM in dna.mutations) if(HM.quality != POSITIVE) dna.remove_mutation(HM.name) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 9076f4afcfb..c5ee9ba2d6c 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -53,3 +53,5 @@ var/name_override //For temporary visible name changes var/heart_attack = 0 + + var/drunkenness = 0 //Overall drunkenness - check handle_alcohol() in life.dm for effects diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index ef076900ac1..bdbc67ab555 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -312,4 +312,74 @@ adjustOxyLoss(5) adjustBruteLoss(1) +/* +Alcohol Poisoning Chart +Note that all higher effects of alcohol poisoning will inherit effects for smaller amounts (i.e. light poisoning inherts from slight poisoning) +In addition, severe effects won't always trigger unless the drink is poisonously strong +All effects don't start immediately, but rather get worse over time; the rate is affected by the imbiber's alcohol tolerance + +0: Non-alcoholic +1-10: Barely classifiable as alcohol - occassional slurring +11-20: Slight alcohol content - slurring +21-30: Below average - imbiber begins to look slightly drunk +31-40: Just below average - no unique effects +41-50: Average - mild disorientation, imbiber begins to look drunk +51-60: Just above average - disorientation, vomiting, imbiber begins to look heavily drunk +61-70: Above average - small chance of blurry vision, imbiber begins to look smashed +71-80: High alcohol content - blurry vision, imbiber completely shitfaced +81-90: Extremely high alcohol content - light brain damage, passing out +91-100: Dangerously toxic - swift death +*/ + +/mob/living/carbon/human/handle_status_effects() + ..() + if(drunkenness) + if(sleeping) + drunkenness = max(drunkenness - 1.5, 0) + else + drunkenness = max(drunkenness - 0.2, 0) + + if(drunkenness >= 6) + if(prob(25)) + slurring += 2 + jitteriness = max(jitteriness - 3, 0) + + if(drunkenness >= 11 && slurring < 5) + slurring += 1.2 + + if(drunkenness >= 41) + if(prob(25)) + confused += 2 + Dizzy(10) + + if(drunkenness >= 51) + if(prob(5)) + confused += 10 + vomit() + Dizzy(25) + + if(drunkenness >= 61) + if(prob(50)) + blur_eyes(5) + + if(drunkenness >= 71) + blur_eyes(5) + + if(drunkenness >= 81) + adjustToxLoss(0.2) + if(prob(5) && !stat) + src << "Maybe you should lie down for a bit..." + + if(drunkenness >= 91) + adjustBrainLoss(0.4) + if(prob(20) && !stat) + if(SSshuttle.emergency.mode == SHUTTLE_DOCKED && z == ZLEVEL_STATION) //QoL mainly + src << "You're so tired... but you can't miss that shuttle..." + else + src << "Just a quick nap..." + Sleeping(45) + + if(drunkenness >= 101) + adjustToxLoss(4) //Let's be honest you shouldn't be alive by now + #undef HUMAN_MAX_OXYLOSS diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 5f506aaebad..85ab36335ad 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -57,4 +57,4 @@ var/last_bumped = 0 var/unique_name = 0 //if a mob's name should be appended with an id when created e.g. Mob (666) - var/list/butcher_results = null \ No newline at end of file + var/list/butcher_results = null diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index c65357d392d..4297b94732e 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -378,7 +378,8 @@ var/const/INJECT = 5 //injection var/list/seen = viewers(4, get_turf(my_atom)) if(!istype(my_atom, /mob)) // No bubbling mobs - playsound(get_turf(my_atom), 'sound/effects/bubbles.ogg', 80, 1) + if(C.mix_sound) + playsound(get_turf(my_atom), C.mix_sound, 80, 1) for(var/mob/M in seen) M << "\icon[my_atom] [C.mix_message]" diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 612248bdd0b..7a3c9eb472f 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -270,6 +270,7 @@ /obj/machinery/chem_dispenser/drinks name = "soda dispenser" + desc = "Contains a large reservoir of soft drinks." anchored = 1 icon = 'icons/obj/chemical.dmi' icon_state = "soda_dispenser" @@ -291,7 +292,8 @@ "sugar", "orangejuice", "limejuice", - "tomatojuice" + "tomatojuice", + "lemonjuice" ) /obj/machinery/chem_dispenser/drinks/attackby(obj/item/I, mob/user) @@ -311,16 +313,11 @@ /obj/machinery/chem_dispenser/drinks/beer name = "booze dispenser" + desc = "Contains a large reservoir of the good stuff." anchored = 1 icon = 'icons/obj/chemical.dmi' icon_state = "booze_dispenser" dispensable_reagents = list( - "lemon_lime", - "sugar", - "orangejuice", - "limejuice", - "sodawater", - "tonic", "beer", "kahlua", "whiskey", @@ -331,7 +328,8 @@ "tequila", "vermouth", "cognac", - "ale" + "ale", + "absinthe" ) /obj/machinery/chem_dispenser/mutagen diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index c1c1f1e2603..7537b9a67ec 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -1,17 +1,9 @@ +#define ALCOHOL_THRESHOLD_MODIFIER 0.05 //Greater numbers mean that less alcohol has greater intoxication potential +#define ALCOHOL_RATE 0.005 //The rate at which alcohol affects you - - -/////////////////////////////////////////////////////////////////////////////////////// - //ALCOHOLS -///////////////////////////////////////////////////////////////////////////////////// - -/*boozepwr chart -55 = non-toxic alchohol -45 = medium-toxic -35 = the hard stuff -25 = potent mixes -<15 = deadly toxic -*/ +////////////// I don't know who made this header before I refactored alcohols but I'm going to fucking strangle them because it was so ugly, holy Christ +// ALCOHOLS // +////////////// /datum/reagent/consumable/ethanol name = "Ethanol" @@ -19,36 +11,46 @@ description = "A well-known alcohol with a variety of applications." color = "#404030" // rgb: 64, 64, 48 nutriment_factor = 0 - var/boozepwr = 10 //lower numbers mean the booze will have an effect faster. + var/boozepwr = 65 //Higher numbers equal higher hardness, higher hardness equals more intense alcohol poisoning + +/* +Boozepwr Chart +Note that all higher effects of alcohol poisoning will inherit effects for smaller amounts (i.e. light poisoning inherts from slight poisoning) +In addition, severe effects won't always trigger unless the drink is poisonously strong +All effects don't start immediately, but rather get worse over time; the rate is affected by the imbiber's alcohol tolerance + +0: Non-alcoholic +1-10: Barely classifiable as alcohol - occassional slurring +11-20: Slight alcohol content - slurring +21-30: Below average - imbiber begins to look slightly drunk +31-40: Just below average - no unique effects +41-50: Average - mild disorientation, imbiber begins to look drunk +51-60: Just above average - disorientation, vomiting, imbiber begins to look heavily drunk +61-70: Above average - small chance of blurry vision, imbiber begins to look smashed +71-80: High alcohol content - blurry vision, imbiber completely shitfaced +81-90: Extremely high alcohol content - heavy toxin damage, passing out +91-100: Dangerously toxic - swift death +*/ /datum/reagent/consumable/ethanol/on_mob_life(mob/living/M) - M.jitteriness = max(M.jitteriness-5,0) - if(current_cycle >= boozepwr*0.5) - var/drunk_value = sqrt(volume*1000/boozepwr) - if(volume >= boozepwr*0.2) - if(M.slurring < drunk_value) - M.slurring += 4 - M.Dizzy(drunk_value) - if(volume >= boozepwr*0.8) - if(M.confused < drunk_value) - M.confused += 3 - if(volume >= boozepwr*3.8) - M.adjustToxLoss(1, 0) - . = 1 + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.drunkenness < volume * boozepwr * ALCOHOL_THRESHOLD_MODIFIER) + H.drunkenness = max((H.drunkenness + (sqrt(volume) * boozepwr * ALCOHOL_RATE)), 0) //Volume, power, and server alcohol rate effect how quickly one gets drunk return ..() || . /datum/reagent/consumable/ethanol/reaction_obj(obj/O, reac_volume) if(istype(O,/obj/item/weapon/paper)) var/obj/item/weapon/paper/paperaffected = O paperaffected.clearpaper() - usr << "The solution melts away the ink on the paper." + usr << "[paperaffected]'s ink washes away." if(istype(O,/obj/item/weapon/book)) if(reac_volume >= 5) var/obj/item/weapon/book/affectedbook = O affectedbook.dat = null - usr << "The solution melts away the ink on the book." + usr << "Through thorough application, you wash away [affectedbook]'s writing." else - usr << "It wasn't enough..." + usr << "The ink smears, but doesn't wash away!" return /datum/reagent/consumable/ethanol/reaction_mob(mob/living/M, method=TOUCH, reac_volume)//Splashing people with ethanol isn't quite as good as fuel. @@ -61,17 +63,25 @@ /datum/reagent/consumable/ethanol/beer name = "Beer" id = "beer" - description = "An alcoholic beverage made from malted grains, hops, yeast, and water." + description = "An alcoholic beverage brewed since ancient times on Old Earth. Still popular today." color = "#664300" // rgb: 102, 67, 0 nutriment_factor = 1 * REAGENTS_METABOLISM - boozepwr = 55 + boozepwr = 25 -/datum/reagent/consumable/ethanol/beer/greenbeer +/datum/reagent/consumable/ethanol/beer/green name = "Green Beer" id = "greenbeer" - description = "An alcoholic beverage made from malted grains, hops, yeast, and water. Dyed a festive green." + description = "An alcoholic beverage brewed since ancient times on Old Earth. This variety is dyed a festive green." color = "#A8E61D" +/datum/reagent/consumable/ethanol/beer/green/on_mob_life(mob/living/M) + if(M.color != color) + M.color = color + return ..() + +/datum/reagent/consumable/ethanol/beer/green/on_mob_delete(mob/living/M) + M.color = initial(M.color) + /datum/reagent/consumable/ethanol/kahlua name = "Kahlua" id = "kahlua" @@ -84,15 +94,14 @@ M.drowsyness = max(0,M.drowsyness-3) M.AdjustSleeping(-2, 0) M.Jitter(5) - ..() - return 1 + return ..() /datum/reagent/consumable/ethanol/whiskey name = "Whiskey" id = "whiskey" description = "A superb and well-aged single-malt whiskey. Damn." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 35 + boozepwr = 75 /datum/reagent/consumable/ethanol/thirteenloko name = "Thirteen Loko" @@ -100,7 +109,7 @@ description = "A potent mixture of caffeine and alcohol." color = "#102000" // rgb: 16, 32, 0 nutriment_factor = 1 * REAGENTS_METABOLISM - boozepwr = 35 + boozepwr = 80 /datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/M) M.drowsyness = max(0,M.drowsyness-7) @@ -108,15 +117,14 @@ if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) M.Jitter(5) - ..() - return 1 + return ..() /datum/reagent/consumable/ethanol/vodka name = "Vodka" id = "vodka" description = "Number one drink AND fueling choice for Russians worldwide." color = "#0064C8" // rgb: 0, 100, 200 - boozepwr = 35 + boozepwr = 65 /datum/reagent/consumable/ethanol/vodka/on_mob_life(mob/living/M) M.radiation = max(M.radiation-2,0) @@ -128,7 +136,7 @@ description = "This appears to be beer mixed with milk. Disgusting." color = "#895C4C" // rgb: 137, 92, 76 nutriment_factor = 2 * REAGENTS_METABOLISM - boozepwr = 55 + boozepwr = 15 /datum/reagent/consumable/ethanol/bilk/on_mob_life(mob/living/M) if(M.getBruteLoss() && prob(10)) @@ -141,7 +149,7 @@ id = "threemileisland" description = "Made for a woman, strong enough for a man." color = "#666340" // rgb: 102, 99, 64 - boozepwr = 15 + boozepwr = 10 /datum/reagent/consumable/ethanol/threemileisland/on_mob_life(mob/living/M) M.set_drugginess(50) @@ -152,21 +160,21 @@ id = "gin" description = "It's gin. In space. I say, good sir." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 55 + boozepwr = 45 /datum/reagent/consumable/ethanol/rum name = "Rum" id = "rum" description = "Yohoho and all that." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 45 + boozepwr = 60 /datum/reagent/consumable/ethanol/tequila name = "Tequila" id = "tequila" description = "A strong and mildly flavoured, Mexican produced spirit. Feeling thirsty, hombre?" color = "#FFFF91" // rgb: 255, 255, 145 - boozepwr = 35 + boozepwr = 70 /datum/reagent/consumable/ethanol/vermouth name = "Vermouth" @@ -180,35 +188,47 @@ id = "wine" description = "An premium alcoholic beverage made from distilled grape juice." color = "#7E4043" // rgb: 126, 64, 67 - boozepwr = 45 + boozepwr = 35 /datum/reagent/consumable/ethanol/grappa name = "Grappa" id = "grappa" description = "A fine Italian brandy, for when regular wine just isn't alcoholic enough for you." color = "#F8EBF1" - boozepwr = 35 + boozepwr = 45 /datum/reagent/consumable/ethanol/cognac name = "Cognac" id = "cognac" description = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. Classy as fornication." color = "#AB3C05" // rgb: 171, 60, 5 - boozepwr = 45 + boozepwr = 75 + +/datum/reagent/consumable/ethanol/absinthe + name = "Absinthe" + id = "absinthe" + description = "A powerful alcoholic drink. Rumored to cause hallucinations but does not." + color = rgb(10, 206, 0) + boozepwr = 80 //Very strong even by default + +/datum/reagent/consumable/ethanol/absinthe/on_mob_life(mob/living/M) + if(prob(10)) + M.hallucination += 4 //Reference to the urban myth + ..() /datum/reagent/consumable/ethanol/hooch name = "Hooch" id = "hooch" description = "Either someone's failure at cocktail making or attempt in alchohol production. In any case, do you really want to drink that?" color = "#664300" // rgb: 102, 67, 0 - boozepwr = 35 + boozepwr = 100 /datum/reagent/consumable/ethanol/ale name = "Ale" id = "ale" description = "A dark alchoholic beverage made by malted barley and yeast." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 55 + boozepwr = 65 /datum/reagent/consumable/ethanol/goldschlager name = "Goldschlager" @@ -222,56 +242,70 @@ id = "patron" description = "Tequila with silver in it, a favorite of alcoholic women in the club scene." color = "#585840" // rgb: 88, 88, 64 - boozepwr = 45 + boozepwr = 60 /datum/reagent/consumable/ethanol/gintonic name = "Gin and Tonic" id = "gintonic" description = "An all time classic, mild cocktail." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 55 + boozepwr = 25 /datum/reagent/consumable/ethanol/cuba_libre name = "Cuba Libre" id = "cubalibre" - description = "Rum, mixed with cola. Viva la revolution." + description = "Rum, mixed with cola. Viva la revolucion." color = "#3E1B00" // rgb: 62, 27, 0 - boozepwr = 45 + boozepwr = 50 + +/datum/reagent/consumable/ethanol/cuba_libre/on_mob_life(mob/living/M) + if(M.mind && M.mind.special_role in list("Revolutionary", "Head Revolutionary")) //Cuba Libre, the traditional drink of revolutions! Heals revolutionaries. + M.adjustBruteLoss(-1, 0) + M.adjustFireLoss(-1, 0) + M.adjustToxLoss(-1, 0) + M.adjustOxyLoss(-5, 0) + . = 1 + return ..() || . /datum/reagent/consumable/ethanol/whiskey_cola name = "Whiskey Cola" id = "whiskeycola" description = "Whiskey, mixed with cola. Surprisingly refreshing." color = "#3E1B00" // rgb: 62, 27, 0 - boozepwr = 35 + boozepwr = 70 /datum/reagent/consumable/ethanol/martini name = "Classic Martini" id = "martini" description = "Vermouth with Gin. Not quite how 007 enjoyed it, but still delicious." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 35 + boozepwr = 60 /datum/reagent/consumable/ethanol/vodkamartini name = "Vodka Martini" id = "vodkamartini" description = "Vodka with Gin. Not quite how 007 enjoyed it, but still delicious." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 25 + boozepwr = 65 /datum/reagent/consumable/ethanol/white_russian name = "White Russian" id = "whiterussian" description = "That's just, like, your opinion, man..." color = "#A68340" // rgb: 166, 131, 64 - boozepwr = 35 + boozepwr = 50 /datum/reagent/consumable/ethanol/screwdrivercocktail name = "Screwdriver" id = "screwdrivercocktail" description = "Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious." color = "#A68310" // rgb: 166, 131, 16 - boozepwr = 35 + boozepwr = 55 + +/datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/M) + if(M.mind && M.mind.assigned_role in list("Station Engineer", "Atmospheric Technician", "Chief Engineer")) //Engineers lose radiation poisoning at a massive rate. + M.radiation = max(M.radiation - 25, 0) + return ..() /datum/reagent/consumable/ethanol/booger name = "Booger" @@ -285,28 +319,38 @@ id = "bloodymary" description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 35 + boozepwr = 55 /datum/reagent/consumable/ethanol/brave_bull name = "Brave Bull" id = "bravebull" description = "It's just as effective as Dutch-Courage!." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 35 + boozepwr = 80 + +/datum/reagent/consumable/ethanol/brave_bull/on_mob_life(mob/living/M) + if(M.maxHealth == initial(M.maxHealth)) //Brave Bull makes you sturdier, and thus capable of withstanding a tiny bit more punishment. + M.maxHealth += 5 + M.health += 5 + return ..() + +/datum/reagent/consumable/ethanol/brave_bull/on_mob_delete(mob/living/M) + if(M.maxHealth != initial(M.maxHealth)) + M.maxHealth = initial(M.maxHealth) /datum/reagent/consumable/ethanol/tequila_sunrise name = "Tequila Sunrise" id = "tequilasunrise" description = "Tequila and orange juice. Much like a Screwdriver, only Mexican~" color = "#FFE48C" // rgb: 255, 228, 140 - boozepwr = 35 + boozepwr = 45 /datum/reagent/consumable/ethanol/toxins_special name = "Toxins Special" id = "toxinsspecial" description = "This thing is ON FIRE! CALL THE DAMN SHUTTLE!" color = "#664300" // rgb: 102, 67, 0 - boozepwr = 15 + boozepwr = 25 /datum/reagent/consumable/ethanol/toxins_special/on_mob_life(var/mob/living/M as mob) if (M.bodytemperature < 330) @@ -316,50 +360,49 @@ /datum/reagent/consumable/ethanol/beepsky_smash name = "Beepsky Smash" id = "beepskysmash" - description = "Deny drinking this and prepare for THE LAW." + description = "Drink this and prepare for the LAW." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 25 + boozepwr = 90 //THE FIST OF THE LAW IS STRONG AND HARD metabolization_rate = 0.8 /datum/reagent/consumable/ethanol/beepsky_smash/on_mob_life(mob/living/M) - M.Stun(2) - ..() - return 1 + M.Stun(2, 0) + return ..() /datum/reagent/consumable/ethanol/irish_cream name = "Irish Cream" id = "irishcream" - description = "Whiskey-imbued cream, what else would you expect from the Irish." + description = "Whiskey-imbued cream, what else would you expect from the Irish?" color = "#664300" // rgb: 102, 67, 0 - boozepwr = 35 + boozepwr = 70 /datum/reagent/consumable/ethanol/manly_dorf name = "The Manly Dorf" id = "manlydorf" description = "Beer and Ale, brought together in a delicious mix. Intended for true men only." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 45 //was 10, but really its only beer and ale, both weak alchoholic beverages + boozepwr = 100 //For the manly only /datum/reagent/consumable/ethanol/longislandicedtea name = "Long Island Iced Tea" id = "longislandicedtea" description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 25 + boozepwr = 35 /datum/reagent/consumable/ethanol/moonshine name = "Moonshine" id = "moonshine" description = "You've really hit rock bottom now... your liver packed its bags and left last night." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 25 + boozepwr = 95 /datum/reagent/consumable/ethanol/b52 name = "B-52" id = "b52" description = "Coffee, Irish Cream, and cognac. You will get bombed." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 25 + boozepwr = 85 /datum/reagent/consumable/ethanol/irishcoffee name = "Irish Coffee" @@ -380,21 +423,21 @@ id = "blackrussian" description = "For the lactose-intolerant. Still as classy as a White Russian." color = "#360000" // rgb: 54, 0, 0 - boozepwr = 35 + boozepwr = 70 /datum/reagent/consumable/ethanol/manhattan name = "Manhattan" id = "manhattan" description = "The Detective's undercover drink of choice. He never could stomach gin..." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 45 + boozepwr = 30 /datum/reagent/consumable/ethanol/manhattan_proj name = "Manhattan Project" id = "manhattan_proj" description = "A scientist's drink of choice, for pondering ways to blow up the station." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 15 + boozepwr = 45 /datum/reagent/consumable/ethanol/manhattan_proj/on_mob_life(mob/living/M) M.set_drugginess(30) @@ -405,14 +448,14 @@ id = "whiskeysoda" description = "For the more refined griffon." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 35 + boozepwr = 70 /datum/reagent/consumable/ethanol/antifreeze name = "Anti-freeze" id = "antifreeze" - description = "Ultimate refreshment." + description = "The ultimate refreshment. Not what it sounds like." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 25 + boozepwr = 35 /datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/M) if (M.bodytemperature < 330) @@ -422,30 +465,45 @@ /datum/reagent/consumable/ethanol/barefoot name = "Barefoot" id = "barefoot" - description = "Barefoot and pregnant" + description = "Barefoot and pregnant." color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 +/datum/reagent/consumable/ethanol/barefoot/on_mob_life(mob/living/M) + if(ishuman(M)) //Barefoot causes the imbiber to quickly regenerate brute trauma if they're not wearing shoes. + var/mob/living/carbon/human/H = M + if(!H.shoes) + H.adjustBruteLoss(-3, 0) + . = 1 + return ..() || . + /datum/reagent/consumable/ethanol/snowwhite name = "Snow White" id = "snowwhite" - description = "A cold refreshment" + description = "A cold refreshment." color = "#FFFFFF" // rgb: 255, 255, 255 - boozepwr = 45 + boozepwr = 35 -/datum/reagent/consumable/ethanol/demonsblood - name = "Demons Blood" +/datum/reagent/consumable/ethanol/demonsblood //Prevents the imbiber from being dragged into a pool of blood by a slaughter demon. + name = "Demon's Blood" id = "demonsblood" description = "AHHHH!!!!" color = "#820000" // rgb: 130, 0, 0 - boozepwr = 35 + boozepwr = 75 + +/datum/reagent/consumable/ethanol/devilskiss //If eaten by a slaughter demon, the demon will regret it. + name = "Devil's Kiss" + id = "devilskiss" + description = "Creepy time!" + color = "#A68310" // rgb: 166, 131, 16 + boozepwr = 70 /datum/reagent/consumable/ethanol/vodkatonic name = "Vodka and Tonic" id = "vodkatonic" - description = "For when a gin and tonic isn't russian enough." + description = "For when a gin and tonic isn't Russian enough." color = "#0064C8" // rgb: 0, 100, 200 - boozepwr = 35 + boozepwr = 70 /datum/reagent/consumable/ethanol/ginfizz name = "Gin Fizz" @@ -455,7 +513,7 @@ boozepwr = 45 /datum/reagent/consumable/ethanol/bahama_mama - name = "Bahama mama" + name = "Bahama Mama" id = "bahama_mama" description = "Tropical cocktail." color = "#FF7F3B" // rgb: 255, 127, 59 @@ -466,33 +524,26 @@ id = "singulo" description = "A blue-space beverage!" color = "#2E6671" // rgb: 46, 102, 113 - boozepwr = 15 + boozepwr = 35 /datum/reagent/consumable/ethanol/sbiten name = "Sbiten" id = "sbiten" description = "A spicy Vodka! Might be a little hot for the little guys!" color = "#664300" // rgb: 102, 67, 0 - boozepwr = 35 + boozepwr = 70 /datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/M) if (M.bodytemperature < 360) M.bodytemperature = min(360, M.bodytemperature + (50 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055 return ..() -/datum/reagent/consumable/ethanol/devilskiss - name = "Devils Kiss" - id = "devilskiss" - description = "Creepy time!" - color = "#A68310" // rgb: 166, 131, 16 - boozepwr = 35 - /datum/reagent/consumable/ethanol/red_mead name = "Red Mead" id = "red_mead" description = "The true Viking drink! Even though it has a strange red color." color = "#C73C00" // rgb: 199, 60, 0 - boozepwr = 45 + boozepwr = 51 //Red drinks are stronger /datum/reagent/consumable/ethanol/mead name = "Mead" @@ -500,14 +551,14 @@ description = "A Viking drink, though a cheap one." color = "#664300" // rgb: 102, 67, 0 nutriment_factor = 1 * REAGENTS_METABOLISM - boozepwr = 45 + boozepwr = 50 /datum/reagent/consumable/ethanol/iced_beer name = "Iced Beer" id = "iced_beer" description = "A beer which is so cold the air around it freezes." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 55 + boozepwr = 15 /datum/reagent/consumable/ethanol/iced_beer/on_mob_life(mob/living/M) if(M.bodytemperature > 270) @@ -519,7 +570,7 @@ id = "grog" description = "Watered down rum, Nanotrasen approves!" color = "#664300" // rgb: 102, 67, 0 - boozepwr = 90 + boozepwr = 1 //Basically nothing /datum/reagent/consumable/ethanol/aloe name = "Aloe" @@ -533,21 +584,21 @@ id = "andalusia" description = "A nice, strange named drink." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 35 + boozepwr = 40 /datum/reagent/consumable/ethanol/alliescocktail name = "Allies Cocktail" id = "alliescocktail" - description = "A drink made from your allies, not as sweet as when made from your enemies." + description = "A drink made from your allies. Not as sweet as those made from your enemies." color = "#664300" // rgb: 102, 67, 0 - boozepwr = 35 + boozepwr = 45 /datum/reagent/consumable/ethanol/acid_spit name = "Acid Spit" id = "acidspit" description = "A drink for the daring, can be deadly if incorrectly prepared!" color = "#365000" // rgb: 54, 80, 0 - boozepwr = 45 + boozepwr = 80 /datum/reagent/consumable/ethanol/amasec name = "Amasec" @@ -561,7 +612,13 @@ id = "changelingsting" description = "You take a tiny sip and feel a burning sensation..." color = "#2E6671" // rgb: 46, 102, 113 - boozepwr = 15 + boozepwr = 95 + +/datum/reagent/consumable/ethanol/changelingsting/on_mob_life(mob/living/M) + if(M.mind && M.mind.changeling) //Changeling Sting assists in the recharging of changeling chemicals. + M.mind.changeling.chem_charges += metabolization_rate + M.mind.changeling.chem_charges = Clamp(M.mind.changeling.chem_charges, 0, M.mind.changeling.chem_storage) + return ..() /datum/reagent/consumable/ethanol/irishcarbomb name = "Irish Car Bomb" @@ -575,7 +632,12 @@ id = "syndicatebomb" description = "Tastes like terrorism!" color = "#2E6671" // rgb: 46, 102, 113 - boozepwr = 15 + boozepwr = 90 + +/datum/reagent/consumable/ethanol/syndicatebomb/on_mob_life(mob/living/M) + if(prob(5)) + playsound(get_turf(M), 'sound/effects/explosionfar.ogg', 100, 1) + return ..() /datum/reagent/consumable/ethanol/erikasurprise name = "Erika Surprise" @@ -590,7 +652,7 @@ description = "Only for the experienced. You think you see sand floating in the glass." nutriment_factor = 1 * REAGENTS_METABOLISM color = "#2E6671" // rgb: 46, 102, 113 - boozepwr = 25 + boozepwr = 65 /datum/reagent/consumable/ethanol/bananahonk name = "Banana Mama" @@ -598,7 +660,7 @@ description = "A drink from Clown Heaven." nutriment_factor = 1 * REAGENTS_METABOLISM color = "#FFFF91" // rgb: 255, 255, 140 - boozepwr = 25 + boozepwr = 60 /datum/reagent/consumable/ethanol/bananahonk/on_mob_life(mob/living/M) if( ( istype(M, /mob/living/carbon/human) && M.job in list("Clown") ) || istype(M, /mob/living/carbon/monkey) ) @@ -612,7 +674,7 @@ description = "A drink from Mime Heaven." nutriment_factor = 1 * REAGENTS_METABOLISM color = "#664300" // rgb: 102, 67, 0 - boozepwr = 15 + boozepwr = 59 //Proof that clowns are better than mimes right here /datum/reagent/consumable/ethanol/silencer/on_mob_life(mob/living/M) if(istype(M, /mob/living/carbon/human) && M.job in list("Mime")) @@ -625,4 +687,49 @@ id = "drunkenblumpkin" description = "A weird mix of whiskey and blumpkin juice." color = "#1EA0FF" // rgb: 102, 67, 0 - boozepwr = 35 \ No newline at end of file + boozepwr = 50 + +/datum/reagent/consumable/ethanol/whiskey_sour //Requested since we had whiskey cola and soda but not sour. + name = "Whiskey Sour" + id = "whiskey_sour" + description = "Lemon juice/whiskey/sugar mixture. Moderate alcohol content." + color = rgb(255, 201, 49) + boozepwr = 35 + +/datum/reagent/consumable/ethanol/fetching_fizz //A reference to one of my favorite games of all time. Pulls nearby ores to the imbiber! + name = "Fetching Fizz" + id = "fetching_fizz" + description = "Whiskey sour/iron/uranium mixture resulting in highly magnetic slurry. Mild alcohol content." //Requires no alcohol to make but has alcohol anyway because ~magic~ + color = rgb(255, 91, 15) + boozepwr = 10 + metabolization_rate = 0.1 * REAGENTS_METABOLISM + +/datum/reagent/consumable/ethanol/fetching_fizz/on_mob_life(mob/living/M) + for(var/obj/item/weapon/ore/O in orange(3, M)) + step_towards(O, get_turf(M)) + return ..() + +/datum/reagent/consumable/ethanol/hearty_punch //Another reference. Heals those in critical condition extremely quickly. If you die with it in your system, it will be removed and you will live! + name = "Hearty Punch" + id = "hearty_punch" + description = "Brave bull/syndicate bomb/absinthe mixture resulting in an energizing beverage. Mild alcohol content." + color = rgb(140, 0, 0) + boozepwr = 10 + metabolization_rate = 0.1 * REAGENTS_METABOLISM + +/datum/reagent/consumable/ethanol/hearty_punch/on_mob_life(mob/living/M) + if(M.stat == UNCONSCIOUS && M.health <= 0) + M.adjustBruteLoss(-7, 0) + M.adjustFireLoss(-7, 0) + M.adjustToxLoss(-7, 0) + M.adjustOxyLoss(-7, 0) + M.adjustCloneLoss(-7, 0) + . = 1 + return ..() || . + +/datum/reagent/consumable/ethanol/bacchus_blessing //An EXTREMELY powerful drink. Smashed in seconds, dead in minutes. + name = "Bacchus' Blessing" + id = "bacchus_blessing" + description = "Unidentifiable mixture. Unmeasurably high alcohol content." + color = rgb(51, 19, 3) //Sickly brown + boozepwr = 300 //I warned you diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index dc099bbbe64..e65f633be04 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -766,6 +766,9 @@ M.confused = 0 M.reagents.remove_all_type(/datum/reagent/consumable/ethanol, 3*REM, 0, 1) M.adjustToxLoss(-0.2*REM, 0) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + H.drunkenness = max(H.drunkenness - 10, 0) ..() . = 1 diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index c03e3cf066f..373f233b875 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -14,7 +14,8 @@ var/mob_react = 0 //Determines if a chemical reaction can occur inside a mob var/required_temp = 0 - var/mix_message = "The solution begins to bubble." + var/mix_message = "The solution begins to bubble." //The message shown to nearby people upon mixing, if applicable + var/mix_sound = 'sound/effects/bubbles.ogg' //The sound played upon mixing, if applicable /datum/chemical_reaction/proc/on_reaction(datum/reagents/holder, created_volume) return diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index b2518ca7fd4..f66c78eb8ec 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ