Merge remote-tracking branch 'citadel/master' into eldritch_affairs

This commit is contained in:
kevinz000
2020-03-27 21:32:40 -07:00
917 changed files with 182662 additions and 22716 deletions
@@ -356,7 +356,6 @@
replace_beaker(user, B)
to_chat(user, "<span class='notice'>You add [B] to [src].</span>")
updateUsrDialog()
update_icon()
else if(user.a_intent != INTENT_HARM && !istype(I, /obj/item/card/emag))
to_chat(user, "<span class='warning'>You can't load [I] into [src]!</span>")
return ..()
@@ -487,6 +486,7 @@
/datum/reagent/consumable/pwr_game,
/datum/reagent/consumable/shamblers,
/datum/reagent/consumable/sugar,
/datum/reagent/consumable/pineapplejuice,
/datum/reagent/consumable/orangejuice,
/datum/reagent/consumable/grenadine,
/datum/reagent/consumable/limejuice,
@@ -495,15 +495,22 @@
/datum/reagent/consumable/menthol
)
upgrade_reagents = list(
/datum/reagent/drug/mushroomhallucinogen,
/datum/reagent/consumable/nothing,
/datum/reagent/medicine/cryoxadone
/datum/reagent/consumable/banana,
/datum/reagent/consumable/berryjuice,
/datum/reagent/consumable/strawberryjuice
)
upgrade_reagents2 = list(
/datum/reagent/consumable/banana,
/datum/reagent/consumable/berryjuice
/datum/reagent/consumable/applejuice,
/datum/reagent/consumable/carrotjuice,
/datum/reagent/consumable/pumpkinjuice,
/datum/reagent/consumable/watermelonjuice
)
upgrade_reagents3 = list(
/datum/reagent/drug/mushroomhallucinogen,
/datum/reagent/consumable/nothing,
/datum/reagent/medicine/cryoxadone,
/datum/reagent/consumable/peachjuice
)
upgrade_reagents3 = null
emagged_reagents = list(
/datum/reagent/consumable/ethanol/thirteenloko,
/datum/reagent/consumable/ethanol/changelingsting,
@@ -552,6 +559,7 @@
/datum/reagent/consumable/ethanol/hcider,
/datum/reagent/consumable/ethanol/creme_de_menthe,
/datum/reagent/consumable/ethanol/creme_de_cacao,
/datum/reagent/consumable/ethanol/creme_de_coconut,
/datum/reagent/consumable/ethanol/triple_sec,
/datum/reagent/consumable/ethanol/sake,
/datum/reagent/consumable/ethanol/applejack
@@ -958,14 +958,14 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/bahama_mama
name = "Bahama Mama"
description = "Tropical cocktail."
description = "A tropical cocktail with a complex blend of flavors."
color = "#FF7F3B" // rgb: 255, 127, 59
boozepwr = 35
quality = DRINK_GOOD
taste_description = "lime and orange"
taste_description = "pineapple, coconut, and a hint of coffee"
glass_icon_state = "bahama_mama"
glass_name = "Bahama Mama"
glass_desc = "Tropical cocktail."
glass_desc = "A tropical cocktail with a complex blend of flavors."
value = 2
/datum/reagent/consumable/ethanol/singulo
@@ -1156,6 +1156,17 @@ All effects don't start immediately, but rather get worse over time; the rate is
playsound(get_turf(M), 'sound/effects/explosionfar.ogg', 100, 1)
return ..()
/datum/reagent/consumable/ethanol/hiveminderaser
name = "Hivemind Eraser"
description = "A vessel of pure flavor."
color = "#FF80FC" // rgb: 255, 128, 252
boozepwr = 40
quality = DRINK_GOOD
taste_description = "psychic links"
glass_icon_state = "hiveminderaser"
glass_name = "Hivemind Eraser"
glass_desc = "For when even mindshields can't save you."
/datum/reagent/consumable/ethanol/erikasurprise
name = "Erika Surprise"
description = "The surprise is, it's green!"
@@ -1563,6 +1574,16 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A million hazing lawsuits and alcohol poisonings have started with this humble ingredient."
value = 1
/datum/reagent/consumable/ethanol/creme_de_coconut
name = "Creme de Coconut"
description = "A coconut liqueur for smooth, creamy, tropical drinks."
color = "#F7F0D0"
boozepwr = 20
taste_description = "a sweet milky flavor with notes of toasted sugar"
glass_icon_state = "glass_white"
glass_name = "Creme de Coconut"
glass_desc = "An unintimidating glass of coconut liqueur."
/datum/reagent/consumable/ethanol/quadruple_sec
name = "Quadruple Sec"
description = "Kicks just as hard as licking the powercell on a baton, but tastier."
@@ -1604,6 +1625,28 @@ All effects don't start immediately, but rather get worse over time; the rate is
. = 1
return ..()
/datum/reagent/consumable/ethanol/painkiller
name = "Painkiller"
description = "Dulls your pain. Your emotional pain, that is."
boozepwr = 20
color = "#EAD677"
quality = DRINK_NICE
taste_description = "sugary tartness"
glass_icon_state = "painkiller"
glass_name = "Painkiller"
glass_desc = "A combination of tropical juices and rum. Surely this will make you feel better."
/datum/reagent/consumable/ethanol/pina_colada
name = "Pina Colada"
description = "A fresh pineapple drink with coconut rum. Yum."
boozepwr = 40
color = "#FFF1B2"
quality = DRINK_FANTASTIC
taste_description = "pineapple, coconut, and a hint of the ocean"
glass_icon_state = "pina_colada"
glass_name = "Pina Colada"
glass_desc = "If you like pina coladas, and getting caught in the rain... well, you'll like this drink."
/datum/reagent/consumable/ethanol/grasshopper
name = "Grasshopper"
description = "A fresh and sweet dessert shooter. Difficult to look manly while drinking this."
@@ -1852,6 +1895,17 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A drink that looks as refreshing as it tastes."
value = 1
/datum/reagent/consumable/ethanol/moscow_mule
name = "Moscow Mule"
description = "A chilly drink that reminds you of the Derelict."
color = "#EEF1AA"
boozepwr = 30
quality = DRINK_GOOD
taste_description = "refreshing spiciness"
glass_icon_state = "moscow_mule"
glass_name = "Moscow Mule"
glass_desc = "A chilly drink that reminds you of the Derelict."
/datum/reagent/consumable/ethanol/fernet
name = "Fernet"
description = "An incredibly bitter herbal liqueur used as a digestif."
@@ -2159,6 +2213,25 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Although historians believe the drink was originally created to commemorate the end of an important conflict in man's past, its origins have largely been forgotten and it is today seen more as a general symbol of human supremacy."
value = 1
/datum/reagent/consumable/ethanol/mauna_loa
name = "Mauna Loa"
description = "Extremely hot; not for the faint of heart!"
boozepwr = 40
color = "#fe8308" // 254, 131, 8
quality = DRINK_FANTASTIC
taste_description = "fiery, with an aftertaste of burnt flesh"
glass_icon_state = "mauna_loa"
glass_name = "Mauna Loa"
glass_desc = "Lavaland in a drink... mug... volcano... thing."
/datum/reagent/consumable/ethanol/mauna_loa/on_mob_life(mob/living/carbon/M)
// Heats the user up while the reagent is in the body. Occasionally makes you burst into flames.
M.adjust_bodytemperature(25 * TEMPERATURE_DAMAGE_COEFFICIENT)
if (prob(5))
M.adjust_fire_stacks(1)
M.IgniteMob()
..()
/datum/reagent/consumable/ethanol/commander_and_chief
name = "Commander and Chief"
description = "A cocktail for the captain on the go."
@@ -2182,6 +2255,107 @@ All effects don't start immediately, but rather get worse over time; the rate is
. = 1
return ..()
/datum/reagent/consumable/ethanol/gunfire
name = "Gunfire"
description = "A drink that tastes like tiny explosions."
color = "#e4830d"
boozepwr = 40
quality = DRINK_GOOD
taste_description = "tiny explosions"
glass_icon_state = "gunfire"
glass_name = "Gunfire"
glass_desc = "It pops constantly as you look at it, giving off tiny sparks."
/datum/reagent/consumable/ethanol/gunfire/on_mob_life(mob/living/carbon/M)
if (prob(3))
to_chat(M,"<span class='notice'>You feel the gunfire pop in your mouth.</span>")
return ..()
/datum/reagent/consumable/ethanol/hellfire
name = "Hellfire"
description = "A nice drink that isn't quite as hot as it looks."
color = "#fb2203"
boozepwr = 60
quality = DRINK_VERYGOOD
taste_description = "cold flames that lick at the top of your mouth"
glass_icon_state = "hellfire"
glass_name = "Hellfire"
glass_desc = "An amber colored drink that isn't quite as hot as it looks."
/datum/reagent/consumable/ethanol/hellfire/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(30 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL + 30)
return ..()
/datum/reagent/consumable/ethanol/sins_delight
name = "Sin's Delight"
description = "The drink smells like the seven sins."
color = "#330000"
boozepwr = 66
quality = DRINK_FANTASTIC
taste_description = "sin"
glass_icon_state = "sins_delight"
glass_name = "Sin's Delight"
glass_desc = "You can smell the seven sins rolling off the top of the glass."
/datum/reagent/consumable/ethanol/strawberry_daiquiri
name = "Strawberry Daiquiri"
description = "Pink looking alcoholic drink."
boozepwr = 20
color = "#FF4A74"
quality = DRINK_NICE
taste_description = "sweet strawberry, lime and the ocean breeze"
glass_icon_state = "strawberry_daiquiri"
glass_name = "Strawberry Daiquiri"
glass_desc = "Pink looking drink with flowers and a big straw to sip it. Looks sweet and refreshing, perfect for warm days."
/datum/reagent/consumable/ethanol/liz_fizz
name = "Liz Fizz"
description = "Triple citrus layered with some ice and cream."
boozepwr = 0
color = "#D8FF59"
taste_description = "brain freezing sourness"
glass_icon_state = "liz_fizz"
glass_name = "Liz Fizz"
glass_desc = "Looks like a citrus sherbet seperated in layers? Why would anyone want that is beyond you."
/datum/reagent/consumable/ethanol/miami_vice
name = "Miami Vice"
description = "A drink layering Pina Colada and Strawberry Daiquiri"
boozepwr = 30
color = "#D8FF59"
quality = DRINK_FANTASTIC
taste_description = "sweet and refreshing flavor, complemented with strawberries and coconut, and hints of citrus"
glass_icon_state = "miami_vice"
glass_name = "Miami Vice"
glass_desc = "Strawberries and coconut, like yin and yang."
/datum/reagent/consumable/ethanol/malibu_sunset
name = "Malibu Sunset"
description = "A drink consisting of creme de coconut and tropical juices"
boozepwr = 20
color = "#FF9473"
quality = DRINK_NICE
taste_description = "coconut, with orange and grenadine accents"
glass_icon_state = "malibu_sunset"
glass_name = "Malibu Sunset"
glass_desc = "Tropical looking drinks, with ice cubes hovering on the surface and grenadine coloring the bottom."
/datum/reagent/consumable/ethanol/hotlime_miami
name = "Hotlime Miami"
description = "The essence of the 90's, if they were a bloody mess that is."
boozepwr = 40
color = "#A7FAE8"
quality = DRINK_FANTASTIC
taste_description = "coconut and aesthetic violence"
glass_icon_state = "hotlime_miami"
glass_name = "Hotlime Miami"
glass_desc = "This looks very aesthetically pleasing."
/datum/reagent/consumable/ethanol/hotlime_miami/on_mob_life(mob/living/carbon/M)
M.set_drugginess(50)
M.adjustStaminaLoss(-2)
return ..()
/datum/reagent/consumable/ethanol/fruit_wine
name = "Fruit Wine"
description = "A wine made from grown plants."
@@ -136,6 +136,14 @@
. = 1
..()
/datum/reagent/consumable/strawberryjuice
name = "Strawberry Juice"
description = "Refreshing seasonal summer drink."
color = "#E50D31"
taste_description = "strawberry"
glass_name = "glass of strawberry juice"
glass_desc = "Refreshing seasonal summer drink."
/datum/reagent/consumable/nothing
name = "Nothing"
description = "Absolutely nothing."
@@ -812,6 +820,14 @@
taste_description = "peaches"
glass_name = "glass of peach juice"
/datum/reagent/consumable/pineapplejuice
name = "Pineapple Juice"
description = "Tart, tropical, and hotly debated."
color = "#F7D435"
taste_description = "pineapple"
glass_name = "glass of pineapple juice"
glass_desc = "Tart, tropical, and hotly debated."
/datum/reagent/consumable/cream_soda
name = "Cream Soda"
description = "A classic space-American vanilla flavored soft drink."
@@ -826,6 +842,19 @@
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
..()
/datum/reagent/consumable/sol_dry
name = "Sol Dry"
description = "A soothing, mellow drink made from ginger."
color = "#f7d26a"
quality = DRINK_NICE
taste_description = "sweet ginger spice"
glass_name = "Sol Dry"
glass_desc = "A soothing, mellow drink made from ginger."
/datum/reagent/consumable/sol_dry/on_mob_life(mob/living/carbon/M)
M.adjust_disgust(-5)
..()
/datum/reagent/consumable/red_queen
name = "Red Queen"
description = "DRINK ME."
@@ -171,9 +171,11 @@
/datum/reagent/drug/methamphetamine/on_mob_metabolize(mob/living/L)
..()
L.ignore_slowdown(type)
ADD_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
/datum/reagent/drug/methamphetamine/on_mob_end_metabolize(mob/living/L)
L.unignore_slowdown(type)
REMOVE_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
..()
/datum/reagent/drug/methamphetamine/on_mob_life(mob/living/carbon/M)
@@ -465,7 +467,9 @@
if(H.physiology)
H.physiology.stamina_mod *= 0.5
if(H.dna && H.dna.species)
H.dna.species.punchdamagehigh *= 5
H.dna.species.punchdamagehigh *= 4
H.dna.species.punchdamagelow *= 4
H.dna.species.punchstunthreshold *= 2
/datum/reagent/drug/skooma/on_mob_end_metabolize(mob/living/L)
. = ..()
@@ -476,7 +480,9 @@
if(H.physiology)
H.physiology.stamina_mod *= 2
if(H.dna && H.dna.species)
H.dna.species.punchdamagehigh *= 0.2
H.dna.species.punchdamagehigh *= 0.25
H.dna.species.punchdamagelow *= 0.25
H.dna.species.punchstunthreshold *= 0.5
/datum/reagent/drug/skooma/on_mob_life(mob/living/carbon/M)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1*REM)
@@ -218,7 +218,8 @@
. = ..()
if(iscarbon(M))
var/mob/living/carbon/patient = M
if(reac_volume >= 5 && HAS_TRAIT_FROM(patient, TRAIT_HUSK, "burn") && patient.getFireLoss() < THRESHOLD_UNHUSK) //One carp yields 12u rezadone.
var/vol = reac_volume + M.reagents.get_reagent_amount(/datum/reagent/medicine/rezadone)
if(vol >= 5 && HAS_TRAIT_FROM(patient, TRAIT_HUSK, "burn") && patient.getFireLoss() < THRESHOLD_UNHUSK) //One carp yields 12u rezadone.
patient.cure_husk("burn")
patient.visible_message("<span class='nicegreen'>[patient]'s body rapidly absorbs moisture from the enviroment, taking on a more healthy appearance.")
@@ -425,7 +426,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
overdose_threshold = 40
value = 6
/datum/reagent/medicine/synthflesh/reaction_mob(mob/living/M, method=TOUCH, reac_volume,show_message = 1)
/datum/reagent/medicine/synthflesh/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1)
if(iscarbon(M))
if (M.stat == DEAD)
show_message = 0
@@ -442,8 +443,9 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
if(show_message)
to_chat(M, "<span class='danger'>You feel your burns and bruises healing! It stings like hell!</span>")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine)
var/vol = reac_volume + M.reagents.get_reagent_amount(/datum/reagent/medicine/synthflesh)
//Has to be at less than THRESHOLD_UNHUSK burn damage and have 100 synthflesh before unhusking. Corpses dont metabolize.
if(HAS_TRAIT_FROM(M, TRAIT_HUSK, "burn") && M.getFireLoss() < THRESHOLD_UNHUSK && M.reagents.has_reagent(/datum/reagent/medicine/synthflesh, 100))
if(HAS_TRAIT_FROM(M, TRAIT_HUSK, "burn") && M.getFireLoss() < THRESHOLD_UNHUSK && (vol > 100))
M.cure_husk("burn")
M.visible_message("<span class='nicegreen'>Most of [M]'s burnt off or charred flesh has been restored.")
..()
@@ -957,7 +959,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/mutadone/on_mob_life(mob/living/carbon/M)
M.jitteriness = 0
if(M.has_dna())
M.dna.remove_all_mutations()
M.dna.remove_all_mutations(mutadone = TRUE)
if(!QDELETED(M)) //We were a monkey, now a human
..()
@@ -992,9 +994,11 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/stimulants/on_mob_metabolize(mob/living/L)
..()
L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-0.5, blacklisted_movetypes=(FLYING|FLOATING))
ADD_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
/datum/reagent/medicine/stimulants/on_mob_end_metabolize(mob/living/L)
L.remove_movespeed_modifier(type)
REMOVE_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
..()
/datum/reagent/medicine/stimulants/on_mob_life(mob/living/carbon/M)
@@ -1299,6 +1303,14 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
color = "#918e53"
overdose_threshold = 30
/datum/reagent/medicine/changelingadrenaline/on_mob_metabolize(mob/living/L)
..()
ADD_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
/datum/reagent/medicine/changelingadrenaline/on_mob_end_metabolize(mob/living/L)
REMOVE_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
..()
/datum/reagent/medicine/changelingadrenaline/on_mob_life(mob/living/carbon/M as mob)
M.AdjustUnconscious(-20, 0)
M.AdjustAllImmobility(-20, 0)
@@ -231,6 +231,7 @@
description = "An ubiquitous chemical substance that is composed of hydrogen and oxygen."
color = "#AAAAAA77" // rgb: 170, 170, 170, 77 (alpha)
taste_description = "water"
overdose_threshold = 150 //Imagine drinking a gallon of water
var/cooling_temperature = 2
glass_icon_state = "glass_clear"
glass_name = "glass of water"
@@ -297,6 +298,10 @@
M.ExtinguishMob()
..()
/datum/reagent/water/overdose_start(mob/living/M)
metabolization_rate = 45 * REAGENTS_METABOLISM
. = 1
/datum/reagent/water/holywater
name = "Holy Water"
description = "Water blessed by some deity."
@@ -378,6 +383,7 @@
/datum/reagent/fuel/unholywater //if you somehow managed to extract this from someone, dont splash it on yourself and have a smoke
name = "Unholy Water"
overdose_threshold = 150 //Same as normal water
description = "Something that shouldn't exist on this plane of existence."
taste_description = "suffering"
pH = 6.5
@@ -409,6 +415,10 @@
holder.remove_reagent(type, 1)
return TRUE
/datum/reagent/fuel/unholywater/overdose_start(mob/living/M)
metabolization_rate = 60 * REAGENTS_METABOLISM
. = 1
/datum/reagent/hellwater //if someone has this in their system they've really pissed off an eldrich god
name = "Hell Water"
description = "YOUR FLESH! IT BURNS!"
@@ -40,9 +40,9 @@
if((method==VAPOR && prob(min(33, reac_volume))) || method==INGEST || method==PATCH || method==INJECT)
M.randmuti()
if(prob(98))
M.randmutb()
M.easy_randmut(NEGATIVE+MINOR_NEGATIVE)
else
M.randmutg()
M.easy_randmut(POSITIVE)
M.updateappearance()
M.domutcheck()
..()
@@ -495,6 +495,24 @@
toxpwr = 0.5
taste_description = "bad cooking"
/datum/reagent/toxin/condensed_cooking_oil
name = "Condensed Cooking Oil"
description = "Taste the consequences of your mistakes."
reagent_state = LIQUID
color = "#d6d6d8"
metabolization_rate = 0.25 * REAGENTS_METABOLISM
toxpwr = 0
taste_mult = -2
taste_description = "awful cooking"
/datum/reagent/toxin/condensed_cooking_oil/on_mob_life(mob/living/carbon/M)
if(prob(15))
M.vomit()
else
if(prob(40))
M.adjustOrganLoss(ORGAN_SLOT_HEART, 0.5) //For reference, bungotoxin does 3
..()
/datum/reagent/toxin/itching_powder
name = "Itching Powder"
description = "A powder that induces itching upon contact with the skin. Causes the victim to scratch at their itches and has a very low chance to decay into Histamine."
@@ -75,6 +75,28 @@
for(var/i = 1, i <= multiplier, i++)
new /obj/item/stack/sheet/mineral/gold(location)
/datum/chemical_reaction/uraniumsolidification
name = "Solid Uranium"
id = "soliduranium"
required_reagents = list(/datum/reagent/consumable/frostoil = 5, /datum/reagent/uranium = 20, /datum/reagent/bromine = 1)
mob_react = FALSE
/datum/chemical_reaction/uraniumsolidification/on_reaction(datum/reagents/holder, multiplier)
var/location = get_turf(holder.my_atom)
for(var/i = 1, i <= multiplier, i++)
new /obj/item/stack/sheet/mineral/uranium(location)
/datum/chemical_reaction/bluespacecrystalifaction
name = "Crystal Bluespace"
id = "crystalbluespace"
required_reagents = list(/datum/reagent/consumable/frostoil = 5, /datum/reagent/bluespace = 20, /datum/reagent/iron = 1)
mob_react = FALSE
/datum/chemical_reaction/bluespacecrystalifaction/on_reaction(datum/reagents/holder, multiplier)
var/location = get_turf(holder.my_atom)
for(var/i = 1, i <= multiplier, i++)
new /obj/item/stack/sheet/bluespace_crystal(location)
/datum/chemical_reaction/capsaicincondensation
name = "Capsaicincondensation"
id = /datum/reagent/consumable/condensedcapsaicin
+3 -4
View File
@@ -43,14 +43,14 @@
set_APTFT()
return TRUE
/obj/item/reagent_containers/proc/set_APTFT(mob/user) //set amount_per_transfer_from_this
/obj/item/reagent_containers/proc/set_APTFT() //set amount_per_transfer_from_this
set name = "Set Transfer Amount"
set category = "Object"
set waitfor = FALSE
var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts
if(N)
amount_per_transfer_from_this = N
to_chat(user, "<span class='notice'>[src]'s transfer amount is now [amount_per_transfer_from_this] units.</span>")
to_chat(usr, "<span class='notice'>[src]'s transfer amount is now [amount_per_transfer_from_this] units.</span>")
/obj/item/reagent_containers/proc/add_initial_reagents()
if(list_reagents)
@@ -134,6 +134,7 @@
throwerstring = " THROWN BY [key_name(thrownby)] at [AT] (AREACOORD(AT)]"
log_reagent("SPLASH: [src] mob SplashReagents() onto [key_name(target)] at [TT] ([AREACOORD(TT)])[throwerstring] - [R]")
reagents.reaction(target, TOUCH)
reagents.clear_reagents()
else if(bartender_check(target) && thrown)
visible_message("<span class='notice'>[src] lands without spilling a single drop.</span>")
@@ -154,8 +155,6 @@
visible_message("<span class='notice'>[src] spills its contents all over [target].</span>")
reagents.reaction(target, TOUCH)
reagents.clear_reagents()
if(QDELETED(src))
return
//melts plastic beakers
/obj/item/reagent_containers/microwave_act(obj/machinery/microwave/M)
@@ -28,7 +28,7 @@ Borg Hypospray
var/list/datum/reagents/reagent_list = list()
var/list/reagent_ids = list(/datum/reagent/medicine/dexalin, /datum/reagent/medicine/kelotane, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/antitoxin,
/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/spaceacillin, /datum/reagent/medicine/salglu_solution, /datum/reagent/medicine/insulin)
/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/spaceacillin, /datum/reagent/medicine/salglu_solution, /datum/reagent/medicine/insulin, /datum/reagent/medicine/potass_iodide)
var/accepts_reagent_upgrades = TRUE //If upgrades can increase number of reagents dispensed.
var/list/modes = list() //Basically the inverse of reagent_ids. Instead of having numbers as "keys" and strings as values it has strings as keys and numbers as values.
//Used as list for input() in shakers.
@@ -164,7 +164,7 @@ Borg Hypospray
icon_state = "borghypo_s"
charge_cost = 20
recharge_time = 2
reagent_ids = list(/datum/reagent/medicine/syndicate_nanites, /datum/reagent/medicine/potass_iodide, /datum/reagent/medicine/morphine, /datum/reagent/medicine/insulin)
reagent_ids = list(/datum/reagent/medicine/syndicate_nanites, /datum/reagent/medicine/prussian_blue, /datum/reagent/medicine/morphine, /datum/reagent/medicine/insulin)
bypass_protection = 1
accepts_reagent_upgrades = FALSE
@@ -261,5 +261,5 @@ Borg Shaker
/obj/item/reagent_containers/borghypo/epi
name = "Stabilizer injector"
desc = "An advanced chemical synthesizer and injection system, designed to stabilize patients."
reagent_ids = list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/insulin)
reagent_ids = list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/insulin, /datum/reagent/medicine/potass_iodide)
accepts_reagent_upgrades = FALSE
@@ -388,3 +388,67 @@
/obj/item/reagent_containers/glass/get_belt_overlay()
return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "bottle")
//Mortar & Pestle
/obj/item/pestle
name = "pestle"
desc = "An ancient, simple tool used in conjunction with a mortar to grind or juice items."
icon = 'icons/obj/chemical.dmi'
icon_state = "pestle"
force = 4
/obj/item/reagent_containers/glass/mortar
name = "mortar"
desc = "A specially formed bowl of ancient design. It is possible to crush or juice items placed in it using a pestle; however the process, unlike modern methods, is slow and physically exhausting. Alt click to eject the item."
icon_state = "mortar"
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5, 10, 15, 20, 25, 30, 50)
item_flags = NO_MAT_REDEMPTION
reagent_flags = OPENCONTAINER
spillable = TRUE
var/obj/item/grinded
/obj/item/reagent_containers/glass/mortar/AltClick(mob/user)
. = ..()
if(grinded)
grinded.forceMove(drop_location())
grinded = null
to_chat(user, "<span class='notice'>You eject the item inside.</span>")
return TRUE
/obj/item/reagent_containers/glass/mortar/attackby(obj/item/I, mob/living/carbon/human/user)
..()
if(istype(I,/obj/item/pestle))
if(grinded)
if(IS_STAMCRIT(user))
to_chat(user, "<span class='warning'>You are too tired to work!</span>")
return
to_chat(user, "<span class='notice'>You start grinding...</span>")
if((do_after(user, 25, target = src)) && grinded)
user.adjustStaminaLoss(20)
if(grinded.juice_results) //prioritize juicing
grinded.on_juice()
reagents.add_reagent_list(grinded.juice_results)
to_chat(user, "<span class='notice'>You juice [grinded] into a fine liquid.</span>")
QDEL_NULL(grinded)
return
grinded.on_grind()
reagents.add_reagent_list(grinded.grind_results)
if(grinded.reagents) //food and pills
grinded.reagents.trans_to(src, grinded.reagents.total_volume)
to_chat(user, "<span class='notice'>You break [grinded] into powder.</span>")
QDEL_NULL(grinded)
return
return
else
to_chat(user, "<span class='warning'>There is nothing to grind!</span>")
return
if(grinded)
to_chat(user, "<span class='warning'>There is something inside already!</span>")
return
if(I.juice_results || I.grind_results)
I.forceMove(src)
grinded = I
return
to_chat(user, "<span class='warning'>You can't grind this!</span>")