module things, jfc

This commit is contained in:
Poojawa
2018-09-11 07:51:01 -05:00
parent 8b9ef1e400
commit 284e9d0325
695 changed files with 11343 additions and 5661 deletions
+5 -5
View File
@@ -550,8 +550,8 @@
if(!D)
WARNING("[my_atom] attempted to add a reagent called '[reagent]' which doesn't exist. ([usr])")
return FALSE
update_total()
update_total()
var/cached_total = total_volume
if(cached_total + amount > maximum_volume)
amount = (maximum_volume - cached_total) //Doesnt fit in. Make it disappear. Shouldnt happen. Will happen.
@@ -594,14 +594,14 @@
if(data)
R.data = data
R.on_new(data)
if(isliving(my_atom))
R.on_mob_add(my_atom) //Must occur befor it could posibly run on_mob_delete
update_total()
if(my_atom)
my_atom.on_reagent_change(ADD_REAGENT)
if(!no_react)
handle_reactions()
if(isliving(my_atom))
R.on_mob_add(my_atom)
return TRUE
/datum/reagents/proc/add_reagent_list(list/list_reagents, list/data=null) // Like add_reagent but you can enter a list. Format it like this: list("toxin" = 10, "beer" = 15)
@@ -139,7 +139,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "chem_dispenser", name, 550, 550, master_ui, state)
ui = new(user, src, ui_key, "chem_dispenser", name, 565, 550, master_ui, state)
if(user.hallucinating())
ui.set_autoupdate(FALSE) //to not ruin the immersion by constantly changing the fake chemicals
ui.open()
@@ -278,7 +278,7 @@
var/chemid = reagent[1]
visible_message("<span class='warning'>[src] buzzes.</span>", "<span class='italics'>You hear a faint buzz.</span>")
to_chat(usr, "<span class ='danger'>[src] cannot find Chemical ID: <b>[chemid]</b>!</span>")
playsound(src, "sound/machines/buzz-two.ogg", 50, 1)
playsound(src, 'sound/machines/buzz-two.ogg', 50, 1)
return
if (resmismatch && alert("[src] is not yet capable of replicating this recipe with the precision it needs, do you want to save it anyway?",, "Yes","No") == "No")
return
@@ -384,6 +384,16 @@
final_list += list(avoid_assoc_duplicate_keys(fuck[1],key_list) = text2num(fuck[2]))
return final_list
/obj/machinery/chem_dispenser/drinks/Initialize()
. = ..()
AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE)
/obj/machinery/chem_dispenser/drinks/setDir()
var/old = dir
. = ..()
if(dir != old)
update_icon() // the beaker needs to be re-positioned if we rotate
/obj/machinery/chem_dispenser/drinks/display_beaker()
var/mutable_appearance/b_o = beaker_overlay || mutable_appearance(icon, "disp_beaker")
switch(dir)
@@ -413,6 +423,7 @@
circuit = /obj/item/circuitboard/machine/chem_dispenser/drinks
working_state = null
nopower_state = null
pass_flags = PASSTABLE
dispensable_reagents = list(
"water",
"ice",
@@ -444,6 +455,24 @@
"tirizene"
)
/obj/machinery/chem_dispenser/drinks/fullupgrade //fully ugpraded stock parts, emagged
desc = "Contains a large reservoir of soft drinks. This model has had its safeties shorted out."
obj_flags = CAN_BE_HIT | EMAGGED
flags_1 = NODECONSTRUCT_1
/obj/machinery/chem_dispenser/drinks/fullupgrade/Initialize()
. = ..()
dispensable_reagents |= emagged_reagents //adds emagged reagents
component_parts = list()
component_parts += new /obj/item/circuitboard/machine/chem_dispenser/drinks(null)
component_parts += new /obj/item/stock_parts/matter_bin/bluespace(null)
component_parts += new /obj/item/stock_parts/matter_bin/bluespace(null)
component_parts += new /obj/item/stock_parts/capacitor/quadratic(null)
component_parts += new /obj/item/stock_parts/manipulator/femto(null)
component_parts += new /obj/item/stack/sheet/glass(null)
component_parts += new /obj/item/stock_parts/cell/bluespace(null)
RefreshParts()
/obj/machinery/chem_dispenser/drinks/beer
name = "booze dispenser"
desc = "Contains a large reservoir of the good stuff."
@@ -477,6 +506,23 @@
"fernet"
)
/obj/machinery/chem_dispenser/drinks/beer/fullupgrade //fully ugpraded stock parts, emagged
desc = "Contains a large reservoir of the good stuff. This model has had its safeties shorted out."
obj_flags = CAN_BE_HIT | EMAGGED
flags_1 = NODECONSTRUCT_1
/obj/machinery/chem_dispenser/drinks/beer/fullupgrade/Initialize()
. = ..()
dispensable_reagents |= emagged_reagents //adds emagged reagents
component_parts = list()
component_parts += new /obj/item/circuitboard/machine/chem_dispenser/drinks/beer(null)
component_parts += new /obj/item/stock_parts/matter_bin/bluespace(null)
component_parts += new /obj/item/stock_parts/matter_bin/bluespace(null)
component_parts += new /obj/item/stock_parts/capacitor/quadratic(null)
component_parts += new /obj/item/stock_parts/manipulator/femto(null)
component_parts += new /obj/item/stack/sheet/glass(null)
component_parts += new /obj/item/stock_parts/cell/bluespace(null)
RefreshParts()
/obj/machinery/chem_dispenser/mutagen
name = "mutagen dispenser"
@@ -488,6 +534,8 @@
/obj/machinery/chem_dispenser/mutagensaltpeter
name = "botanical chemical dispenser"
desc = "Creates and dispenses chemicals useful for botany."
flags_1 = NODECONSTRUCT_1
dispensable_reagents = list(
"mutagen",
"saltpetre",
@@ -502,10 +550,8 @@
"ammonia",
"ash",
"diethylamine")
/obj/machinery/chem_dispenser/fullupgrade //fully upgraded stock parts
/obj/machinery/chem_dispenser/fullupgrade/Initialize()
/obj/machinery/chem_dispenser/mutagensaltpeter/Initialize()
. = ..()
component_parts = list()
component_parts += new /obj/item/circuitboard/machine/chem_dispenser(null)
@@ -516,3 +562,21 @@
component_parts += new /obj/item/stack/sheet/glass(null)
component_parts += new /obj/item/stock_parts/cell/bluespace(null)
RefreshParts()
/obj/machinery/chem_dispenser/fullupgrade //fully ugpraded stock parts, emagged
desc = "Creates and dispenses chemicals. This model has had its safeties shorted out."
obj_flags = CAN_BE_HIT | EMAGGED
flags_1 = NODECONSTRUCT_1
/obj/machinery/chem_dispenser/fullupgrade/Initialize()
. = ..()
dispensable_reagents |= emagged_reagents //adds emagged reagents
component_parts = list()
component_parts += new /obj/item/circuitboard/machine/chem_dispenser(null)
component_parts += new /obj/item/stock_parts/matter_bin/bluespace(null)
component_parts += new /obj/item/stock_parts/matter_bin/bluespace(null)
component_parts += new /obj/item/stock_parts/capacitor/quadratic(null)
component_parts += new /obj/item/stock_parts/manipulator/femto(null)
component_parts += new /obj/item/stack/sheet/glass(null)
component_parts += new /obj/item/stock_parts/cell/bluespace(null)
RefreshParts()
@@ -190,7 +190,7 @@
if("create_culture_bottle")
var/id = get_virus_id_by_index(text2num(params["index"]))
var/datum/disease/advance/A = SSdisease.archive_diseases[id]
if(!A.mutable)
if(!istype(A) || !A.mutable)
to_chat(usr, "<span class='warning'>ERROR: Cannot replicate virus strain.</span>")
return
A = A.Copy()
@@ -85,7 +85,7 @@
var/units = RC.reagents.trans_to(src, RC.amount_per_transfer_from_this)
if(units)
to_chat(user, "<span class='notice'>You transfer [units] units of the solution to [src].</span>")
add_logs(usr, src, "has added [english_list(RC.reagents.reagent_list)] to [src]")
log_combat(usr, src, "has added [english_list(RC.reagents.reagent_list)] to [src]")
return
if(default_unfasten_wrench(user, I, 40))
on = FALSE
@@ -144,7 +144,7 @@
if(on)
message_admins("[ADMIN_LOOKUPFLW(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [ADMIN_VERBOSEJMP(src)].")
log_game("[key_name(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [AREACOORD(src)].")
add_logs(usr, src, "has activated [src] which contains [english_list(reagents.reagent_list)] at [AREACOORD(src)].")
log_combat(usr, src, "has activated [src] which contains [english_list(reagents.reagent_list)] at [AREACOORD(src)].")
if("goScreen")
screen = params["screen"]
. = TRUE
+5 -5
View File
@@ -88,29 +88,29 @@
/datum/reagent/proc/overdose_start(mob/living/M)
to_chat(M, "<span class='userdanger'>You feel like you took too much of [name]!</span>")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/overdose, name)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name)
return
/datum/reagent/proc/addiction_act_stage1(mob/living/M)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_light, name)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_light, name)
if(prob(30))
to_chat(M, "<span class='notice'>You feel like having some [name] right about now.</span>")
return
/datum/reagent/proc/addiction_act_stage2(mob/living/M)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_medium, name)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_medium, name)
if(prob(30))
to_chat(M, "<span class='notice'>You feel like you need [name]. You just can't get enough.</span>")
return
/datum/reagent/proc/addiction_act_stage3(mob/living/M)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_severe, name)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_severe, name)
if(prob(30))
to_chat(M, "<span class='danger'>You have an intense craving for [name].</span>")
return
/datum/reagent/proc/addiction_act_stage4(mob/living/M)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_critical, name)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_critical, name)
if(prob(30))
to_chat(M, "<span class='boldannounce'>You're not feeling good at all! You really need some [name].</span>")
return
@@ -153,6 +153,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
color = "#102000" // rgb: 16, 32, 0
nutriment_factor = 1 * REAGENTS_METABOLISM
boozepwr = 80
quality = DRINK_GOOD
overdose_threshold = 60
addiction_threshold = 30
taste_description = "jitters and death"
@@ -249,6 +250,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Made for a woman, strong enough for a man."
color = "#666340" // rgb: 102, 99, 64
boozepwr = 10
quality = DRINK_FANTASTIC
taste_description = "dryness"
glass_icon_state = "threemileislandglass"
glass_name = "Three Mile Island Ice Tea"
@@ -323,6 +325,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "An alcoholic beverage from Space China, made by infusing lizard tails in ethanol."
color = "#7E4043" // rgb: 126, 64, 67
boozepwr = 45
quality = DRINK_FANTASTIC
taste_description = "scaley sweetness"
/datum/reagent/consumable/ethanol/grappa
@@ -394,6 +397,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "100 proof cinnamon schnapps, made for alcoholic teen girls on spring break."
color = "#FFFF91" // rgb: 255, 255, 145
boozepwr = 25
quality = DRINK_VERYGOOD
taste_description = "burning cinnamon"
glass_icon_state = "goldschlagerglass"
glass_name = "glass of goldschlager"
@@ -406,6 +410,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Tequila with silver in it, a favorite of alcoholic women in the club scene."
color = "#585840" // rgb: 88, 88, 64
boozepwr = 60
quality = DRINK_VERYGOOD
taste_description = "metallic and expensive"
glass_icon_state = "patronglass"
glass_name = "glass of patron"
@@ -418,6 +423,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "An all time classic, mild cocktail."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 25
quality = DRINK_NICE
taste_description = "mild and tart"
glass_icon_state = "gintonicglass"
glass_name = "Gin and Tonic"
@@ -429,6 +435,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Rum, mixed with cola."
taste_description = "cola"
boozepwr = 40
quality = DRINK_NICE
color = "#3E1B00"
glass_icon_state = "whiskeycolaglass"
glass_name = "Rum and Coke"
@@ -440,6 +447,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Viva la Revolucion! Viva Cuba Libre!"
color = "#3E1B00" // rgb: 62, 27, 0
boozepwr = 50
quality = DRINK_GOOD
taste_description = "a refreshing marriage of citrus and rum"
glass_icon_state = "cubalibreglass"
glass_name = "Cuba Libre"
@@ -460,17 +468,20 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Whiskey, mixed with cola. Surprisingly refreshing."
color = "#3E1B00" // rgb: 62, 27, 0
boozepwr = 70
quality = DRINK_NICE
taste_description = "cola"
glass_icon_state = "whiskeycolaglass"
glass_name = "whiskey cola"
glass_desc = "An innocent-looking mixture of cola and Whiskey. Delicious."
/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 = 60
quality = DRINK_NICE
taste_description = "dry class"
glass_icon_state = "martiniglass"
glass_name = "Classic Martini"
@@ -482,6 +493,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Vodka with Gin. Not quite how 007 enjoyed it, but still delicious."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 65
quality = DRINK_NICE
taste_description = "shaken, not stirred"
glass_icon_state = "martiniglass"
glass_name = "Vodka martini"
@@ -493,6 +505,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "That's just, like, your opinion, man..."
color = "#A68340" // rgb: 166, 131, 64
boozepwr = 50
quality = DRINK_GOOD
taste_description = "bitter cream"
glass_icon_state = "whiterussianglass"
glass_name = "White Russian"
@@ -504,6 +517,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious."
color = "#A68310" // rgb: 166, 131, 16
boozepwr = 55
quality = DRINK_NICE
taste_description = "oranges"
glass_icon_state = "screwdriverglass"
glass_name = "Screwdriver"
@@ -531,6 +545,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
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 = 55
quality = DRINK_GOOD
taste_description = "tomatoes with a hint of lime"
glass_icon_state = "bloodymaryglass"
glass_name = "Bloody Mary"
@@ -547,6 +562,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "It's just as effective as Dutch-Courage!"
color = "#664300" // rgb: 102, 67, 0
boozepwr = 80
quality = DRINK_NICE
taste_description = "alcoholic bravery"
glass_icon_state = "bravebullglass"
glass_name = "Brave Bull"
@@ -570,6 +586,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Tequila, Grenadine, and Orange Juice."
color = "#FFE48C" // rgb: 255, 228, 140
boozepwr = 45
quality = DRINK_GOOD
taste_description = "oranges with a hint of pomegranate"
glass_icon_state = "tequilasunriseglass"
glass_name = "tequila Sunrise"
@@ -598,6 +615,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "This thing is ON FIRE! CALL THE DAMN SHUTTLE!"
color = "#664300" // rgb: 102, 67, 0
boozepwr = 25
quality = DRINK_VERYGOOD
taste_description = "spicy toxins"
glass_icon_state = "toxinsspecialglass"
glass_name = "Toxins Special"
@@ -614,6 +632,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Drink this and prepare for the LAW."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 90 //THE FIST OF THE LAW IS STRONG AND HARD
quality = DRINK_GOOD
metabolization_rate = 0.8
taste_description = "JUSTICE"
glass_icon_state = "beepskysmashglass"
@@ -633,6 +652,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Whiskey-imbued cream, what else would you expect from the Irish?"
color = "#664300" // rgb: 102, 67, 0
boozepwr = 70
quality = DRINK_NICE
taste_description = "creamy alcohol"
glass_icon_state = "irishcreamglass"
glass_name = "Irish Cream"
@@ -644,6 +664,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Beer and Ale, brought together in a delicious mix. Intended for true men only."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 100 //For the manly only
quality = DRINK_NICE
taste_description = "hair on your chest and your chin"
glass_icon_state = "manlydorfglass"
glass_name = "The Manly Dorf"
@@ -670,6 +691,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 35
quality = DRINK_VERYGOOD
taste_description = "a mixture of cola and alcohol"
glass_icon_state = "longislandicedteaglass"
glass_name = "Long Island Iced Tea"
@@ -693,6 +715,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Coffee, Irish Cream, and cognac. You will get bombed."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 85
quality = DRINK_GOOD
taste_description = "angry and irish"
glass_icon_state = "b52glass"
glass_name = "B-52"
@@ -708,6 +731,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Coffee, and alcohol. More fun than a Mimosa to drink in the morning."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 35
quality = DRINK_NICE
taste_description = "giving up on the day"
glass_icon_state = "irishcoffeeglass"
glass_name = "Irish Coffee"
@@ -719,6 +743,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "On the rocks with salt on the rim. Arriba~!"
color = "#8CFF8C" // rgb: 140, 255, 140
boozepwr = 35
quality = DRINK_NICE
taste_description = "dry and salty"
glass_icon_state = "margaritaglass"
glass_name = "Margarita"
@@ -730,6 +755,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "For the lactose-intolerant. Still as classy as a White Russian."
color = "#360000" // rgb: 54, 0, 0
boozepwr = 70
quality = DRINK_NICE
taste_description = "bitterness"
glass_icon_state = "blackrussianglass"
glass_name = "Black Russian"
@@ -742,6 +768,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "The Detective's undercover drink of choice. He never could stomach gin..."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 30
quality = DRINK_NICE
taste_description = "mild dryness"
glass_icon_state = "manhattanglass"
glass_name = "Manhattan"
@@ -754,6 +781,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A scientist's drink of choice, for pondering ways to blow up the station."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 45
quality = DRINK_VERYGOOD
taste_description = "death, the destroyer of worlds"
glass_icon_state = "proj_manhattanglass"
glass_name = "Manhattan Project"
@@ -770,6 +798,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "For the more refined griffon."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 70
quality = DRINK_NICE
taste_description = "soda"
glass_icon_state = "whiskeysodaglass2"
glass_name = "whiskey soda"
@@ -781,6 +810,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "The ultimate refreshment. Not what it sounds like."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 35
quality = DRINK_NICE
taste_description = "Jack Frost's piss"
glass_icon_state = "antifreeze"
glass_name = "Anti-freeze"
@@ -796,6 +826,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Barefoot and pregnant."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 45
quality = DRINK_VERYGOOD
taste_description = "creamy berries"
glass_icon_state = "b&p"
glass_name = "Barefoot"
@@ -815,6 +846,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A cold refreshment."
color = "#FFFFFF" // rgb: 255, 255, 255
boozepwr = 35
quality = DRINK_NICE
taste_description = "refreshing cold"
glass_icon_state = "snowwhite"
glass_name = "Snow White"
@@ -826,6 +858,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "AHHHH!!!!"
color = "#820000" // rgb: 130, 0, 0
boozepwr = 75
quality = DRINK_VERYGOOD
taste_description = "sweet tasting iron"
glass_icon_state = "demonsblood"
glass_name = "Demons Blood"
@@ -837,6 +870,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Creepy time!"
color = "#A68310" // rgb: 166, 131, 16
boozepwr = 70
quality = DRINK_VERYGOOD
taste_description = "bitter iron"
glass_icon_state = "devilskiss"
glass_name = "Devils Kiss"
@@ -848,6 +882,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "For when a gin and tonic isn't Russian enough."
color = "#0064C8" // rgb: 0, 100, 200
boozepwr = 70
quality = DRINK_NICE
taste_description = "tart bitterness"
glass_icon_state = "vodkatonicglass"
glass_name = "vodka and tonic"
@@ -860,6 +895,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Refreshingly lemony, deliciously dry."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 45
quality = DRINK_GOOD
taste_description = "dry, tart lemons"
glass_icon_state = "ginfizzglass"
glass_name = "gin fizz"
@@ -872,6 +908,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Tropical cocktail."
color = "#FF7F3B" // rgb: 255, 127, 59
boozepwr = 35
quality = DRINK_GOOD
taste_description = "lime and orange"
glass_icon_state = "bahama_mama"
glass_name = "Bahama Mama"
@@ -883,6 +920,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A blue-space beverage!"
color = "#2E6671" // rgb: 46, 102, 113
boozepwr = 35
quality = DRINK_VERYGOOD
taste_description = "concentrated matter"
glass_icon_state = "singulo"
glass_name = "Singulo"
@@ -894,6 +932,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A spicy Vodka! Might be a little hot for the little guys!"
color = "#664300" // rgb: 102, 67, 0
boozepwr = 70
quality = DRINK_GOOD
taste_description = "hot and spice"
glass_icon_state = "sbitenglass"
glass_name = "Sbiten"
@@ -909,6 +948,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "The true Viking drink! Even though it has a strange red color."
color = "#C73C00" // rgb: 199, 60, 0
boozepwr = 51 //Red drinks are stronger
quality = DRINK_GOOD
taste_description = "sweet and salty alcohol"
glass_icon_state = "red_meadglass"
glass_name = "Red Mead"
@@ -921,6 +961,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
color = "#664300" // rgb: 102, 67, 0
nutriment_factor = 1 * REAGENTS_METABOLISM
boozepwr = 50
quality = DRINK_NICE
taste_description = "sweet, sweet alcohol"
glass_icon_state = "meadglass"
glass_name = "Mead"
@@ -959,6 +1000,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "So very, very, very good."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 35
quality = DRINK_VERYGOOD
taste_description = "sweet 'n creamy"
glass_icon_state = "aloe"
glass_name = "Aloe"
@@ -970,6 +1012,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A nice, strangely named drink."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 40
quality = DRINK_GOOD
taste_description = "lemons"
glass_icon_state = "andalusia"
glass_name = "Andalusia"
@@ -981,6 +1024,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A drink made from your allies. Not as sweet as those made from your enemies."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 45
quality = DRINK_NICE
taste_description = "bitter yet free"
glass_icon_state = "alliescocktail"
glass_name = "Allies cocktail"
@@ -992,6 +1036,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A drink for the daring, can be deadly if incorrectly prepared!"
color = "#365000" // rgb: 54, 80, 0
boozepwr = 80
quality = DRINK_VERYGOOD
taste_description = "stomach acid"
glass_icon_state = "acidspitglass"
glass_name = "Acid Spit"
@@ -1003,6 +1048,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Official drink of the Nanotrasen Gun-Club!"
color = "#664300" // rgb: 102, 67, 0
boozepwr = 35
quality = DRINK_GOOD
taste_description = "dark and metallic"
glass_icon_state = "amasecglass"
glass_name = "Amasec"
@@ -1014,6 +1060,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "You take a tiny sip and feel a burning sensation..."
color = "#2E6671" // rgb: 46, 102, 113
boozepwr = 95
quality = DRINK_GOOD
taste_description = "your brain coming out your nose"
glass_icon_state = "changelingsting"
glass_name = "Changeling Sting"
@@ -1033,6 +1080,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Mmm, tastes like chocolate cake..."
color = "#2E6671" // rgb: 46, 102, 113
boozepwr = 25
quality = DRINK_GOOD
taste_description = "delicious anger"
glass_icon_state = "irishcarbomb"
glass_name = "Irish Car Bomb"
@@ -1044,6 +1092,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Tastes like terrorism!"
color = "#2E6671" // rgb: 46, 102, 113
boozepwr = 90
quality = DRINK_GOOD
taste_description = "purified antagonism"
glass_icon_state = "syndicatebomb"
glass_name = "Syndicate Bomb"
@@ -1060,6 +1109,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "The surprise is, it's green!"
color = "#2E6671" // rgb: 46, 102, 113
boozepwr = 35
quality = DRINK_VERYGOOD
taste_description = "tartness and bananas"
glass_icon_state = "erikasurprise"
glass_name = "Erika Surprise"
@@ -1072,6 +1122,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#2E6671" // rgb: 46, 102, 113
boozepwr = 65
quality = DRINK_GOOD
taste_description = "a beach"
glass_icon_state = "driestmartiniglass"
glass_name = "Driest Martini"
@@ -1084,6 +1135,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#FFFF91" // rgb: 255, 255, 140
boozepwr = 60
quality = DRINK_GOOD
taste_description = "a bad joke"
glass_icon_state = "bananahonkglass"
glass_name = "Banana Honk"
@@ -1102,6 +1154,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#664300" // rgb: 102, 67, 0
boozepwr = 59 //Proof that clowns are better than mimes right here
quality = DRINK_GOOD
taste_description = "a pencil eraser"
glass_icon_state = "silencerglass"
glass_name = "Silencer"
@@ -1119,6 +1172,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A weird mix of whiskey and blumpkin juice."
color = "#1EA0FF" // rgb: 102, 67, 0
boozepwr = 50
quality = DRINK_VERYGOOD
taste_description = "molasses and a mouthful of pool water"
glass_icon_state = "drunkenblumpkin"
glass_name = "Drunken Blumpkin"
@@ -1130,6 +1184,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Lemon juice/whiskey/sugar mixture. Moderate alcohol content."
color = rgb(255, 201, 49)
boozepwr = 35
quality = DRINK_GOOD
taste_description = "sour lemons"
glass_icon_state = "whiskey_sour"
glass_name = "whiskey sour"
@@ -1155,6 +1210,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Whiskey sour/iron/uranium mixture resulting in a highly magnetic slurry. Mild alcohol content." //Requires no alcohol to make but has alcohol anyway because ~magic~
color = rgb(255, 91, 15)
boozepwr = 10
quality = DRINK_VERYGOOD
metabolization_rate = 0.1 * REAGENTS_METABOLISM
taste_description = "charged metal" // the same as teslium, honk honk.
glass_icon_state = "fetching_fizz"
@@ -1174,6 +1230,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Brave bull/syndicate bomb/absinthe mixture resulting in an energizing beverage. Mild alcohol content."
color = rgb(140, 0, 0)
boozepwr = 90
quality = DRINK_VERYGOOD
metabolization_rate = 0.4 * REAGENTS_METABOLISM
taste_description = "bravado in the face of disaster"
glass_icon_state = "hearty_punch"
@@ -1209,6 +1266,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Nuclear proliferation never tasted so good."
color = "#666300" // rgb: 102, 99, 0
boozepwr = 0 //custom drunk effect
quality = DRINK_FANTASTIC
taste_description = "da bomb"
glass_icon_state = "atomicbombglass"
glass_name = "Atomic Bomb"
@@ -1238,6 +1296,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Whoah, this stuff looks volatile!"
color = "#664300" // rgb: 102, 67, 0
boozepwr = 0 //custom drunk effect
quality = DRINK_GOOD
taste_description = "your brains smashed out by a lemon wrapped around a gold brick"
glass_icon_state = "gargleblasterglass"
glass_name = "Pan-Galactic Gargle Blaster"
@@ -1266,6 +1325,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A strong neurotoxin that puts the subject into a death-like state."
color = "#2E2E61" // rgb: 46, 46, 97
boozepwr = 0 //custom drunk effect
quality = DRINK_VERYGOOD
taste_description = "a numbing sensation"
glass_icon_state = "neurotoxinglass"
glass_name = "Neurotoxin"
@@ -1296,6 +1356,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
color = "#664300" // rgb: 102, 67, 0
nutriment_factor = 0
boozepwr = 0 //custom drunk effect
quality = DRINK_FANTASTIC
metabolization_rate = 0.2 * REAGENTS_METABOLISM
taste_description = "giving peace a chance"
glass_icon_state = "hippiesdelightglass"
@@ -1341,6 +1402,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
color = "#fcfdc6" // rgb: 252, 253, 198
nutriment_factor = 2 * REAGENTS_METABOLISM
boozepwr = 1
quality = DRINK_VERYGOOD
taste_description = "custard and alcohol"
glass_icon_state = "glass_yellow"
glass_name = "eggnog"
@@ -1353,6 +1415,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Side effects include self-mutilation and hoarding plasteel."
color = RUNE_COLOR_DARKRED
boozepwr = 10
quality = DRINK_FANTASTIC
taste_description = "bloody"
glass_icon_state = "narsour"
glass_name = "Nar'Sour"
@@ -1402,6 +1465,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Kicks just as hard as licking the powercell on a baton, but tastier."
color = "#cc0000"
boozepwr = 35
quality = DRINK_GOOD
taste_description = "an invigorating bitter freshness which suffuses your being; no enemy of the station will go unrobusted this day"
glass_icon_state = "quadruple_sec"
glass_name = "Quadruple Sec"
@@ -1420,6 +1484,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Law, Order, Alcohol, and Police Brutality distilled into one single elixir of JUSTICE."
color = "#ff3300"
boozepwr = 80
quality = DRINK_FANTASTIC
taste_description = "THE LAW"
glass_icon_state = "quintuple_sec"
glass_name = "Quintuple Sec"
@@ -1441,6 +1506,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A fresh and sweet dessert shooter. Difficult to look manly while drinking this."
color = "00ff00"
boozepwr = 25
quality = DRINK_GOOD
taste_description = "chocolate and mint dancing around your mouth"
glass_icon_state = "grasshopper"
glass_name = "Grasshopper"
@@ -1452,6 +1518,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A snappy way to end the day."
color = "ccff99"
boozepwr = 25
quality = DRINK_NICE
taste_description = "a slap on the face in the best possible way"
glass_icon_state = "stinger"
glass_name = "Stinger"
@@ -1463,6 +1530,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Soothing hot herbal brew with restorative properties. Hints of citrus and berry flavors."
color = "#00FFFF"
boozepwr = 30
quality = DRINK_FANTASTIC
taste_description = "hot herbal brew with a hint of fruit"
metabolization_rate = 2 * REAGENTS_METABOLISM //0.8u per tick
glass_icon_state = "bastion_bourbon"
@@ -1518,6 +1586,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Bubbly, classy, and undoubtedly strong - a Glitch City classic."
color = "#FFEAC4"
boozepwr = 90 //classy hooch, essentially, but lower pwr to make up for slightly easier access
quality = DRINK_GOOD
taste_description = "ethylic alcohol with a hint of sugar"
glass_icon_state = "fringe_weaver"
glass_name = "Fringe Weaver"
@@ -1529,6 +1598,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Sweet, light, and fruity - as girly as it gets."
color = "#FF226C"
boozepwr = 10
quality = DRINK_GOOD
taste_description = "your arteries clogging with sugar"
nutriment_factor = 2 * REAGENTS_METABOLISM
glass_icon_state = "sugar_rush"
@@ -1546,6 +1616,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Sour, bitter, and smashingly sobering."
color = "#5BD231"
boozepwr = -10 //sobers you up - ideally, one would drink to get hit with brute damage now to avoid alcohol problems later
quality = DRINK_VERYGOOD
taste_description = "a bitter SPIKE with a sour aftertaste"
glass_icon_state = "crevice_spike"
glass_name = "Crevice Spike"
@@ -1572,6 +1643,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
color = "#45ca7a"
taste_description = "mint and chocolate"
boozepwr = 25
quality = DRINK_GOOD
glass_icon_state = "peppermint_patty"
glass_name = "Peppermint Patty"
glass_desc = "A boozy minty hot cocoa that warms your belly on a cold night."
@@ -1586,6 +1658,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Named after a Greek hero, this mix is said to embolden a user's shield as if they were in a phalanx."
color = "#F5E9D3"
boozepwr = 80
quality = DRINK_GOOD
taste_description = "bitter, creamy cacao"
glass_icon_state = "alexander"
glass_name = "Alexander"
@@ -1618,6 +1691,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "The one ride you'll gladly give up the wheel for."
color = "#FFC55B"
boozepwr = 80
quality = DRINK_GOOD
taste_description = "delicious freedom"
glass_icon_state = "sidecar"
glass_name = "Sidecar"
@@ -1629,6 +1703,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A provocatively named classic. Funny enough, doctors recommend drinking it before taking a nap."
color = "#F4C35A"
boozepwr = 80
quality = DRINK_GOOD
taste_description = "seduction"
glass_icon_state = "between_the_sheets"
glass_name = "Between the Sheets"
@@ -1653,6 +1728,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "Divinely windy."
color = "#EEF191"
boozepwr = 60
quality = DRINK_GOOD
taste_description = "divine windiness"
glass_icon_state = "kamikaze"
glass_name = "Kamikaze"
@@ -1664,6 +1740,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A drink that looks as refreshing as it tastes."
color = "#DFFAD9"
boozepwr = 30
quality = DRINK_GOOD
taste_description = "refreshing mint"
glass_icon_state = "mojito"
glass_name = "Mojito"
@@ -1692,12 +1769,13 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A very popular and bittersweet digestif, ideal after a heavy meal. Best served on a sawed-off cola bottle as per tradition."
color = "#390600" // rgb: 57, 6, 0
boozepwr = 25
quality = DRINK_NICE
taste_description = "sweet relief"
glass_icon_state = "godlyblend"
glass_name = "glass of fernet cola"
glass_desc = "A sawed-off cola bottle filled with Fernet Cola. Nothing better after eating like a lardass."
/datum/reagent/consumable/ethanol/fernetcola/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/fernet_cola/on_mob_life(mob/living/carbon/M)
if(M.nutrition <= NUTRITION_LEVEL_STARVING)
M.adjustToxLoss(0.5*REM, 0)
M.nutrition = max(M.nutrition - 3, 0)
@@ -1711,6 +1789,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "What if the Manhattan coctail ACTUALLY used a bitter herb liquour? Helps you sobers up." //also causes a bit of stamina damage to symbolize the afterdrink lazyness
color = "#CA933F" // rgb: 202, 147, 63
boozepwr = -10
quality = DRINK_NICE
taste_description = "a sweet sobering mix"
glass_icon_state = "fanciulli"
glass_name = "glass of fanciulli"
@@ -1734,6 +1813,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A refreshing mixture of bitter Fernet with mint creme liquour."
color = "#4B5746" // rgb: 75, 87, 70
boozepwr = 35
quality = DRINK_GOOD
taste_description = "a bitter freshness"
glass_icon_state= "minted_fernet"
glass_name = "glass of branca menta"
@@ -1749,3 +1829,108 @@ All effects don't start immediately, but rather get worse over time; the rate is
M.adjustStaminaLoss(35)
. = TRUE
..()
/datum/reagent/consumable/ethanol/fruit_wine
name = "Fruit Wine"
id = "fruit_wine"
description = "A wine made from grown plants."
color = "#FFFFFF"
boozepwr = 35
quality = DRINK_GOOD
taste_description = "bad coding"
can_synth = FALSE
var/list/names = list("null fruit" = 1) //Names of the fruits used. Associative list where name is key, value is the percentage of that fruit.
var/list/tastes = list("bad coding" = 1) //List of tastes. See above.
/datum/reagent/consumable/ethanol/fruit_wine/on_new(list/data)
names = data["names"]
tastes = data["tastes"]
boozepwr = data["boozepwr"]
color = data["color"]
generate_data_info(data)
/datum/reagent/consumable/ethanol/fruit_wine/on_merge(list/data, amount)
var/diff = (amount/volume)
if(diff < 1)
color = BlendRGB(color, data["color"], diff/2) //The percentage difference over two, so that they take average if equal.
else
color = BlendRGB(color, data["color"], (1/diff)/2) //Adjust so it's always blending properly.
var/oldvolume = volume-amount
var/list/cachednames = data["names"]
for(var/name in names | cachednames)
names[name] = ((names[name] * oldvolume) + (cachednames[name] * amount)) / volume
var/list/cachedtastes = data["tastes"]
for(var/taste in tastes | cachedtastes)
tastes[taste] = ((tastes[taste] * oldvolume) + (cachedtastes[taste] * amount)) / volume
boozepwr *= oldvolume
var/newzepwr = data["boozepwr"] * amount
boozepwr += newzepwr
boozepwr /= volume //Blending boozepwr to volume.
generate_data_info(data)
/datum/reagent/consumable/ethanol/fruit_wine/proc/generate_data_info(list/data)
var/minimum_percent = 0.15 //Percentages measured between 0 and 1.
var/list/primary_tastes = list()
var/list/secondary_tastes = list()
glass_name = "glass of [name]"
glass_desc = description
for(var/taste in tastes)
switch(tastes[taste])
if(minimum_percent*2 to INFINITY)
primary_tastes += taste
if(minimum_percent to minimum_percent*2)
secondary_tastes += taste
var/minimum_name_percent = 0.35
name = ""
var/list/names_in_order = sortTim(names, /proc/cmp_numeric_dsc, TRUE)
var/named = FALSE
for(var/fruit_name in names)
if(names[fruit_name] >= minimum_name_percent)
name += "[fruit_name] "
named = TRUE
if(named)
name += "wine"
else
name = "mixed [names_in_order[1]] wine"
var/alcohol_description
switch(boozepwr)
if(120 to INFINITY)
alcohol_description = "suicidally strong"
if(90 to 120)
alcohol_description = "rather strong"
if(70 to 90)
alcohol_description = "strong"
if(40 to 70)
alcohol_description = "rich"
if(20 to 40)
alcohol_description = "mild"
if(0 to 20)
alcohol_description = "sweet"
else
alcohol_description = "watery" //How the hell did you get negative boozepwr?
var/list/fruits = list()
if(names_in_order.len <= 3)
fruits = names_in_order
else
for(var/i in 1 to 3)
fruits += names_in_order[i]
fruits += "other plants"
var/fruit_list = english_list(fruits)
description = "A [alcohol_description] wine brewed from [fruit_list]."
var/flavor = ""
if(!primary_tastes.len)
primary_tastes = list("[alcohol_description] alcohol")
flavor += english_list(primary_tastes)
if(secondary_tastes.len)
flavor += ", with a hint of "
flavor += english_list(secondary_tastes)
taste_description = flavor
if(holder.my_atom)
holder.my_atom.on_reagent_change()
@@ -310,6 +310,7 @@
id = "arnold_palmer"
description = "Encourages the patient to go golfing."
color = "#FFB766"
quality = DRINK_NICE
nutriment_factor = 2
taste_description = "bitter tea"
glass_icon_state = "arnold_palmer"
@@ -383,6 +384,7 @@
id = "nuka_cola"
description = "Cola, cola never changes."
color = "#100800" // rgb: 16, 8, 0
quality = DRINK_VERYGOOD
taste_description = "the future"
glass_icon_state = "nuka_colaglass"
glass_name = "glass of Nuka Cola"
@@ -550,6 +552,7 @@
id = "soy_latte"
description = "A nice and tasty beverage while you are reading your hippie books."
color = "#664300" // rgb: 102, 67, 0
quality = DRINK_NICE
taste_description = "creamy coffee"
glass_icon_state = "soy_latte"
glass_name = "soy latte"
@@ -571,6 +574,7 @@
id = "cafe_latte"
description = "A nice, strong and tasty beverage while you are reading."
color = "#664300" // rgb: 102, 67, 0
quality = DRINK_NICE
taste_description = "bitter cream"
glass_icon_state = "cafe_latte"
glass_name = "cafe latte"
@@ -592,6 +596,7 @@
id = "doctorsdelight"
description = "A gulp a day keeps the Medibot away! A mixture of juices that heals most damage types fairly quickly at the cost of hunger."
color = "#FF8CFF" // rgb: 255, 140, 255
quality = DRINK_VERYGOOD
taste_description = "homely fruit"
glass_icon_state = "doctorsdelightglass"
glass_name = "Doctor's Delight"
@@ -613,6 +618,7 @@
id = "chocolatepudding"
description = "A great dessert for chocolate lovers."
color = "#800000"
quality = DRINK_VERYGOOD
nutriment_factor = 4 * REAGENTS_METABOLISM
taste_description = "sweet chocolate"
glass_icon_state = "chocolatepudding"
@@ -624,6 +630,7 @@
id = "vanillapudding"
description = "A great dessert for vanilla lovers."
color = "#FAFAD2"
quality = DRINK_VERYGOOD
nutriment_factor = 4 * REAGENTS_METABOLISM
taste_description = "sweet vanilla"
glass_icon_state = "vanillapudding"
@@ -635,6 +642,7 @@
id = "cherryshake"
description = "A cherry flavored milkshake."
color = "#FFB6C1"
quality = DRINK_VERYGOOD
nutriment_factor = 4 * REAGENTS_METABOLISM
taste_description = "creamy cherry"
glass_icon_state = "cherryshake"
@@ -646,6 +654,7 @@
id = "bluecherryshake"
description = "An exotic milkshake."
color = "#00F1FF"
quality = DRINK_VERYGOOD
nutriment_factor = 4 * REAGENTS_METABOLISM
taste_description = "creamy blue cherry"
glass_icon_state = "bluecherryshake"
@@ -657,6 +666,7 @@
id = "pumpkin_latte"
description = "A mix of pumpkin juice and coffee."
color = "#F4A460"
quality = DRINK_VERYGOOD
nutriment_factor = 3 * REAGENTS_METABOLISM
taste_description = "creamy pumpkin"
glass_icon_state = "pumpkin_latte"
@@ -668,6 +678,7 @@
id = "gibbfloats"
description = "Ice cream on top of a Dr. Gibb glass."
color = "#B22222"
quality = DRINK_NICE
nutriment_factor = 3 * REAGENTS_METABOLISM
taste_description = "creamy cherry"
glass_icon_state = "gibbfloats"
@@ -693,6 +704,7 @@
id = "triple_citrus"
description = "A solution."
color = "#C8A5DC"
quality = DRINK_NICE
taste_description = "extreme bitterness"
glass_icon_state = "triplecitrus" //needs own sprite mine are trash
glass_name = "glass of triple citrus"
@@ -712,6 +724,7 @@
id = "chocolate_milk"
description = "Milk for cool kids."
color = "#7D4E29"
quality = DRINK_NICE
taste_description = "chocolate milk"
/datum/reagent/consumable/menthol
@@ -28,7 +28,7 @@
/datum/reagent/drug/space_drugs/overdose_start(mob/living/M)
to_chat(M, "<span class='userdanger'>You start tripping hard!</span>")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/overdose, name)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name)
/datum/reagent/drug/space_drugs/overdose_process(mob/living/M)
if(M.hallucination < volume && prob(20))
@@ -49,7 +49,7 @@
if(prob(1))
var/smoke_message = pick("You feel relaxed.", "You feel calmed.","You feel alert.","You feel rugged.")
to_chat(M, "<span class='notice'>[smoke_message]</span>")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "smoked", /datum/mood_event/drugs/smoked, name)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "smoked", /datum/mood_event/smoked, name)
M.AdjustStun(-20, 0)
M.AdjustKnockdown(-20, 0)
M.AdjustUnconscious(-20, 0)
@@ -132,7 +132,7 @@
..()
. = 1
/datum/reagent/krokodil/addiction_act_stage2(mob/living/M)
/datum/reagent/drug/krokodil/addiction_act_stage2(mob/living/M)
if(prob(25))
to_chat(M, "<span class='danger'>Your skin feels loose...</span>")
..()
@@ -13,12 +13,27 @@
taste_description = "generic food"
taste_mult = 4
var/nutriment_factor = 1 * REAGENTS_METABOLISM
var/quality = 0 //affects mood, typically higher for mixed drinks with more complex recipes
/datum/reagent/consumable/on_mob_life(mob/living/carbon/M)
current_cycle++
M.nutrition += nutriment_factor
holder.remove_reagent(src.id, metabolization_rate)
/datum/reagent/consumable/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(method == INGEST)
if (quality && !M.has_trait(TRAIT_AGEUSIA))
switch(quality)
if (DRINK_NICE)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_drink", /datum/mood_event/quality_nice)
if (DRINK_GOOD)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_drink", /datum/mood_event/quality_good)
if (DRINK_VERYGOOD)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_drink", /datum/mood_event/quality_verygood)
if (DRINK_FANTASTIC)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_drink", /datum/mood_event/quality_fantastic)
return ..()
/datum/reagent/consumable/nutriment
name = "Nutriment"
id = "nutriment"
@@ -491,8 +506,10 @@
/datum/reagent/consumable/flour/reaction_turf(turf/T, reac_volume)
if(!isspaceturf(T))
var/obj/effect/decal/cleanable/reagentdecal = new/obj/effect/decal/cleanable/flour(T)
reagentdecal.reagents.add_reagent("flour", reac_volume)
var/obj/effect/decal/cleanable/flour/reagentdecal = new/obj/effect/decal/cleanable/flour(T)
reagentdecal = locate() in T //Might have merged with flour already there.
if(reagentdecal)
reagentdecal.reagents.add_reagent("flour", reac_volume)
/datum/reagent/consumable/cherryjelly
name = "Cherry Jelly"
@@ -575,7 +592,7 @@
if(iscarbon(M) && (method in list(TOUCH, VAPOR, PATCH)))
var/mob/living/carbon/C = M
for(var/s in C.surgeries)
var/datum/surgery/S = s
var/datum/surgery/S = s
S.success_multiplier = max(0.6, S.success_multiplier) // +60% success probability on each step, compared to bacchus' blessing's ~46%
..()
@@ -803,7 +803,7 @@
M.updatehealth()
if(M.revive())
M.emote("gasp")
add_logs(M, M, "revived", src)
log_combat(M, M, "revived", src)
..()
/datum/reagent/medicine/strange_reagent/on_mob_life(mob/living/carbon/M)
@@ -1174,6 +1174,14 @@
color = "#F5F5F5"
self_consuming = TRUE
/datum/reagent/medicine/corazone/on_mob_add(mob/living/M)
..()
M.add_trait(TRAIT_STABLEHEART, id)
/datum/reagent/medicine/corazone/on_mob_delete(mob/living/M)
M.remove_trait(TRAIT_STABLEHEART, id)
..()
/datum/reagent/medicine/muscle_stimulant
name = "Muscle Stimulant"
id = "muscle_stimulant"
@@ -218,9 +218,9 @@
M.stuttering = 1
M.stuttering = min(M.stuttering+4, 10)
M.Dizzy(5)
if(iscultist(M) && prob(8))
M.say(pick("Av'te Nar'sie","Pa'lid Mors","INO INO ORA ANA","SAT ANA!","Daim'niodeis Arc'iai Le'eones","R'ge Na'sie","Diabo us Vo'iscum","Eld' Mon Nobis"))
if(prob(20))
if(iscultist(M) && prob(20))
M.say(pick("Av'te Nar'Sie","Pa'lid Mors","INO INO ORA ANA","SAT ANA!","Daim'niodeis Arc'iai Le'eones","R'ge Na'sie","Diabo us Vo'iscum","Eld' Mon Nobis"), forced = "holy water")
if(prob(10))
M.visible_message("<span class='danger'>[M] starts having a seizure!</span>", "<span class='userdanger'>You have a seizure!</span>")
M.Unconscious(120)
to_chat(M, "<span class='cultlarge'>[pick("Your blood is your bond - you are nothing without it", "Do not forget your place", \
@@ -231,7 +231,7 @@
clockwork_say(M, "...[text2ratvar(pick("Engine... your light grows dark...", "Where are you, master?", "He lies rusting in Error...", "Purge all untruths and... and... something..."))]")
if("message")
to_chat(M, "<span class='boldwarning'>[pick("Ratvar's illumination of your mind has begun to flicker", "He lies rusting in Reebe, derelict and forgotten. And there he shall stay", \
"You can't save him. Nothing can save him now", "It seems that Nar-Sie will triumph after all")].</span>")
"You can't save him. Nothing can save him now", "It seems that Nar'Sie will triumph after all")].</span>")
if("emote")
M.visible_message("<span class='warning'>[M] [pick("whimpers quietly", "shivers as though cold", "glances around in paranoia")].</span>")
if(data >= 60) // 30 units, 135 seconds
@@ -414,7 +414,7 @@
else
M.visible_message("<b>[M]</b> flexes [M.p_their()] arms.")
if(prob(10))
M.say(pick("Shit was SO cash.", "You are everything bad in the world.", "What sports do you play, other than 'jack off to naked drawn Japanese people?'", "Dont be a stranger. Just hit me with your best shot.", "My name is John and I hate every single one of you."))
M.say(pick("Shit was SO cash.", "You are everything bad in the world.", "What sports do you play, other than 'jack off to naked drawn Japanese people?'", "Dont be a stranger. Just hit me with your best shot.", "My name is John and I hate every single one of you."), forced = "spraytan")
..()
return
@@ -457,6 +457,13 @@
race = /datum/species/jelly/slime
mutationtext = "<span class='danger'>The pain subsides. Your whole body feels like slime.</span>"
/datum/reagent/mutationtoxin/felinid
name = "Felinid Mutation Toxin"
id = "felinidmutationtoxin"
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/human/felinid
mutationtext = "<span class='danger'>The pain subsides. You feel... like a degenerate.</span>"
/datum/reagent/mutationtoxin/lizard
name = "Lizard Mutation Toxin"
id = "lizardmutationtoxin"
@@ -1230,17 +1237,16 @@
/datum/reagent/stimulum/on_mob_add(mob/living/L)
..()
L.add_trait(TRAIT_GOTTAGOFAST, id)
L.add_trait(TRAIT_STUNIMMUNE, id)
L.add_trait(TRAIT_SLEEPIMMUNE, id)
/datum/reagent/stimulum/on_mob_delete(mob/living/L)
L.remove_trait(TRAIT_GOTTAGOFAST, id)
L.remove_trait(TRAIT_STUNIMMUNE, id)
L.remove_trait(TRAIT_SLEEPIMMUNE, id)
..()
/datum/reagent/stimulum/on_mob_life(mob/living/carbon/M) // Has a speedup, and the anti-stun effects of nicotine.
M.AdjustStun(-20, 0)
M.AdjustKnockdown(-20, 0)
M.AdjustUnconscious(-20, 0)
M.adjustStaminaLoss(-0.5*REM, 0)
/datum/reagent/stimulum/on_mob_life(mob/living/carbon/M)
M.adjustStaminaLoss(-2*REM, 0)
current_cycle++
holder.remove_reagent(id, 0.99) //Gives time for the next tick of life().
. = TRUE //Update status effects.
@@ -1643,7 +1649,7 @@
/datum/reagent/royal_bee_jelly/on_mob_life(mob/living/carbon/M)
if(prob(2))
M.say(pick("Bzzz...","BZZ BZZ","Bzzzzzzzzzzz..."))
M.say(pick("Bzzz...","BZZ BZZ","Bzzzzzzzzzzz..."), forced = "royal bee jelly")
..()
//Misc reagents
@@ -1665,7 +1671,7 @@
/datum/reagent/romerol/reaction_mob(mob/living/carbon/human/H, method=TOUCH, reac_volume)
// Silently add the zombie infection organ to be activated upon death
if(!H.getorganslot(ORGAN_SLOT_ZOMBIE))
var/obj/item/organ/zombie_infection/ZI = new()
var/obj/item/organ/zombie_infection/nodamage/ZI = new()
ZI.Insert(H)
..()
@@ -1829,3 +1835,15 @@
if(prob(30))
to_chat(M, "You should sit down and take a rest...")
..()
/datum/reagent/tranquility
name = "Tranquility"
id = "tranquility"
description = "A highly mutative liquid of unknown origin."
color = "#9A6750" //RGB: 154, 103, 80
taste_description = "inner peace"
can_synth = FALSE
/datum/reagent/tranquility/reaction_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0)
if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection))))
L.ForceContractDisease(new /datum/disease/transformation/gondola(), FALSE, TRUE)
@@ -169,6 +169,28 @@
..()
. = 1
/datum/reagent/toxin/ghoulpowder
name = "Ghoul Powder"
id = "ghoulpowder"
description = "A strong neurotoxin that slows metabolism to a death-like state, while keeping the patient fully active. Causes toxin buildup if used too long."
reagent_state = SOLID
color = "#664700" // rgb: 102, 71, 0
toxpwr = 0.8
taste_description = "death"
/datum/reagent/toxin/ghoulpowder/on_mob_add(mob/living/L)
..()
L.add_trait(TRAIT_FAKEDEATH, id)
/datum/reagent/toxin/ghoulpowder/on_mob_delete(mob/living/L)
L.remove_trait(TRAIT_FAKEDEATH, id)
..()
/datum/reagent/toxin/ghoulpowder/on_mob_life(mob/living/carbon/M)
M.adjustOxyLoss(1*REM, 0)
..()
. = 1
/datum/reagent/toxin/mindbreaker
name = "Mindbreaker Toxin"
id = "mindbreaker"
@@ -405,7 +427,7 @@
/datum/reagent/toxin/formaldehyde
name = "Formaldehyde"
id = "formaldehyde"
description = "Formaldehyde, on its own, is a fairly weak toxin. It contains trace amounts of Histamine, very rarely making it decay into Histamine.."
description = "Formaldehyde, on its own, is a fairly weak toxin. It contains trace amounts of Histamine, very rarely making it decay into Histamine."
reagent_state = LIQUID
color = "#B4004B"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
@@ -605,7 +627,7 @@
/datum/reagent/toxin/amanitin/on_mob_delete(mob/living/M)
var/toxdamage = current_cycle*3*REM
M.log_message("has taken [toxdamage] toxin damage from amanitin toxin", INDIVIDUAL_ATTACK_LOG)
M.log_message("has taken [toxdamage] toxin damage from amanitin toxin", LOG_ATTACK)
M.adjustToxLoss(toxdamage)
..()
@@ -584,7 +584,7 @@
/datum/chemical_reaction/plastic_polymers/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
for(var/i in 1 to 10)
for(var/i in 1 to created_volume)
new /obj/item/stack/sheet/plastic(location)
/datum/chemical_reaction/pax
@@ -116,6 +116,31 @@
empulse(location, round(created_volume / 12), round(created_volume / 7), 1)
holder.clear_reagents()
/datum/chemical_reaction/beesplosion
name = "Bee Explosion"
id = "beesplosion"
required_reagents = list("honey" = 1, "strange_reagent" = 1, "radium" = 1)
/datum/chemical_reaction/beesplosion/on_reaction(datum/reagents/holder, created_volume)
var/location = holder.my_atom.drop_location()
if(created_volume < 5)
playsound(location,'sound/effects/sparks1.ogg', 100, TRUE)
else
playsound(location,'sound/creatures/bee.ogg', 100, TRUE)
var/list/beeagents = list()
for(var/X in holder.reagent_list)
var/datum/reagent/R = X
if(required_reagents[R.id])
continue
beeagents += R
var/bee_amount = round(created_volume * 0.2)
for(var/i in 1 to bee_amount)
var/mob/living/simple_animal/hostile/poison/bees/short/new_bee = new(location)
if(LAZYLEN(beeagents))
new_bee.assign_reagent(pick(beeagents))
/datum/chemical_reaction/stabilizing_agent
name = "stabilizing_agent"
id = "stabilizing_agent"
@@ -18,7 +18,7 @@
id = "m_spawn"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/grey
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimespawn/on_reaction(datum/reagents/holder)
var/mob/living/simple_animal/slime/S = new(get_turf(holder.my_atom), "grey")
@@ -30,7 +30,7 @@
id = "m_inaprov"
results = list("epinephrine" = 3)
required_reagents = list("water" = 5)
required_other = 1
required_other = TRUE
required_container = /obj/item/slime_extract/grey
/datum/chemical_reaction/slime/slimemonkey
@@ -38,7 +38,7 @@
id = "m_monkey"
required_reagents = list("blood" = 1)
required_container = /obj/item/slime_extract/grey
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimemonkey/on_reaction(datum/reagents/holder)
for(var/i in 1 to 3)
@@ -51,7 +51,7 @@
id = "slimetoxin"
results = list("slime_toxin" = 1)
required_reagents = list("plasma" = 1)
required_other = 1
required_other = TRUE
required_container = /obj/item/slime_extract/green
/datum/chemical_reaction/slime/slimehuman
@@ -59,7 +59,7 @@
id = "humanmuttoxin"
results = list("stablemutationtoxin" = 1)
required_reagents = list("blood" = 1)
required_other = 1
required_other = TRUE
required_container = /obj/item/slime_extract/green
/datum/chemical_reaction/slime/slimelizard
@@ -67,7 +67,7 @@
id = "lizardmuttoxin"
results = list("lizardmutationtoxin" = 1)
required_reagents = list("radium" = 1)
required_other = 1
required_other = TRUE
required_container = /obj/item/slime_extract/green
//Metal
@@ -76,7 +76,7 @@
id = "m_metal"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/metal
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimemetal/on_reaction(datum/reagents/holder)
var/turf/location = get_turf(holder.my_atom)
@@ -89,7 +89,7 @@
id = "m_glass"
required_reagents = list("water" = 1)
required_container = /obj/item/slime_extract/metal
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimeglass/on_reaction(datum/reagents/holder)
var/turf/location = get_turf(holder.my_atom)
@@ -103,7 +103,7 @@
id = "m_tele"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/gold
required_other = 1
required_other = TRUE
deletes_extract = FALSE //we do delete, but we don't do so instantly
/datum/chemical_reaction/slime/slimemobspawn/on_reaction(datum/reagents/holder)
@@ -142,7 +142,7 @@
id = "m_tele2"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/silver
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimebork/on_reaction(datum/reagents/holder)
//BORK BORK BORK
@@ -184,14 +184,14 @@
results = list("frostoil" = 10)
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/blue
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimestabilizer
name = "Slime Stabilizer"
id = "m_slimestabilizer"
required_reagents = list("blood" = 1)
required_container = /obj/item/slime_extract/blue
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimestabilizer/on_reaction(datum/reagents/holder)
new /obj/item/slimepotion/slime/stabilizer(get_turf(holder.my_atom))
@@ -203,7 +203,7 @@
results = list("fluorosurfactant" = 20, "water" = 20)
required_reagents = list("water" = 5)
required_container = /obj/item/slime_extract/blue
required_other = 1
required_other = TRUE
//Dark Blue
/datum/chemical_reaction/slime/slimefreeze
@@ -211,7 +211,7 @@
id = "m_freeze"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/darkblue
required_other = 1
required_other = TRUE
deletes_extract = FALSE
/datum/chemical_reaction/slime/slimefreeze/on_reaction(datum/reagents/holder)
@@ -234,7 +234,7 @@
id = "m_fireproof"
required_reagents = list("water" = 1)
required_container = /obj/item/slime_extract/darkblue
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimefireproof/on_reaction(datum/reagents/holder)
new /obj/item/slimepotion/fireproof(get_turf(holder.my_atom))
@@ -247,14 +247,14 @@
results = list("capsaicin" = 10)
required_reagents = list("blood" = 1)
required_container = /obj/item/slime_extract/orange
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimefire
name = "Slime fire"
id = "m_fire"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/orange
required_other = 1
required_other = TRUE
deletes_extract = FALSE
/datum/chemical_reaction/slime/slimefire/on_reaction(datum/reagents/holder)
@@ -279,7 +279,7 @@
results = list("phosphorus" = 10, "potassium" = 10, "sugar" = 10)
required_reagents = list("water" = 5)
required_container = /obj/item/slime_extract/orange
required_other = 1
required_other = TRUE
//Yellow
/datum/chemical_reaction/slime/slimeoverload
@@ -287,7 +287,7 @@
id = "m_emp"
required_reagents = list("blood" = 1)
required_container = /obj/item/slime_extract/yellow
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimeoverload/on_reaction(datum/reagents/holder, created_volume)
empulse(get_turf(holder.my_atom), 3, 7)
@@ -298,7 +298,7 @@
id = "m_cell"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/yellow
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimecell/on_reaction(datum/reagents/holder, created_volume)
new /obj/item/stock_parts/cell/high/slime(get_turf(holder.my_atom))
@@ -309,7 +309,7 @@
id = "m_glow"
required_reagents = list("water" = 1)
required_container = /obj/item/slime_extract/yellow
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimeglow/on_reaction(datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
@@ -323,7 +323,7 @@
id = "m_steroid"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/purple
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimepsteroid/on_reaction(datum/reagents/holder)
new /obj/item/slimepotion/slime/steroid(get_turf(holder.my_atom))
@@ -335,7 +335,7 @@
results = list("regen_jelly" = 5)
required_reagents = list("blood" = 1)
required_container = /obj/item/slime_extract/purple
required_other = 1
required_other = TRUE
//Dark Purple
/datum/chemical_reaction/slime/slimeplasma
@@ -343,7 +343,7 @@
id = "m_plasma"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/darkpurple
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimeplasma/on_reaction(datum/reagents/holder)
new /obj/item/stack/sheet/mineral/plasma(get_turf(holder.my_atom), 3)
@@ -355,7 +355,7 @@
id = "m_slimemutator"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/red
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimemutator/on_reaction(datum/reagents/holder)
new /obj/item/slimepotion/slime/mutator(get_turf(holder.my_atom))
@@ -366,7 +366,7 @@
id = "m_bloodlust"
required_reagents = list("blood" = 1)
required_container = /obj/item/slime_extract/red
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimebloodlust/on_reaction(datum/reagents/holder)
for(var/mob/living/simple_animal/slime/slime in viewers(get_turf(holder.my_atom), null))
@@ -379,7 +379,7 @@
id = "m_speed"
required_reagents = list("water" = 1)
required_container = /obj/item/slime_extract/red
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimespeed/on_reaction(datum/reagents/holder)
new /obj/item/slimepotion/speed(get_turf(holder.my_atom))
@@ -391,7 +391,7 @@
id = "m_potion"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/pink
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/docility/on_reaction(datum/reagents/holder)
new /obj/item/slimepotion/slime/docility(get_turf(holder.my_atom))
@@ -402,7 +402,7 @@
id = "m_gender"
required_reagents = list("blood" = 1)
required_container = /obj/item/slime_extract/pink
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/gender/on_reaction(datum/reagents/holder)
new /obj/item/slimepotion/genderchange(get_turf(holder.my_atom))
@@ -414,7 +414,7 @@
id = "mutationtoxin2"
results = list("amutationtoxin" = 1)
required_reagents = list("plasma" = 1)
required_other = 1
required_other = TRUE
required_container = /obj/item/slime_extract/black
//Oil
@@ -423,7 +423,7 @@
id = "m_explosion"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/oil
required_other = 1
required_other = TRUE
deletes_extract = FALSE
/datum/chemical_reaction/slime/slimeexplosion/on_reaction(datum/reagents/holder)
@@ -453,7 +453,7 @@
results = list("cornoil" = 10)
required_reagents = list("blood" = 1)
required_container = /obj/item/slime_extract/oil
required_other = 1
required_other = TRUE
//Light Pink
/datum/chemical_reaction/slime/slimepotion2
@@ -461,19 +461,31 @@
id = "m_potion2"
required_container = /obj/item/slime_extract/lightpink
required_reagents = list("plasma" = 1)
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimepotion2/on_reaction(datum/reagents/holder)
new /obj/item/slimepotion/slime/sentience(get_turf(holder.my_atom))
..()
/datum/chemical_reaction/slime/renaming
name = "Renaming Potion"
id = "m_renaming_potion"
required_container = /obj/item/slime_extract/lightpink
required_reagents = list("water" = 1)
required_other = TRUE
/datum/chemical_reaction/slime/renaming/on_reaction(datum/reagents/holder)
new /obj/item/slimepotion/slime/renaming(holder.my_atom.drop_location())
..()
//Adamantine
/datum/chemical_reaction/slime/adamantine
name = "Adamantine"
id = "adamantine"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/adamantine
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/adamantine/on_reaction(datum/reagents/holder)
new /obj/item/stack/sheet/mineral/adamantine(get_turf(holder.my_atom))
@@ -485,7 +497,7 @@
id = "m_floor2"
required_reagents = list("blood" = 1)
required_container = /obj/item/slime_extract/bluespace
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimefloor2/on_reaction(datum/reagents/holder, created_volume)
new /obj/item/stack/tile/bluespace(get_turf(holder.my_atom), 25)
@@ -497,7 +509,7 @@
id = "m_crystal"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/bluespace
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimecrystal/on_reaction(datum/reagents/holder, created_volume)
var/obj/item/stack/ore/bluespace_crystal/BC = new (get_turf(holder.my_atom))
@@ -509,7 +521,7 @@
id = "m_radio"
required_reagents = list("water" = 1)
required_container = /obj/item/slime_extract/bluespace
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimeradio/on_reaction(datum/reagents/holder, created_volume)
new /obj/item/slimepotion/slime/slimeradio(get_turf(holder.my_atom))
@@ -521,7 +533,7 @@
id = "m_steroid2"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/cerulean
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimepsteroid2/on_reaction(datum/reagents/holder)
new /obj/item/slimepotion/enhancer(get_turf(holder.my_atom))
@@ -532,7 +544,7 @@
id = "s_territory"
required_reagents = list("blood" = 1)
required_container = /obj/item/slime_extract/cerulean
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slime_territory/on_reaction(datum/reagents/holder)
new /obj/item/areaeditor/blueprints/slime(get_turf(holder.my_atom))
@@ -544,7 +556,7 @@
id = "m_stop"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/sepia
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimestop/on_reaction(datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
@@ -557,7 +569,7 @@
id = "m_camera"
required_reagents = list("water" = 1)
required_container = /obj/item/slime_extract/sepia
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimecamera/on_reaction(datum/reagents/holder)
new /obj/item/camera(get_turf(holder.my_atom))
@@ -569,7 +581,7 @@
id = "m_floor"
required_reagents = list("blood" = 1)
required_container = /obj/item/slime_extract/sepia
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimefloor/on_reaction(datum/reagents/holder)
new /obj/item/stack/tile/sepia(get_turf(holder.my_atom), 25)
@@ -581,7 +593,7 @@
id = "s_paint"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/pyrite
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimepaint/on_reaction(datum/reagents/holder)
var/chosen = pick(subtypesof(/obj/item/paint))
@@ -593,7 +605,7 @@
id = "s_crayon"
required_reagents = list("blood" = 1)
required_container = /obj/item/slime_extract/pyrite
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slime/slimecrayon/on_reaction(datum/reagents/holder)
var/chosen = pick(difflist(subtypesof(/obj/item/toy/crayon),typesof(/obj/item/toy/crayon/spraycan)))
@@ -605,7 +617,7 @@
name = "Random Core"
id = "slimerng"
required_reagents = list("plasma" = 1)
required_other = 1
required_other = TRUE
required_container = /obj/item/slime_extract/rainbow
/datum/chemical_reaction/slime/slimeRNG/on_reaction(datum/reagents/holder, created_volume)
@@ -625,7 +637,7 @@
name = "Clusterblorble"
id = "slimebomb"
required_reagents = list("slimejelly" = 1)
required_other = 1
required_other = TRUE
required_container = /obj/item/slime_extract/rainbow
/datum/chemical_reaction/slime/slimebomb/on_reaction(datum/reagents/holder, created_volume)
@@ -641,7 +653,7 @@
name = "Transfer Potion"
id = "slimetransfer"
required_reagents = list("blood" = 1)
required_other = 1
required_other = TRUE
required_container = /obj/item/slime_extract/rainbow
/datum/chemical_reaction/slime/slime_transfer/on_reaction(datum/reagents/holder)
@@ -652,7 +664,7 @@
name = "Flight Potion"
id = "flightpotion"
required_reagents = list("holywater" = 5, "uranium" = 5)
required_other = 1
required_other = TRUE
required_container = /obj/item/slime_extract/rainbow
/datum/chemical_reaction/slime/flight_potion/on_reaction(datum/reagents/holder)
@@ -74,6 +74,12 @@
id = "zombiepowder"
results = list("zombiepowder" = 2)
required_reagents = list("carpotoxin" = 5, "morphine" = 5, "copper" = 5)
/datum/chemical_reaction/ghoulpowder
name = "Ghoul Powder"
id = "ghoulpowder"
results = list("ghoulpowder" = 2)
required_reagents = list("zombiepowder" = 1, "epinephrine" = 1)
/datum/chemical_reaction/mindbreaker
name = "Mindbreaker Toxin"
+2 -5
View File
@@ -45,9 +45,6 @@
if(user.a_intent == INTENT_HARM)
return ..()
/obj/item/reagent_containers/afterattack(obj/target, mob/user , flag)
return
/obj/item/reagent_containers/proc/canconsume(mob/eater, mob/user)
if(!iscarbon(eater))
return 0
@@ -101,7 +98,7 @@
R += num2text(A.volume) + "),"
if(thrownby)
add_logs(thrownby, M, "splashed", R)
log_combat(thrownby, M, "splashed", R)
reagents.reaction(target, TOUCH)
else if(bartender_check(target) && thrown)
@@ -110,7 +107,7 @@
else
if(isturf(target) && reagents.reagent_list.len && thrownby)
add_logs(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "in [AREACOORD(target)]")
log_combat(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "in [AREACOORD(target)]")
log_game("[key_name(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [AREACOORD(target)].")
message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [ADMIN_VERBOSEJMP(target)].")
visible_message("<span class='notice'>[src] spills its contents all over [target].</span>")
@@ -111,7 +111,7 @@ Borg Hypospray
var/list/injected = list()
for(var/datum/reagent/RG in R.reagent_list)
injected += RG.name
add_logs(user, M, "injected", src, "(CHEMICALS: [english_list(injected)])")
log_combat(user, M, "injected", src, "(CHEMICALS: [english_list(injected)])")
/obj/item/reagent_containers/borghypo/attack_self(mob/user)
var/chosen_reagent = modes[input(user, "What reagent do you want to dispense?") as null|anything in reagent_ids]
@@ -197,6 +197,7 @@ Borg Shaker
RG.add_reagent(reagent_ids[valueofi], 5)
/obj/item/reagent_containers/borghypo/borgshaker/afterattack(obj/target, mob/user, proximity)
. = ..()
if(!proximity)
return
@@ -251,6 +252,6 @@ Borg Shaker
/obj/item/reagent_containers/borghypo/epi
name = "epinephrine injector"
desc = "An advanced chemical synthesizer and injection system, designed to stabilize patients.."
desc = "An advanced chemical synthesizer and injection system, designed to stabilize patients."
reagent_ids = list("epinephrine")
accepts_reagent_upgrades = FALSE
@@ -302,3 +302,105 @@
name = "BVAK bottle"
desc = "A small bottle containing Bio Virus Antidote Kit."
list_reagents = list("atropine" = 5, "epinephrine" = 5, "salbutamol" = 10, "spaceacillin" = 10)
//Oldstation.dmm chemical storage bottles
/obj/item/reagent_containers/glass/bottle/hydrogen
name = "hydrogen bottle"
list_reagents = list("hydrogen" = 30)
/obj/item/reagent_containers/glass/bottle/lithium
name = "lithium bottle"
list_reagents = list("lithium" = 30)
/obj/item/reagent_containers/glass/bottle/carbon
name = "carbon bottle"
list_reagents = list("carbon" = 30)
/obj/item/reagent_containers/glass/bottle/nitrogen
name = "nitrogen bottle"
list_reagents = list("nitrogen" = 30)
/obj/item/reagent_containers/glass/bottle/oxygen
name = "oxygen bottle"
list_reagents = list("oxygen" = 30)
/obj/item/reagent_containers/glass/bottle/fluorine
name = "fluorine bottle"
list_reagents = list("fluorine" = 30)
/obj/item/reagent_containers/glass/bottle/sodium
name = "sodium bottle"
list_reagents = list("sodium" = 30)
/obj/item/reagent_containers/glass/bottle/aluminium
name = "aluminium bottle"
list_reagents = list("aluminium" = 30)
/obj/item/reagent_containers/glass/bottle/silicon
name = "silicon bottle"
list_reagents = list("silicon" = 30)
/obj/item/reagent_containers/glass/bottle/phosphorus
name = "phosphorus bottle"
list_reagents = list("phosphorus" = 30)
/obj/item/reagent_containers/glass/bottle/sulfur
name = "sulfur bottle"
list_reagents = list("sulfur" = 30)
/obj/item/reagent_containers/glass/bottle/chlorine
name = "chlorine bottle"
list_reagents = list("chlorine" = 30)
/obj/item/reagent_containers/glass/bottle/potassium
name = "potassium bottle"
list_reagents = list("potassium" = 30)
/obj/item/reagent_containers/glass/bottle/iron
name = "iron bottle"
list_reagents = list("iron" = 30)
/obj/item/reagent_containers/glass/bottle/copper
name = "copper bottle"
list_reagents = list("copper" = 30)
/obj/item/reagent_containers/glass/bottle/mercury
name = "mercury bottle"
list_reagents = list("mercury" = 30)
/obj/item/reagent_containers/glass/bottle/radium
name = "radium bottle"
list_reagents = list("radium" = 30)
/obj/item/reagent_containers/glass/bottle/water
name = "water bottle"
list_reagents = list("water" = 30)
/obj/item/reagent_containers/glass/bottle/ethanol
name = "ethanol bottle"
list_reagents = list("ethanol" = 30)
/obj/item/reagent_containers/glass/bottle/sugar
name = "sugar bottle"
list_reagents = list("sugar" = 30)
/obj/item/reagent_containers/glass/bottle/sacid
name = "sulphuric acid bottle"
list_reagents = list("sacid" = 30)
/obj/item/reagent_containers/glass/bottle/welding_fuel
name = "welding fuel bottle"
list_reagents = list("welding_fuel" = 30)
/obj/item/reagent_containers/glass/bottle/silver
name = "silver bottle"
list_reagents = list("silver" = 30)
/obj/item/reagent_containers/glass/bottle/iodine
name = "iodine bottle"
list_reagents = list("iodine" = 30)
/obj/item/reagent_containers/glass/bottle/bromine
name = "bromine bottle"
list_reagents = list("bromine" = 30)
@@ -9,6 +9,7 @@
container_type = TRANSPARENT
/obj/item/reagent_containers/dropper/afterattack(obj/target, mob/user , proximity)
. = ..()
if(!proximity)
return
if(!target.reagents)
@@ -68,7 +69,7 @@
for(var/datum/reagent/A in src.reagents.reagent_list)
R += A.id + " ("
R += num2text(A.volume) + "),"
add_logs(user, M, "squirted", R)
log_combat(user, M, "squirted", R)
trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
to_chat(user, "<span class='notice'>You transfer [trans] unit\s of the solution.</span>")
@@ -29,11 +29,10 @@
R += A.id + " ("
R += num2text(A.volume) + "),"
if(isturf(target) && reagents.reagent_list.len && thrownby)
add_logs(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "in [AREACOORD(target)]")
log_game("[key_name(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [AREACOORD(target)].")
log_combat(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]")
message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] at [ADMIN_VERBOSEJMP(target)].")
reagents.reaction(M, TOUCH)
add_logs(user, M, "splashed", R)
log_combat(user, M, "splashed", R)
reagents.clear_reagents()
else
if(M != user)
@@ -44,7 +43,7 @@
if(!reagents || !reagents.total_volume)
return // The drink might be empty after the delay, such as by spam-feeding
M.visible_message("<span class='danger'>[user] feeds something to [M].</span>", "<span class='userdanger'>[user] feeds something to you.</span>")
add_logs(user, M, "fed", reagents.log_list())
log_combat(user, M, "fed", reagents.log_list())
else
to_chat(user, "<span class='notice'>You swallow a gulp of [src].</span>")
var/fraction = min(5/reagents.total_volume, 1)
@@ -53,6 +52,7 @@
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
/obj/item/reagent_containers/glass/afterattack(obj/target, mob/user, proximity)
. = ..()
if((!proximity) || !check_allowed_items(target,target_self=1))
return
@@ -172,7 +172,7 @@
materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000)
volume = 120
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(10,15,20,25,30,60,120)
possible_transfer_amounts = list(5,10,15,20,25,30,60,120)
/obj/item/reagent_containers/glass/beaker/plastic/update_icon()
icon_state = "beakerlarge" // hack to lets us reuse the large beaker reagent fill states
@@ -186,7 +186,7 @@
materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000, MAT_GOLD=1000, MAT_TITANIUM=1000)
volume = 180
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(10,15,20,25,30,60,120,180)
possible_transfer_amounts = list(5,10,15,20,25,30,60,120,180)
/obj/item/reagent_containers/glass/beaker/noreact
name = "cryostasis beaker"
@@ -251,7 +251,7 @@
materials = list(MAT_METAL=200)
w_class = WEIGHT_CLASS_NORMAL
amount_per_transfer_from_this = 20
possible_transfer_amounts = list(10,15,20,25,30,50,70)
possible_transfer_amounts = list(5,10,15,20,25,30,50,70)
volume = 70
flags_inv = HIDEHAIR
slot_flags = ITEM_SLOT_HEAD
@@ -330,103 +330,3 @@
/obj/item/reagent_containers/glass/beaker/waterbottle/large/empty
list_reagents = list()
/obj/item/reagent_containers/glass/beaker/large/hydrogen
name = "hydrogen beaker"
list_reagents = list("hydrogen" = 50)
/obj/item/reagent_containers/glass/beaker/large/lithium
name = "lithium beaker"
list_reagents = list("lithium" = 50)
/obj/item/reagent_containers/glass/beaker/large/carbon
name = "carbon beaker"
list_reagents = list("carbon" = 50)
/obj/item/reagent_containers/glass/beaker/large/nitrogen
name = "nitrogen beaker"
list_reagents = list("nitrogen" = 50)
/obj/item/reagent_containers/glass/beaker/large/oxygen
name = "oxygen beaker"
list_reagents = list("oxygen" = 50)
/obj/item/reagent_containers/glass/beaker/large/fluorine
name = "fluorine beaker"
list_reagents = list("fluorine" = 50)
/obj/item/reagent_containers/glass/beaker/large/sodium
name = "sodium beaker"
list_reagents = list("sodium" = 50)
/obj/item/reagent_containers/glass/beaker/large/aluminium
name = "aluminium beaker"
list_reagents = list("aluminium" = 50)
/obj/item/reagent_containers/glass/beaker/large/silicon
name = "silicon beaker"
list_reagents = list("silicon" = 50)
/obj/item/reagent_containers/glass/beaker/large/phosphorus
name = "phosphorus beaker"
list_reagents = list("phosphorus" = 50)
/obj/item/reagent_containers/glass/beaker/large/sulfur
name = "sulfur beaker"
list_reagents = list("sulfur" = 50)
/obj/item/reagent_containers/glass/beaker/large/chlorine
name = "chlorine beaker"
list_reagents = list("chlorine" = 50)
/obj/item/reagent_containers/glass/beaker/large/potassium
name = "potassium beaker"
list_reagents = list("potassium" = 50)
/obj/item/reagent_containers/glass/beaker/large/iron
name = "iron beaker"
list_reagents = list("iron" = 50)
/obj/item/reagent_containers/glass/beaker/large/copper
name = "copper beaker"
list_reagents = list("copper" = 50)
/obj/item/reagent_containers/glass/beaker/large/mercury
name = "mercury beaker"
list_reagents = list("mercury" = 50)
/obj/item/reagent_containers/glass/beaker/large/radium
name = "radium beaker"
list_reagents = list("radium" = 50)
/obj/item/reagent_containers/glass/beaker/large/water
name = "water beaker"
list_reagents = list("water" = 50)
/obj/item/reagent_containers/glass/beaker/large/ethanol
name = "ethanol beaker"
list_reagents = list("ethanol" = 50)
/obj/item/reagent_containers/glass/beaker/large/sugar
name = "sugar beaker"
list_reagents = list("sugar" = 50)
/obj/item/reagent_containers/glass/beaker/large/sacid
name = "sulphuric acid beaker"
list_reagents = list("sacid" = 50)
/obj/item/reagent_containers/glass/beaker/large/welding_fuel
name = "welding fuel beaker"
list_reagents = list("welding_fuel" = 50)
/obj/item/reagent_containers/glass/beaker/large/silver
name = "silver beaker"
list_reagents = list("silver" = 50)
/obj/item/reagent_containers/glass/beaker/large/iodine
name = "iodine beaker"
list_reagents = list("iodine" = 50)
/obj/item/reagent_containers/glass/beaker/large/bromine
name = "bromine beaker"
list_reagents = list("bromine" = 50)
@@ -30,7 +30,7 @@
for(var/datum/reagent/R in reagents.reagent_list)
injected += R.name
var/contained = english_list(injected)
add_logs(user, M, "attempted to inject", src, "([contained])")
log_combat(user, M, "attempted to inject", src, "([contained])")
if(reagents.total_volume && (ignore_flags || M.can_inject(user, 1))) // Ignore flag should be checked first or there will be an error message.
to_chat(M, "<span class='warning'>You feel a tiny prick!</span>")
@@ -48,7 +48,7 @@
to_chat(user, "<span class='notice'>[trans] unit\s injected. [reagents.total_volume] unit\s remaining in [src].</span>")
add_logs(user, M, "injected", src, "([contained])")
log_combat(user, M, "injected", src, "([contained])")
/obj/item/reagent_containers/hypospray/CMO
list_reagents = list("omnizine" = 30)
@@ -46,7 +46,7 @@
to_chat(M, "<span class='notice'>You [apply_method] yourself with [src].</span>")
else
add_logs(user, M, "attempted to apply", src, reagents.log_list())
log_combat(user, M, "attempted to apply", src, reagents.log_list())
M.visible_message("<span class='danger'>[user] attempts to [apply_method] [src] on [M].</span>", \
"<span class='userdanger'>[user] attempts to [apply_method] [src] on [M].</span>")
if(!do_mob(user, M))
@@ -60,7 +60,7 @@
return
else
add_logs(user, M, "applied", src, reagents.log_list())
log_combat(user, M, "applied", src, reagents.log_list())
playsound(src, 'sound/effects/spray2.ogg', 50, 1, -6)
var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1)
reagents.reaction(M, apply_type, fraction)
@@ -9,9 +9,7 @@
apply_type = PATCH
apply_method = "apply"
self_delay = 30 // three seconds
/obj/item/reagent_containers/pill/patch/afterattack(obj/target, mob/user , proximity)
return // thanks inheritance again
dissolvable = FALSE
/obj/item/reagent_containers/pill/patch/attack(mob/living/L, mob/user)
if(ishuman(L))
@@ -13,6 +13,7 @@
var/apply_method = "swallow"
var/roundstart = 0
var/self_delay = 0 //pills are instant, this is because patches inheret their aplication from pills
var/dissolvable = TRUE
/obj/item/reagent_containers/pill/Initialize()
. = ..()
@@ -46,7 +47,7 @@
"<span class='userdanger'>[user] forces [M] to [apply_method] [src].</span>")
add_logs(user, M, "fed", reagents.log_list())
log_combat(user, M, "fed", reagents.log_list())
if(reagents.total_volume)
reagents.reaction(M, apply_type)
reagents.trans_to(M, reagents.total_volume)
@@ -55,22 +56,24 @@
/obj/item/reagent_containers/pill/afterattack(obj/target, mob/user , proximity)
. = ..()
if(!proximity)
return
if(target.is_refillable())
if(target.is_drainable() && !target.reagents.total_volume)
to_chat(user, "<span class='warning'>[target] is empty! There's nothing to dissolve [src] in.</span>")
return
if(!dissolvable || !target.is_refillable())
return
if(target.is_drainable() && !target.reagents.total_volume)
to_chat(user, "<span class='warning'>[target] is empty! There's nothing to dissolve [src] in.</span>")
return
if(target.reagents.holder_full())
to_chat(user, "<span class='warning'>[target] is full.</span>")
return
if(target.reagents.holder_full())
to_chat(user, "<span class='warning'>[target] is full.</span>")
return
to_chat(user, "<span class='notice'>You dissolve [src] in [target].</span>")
for(var/mob/O in viewers(2, user)) //viewers is necessary here because of the small radius
to_chat(O, "<span class='warning'>[user] slips something into [target]!</span>")
reagents.trans_to(target, reagents.total_volume)
qdel(src)
to_chat(user, "<span class='notice'>You dissolve [src] in [target].</span>")
for(var/mob/O in viewers(2, user)) //viewers is necessary here because of the small radius
to_chat(O, "<span class='warning'>[user] slips something into [target]!</span>")
reagents.trans_to(target, reagents.total_volume)
qdel(src)
/obj/item/reagent_containers/pill/tox
name = "toxins pill"
@@ -151,7 +154,7 @@
icon_state = "pill18"
list_reagents = list("insulin" = 50)
roundstart = 1
///////////////////////////////////////// this pill is used only in a legion mob drop
///////////////////////////////////////// this pill is used only in a legion mob drop
/obj/item/reagent_containers/pill/shadowtoxin
name = "black pill"
desc = "I wouldn't eat this if I were you."
@@ -178,5 +181,18 @@
name = "speedy pill"
list_reagents = list("aranesp" = 10)
/obj/item/reagent_containers/pill/floorpill
name = "floorpill"
desc = "A strange pill found in the depths of maintenance"
icon_state = "pill21"
var/static/list/names = list("maintenance pill","floorpill","mystery pill","suspicious pill","strange pill")
var/static/list/descs = list("Your feeling is telling you no, but...","Drugs are expensive, you can't afford not to eat any pills that you find."\
, "Surely, there's no way this could go bad.")
/obj/item/reagent_containers/pill/floorpill/Initialize()
list_reagents = list(get_random_reagent_id() = rand(10,50))
. = ..()
name = pick(names)
if(prob(20))
desc = pick(descs)
@@ -24,6 +24,7 @@
possible_transfer_amounts = list(5,10,15,20,25,30,50,100)
/obj/item/reagent_containers/spray/afterattack(atom/A, mob/user)
. = ..()
if(istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart) || istype(A, /obj/machinery/hydroponics))
return
@@ -195,7 +196,7 @@
/obj/item/reagent_containers/spray/pepper/afterattack(atom/A as mob|obj, mob/user)
if (A.loc == user)
return
..()
. = ..()
//water flower
/obj/item/reagent_containers/spray/waterflower
@@ -273,7 +274,7 @@
// Make it so the bioterror spray doesn't spray yourself when you click your inventory items
if (A.loc == user)
return
..()
. = ..()
/obj/item/reagent_containers/spray/chemsprayer/spray(atom/A)
var/direction = get_dir(src, A)
@@ -48,6 +48,7 @@
return
/obj/item/reagent_containers/syringe/afterattack(atom/target, mob/user , proximity)
. = ..()
if(busy)
return
if(!proximity)
@@ -110,7 +111,7 @@
if(SYRINGE_INJECT)
// Always log attemped injections for admins
var/contained = reagents.log_list()
add_logs(user, L, "attemped to inject", src, addition="which had [contained]")
log_combat(user, target, "attempted to inject", src, addition="which had [contained]")
if(!reagents.total_volume)
to_chat(user, "<span class='notice'>[src] is empty.</span>")
@@ -140,11 +141,9 @@
"<span class='userdanger'>[user] injects [L] with the syringe!</span>")
if(L != user)
add_logs(user, L, "injected", src, addition="which had [contained]")
log_combat(user, L, "injected", src, addition="which had [contained]")
else
log_attack("<font color='red'>[key_name(user)] injected [key_name(L)] with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)])</font>")
L.log_message("<font color='orange'>Injected themselves ([contained]) with [src.name].</font>", INDIVIDUAL_ATTACK_LOG)
L.log_message("injected themselves ([contained]) with [src.name]", LOG_ATTACK, color="orange")
var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1)
reagents.reaction(L, INJECT, fraction)
reagents.trans_to(target, amount_per_transfer_from_this)
@@ -224,7 +223,7 @@
list_reagents = list("chloralhydrate" = 50)
/obj/item/reagent_containers/syringe/lethal/execution
list_reagents = list("amatoxin" = 15, "formaldehyde" = 15, "cyanide" = 10, "facid" = 10)
list_reagents = list("plasma" = 15, "formaldehyde" = 15, "cyanide" = 10, "facid" = 10)
/obj/item/reagent_containers/syringe/mulligan
name = "Mulligan"
@@ -260,10 +259,3 @@
desc = "A diamond-tipped syringe that pierces armor when launched at high velocity. It can hold up to 10 units."
volume = 10
proj_piercing = 1
/obj/item/reagent_containers/syringe/alien
name = "Hive's Blessing"
desc = "A syringe filled with a strange viscous liquid. It might be best to leave it alone."
amount_per_transfer_from_this = 1
volume = 1
list_reagents = list("xenomicrobes" = 1)
+4 -7
View File
@@ -88,9 +88,7 @@
var/boom_message = "[ADMIN_LOOKUPFLW(P.firer)] triggered a fueltank explosion via projectile."
GLOB.bombers += boom_message
message_admins(boom_message)
var/log_message = "triggered a fueltank explosion via projectile."
P.firer.log_message(log_message, INDIVIDUAL_ATTACK_LOG)
log_attack("[key_name(P.firer)] [log_message]")
P.firer.log_message("triggered a fueltank explosion via projectile.", LOG_ATTACK)
boom()
/obj/structure/reagent_dispensers/fueltank/attackby(obj/item/I, mob/living/user, params)
@@ -110,13 +108,12 @@
else
var/turf/T = get_turf(src)
user.visible_message("<span class='warning'>[user] catastrophically fails at refilling [user.p_their()] [W.name]!</span>", "<span class='userdanger'>That was stupid of you.</span>")
var/message_admins = "[ADMIN_LOOKUPFLW(user)] triggered a fueltank explosion via welding tool at [ADMIN_VERBOSEJMP(T)]."
GLOB.bombers += message_admins
message_admins(message_admins)
var/message_log = "triggered a fueltank explosion via welding tool at [AREACOORD(T)]."
user.log_message(message_log, INDIVIDUAL_ATTACK_LOG)
log_game("[key_name(user)] [message_log]")
log_attack("[key_name(user)] [message_log]")
user.log_message("triggered a fueltank explosion via welding tool.", LOG_ATTACK)
boom()
return
return ..()