Add 23 new drinks; update bar manual. (#31026)

* Add 23 new drinks; update bar manual.
- Add three new drinks that use the beet shrub and their effects
- Add nine new synthanolic drinks and their effects
- Add two new soft drinks for both synthetic and organic customers, and their effects
- Add 10 new soft drinks for synthetic customers and their effects
- Add decals for reagent splashes and drips
- Update bar manual to include these drinks as well as all other mixed drinks currently on the wiki
- Add new sprite for welding fuel in a glass to reflect the liquid's color instead of Dr. Gibb
- Add chemistry recipes to mix electrolytes
- Change Robot Tears' drink difficulty to easy, to reflect the loss of ubiquitous oil tanks
- Add many, many puns, both visual and in written text

* Thanks, linters!

* Thanks, linters! (part 2)

* Thanks, linters! (part 3)

* Incorporate review suggestions.
- Add reagents to the zero day drips
- Rewrite many if statements to be early returns/continues
- Use nutrition defines
- Make hard and soft reset also purge themselves (my choice)

* Update dryer martini sprite to match proposal #31050

* Incorporate review suggestions.
- Remove reagents, weren't needed.
- Make sure basecolor is applied.
- Convert more if-blocks to early returns.
- Adjust spacing in function calls to match standard.

* Implement whitespace suggestions from review.
This commit is contained in:
Alan
2025-11-26 16:24:06 -05:00
committed by GitHub
parent ae642762fc
commit b29d968148
11 changed files with 849 additions and 19 deletions
@@ -1199,6 +1199,30 @@
return
return ..() | update_flags
/datum/reagent/consumable/ethanol/gfs
name = "GFS"
id = "gfs"
description = "Gin, fernet, shrub. Simple, sour, and sweet."
color = "#7e0243"
alcohol_perc = 0.25
drink_icon = "gfs_glass"
drink_name = "Glass of GFS"
drink_desc = "Gin, fernet, shrub. Simple, sour, and sweet."
taste_description = "sweetness tempered by earthy beets"
goal_difficulty = REAGENT_GOAL_HARD
/datum/reagent/consumable/ethanol/shrub_julep
name = "Shrub Julep"
id = "shrub_julep"
description = "A bit spicy. Incredibly refreshing."
color = "#7e0243"
alcohol_perc = 0.15
drink_icon = "shrub_julep_glass"
drink_name = "Glass of Shrub Julep"
drink_desc = "A bit spicy. Incredibly refreshing."
taste_description = "chilly mint and earthy beets"
goal_difficulty = REAGENT_GOAL_HARD
// ROBOT ALCOHOL PAST THIS POINT
// WOOO!
@@ -1216,11 +1240,12 @@
/datum/reagent/consumable/ethanol/synthanol/on_mob_life(mob/living/M)
metabolization_rate = REAGENTS_METABOLISM
if(!(M.dna.species.reagent_tag & PROCESS_SYN))
metabolization_rate += 3.6 //gets removed from organics very fast
if(prob(25))
metabolization_rate += 15
M.fakevomit()
if(M.dna.species.reagent_tag & PROCESS_SYN)
return ..()
metabolization_rate += 3.6 // gets removed from organics very fast
if(prob(25))
metabolization_rate += 15
M.fakevomit()
return ..()
/datum/reagent/consumable/ethanol/synthanol/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume)
@@ -1239,6 +1264,7 @@
drink_name = "Glass of Robot Tears"
drink_desc = "No robots were hurt in the making of this drink."
taste_description = "existential angst"
goal_difficulty = REAGENT_GOAL_EASY
/datum/reagent/consumable/ethanol/synthanol/trinary
name = "Trinary"
@@ -1299,6 +1325,214 @@
drink_desc = "Someone mixed good wine and robot booze. Romantic, but atrocious."
taste_description = "fancy motor oil"
/datum/reagent/consumable/ethanol/synthanol/gear_grinder
name = "Gear Grinder"
id = "gear_grinder"
description = "A gritty mixture that looks even worse for organics than it is for robots."
color = "#524745"
alcohol_perc = 0.25
drink_icon = "gear_grinder_glass"
drink_name = "Glass of Gear Grinder"
drink_desc = "Someone mixed good wine and robot booze. Romantic, but atrocious."
taste_description = "vingear and regret"
COOLDOWN_DECLARE(drink_message_cooldown)
goal_difficulty = REAGENT_GOAL_HARD
/datum/reagent/consumable/ethanol/synthanol/gear_grinder/on_mob_life(mob/living/M)
if(!(M.dna.species.reagent_tag & PROCESS_SYN))
return ..()
M.SetSlowed(8, 2)
if(COOLDOWN_FINISHED(src, drink_message_cooldown))
to_chat(M, "Your joints struggle to move.")
COOLDOWN_START(src, drink_message_cooldown, 10 SECONDS)
return ..()
/datum/reagent/consumable/ethanol/synthanol/runtime
name = "Runtime"
id = "runtime"
description = "That color doesn't look right..."
color = "#ac0649"
alcohol_perc = 0.3
dizzy_adj = 10 SECONDS
drink_icon = "runtime_glass"
drink_name = "Glass of Runtime"
drink_desc = "Looks like there was some kind of error while mixing this drink."
taste_description = "something only half-describable"
goal_difficulty = REAGENT_GOAL_EASY
/datum/reagent/consumable/ethanol/synthanol/runtime/on_mob_life(mob/living/M)
if((M.dna.species.reagent_tag & PROCESS_SYN) && prob(20))
M.Hallucinate(10 SECONDS)
return ..()
/datum/reagent/consumable/ethanol/synthanol/stack_trace
name = "Stack Trace"
id = "stack_trace"
description = "A glistering green beverage."
color = "#2ed92e"
alcohol_perc = 0.2
drink_icon = "stack_trace_glass"
drink_name = "Glass of Stack Trace"
drink_desc = "A glistering green beverage, best of both its components."
taste_description = "sweet, sweet progress"
goal_difficulty = REAGENT_GOAL_NORMAL
/datum/reagent/consumable/ethanol/synthanol/csv
name = "CSV"
id = "csv"
description = "Cognac, synthanol, vodka."
color = "#f5303c"
alcohol_perc = 0.3
drink_icon = "csv_glass"
drink_name = "Glass of CSV"
drink_desc = "Cognac, synthanol, vodka. Sadly, the comma can't separate the literal fluids."
taste_description = "late-night spreadsheets"
goal_difficulty = REAGENT_GOAL_EASY
/datum/reagent/consumable/ethanol/synthanol/hard_reset
name = "Hard Reset"
id = "hard_reset"
description = "This looks like it'll set your systems right."
color = "#1b1c20"
dizzy_adj = 2 SECONDS
drink_icon = "hard_reset_glass"
drink_name = "Glass of Hard Reset"
drink_desc = "Have you tried unplugging it and plugging it back in?"
taste_description = "a full stop"
COOLDOWN_DECLARE(reboot_cooldown)
goal_difficulty = REAGENT_GOAL_HARD
/datum/reagent/consumable/ethanol/synthanol/hard_reset/on_mob_life(mob/living/M)
if(!(M.dna.species.reagent_tag & PROCESS_SYN))
return ..()
for(var/obj/effect/decal/cleanable/C in M)
qdel(C)
M.clean_blood()
SEND_SIGNAL(src, COMSIG_COMPONENT_CLEAN_ACT)
var/mob/living/carbon/Mc = M
if(istype(Mc))
Mc.wetlevel = 0
M.germ_level -= min(volume * 30, M.germ_level)
if(COOLDOWN_FINISHED(src, reboot_cooldown) && prob(10))
to_chat(M, "<span class='notice'>Your systems prepare for a reboot.</span>")
M.Paralyse(5 SECONDS)
M.Drowsy(20 SECONDS)
metabolization_rate += 4.6 // get rid of it faster after rebooting
COOLDOWN_START(src, reboot_cooldown, 5 MINUTES)
if(prob(50))
M.AdjustConfused(-10 SECONDS)
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R == src)
M.reagents.remove_reagent(R.id, 2)
continue
if(R.id == "ultralube" || R.id == "lube")
// Flushes lube and ultra-lube even faster than other chems
M.reagents.remove_reagent(R.id, 10)
else
M.reagents.remove_reagent(R.id, 4)
return ..()
/datum/reagent/consumable/ethanol/synthanol/overclock_somewhere
name = "It's Overclock Somewhere"
id = "overclock_somewhere"
description = "A premium mix of premium lubricants for robots."
color = "#107bd6"
shock_reduction = 20
dizzy_adj = 30 SECONDS
drink_icon = "overclock_somewhere_glass"
drink_name = "Glass of It's Overclock Somewhere"
drink_desc = "Break things fast."
taste_description = "greased lightning"
goal_difficulty = REAGENT_GOAL_HARD
/datum/reagent/consumable/ethanol/synthanol/overclock_somewhere/on_mob_life(mob/living/M)
if(!(M.dna.species.reagent_tag & PROCESS_SYN))
return ..()
M.reagents.add_reagent("ultralube", 0.2)
M.Confused(2 SECONDS)
return ..()
/datum/reagent/consumable/ethanol/synthanol/bluescreen
name = "Bluescreen"
id = "bluescreen"
description = "A great way to give any robot synthanol poisoning."
color = "#0000ff"
alcohol_perc = 0.7
dizzy_adj = 20 SECONDS
drink_icon = "bluescreen_glass"
drink_name = "Glass of Bluescreen"
drink_desc = "You can't tell whether the scrolling messages are a good thing or a bad thing."
taste_description = "segmentation fault"
COOLDOWN_DECLARE(monitor_change_cooldown)
COOLDOWN_DECLARE(drink_drowsiness_cooldown)
goal_difficulty = REAGENT_GOAL_EASY
/datum/reagent/consumable/ethanol/synthanol/bluescreen/on_mob_life(mob/living/M)
if(!(M.dna.species.reagent_tag & PROCESS_SYN))
return ..()
if(prob(20) && COOLDOWN_FINISHED(src, monitor_change_cooldown))
COOLDOWN_START(src, monitor_change_cooldown, 1 MINUTES)
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/head/head_organ = M.get_organ("head")
var/datum/robolimb/robohead = GLOB.all_robolimbs[head_organ.model]
if(head_organ && robohead.is_monitor)
H.change_hair("Blue IPC Screen", 1)
var/bluescreen_message = pick("Stack underflow.", "Null pointer exception.", "Syntax error.", "500 Internal Server Error.", "Segmentation fault.", "Runtime exception.", "418 I'm a teapot.", "Could not open [M]: No such file or directory.", "fatal: not a git repository (or any of the parent directories): .git", "Display error: No signal.")
to_chat(M, "<span class='warning'>[bluescreen_message]</span>")
if(prob(50) && COOLDOWN_FINISHED(src, drink_drowsiness_cooldown))
M.EyeBlurry(10 SECONDS)
M.Drowsy(5 SECONDS)
COOLDOWN_START(src, drink_drowsiness_cooldown, 1 MINUTES)
return ..()
/datum/reagent/consumable/ethanol/synthanol/burnout
name = "Burnout"
id = "burnout"
description = "A fiery mixture for robots' enjoyment."
color = "#1bb1ff"
alcohol_perc = 0.3
drink_icon = "burnout_glass"
drink_name = "Glass of Burnout"
drink_desc = "Perfect, if you want a drink that really burns."
taste_description = "white-hot metal"
goal_difficulty = REAGENT_GOAL_NORMAL
/datum/reagent/consumable/ethanol/synthanol/burnout/on_mob_life(mob/living/M)
if(!(M.dna.species.reagent_tag & PROCESS_SYN))
return ..()
var/update_flags = STATUS_UPDATE_NONE
M.bodytemperature += 8
if(prob(5))
update_flags |= M.adjustFireLoss(5, FALSE)
var/burn_message = pick("Your wires singe!", "Your fans are working overtime!", "It burns...!")
to_chat(M, "<span class='userdanger'>[burn_message]</span>")
return ..() | update_flags
/datum/reagent/consumable/ethanol/synthanol/dryer_martini
name = "Dryer Martini"
id = "dryer_martini"
description = "In general, you want the martini to taste dry, not dry up."
color = "#d004e7"
dizzy_adj = 14 SECONDS
drink_icon = "dryer_martini_glass"
drink_name = "Glass of Dryer Martini"
drink_desc = "No matter how much you fill it, only a short paste remains in the bottom of the glass."
taste_description = "synthanolic paste"
COOLDOWN_DECLARE(drink_message_cooldown)
goal_difficulty = REAGENT_GOAL_NORMAL
/datum/reagent/consumable/ethanol/synthanol/dryer_martini/on_mob_life(mob/living/M)
if(!(M.dna.species.reagent_tag & PROCESS_SYN))
return ..()
if(prob(30))
var/mob/living/carbon/Mc = M
if(istype(Mc) && Mc.wetlevel > 0)
Mc.wetlevel -= 1
if(COOLDOWN_FINISHED(src, drink_message_cooldown))
to_chat(M, "The martini dries your peripherals somewhat.")
COOLDOWN_START(src, drink_message_cooldown, 5 SECONDS)
return ..()
/datum/reagent/consumable/ethanol/fruit_wine
name = "Fruit Wine"
id = "fruit_wine"
@@ -1022,3 +1022,285 @@
drink_name = "Glass of Ginger Ale"
drink_desc = "Spicy and fizzy soda."
taste_description = "sweet, carbonated ginger"
/datum/reagent/consumable/drink/electrolytes/top_up
name = "Top-Up"
description = "A sports drink for the busy spessman."
id = "top_up"
color = "#3c5e8b"
drink_icon = "top_up_glass"
drink_name = "Glass of Top-Up"
drink_desc = "A sports drink for the busy spessman."
taste_description = "lemony lectrolytes"
/datum/reagent/consumable/drink/electrolytes/zero_day
name = "Zero Day"
description = "This beverage keeps leaking and leaking."
id = "zero_day"
color = "#9dafad"
drink_icon = "zero_day_glass"
drink_name = "Glass of Zero Day"
drink_desc = "A data breach in a glass."
taste_description = "half-emptiness"
COOLDOWN_DECLARE(drip_cooldown)
/datum/reagent/consumable/drink/electrolytes/zero_day/on_new(data)
..()
START_PROCESSING(SSprocessing, src)
/datum/reagent/consumable/drink/electrolytes/zero_day/process()
if(!..())
return
if(!istype(holder.my_atom, /obj/item/reagent_containers/iv_bag) && !istype(holder.my_atom, /obj/item/reagent_containers/drinks))
return
if(!COOLDOWN_FINISHED(src, drip_cooldown))
return
holder.remove_reagent("zero_day", 1)
var/turf/T = get_turf(holder.my_atom)
var/drop_type = /obj/effect/decal/cleanable/reagent/drip
var/obj/effect/decal/cleanable/reagent/drip/drop = locate() in T
if(drop)
if(drop.amount < 5)
drop.amount++
var/image/I = image(drop.icon, drop.random_icon_states)
I.icon += drop.basecolor
drop.overlays |= I
drop.basecolor = color
drop.update_icon()
else
drop = new drop_type(T, color)
drop.desc = "Looks like someone spilled their drink."
drop.update_icon()
COOLDOWN_START(src, drip_cooldown, 2.6 SECONDS)
/datum/reagent/consumable/drink/electrolytes/tcp_sip
name = "TCP Sip"
description = "A non-synthanolic refreshment for synthetics."
id = "tcp_sip"
color = "#467ae6"
drink_icon = "tcp_sip_glass"
drink_name = "Glass of TCP Sip"
drink_desc = "A non-synthanolic refreshment for synthetics."
taste_description = "half-emptiness"
/datum/reagent/consumable/drink/electrolytes/tcp_sip/on_mob_life(mob/living/M)
metabolization_rate = REAGENTS_METABOLISM
if(M.dna.species.reagent_tag & PROCESS_SYN)
return ..()
metabolization_rate += 3.6 // gets removed from organics very fast
if(prob(25))
metabolization_rate += 15
M.fakevomit()
return ..()
/datum/reagent/consumable/drink/electrolytes/tcp_sip/ginger_beep
name = "ginger_beep"
description = "A gingery refreshment for synthetics."
id = "ginger_beep"
color = "#bd994d"
drink_icon = "ginger_beep_glass"
drink_name = "Glass of Ginger Beep"
drink_desc = "A gingery refreshment for synthetics. Fizzy, too."
taste_description = "static and spice"
/datum/reagent/consumable/drink/electrolytes/tcp_sip/cog_a_cola
name = "Cog-a-Cola"
description = "A non-synthanolic soda for synthetics."
id = "cog_a_cola"
color = "#7f300b"
drink_icon = "cog_a_cola_glass"
drink_name = "Glass of Cog-a-Cola"
drink_desc = "A non-synthanolic soda for synthetics."
taste_description = "sugary bubbles with a hint of oil"
/datum/reagent/consumable/drink/electrolytes/tcp_sip/electrocharge
name = "Electrocharge"
description = "A non-synthanolic beverage to keep a synthetic's battery high."
id = "electrocharge"
color = "#9090a8"
drink_icon = "electrocharge_glass"
drink_name = "Glass of Electrocharge"
drink_desc = "A real charge-up for synthetics."
taste_description = "a full battery"
COOLDOWN_DECLARE(drink_message_cooldown)
COOLDOWN_DECLARE(drink_overcharge_cooldown)
/datum/reagent/consumable/drink/electrolytes/tcp_sip/electrocharge/on_mob_life(mob/living/M)
metabolization_rate = REAGENTS_METABOLISM
if(!(M.dna.species.reagent_tag & PROCESS_SYN))
return ..()
var/obj/item/organ/internal/cell/microbattery = M.get_organ_slot("heart")
if(!istype(microbattery)) // if there's no microbattery don't bother
return ..()
if(M.nutrition > NUTRITION_LEVEL_FULL && prob(10) && COOLDOWN_FINISHED(src, drink_overcharge_cooldown))
do_sparks(2, FALSE, M)
M.visible_message(
"<span class='notice'>[M] lets off a few sparks.</span>",
"<span class='notice'>You feel a little <i>too</i> charged up.</span>",
"<span class='notice'>Something fizzles nearby.</span>"
)
microbattery.receive_damage(2, TRUE) // this drink is not great for you when you're already charged
COOLDOWN_START(src, drink_overcharge_cooldown, 30 SECONDS)
if(M.nutrition < NUTRITION_LEVEL_WELL_FED)
M.nutrition += 1
if(M.nutrition < NUTRITION_LEVEL_HUNGRY)
metabolization_rate += 0.8 // charging triple means burning through triple
M.nutrition += 2
if(COOLDOWN_FINISHED(src, drink_message_cooldown))
to_chat(M, "<span class='notice'>You feel relief surging through your wires!</span>")
COOLDOWN_START(src, drink_message_cooldown, 10 MINUTES)
return ..()
/datum/reagent/consumable/drink/electrolytes/tcp_sip/battery_acid
name = "Battery Acid"
description = "An acidic beverage for synthetics."
id = "battery_acid"
color = "#d0e7ea"
drink_icon = "battery_acid_glass"
drink_name = "Glass of Battery Acid"
drink_desc = "So acidic, it forms an acid like its namesake on the rim of the glass."
taste_description = "fried wires"
/datum/reagent/consumable/drink/electrolytes/tcp_sip/processor_punch
name = "Processor Punch"
description = "A sweetened, non-synthanolic, synthetic sip."
id = "processor_punch"
color = "#88242d"
drink_icon = "processor_punch_glass"
drink_name = "Glass of Processor Punch"
drink_desc = "A sweetened, non-synthanolic, synthetic sip."
taste_description = "a punch to the processors"
/datum/reagent/consumable/drink/bubbly_beep
name = "Bubbly Beep"
description = "A squeaky-clean, foamy, synthetic beverage."
id = "bubbly_beep"
color = "#2984d1"
drink_icon = "bubbly_beep_glass"
drink_name = "Glass of Bubbly Beep"
drink_desc = "The cleanest, bubbliest drink on the station."
taste_description = "decontamination"
process_flags = SYNTHETIC | ORGANIC
/datum/reagent/consumable/drink/bubbly_beep/on_mob_life(mob/living/M)
metabolization_rate = REAGENTS_METABOLISM
if(!(M.dna.species.reagent_tag & PROCESS_SYN))
metabolization_rate += 3.6 // gets removed from organics very fast
if(prob(50))
metabolization_rate += 30
M.fakevomit()
return ..()
if(/obj/effect/decal/cleanable in M)
qdel(pick(/obj/effect/decal/cleanable/ in M))
else
M.clean_blood()
to_chat(M, "<span class='notice'>The foam cleans you as it bubbles through your components.</span>")
SEND_SIGNAL(src, COMSIG_COMPONENT_CLEAN_ACT)
return ..()
/datum/reagent/consumable/drink/tin_and_tonic
name = "Tin and Tonic"
description = "A good sip for a synthetic curious about quinine."
id = "tin_and_tonic"
color = "#61a6a8"
drink_icon = "tin_and_tonic_glass"
drink_name = "Glass of Tin and Tonic"
drink_desc = "A good sip for a synthetic curious about quinine."
taste_description = "smoothly-running processors"
process_flags = SYNTHETIC | ORGANIC
/datum/reagent/consumable/drink/tin_and_tonic/on_mob_life(mob/living/M)
metabolization_rate = REAGENTS_METABOLISM
if(!(M.dna.species.reagent_tag & PROCESS_SYN))
metabolization_rate += 3.6 // gets removed from organics very fast
return ..()
var/update_flags = STATUS_UPDATE_NONE
update_flags |= M.adjustBrainLoss(-0.5, FALSE)
return ..() | update_flags
/datum/reagent/consumable/drink/salt_and_battery
name = "Salt and Battery"
description = "A particularly offensive beverage for synthetics."
id = "salt_and_battery"
color = "#959595"
drink_icon = "salt_and_battery_glass"
drink_name = "Glass of Salt and Battery"
drink_desc = "Looks like it'll charge you up, but really it'll beat you down."
taste_description = "assault to the batteries"
process_flags = SYNTHETIC | ORGANIC
/datum/reagent/consumable/drink/salt_and_battery/on_mob_life(mob/living/M)
metabolization_rate = REAGENTS_METABOLISM
if(!(M.dna.species.reagent_tag & PROCESS_SYN))
metabolization_rate += 3.6 // gets removed from organics very fast
if(prob(15))
metabolization_rate += 15
M.fakevomit()
return ..()
var/datum/antagonist/mindflayer/flayer = M.mind?.has_antag_datum(/datum/antagonist/mindflayer)
if(flayer && (flayer.total_swarms_gathered > 0)) // Inherited from conductive lube
M.Jitter(15 SECONDS_TO_JITTER)
if(prob(10))
do_sparks(2, FALSE, M)
M.bodytemperature += 5
if(prob(20))
metabolization_rate += 1.6 // if it kicks your butt, make it kick some of the drink out too.
M.adjustBruteLoss(2, FALSE)
playsound(get_turf(M), 'sound/effects/hit_punch.ogg', 60, TRUE)
var/beat_verbs = pick("assaults","batters")
M.Jitter(0.5 SECONDS)
M.visible_message(
"<span class='notice'>[M] is battered by an unseen assailant!</span>",
"<span class='notice'>The beverage [beat_verbs] you!</span>",
"<span class='warning'>You hear empty punches against metal!</span>"
)
if(prob(25))
M.KnockDown(2 SECONDS)
return ..()
/datum/reagent/consumable/drink/soft_reset
name = "Soft Reset"
description = "Maybe your systems could use this once in a while."
id = "soft_reset"
color = "#1f3a46"
drink_icon = "soft_reset_glass"
drink_name = "Glass of Soft Reset"
drink_desc = "Have you tried turning it off and back on again?"
taste_description = "a little reboot"
process_flags = SYNTHETIC | ORGANIC
COOLDOWN_DECLARE(reboot_cooldown)
/datum/reagent/consumable/drink/soft_reset/on_mob_life(mob/living/M)
if(!(M.dna.species.reagent_tag & PROCESS_SYN))
metabolization_rate += 3.6 // gets removed from organics very fast
if(prob(50))
metabolization_rate += 30
M.fakevomit()
return ..()
if(prob(10))
for(var/obj/effect/decal/cleanable/C in M)
qdel(C)
M.clean_blood()
SEND_SIGNAL(src, COMSIG_COMPONENT_CLEAN_ACT)
var/mob/living/carbon/Mc = M
if(istype(Mc))
Mc.wetlevel -= 2
M.germ_level -= min(volume*20, M.germ_level)
if(COOLDOWN_FINISHED(src, reboot_cooldown) && prob(10))
to_chat(M, "<span class='notice'>Your systems prepare for a reboot.</span>")
M.Paralyse(3 SECONDS)
M.Drowsy(10 SECONDS)
metabolization_rate += 2.6 // get rid of it faster after rebooting
COOLDOWN_START(src, reboot_cooldown, 10 MINUTES)
if(prob(50))
M.AdjustConfused(-5 SECONDS)
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R == src)
M.reagents.remove_reagent(R.id, 1)
continue
if(R.id == "ultralube" || R.id == "lube")
// Flushes lube and ultra-lube even faster than other chems
M.reagents.remove_reagent(R.id, 5)
else
M.reagents.remove_reagent(R.id, 2)
return ..()
@@ -289,6 +289,22 @@
update_flags |= M.adjustBrainLoss(1, FALSE)
return ..() | update_flags
/datum/reagent/consumable/potass_chloride
name = "Potassium Salt"
id = "potass_chloride"
description = "Potassium chloride, for folks who need to watch their sodium intake."
color = "#B1B0B0"
harmless = FALSE
overdose_threshold = 100
taste_mult = 2
taste_description = "salt"
/datum/reagent/consumable/potass_chloride/overdose_process(mob/living/M, severity)
var/update_flags = STATUS_UPDATE_NONE
if(prob(50))
update_flags |= M.adjustBrainLoss(1, FALSE)
return ..() | update_flags
/datum/reagent/consumable/blackpepper
name = "Black Pepper"
id = "blackpepper"
@@ -1462,10 +1462,10 @@
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R != src)
if(R.id == "ultralube" || R.id == "lube")
//Flushes lube and ultra-lube even faster than other chems
// Flushes lube and ultra-lube even faster than other chems
M.reagents.remove_reagent(R.id, 5)
else
M.reagents.remove_reagent(R.id,1)
M.reagents.remove_reagent(R.id, 1)
return ..() | update_flags
/datum/reagent/medicine/degreaser/reaction_turf(turf/simulated/T, volume)
@@ -93,7 +93,7 @@
description = "A highly flammable blend of basic hydrocarbons, mostly Acetylene. Useful for both welding and organic chemistry, and can be fortified into a heavier oil."
reagent_state = LIQUID
color = "#060606"
drink_icon = "dr_gibb_glass"
drink_icon = "fuel_glass"
drink_name = "Glass of welder fuel"
drink_desc = "Unless you are an industrial tool, this is probably not safe for consumption."
taste_description = "mistakes"
@@ -468,9 +468,6 @@
result_amount = 4
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
////DRINKS THAT REQUIRED IMPROVED SPRITES BELOW:: -Agouri/////
/datum/chemical_reaction/sbiten
name = "Sbiten"
id = "sbiten"
@@ -786,6 +783,79 @@
result_amount = 2
mix_message = "The chemicals mix to create a fine, red substance."
/datum/chemical_reaction/synthanol/gear_grinder
name = "Gear Grinder"
id = "gear_grinder"
result = "gear_grinder"
required_reagents = list("beetshrub" = 1, "robottears" = 1)
result_amount = 2
mix_message = "The goos solidify into a gritty sludge."
/datum/chemical_reaction/synthanol/runtime
name = "Runtime"
id = "runtime"
result = "runtime"
required_reagents = list("synthanol" = 2, "screwdrivercocktail" = 3)
result_amount = 5
mix_message = "The colors in the drink separate in an odd way..."
mix_sound = 'sound/effects/glassbang.ogg'
/datum/chemical_reaction/synthanol/stack_trace
name = "Stack Trace"
id = "stack_trace"
result = "stack_trace"
required_reagents = list("runtime" = 1, "rewriter" = 1)
result_amount = 2
mix_message = "You tame the runtime mixture with rewriter."
/datum/chemical_reaction/synthanol/csv
name = "CSV"
id = "csv"
result = "csv"
required_reagents = list("cognac" = 1, "synthanol" = 1, "vodka" = 1)
mix_message = "The mixture turns bright red as you garnish it with a comma."
/datum/chemical_reaction/synthanol/hard_reset
name = "Hard Reset"
id = "hard_reset"
result = "hard_reset"
required_reagents = list("soft_reset" = 1, "bluescreen" = 1)
result_amount = 2
mix_message = "The swirling portion of the mixture sinks deeper into the drink."
/datum/chemical_reaction/synthanol/overclock_somewhere
name = "It's Overclock Somewhere"
id = "overclock_somewhere"
result = "overclock_somewhere"
required_reagents = list("synthanol" = 1, "ultralube" = 1, "oil" = 1)
mix_message = "The oils rise to form a shimmering layer on the top."
/datum/chemical_reaction/synthanol/bluescreen
name = "Bluescreen"
id = "bluescreen"
result = "bluescreen"
required_reagents = list("synthanol" = 1, "fuel" = 1, "goldschlager" = 1, "tonic" = 1, "water" = 1)
result_amount = 5
mix_message = "As soon as you fill the glass, it turns bright blue."
mix_sound = 'sound/effects/glassbang.ogg'
/datum/chemical_reaction/synthanol/burnout
name = "Burnout"
id = "burnout"
result = "burnout"
required_reagents = list("synthanol" = 1, "acetone" = 1)
result_amount = 2
mix_message = "The flammable liquids catch fire!"
mix_sound = 'sound/effects/fire_sizzle.ogg'
min_temp = T0C + 100
/datum/chemical_reaction/synthanol/dryer_martini
name = "Dryer Martini"
id = "dryer_martini"
result = "dryer_martini"
required_reagents = list("synthanol" = 2, "drying_agent" = 1)
mix_message = "Most of the fluid in the glass dries up, leaving a thick paste behind."
/datum/chemical_reaction/triple_citrus
name = "triple_citrus"
id = "triple_citrus"
@@ -1062,6 +1132,24 @@
result_amount = 5
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/gfs
name = "GFS"
id = "gfs"
result = "gfs"
required_reagents = list("gin" = 1, "fernet" = 1, "beetshrub" = 1)
result_amount = 3
mix_message = "The mixture settles into a soothing purple color."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/shrub_julep
name = "Shrub Julep"
id = "shrub_julep"
result = "shrub_julep"
required_reagents = list("mint" = 1, "whiskey" = 2, "beetshrub" = 1, "ice" = 1)
result_amount = 5
mix_message = "The liquid pools dark underneath the ice."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/melonade
name = "Melonade"
id = "melonade"
@@ -1184,3 +1272,118 @@
result_amount = 4
mix_message = "The blended vegetables form a creamy mix."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/electrolytes
name = "Electrolytes"
id = "electrolytes"
result = "electrolytes"
required_reagents = list("sodiumchloride" = 1, "potass_chloride" = 1, "water" = 3)
result_amount = 5
mix_message = "The salts dissolve in the water."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/tcp_sip
name = "TCP Sip"
id = "tcp_sip"
result = "tcp_sip"
required_reagents = list("electrolytes" = 1, "fuel" = 1)
result_amount = 2
mix_message = "The fuel darkens the beverage."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/ginger_beep
name = "Ginger Beep"
id = "ginger_beep"
result = "ginger_beep"
required_reagents = list("tcp_sip" = 1, "ginger_ale" = 1)
result_amount = 2
mix_message = "The fizzy ginger ale takes on a metallic appearance."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/bubbly_beep
name = "Bubbly Beep"
id = "bubbly_beep"
result = "bubbly_beep"
required_reagents = list("cleaner" = 1, "sodawater" = 1)
result_amount = 4
mix_message = "Bubbles overflow from the container!"
/datum/chemical_reaction/top_up
name = "Top-Up"
id = "top_up"
result = "top_up"
required_reagents = list("electrolytes" = 1, "space_up" = 1)
result_amount = 2
mix_message = "The salts and soda swirl together."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/cog_a_cola
name = "Cog-A-Cola"
id = "cog_a_cola"
result = "cog_a_cola"
required_reagents = list("tcp_sip" = 1, "cola" = 1)
result_amount = 2
mix_message = "The cola takes on a metallic tinge."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/electrocharge
name = "Electrocharge"
id = "electrocharge"
result = "electrocharge"
required_reagents = list("tcp_sip" = 3, "copper" = 1, "silver" = 1)
result_amount = 5
mix_message = "The container fizzes in your hand."
mix_sound = 'sound/effects/sparks4.ogg'
/datum/chemical_reaction/tin_and_tonic
name = "Tin and Tonic"
id = "tin_and_tonic"
result = "tin_and_tonic"
required_reagents = list("liquid_solder" = 1, "tonic" = 1)
result_amount = 2
mix_message = "The solder disperses throughout the tonic."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/salt_and_battery
name = "Salt and Battery"
id = "salt_and_battery"
result = "salt_and_battery"
required_reagents = list("electrolytes" = 1, "conductivelube" = 1)
result_amount = 2
mix_message = "The solution sparks a little less than the lube used to make it...a little."
mix_sound = 'sound/effects/sparks4.ogg'
/datum/chemical_reaction/zero_day
name = "Zero Day"
id = "zero_day"
result = "zero_day"
required_reagents = list("electrolytes" = 1, "nothing" = 1)
result_amount = 1
mix_message = "Much of the solution spills out of the glass."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/battery_acid
name = "Battery Acid"
id = "battery_acid"
result = "battery_acid"
required_reagents = list("tcp_sip" = 1, "triple_citrus" = 1)
result_amount = 2
mix_message = "The mixture forms an acidic fuzz on the rim of the container."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/processor_punch
name = "Processor Punch"
id = "processor_punch"
result = "processor_punch"
required_reagents = list("tcp_sip" = 1, "dr_gibb" = 1, "icetea" = 1)
result_amount = 3
mix_message = "The liquids combine into a cherry-brown mixture."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/soft_reset
name = "Soft Reset"
id = "soft_reset"
result = "soft_reset"
required_reagents = list("degreaser" = 1, "sterilizine" = 1, "drying_agent" = 1, "cleaner" = 1)
result_amount = 4
mix_message = "The solution swirls together in the container and doesn't stop swirling."
@@ -642,3 +642,10 @@
return TRUE
return FALSE
/datum/chemical_reaction/potass_chloride
name = "Potassium Chloride"
id = "potass_chloride"
result = "potass_chloride"
required_reagents = list("potassium" = 1, "chlorine" = 1)
result_amount = 2
mix_message = "The solution crystallizes with a brief flare of light."