Merge branch 'master' into FERMICHEMCurTweaks

This commit is contained in:
Fermi
2019-11-23 00:10:33 +00:00
3018 changed files with 65365 additions and 157564 deletions
@@ -114,7 +114,6 @@
recharge_counter++
/obj/machinery/chem_dispenser/proc/display_beaker()
..()
var/mutable_appearance/b_o = beaker_overlay || mutable_appearance(icon, "disp_beaker")
b_o.pixel_y = -4
b_o.pixel_x = -7
@@ -157,8 +156,8 @@
if(beaker)
beaker.ex_act(severity, target)
/obj/machinery/chem_dispenser/handle_atom_del(atom/A)
..()
/obj/machinery/chem_dispenser/Exited(atom/movable/A, atom/newloc)
. = ..()
if(A == beaker)
beaker = null
cut_overlays()
@@ -252,7 +251,7 @@
if(!is_operational())
return
var/amount = text2num(params["amount"])
if(beaker && amount in beaker.possible_transfer_amounts)
if(beaker && (amount in beaker.possible_transfer_amounts))
beaker.reagents.remove_all(amount)
work_animation()
. = TRUE
@@ -175,7 +175,7 @@
data["chosenPillStyle"] = chosenPillStyle
data["isPillBottleLoaded"] = bottle ? 1 : 0
if(bottle)
GET_COMPONENT_FROM(STRB, /datum/component/storage, bottle)
var/datum/component/storage/STRB = bottle.GetComponent(/datum/component/storage)
data["pillBotContent"] = bottle.contents.len
data["pillBotMaxContent"] = STRB.max_items
@@ -263,7 +263,7 @@
var/target_loc = bottle ? bottle : drop_location()
var/drop_threshold = INFINITY
if(bottle)
GET_COMPONENT_FROM(STRB, /datum/component/storage, bottle)
var/datum/component/storage/STRB = bottle.GetComponent(/datum/component/storage)
if(STRB)
drop_threshold = STRB.max_items - bottle.contents.len
@@ -384,6 +384,38 @@
adjust_item_drop_location(P)
reagents.trans_to(P, vol_part)
. = TRUE
if("createDart")
for(var/datum/reagent/R in reagents.reagent_list)
if(!(istype(R, /datum/reagent/medicine)))
visible_message("<b>The [src]</b> beeps, \"<span class='warning'>SmartDarts are insoluble with non-medicinal compounds.\"</span>")
return
var/many = params["many"]
if(reagents.total_volume == 0)
return
var/amount = 1
var/vol_each = min(reagents.total_volume, 20)
if(text2num(many))
amount = CLAMP(round(input(usr, "Max 10. Buffer content will be split evenly.", "How many darts?", amount) as num|null), 0, 10)
if(!amount)
return
vol_each = min(reagents.total_volume / amount, 20)
var/name = stripped_input(usr,"Name:","Name your SmartDart!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN)
if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr)))
return
var/obj/item/reagent_containers/syringe/dart/D
for(var/i = 0; i < amount; i++)
D = new /obj/item/reagent_containers/syringe/dart(drop_location())
D.name = trim("[name] SmartDart")
adjust_item_drop_location(D)
reagents.trans_to(D, vol_each)
D.mode=!mode
D.update_icon()
. = TRUE
//END CITADEL ADDITIONS
if("analyzeBeak")
var/datum/reagent/R = GLOB.chemical_reagents_list[params["id"]]
@@ -188,7 +188,7 @@
to_chat(usr, "<span class='warning'>ERROR: Cannot replicate virus strain.</span>")
return
A = A.Copy()
var/list/data = list("viruses" = list(A))
var/list/data = list("blood_DNA" = "UNKNOWN DNA", "blood_type" = "SY", "viruses" = list(A))
var/obj/item/reagent_containers/glass/bottle/B = new(drop_location())
B.name = "[A.name] culture bottle"
B.desc = "A small bottle. Contains [A.agent] culture in synthblood medium."
@@ -15,7 +15,7 @@
var/setting = 1 // displayed range is 3 * setting
var/max_range = 3 // displayed max range is 3 * max range
/datum/effect_system/smoke_spread/chem/smoke_machine/set_up(datum/reagents/carry, setting=1, efficiency=10, loc)
/datum/effect_system/smoke_spread/chem/smoke_machine/set_up(datum/reagents/carry, setting=1, efficiency=10, loc, silent=FALSE)
amount = setting
carry.copy_to(chemholder, 20)
carry.remove_any(amount * 16 / efficiency)
+1 -1
View File
@@ -44,7 +44,7 @@
var/inverse_chem // What chem is metabolised when purity is below inverse_chem_val, this shouldn't be made, but if it does, well, I guess I'll know about it.
var/metabolizing = FALSE
var/chemical_flags // See fermi/readme.dm REAGENT_DEAD_PROCESS, REAGENT_DONOTSPLIT, REAGENT_ONLYINVERSE, REAGENT_ONMOBMERGE, REAGENT_INVISIBLE, REAGENT_FORCEONNEW, REAGENT_SNEAKYNAME
var/value = 0 //How much does it sell for in cargo?
/datum/reagent/Destroy() // This should only be called by the holder, so it's already handled clearing its references
. = ..()
@@ -88,7 +88,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of beer"
glass_desc = "A freezing pint of beer."
pH = 4
value = 0.1
/datum/reagent/consumable/ethanol/beer/light
name = "Light Beer"
@@ -99,6 +99,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of light beer"
glass_desc = "A freezing pint of watery light beer."
pH = 5
value = 0.3
/datum/reagent/consumable/ethanol/beer/green
name = "Green Beer"
@@ -110,6 +111,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of green beer"
glass_desc = "A freezing pint of green beer. Festive."
pH = 6
value = 0.3
/datum/reagent/consumable/ethanol/beer/green/on_mob_life(mob/living/carbon/M)
if(M.color != color)
@@ -130,6 +132,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "DAMN, THIS THING LOOKS ROBUST!"
shot_glass_icon_state = "shotglasscream"
pH = 6
value = 0.1
/datum/reagent/consumable/ethanol/kahlua/on_mob_life(mob/living/carbon/M)
@@ -153,6 +156,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "The silky, smokey whiskey goodness inside the glass makes the drink look very classy."
shot_glass_icon_state = "shotglassbrown"
pH = 4.5
value = 0.1
/datum/reagent/consumable/ethanol/thirteenloko
name = "Thirteen Loko"
@@ -168,7 +172,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "thirteen_loko_glass"
glass_name = "glass of Thirteen Loko"
glass_desc = "This is a glass of Thirteen Loko, it appears to be of the highest quality. The drink, not the glass."
value = 0.3
/datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/carbon/M)
M.drowsyness = max(0,M.drowsyness-7)
@@ -231,6 +235,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "The glass contain wodka. Xynta."
shot_glass_icon_state = "shotglassclear"
pH = 8.1
value = 0.1
/datum/reagent/consumable/ethanol/vodka/on_mob_life(mob/living/carbon/M)
M.radiation = max(M.radiation-2,0)
@@ -247,6 +252,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "glass_brown"
glass_name = "glass of bilk"
glass_desc = "A brew of milk and beer. For those alcoholics who fear osteoporosis."
value = 0.5
/datum/reagent/consumable/ethanol/bilk/on_mob_life(mob/living/carbon/M)
if(M.getBruteLoss() && prob(10))
@@ -266,6 +272,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "Three Mile Island Ice Tea"
glass_desc = "A glass of this is sure to prevent a meltdown."
pH = 3.5
value = 1
/datum/reagent/consumable/ethanol/threemileisland/on_mob_life(mob/living/carbon/M)
M.set_drugginess(50)
@@ -282,6 +289,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of gin"
glass_desc = "A crystal clear glass of Griffeater gin."
pH = 6.9
value = 0.1
/datum/reagent/consumable/ethanol/rum
name = "Rum"
@@ -295,6 +303,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Now you want to Pray for a pirate suit, don't you?"
shot_glass_icon_state = "shotglassbrown"
pH = 6.5
value = 0.1
/datum/reagent/consumable/ethanol/tequila
name = "Tequila"
@@ -308,6 +317,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Now all that's missing is the weird colored shades!"
shot_glass_icon_state = "shotglassgold"
pH = 4
value = 0.1
/datum/reagent/consumable/ethanol/vermouth
name = "Vermouth"
@@ -321,6 +331,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "You wonder why you're even drinking this straight."
shot_glass_icon_state = "shotglassclear"
pH = 3.25
value = 0.1
/datum/reagent/consumable/ethanol/wine
name = "Wine"
@@ -334,6 +345,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A very classy looking drink."
shot_glass_icon_state = "shotglassred"
pH = 3.45
value = 0.1
/datum/reagent/consumable/ethanol/lizardwine
name = "Lizard wine"
@@ -344,6 +356,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
quality = DRINK_FANTASTIC
taste_description = "scaley sweetness"
pH = 3
value = 2
/datum/reagent/consumable/ethanol/grappa
name = "Grappa"
@@ -356,6 +369,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of grappa"
glass_desc = "A fine drink originally made to prevent waste by using the leftovers from winemaking."
pH = 3.5
value = 0.1
/datum/reagent/consumable/ethanol/cognac
name = "Cognac"
@@ -369,6 +383,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Damn, you feel like some kind of French aristocrat just by holding this."
shot_glass_icon_state = "shotglassbrown"
pH = 3.5
value = 0.1
/datum/reagent/consumable/ethanol/absinthe
name = "Absinthe"
@@ -381,6 +396,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of absinthe"
glass_desc = "It's as strong as it smells."
shot_glass_icon_state = "shotglassgreen"
value = 0.1
/datum/reagent/consumable/ethanol/absinthe/on_mob_life(mob/living/carbon/M)
if(prob(10) && !HAS_TRAIT(M, TRAIT_ALCOHOL_TOLERANCE))
@@ -415,6 +431,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of ale"
glass_desc = "A freezing pint of delicious Ale."
pH = 4.5
value = 0.1
/datum/reagent/consumable/ethanol/goldschlager
name = "Goldschlager"
@@ -428,6 +445,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of goldschlager"
glass_desc = "100% proof that teen girls will drink anything with gold in it."
shot_glass_icon_state = "shotglassgold"
value = 0.5
/datum/reagent/consumable/ethanol/patron
name = "Patron"
@@ -442,6 +460,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Drinking patron in the bar, with all the subpar ladies."
shot_glass_icon_state = "shotglassclear"
pH = 4.5
value = 0.1
/datum/reagent/consumable/ethanol/gintonic
name = "Gin and Tonic"
@@ -455,6 +474,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "Gin and Tonic"
glass_desc = "A mild but still great cocktail. Drink up, like a true Englishman."
pH = 3
value = 0.5
/datum/reagent/consumable/ethanol/rum_coke
name = "Rum and Coke"
@@ -468,6 +488,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "Rum and Coke"
glass_desc = "The classic go-to of space-fratboys."
pH = 4
value = 1
/datum/reagent/consumable/ethanol/cuba_libre
name = "Cuba Libre"
@@ -480,6 +501,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "cubalibreglass"
glass_name = "Cuba Libre"
glass_desc = "A classic mix of rum, cola, and lime. A favorite of revolutionaries everywhere!"
value = 0.5
/datum/reagent/consumable/ethanol/cuba_libre/on_mob_life(mob/living/carbon/M)
@@ -502,7 +524,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "whiskeycolaglass"
glass_name = "whiskey cola"
glass_desc = "An innocent-looking mixture of cola and Whiskey. Delicious."
value = 0.5
/datum/reagent/consumable/ethanol/martini
name = "Classic Martini"
@@ -515,6 +537,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "martiniglass"
glass_name = "Classic Martini"
glass_desc = "Damn, the bartender even stirred it, not shook it."
value = 1
/datum/reagent/consumable/ethanol/vodkamartini
name = "Vodka Martini"
@@ -527,6 +550,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "martiniglass"
glass_name = "Vodka martini"
glass_desc ="A bastardisation of the classic martini. Still great."
value = 1
/datum/reagent/consumable/ethanol/white_russian
@@ -540,6 +564,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "whiterussianglass"
glass_name = "White Russian"
glass_desc = "A very nice looking drink. But that's just, like, your opinion, man."
value = 1
/datum/reagent/consumable/ethanol/screwdrivercocktail
name = "Screwdriver"
@@ -552,6 +577,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "screwdriverglass"
glass_name = "Screwdriver"
glass_desc = "A simple, yet superb mixture of Vodka and orange juice. Just the thing for the tired engineer."
value = 1
/datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/carbon/M)
if(M.mind && M.mind.assigned_role in list("Station Engineer", "Atmospheric Technician", "Chief Engineer")) //Engineers lose radiation poisoning at a massive rate.
@@ -568,6 +594,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "booger"
glass_name = "Booger"
glass_desc = "Ewww..."
value = 0.3
/datum/reagent/consumable/ethanol/bloody_mary
name = "Bloody Mary"
@@ -580,6 +607,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "bloodymaryglass"
glass_name = "Bloody Mary"
glass_desc = "Tomato juice, mixed with Vodka and a lil' bit of lime. Tastes like liquid murder."
value = 1.3
/datum/reagent/consumable/ethanol/bloody_mary/on_mob_life(mob/living/carbon/C)
if(C.blood_volume < (BLOOD_VOLUME_NORMAL*C.blood_ratio))
@@ -597,6 +625,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "bravebullglass"
glass_name = "Brave Bull"
glass_desc = "Tequila and Coffee liqueur, brought together in a mouthwatering mixture. Drink up."
value = 2
var/tough_text
/datum/reagent/consumable/ethanol/brave_bull/on_mob_metabolize(mob/living/M)
@@ -621,6 +650,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "tequilasunriseglass"
glass_name = "tequila Sunrise"
glass_desc = "Oh great, now you feel nostalgic about sunrises back on Terra..."
value = 2
var/obj/effect/light_holder
/datum/reagent/consumable/ethanol/tequila_sunrise/on_mob_metabolize(mob/living/M)
@@ -651,6 +681,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "Toxins Special"
glass_desc = "Whoah, this thing is on FIRE!"
shot_glass_icon_state = "toxinsspecialglass"
value = 2
/datum/reagent/consumable/ethanol/toxins_special/on_mob_life(var/mob/living/M)
M.adjust_bodytemperature(15 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL + 20) //310.15 is the normal bodytemp.
@@ -670,6 +701,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Heavy, hot and strong. Just like the Iron fist of the LAW."
pH = 2
overdose_threshold = 40
value = 3
var/datum/brain_trauma/special/beepsky/B
/datum/reagent/consumable/ethanol/beepsky_smash/on_mob_metabolize(mob/living/carbon/M)
@@ -711,6 +743,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "irishcreamglass"
glass_name = "Irish Cream"
glass_desc = "It's cream, mixed with whiskey. What else would you expect from the Irish?"
value = 1
/datum/reagent/consumable/ethanol/manly_dorf
name = "The Manly Dorf"
@@ -723,6 +756,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "manlydorfglass"
glass_name = "The Manly Dorf"
glass_desc = "A manly concoction made from Ale and Beer. Intended for true men only."
value = 2
var/dorf_mode
/datum/reagent/consumable/ethanol/manly_dorf/on_mob_metabolize(mob/living/M)
@@ -750,7 +784,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "longislandicedteaglass"
glass_name = "Long Island Iced Tea"
glass_desc = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only."
value = 1
/datum/reagent/consumable/ethanol/moonshine
name = "Moonshine"
@@ -762,6 +796,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "glass_clear"
glass_name = "Moonshine"
glass_desc = "You've really hit rock bottom now... your liver packed its bags and left last night."
value = 2
/datum/reagent/consumable/ethanol/b52
name = "B-52"
@@ -775,6 +810,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "B-52"
glass_desc = "Kahlua, Irish Cream, and cognac. You will get bombed."
shot_glass_icon_state = "b52glass"
value = 5.2
/datum/reagent/consumable/ethanol/b52/on_mob_metabolize(mob/living/M)
playsound(M, 'sound/effects/explosion_distant.ogg', 100, FALSE)
@@ -790,6 +826,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "irishcoffeeglass"
glass_name = "Irish Coffee"
glass_desc = "Coffee and alcohol. More fun than a Mimosa to drink in the morning."
value = 2
/datum/reagent/consumable/ethanol/margarita
name = "Margarita"
@@ -802,6 +839,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "margaritaglass"
glass_name = "Margarita"
glass_desc = "On the rocks with salt on the rim. Arriba~!"
value = 2
/datum/reagent/consumable/ethanol/black_russian
name = "Black Russian"
@@ -814,6 +852,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "blackrussianglass"
glass_name = "Black Russian"
glass_desc = "For the lactose-intolerant. Still as classy as a White Russian."
value = 3
/datum/reagent/consumable/ethanol/manhattan
@@ -827,6 +866,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "manhattanglass"
glass_name = "Manhattan"
glass_desc = "The Detective's undercover drink of choice. He never could stomach gin..."
value = 3
/datum/reagent/consumable/ethanol/manhattan_proj
@@ -840,6 +880,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "proj_manhattanglass"
glass_name = "Manhattan Project"
glass_desc = "A scientist's drink of choice, for thinking how to blow up the station."
value = 6
/datum/reagent/consumable/ethanol/manhattan_proj/on_mob_life(mob/living/carbon/M)
@@ -857,6 +898,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "whiskeysodaglass2"
glass_name = "whiskey soda"
glass_desc = "Ultimate refreshment."
value = 1
/datum/reagent/consumable/ethanol/antifreeze
name = "Anti-freeze"
@@ -865,10 +907,11 @@ All effects don't start immediately, but rather get worse over time; the rate is
color = "#664300" // rgb: 102, 67, 0
boozepwr = 35
quality = DRINK_NICE
taste_description = "Jack Frost's piss"
taste_description = "Jack Frost's piss" //Waterspots eeewww
glass_icon_state = "antifreeze"
glass_name = "Anti-freeze"
glass_desc = "The ultimate refreshment."
value = 3
/datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(20 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL + 20) //310.15 is the normal bodytemp.
@@ -885,6 +928,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "b&p"
glass_name = "Barefoot"
glass_desc = "Barefoot and pregnant."
value = 4
/datum/reagent/consumable/ethanol/barefoot/on_mob_life(mob/living/carbon/M)
if(ishuman(M)) //Barefoot causes the imbiber to quickly regenerate brute trauma if they're not wearing shoes.
@@ -905,6 +949,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "snowwhite"
glass_name = "Snow White"
glass_desc = "A cold refreshment."
value = 1
/datum/reagent/consumable/ethanol/demonsblood //Prevents the imbiber from being dragged into a pool of blood by a slaughter demon.
name = "Demon's Blood"
@@ -917,6 +962,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "demonsblood"
glass_name = "Demons Blood"
glass_desc = "Just looking at this thing makes the hair at the back of your neck stand up."
value = 2
/datum/reagent/consumable/ethanol/devilskiss //If eaten by a slaughter demon, the demon will regret it.
name = "Devil's Kiss"
@@ -929,6 +975,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "devilskiss"
glass_name = "Devils Kiss"
glass_desc = "Creepy time!"
value = 2
/datum/reagent/consumable/ethanol/vodkatonic
name = "Vodka and Tonic"
@@ -941,7 +988,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "vodkatonicglass"
glass_name = "vodka and tonic"
glass_desc = "For when a gin and tonic isn't Russian enough."
value = 1
/datum/reagent/consumable/ethanol/ginfizz
name = "Gin Fizz"
@@ -954,7 +1001,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "ginfizzglass"
glass_name = "gin fizz"
glass_desc = "Refreshingly lemony, deliciously dry."
value = 1
/datum/reagent/consumable/ethanol/bahama_mama
name = "Bahama Mama"
@@ -967,6 +1014,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "bahama_mama"
glass_name = "Bahama Mama"
glass_desc = "Tropical cocktail."
value = 2
/datum/reagent/consumable/ethanol/singulo
name = "Singulo"
@@ -979,6 +1027,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "singulo"
glass_name = "Singulo"
glass_desc = "A blue-space beverage."
value = 4
/datum/reagent/consumable/ethanol/sbiten
name = "Sbiten"
@@ -991,6 +1040,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "sbitenglass"
glass_name = "Sbiten"
glass_desc = "A spicy mix of Vodka and Spice. Very hot."
value = 2
/datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(50 * TEMPERATURE_DAMAGE_COEFFICIENT, 0 ,BODYTEMP_HEAT_DAMAGE_LIMIT) //310.15 is the normal bodytemp.
@@ -1007,6 +1057,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "red_meadglass"
glass_name = "Red Mead"
glass_desc = "A True Viking's Beverage, though its color is strange."
value = 5
/datum/reagent/consumable/ethanol/mead
name = "Mead"
@@ -1020,6 +1071,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "meadglass"
glass_name = "Mead"
glass_desc = "A Viking's Beverage, though a cheap one."
value = 1
/datum/reagent/consumable/ethanol/iced_beer
name = "Iced Beer"
@@ -1031,6 +1083,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "iced_beerglass"
glass_name = "iced beer"
glass_desc = "A beer so frosty, the air around it freezes."
value = 1
/datum/reagent/consumable/ethanol/iced_beer/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C) //310.15 is the normal bodytemp.
@@ -1046,7 +1099,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "grogglass"
glass_name = "Grog"
glass_desc = "A fine and cepa drink for Space."
value = 2.1
/datum/reagent/consumable/ethanol/aloe
name = "Aloe"
@@ -1059,6 +1112,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "aloe"
glass_name = "Aloe"
glass_desc = "Very, very, very good."
value = 1
/datum/reagent/consumable/ethanol/andalusia
name = "Andalusia"
@@ -1071,6 +1125,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "andalusia"
glass_name = "Andalusia"
glass_desc = "A nice, strangely named drink."
value = 1
/datum/reagent/consumable/ethanol/alliescocktail
name = "Allies Cocktail"
@@ -1083,6 +1138,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "alliescocktail"
glass_name = "Allies cocktail"
glass_desc = "A drink made from your allies."
value = 4
/datum/reagent/consumable/ethanol/acid_spit
name = "Acid Spit"
@@ -1095,6 +1151,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "acidspitglass"
glass_name = "Acid Spit"
glass_desc = "A drink from Nanotrasen. Made from live aliens."
value = 3
/datum/reagent/consumable/ethanol/amasec
name = "Amasec"
@@ -1107,6 +1164,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "amasecglass"
glass_name = "Amasec"
glass_desc = "Always handy before COMBAT!!!"
value = 2
/datum/reagent/consumable/ethanol/changelingsting
name = "Changeling Sting"
@@ -1119,6 +1177,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "changelingsting"
glass_name = "Changeling Sting"
glass_desc = "A stingy drink."
value = 1.5
/datum/reagent/consumable/ethanol/changelingsting/on_mob_life(mob/living/carbon/M)
if(M.mind) //Changeling Sting assists in the recharging of changeling chemicals.
@@ -1139,6 +1198,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "irishcarbomb"
glass_name = "Irish Car Bomb"
glass_desc = "An Irish car bomb."
value = 5
/datum/reagent/consumable/ethanol/syndicatebomb
name = "Syndicate Bomb"
@@ -1151,6 +1211,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "syndicatebomb"
glass_name = "Syndicate Bomb"
glass_desc = "A syndicate bomb."
value = 2
/datum/reagent/consumable/ethanol/syndicatebomb/on_mob_life(mob/living/carbon/M)
if(prob(5))
@@ -1168,6 +1229,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "erikasurprise"
glass_name = "Erika Surprise"
glass_desc = "The surprise is, it's green!"
value = 4
/datum/reagent/consumable/ethanol/driestmartini
name = "Driest Martini"
@@ -1181,6 +1243,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "driestmartiniglass"
glass_name = "Driest Martini"
glass_desc = "Only for the experienced. You think you see sand floating in the glass."
value = 5
/datum/reagent/consumable/ethanol/bananahonk
name = "Banana Honk"
@@ -1194,6 +1257,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "bananahonkglass"
glass_name = "Banana Honk"
glass_desc = "A drink from Clown Heaven."
value = 8
/datum/reagent/consumable/ethanol/bananahonk/on_mob_life(mob/living/carbon/M)
if((ishuman(M) && M.job == "Clown") || ismonkey(M))
@@ -1213,6 +1277,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "silencerglass"
glass_name = "Silencer"
glass_desc = "A drink from Mime Heaven."
value = 2
/datum/reagent/consumable/ethanol/silencer/on_mob_life(mob/living/carbon/M)
if(ishuman(M) && M.job == "Mime")
@@ -1231,6 +1296,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "drunkenblumpkin"
glass_name = "Drunken Blumpkin"
glass_desc = "A drink for the drunks."
value = 3
/datum/reagent/consumable/ethanol/whiskey_sour //Requested since we had whiskey cola and soda but not sour.
name = "Whiskey Sour"
@@ -1243,6 +1309,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "whiskey_sour"
glass_name = "whiskey sour"
glass_desc = "Lemon juice mixed with whiskey and a dash of sugar. Surprisingly satisfying."
value = 2
/datum/reagent/consumable/ethanol/hcider
name = "Hard Cider"
@@ -1256,7 +1323,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "hard cider"
glass_desc = "Tastes like autumn... no wait, fall!"
shot_glass_icon_state = "shotglassbrown"
value = 3
/datum/reagent/consumable/ethanol/fetching_fizz //A reference to one of my favorite games of all time. Pulls nearby ores to the imbiber!
name = "Fetching Fizz"
@@ -1270,7 +1337,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "fetching_fizz"
glass_name = "Fetching Fizz"
glass_desc = "Induces magnetism in the imbiber. Started as a barroom prank but evolved to become popular with miners and scrappers. Metallic aftertaste."
value = 2
/datum/reagent/consumable/ethanol/fetching_fizz/on_mob_life(mob/living/carbon/M)
for(var/obj/item/stack/ore/O in orange(3, M))
@@ -1290,6 +1357,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "hearty_punch"
glass_name = "Hearty Punch"
glass_desc = "Aromatic beverage served piping hot. According to folk tales it can almost wake the dead."
value = 1
/datum/reagent/consumable/ethanol/hearty_punch/on_mob_life(mob/living/carbon/M)
if(M.health <= 0)
@@ -1311,7 +1379,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "glass_brown2"
glass_name = "Bacchus' Blessing"
glass_desc = "You didn't think it was possible for a liquid to be so utterly revolting. Are you sure about this...?"
value = 8
/datum/reagent/consumable/ethanol/atomicbomb
@@ -1325,6 +1393,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "atomicbombglass"
glass_name = "Atomic Bomb"
glass_desc = "Nanotrasen cannot take legal responsibility for your actions after imbibing."
value = 3.56
/datum/reagent/consumable/ethanol/atomicbomb/on_mob_life(mob/living/carbon/M)
M.set_drugginess(50)
@@ -1354,6 +1423,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "gargleblasterglass"
glass_name = "Pan-Galactic Gargle Blaster"
glass_desc = "Like having your brain smashed out by a slice of lemon wrapped around a large gold brick."
value = 5
/datum/reagent/consumable/ethanol/gargle_blaster/on_mob_life(mob/living/carbon/M)
M.dizziness +=1.5
@@ -1387,6 +1457,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
impure_chem = "neuroweak"
inverse_chem_val = 0.5 //Clear conversion
inverse_chem = "neuroweak"
value = 4
/datum/reagent/consumable/ethanol/neurotoxin/proc/pickt()
return (pick(TRAIT_PARALYSIS_L_ARM,TRAIT_PARALYSIS_R_ARM,TRAIT_PARALYSIS_R_LEG,TRAIT_PARALYSIS_L_LEG))
@@ -1428,6 +1499,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
description = "A mostly safe alcoholic drink for the true daredevils. Counteracts Neurotoxins."
boozepwr = 60
pH = 8
value = 3
/datum/reagent/consumable/ethanol/neuroweak/on_mob_life(mob/living/carbon/M)
if(holder.has_reagent("neurotoxin"))
@@ -1454,6 +1526,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "hippiesdelightglass"
glass_name = "Hippie's Delight"
glass_desc = "A drink enjoyed by people during the 1960's."
value = 1.96
/datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/carbon/M)
M.slurring = max(M.slurring,50)
@@ -1498,6 +1571,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "nog3"
glass_name = "eggnog"
glass_desc = "The traditional way to get absolutely hammered at a Christmas party."
value = 4
/datum/reagent/consumable/ethanol/narsour
@@ -1511,6 +1585,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "narsour"
glass_name = "Nar'Sour"
glass_desc = "A new hit cocktail inspired by THE ARM Breweries will have you shouting Fuu ma'jin in no time!"
value = 6.66
/datum/reagent/consumable/ethanol/narsour/on_mob_life(mob/living/carbon/M)
M.cultslurring = min(M.cultslurring + 3, 3)
@@ -1527,6 +1602,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "glass_orange"
glass_name = "Triple Sec"
glass_desc = "A glass of straight Triple Sec."
value = 1.5
/datum/reagent/consumable/ethanol/creme_de_menthe
name = "Creme de Menthe"
@@ -1538,6 +1614,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "glass_green"
glass_name = "Creme de Menthe"
glass_desc = "You can almost feel the first breath of spring just looking at it."
value = 2
/datum/reagent/consumable/ethanol/creme_de_cacao
name = "Creme de Cacao"
@@ -1549,6 +1626,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "glass_brown"
glass_name = "Creme de Cacao"
glass_desc = "A million hazing lawsuits and alcohol poisonings have started with this humble ingredient."
value = 1
/datum/reagent/consumable/ethanol/quadruple_sec
name = "Quadruple Sec"
@@ -1561,6 +1639,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "quadruple_sec"
glass_name = "Quadruple Sec"
glass_desc = "An intimidating and lawful beverage dares you to violate the law and make its day. Still can't drink it on duty, though."
value = 3.04
/datum/reagent/consumable/ethanol/quadruple_sec/on_mob_life(mob/living/carbon/M)
if(M.mind && HAS_TRAIT(M.mind, TRAIT_LAW_ENFORCEMENT_METABOLISM)) //Securidrink in line with the screwderiver for engineers or nothing for mimes.
@@ -1580,6 +1659,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "quintuple_sec"
glass_name = "Quintuple Sec"
glass_desc = "Now you are become law, destroyer of clowns."
value = 4.01
/datum/reagent/consumable/ethanol/quintuple_sec/on_mob_life(mob/living/carbon/M)
if(M.mind && HAS_TRAIT(M.mind, TRAIT_LAW_ENFORCEMENT_METABOLISM)) //Securidrink in line with the screwderiver for engineers or nothing for mimes but STRONG..
@@ -1602,6 +1682,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "grasshopper"
glass_name = "Grasshopper"
glass_desc = "You weren't aware edible beverages could be that green."
value = 1
/datum/reagent/consumable/ethanol/stinger
name = "Stinger"
@@ -1614,6 +1695,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "stinger"
glass_name = "Stinger"
glass_desc = "You wonder what would happen if you pointed this at a heat source..."
value = 1
/datum/reagent/consumable/ethanol/bastion_bourbon
name = "Bastion Bourbon"
@@ -1629,6 +1711,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "If you're feeling low, count on the buttery flavor of our own bastion bourbon."
shot_glass_icon_state = "shotglassgreen"
pH = 4
value = 8
/datum/reagent/consumable/ethanol/bastion_bourbon/on_mob_metabolize(mob/living/L)
var/heal_points = 10
@@ -1666,6 +1749,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "Squirt Cider"
glass_desc = "Squirt cider will toughen you right up. Too bad about the musty aftertaste."
shot_glass_icon_state = "shotglassgreen"
value = 1
/datum/reagent/consumable/ethanol/squirt_cider/on_mob_life(mob/living/carbon/M)
M.satiety += 5 //for context, vitamins give 30 satiety per tick
@@ -1683,6 +1767,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "fringe_weaver"
glass_name = "Fringe Weaver"
glass_desc = "It's a wonder it doesn't spill out of the glass."
value = 1
/datum/reagent/consumable/ethanol/sugar_rush
name = "Sugar Rush"
@@ -1696,6 +1781,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "sugar_rush"
glass_name = "Sugar Rush"
glass_desc = "If you can't mix a Sugar Rush, you can't tend bar."
value = 1
/datum/reagent/consumable/ethanol/sugar_rush/on_mob_life(mob/living/carbon/M)
M.satiety -= 10 //junky as hell! a whole glass will keep you from being able to eat junk food
@@ -1713,6 +1799,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "crevice_spike"
glass_name = "Crevice Spike"
glass_desc = "It'll either knock the drunkenness out of you or knock you out cold. Both, probably."
value = 1
/datum/reagent/consumable/ethanol/crevice_spike/on_mob_metabolize(mob/living/L) //damage only applies when drink first enters system and won't again until drink metabolizes out
L.adjustBruteLoss(3 * min(5,volume)) //minimum 3 brute damage on ingestion to limit non-drink means of injury - a full 5 unit gulp of the drink trucks you for the full 15
@@ -1727,6 +1814,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "sakecup"
glass_name = "cup of sake"
glass_desc = "A traditional cup of sake."
value = 0.1
/datum/reagent/consumable/ethanol/peppermint_patty
name = "Peppermint Patty"
@@ -1739,6 +1827,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "peppermint_patty"
glass_name = "Peppermint Patty"
glass_desc = "A boozy minty hot cocoa that warms your belly on a cold night."
value = 2
/datum/reagent/consumable/ethanol/peppermint_patty/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL)
@@ -1756,6 +1845,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "Alexander"
glass_desc = "A creamy, indulgent delight that is stronger than it seems."
var/obj/item/shield/mighty_shield
value = 1
/datum/reagent/consumable/ethanol/alexander/on_mob_metabolize(mob/living/L)
if(ishuman(L))
@@ -1788,6 +1878,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "sidecar"
glass_name = "Sidecar"
glass_desc = "The one ride you'll gladly give up the wheel for."
value = 1
/datum/reagent/consumable/ethanol/between_the_sheets
name = "Between the Sheets"
@@ -1800,6 +1891,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "between_the_sheets"
glass_name = "Between the Sheets"
glass_desc = "The only drink that comes with a label reminding you of Nanotrasen's zero-tolerance promiscuity policy."
value = 2
/datum/reagent/consumable/ethanol/between_the_sheets/on_mob_life(mob/living/L)
..()
@@ -1825,6 +1917,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "kamikaze"
glass_name = "Kamikaze"
glass_desc = "Divinely windy."
value = 1
/datum/reagent/consumable/ethanol/mojito
name = "Mojito"
@@ -1837,6 +1930,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "mojito"
glass_name = "Mojito"
glass_desc = "A drink that looks as refreshing as it tastes."
value = 1
/datum/reagent/consumable/ethanol/fernet
name = "Fernet"
@@ -1846,7 +1940,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
boozepwr = 80
taste_description = "utter bitterness"
glass_name = "glass of fernet"
glass_desc = "A glass of pure Fernet. Only an absolute madman would drink this alone." //Hi Kevum
glass_desc = "A glass of pure Fernet. Only an absolute madman would drink this alone."
value = 0.1
/datum/reagent/consumable/ethanol/fernet/on_mob_life(mob/living/carbon/M)
if(M.nutrition <= NUTRITION_LEVEL_STARVING)
@@ -1866,6 +1961,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
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."
value = 1
/datum/reagent/consumable/ethanol/fernet_cola/on_mob_life(mob/living/carbon/M)
if(M.nutrition <= NUTRITION_LEVEL_STARVING)
@@ -1886,6 +1982,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "fanciulli"
glass_name = "glass of fanciulli"
glass_desc = "A glass of Fanciulli. It's just Manhattan with Fernet."
value = 1
/datum/reagent/consumable/ethanol/fanciulli/on_mob_life(mob/living/carbon/M)
M.nutrition = max(M.nutrition - 5, 0)
@@ -1910,7 +2007,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state= "minted_fernet"
glass_name = "glass of branca menta"
glass_desc = "A glass of Branca Menta, perfect for those lazy and hot sunday summer afternoons." //Get lazy literally by drinking this
value = 1
/datum/reagent/consumable/ethanol/branca_menta/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C)
@@ -1934,6 +2031,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "blank_paper"
glass_name = "glass of blank paper"
glass_desc = "A fizzy cocktail for those looking to start fresh."
value = 1
/datum/reagent/consumable/ethanol/blank_paper/on_mob_life(mob/living/carbon/M)
if(ishuman(M) && M.job == "Mime")
@@ -1951,6 +2049,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "champagne_glass"
glass_name = "Champagne"
glass_desc = "The flute clearly displays the slowly rising bubbles."
value = 1
/datum/reagent/consumable/ethanol/wizz_fizz
name = "Wizz Fizz"
@@ -1963,6 +2062,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "wizz_fizz"
glass_name = "Wizz Fizz"
glass_desc = "The glass bubbles and froths with an almost magical intensity."
value = 1
/datum/reagent/consumable/ethanol/wizz_fizz/on_mob_life(mob/living/carbon/M)
//A healing drink similar to Quadruple Sec, Ling Stings, and Screwdrivers for the Wizznerds; the check is consistent with the changeling sting
@@ -1983,6 +2083,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "bug_spray"
glass_name = "Bug Spray"
glass_desc = "Your eyes begin to water as the sting of alcohol reaches them."
value = 1
/datum/reagent/consumable/ethanol/bug_spray/on_mob_life(mob/living/carbon/M)
//Bugs should not drink Bug spray.
@@ -2005,6 +2106,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "applejack_glass"
glass_name = "Applejack"
glass_desc = "You feel like you could drink this all neight."
value = 0.1
/datum/reagent/consumable/ethanol/jack_rose
name = "Jack Rose"
@@ -2017,6 +2119,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "jack_rose"
glass_name = "Jack Rose"
glass_desc = "Enough of these, and you really will start to suppose your toeses are roses."
value = 1
/datum/reagent/consumable/ethanol/turbo
name = "Turbo"
@@ -2029,6 +2132,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "turbo"
glass_name = "Turbo"
glass_desc = "A turbulent cocktail for outlaw hoverbikers."
value = 0.3
/datum/reagent/consumable/ethanol/turbo/on_mob_life(mob/living/carbon/M)
if(prob(4))
@@ -2047,6 +2151,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "old_timer"
glass_name = "Old Timer"
glass_desc = "WARNING! May cause premature aging!"
value = 2
/datum/reagent/consumable/ethanol/old_timer/on_mob_life(mob/living/carbon/M)
if(prob(20))
@@ -2080,6 +2185,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "rubberneck"
glass_name = "Rubberneck"
glass_desc = "A popular drink amongst those adhering to an all synthetic diet."
value = 1
/datum/reagent/consumable/ethanol/duplex
name = "Duplex"
@@ -2092,6 +2198,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "duplex"
glass_name = "Duplex"
glass_desc = "To imbibe one component separately from the other is consider a great faux pas."
value = 1
/datum/reagent/consumable/ethanol/trappist
name = "Trappist Beer"
@@ -2104,6 +2211,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "trappistglass"
glass_name = "Trappist Beer"
glass_desc = "boozy Catholicism in a glass."
value = 1
/datum/reagent/consumable/ethanol/trappist/on_mob_life(mob/living/carbon/M)
if(M.mind.isholy)
@@ -2123,6 +2231,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "Blazaam"
glass_desc = "The glass seems to be sliding between realities. Doubles as a Berenstain remover."
var/stored_teleports = 0
value = 4
/datum/reagent/consumable/ethanol/blazaam/on_mob_life(mob/living/carbon/M)
if(M.drunkenness > 40)
@@ -2145,6 +2254,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "planet_cracker"
glass_name = "Planet Cracker"
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/commander_and_chief
name = "Commander and Chief"
@@ -2153,10 +2263,11 @@ All effects don't start immediately, but rather get worse over time; the rate is
color = "#ffffc9"
boozepwr = 50
quality = DRINK_FANTASTIC
taste_description = "Tastes like...duty and responsibility?"
taste_description = "duty and responsibility"
glass_icon_state = "commander_and_chief"
glass_name = "Commander and Chief"
glass_desc = "The gems of this majestic chalice represent the departments and their Heads."
value = 10
/datum/reagent/consumable/ethanol/commander_and_chief/on_mob_life(mob/living/carbon/M)
if(M.mind && HAS_TRAIT(M.mind, TRAIT_CAPTAIN_METABOLISM))
@@ -2181,6 +2292,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
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.
pH = 4
value = 4
/datum/reagent/consumable/ethanol/fruit_wine/on_new(list/data)
names = data["names"]
@@ -92,6 +92,7 @@
description = "The sweet juice of an apple, fit for all ages."
color = "#ECFF56" // rgb: 236, 255, 86
taste_description = "apples"
pH = 3.2 // ~ 2.7 -> 3.7
/datum/reagent/consumable/poisonberryjuice
name = "Poison Berry Juice"
@@ -408,10 +409,10 @@
/datum/reagent/consumable/nuka_cola/on_mob_metabolize(mob/living/L)
..()
ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id)
L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
/datum/reagent/consumable/nuka_cola/on_mob_end_metabolize(mob/living/L)
REMOVE_TRAIT(L, TRAIT_GOTTAGOFAST, id)
L.remove_movespeed_modifier(id)
..()
/datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M)
@@ -1,6 +1,7 @@
/datum/reagent/drug
name = "Drug"
id = "drug"
value = 12
metabolization_rate = 0.5 * REAGENTS_METABOLISM
taste_description = "bitterness"
var/trippy = TRUE //Does this drug make you trip?
@@ -162,7 +163,7 @@
/datum/reagent/drug/methamphetamine
name = "Methamphetamine"
id = "methamphetamine"
description = "Reduces stun times by about 300%, speeds the user up, and allows the user to quickly recover stamina while dealing a small amount of Brain damage. If overdosed the subject will move randomly, laugh randomly, drop items and suffer from Toxin and Brain damage. If addicted the subject will constantly jitter and drool, before becoming dizzy and losing motor control and eventually suffer heavy toxin damage."
description = "Reduces stun times by about 300%, and allows the user to quickly recover stamina while dealing a small amount of Brain damage. If overdosed the subject will move randomly, laugh randomly, drop items and suffer from Toxin and Brain damage. If addicted the subject will constantly jitter and drool, before becoming dizzy and losing motor control and eventually suffer heavy toxin damage."
reagent_state = LIQUID
color = "#FAFAFA"
overdose_threshold = 20
@@ -423,7 +424,7 @@
. = 1
/datum/reagent/drug/happiness/addiction_act_stage1(mob/living/M)// all work and no play makes jack a dull boy
GET_COMPONENT_FROM(mood, /datum/component/mood, M)
var/datum/component/mood/mood = M.GetComponent(/datum/component/mood)
mood.setSanity(min(mood.sanity, SANITY_DISTURBED))
M.Jitter(5)
if(prob(20))
@@ -431,7 +432,7 @@
..()
/datum/reagent/drug/happiness/addiction_act_stage2(mob/living/M)
GET_COMPONENT_FROM(mood, /datum/component/mood, M)
var/datum/component/mood/mood = M.GetComponent(/datum/component/mood)
mood.setSanity(min(mood.sanity, SANITY_UNSTABLE))
M.Jitter(10)
if(prob(30))
@@ -439,7 +440,7 @@
..()
/datum/reagent/drug/happiness/addiction_act_stage3(mob/living/M)
GET_COMPONENT_FROM(mood, /datum/component/mood, M)
var/datum/component/mood/mood = M.GetComponent(/datum/component/mood)
mood.setSanity(min(mood.sanity, SANITY_CRAZY))
M.Jitter(15)
if(prob(40))
@@ -447,7 +448,7 @@
..()
/datum/reagent/drug/happiness/addiction_act_stage4(mob/living/carbon/human/M)
GET_COMPONENT_FROM(mood, /datum/component/mood, M)
var/datum/component/mood/mood = M.GetComponent(/datum/component/mood)
mood.setSanity(SANITY_INSANE)
M.Jitter(20)
if(prob(50))
@@ -469,7 +470,7 @@
/datum/reagent/drug/skooma/on_mob_metabolize(mob/living/L)
. = ..()
ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id)
L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
L.next_move_modifier *= 2
if(ishuman(L))
var/mob/living/carbon/human/H = L
@@ -480,7 +481,7 @@
/datum/reagent/drug/skooma/on_mob_end_metabolize(mob/living/L)
. = ..()
REMOVE_TRAIT(L, TRAIT_GOTTAGOFAST, id)
L.remove_movespeed_modifier(id)
L.next_move_modifier *= 0.5
if(ishuman(L))
var/mob/living/carbon/human/H = L
@@ -12,6 +12,7 @@
id = "consumable"
taste_description = "generic food"
taste_mult = 4
value = 0.1
var/nutriment_factor = 1 * REAGENTS_METABOLISM
var/quality = 0 //affects mood, typically higher for mixed drinks with more complex recipes
@@ -91,6 +92,7 @@
name = "Vitamin"
id = "vitamin"
description = "All the best vitamins, minerals, and carbohydrates the body needs in pure form."
value = 0.5
brute_heal = 1
burn_heal = 1
@@ -106,6 +108,7 @@
description = "A variety of cooking oil derived from fat or plants. Used in food preparation and frying."
color = "#EADD6B" //RGB: 234, 221, 107 (based off of canola oil)
taste_mult = 0.8
value = 1
taste_description = "oil"
nutriment_factor = 7 * REAGENTS_METABOLISM //Not very healthy on its own
metabolization_rate = 10 * REAGENTS_METABOLISM
@@ -138,7 +141,7 @@
return TRUE
/datum/reagent/consumable/cooking_oil/reaction_turf(turf/open/T, reac_volume)
if(!istype(T))
if(!istype(T) || isgroundlessturf(T))
return
if(reac_volume >= 5)
T.MakeSlippery(TURF_WET_LUBE, min_wet_time = 10 SECONDS, wet_time_to_add = reac_volume * 1.5 SECONDS)
@@ -156,6 +159,7 @@
metabolization_rate = 2 * REAGENTS_METABOLISM
overdose_threshold = 200 // Hyperglycaemic shock
taste_description = "sweetness"
value = 1
/datum/reagent/consumable/sugar/overdose_start(mob/living/M)
to_chat(M, "<span class='userdanger'>You go into hyperglycaemic shock! Lay off the twinkies!</span>")
@@ -237,6 +241,7 @@
description = "A special oil that noticably chills the body. Extracted from Icepeppers and slimes."
color = "#8BA6E9" // rgb: 139, 166, 233
taste_description = "mint"
value = 2
pH = 13 //HMM! I wonder
/datum/reagent/consumable/frostoil/on_mob_life(mob/living/carbon/M)
@@ -438,6 +443,7 @@
/datum/reagent/consumable/sprinkles
name = "Sprinkles"
id = "sprinkles"
value = 3
description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops."
color = "#FF00FF" // rgb: 255, 0, 255
taste_description = "childhood whimsy"
@@ -453,6 +459,7 @@
id = "peanut_butter"
description = "A popular food paste made from ground dry-roasted peanuts."
color = "#C29261"
value = 3
nutriment_factor = 15 * REAGENTS_METABOLISM
taste_description = "peanuts"
@@ -461,6 +468,7 @@
id = "cornoil"
description = "An oil derived from various types of corn."
nutriment_factor = 20 * REAGENTS_METABOLISM
value = 4
color = "#302000" // rgb: 48, 32, 0
taste_description = "slime"
@@ -479,6 +487,7 @@
/datum/reagent/consumable/enzyme
name = "Universal Enzyme"
id = "enzyme"
value = 1
description = "A universal enzyme used in the preperation of certain chemicals and foods."
color = "#365E30" // rgb: 54, 94, 48
taste_description = "sweetness"
@@ -518,6 +527,7 @@
/datum/reagent/consumable/flour
name = "Flour"
id = "flour"
value = 0.5
description = "This is what you rub all over yourself to pretend to be a ghost."
reagent_state = SOLID
color = "#FFFFFF" // rgb: 0, 0, 0
@@ -535,6 +545,7 @@
id = "cherryjelly"
description = "Totally the best. Only to be spread on foods with excellent lateral symmetry."
color = "#801E28" // rgb: 128, 30, 40
value = 1
taste_description = "cherry"
/datum/reagent/consumable/bluecherryjelly
@@ -542,11 +553,13 @@
id = "bluecherryjelly"
description = "Blue and tastier kind of cherry jelly."
color = "#00F0FF"
value = 12
taste_description = "blue cherry"
/datum/reagent/consumable/rice
name = "Rice"
id = "rice"
value = 0.5
description = "tiny nutritious grains"
reagent_state = SOLID
nutriment_factor = 3 * REAGENTS_METABOLISM
@@ -556,6 +569,7 @@
/datum/reagent/consumable/vanilla
name = "Vanilla Powder"
id = "vanilla"
value = 1
description = "A fatty, bitter paste made from vanilla pods."
reagent_state = SOLID
nutriment_factor = 5 * REAGENTS_METABOLISM
@@ -565,6 +579,7 @@
/datum/reagent/consumable/eggyolk
name = "Egg Yolk"
id = "eggyolk"
value = 1
description = "It's full of protein."
nutriment_factor = 3 * REAGENTS_METABOLISM
color = "#FFB500"
@@ -573,6 +588,7 @@
/datum/reagent/consumable/corn_starch
name = "Corn Starch"
id = "corn_starch"
value = 2
description = "A slippery solution."
color = "#f7f6e4"
taste_description = "slime"
@@ -580,6 +596,7 @@
/datum/reagent/consumable/corn_syrup
name = "Corn Syrup"
id = "corn_syrup"
value = 1
description = "Decays into sugar."
color = "#fff882"
metabolization_rate = 3 * REAGENTS_METABOLISM
@@ -594,6 +611,7 @@
id = "honey"
description = "Sweet sweet honey that decays into sugar. Has antibacterial and natural healing properties."
color = "#d3a308"
value = 15
nutriment_factor = 15 * REAGENTS_METABOLISM
metabolization_rate = 1 * REAGENTS_METABOLISM
taste_description = "sweetness"
@@ -608,18 +626,19 @@
..()
/datum/reagent/consumable/honey/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
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
S.success_multiplier = max(0.6, S.success_multiplier) // +60% success probability on each step, compared to bacchus' blessing's ~46%
..()
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
S.success_multiplier = max(0.6, S.success_multiplier) // +60% success probability on each step, compared to bacchus' blessing's ~46%
..()
/datum/reagent/consumable/mayonnaise
name = "Mayonnaise"
id = "mayonnaise"
description = "An white and oily mixture of mixed egg yolks."
color = "#DFDFDF"
value = 5
taste_description = "mayonnaise"
/datum/reagent/consumable/tearjuice
@@ -748,6 +767,7 @@
taste_mult = 8
taste_description = "sweetness"
overdose_threshold = 17
value = 0.2
/datum/reagent/consumable/astrotame/overdose_process(mob/living/carbon/M)
if(M.disgust < 80)
@@ -3,7 +3,7 @@
//Invert = Whole conversion
/datum/reagent/impure
chemical_flags = REAGENT_INVISIBLE | REAGENT_SNEAKYNAME //by default, it will stay hidden on splitting, but take the name of the source on inverting
chemical_flags = REAGENT_INVISIBLE | REAGENT_SNEAKYNAME //by default, it will stay hidden on splitting, but take the name of the source on inverting
/datum/reagent/impure/fermiTox
@@ -8,6 +8,7 @@
/datum/reagent/medicine
name = "Medicine"
id = "medicine"
value = 2
taste_description = "bitterness"
/datum/reagent/medicine/on_mob_life(mob/living/carbon/M)
@@ -127,6 +128,7 @@
description = "Instantly restores all hearing to the patient, but does not cure deafness."
color = "#6600FF" // rgb: 100, 165, 255
pH = 2
value = 10
/datum/reagent/medicine/inacusiate/on_mob_life(mob/living/carbon/M)
M.restoreEars()
@@ -209,6 +211,7 @@
overdose_threshold = 30
taste_description = "fish"
pH = 12.2
value = 20
/datum/reagent/medicine/rezadone/on_mob_life(mob/living/carbon/M)
M.setCloneLoss(0) //Rezadone is almost never used in favor of cryoxadone. Hopefully this will change that.
@@ -236,10 +239,13 @@
/datum/reagent/medicine/silver_sulfadiazine
name = "Silver Sulfadiazine"
id = "silver_sulfadiazine"
description = "If used in touch-based applications, immediately restores burn wounds as well as restoring more over time. If ingested through other means, deals minor toxin damage."
description = "If used in touch-based applications, immediately restores burn wounds as well as restoring more over time. It is mildly poisonous taken orally or by injection. If overdosed, deals brute and minor liver damage."
reagent_state = LIQUID
pH = 7.2
color = "#ffeac9"
metabolization_rate = 5 * REAGENTS_METABOLISM
overdose_threshold = 50
value = 3
/datum/reagent/medicine/silver_sulfadiazine/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1)
if(iscarbon(M) && M.stat != DEAD)
@@ -260,6 +266,15 @@
..()
. = 1
/datum/reagent/medicine/silver_sulfadiazine/overdose_start(mob/living/M)
metabolization_rate = 15 * REAGENTS_METABOLISM
M.adjustBruteLoss(2*REM, 0)
if(iscarbon(M))
var/mob/living/carbon/C = M
C.applyLiverDamage(1)
..()
. = 1
/datum/reagent/medicine/oxandrolone
name = "Oxandrolone"
id = "oxandrolone"
@@ -269,9 +284,10 @@
metabolization_rate = 0.5 * REAGENTS_METABOLISM
overdose_threshold = 25
pH = 10.7
value = 4
/datum/reagent/medicine/oxandrolone/on_mob_life(mob/living/carbon/M)
if(M.getFireLoss() > 50)
if(M.getFireLoss() > 25)
M.adjustFireLoss(-4*REM, 0) //Twice as effective as silver sulfadiazine for severe burns
else
M.adjustFireLoss(-0.5*REM, 0) //But only a quarter as effective for more minor ones
@@ -287,10 +303,13 @@
/datum/reagent/medicine/styptic_powder
name = "Styptic Powder"
id = "styptic_powder"
description = "If used in touch-based applications, immediately restores bruising as well as restoring more over time. If ingested through other means, deals minor toxin damage."
description = "If used in touch-based applications, immediately restores bruising as well as restoring more over time. It is poisonous if taken orally or by injection. If overdosed, deals brute and minor liver damage."
reagent_state = LIQUID
color = "#FF9696"
pH = 6.7
metabolization_rate = 5 * REAGENTS_METABOLISM
overdose_threshold = 50
value = 3
/datum/reagent/medicine/styptic_powder/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1)
if(iscarbon(M) && M.stat != DEAD)
@@ -312,6 +331,15 @@
..()
. = 1
datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
metabolization_rate = 15 * REAGENTS_METABOLISM
M.adjustBruteLoss(2*REM, 0)
if(iscarbon(M))
var/mob/living/carbon/C = M
C.applyLiverDamage(1)
..()
. = 1
/datum/reagent/medicine/salglu_solution
name = "Saline-Glucose Solution"
id = "salglu_solution"
@@ -324,6 +352,7 @@
var/last_added = 0
var/maximum_reachable = BLOOD_VOLUME_NORMAL - 10 //So that normal blood regeneration can continue with salglu active
pH = 5.5
value = 1
/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/carbon/M)
if(last_added)
@@ -398,23 +427,36 @@
/datum/reagent/medicine/synthflesh
name = "Synthflesh"
id = "synthflesh"
description = "Has a 100% chance of instantly healing brute and burn damage. One unit of the chemical will heal one point of damage. Touch application only."
description = "Has a 100% chance of healing large amounts of brute and burn damage very quickly. One unit of the chemical will heal one point of damage. Touch application only."
reagent_state = LIQUID
color = "#FFEBEB"
pH = 11.5
metabolization_rate = 5 * REAGENTS_METABOLISM
overdose_threshold = 40
value = 6
/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
if(method in list(PATCH, TOUCH))
M.adjustBruteLoss(-1.25 * reac_volume)
M.adjustFireLoss(-1.25 * reac_volume)
if(method in list(INGEST, VAPOR))
var/mob/living/carbon/C = M
C.losebreath++
C.emote("cough")
to_chat(M, "<span class='danger'>You feel your throat closing up!</span>")
else if(method == INJECT)
return
else if(method in list(PATCH, TOUCH))
M.adjustBruteLoss(-1 * reac_volume)
M.adjustFireLoss(-1 * reac_volume)
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)
..()
/datum/reagent/medicine/synthflesh/overdose_start(mob/living/M)
metabolization_rate = 15 * REAGENTS_METABOLISM
/datum/reagent/medicine/charcoal
name = "Charcoal"
id = "charcoal"
@@ -424,6 +466,7 @@
metabolization_rate = 0.5 * REAGENTS_METABOLISM
taste_description = "ash"
pH = 5
value = 1
/datum/reagent/medicine/charcoal/on_mob_life(mob/living/carbon/M)
M.adjustToxLoss(-2*REM, 0)
@@ -442,6 +485,7 @@
metabolization_rate = 0.25 * REAGENTS_METABOLISM
overdose_threshold = 30
pH = 2
value = 5
/datum/reagent/medicine/omnizine/on_mob_life(mob/living/carbon/M)
M.adjustToxLoss(-0.5*REM, 0)
@@ -545,7 +589,7 @@
/datum/reagent/medicine/sal_acid/on_mob_life(mob/living/carbon/M)
if(M.getBruteLoss() > 50)
if(M.getBruteLoss() > 25)
M.adjustBruteLoss(-4*REM, 0) //Twice as effective as styptic powder for severe bruising
else
M.adjustBruteLoss(-0.5*REM, 0) //But only a quarter as effective for more minor ones
@@ -595,7 +639,7 @@
/datum/reagent/medicine/ephedrine
name = "Ephedrine"
id = "ephedrine"
description = "Increases stun resistance and movement speed. Overdose deals toxin damage and inhibits breathing."
description = "Increases stun resistance. Overdose deals toxin damage and inhibits breathing."
reagent_state = LIQUID
color = "#D2FFFA"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
@@ -950,10 +994,10 @@
/datum/reagent/medicine/stimulants/on_mob_metabolize(mob/living/L)
..()
ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id)
L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
/datum/reagent/medicine/stimulants/on_mob_end_metabolize(mob/living/L)
REMOVE_TRAIT(L, TRAIT_GOTTAGOFAST, id)
L.remove_movespeed_modifier(id)
..()
/datum/reagent/medicine/stimulants/on_mob_life(mob/living/carbon/M)
@@ -1158,19 +1202,19 @@
pH = 11.8
/datum/reagent/medicine/neo_jelly/on_mob_life(mob/living/carbon/M)
M.adjustBruteLoss(-1.5*REM, 0)
M.adjustFireLoss(-1.5*REM, 0)
M.adjustOxyLoss(-1.5*REM, 0)
M.adjustToxLoss(-1.5*REM, 0, TRUE) //heals TOXINLOVERs
. = 1
..()
M.adjustBruteLoss(-1.5*REM, 0)
M.adjustFireLoss(-1.5*REM, 0)
M.adjustOxyLoss(-1.5*REM, 0)
M.adjustToxLoss(-1.5*REM, 0, TRUE) //heals TOXINLOVERs
. = 1
..()
/datum/reagent/medicine/neo_jelly/overdose_process(mob/living/M)
M.adjustOxyLoss(2.6*REM, 0)
M.adjustBruteLoss(3.5*REM, 0)
M.adjustFireLoss(3.5*REM, 0)
..()
. = 1
M.adjustOxyLoss(2.6*REM, 0)
M.adjustBruteLoss(3.5*REM, 0)
M.adjustFireLoss(3.5*REM, 0)
..()
. = 1
/datum/reagent/medicine/earthsblood //Created by ambrosia gaia plants
name = "Earthsblood"
@@ -1274,10 +1318,10 @@
/datum/reagent/medicine/changelinghaste/on_mob_metabolize(mob/living/L)
..()
ADD_TRAIT(L, TRAIT_GOTTAGOREALLYFAST, id)
L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING))
/datum/reagent/medicine/changelinghaste/on_mob_end_metabolize(mob/living/L)
REMOVE_TRAIT(L, TRAIT_GOTTAGOREALLYFAST, id)
L.remove_movespeed_modifier(id)
..()
/datum/reagent/medicine/changelinghaste/on_mob_life(mob/living/carbon/M)
@@ -1297,10 +1341,12 @@
/datum/reagent/medicine/corazone/on_mob_metabolize(mob/living/M)
..()
ADD_TRAIT(M, TRAIT_STABLEHEART, id)
ADD_TRAIT(M, TRAIT_STABLEHEART, type)
ADD_TRAIT(M, TRAIT_STABLELIVER, type)
/datum/reagent/medicine/corazone/on_mob_end_metabolize(mob/living/M)
REMOVE_TRAIT(M, TRAIT_STABLEHEART, id)
REMOVE_TRAIT(M, TRAIT_STABLEHEART, type)
REMOVE_TRAIT(M, TRAIT_STABLELIVER, type)
..()
/datum/reagent/medicine/muscle_stimulant
@@ -1407,7 +1453,7 @@
M.dizziness = max(0, M.dizziness-6)
M.confused = max(0, M.confused-6)
M.disgust = max(0, M.disgust-6)
GET_COMPONENT_FROM(mood, /datum/component/mood, M)
var/datum/component/mood/mood = M.GetComponent(/datum/component/mood)
if(mood.sanity <= SANITY_NEUTRAL) // only take effect if in negative sanity and then...
mood.setSanity(min(mood.sanity+5, SANITY_NEUTRAL)) // set minimum to prevent unwanted spiking over neutral
..()
@@ -1,9 +1,10 @@
/datum/reagent/blood
data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"= null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
name = "Blood"
id = "blood"
color = "#C80000" // rgb: 200, 0, 0
description = "Blood from a human, or otherwise."
value = 1
color = BLOOD_COLOR_HUMAN // rgb: 200, 0, 0
description = "Blood from some creature."
metabolization_rate = 5 //fast rate so it disappears fast.
taste_description = "iron"
taste_mult = 1.3
@@ -28,27 +29,75 @@
if(iscarbon(L))
var/mob/living/carbon/C = L
if(C.get_blood_id() == "blood" && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits))))
if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type)))
C.reagents.add_reagent("toxin", reac_volume * 0.5)
else
C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM)
var/blood_id = C.get_blood_id()
if((blood_id == "blood" || blood_id == "jellyblood") && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits))))
C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM * C.blood_ratio)
// we don't care about bloodtype here, we're just refilling the mob
if(reac_volume >= 10 && istype(L))
if(reac_volume >= 10 && istype(L) && method != INJECT)
L.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"]))
/datum/reagent/blood/on_mob_life(mob/living/carbon/C) //Because lethals are preferred over stamina. damnifino.
var/blood_id = C.get_blood_id()
if((blood_id == "blood" || blood_id == "jellyblood"))
if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) //we only care about bloodtype here because this is where the poisoning should be
C.adjustToxLoss(rand(2,8)*REM, TRUE, TRUE) //forced to ensure people don't use it to gain beneficial toxin as slime person
..()
/datum/reagent/blood/reaction_obj(obj/O, volume)
if(volume >= 3 && istype(O))
O.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"]))
O.add_blood_DNA(data)
/datum/reagent/blood/reaction_turf(turf/T, reac_volume)//splash the blood all over the place
if(!istype(T))
return
if(reac_volume < 3)
return
var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here
if(!B)
B = new(T)
if(data["blood_DNA"])
B.blood_DNA[data["blood_DNA"]] = data["blood_type"]
if(!B.reagents)
B.reagents.add_reagent(id, reac_volume)
B.update_icon()
/datum/reagent/blood/on_new(list/data)
if(istype(data))
SetViruses(src, data)
color = bloodtype_to_color(data["blood_type"])
if(data["blood_type"] == "SY")
name = "Synthetic Blood"
taste_description = "oil"
if(data["blood_type"] == "X*")
name = "Xenomorph Blood"
taste_description = "acidic heresy"
shot_glass_icon_state = "shotglassgreen"
pH = 2.5
if(data["blood_type"] == "HF")
name = "Hydraulic Blood"
taste_description = "burnt oil"
pH = 9.75
if(data["blood_type"] == "BUG")
name = "Insect Blood"
taste_description = "grease"
pH = 7.25
if(data["blood_type"] == "L")
name = "Lizard Blood"
taste_description = "something spicy"
pH = 6.85
/datum/reagent/blood/on_merge(list/mix_data)
if(data && mix_data)
if(data["blood_DNA"] != mix_data["blood_DNA"])
data["cloneable"] = 0 //On mix, consider the genetic sampling unviable for pod cloning if the DNA sample doesn't match.
data["cloneable"] = FALSE //On mix, consider the genetic sampling unviable for pod cloning if the DNA sample doesn't match.
if(data["viruses"] || mix_data["viruses"])
var/list/mix1 = data["viruses"]
@@ -78,27 +127,111 @@
var/datum/disease/D = thing
. += D
/datum/reagent/blood/reaction_turf(turf/T, reac_volume)//splash the blood all over the place
if(!istype(T))
return
if(reac_volume < 3)
return
/datum/reagent/blood/synthetics
data = list("donor"=null,"viruses"=null,"blood_DNA"="REPLICATED", "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
name = "Synthetic Blood"
id = "syntheticblood"
taste_description = "oily"
color = BLOOD_COLOR_SYNTHETIC // rgb: 11, 7, 48
var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here
if(!B)
B = new(T)
if(data["blood_DNA"])
B.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"]))
/datum/reagent/blood/lizard
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_LIZARD, "blood_type"="L","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
name = "Lizard Blood"
id = "lizardblood"
taste_description = "spicy"
color = BLOOD_COLOR_LIZARD // rgb: 11, 7, 48
pH = 6.85
/datum/reagent/blood/jellyblood
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SLIME, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
name = "Slime Jelly Blood"
id = "jellyblood"
description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL."
color = BLOOD_COLOR_SLIME
taste_description = "slime"
taste_mult = 1.3
pH = 4
/datum/reagent/blood/xenomorph
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_XENO, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
name = "Xenomorph Blood"
id = "xenoblood"
taste_description = "acidic heresy"
color = BLOOD_COLOR_XENO // greenish yellow ooze
shot_glass_icon_state = "shotglassgreen"
pH = 2.5
/datum/reagent/blood/oil
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
name = "Hydraulic Blood"
id = "oilblood"
taste_description = "burnt oil"
color = BLOOD_COLOR_OIL // dark, y'know, expected batman colors.
pH = 9.75
/datum/reagent/blood/insect
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_BUG, "blood_type"="BUG","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
name = "Insectoid Blood"
id = "bugblood"
taste_description = "waxy"
color = BLOOD_COLOR_BUG // Bug colored, I guess.
pH = 7.25
/datum/reagent/blood/jellyblood/on_mob_life(mob/living/carbon/M)
if(prob(10))
if(M.dna?.species?.exotic_bloodtype != "GEL")
to_chat(M, "<span class='danger'>Your insides are burning!</span>")
M.adjustToxLoss(rand(20,60)*REM, 0)
. = 1
else if(prob(40) && isjellyperson(M))
M.heal_bodypart_damage(2*REM)
. = 1
..()
/datum/reagent/liquidgibs
name = "Liquid gibs"
id = "liquidgibs"
color = "#FF9966"
color = BLOOD_COLOR_HUMAN
description = "You don't even want to think about what's in here."
taste_description = "gross iron"
shot_glass_icon_state = "shotglassred"
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"= "O+","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
pH = 7.45
/datum/reagent/liquidgibs/xeno
name = "Liquid xeno gibs"
id = "liquidxenogibs"
color = BLOOD_COLOR_XENO
taste_description = "blended heresy"
shot_glass_icon_state = "shotglassgreen"
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_XENO, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
pH = 2.5
/datum/reagent/liquidgibs/slime
name = "Slime sludge"
id = "liquidslimegibs"
color = BLOOD_COLOR_SLIME
taste_description = "slime"
shot_glass_icon_state = "shotglassgreen"
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SLIME, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
pH = 4
/datum/reagent/liquidgibs/synth
name = "Synthetic sludge"
id = "liquidsyntheticgibs"
color = BLOOD_COLOR_SYNTHETIC
taste_description = "jellied plastic"
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
/datum/reagent/liquidgibs/oil
name = "Hydraulic sludge"
id = "liquidoilgibs"
color = BLOOD_COLOR_OIL
taste_description = "chunky burnt oil"
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
pH = 9.75
/datum/reagent/vaccine
//data must contain virus type
name = "Vaccine"
@@ -371,12 +504,19 @@
description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity."
color = "#009CA8" // rgb: 0, 156, 168
taste_description = "cherry" // by popular demand
var/lube_kind = TURF_WET_LUBE ///What kind of slipperiness gets added to turfs.
/datum/reagent/lube/reaction_turf(turf/open/T, reac_volume)
if (!istype(T))
return
if(reac_volume >= 1)
T.MakeSlippery(TURF_WET_LUBE, 15 SECONDS, min(reac_volume * 2 SECONDS, 120))
T.MakeSlippery(lube_kind, 15 SECONDS, min(reac_volume * 2 SECONDS, 120))
///Stronger kind of lube. Applies TURF_WET_SUPERLUBE.
/datum/reagent/lube/superlube
name = "Super Duper Lube"
description = "This \[REDACTED\] has been outlawed after the incident on \[DATA EXPUNGED\]."
lube_kind = TURF_WET_SUPERLUBE
/datum/reagent/spraytan
name = "Spray Tan"
@@ -585,6 +725,30 @@
race = /datum/species/android
mutationtext = "<span class='danger'>The pain subsides. You feel... artificial.</span>"
//Citadel Races
/datum/reagent/mutationtoxin/mammal
name = "Mammal Mutation Toxin"
id = "mammalmutationtoxin"
description = "A glowing toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/mammal
mutationtext = "<span class='danger'>The pain subsides. You feel... fluffier.</span>"
/datum/reagent/mutationtoxin/insect
name = "Insect Mutation Toxin"
id = "insectmutationtoxin"
description = "A glowing toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/insect
mutationtext = "<span class='danger'>The pain subsides. You feel... attracted to dark, moist areas.</span>"
/datum/reagent/mutationtoxin/xenoperson
name = "Xeno-Hybrid Mutation Toxin"
id = "xenopersonmutationtoxin"
description = "A glowing toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/xeno
mutationtext = "<span class='danger'>The pain subsides. You feel... oddly longing for the Queen.</span>" //sadly, not the British one.
//BLACKLISTED RACES
/datum/reagent/mutationtoxin/skeleton
@@ -947,12 +1111,12 @@
reagent_state = SOLID
taste_description = "iron"
pH = 6
overdose_threshold = 30
color = "#c2391d"
/datum/reagent/iron/on_mob_life(mob/living/carbon/C)
if(C.blood_volume < (BLOOD_VOLUME_NORMAL*C.blood_ratio))
C.blood_volume += 0.5
C.blood_volume += 0.01 //we'll have synthetics from medbay.
..()
/datum/reagent/iron/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
@@ -961,6 +1125,17 @@
M.reagents.add_reagent("toxin", reac_volume)
..()
/datum/reagent/iron/overdose_start(mob/living/M)
to_chat(M, "<span class='userdanger'>You start feeling your guts twisting painfully!</span>")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name)
/datum/reagent/iron/overdose_process(mob/living/carbon/C)
if(prob(20))
var/obj/item/organ/liver/L = C.getorganslot(ORGAN_SLOT_LIVER)
if (istype(L))
C.applyLiverDamage(2) //mild until the fabled med rework comes out. the organ damage galore
..()
/datum/reagent/gold
name = "Gold"
id = "gold"
@@ -1077,17 +1252,19 @@
pH = 5.5
/datum/reagent/space_cleaner/reaction_obj(obj/O, reac_volume)
if(istype(O, /obj/effect/decal/cleanable))
if(istype(O, /obj/effect/decal/cleanable) || istype(O, /obj/item/projectile/bullet/reusable/foam_dart) || istype(O, /obj/item/ammo_casing/caseless/foam_dart))
qdel(O)
else
if(O)
O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
O.clean_blood()
/datum/reagent/space_cleaner/reaction_turf(turf/T, reac_volume)
if(reac_volume >= 1)
T.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
T.clean_blood()
for(var/obj/effect/decal/cleanable/C in T)
qdel(C)
@@ -1105,26 +1282,33 @@
H.lip_style = null
H.update_body()
for(var/obj/item/I in C.held_items)
SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
I.clean_blood()
if(C.wear_mask)
if(SEND_SIGNAL(C.wear_mask, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
SEND_SIGNAL(C.wear_mask, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
if(C.wear_mask.clean_blood())
C.update_inv_wear_mask()
if(ishuman(M))
var/mob/living/carbon/human/H = C
if(H.head)
if(SEND_SIGNAL(H.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
SEND_SIGNAL(H.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
if(H.head.clean_blood())
H.update_inv_head()
if(H.wear_suit)
if(SEND_SIGNAL(H.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
SEND_SIGNAL(H.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
if(H.wear_suit.clean_blood())
H.update_inv_wear_suit()
else if(H.w_uniform)
if(SEND_SIGNAL(H.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
SEND_SIGNAL(H.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
if(H.w_uniform.clean_blood())
H.update_inv_w_uniform()
if(H.shoes)
if(SEND_SIGNAL(H.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
SEND_SIGNAL(H.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
if(H.shoes.clean_blood())
H.update_inv_shoes()
H.wash_cream()
SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
M.clean_blood()
/datum/reagent/space_cleaner/ez_clean
name = "EZ Clean"
@@ -1353,10 +1537,10 @@
/datum/reagent/nitryl/on_mob_metabolize(mob/living/L)
..()
ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id)
L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
/datum/reagent/nitryl/on_mob_end_metabolize(mob/living/L)
REMOVE_TRAIT(L, TRAIT_GOTTAGOFAST, id)
L.remove_movespeed_modifier(id)
..()
/////////////////////////Coloured Crayon Powder////////////////////////////
@@ -2089,24 +2273,6 @@
M.emote("nya")
..()
//Kept for legacy, I think it will break everything if you enable it.
/datum/reagent/penis_enlargement
name = "Penis Enlargement"
id = "penis_enlargement"
description = "A patented chemical forumula by Doctor Ronald Hyatt that is guaranteed to bring maximum GROWTH and LENGTH to your penis, today!"
color = "#888888"
taste_description = "chinese dragon powder"
metabolization_rate = INFINITY //So it instantly removes all of itself. Don't want to put strain on the system.
/datum/reagent/penis_enlargement/on_mob_life(mob/living/carbon/C)
var/obj/item/organ/genital/penis/P = C.getorganslot(ORGAN_SLOT_PENIS)
if(P)
var/added_length = round(volume/30,0.01) //Every 30u gives an extra inch. Rounded to the nearest 0.01 so float fuckery doesn't occur with the division by 30.
if(added_length >= 0.20) //Only add the length if it's greater than or equal to 0.2. This is to prevent people from smoking the reagents and causing the penis to update constantly.
P.length += added_length
P.update()
..()
/datum/reagent/changeling_string
name = "UNKNOWN"
id = "changeling_sting_real"
@@ -2119,26 +2285,22 @@
chemical_flags = REAGENT_INVISIBLE
/datum/reagent/changeling_string/on_mob_metabolize(mob/living/carbon/C)
if(C && C.dna && data["desired_dna"])
if(ishuman(C) && C.dna && data["desired_dna"])
original_dna = new C.dna.type
C.dna.copy_dna(original_dna)
var/datum/dna/new_dna = data["desired_dna"]
new_dna.copy_dna(C.dna)
new_dna.transfer_identity(C, TRUE)
C.real_name = new_dna.real_name
C.updateappearance(mutcolor_update=1)
C.update_body()
C.updateappearance(mutcolor_update = TRUE)
C.domutcheck()
C.regenerate_icons()
..()
/datum/reagent/changeling_string/on_mob_end_metabolize(mob/living/carbon/C)
if(original_dna)
original_dna.copy_dna(C.dna)
original_dna.transfer_identity(C, TRUE)
C.real_name = original_dna.real_name
C.updateappearance(mutcolor_update=1)
C.update_body()
C.updateappearance(mutcolor_update = TRUE)
C.domutcheck()
C.regenerate_icons()
..()
/datum/reagent/changeling_string/Destroy()
@@ -19,6 +19,7 @@
/datum/reagent/nitroglycerin
name = "Nitroglycerin"
id = "nitroglycerin"
value = 5
description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol."
color = "#808080" // rgb: 128, 128, 128
taste_description = "oil"
@@ -29,6 +30,7 @@
description = "Keeps unstable chemicals stable. This does not work on everything."
reagent_state = LIQUID
color = "#FFFF00"
value = 3
taste_description = "metal"
/datum/reagent/clf3
@@ -89,6 +91,7 @@
description = "Sucks everything into the detonation point."
reagent_state = LIQUID
color = "#210021"
value = 10
taste_description = "compressed bitterness"
/datum/reagent/blackpowder
@@ -97,6 +100,7 @@
description = "Explodes. Violently."
reagent_state = LIQUID
color = "#000000"
value = 5
metabolization_rate = 0.05
taste_description = "salt"
@@ -164,6 +168,7 @@
description = "Very flammable."
reagent_state = LIQUID
color = "#FA00AF"
value = 1
taste_description = "burning"
/datum/reagent/napalm/on_mob_life(mob/living/carbon/M)
@@ -283,6 +283,12 @@
results = list("regen_jelly" = 2)
required_reagents = list("tricordrazine" = 1, "slimejelly" = 1)
/datum/chemical_reaction/jelly_convert
name = "Blood Jelly Conversion"
id = "blood_jelly"
results = list("slimejelly" = 1)
required_reagents = list("toxin" = 1, "jellyblood" = 1)
/datum/chemical_reaction/corazone
name = "Corazone"
id = "corazone"
+1 -1
View File
@@ -26,7 +26,7 @@
create_reagents(volume, reagent_flags)
if(spawned_disease)
var/datum/disease/F = new spawned_disease()
var/list/data = list("viruses"= list(F))
var/list/data = list("blood_DNA" = "UNKNOWN DNA", "blood_type" = "SY","viruses"= list(F))
reagents.add_reagent("blood", disease_amount, data)
add_initial_reagents()
@@ -4,13 +4,16 @@
icon = 'icons/obj/bloodpack.dmi'
icon_state = "bloodpack"
volume = 200
reagent_flags = DRAINABLE
var/blood_type = null
var/labelled = 0
var/color_to_apply = "#FFFFFF"
var/mutable_appearance/fill_overlay
/obj/item/reagent_containers/blood/Initialize()
. = ..()
if(blood_type != null)
reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null))
reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_colour"=color, "blood_type"=blood_type,"resistances"=null,"trace_chem"=null))
update_icon()
/obj/item/reagent_containers/blood/on_reagent_change(changetype)
@@ -18,6 +21,7 @@
var/datum/reagent/blood/B = reagents.has_reagent("blood")
if(B && B.data && B.data["blood_type"])
blood_type = B.data["blood_type"]
color_to_apply = bloodtype_to_color(blood_type)
else
blood_type = null
update_pack_name()
@@ -45,7 +49,7 @@
/obj/item/reagent_containers/blood/random/Initialize()
icon_state = "bloodpack"
blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-", "L")
blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-", "L", "SY", "HF", "GEL", "BUG")
return ..()
/obj/item/reagent_containers/blood/APlus
@@ -72,6 +76,18 @@
/obj/item/reagent_containers/blood/universal
blood_type = "U"
/obj/item/reagent_containers/blood/synthetics
blood_type = "SY"
/obj/item/reagent_containers/blood/oilblood
blood_type = "HF"
/obj/item/reagent_containers/blood/jellyblood
blood_type = "GEL"
/obj/item/reagent_containers/blood/insect
blood_type = "BUG"
/obj/item/reagent_containers/blood/attackby(obj/item/I, mob/user, params)
if (istype(I, /obj/item/pen) || istype(I, /obj/item/toy/crayon))
if(!user.is_literate())
@@ -89,7 +89,7 @@
reagents.clear_reagents()
/obj/item/reagent_containers/glass/attackby(obj/item/I, mob/user, params)
var/hotness = I.is_hot()
var/hotness = I.get_temperature()
if(hotness && reagents)
reagents.expose_temperature(hotness)
to_chat(user, "<span class='notice'>You heat [name] with [I]!</span>")
@@ -196,3 +196,318 @@
volume = 250
list_reagents = list("holywater" = 150, "tiresolution" = 50, "dizzysolution" = 50)
amount_per_transfer_from_this = 50
#define HYPO_SPRAY 0
#define HYPO_INJECT 1
#define WAIT_SPRAY 25
#define WAIT_INJECT 25
#define SELF_SPRAY 15
#define SELF_INJECT 15
#define DELUXE_WAIT_SPRAY 20
#define DELUXE_WAIT_INJECT 20
#define DELUXE_SELF_SPRAY 10
#define DELUXE_SELF_INJECT 10
#define COMBAT_WAIT_SPRAY 0
#define COMBAT_WAIT_INJECT 0
#define COMBAT_SELF_SPRAY 0
#define COMBAT_SELF_INJECT 0
//A vial-loaded hypospray. Cartridge-based!
/obj/item/hypospray/mkii
name = "hypospray mk.II"
icon_state = "hypo2"
icon = 'icons/obj/syringe.dmi'
desc = "A new development from DeForest Medical, this hypospray takes 30-unit vials as the drug supply for easy swapping."
w_class = WEIGHT_CLASS_TINY
var/list/allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/tiny, /obj/item/reagent_containers/glass/bottle/vial/small)
var/mode = HYPO_INJECT
var/obj/item/reagent_containers/glass/bottle/vial/vial
var/start_vial = /obj/item/reagent_containers/glass/bottle/vial/small
var/spawnwithvial = TRUE
var/inject_wait = WAIT_INJECT
var/spray_wait = WAIT_SPRAY
var/spray_self = SELF_SPRAY
var/inject_self = SELF_INJECT
var/quickload = FALSE
var/penetrates = FALSE
/obj/item/hypospray/mkii/brute
start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine
/obj/item/hypospray/mkii/toxin
start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin
/obj/item/hypospray/mkii/oxygen
start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin
/obj/item/hypospray/mkii/burn
start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane
/obj/item/hypospray/mkii/tricord
start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord
/obj/item/hypospray/mkii/enlarge
spawnwithvial = FALSE
/obj/item/hypospray/mkii/CMO
name = "hypospray mk.II deluxe"
allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/tiny, /obj/item/reagent_containers/glass/bottle/vial/small, /obj/item/reagent_containers/glass/bottle/vial/large)
icon_state = "cmo2"
desc = "The Deluxe Hypospray can take larger-size vials. It also acts faster and delivers more reagents per spray."
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO
inject_wait = DELUXE_WAIT_INJECT
spray_wait = DELUXE_WAIT_SPRAY
spray_self = DELUXE_SELF_SPRAY
inject_self = DELUXE_SELF_INJECT
/obj/item/hypospray/mkii/CMO/combat
name = "combat hypospray mk.II"
desc = "A combat-ready deluxe hypospray that acts almost instantly. It can be tactically reloaded by using a vial on it."
icon_state = "combat2"
start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat
inject_wait = COMBAT_WAIT_INJECT
spray_wait = COMBAT_WAIT_SPRAY
spray_self = COMBAT_SELF_SPRAY
inject_self = COMBAT_SELF_INJECT
quickload = TRUE
penetrates = TRUE
/obj/item/hypospray/mkii/Initialize()
. = ..()
if(!spawnwithvial)
update_icon()
return
if(start_vial)
vial = new start_vial
update_icon()
/obj/item/hypospray/mkii/update_icon()
..()
icon_state = "[initial(icon_state)][vial ? "" : "-e"]"
if(ismob(loc))
var/mob/M = loc
M.update_inv_hands()
return
/obj/item/hypospray/mkii/examine(mob/user)
. = ..()
if(vial)
to_chat(user, "[vial] has [vial.reagents.total_volume]u remaining.")
else
to_chat(user, "It has no vial loaded in.")
to_chat(user, "[src] is set to [mode ? "Inject" : "Spray"] contents on application.")
/obj/item/hypospray/mkii/proc/unload_hypo(obj/item/I, mob/user)
if((istype(I, /obj/item/reagent_containers/glass/bottle/vial)))
var/obj/item/reagent_containers/glass/bottle/vial/V = I
V.forceMove(user.loc)
user.put_in_hands(V)
to_chat(user, "<span class='notice'>You remove [vial] from [src].</span>")
vial = null
update_icon()
playsound(loc, 'sound/weapons/empty.ogg', 50, 1)
else
to_chat(user, "<span class='notice'>This hypo isn't loaded!</span>")
return
/obj/item/hypospray/mkii/attackby(obj/item/I, mob/living/user)
if((istype(I, /obj/item/reagent_containers/glass/bottle/vial) && vial != null))
if(!quickload)
to_chat(user, "<span class='warning'>[src] can not hold more than one vial!</span>")
return FALSE
unload_hypo(vial, user)
if((istype(I, /obj/item/reagent_containers/glass/bottle/vial)))
var/obj/item/reagent_containers/glass/bottle/vial/V = I
if(!is_type_in_list(V, allowed_containers))
to_chat(user, "<span class='notice'>[src] doesn't accept this type of vial.</span>")
return FALSE
if(!user.transferItemToLoc(V,src))
return FALSE
vial = V
user.visible_message("<span class='notice'>[user] has loaded a vial into [src].</span>","<span class='notice'>You have loaded [vial] into [src].</span>")
update_icon()
playsound(loc, 'sound/weapons/autoguninsert.ogg', 35, 1)
return TRUE
else
to_chat(user, "<span class='notice'>This doesn't fit in [src].</span>")
return FALSE
return FALSE
/obj/item/hypospray/mkii/AltClick(mob/user)
if(vial)
vial.attack_self(user)
// Gunna allow this for now, still really don't approve - Pooj
/obj/item/hypospray/mkii/emag_act(mob/user)
. = ..()
if(obj_flags & EMAGGED)
to_chat(user, "[src] happens to be already overcharged.")
return
inject_wait = COMBAT_WAIT_INJECT
spray_wait = COMBAT_WAIT_SPRAY
spray_self = COMBAT_SELF_INJECT
inject_self = COMBAT_SELF_SPRAY
penetrates = TRUE
to_chat(user, "You overcharge [src]'s control circuit.")
obj_flags |= EMAGGED
return TRUE
/obj/item/hypospray/mkii/attack_hand(mob/user)
. = ..() //Don't bother changing this or removing it from containers will break.
/obj/item/hypospray/mkii/attack(obj/item/I, mob/user, params)
return
/obj/item/hypospray/mkii/afterattack(atom/target, mob/user, proximity)
if(!vial)
return
if(!proximity)
return
if(!ismob(target))
return
var/mob/living/L
if(isliving(target))
L = target
if(!penetrates && !L.can_inject(user, 1)) //This check appears another four times, since otherwise the penetrating sprays will break in do_mob.
return
if(!L && !target.is_injectable()) //only checks on non-living mobs, due to how can_inject() handles
to_chat(user, "<span class='warning'>You cannot directly fill [target]!</span>")
return
if(target.reagents.total_volume >= target.reagents.maximum_volume)
to_chat(user, "<span class='notice'>[target] is full.</span>")
return
if(ishuman(L))
var/obj/item/bodypart/affecting = L.get_bodypart(check_zone(user.zone_selected))
if(!affecting)
to_chat(user, "<span class='warning'>The limb is missing!</span>")
return
if(affecting.status != BODYPART_ORGANIC)
to_chat(user, "<span class='notice'>Medicine won't work on a robotic limb!</span>")
return
var/contained = vial.reagents.log_list()
log_combat(user, L, "attemped to inject", src, addition="which had [contained]")
//Always log attemped injections for admins
if(vial != null)
switch(mode)
if(HYPO_INJECT)
if(L) //living mob
if(L != user)
L.visible_message("<span class='danger'>[user] is trying to inject [L] with [src]!</span>", \
"<span class='userdanger'>[user] is trying to inject [L] with [src]!</span>")
if(!do_mob(user, L, inject_wait))
return
if(!penetrates && !L.can_inject(user, 1))
return
if(!vial.reagents.total_volume)
return
if(L.reagents.total_volume >= L.reagents.maximum_volume)
return
L.visible_message("<span class='danger'>[user] uses the [src] on [L]!</span>", \
"<span class='userdanger'>[user] uses the [src] on [L]!</span>")
else
if(!do_mob(user, L, inject_self))
return
if(!penetrates && !L.can_inject(user, 1))
return
if(!vial.reagents.total_volume)
return
if(L.reagents.total_volume >= L.reagents.maximum_volume)
return
log_attack("<font color='red'>[user.name] ([user.ckey]) applied [src] to [L.name] ([L.ckey]), which had [contained] (INTENT: [uppertext(user.a_intent)]) (MODE: [src.mode])</font>")
L.log_message("<font color='orange'>applied [src] to themselves ([contained]).</font>", INDIVIDUAL_ATTACK_LOG)
var/fraction = min(vial.amount_per_transfer_from_this/vial.reagents.total_volume, 1)
vial.reagents.reaction(L, INJECT, fraction)
vial.reagents.trans_to(target, vial.amount_per_transfer_from_this)
if(vial.amount_per_transfer_from_this >= 15)
playsound(loc,'sound/items/hypospray_long.ogg',50, 1, -1)
if(vial.amount_per_transfer_from_this < 15)
playsound(loc, pick('sound/items/hypospray.ogg','sound/items/hypospray2.ogg'), 50, 1, -1)
to_chat(user, "<span class='notice'>You inject [vial.amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [vial.reagents.total_volume] units.</span>")
if(HYPO_SPRAY)
if(L) //living mob
if(L != user)
L.visible_message("<span class='danger'>[user] is trying to spray [L] with [src]!</span>", \
"<span class='userdanger'>[user] is trying to spray [L] with [src]!</span>")
if(!do_mob(user, L, spray_wait))
return
if(!penetrates && !L.can_inject(user, 1))
return
if(!vial.reagents.total_volume)
return
if(L.reagents.total_volume >= L.reagents.maximum_volume)
return
L.visible_message("<span class='danger'>[user] uses the [src] on [L]!</span>", \
"<span class='userdanger'>[user] uses the [src] on [L]!</span>")
else
if(!do_mob(user, L, spray_self))
return
if(!penetrates && !L.can_inject(user, 1))
return
if(!vial.reagents.total_volume)
return
if(L.reagents.total_volume >= L.reagents.maximum_volume)
return
log_attack("<font color='red'>[user.name] ([user.ckey]) applied [src] to [L.name] ([L.ckey]), which had [contained] (INTENT: [uppertext(user.a_intent)]) (MODE: [src.mode])</font>")
L.log_message("<font color='orange'>applied [src] to themselves ([contained]).</font>", INDIVIDUAL_ATTACK_LOG)
var/fraction = min(vial.amount_per_transfer_from_this/vial.reagents.total_volume, 1)
vial.reagents.reaction(L, PATCH, fraction)
vial.reagents.trans_to(target, vial.amount_per_transfer_from_this)
if(vial.amount_per_transfer_from_this >= 15)
playsound(loc,'sound/items/hypospray_long.ogg',50, 1, -1)
if(vial.amount_per_transfer_from_this < 15)
playsound(loc, pick('sound/items/hypospray.ogg','sound/items/hypospray2.ogg'), 50, 1, -1)
to_chat(user, "<span class='notice'>You spray [vial.amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [vial.reagents.total_volume] units.</span>")
else
to_chat(user, "<span class='notice'>[src] doesn't work here!</span>")
return
/obj/item/hypospray/mkii/attack_self(mob/living/user)
if(user)
if(user.incapacitated())
return
else if(!vial)
to_chat(user, "This Hypo needs to be loaded first!")
return
else
unload_hypo(vial,user)
/obj/item/hypospray/mkii/verb/modes()
set name = "Toggle Application Mode"
set category = "Object"
set src in usr
var/mob/M = usr
switch(mode)
if(HYPO_SPRAY)
mode = HYPO_INJECT
to_chat(M, "[src] is now set to inject contents on application.")
if(HYPO_INJECT)
mode = HYPO_SPRAY
to_chat(M, "[src] is now set to spray contents on application.")
#undef HYPO_SPRAY
#undef HYPO_INJECT
#undef WAIT_SPRAY
#undef WAIT_INJECT
#undef SELF_SPRAY
#undef SELF_INJECT
#undef DELUXE_WAIT_SPRAY
#undef DELUXE_WAIT_INJECT
#undef DELUXE_SELF_SPRAY
#undef DELUXE_SELF_INJECT
#undef COMBAT_WAIT_SPRAY
#undef COMBAT_WAIT_INJECT
#undef COMBAT_SELF_SPRAY
#undef COMBAT_SELF_INJECT
@@ -0,0 +1,199 @@
//hypovials used with the MkII hypospray. See hypospray.dm.
/obj/item/reagent_containers/glass/bottle/vial
name = "broken hypovial"
desc = "A hypovial compatible with most hyposprays."
icon_state = "hypovial"
spillable = FALSE
var/comes_with = list() //Easy way of doing this.
volume = 10
possible_transfer_amounts = list(1,2,5,10)
obj_flags = UNIQUE_RENAME
unique_reskin = list("hypovial" = "hypovial",
"red hypovial" = "hypovial-b",
"blue hypovial" = "hypovial-d",
"green hypovial" = "hypovial-a",
"orange hypovial" = "hypovial-k",
"purple hypovial" = "hypovial-p",
"black hypovial" = "hypovial-t",
"pink hypovial" = "hypovial-pink"
)
always_reskinnable = TRUE
/obj/item/reagent_containers/glass/bottle/vial/Initialize()
. = ..()
if(!icon_state)
icon_state = "hypovial"
for(var/R in comes_with)
reagents.add_reagent(R,comes_with[R])
update_icon()
/obj/item/reagent_containers/glass/bottle/vial/on_reagent_change()
update_icon()
/obj/item/reagent_containers/glass/bottle/vial/update_icon()
cut_overlays()
if(reagents.total_volume)
var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "hypovial10")
var/percent = round((reagents.total_volume / volume) * 100)
switch(percent)
if(0 to 9)
filling.icon_state = "hypovial10"
if(10 to 29)
filling.icon_state = "hypovial25"
if(30 to 49)
filling.icon_state = "hypovial50"
if(50 to 85)
filling.icon_state = "hypovial75"
if(86 to INFINITY)
filling.icon_state = "hypovial100"
filling.color = mix_color_from_reagents(reagents.reagent_list)
add_overlay(filling)
/obj/item/reagent_containers/glass/bottle/vial/tiny
name = "small hypovial"
//Shouldn't be possible to get this without adminbuse
/obj/item/reagent_containers/glass/bottle/vial/small
name = "hypovial"
volume = 60
possible_transfer_amounts = list(5,10)
/obj/item/reagent_containers/glass/bottle/vial/small/bluespace
volume = 120
possible_transfer_amounts = list(5,10)
name = "bluespace hypovial"
icon_state = "hypovialbs"
unique_reskin = null
/obj/item/reagent_containers/glass/bottle/vial/large
name = "large hypovial"
desc = "A large hypovial, for deluxe hypospray models."
icon_state = "hypoviallarge"
volume = 120
possible_transfer_amounts = list(5,10,15,20)
unique_reskin = list("large hypovial" = "hypoviallarge",
"large red hypovial" = "hypoviallarge-b",
"large blue hypovial" = "hypoviallarge-d",
"large green hypovial" = "hypoviallarge-a",
"large orange hypovial" = "hypoviallarge-k",
"large purple hypovial" = "hypoviallarge-p",
"large black hypovial" = "hypoviallarge-t"
)
/obj/item/reagent_containers/glass/bottle/vial/large/update_icon()
cut_overlays()
if(reagents.total_volume)
var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "hypoviallarge10")
var/percent = round((reagents.total_volume / volume) * 100)
switch(percent)
if(0 to 9)
filling.icon_state = "hypoviallarge10"
if(10 to 29)
filling.icon_state = "hypoviallarge25"
if(30 to 49)
filling.icon_state = "hypoviallarge50"
if(50 to 85)
filling.icon_state = "hypoviallarge75"
if(86 to INFINITY)
filling.icon_state = "hypoviallarge100"
filling.color = mix_color_from_reagents(reagents.reagent_list)
add_overlay(filling)
/obj/item/reagent_containers/glass/bottle/vial/large/bluespace
possible_transfer_amounts = list(5,10,15,20)
name = "bluespace large hypovial"
volume = 240
icon_state = "hypoviallargebs"
unique_reskin = null
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine
name = "red hypovial (bicaridine)"
icon_state = "hypovial-b"
comes_with = list("bicaridine" = 30)
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin
name = "green hypovial (Anti-Tox)"
icon_state = "hypovial-a"
comes_with = list("antitoxin" = 30)
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane
name = "orange hypovial (kelotane)"
icon_state = "hypovial-k"
comes_with = list("kelotane" = 30)
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin
name = "blue hypovial (dexalin)"
icon_state = "hypovial-d"
comes_with = list("dexalin" = 30)
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord
name = "hypovial (tricordrazine)"
icon_state = "hypovial"
comes_with = list("tricordrazine" = 30)
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction
name = "pink hypovial (breast treatment)"
icon_state = "hypovial-pink"
comes_with = list("BEsmaller_hypo" = 30)
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction
name = "pink hypovial (penis treatment)"
icon_state = "hypovial-pink"
comes_with = list("PEsmaller_hypo" = 30)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO
name = "deluxe hypovial"
icon_state = "hypoviallarge-cmos"
comes_with = list("omnizine" = 20, "leporazine" = 20, "atropine" = 20)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/bicaridine
name = "large red hypovial (bicaridine)"
icon_state = "hypoviallarge-b"
comes_with = list("bicaridine" = 60)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/antitoxin
name = "large green hypovial (anti-tox)"
icon_state = "hypoviallarge-a"
comes_with = list("antitoxin" = 60)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/kelotane
name = "large orange hypovial (kelotane)"
icon_state = "hypoviallarge-k"
comes_with = list("kelotane" = 60)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/dexalin
name = "large blue hypovial (dexalin)"
icon_state = "hypoviallarge-d"
comes_with = list("dexalin" = 60)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/charcoal
name = "large black hypovial (charcoal)"
icon_state = "hypoviallarge-t"
comes_with = list("charcoal" = 60)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/tricord
name = "large hypovial (tricord)"
icon_state = "hypoviallarge"
comes_with = list("tricordrazine" = 60)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/salglu
name = "large green hypovial (salglu)"
icon_state = "hypoviallarge-a"
comes_with = list("salglu_solution" = 60)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/synthflesh
name = "large orange hypovial (synthflesh)"
icon_state = "hypoviallarge-k"
comes_with = list("synthflesh" = 60)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat
name = "combat hypovial"
icon_state = "hypoviallarge-t"
comes_with = list("epinephrine" = 3, "omnizine" = 19, "leporazine" = 19, "atropine" = 19) //Epinephrine's main effect here is to kill suff damage, so we don't need much given atropine
@@ -186,7 +186,6 @@
/obj/item/reagent_containers/pill/antirad_plus
name = "prussian blue pill"
desc = "Used to treat heavy radition poisoning."
icon = 'modular_citadel/icons/obj/modularpills.dmi'
icon_state = "prussian_blue"
list_reagents = list("prussian_blue" = 25, "water" = 10)
roundstart = 1
@@ -194,7 +193,6 @@
/obj/item/reagent_containers/pill/mutarad
name = "radiation treatment deluxe pill"
desc = "Used to treat heavy radition poisoning and genetic defects."
icon = 'modular_citadel/icons/obj/modularpills.dmi'
icon_state = "anit_rad_fixgene"
list_reagents = list("prussian_blue" = 15, "potass_iodide" = 15, "mutadone" = 15, "water" = 5)
roundstart = 1
@@ -125,7 +125,7 @@
to_chat(user, "<span class='notice'>You switch the nozzle setting to [stream_mode ? "\"stream\"":"\"spray\""]. You'll now use [amount_per_transfer_from_this] units per use.</span>")
/obj/item/reagent_containers/spray/attackby(obj/item/I, mob/user, params)
var/hotness = I.is_hot()
var/hotness = I.get_temperature()
if(hotness && reagents)
reagents.expose_temperature(hotness)
to_chat(user, "<span class='notice'>You heat [name] with [I]!</span>")
@@ -223,6 +223,15 @@
/obj/item/reagent_containers/spray/waterflower/attack_self(mob/user) //Don't allow changing how much the flower sprays
return
///Subtype used for the lavaland clown ruin.
/obj/item/reagent_containers/spray/waterflower/superlube
name = "clown flower"
desc = "A delightly devilish flower... you got a feeling where this is going."
icon = 'icons/obj/chemical.dmi'
icon_state = "clownflower"
volume = 30
list_reagents = list(/datum/reagent/lube/superlube = 30)
/obj/item/reagent_containers/spray/waterflower/cyborg
reagent_flags = NONE
volume = 100
@@ -104,7 +104,7 @@
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares?
to_chat(user, "<span class='notice'>You fill [src] with [trans] units of the solution. It now contains [reagents.total_volume] units.</span>")
if (reagents.total_volume >= reagents.maximum_volume)
if (round(reagents.total_volume, 0.1) >= reagents.maximum_volume)
mode=!mode
update_icon()
@@ -307,7 +307,7 @@
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
to_chat(user, "<span class='notice'>You soak the [src] with [trans] units of the solution. It now contains [reagents.total_volume] units.</span>")
if (reagents.total_volume >= reagents.maximum_volume)
if (round(reagents.total_volume,1) >= reagents.maximum_volume)
mode=!mode
update_icon()
@@ -323,8 +323,9 @@
rounded_vol = "empty"
if(reagents && reagents.total_volume)
if(volume/reagents.total_volume == 1)
if(volume/round(reagents.total_volume, 1) == 1)
rounded_vol="full"
mode = SYRINGE_INJECT
icon_state = "[rounded_vol]"
item_state = "syringe_[rounded_vol]"
+4 -1
View File
@@ -226,11 +226,13 @@
desc = "A keg of aphrodisiac."
icon_state = "pinkkeg"
reagent_id = "aphro"
tank_volume = 150
/obj/structure/reagent_dispensers/keg/aphro/strong
name = "keg of strong aphrodisiac"
desc = "A keg of strong and addictive aphrodisiac."
reagent_id = "aphro+"
tank_volume = 120
/obj/structure/reagent_dispensers/keg/milk
name = "keg of milk"
@@ -248,4 +250,5 @@
name = "keg of pan galactic gargleblaster"
desc = "A keg of... wow that's a long name."
icon_state = "bluekeg"
reagent_id = "gargleblaster"
reagent_id = "gargleblaster"
tank_volume = 100