Files
vgstation13/code/modules/reagents/reagent_containers/food/drinks.dm
ShiftyRail d79c1fe070 Byond 516 v2.0 (#37553)
* The TGS thing

* Revert the 516 revert

* Further segment the world/New() proc

* Fixes an issue here
2025-05-12 00:50:25 -05:00

2373 lines
88 KiB
Plaintext

#define FLIPPING_DURATION 7
#define FLIPPING_ROTATION 360
#define FLIPPING_INCREMENT FLIPPING_ROTATION / 8
////////////////////////////////////////////////////////////////////////////////
/// Drinks.
////////////////////////////////////////////////////////////////////////////////
/obj/item/weapon/reagent_containers/food/drinks
name = "drink"
desc = "yummy"
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/drinkingglass.dmi', "right_hand" = 'icons/mob/in-hand/right/drinkingglass.dmi')
icon = 'icons/obj/drinks.dmi'
icon_state = "glassbottle"
flags = FPRINT | OPENCONTAINER
var/gulp_size = 5 //This is now officially broken ... need to think of a nice way to fix it.
possible_transfer_amounts = list(5, 10, 25)
volume = 50
log_reagents = 1
//Merged from bottle.dm - Hinaichigo
var/const/duration = 13 //Directly relates to the 'weaken' duration. Lowered by armor (i.e. helmets)
var/isGlass = 0 //Whether the 'bottle' is made of glass or not so that milk cartons dont shatter when someone gets hit by it
//Molotov and smashing variables
var/molotov = 0 //-1 = can be made into molotov, 0 = can't, 1 = has had rag stuffed into it
var/lit = 0
var/brightness_lit = 3
var/bottleheight = 23 //To offset the molotov rag and fire - beer and ale are 23
var/smashtext = "bottle of " //To handle drinking glasses and the flask of holy water
var/smashname = "broken bottle" //As above
var/can_be_lit = 0
var/flammin = 0
var/flammin_color = null
var/base_icon_state = "glassbottle"
//bottle flipping
var/can_flip = FALSE
var/last_flipping = 0
var/atom/movable/overlay/flipping = null
/obj/item/weapon/reagent_containers/food/drinks/on_reagent_change()
..()
if(gulp_size < 5)
gulp_size = 5
else
gulp_size = max(round(reagents.total_volume / 5), 5)
if(is_empty())
update_icon() //we just got emptied, so let's update our icon once, if only to remove the ice overlay.
/obj/item/weapon/reagent_containers/food/drinks/proc/try_consume(mob/user)
if(!is_open_container())
to_chat(user, "<span class='warning'>You can't, \the [src] is closed.</span>")//Added this here and elsewhere to prevent drinking, etc. from closed drink containers. - Hinaichigo
return 0
else if(!src.reagents.total_volume || !src)
to_chat(user, "<span class='warning'>\The [src] is empty.<span>")
return 0
else
imbibe(user)
return 0
/obj/item/weapon/reagent_containers/food/drinks/attack_self(mob/user)
try_consume(user)
/obj/item/weapon/reagent_containers/food/drinks/bite_act(mob/user)
return try_consume(user)
/obj/item/weapon/reagent_containers/food/drinks/arcane_act(mob/user)
..()
cant_drop = 1
return prob(50) ? "D'TA EX'P'GED!" : "R'D'CTED!"
/obj/item/weapon/reagent_containers/food/drinks/bless()
..()
cant_drop = 0
/obj/item/weapon/reagent_containers/food/drinks/pickup(var/mob/user)
..()
if(ishuman(user) && arcanetampered) // wizards turn it into SCP-198
var/mob/living/carbon/human/H = user
reagents.clear_reagents()
H.audible_scream()
H.adjustHalLoss(50)
H.vessel.trans_to(reagents,reagents.maximum_volume)
update_icon()
if (can_flip && (M_SOBER in user.mutations) && (user.a_intent == I_GRAB))
if (flipping && (M_CLUMSY in user.mutations) && prob(20))
to_chat(user, "<span class='warning'>Your clumsy fingers fail to catch back \the [src].</span>")
user.drop_item(src, user.loc, 1)
throw_impact(user.loc,1,user)
else
bottleflip(user)
/obj/item/weapon/reagent_containers/food/drinks/dropped(var/mob/user)
..()
if(flipping)
QDEL_NULL(flipping)
last_flipping = world.time
item_state = initial(item_state)
playsound(loc,'sound/effects/slap2.ogg', 5, 1, -2)
/obj/item/weapon/reagent_containers/food/drinks/proc/bottleflip(var/mob/user)
playsound(loc,'sound/effects/woosh.ogg', 10, 1, -2)
last_flipping = world.time
var/this_flipping = last_flipping
item_state = "invisible"
user.update_inv_hands()
if (flipping)
qdel(flipping)
var/pixOffX = 0
var/list/offsets = user.get_item_offset_by_index(user.active_hand)
var/pixOffY = offsets["y"]
var/fliplay = user.layer + 1
var/rotate = 1
var/anim_icon_state = initial(item_state)
if (!anim_icon_state)
anim_icon_state = initial(icon_state)
switch (user.get_direction_by_index(user.active_hand))
if ("right_hand")
switch(user.dir)
if (NORTH)
pixOffX = 3
fliplay = user.layer - 1
rotate = -1
if (SOUTH)
pixOffX = -4
if (WEST)
pixOffX = -7
if (EAST)
pixOffX = 2
rotate = -1
if ("left_hand")
switch(user.dir)
if (NORTH)
pixOffX = -4
fliplay = user.layer - 1
if (SOUTH)
pixOffX = 3
rotate = -1
if (WEST)
pixOffX = -2
if (EAST)
pixOffX = 7
rotate = -1
flipping = anim(target = user, a_icon = 'icons/obj/bottleflip.dmi', a_icon_state = anim_icon_state, sleeptime = FLIPPING_DURATION, offX = pixOffX, lay = fliplay, offY = pixOffY)
animate(flipping, pixel_y = pixOffY + 12, transform = turn(matrix(), rotate*FLIPPING_INCREMENT), time = FLIPPING_DURATION/8, easing = LINEAR_EASING)
animate(pixel_y = pixOffY + 18, transform = turn(matrix(), rotate*2*FLIPPING_INCREMENT), time = FLIPPING_DURATION/8, easing = LINEAR_EASING)
animate(pixel_y = pixOffY + 21, transform = turn(matrix(), rotate*3*FLIPPING_INCREMENT), time = FLIPPING_DURATION/8, easing = LINEAR_EASING)
animate(pixel_y = pixOffY + 24, transform = turn(matrix(), rotate*4*FLIPPING_INCREMENT), time = FLIPPING_DURATION/8, easing = LINEAR_EASING)
animate(pixel_y = pixOffY + 21, transform = turn(matrix(), rotate*5*FLIPPING_INCREMENT), time = FLIPPING_DURATION/8, easing = LINEAR_EASING)
animate(pixel_y = pixOffY + 18, transform = turn(matrix(), rotate*6*FLIPPING_INCREMENT), time = FLIPPING_DURATION/8, easing = LINEAR_EASING)
animate(pixel_y = pixOffY + 12, transform = turn(matrix(), rotate*7*FLIPPING_INCREMENT), time = FLIPPING_DURATION/8, easing = LINEAR_EASING)
animate(pixel_y = pixOffY + 0, transform = turn(matrix(), rotate*8*FLIPPING_INCREMENT), time = FLIPPING_DURATION/8, easing = LINEAR_EASING)
spawn (FLIPPING_DURATION)
if ((loc == user) && (this_flipping == last_flipping))//only the last flipping action will reset the bottle's vars
QDEL_NULL(flipping)
last_flipping = world.time
item_state = initial(item_state)
if ((M_CLUMSY in user.mutations) && prob(20))
to_chat(user, "<span class='warning'>Your clumsy fingers fail to catch back \the [src].</span>")
user.drop_item(src, user.loc, 1)
throw_impact(user.loc,1,user)
else
user.update_inv_hands()
playsound(loc,'sound/effects/slap2.ogg', 10, 1, -2)
/obj/item/weapon/reagent_containers/food/drinks/attack(mob/living/M as mob, mob/user as mob, def_zone)
//Smashing on someone
if(!controlled_splash && user.a_intent == I_HURT && isGlass && molotov != 1) //To smash a bottle on someone, the user must be harm intent, the bottle must be out of glass, and we don't want a rag in here
if(!M) //This really shouldn't be checked here, but sure
return
force = 15 //Smashing bottles over someoen's head hurts. //todo: check that this isn't overwriting anything it shouldn't be //It was
var/datum/organ/external/affecting = user.zone_sel.selecting //Find what the player is aiming at
var/armor_block = 0 //Get the target's armour values for normal attack damage.
var/armor_duration = 0 //The more force the bottle has, the longer the duration.
//Calculating duration and calculating damage.
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/headarmor = 0 // Target's head armour
armor_block = H.run_armor_check(affecting, "melee") // For normal attack damage
//If they have a hat/helmet and the user is targeting their head.
if(istype(H.head, /obj/item) && affecting == LIMB_HEAD)
// If their head has an armour value, assign headarmor to it, else give it 0.
if(H.head.armor["melee"])
headarmor = H.head.armor["melee"]
else
headarmor = 0
else
headarmor = 0
//Calculate the weakening duration for the target.
armor_duration = (duration - headarmor) + force
else
//Only humans can have armour, right?
armor_block = M.run_armor_check(affecting, "melee")
if(affecting == LIMB_HEAD)
armor_duration = duration + force
armor_duration /= 10
//Apply the damage!
M.apply_damage(force, BRUTE, affecting, armor_block)
// You are going to knock someone out for longer if they are not wearing a helmet.
// For drinking glass
if(affecting == LIMB_HEAD && istype(M, /mob/living/carbon/))
//Display an attack message.
for(var/mob/O in viewers(user, null))
if(M != user)
O.show_message(text("<span class='danger'>[M] has been hit over the head with a [smashtext][src.name], by [user]!</span>"), 1)
else
O.show_message(text("<span class='danger'>[M] hits \himself with a [smashtext][src.name] on the head!</span>"), 1)
//Weaken the target for the duration that we calculated and divide it by 5.
if(armor_duration)
M.apply_effect(min(armor_duration, 10) , WEAKEN) // Never weaken more than a flash!
else
//Default attack message and don't weaken the target.
for(var/mob/O in viewers(user, null))
if(M != user)
O.show_message(text("<span class='danger'>[M] has been attacked with a [smashtext][src.name], by [user]!</span>"), 1)
else
O.show_message(text("<span class='danger'>[M] has attacked \himself with a [smashtext][src.name]!</span>"), 1)
//Attack logs
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Has attacked [M.name] ([M.ckey]) with a bottle!</font>")
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been smashed with a bottle by [user.name] ([user.ckey])</font>")
log_attack("<font color='red'>[user.name] ([user.ckey]) attacked [M.name] with a bottle. ([M.ckey])</font>")
M.assaulted_by(user)
//The reagents in the bottle splash all over the target, thanks for the idea Nodrak
if(src.reagents)
for(var/mob/O in viewers(user, null))
O.show_message(text("<span class='bnotice'>The contents of \the [smashtext][src] splashes all over [M]!</span>"), 1)
src.reagents.reaction(M, TOUCH, zone_sels = list(user.zone_sel.selecting))
//Finally, smash the bottle. This kills (del) the bottle.
src.smash(M, user)
return
else if(!is_open_container())
to_chat(user, "<span class='warning'>You can't, \the [src] is closed.</span>")//Added this here and elsewhere to prevent drinking, etc. from closed drink containers. - Hinaichigo
return 0
else if(!reagents?.total_volume)
to_chat(user, "<span class='warning'>\The [src] is empty.<span>")
return 0
else if(M == user)
imbibe(user)
return 0
else if(istype(M, /mob/living/carbon/human) && (!controlled_splash || user.a_intent == I_HELP))
user.visible_message("<span class='danger'>[user] attempts to feed [M] \the [src].</span>", "<span class='danger'>You attempt to feed [M] \the [src].</span>")
if(!do_mob(user, M))
return
user.visible_message("<span class='danger'>[user] feeds [M] \the [src].</span>", "<span class='danger'>You feed [M] \the [src].</span>")
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Fed [M.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]</font>")
log_attack("<font color='red'>[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
M.assaulted_by(user)
if(reagents.total_volume)
if (ishuman(M))
var/mob/living/carbon/human/H = M
if(H.species.chem_flags & NO_DRINK)
reagents.reaction(get_turf(H), TOUCH)
H.visible_message("<span class='warning'>The contents in [src] fall through and splash onto the ground, what a mess!</span>")
reagents.remove_any(gulp_size)
return 0
reagents.reaction(M, INGEST, amount_override = min(reagents.total_volume,gulp_size)/(reagents.reagent_list.len))
spawn(5)
reagents.trans_to(M, gulp_size)
if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell
var/mob/living/silicon/robot/bro = user
bro.cell.use(30)
var/refill = reagents.get_master_reagent_id()
spawn(600)
reagents.add_reagent(refill, gulp_size)
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
return 1
return 0
/obj/item/weapon/reagent_containers/food/drinks/afterattack(var/atom/target, var/mob/user, var/adjacency_flag, var/click_params)
if (!adjacency_flag)
return
if(!reagents)
return
// Attempt to transfer to our glass
if (transfer(target, user, can_send = FALSE, can_receive = TRUE))
return
if (!controlled_splash)
// Attempt to transfer from our glass
transfer(target, user, can_send = TRUE, can_receive = FALSE)
return
var/transfer_result = transfer(target, user, splashable_units = amount_per_transfer_from_this)
if (transfer_result)
splash_special()
if((transfer_result >= 10) && (isturf(target) || istype(target, /obj/machinery/portable_atmospherics/hydroponics))) //if we're splashing a decent amount of reagent on the floor
playsound(target, 'sound/effects/slosh.ogg', 25, 1)
/obj/item/weapon/reagent_containers/food/drinks/examine(mob/user)
..()
if(is_open_container())
if(!reagents || reagents.total_volume == 0)
to_chat(user, "<span class='info'>\The [src] is empty!</span>")
else if (reagents.total_volume <= src.volume/4)
to_chat(user, "<span class='info'>\The [src] is almost empty!</span>")
else if (reagents.total_volume <= src.volume*0.66)
to_chat(user, "<span class='info'>\The [src] is about half full, or about half empty!</span>")
else if (reagents.total_volume <= src.volume*0.90)
to_chat(user, "<span class='info'>\The [src] is almost full!</span>")
else
to_chat(user, "<span class='info'>\The [src] is full!</span>")
/obj/item/weapon/reagent_containers/food/drinks/imbibe(mob/user) //Drink the liquid within
if(lit)
user.bodytemperature += 3 * TEMPERATURE_DAMAGE_COEFFICIENT//only the first gulp will be hot.
lit = 0
..()
if(arcanetampered && ishuman(user) && !reagents.total_volume)
var/mob/living/carbon/human/H = user
H.vessel.trans_to(reagents,reagents.maximum_volume)
return 0
/obj/item/weapon/reagent_containers/food/drinks/New()
..()
base_icon_state = icon_state
/obj/item/weapon/reagent_containers/food/drinks/attack_ghost(mob/dead/observer/user)
if(!src || !user)
return
if(get_dist(src, user) > 1)
return
if(reagents?.has_reagent(ECTOPLASM))
if(!is_open_container())
to_chat(user, "<span class='warning'>You can't, [src] is closed.</span>")
return
else if(!reagents?.total_volume)
to_chat(user, "<span class='warning'>[src] is empty.<span>")
return
else
//user.delayNextAttack(1 SECONDS) Since humans can rapid-drink, we'll leave this commented out for now.
to_chat(user, "<span class='notice'>You swallow a gulp of [src].</span>")
reagents.remove_any(gulp_size)
playsound(user.loc,'sound/items/drink_ghost.ogg', rand(10,50), 1)
else
to_chat(user, "<span class='notice'>You pass right through [src].</span>")
////////////////////////////////////////////////////////////////////////////////
/// Drinks. END
////////////////////////////////////////////////////////////////////////////////
/obj/item/weapon/reagent_containers/food/drinks/golden_cup
desc = "A golden cup."
name = "golden cup"
icon_state = "golden_cup"
w_class = W_CLASS_LARGE
force = 14
throwforce = 10
amount_per_transfer_from_this = 20
possible_transfer_amounts = null
volume = 150
flags = FPRINT | OPENCONTAINER
siemens_coefficient = 1
///////////////////////////////////////////////Drinks
//Notes by Darem: Drinks are simply containers that start preloaded. Unlike condiments, the contents can be ingested directly
// rather then having to add it to something else first. They should only contain liquids. They have a default container size of 50.
// Formatting is the same as food.
/obj/item/weapon/reagent_containers/food/drinks/milk
name = "space milk"
desc = "It's milk. White and nutritious goodness!"
icon = 'icons/obj/food_condiment.dmi'
icon_state = "milk"
vending_cat = "dairy products"
can_flip = TRUE
/obj/item/weapon/reagent_containers/food/drinks/milk/New()
..()
reagents.add_reagent(MILK, 50)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/flour
name = "\improper flour sack"
desc = "A big bag of flour. Good for baking!"
icon = 'icons/obj/food_condiment.dmi'
icon_state = "flour"
/obj/item/weapon/reagent_containers/food/drinks/flour/New()
..()
reagents.add_reagent(FLOUR, 50)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soymilk
name = "soy milk"
desc = "It's soy milk. White and nutritious goodness!"
icon = 'icons/obj/food_condiment.dmi'
icon_state = "soymilk"
vending_cat = "dairy products"//it's not a dairy product but oh come on who cares
can_flip = TRUE
/obj/item/weapon/reagent_containers/food/drinks/soymilk/New()
..()
reagents.add_reagent(SOYMILK, 50)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/coffee
name = "Robust Coffee"
desc = "Careful, the beverage you're about to enjoy is extremely hot."
icon_state = "coffee"
/obj/item/weapon/reagent_containers/food/drinks/coffee/New()
..()
reagents.add_reagent(COFFEE, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/coffee/on_vending_machine_spawn()
reagents.chem_temp = COOKTEMP_READY
/obj/item/weapon/reagent_containers/food/drinks/latte
name = "Smooth Latte"
desc = "A pleasant soft taste of latte will sooth any and all pain, while relaxing music plays in your head."
icon_state = "coffee"
/obj/item/weapon/reagent_containers/food/drinks/latte/New()
..()
reagents.add_reagent(CAFE_LATTE, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/latte/on_vending_machine_spawn()
reagents.chem_temp = COOKTEMP_READY
/obj/item/weapon/reagent_containers/food/drinks/soy_latte
name = "Soy Latte"
desc = "Soy version of a latte for soy people."
icon_state = "coffee"
/obj/item/weapon/reagent_containers/food/drinks/soy_latte/New()
..()
reagents.add_reagent(SOY_LATTE, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soy_latte/on_vending_machine_spawn()
reagents.chem_temp = COOKTEMP_READY
/obj/item/weapon/reagent_containers/food/drinks/cappuccino
name = "Cappuccino"
desc = "You will ask yourself: how is cappuccino different from latte? It tastes the same; and you will be right."
icon_state = "coffee"
/obj/item/weapon/reagent_containers/food/drinks/cappuccino/New()
..()
reagents.add_reagent(CAPPUCCINO, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/cappuccino/on_vending_machine_spawn()
reagents.chem_temp = COOKTEMP_READY
/obj/item/weapon/reagent_containers/food/drinks/espresso
name = "Zip Espresso"
desc = "When you need a small and quick kick."
icon_state = "coffee"
/obj/item/weapon/reagent_containers/food/drinks/espresso/New()
..()
reagents.add_reagent(ESPRESSO, 15)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/espresso/on_vending_machine_spawn()
reagents.chem_temp = COOKTEMP_READY
/obj/item/weapon/reagent_containers/food/drinks/doppio
name = "Doppio x2"
desc = "Double espresso made only out of the finest twin coffee beans."
icon_state = "coffee"
/obj/item/weapon/reagent_containers/food/drinks/doppio/New()
..()
reagents.add_reagent(DOPPIO, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/doppio/on_vending_machine_spawn()
reagents.chem_temp = COOKTEMP_READY
/obj/item/weapon/reagent_containers/food/drinks/tea
name = "Tea"
icon = 'icons/obj/cafe.dmi'
icon_state = "mug_empty"
item_state = "mug_empty"
/obj/item/weapon/reagent_containers/food/drinks/tea/New()
..()
switch(pick(1,2,3))
if(1)
name = "Duke Purple Tea"
desc = "An insult to Duke Purple is an insult to the Space Queen! Any proper gentleman will fight you, if you sully this tea."
reagents.add_reagent(TEA, 30)
if(2)
name = "Century Tea"
desc = "In most cultures, if you leave tea out for months it's considered spoiled. Although this tea is black, we still consider it good for cultural reasons. Taste the century."
reagents.add_reagent(REDTEA, 30)
if(3)
name = "Hippie Farms Eco-Tea"
desc = "Remember when the station was powered by solar panels instead of raping space for its plasma, then creating an engine of destruction? Hippie Farms remembers, maaaan."
reagents.add_reagent(GREENTEA, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/tea/on_reagent_change()
..()
update_icon()
/obj/item/weapon/reagent_containers/food/drinks/tea/update_icon()
..()
if (reagents.reagent_list.len > 0)
mug_reagent_overlay()
/obj/item/weapon/reagent_containers/food/drinks/tea/on_vending_machine_spawn()
reagents.chem_temp = COOKTEMP_READY
/obj/item/weapon/reagent_containers/food/drinks/chifir
name = "Siberian Chifir"
desc = "Only a true siberian can appreciate its deep and rich flavor. Embrace siberian tradition!"
icon = 'icons/obj/cafe.dmi'
icon_state = "tea"
item_state = "mug_empty"
/obj/item/weapon/reagent_containers/food/drinks/chifir/New()
..()
reagents.add_reagent(CHIFIR, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/chifir/on_vending_machine_spawn()
reagents.chem_temp = COOKTEMP_READY
/obj/item/weapon/reagent_containers/food/drinks/ice
name = "\improper ice cup"
desc = "Careful, cold ice, do not chew."
icon_state = "icecup"
/obj/item/weapon/reagent_containers/food/drinks/ice/New()
..()
reagents.add_reagent(ICE, 30, reagtemp = T0C)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/tomatosoup
name = "Tomato Soup"
desc = "Tomato Soup! In a cup!"
icon_state = "tomatosoup"
/obj/item/weapon/reagent_containers/food/drinks/tomatosoup/New()
..()
reagents.add_reagent(TOMATO_SOUP, 30, reagtemp = T0C + 80)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/tomatosoup/on_vending_machine_spawn()
reagents.chem_temp = COOKTEMP_READY
/obj/item/weapon/reagent_containers/food/drinks/h_chocolate
name = "Dutch Hot Coco"
desc = "Made in Space South America."
icon = 'icons/obj/cafe.dmi'
icon_state = "mug_empty"
item_state = "mug_empty"
/obj/item/weapon/reagent_containers/food/drinks/h_chocolate/New()
..()
reagents.add_reagent(HOT_COCO, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/h_chocolate/on_reagent_change()
..()
update_icon()
/obj/item/weapon/reagent_containers/food/drinks/h_chocolate/update_icon()
..()
if (reagents.reagent_list.len > 0)
mug_reagent_overlay()
/obj/item/weapon/reagent_containers/food/drinks/h_chocolate/on_vending_machine_spawn()
reagents.chem_temp = COOKTEMP_READY
/obj/item/weapon/reagent_containers/food/drinks/dry_ramen
name = "\improper cup ramen"
desc = "A taste that reminds you of your school years."
icon_state = "ramen"
/obj/item/weapon/reagent_containers/food/drinks/dry_ramen/New()
..()
reagents.add_reagent(DRY_RAMEN, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/dry_ramen/heating //vendor version
desc = "Self-heating: just add 10u water!"
/obj/item/weapon/reagent_containers/food/drinks/groans
name = "Groans Soda"
desc = "Groans Soda: We'll make you groan."
icon_state = "groans"
/obj/item/weapon/reagent_containers/food/drinks/groans/New()
..()
switch(pick(1,2,3,4,5))
if(1)
name = "Groans Soda: Cuban Spice Flavor"
desc = "Warning: Long exposure to liquid inside may cause you to follow the rumba beat."
icon_state += "_hot"
reagents.add_reagent(CONDENSEDCAPSAICIN, 10)
reagents.add_reagent(RUM, 10)
if(2)
name = "Groans Soda: Icey Cold Flavor"
desc = "Cold in a can. Er, bottle."
icon_state += "_cold"
reagents.add_reagent(FROSTOIL, 10)
reagents.add_reagent(ICE, 10, reagtemp = T0C)
if(3)
name = "Groans Soda: Zero Calories"
desc = "Zero Point Calories. That's right, we fit even MORE nutriment in this thing."
icon_state += "_nutriment"
reagents.add_reagent(NUTRIMENT, 20)
if(4)
name = "Groans Soda: Energy Shot"
desc = "Warning: The Groans Energy Blend(tm), may be toxic to those without constant exposure to chemical waste. Drink responsibly."
icon_state += "_energy"
reagents.add_reagent(CORNSYRUP, 10)
reagents.add_reagent(CHEMICAL_WASTE, 10)
if(5)
name = "Groans Soda: Double Dan"
desc = "Just when you thought you've had enough Dan, The 'Double Dan' strikes back with this wonderful mixture of too many flavors. Bring a barf bag, Drink responsibly."
icon_state += "_doubledew"
reagents.add_reagent(DISCOUNT, 20)
reagents.add_reagent(DISCOUNT, 10)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/filk
name = "Filk"
desc = "Only the best Filk for your crew."
icon_state = "filk"
/obj/item/weapon/reagent_containers/food/drinks/filk/New()
..()
switch(pick(1,2,3,4,5))
if(1)
name = "Filk: Chocolate Edition"
reagents.add_reagent(HOT_COCO, 10)
if(2)
name = "Filk: Scripture Edition"
reagents.add_reagent(HOLYWATER, 30)
if(3)
name = "Filk: Carribean Edition"
reagents.add_reagent(RUM, 30)
if(4)
name = "Filk: Sugar Blast Editon"
reagents.add_reagent(SUGAR, 30)
reagents.add_reagent(RADIUM, 10) // le epik fallout may mays
reagents.add_reagent(TOXICWASTE, 10)
if(5)
name = "Filk: Pure Filk Edition"
reagents.add_reagent(DISCOUNT, 20)
reagents.add_reagent(DISCOUNT, 10)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/grifeo
name = "Grifeo"
desc = "A quality drink."
icon_state = "griefo"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/grifeo/New()
..()
switch(pick(1,2,3,4,5))
if(1)
name = "Grifeo: Spicy"
reagents.add_reagent(CONDENSEDCAPSAICIN, 30)
if(2)
name = "Grifeo: Frozen"
reagents.add_reagent(FROSTOIL, 30)
if(3)
name = "Grifeo: Crystallic"
reagents.add_reagent(CORNSYRUP, 20)
reagents.add_reagent(ICE, 20, reagtemp = T0C)
reagents.add_reagent(SPACE_DRUGS, 20)
if(4)
name = "Grifeo: Rich"
reagents.add_reagent(TEQUILA, 10)
reagents.add_reagent(CHEMICAL_WASTE, 10)
if(5)
name = "Grifeo: Pure"
reagents.add_reagent(DISCOUNT, 20)
reagents.add_reagent(DISCOUNT, 10)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/groansbanned
name = "Groans: Banned Edition"
desc = "Banned literally everywhere."
icon_state = "groansevil"
/obj/item/weapon/reagent_containers/food/drinks/groansbanned/New()
..()
switch(pick(1,2,3,4,5))
if(1)
name = "Groans Banned Soda: Fish Suprise"
reagents.add_reagent(CARPOTOXIN, 10)
if(2)
name = "Groans Banned Soda: Bitter Suprise"
reagents.add_reagent(TOXIN, 20)
if(3)
name = "Groans Banned Soda: Sour Suprise"
reagents.add_reagent(PACID, 20)
if(4)
name = "Groans Banned Soda: Sleepy Suprise"
reagents.add_reagent(STOXIN, 10)
if(5)
name = "Groans Banned Soda: Quadruple Dan"
reagents.add_reagent(DISCOUNT, 40)
reagents.add_reagent(DISCOUNT, 10)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/zam_nitrofreeze
name = "Zam Nitro Freeze"
desc = "The mothership has synthesized the coldest of cold drinks! Can your brain handle the freeze?" // It is not wise to chug this whole drink.
icon_state = "Zam_NitroFreeze"
/obj/item/weapon/reagent_containers/food/drinks/zam_nitrofreeze/New()
..()
reagents.add_reagent(NITROGEN, 25)
reagents.add_reagent(FROSTOIL, 15)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/mannsdrink
name = "Mann's Drink"
desc = "The only thing a <B>REAL MAN</B> needs."
icon_state = "mannsdrink"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/mannsdrink/New()
..()
reagents.add_reagent(DISCOUNT, 30)
reagents.add_reagent(MANNITOL, 20)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/groans
name = "Groan-o-matic 9000"
desc = "This is for testing reasons."
icon_state = "toddler"
/obj/item/weapon/groans/attack_self(mob/user as mob)
to_chat(user, "Now spawning groans.")
var/turf/T = get_turf(user.loc)
var/obj/item/weapon/reagent_containers/food/drinks/groans/A = new /obj/item/weapon/reagent_containers/food/drinks/groans(T)
A.desc += " It also smells like a toddler." //This is required
/obj/item/weapon/reagent_containers/food/drinks/discount_ramen_hot
name = "Discount Dan's Noodle Soup"
desc = "Discount Dan is proud to introduce his own take on noodle soups, with this on the go treat! Simply pull the tab, and a self heating mechanism activates!"
icon_state = "ramen"
var/list/ddname = list("Discount Deng's Quik-Noodles - Sweet and Sour Lo Mein Flavor","Frycook Dan's Quik-Noodles - Curly Fry Ketchup Hoedown Flavor","Rabatt Dan's Snabb-Nudlar - Inkokt Lax Sm?rg?sbord Smak","Discount Deng's Quik-Noodles - Teriyaki TVP Flavor","Sconto Danilo's Quik-Noodles - Italian Strozzapreti Lunare Flavor")
/obj/item/weapon/reagent_containers/food/drinks/discount_ramen_hot/New()
..()
name = pick(ddname)
reagents.add_reagent(HOT_RAMEN, 20)
reagents.add_reagent(DISCOUNT, 10)
reagents.add_reagent(GLOWINGRAMEN, 8)
reagents.add_reagent(TOXICWASTE, 8)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/discount_ramen
name = "Discount Dan's Noodle Soup"
desc = "Discount Dan is proud to introduce his own take on noodle soups, with this on the go treat! Simply pull the tab, and a self heating mechanism activates!"
icon_state = "ramen"
var/list/ddname = list("Discount Deng's Quik-Noodles - Sweet and Sour Lo Mein Flavor","Frycook Dan's Quik-Noodles - Curly Fry Ketchup Hoedown Flavor","Rabatt Dan's Snabb-Nudlar - Inkokt Lax Sm?rg?sbord Smak","Discount Deng's Quik-Noodles - Teriyaki TVP Flavor","Sconto Danilo's Quik-Noodles - Italian Strozzapreti Lunare Flavor")
/obj/item/weapon/reagent_containers/food/drinks/discount_ramen/New()
..()
name = pick(ddname)
reagents.add_reagent(DRY_RAMEN, 20)
reagents.add_reagent(DISCOUNT, 10)
reagents.add_reagent(TOXICWASTE, 4)
reagents.add_reagent(GREENRAMEN, 4)
reagents.add_reagent(GLOWINGRAMEN, 4)
reagents.add_reagent(DEEPFRIEDRAMEN, 4)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/discount_ramen/attack_self(mob/user as mob)
to_chat(user, "You pull the tab, you feel the drink heat up in your hands, and its horrible fumes hits your nose like a ton of bricks. You drop the soup in disgust.")
var/turf/T = get_turf(user.loc)
var/obj/item/weapon/reagent_containers/food/drinks/discount_ramen_hot/A = new /obj/item/weapon/reagent_containers/food/drinks/discount_ramen_hot(T)
A.desc += " It feels warm." //This is required
user.drop_from_inventory(src)
qdel(src)
/obj/item/weapon/reagent_containers/food/drinks/beer
name = "Space Beer"
desc = "Beer. In space."
icon_state = "beer"
vending_cat = "fermented"
molotov = -1 //can become a molotov
isGlass = 1
can_flip = TRUE
/obj/item/weapon/reagent_containers/food/drinks/beer/New()
..()
reagents.add_reagent(BEER, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/ale
name = "Magm-Ale"
desc = "A true dorf's drink of choice."
icon_state = "alebottle"
vending_cat = "fermented"
molotov = -1 //can become a molotov
isGlass = 1
can_flip = TRUE
/obj/item/weapon/reagent_containers/food/drinks/ale/New()
..()
reagents.add_reagent(ALE, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans
vending_cat = "carbonated drinks"
flags = FPRINT //Starts sealed until you pull the tab! Lacks OPENCONTAINER for this purpose
//because playsound(user, 'sound/effects/can_open[rand(1,3)].ogg', 50, 1) just wouldn't work. also so badmins can varedit these
var/list/open_sounds = list('sound/effects/can_open1.ogg', 'sound/effects/can_open2.ogg', 'sound/effects/can_open3.ogg')
var/tabself = "You pull back the tab of"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/update_icon()
..()
if (flags & OPENCONTAINER)
overlays += image(icon = icon, icon_state = "soda_open")
set_blood_overlay()
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/attack_self(var/mob/user)
if(!is_open_container())
return pop_open(user)
if (reagents.total_volume > 0)
return ..()
else if (!isGlass && (user.a_intent == I_HURT))
var/turf/T = get_turf(user)
user.drop_item(src, T, 1)
var/obj/item/trash/soda_cans/crushed_can = new (T, icon_state = icon_state)
crushed_can.name = "crushed [name]"
user.put_in_active_hand(crushed_can)
playsound(user, 'sound/items/can_crushed.ogg', 75, 1)
qdel(src)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/proc/pop_open(var/mob/user)
to_chat(user, "[tabself] \the [src] with a satisfying pop.")
flags |= OPENCONTAINER
src.verbs |= /obj/item/weapon/reagent_containers/verb/empty_contents
playsound(user, pick(open_sounds), 50, 1)
update_icon()
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola
name = "Space Cola"
desc = "Cola. in space."
icon_state = "cola"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola/New()
..()
reagents.add_reagent(COLA, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/tonic
name = "T-Borg's Tonic Water"
desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away."
icon_state = "tonic"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/tonic/New()
..()
reagents.add_reagent(TONIC, 50)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/sodawater
name = "Soda Water"
desc = "A can of soda water. Why not make a scotch and soda?"
icon_state = "sodawater"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/sodawater/New()
..()
reagents.add_reagent(SODAWATER, 50)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/lemon_lime
name = "Lemon-Lime"
desc = "You wanted ORANGE. It gave you Lemon Lime."
icon_state = "lemon-lime"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/lemon_lime/New()
..()
reagents.add_reagent(LEMON_LIME, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_up
name = "Space-Up"
desc = "Tastes like a hull breach in your mouth."
icon_state = "space-up"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_up/New()
..()
reagents.add_reagent(SPACE_UP, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/starkist
name = "Star-kist"
desc = "The taste of a star in liquid form. And, a bit of tuna...?"
icon_state = "starkist"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/starkist/New()
..()
if(prob(30))
new /obj/item/weapon/reagent_containers/food/drinks/soda_cans/lemon_lime(get_turf(src))
qdel(src) //You wanted ORANGE. It gave you lemon lime!
return
reagents.add_reagent(COLA, 15)
reagents.add_reagent(ORANGEJUICE, 15)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_mountain_wind
name = "Space Mountain Wind"
desc = "Blows right through you like a space wind."
icon_state = "space_mountain_wind"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_mountain_wind/New()
..()
reagents.add_reagent(SPACEMOUNTAINWIND, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/thirteenloko
name = "Thirteen Loko"
desc = "The CMO has advised crew members that consumption of Thirteen Loko may result in seizures, blindness, drunkeness, or even death. Please Drink Responsably."
icon_state = "thirteen_loko"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/thirteenloko/New()
..()
reagents.add_reagent(THIRTEENLOKO, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/dr_gibb
name = "Dr. Gibb"
desc = "A delicious mixture of 42 different flavors."
icon_state = "dr_gibb"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/dr_gibb/New()
..()
reagents.add_reagent(DR_GIBB, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/nuka
name = "Nuka Cola"
desc = "Cool, refreshing, Nuka Cola."
icon_state = "nuka"
tabself = "You pop the cap off"
molotov = -1 //can become a molotov
isGlass = 1
can_flip = TRUE
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/nuka/New()
..()
reagents.add_reagent(NUKA_COLA, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
update_icon()
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/nuka/pop_open(var/mob/user)
..()
user.put_in_hands(new /obj/item/weapon/coin/nuka)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/nuka/create_broken_bottle()
if (!(flags & OPENCONTAINER))
overlays.len = 0
new /obj/item/weapon/coin/nuka(get_turf(src))
..()
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/nuka/update_icon()
overlays.len = 0
if (!(flags & OPENCONTAINER))
overlays += image(icon = icon, icon_state = "bottle_cap")
set_blood_overlay()
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/quantum
name = "Nuka Cola Quantum"
desc = "Take the leap... enjoy a Quantum!"
icon_state = "quantum"
molotov = -1 //can become a molotov
isGlass = 1
can_flip = TRUE
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/quantum/New()
..()
reagents.add_reagent(QUANTUM, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/quantum/pop_open(var/mob/user)
..()
user.put_in_hands(new /obj/item/weapon/coin/nuka)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/quantum/create_broken_bottle()
if (!(flags & OPENCONTAINER))
overlays.len = 0
new /obj/item/weapon/coin/nuka(get_turf(src))
..()
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/quantum/update_icon()
overlays.len = 0
if (!(flags & OPENCONTAINER))
overlays += image(icon = icon, icon_state = "bottle_cap")
set_blood_overlay()
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/sportdrink
name = "Brawndo"
icon_state = "brawndo"
desc = "It has what plants crave! Electrolytes!"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/sportdrink/New()
..()
reagents.add_reagent(SPORTDRINK, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/gunka_cola
name = "Gunka-Cola Family Sized"
desc = "An unnaturally-sized can for unnaturally-sized men. Taste the Consumerism!"
icon_state = "gunka_cola"
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/newsprites_lefthand.dmi', "right_hand" = 'icons/mob/in-hand/right/newsprites_righthand.dmi')
volume = 100
possible_transfer_amounts = list(5,10,15,25,30,50,100)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/gunka_cola/New()
..()
reagents.add_reagent(COLA, 60)
reagents.add_reagent(SUGAR, 20)
reagents.add_reagent(SODIUM, 10)
reagents.add_reagent(COCAINE, 5)
reagents.add_reagent(BLACKCOLOR, 5)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/roentgen_energy
name = "Roentgen Energy"
desc = "Roentgen Energy, a meltdown in your mouth! Contains real actinides!"
icon_state = "roentgenenergy"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/roentgen_energy/New()
..()
reagents.add_reagent(CAFFEINE, 5)
reagents.add_reagent(COCAINE, 1.4)
reagents.add_reagent(URANIUM, 3.6)
reagents.add_reagent(SPORTDRINK, 20)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/canned_bread
name = "\improper canned bread"
desc = "Wow, they have it!"
icon_state = "cannedbread"
//no actual chemicals in the can
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/canned_bread/pop_open(var/mob/user)
. = ..()
spawn(0.5 SECONDS)
playsound(src, pick('sound/effects/splat_pie1.ogg','sound/effects/splat_pie2.ogg'), 50)
var/obj/B = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/bread(get_turf(src))
user.put_in_hands(B)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/canned_matter
name = "\improper canned bread"
desc = "Wow, they have it!"
icon_state = "cannedbread"
var/obj/item/storeditem = null
//no actual chemicals in the can
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/canned_matter/attackby(var/obj/item/I, mob/user as mob)
if(!(flags & OPENCONTAINER)) // Won't work if already opened
if(user.drop_item(I,src))
storeditem = I
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/canned_matter/pop_open(var/mob/user)
. = ..()
spawn(0.5 SECONDS)
playsound(src, pick('sound/effects/splat_pie1.ogg','sound/effects/splat_pie2.ogg'), 50)
storeditem.forceMove(get_turf(src))
storeditem = null
/obj/item/weapon/reagent_containers/food/drinks/coloring
name = "\improper vial of food coloring"
icon = 'icons/obj/chemical.dmi'
icon_state = "vial"
volume = 25
possible_transfer_amounts = list(1,5)
/obj/item/weapon/reagent_containers/food/drinks/coloring/New()
..()
reagents.add_reagent(BLACKCOLOR, 25)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/sillycup
name = "\improper paper cup"
desc = "A paper water cup."
icon_state = "water_cup_e"
possible_transfer_amounts = null
volume = 10
/obj/item/weapon/reagent_containers/food/drinks/sillycup/New()
..()
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/sillycup/on_reagent_change()
..()
if(reagents.total_volume)
icon_state = "water_cup"
else
icon_state = "water_cup_e"
/obj/item/weapon/reagent_containers/food/drinks/danswhiskey
name = "Discount Dan's 'Malt' Whiskey"
desc = "The very cheapest and most sickening method of liver failure."
icon_state = "dans_whiskey"
/obj/item/weapon/reagent_containers/food/drinks/danswhiskey/New()
..()
reagents.add_reagent(DANS_WHISKEY, 30)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
//Beer cans for the Off Licence
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/blebweiser
name = "Blebweiser"
desc = "Based on an American classic, this lager has seen little improvement over the years."
icon_state = "blebweiser"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/blebweiser/New()
..()
reagents.add_reagent(BEER, 50)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/bluespaceribbon
name = "Bluespace Ribbon"
desc = "A cheap lager brewed in enormous bluespace pockets, the brewing process has done little for the flavour."
icon_state = "bluespaceribbon"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/bluespaceribbon/New()
..()
reagents.add_reagent(BEER, 50)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/codeone
name = "Code One"
desc = "The Code One Brewery prides itself on creating the very best beer for cracking open with the boys."
icon_state = "codeone"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/codeone/New()
..()
reagents.add_reagent(BEER, 50)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/gibness
name = "Gibness"
desc = "Derived from a classic Irish recipe, there's a strong taste of starch in this dry stout."
icon_state = "gibness"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/gibness/New()
..()
reagents.add_reagent(BEER, 25)
reagents.add_reagent(POTATO, 25)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/geometer
name = "Geometer"
desc = "Summon the Beast."
icon_state = "geometer"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/geometer/New()
..()
reagents.add_reagent(GEOMETER, 50)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/geometer/blanco
name = "Geometer Blanco"
desc = "'member when we had to research words..."
icon_state = "geometer_blanco"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/greyshitvodka
name = "Greyshit Vodka"
desc = "Experts spent a long time squatting around a mixing bench to bring you this."
icon_state = "greyshitvodka"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/greyshitvodka/New()
..()
reagents.add_reagent(GREYVODKA, 50)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/orchardtides
name = "Orchard Tides"
desc = "A sweet apple cider that might quench that kleptomania if only for a while."
icon_state = "orchardtides"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/orchardtides/New()
..()
reagents.add_reagent(BEER, 20)
reagents.add_reagent(APPLEJUICE, 30)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/sleimiken
name = "Sleimiken"
desc = "This Belgium original has been enhanced over the years with the delicious taste of DNA-dissolving slime extract."
icon_state = "sleimiken"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/sleimiken/New()
..()
reagents.add_reagent(BEER, 45)
reagents.add_reagent(SLIMEJELLY, 5)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/strongebow
name = "Strong-eBow"
desc = "A Syndicate favourite, the sharp flavour of this Cider has been compared to getting shot by an Energy Bow."
icon_state = "strongebow"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/strongebow/New()
..()
reagents.add_reagent(BEER, 30)
reagents.add_reagent(APPLEJUICE, 20)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cannedcoffee
name = "Kiririn FIRE"
desc = "Fine, sweet coffee, easy to drink in any scene."
icon_state = "cannedcoffee"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cannedcoffee/New()
..()
reagents.add_reagent(CAFE_LATTE, 50)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cannedcopcoffee
name = "HOSS Rainbow Donut Blend"
desc = "All the essentials, for on the go."
icon_state = "cannedcopcoffee"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cannedcopcoffee/New()
..()
reagents.add_reagent(SECCOFFEE, 50)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/engicoffee
name = "Energizer"
desc = "Smells a bit like Battery Acid"
icon_state = "engicoffee"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/engicoffee/New()
..()
reagents.add_reagent(ENGICOFFEE, 50)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/engicoffee_shard
name = "Supermatter Sea Salt Soda "
desc = "Mmmmm Blurple"
icon_state = "engicoffee_shard"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/engicoffee_shard/New()
..()
reagents.add_reagent(ENGICOFFEE, 50)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/lifeline_white
name = "Picomed: White edition"
desc = "Good for the body and good for the bones."
icon_state = "lifeline_white"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/lifeline_white/New()
..()
reagents.add_reagent(MEDCOFFEE, 48)
reagents.add_reagent(MILK, 2)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/lifeline_red
name = "Picomed: Red edition"
desc = "I need 50ccs of coffee, stat!"
icon_state = "lifeline_red"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/lifeline_red/New()
..()
reagents.add_reagent(MEDCOFFEE, 48)
reagents.add_reagent(REDTEA, 2)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/lifeline_cryo
name = "Picomed: Cryo edition"
desc = "Remember to strip before consuming."
icon_state = "lifeline_cryo"
var/list/tubeoverlay = list()
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/lifeline_cryo/on_reagent_change()
..()
for(var/image/ol in tubeoverlay)
overlays -= ol
tubeoverlay -= ol
var/remaining = Ceiling(reagents.total_volume/reagents.maximum_volume*100,20)
var/image/status_overlay = image("icon" = 'icons/obj/drinks.dmi', "icon_state" = "cryoverlay_[remaining]")
overlays += status_overlay
tubeoverlay += status_overlay
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/lifeline_cryo/New()
..()
reagents.add_reagent(MEDCOFFEE, 48)
reagents.add_reagent(LEPORAZINE, 1)
reagents.add_reagent(FROSTOIL, 1)
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/bear
name = "Bear Arms Beer"
desc = "Crack open a Bear at the end of a long shift."
icon_state = "bearbeer"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/bear/New()
..()
reagents.add_reagent(BEER, 30)
reagents.add_reagent(HYPERZINE, rand(3,5))
// Here be ayy canned drinks
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/zam_sulphuricsplash
name = "Zam Sulphuric Splash"
desc = "Taste the splashy tang! The flavor will melt your taste buds."
icon_state = "Zam_SulphuricSplash"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/zam_sulphuricsplash/New()
..()
reagents.add_reagent(LEMONJUICE, 25)
reagents.add_reagent(SACID, 15)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/zam_formicfizz
name = "Zam Formic Fizz"
desc = "Sulphuric Splash is for brainless minions. This is a REAL grey's drink."
icon_state = "Zam_FormicFizz"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/zam_formicfizz/New()
..()
reagents.add_reagent(LIMEJUICE, 25)
reagents.add_reagent(FORMIC_ACID, 15)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/zam_tannicthunder
name = "Zam Tannic Thunder"
desc = "Humans and lightweights may find this beverage agreeable if they dislike the stronger acids." // This is supposed to be a way to heal burns caused by consuming the more acidic drinks. But humans take brute damage from ingesting acid for some reason?
icon_state = "Zam_TannicThunder"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/zam_tannicthunder/New()
..()
reagents.add_reagent(ORANGEJUICE, 25)
reagents.add_reagent(TANNIC_ACID, 15)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/zam_trustytea
name = "Zam Trusty Tea"
desc = "All trusty tea is made with real opok juice. Zam's honor!" // Now with REAL Opok Juice!
icon_state = "Zam_TrustyTea"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/zam_trustytea/New()
..()
if(prob(5))
name = "Zam Old Fashioned Tea"
desc = "One of the original cans! The design has been discontinued, and it might be worth something to a collector."
icon_state = "Zam_TrustyClassic"
reagents.add_reagent(ACIDTEA, 25)
reagents.add_reagent(OPOKJUICE, 10)
reagents.add_reagent(CAFFEINE, 5)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/zam_humanhydrator
name = "Zam Human Hydrator"
desc = "The mothership provides only the best mineral water for humans to drink, REAL minerals included."
icon_state = "Zam_HumanHydrator"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/zam_humanhydrator/New()
..()
reagents.add_reagent(WATER, 35)
reagents.add_reagent(IRON, 1)
reagents.add_reagent(COPPER, 1)
reagents.add_reagent(SILVER, 1)
reagents.add_reagent(GOLD, 1)
reagents.add_reagent(DIAMONDDUST, 1)
pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/zam_polytrinicpalooza
name = "Zam Polytrinic Palooza"
desc = "This drink has been banned in all mothership controlled territories. Consume at your own risk."
icon_state = "Zam_PolytrinicPalooza"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/zam_polytrinicpalooza/New()
..()
reagents.add_reagent(HOOCH, 20)
reagents.add_reagent(PACID, 14)
reagents.add_reagent(MINDBREAKER, 1)
reagents.add_reagent(COCAINE, 5)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
src.pixel_y = rand(-10, 10) * PIXEL_MULTIPLIER
//////////////////////////drinkingglass and shaker//
//Note by Darem: This code handles the mixing of drinks. New drinks go in three places: In Chemistry-Reagents.dm (for the drink
// itself), in Chemistry-Recipes.dm (for the reaction that changes the components into the drink), and here (for the drinking glass
// icon states.
/obj/item/weapon/reagent_containers/food/drinks/shaker
name = "\improper Shaker"
desc = "A metal shaker to mix drinks in."
icon_state = "shaker"
origin_tech = Tc_MATERIALS + "=1"
amount_per_transfer_from_this = 10
volume = 100
flags = FPRINT | OPENCONTAINER | NOREACT | SILENTCONTAINER
can_flip = TRUE
var/shaking = FALSE
var/obj/item/weapon/reagent_containers/food/drinks/shaker/reaction/reaction = null
/obj/item/weapon/reagent_containers/food/drinks/shaker/New()
..()
if (flags & NOREACT)
reaction = new(src)
/obj/item/weapon/reagent_containers/food/drinks/shaker/Destroy()
if (reaction)
qdel(reaction)
..()
/obj/item/weapon/reagent_containers/food/drinks/shaker/attack_self(var/mob/user)
if (reagents.is_empty())
to_chat(user, "<span class='warning'>You won't shake an empty shaker now, will you?</span>")
return
if (!shaking)
if(flipping)
QDEL_NULL(flipping)
last_flipping = world.time
item_state = initial(item_state)
playsound(loc,'sound/effects/slap2.ogg', 10, 1, -2)
shaking = TRUE
var/adjective = pick("furiously","passionately","with vigor","with determination","like a devil","with care and love","like there is no tomorrow")
user.visible_message("<span class='notice'>\The [user] shakes \the [src] [adjective]!</span>","<span class='notice'>You shake \the [src] [adjective]!</span>")
icon_state = icon_state + "-shake"
if(iscarbon(loc))
var/mob/living/carbon/M = loc
M.update_inv_hands()
playsound(user, 'sound/items/boston_shaker.ogg', 80, 1)
if(do_after(user, src, 30))
reagents.trans_to(reaction,volume)
reaction.reagents.trans_to(reagents,volume)
icon_state = initial(icon_state)
if(iscarbon(loc))
var/mob/living/carbon/M = loc
M.update_inv_hands()
shaking = FALSE
/obj/item/weapon/reagent_containers/food/drinks/shaker/reaction
flags = FPRINT | OPENCONTAINER | SILENTCONTAINER
volume = 300
//bluespace shaker
/obj/item/weapon/reagent_containers/food/drinks/shaker/bluespaceshaker
name = "\improper bluespace shaker"
desc = "A bluespace shaker to mix drinks in."
icon_state = "bluespaceshaker"
origin_tech = Tc_BLUESPACE + "=4;" + Tc_MATERIALS + "=6"
starting_materials = list(MAT_IRON = 5000, MAT_GLASS = 5000)
w_type = RECYK_GLASS
w_class = W_CLASS_SMALL
volume = 300
/obj/item/weapon/reagent_containers/food/drinks/discount_shaker
name = "\improper Discount Shaker"
desc = "A metal shaker to mix drinks in."
icon_state = "shaker"
origin_tech = Tc_MATERIALS + "=1"
amount_per_transfer_from_this = 10
volume = 100
flags = FPRINT | OPENCONTAINER
/obj/item/weapon/reagent_containers/food/drinks/thermos
name = "\improper Thermos"
desc = "A metal flask which insulates its contents from temperature - keeping hot beverages hot, and cold ones cold. You can remove its cap to use as a cup."
icon_state = "vacuumflask"
origin_tech = Tc_MATERIALS + "=1"
amount_per_transfer_from_this = 10
volume = 100
thermal_variation_modifier = 0
var/obj/item/weapon/reagent_containers/food/drinks/thermos_cap/cap
/obj/item/weapon/reagent_containers/food/drinks/thermos/New()
..()
cap = new(src)
/obj/item/weapon/reagent_containers/food/drinks/thermos/attack_self(var/mob/user)
if (cap)
to_chat(user, "<span class='warning'>Remove the cap with your other hand first.</span>")
return
else
..()
/obj/item/weapon/reagent_containers/food/drinks/thermos/attack_hand(var/mob/user)
if (cap && (loc == user) && (src == user.get_inactive_hand()))
user.put_in_hands(cap)
cap = null
to_chat(user, "<span class='notice'>You remove the Thermos' cap.</span>")
playsound(loc, 'sound/machines/click.ogg', 50, 1, -3)
icon_state = "vacuumflask_open"
update_temperature_overlays()
if(iscarbon(loc))
var/mob/living/carbon/M = loc
M.update_inv_hands()
else
..()
/obj/item/weapon/reagent_containers/food/drinks/thermos/attackby(var/obj/item/I, var/mob/user, params)
..()
if (!cap && istype(I, /obj/item/weapon/reagent_containers/food/drinks/thermos_cap))
var/obj/item/weapon/reagent_containers/food/drinks/thermos_cap/C = I
if (C.reagents.total_volume)
return ..()
if(user.drop_item(C, src))
cap = C
playsound(loc, 'sound/effects/slap2.ogg', 50, 1, -3)
to_chat(user, "<span class='notice'>You place the Thermos' cap back on.</span>")
icon_state = "vacuumflask"
update_temperature_overlays()
if(iscarbon(loc))
var/mob/living/carbon/M = loc
M.update_inv_hands()
else
..()
/obj/item/weapon/reagent_containers/food/drinks/thermos/thermal_entropy()
thermal_entropy_containers.Remove(src)
update_icon()
/obj/item/weapon/reagent_containers/food/drinks/thermos/update_temperature_overlays()
//we only care about the steam
if(!cap && reagents && reagents.total_volume)
steam_spawn_adjust(reagents.chem_temp)
else
steam_spawn_adjust(0)
/obj/item/weapon/reagent_containers/food/drinks/thermos/full/New()
..()
var/new_reagent = pick(COFFEE, HOT_COCO, ICECOFFEE, TEA, ICETEA, WATER, ICE, ICED_BEER)
reagents.add_reagent(new_reagent, rand(50,100))
reagents.chem_temp = COOKTEMP_READY
/obj/item/weapon/reagent_containers/food/drinks/thermos_cap
name = "\improper Thermos cap"
desc = "You can use the Thermos' cap as a small cup. The liquids in the cap will react to the environment's temperature."
amount_per_transfer_from_this = 30
volume = 30
icon_state = "vacuumflask_cap"
/obj/item/weapon/reagent_containers/food/drinks/thermos_cap/on_reagent_change()
..()
update_icon()
/obj/item/weapon/reagent_containers/food/drinks/thermos_cap/update_icon()
..()
if (reagents.reagent_list.len > 0)
icon_state = base_icon_state
var/image/filling = image('icons/obj/reagentfillings.dmi', src, "thermos_cap")
filling.icon += mix_color_from_reagents(reagents.reagent_list)
filling.alpha = mix_alpha_from_reagents(reagents.reagent_list)
overlays += filling
/obj/item/weapon/reagent_containers/food/drinks/plastic
name = "\improper plastic bottle"
desc = "Remember to recycle."
icon_state = "plasticbottle"
origin_tech = Tc_MATERIALS + "=1"
melt_temperature = MELTPOINT_PLASTIC
starting_materials = list(MAT_PLASTIC = 500)
w_type = RECYK_PLASTIC
volume = 100
amount_per_transfer_from_this = 10
/obj/item/weapon/reagent_containers/food/drinks/plastic/water
name = "\improper water bottle"
desc = "Chemically enhanced mineral water."
icon_state = "waterbottle"
/obj/item/weapon/reagent_containers/food/drinks/plastic/water/New()
..()
reagents.add_reagent(WATER, volume)
/obj/item/weapon/reagent_containers/food/drinks/plastic/water/small
name = "\improper small water bottle"
icon_state = "waterbottle_small"
volume = 50
amount_per_transfer_from_this = 5
/obj/item/weapon/reagent_containers/food/drinks/plastic/sodawater
name = "\improper Soda Water bottle"
desc = "Good ole carbonated water."
icon_state = "sodawaterbottle"
/obj/item/weapon/reagent_containers/food/drinks/plastic/sodawater/New()
..()
reagents.add_reagent(SODAWATER, volume)
/obj/item/weapon/reagent_containers/food/drinks/plastic/cola
name = "\improper Space Cola bottle"
desc = "During hard times, place your trust in mega corporations, and their sponsored drinks."
icon_state = "colaplasticbottle"
/obj/item/weapon/reagent_containers/food/drinks/plastic/cola/New()
..()
reagents.add_reagent(COLA, volume)
/obj/item/weapon/reagent_containers/food/drinks/flask
name = "\improper Captain's flask"
desc = "A metal flask belonging to the captain."
icon_state = "flask"
origin_tech = Tc_MATERIALS + "=1"
volume = 60
can_flip = TRUE
/obj/item/weapon/reagent_containers/food/drinks/flask/detflask
name = "\improper Detective's flask"
desc = "A metal flask with a leather band and golden badge belonging to the detective."
icon_state = "detflask"
volume = 60
/obj/item/weapon/reagent_containers/food/drinks/flask/barflask
name = "\improper flask"
desc = "For those who can't be bothered to hang out at the bar to drink."
icon_state = "barflask"
volume = 60
/obj/item/weapon/reagent_containers/food/drinks/flask/ancient
name = "\improper ancient flask"
desc = "A flask recovered from the asteroid. How old is it?"
icon_state = "oldflask"
mech_flags = MECH_SCAN_FAIL
/obj/item/weapon/reagent_containers/food/drinks/flask/ancient/New()
..()
reagents.add_reagent(KARMOTRINE, 15)
/obj/item/weapon/reagent_containers/food/drinks/flagmug
name = "mug"
desc = "A simple mug."
icon = 'icons/obj/cafe.dmi'
icon_state = "mug_empty"
isGlass = 0
amount_per_transfer_from_this = 10
volume = 30
starting_materials = list(MAT_IRON = 500)
/obj/item/weapon/reagent_containers/food/drinks/flagmug/on_reagent_change()
..()
update_icon()
/obj/item/weapon/reagent_containers/food/drinks/flagmug/update_icon()
..()
if (reagents.reagent_list.len > 0)
mug_reagent_overlay()
set_blood_overlay()
/obj/item/weapon/reagent_containers/food/drinks/flagmug/britcup
name = "\improper cup"
desc = "A cup with the British flag emblazoned on it."
icon = 'icons/obj/cafe.dmi'
icon_state = "britcup"
volume = 30
/obj/item/weapon/reagent_containers/food/drinks/flagmug/americup
name = "\improper cup"
desc = "A cup with the American flag emblazoned on it."
icon = 'icons/obj/cafe.dmi'
icon_state = "americup"
volume = 30
/obj/item/weapon/reagent_containers/food/drinks/flagmug/francecup
name = "\improper cup"
desc = "A cup with the French flag emblazoned on it."
icon = 'icons/obj/cafe.dmi'
icon_state = "francecup"
volume = 30
/obj/item/weapon/reagent_containers/food/drinks/flagmug/italycup
name = "\improper cup"
desc = "A cup with the Italian flag emblazoned on it."
icon = 'icons/obj/cafe.dmi'
icon_state = "italycup"
volume = 30
/obj/item/weapon/reagent_containers/food/drinks/flagmug/germancup
name = "\improper cup"
desc = "A cup with the German flag emblazoned on it."
icon = 'icons/obj/cafe.dmi'
icon_state = "germancup"
volume = 30
/obj/item/weapon/reagent_containers/food/drinks/flagmug/spanishcup
name = "\improper cup"
desc = "A cup with the Spanish flag emblazoned on it."
icon = 'icons/obj/cafe.dmi'
icon_state = "spanishcup"
volume = 30
/obj/item/weapon/reagent_containers/food/drinks/flagmug/irelandcup
name = "\improper cup"
desc = "A cup with the Irish flag emblazoned on it."
icon = 'icons/obj/cafe.dmi'
icon_state = "irelandcup"
volume = 30
/obj/item/weapon/reagent_containers/food/drinks/flagmug/uruguaycup
name = "\improper cup"
desc = "A cup with the Uruguayan flag emblazoned on it."
icon = 'icons/obj/cafe.dmi'
icon_state = "uruguaycup"
volume = 30
/obj/item/weapon/reagent_containers/food/drinks/flagmug/argentinacup
name = "\improper cup"
desc = "A cup with the Argentine flag emblazoned on it."
icon = 'icons/obj/cafe.dmi'
icon_state = "argentinacup"
volume = 30
/obj/item/weapon/reagent_containers/food/drinks/flagmug/brasilcup
name = "\improper cup"
desc = "A cup with the Brasilian flag emblazoned on it."
icon = 'icons/obj/cafe.dmi'
icon_state = "brasilcup"
volume = 30
/obj/item/weapon/reagent_containers/food/drinks/flagmug/chilecup
name = "\improper cup"
desc = "A cup with the Chilean flag emblazoned on it."
icon = 'icons/obj/cafe.dmi'
icon_state = "chilecup"
volume = 30
/obj/item/weapon/reagent_containers/food/drinks/flagmug/uncup
name = "\improper cup"
desc = "A cup with the United Nations flag emblazoned on it."
icon = 'icons/obj/cafe.dmi'
icon_state = "uncup"
volume = 30
/obj/item/weapon/reagent_containers/food/drinks/flagmug/eucup
name = "\improper cup"
desc = "A cup with the European flag emblazoned on it."
icon = 'icons/obj/cafe.dmi'
icon_state = "eucup"
volume = 30
/obj/item/weapon/reagent_containers/food/drinks/gromitmug
name = "\improper Gromit Mug"
desc = "Gromit Mug."
icon = 'icons/obj/cafe.dmi'
icon_state = "gromitmug"
volume = 30
///////////////////////////////////////////////Alchohol bottles! -Agouri //////////////////////////
//Functionally identical to regular drinks. The only difference is that the default bottle size is 100. - Darem
//Bottles now weaken and break when smashed on people's heads. - Giacom
/obj/item/weapon/reagent_containers/food/drinks/bottle
amount_per_transfer_from_this = 10
volume = 100
starting_materials = list(MAT_GLASS = 500)
bottleheight = 31
melt_temperature = MELTPOINT_GLASS
w_type=RECYK_GLASS
can_flip = TRUE
//Keeping this here for now, I'll ask if I should keep it here.
/obj/item/weapon/broken_bottle
name = "broken bottle" // changed to lowercase - Hinaichigo
desc = "A bottle with a sharp broken bottom."
icon = 'icons/obj/drinks.dmi'
icon_state = "broken_bottle"
force = 9.0
throwforce = 5.0
throw_speed = 3
throw_range = 5
sharpness = 0.8 //same as glass shards
sharpness_flags = SHARP_TIP | SHARP_BLADE
w_class = W_CLASS_TINY
item_state = "beer"
attack_verb = list("stabs", "slashes", "attacks")
var/icon/broken_outline = icon('icons/obj/drinks.dmi', "broken")
starting_materials = list(MAT_GLASS = 500)
melt_temperature = MELTPOINT_GLASS
w_type=RECYK_GLASS
/obj/item/weapon/broken_bottle/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
return ..()
/obj/item/weapon/reagent_containers/food/drinks/bottle/gin
name = "Griffeater Gin"
desc = "A bottle of high quality gin, produced in the New London Space Station."
icon_state = "ginbottle"
vending_cat = "spirits"
bottleheight = 30
isGlass = 1
molotov = -1
/obj/item/weapon/reagent_containers/food/drinks/bottle/gin/New()
..()
reagents.add_reagent(GIN, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey
name = "Uncle Git's Special Reserve"
desc = "A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter. TUNNEL WHISKEY RULES."
icon_state = "whiskeybottle"
vending_cat = "spirits"
isGlass = 1
molotov = -1
/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey/New()
..()
reagents.add_reagent(WHISKEY, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka
name = "Tunguska Triple Distilled"
desc = "Aah, vodka. Prime choice of drink AND fuel by Russians worldwide."
icon_state = "vodkabottle"
vending_cat = "spirits"
isGlass = 1
molotov = -1
/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka/New()
..()
reagents.add_reagent(VODKA, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/tequila
name = "Caccavo Guaranteed Quality Tequila"
desc = "Made from premium petroleum distillates, pure thalidomide and other fine quality ingredients!"
icon_state = "tequilabottle"
vending_cat = "spirits"
isGlass = 1
molotov = -1
/obj/item/weapon/reagent_containers/food/drinks/bottle/tequila/New()
..()
reagents.add_reagent(TEQUILA, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao
name = "Bluespace Curacao"
desc = "This is either Blue Curacao, or window cleaner. Take a sip and find out."
icon_state = "bluecuracaobottle"
vending_cat = "spirits"
isGlass = 1
molotov = -1
/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao/New()
..()
reagents.add_reagent(BLUECURACAO, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/bitters
name = "Wizard's Bitters"
desc = "Named for it's seemingly magical ability to take the place of any variety of bitters. Abracadabra, Angostura!"
icon_state = "bittersbottle"
vending_cat = "spirits"
isGlass = 1
molotov = -1
/obj/item/weapon/reagent_containers/food/drinks/bottle/bitters/New()
..()
reagents.add_reagent(BITTERS, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/triplesec
name = "Cufftreau Triple Sec"
desc = "Named for what'll be wrapped around your wrists by the end of the night if you keep drinking like this."
icon_state = "triplesecbottle"
vending_cat = "spirits"
isGlass = 1
molotov = -1
/obj/item/weapon/reagent_containers/food/drinks/bottle/triplesec/New()
..()
reagents.add_reagent(TRIPLESEC, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/schnapps
name = "All-in-One Fancy Space Schnapps"
desc = "For when you can't be bothered to stock a dozen varieties of Schnapps - just don't complain when it doesn't taste quite right."
icon_state = "schnappsbottle"
vending_cat = "spirits"
isGlass = 1
molotov = -1
/obj/item/weapon/reagent_containers/food/drinks/bottle/schnapps/New()
..()
reagents.add_reagent(SCHNAPPS, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne
name = "Captain's Finest Champagne"
desc = "A premium brand of champagne, intended for only the most discerning of tastes - for Captains, by Captains."
icon_state = "champagnebottle"
vending_cat = "fermented"
isGlass = 1
molotov = -1
/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne/New()
..()
reagents.add_reagent(CHAMPAGNE, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/fireballwhisky
name = "Oni Soma's Fireball Whisky"
desc = "A cinnamon flavored Whisky - without the E - favored by cheap drunks with no taste buds."
icon_state = "fireballwhiskybottle"
vending_cat = "spirits"
isGlass = 1
molotov = -1
/obj/item/weapon/reagent_containers/food/drinks/bottle/fireballwhisky/New()
..()
reagents.add_reagent(CINNAMONWHISKY, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing
name = "Bottle of Nothing"
icon_state = "bottleofnothing"
desc = ""
isGlass = 1
molotov = -1
smashtext = ""
/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing/New()
..()
if(Holiday == APRIL_FOOLS_DAY)
name = "Bottle of Something"
desc = "A bottle filled with something."
reagents.add_reagent(pick(BEER, VOMIT, ZOMBIEPOWDER, SOYSAUCE, KETCHUP, HONEY, BANANA, ABSINTHE, SALTWATER, WATER, BLOOD, LUBE, MUTATIONTOXIN, AMUTATIONTOXIN, GOLD, TRICORDRAZINE, GRAVY), 100)
else
desc = "A bottle filled with nothing."
reagents.add_reagent(NOTHING, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/patron
name = "Wrapp Artiste Patron"
desc = "Silver laced tequila, served in space night clubs across the galaxy."
icon_state = "patronbottle"
bottleheight = 26 //has a cork but for now it goes on top of the cork
molotov = -1
isGlass = 1
/obj/item/weapon/reagent_containers/food/drinks/bottle/patron/New()
..()
reagents.add_reagent(PATRON, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/rum
name = "Captain Pete's Cuban Spiced Rum"
desc = "This isn't just rum, oh no. It's practically GRIFF in a bottle."
icon_state = "rumbottle"
vending_cat = "spirits"
molotov = -1
isGlass = 1
/obj/item/weapon/reagent_containers/food/drinks/bottle/rum/New()
..()
reagents.add_reagent(RUM, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth
name = "Goldeneye Vermouth"
desc = "Sweet, sweet dryness~"
icon_state = "vermouthbottle"
vending_cat = "fermented"
molotov = -1
isGlass = 1
/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth/New()
..()
reagents.add_reagent(VERMOUTH, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua
name = "Robert Robust's Coffee Liqueur"
desc = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936, HONK"
icon_state = "kahluabottle"
vending_cat = "fermented"
molotov = -1
isGlass = 1
/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua/New()
..()
reagents.add_reagent(KAHLUA, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager
name = "College Girl Goldschlager"
desc = "Because they are the only ones who will drink 100 proof cinnamon schnapps."
icon_state = "goldschlagerbottle"
molotov = -1
isGlass = 1
/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager/New()
..()
reagents.add_reagent(GOLDSCHLAGER, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac
name = "Chateau De Baton Premium Cognac"
desc = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. You might as well not scream 'SHITCURITY' this time."
icon_state = "cognacbottle"
vending_cat = "spirits"
molotov = -1
isGlass = 1
/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac/New()
..()
reagents.add_reagent(COGNAC, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/wine
name = "Doublebeard Bearded Special Wine"
desc = "A faint aura of unease and asspainery surrounds the bottle."
icon_state = "winebottle"
vending_cat = "fermented"
bottleheight = 30
molotov = -1
isGlass = 1
/obj/item/weapon/reagent_containers/food/drinks/bottle/wine/New()
..()
reagents.add_reagent(WINE, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine
name = "Vintage 2018 Special Reserve"
desc = "Fermented during tumultuous years, and aged to perfection over several centuries."
icon_state = "pwinebottle"
vending_cat = "fermented" //doesn't actually matter, will appear under premium
bottleheight = 30
molotov = -1
isGlass = 1
/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine/New()
..()
reagents.add_reagent(PWINE, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe
name = "Jailbreaker Verte"
desc = "One sip of this and you just know you're gonna have a good time."
icon_state = "absinthebottle"
bottleheight = 27
molotov = -1
isGlass = 1
/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe/New()
..()
reagents.add_reagent(ABSINTHE, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/sake
name = "Uchuujin Junmai Ginjo Sake"
desc = "An exotic rice wine from the land of the space ninjas."
icon_state = "sakebottle"
vending_cat = "fermented"
isGlass = 1
molotov = -1
/obj/item/weapon/reagent_containers/food/drinks/bottle/sake/New()
..()
reagents.add_reagent(SAKE, 100)
//////////////////////////JUICES AND STUFF ///////////////////////
/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice
name = "Orange Juice"
desc = "Full of vitamins and deliciousness!"
icon_state = "orangejuice"
vending_cat = "fruit juices"
starting_materials = null
/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice/New()
..()
reagents.add_reagent(ORANGEJUICE, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/cream
name = "Milk Cream"
desc = "It's cream. Made from milk. What else did you think you'd find in there?"
icon_state = "cream"
vending_cat = "dairy products"
starting_materials = null
/obj/item/weapon/reagent_containers/food/drinks/bottle/cream/New()
..()
reagents.add_reagent(CREAM, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice
name = "Tomato Juice"
desc = "Well, at least it LOOKS like tomato juice. You can't tell with all that redness."
icon_state = "tomatojuice"
vending_cat = "fruit juices"
starting_materials = null
/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice/New()
..()
reagents.add_reagent(TOMATOJUICE, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice
name = "Lime Juice"
desc = "Sweet-sour goodness."
icon_state = "limejuice"
vending_cat = "fruit juices"
starting_materials = null
/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice/New()
..()
reagents.add_reagent(LIMEJUICE, 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/greyvodka
name = "Greyshirt Vodka"
desc = "Experts spent a long time squatting around a mixing bench to bring you this."
icon_state = "grey_vodka"
vending_cat = "spirits"
starting_materials = null
isGlass = 1
molotov = -1
/obj/item/weapon/reagent_containers/food/drinks/bottle/greyvodka/New()
..()
reagents.add_reagent(GREYVODKA, 100)
/obj/item/weapon/reagent_containers/food/drinks/proc/smash(mob/living/M as mob, mob/living/user as mob)
if(molotov == 1) //for molotovs
if(lit)
new /obj/effect/decal/cleanable/ash(get_turf(src))
else
new /obj/item/weapon/reagent_containers/glass/rag(get_turf(src))
//Creates a shattering noise and replaces the bottle with a broken_bottle
user.drop_item(force_drop = 1)
var/obj/item/weapon/broken_bottle/B = new /obj/item/weapon/broken_bottle(user.loc)
B.icon_state = src.icon_state
B.name = src.smashname
if(istype(src, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass)) //for drinking glasses
B.icon_state = "glass_empty"
if(prob(33))
new /obj/item/weapon/shard(get_turf(M || src)) // Create a glass shard at the target's location! O)
var/icon/I = new('icons/obj/drinks.dmi', B.icon_state)
I.Blend(B.broken_outline, ICON_OVERLAY, rand(5), 1)
I.SwapColor(rgb(255, 0, 220, 255), rgb(0, 0, 0, 0))
B.icon = I
user.put_in_active_hand(B)
src.transfer_fingerprints_to(B)
playsound(src, "shatter", 70, 1)
qdel(src)
//smashing when thrown
/obj/item/weapon/reagent_containers/food/drinks/throw_impact(atom/hit_atom, var/speed, mob/user)
if(!..() && isGlass && isturf(loc)) // don't shatter if we got caught mid-flight
isGlass = 0 //to avoid it from hitting the wall, then hitting the floor, which would cause two broken bottles to appear
visible_message("<span class='warning'>The [smashtext][name] shatters!</span>","<span class='warning'>You hear a shatter!</span>")
playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
if(reagents.total_volume)
if(molotov == 1 || reagents.has_reagent(FUEL))
user?.attack_log += text("\[[time_stamp()]\] <span class='danger'>Threw a [lit ? "lit" : "unlit"] molotov to \the [hit_atom], containing [reagents.get_reagent_ids()]</span>")
log_attack("[lit ? "Lit" : "Unlit"] molotov shattered at [formatJumpTo(get_turf(hit_atom))], thrown by [key_name(user)] and containing [reagents.get_reagent_ids()]")
message_admins("[lit ? "Lit" : "Unlit"] molotov shattered at [formatJumpTo(get_turf(hit_atom))], thrown by [key_name_admin(user)] and containing [reagents.get_reagent_ids()]")
reagents.splashplosion(reagents.total_volume >= (reagents.maximum_volume/2))//splashing everything on the tile hit, and the surrounding ones if we're over half full.
invisibility = INVISIBILITY_MAXIMUM //so it stays a while to ignite any fuel
if(molotov == 1) //for molotovs
if(lit)
new /obj/effect/decal/cleanable/ash(get_turf(src))
var/turf/loca = get_turf(src)
var/fueltemp = possible_fuels[FUEL]
if(loca)
new /obj/effect/fire(loca)
loca.hotspot_expose(fueltemp["max_temperature"], FULL_FLAME,1)
else
new /obj/item/weapon/reagent_containers/glass/rag(get_turf(src))
create_broken_bottle()
/obj/item/weapon/reagent_containers/food/drinks/proc/create_broken_bottle()
//create new broken bottle
var/obj/item/weapon/broken_bottle/B = new /obj/item/weapon/broken_bottle(loc)
B.name = smashname
B.icon_state = icon_state
if(istype(src, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass)) //for drinking glasses
B.icon_state = "glass_empty"
if(prob(33))
new /obj/item/weapon/shard(get_turf(src)) // Create a glass shard at the hit location)
var/icon/Q = new('icons/obj/drinks.dmi', B.icon_state)
Q.Blend(B.broken_outline, ICON_OVERLAY, rand(5), 1)
Q.SwapColor(rgb(255, 0, 220, 255), rgb(0, 0, 0, 0))
B.icon = Q
src.transfer_fingerprints_to(B)
playsound(src, "shatter", 70, 1)
qdel(src)
//////////////////////
// molotov cocktail //
// by Hinaichigo //
//////////////////////
/obj/item/weapon/reagent_containers/food/drinks/attackby(var/obj/item/I, mob/user as mob)
if(istype(I, /obj/item/weapon/reagent_containers/glass/rag) && molotov == -1) //check if it is a molotovable drink - just beer and ale for now - other bottles require different rag overlay positions - if you can figure this out then go for it
to_chat(user, "<span class='notice'>You stuff the [I] into the mouth of the [src].</span>")
QDEL_NULL(I) //??
var/obj/item/weapon/reagent_containers/food/drinks/dummy = /obj/item/weapon/reagent_containers/food/drinks/molotov
molotov = initial(dummy.molotov)
flags = initial(dummy.flags)
name = initial(dummy.name)
smashtext = initial(dummy.smashtext)
desc = initial(dummy.desc)
slot_flags = initial(dummy.slot_flags)
update_icon()
return 1
else if(I.is_hot())
attempt_heating(I, user)
light(user,I)
update_brightness(user)
else if(istype(I, /obj/item/device/assembly/igniter))
var/obj/item/device/assembly/igniter/C = I
C.activate()
light(user,I)
update_brightness(user)
return
else if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/donut))
if(reagents.total_volume)
var/obj/item/weapon/reagent_containers/food/snacks/donut/D = I
D.dip(src, user)
/obj/item/weapon/reagent_containers/food/drinks/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(!(molotov == 1))
return
if(lit)
return
ignite()
/obj/item/weapon/reagent_containers/food/drinks/ignite()
if(lit)
return
light("<span class='danger'>The raging fire sets \the [src] alight.</span>")
/obj/item/weapon/reagent_containers/food/drinks/extinguish()
lit = 0
update_brightness()
update_icon()
..()
/obj/item/weapon/reagent_containers/food/drinks/molotov
name = "incendiary cocktail"
smashtext = ""
desc = "A rag stuffed into a bottle."
slot_flags = SLOT_BELT
flags = FPRINT
molotov = 1
isGlass = 1
icon_state = "vodkabottle" //not strictly necessary for the "abstract" molotov type that the molotov-making-process copies variables from, but is used for pre-spawned molotovs
can_flip = TRUE
/obj/item/weapon/reagent_containers/food/drinks/molotov/New()
..()
reagents.add_reagent(FUEL, 100) //not strictly necessary for the "abstract" molotov type that the molotov-making-process copies variables from, but is used for pre-spawned molotovs
update_icon()
/obj/item/weapon/reagent_containers/food/drinks/proc/light(mob/user,obj/item/I)
var/flavor_text = "<span class='rose'>[user] lights \the [name] with \the [I].</span>"
if(!lit && molotov == 1)
lit = 1
visible_message(flavor_text)
processing_objects.Add(src)
update_icon()
if(!lit && can_be_lit)
lit = 1
visible_message(flavor_text)
can_be_lit = 0
update_icon()
/obj/item/weapon/reagent_containers/food/drinks/blow_act(var/mob/living/user)
if(lit)
lit = 0
visible_message("<span class='rose'>The light on \the [name] goes out.</span>")
processing_objects.Remove(src)
set_light(0)
update_icon()
/obj/item/weapon/reagent_containers/food/drinks/proc/update_brightness(var/mob/user = null)
if(lit)
set_light(src.brightness_lit)
else
set_light(0)
//todo: can light cigarettes with
//todo: is force = 15 overwriting the force? //Yes, of broken bottles, but that's been fixed now
//////// Could be expanded upon:
// make it work with more chemicals and reagents, more like a chem grenade
// only allow the bottle to be stuffed if there are certain reagents inside, like fuel
// different flavor text for different means of lighting
// new fire overlay - current is edited version of the IED one
// a chance to not break, if desired
// fingerprints appearing on the object, which might already happen, and the shard
// belt sprite and new hand sprite
// ability to put out with water or otherwise
// burn out after a time causing the contents to ignite
// make into its own item type so they could be spawned full of fuel with New()
// colored light instead of white light
// the rag can store chemicals as well so maybe the rag's chemicals could react with the bottle's chemicals before or upon breaking
// somehow make it possible to wipe down the bottles instead of exclusively stuffing rags into them
// make rag retain chemical properties or color (if implemented) after smashing
////////
/obj/item/weapon/reagent_containers/food/drinks/update_icon()
..()
var/image/Im
if(molotov == 1)
Im = image('icons/obj/grenade.dmi', icon_state = "molotov_rag")
Im.pixel_y += src.bottleheight-23 * PIXEL_MULTIPLIER //since the molotov rag and fire are placed one pixel above the mouth of the bottle, and start out at a height of 23 (for beer and ale)
overlays += Im
if(molotov == 1 && lit)
Im = image('icons/obj/grenade.dmi', icon_state = "molotov_fire")
Im.pixel_y += src.bottleheight-23 * PIXEL_MULTIPLIER
overlays += Im
else
item_state = initial(item_state)
if(ishuman(src.loc))
var/mob/living/carbon/human/H = src.loc
H.update_inv_belt()
return
/obj/item/weapon/reagent_containers/food/drinks/process()
var/turf/loca = get_turf(src)
if(lit && loca)
// to_chat(world, "<span class='warning'>Burning...</span>")
loca.hotspot_expose(700, SMALL_FLAME)
return
// Sliding from one table to another
/obj/item/weapon/reagent_containers/food/drinks/MouseDropFrom(atom/over_object,atom/src_location,atom/over_location,src_control,over_control,params)
var/mob/user = usr
if (!istype(src_location))
return
if (!user || user.incapacitated())
return
// Attempted drink sliding
if (locate(/obj/structure/table) in src_location)
if (M_SOBER in user.mutations)
if (!user.Adjacent(src))
return
var/distance = manhattan_distance(over_location, src)
if (distance >= 8 || distance == 0) // More than a full screen to go, or we're not moving at all
return ..()
// Geometrically checking if we're on a straight line.
var/_vector/V = atoms2vector(src, over_location)
var/_vector/V_norm = V.normalized()
if (!V_norm.is_integer())
return ..() // Only a cardinal vector (north, south, east, west) can pass this test
// Checks if there's tables on the path.
var/turf/dest = get_translated_turf(V)
var/turf/temp_turf = src_location
do
temp_turf = temp_turf.get_translated_turf(V_norm)
if (!locate(/obj/structure/table) in temp_turf)
var/_vector/V2 = atoms2vector(src, temp_turf)
vector_translate(V2, 0.1 SECONDS)
user.visible_message("<span class='warning'>\The [user] slides \the [src] down the table... and straight into the ground!</span>", "<span class='warning'>You slide \the [src] down the table, and straight into the ground!</span>")
create_broken_bottle()
return
while (temp_turf != dest)
vector_translate(V, 0.1 SECONDS)
user.visible_message("<span class='notice'>\The [user] expertly slides \the [src] down the table.</span>", "<span class='notice'>You slide \the [src] down the table. What a pro.</span>")
return
else
if (!(locate(/obj/structure/table) in over_location))
return ..()
if (!user.Adjacent(src) || !src_location.Adjacent(over_location)) // Regular users can only do short slides.
return ..()
if ((M_CLUMSY in user.mutations) && prob(10))
user.visible_message("<span class='warning'>\The [user] tries to slide \the [src] down the table, but fails miserably.</span>", "<span class='warning'>You <b>fail</b> to slide \the [src] down the table!</span>")
create_broken_bottle()
return
user.visible_message("<span class='notice'>\The [user] slides \the [src] down the table.</span>", "<span class='notice'>You slide \the [src] down the table!</span>")
forceMove(over_location, glide_size_override = DELAY2GLIDESIZE(0.4 SECONDS))
return
return ..()
#undef FLIPPING_DURATION
#undef FLIPPING_ROTATION
#undef FLIPPING_INCREMENT