Revert "PLASE"

This reverts commit 8af225e6e3.
This commit is contained in:
Fermi
2019-11-24 03:06:08 +00:00
parent aeb8606ce0
commit ba4fa1ef67
2145 changed files with 1387321 additions and 5257 deletions
@@ -0,0 +1,529 @@
////////////////////////////////////////////////////////////////////////////////
/// Drinks.
////////////////////////////////////////////////////////////////////////////////
/obj/item/reagent_containers/food/drinks
name = "drink"
desc = "yummy"
icon = 'icons/obj/drinks.dmi'
icon_state = null
lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi'
reagent_flags = 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,15,20,25,30,50)
volume = 50
resistance_flags = NONE
var/isGlass = TRUE //Whether the 'bottle' is made of glass or not so that milk cartons dont shatter when someone gets hit by it
/obj/item/reagent_containers/food/drinks/on_reagent_change(changetype)
if (gulp_size < 5)
gulp_size = 5
else
gulp_size = max(round(reagents.total_volume / 5), 5)
/obj/item/reagent_containers/food/drinks/attack(mob/living/M, mob/user, def_zone)
if(!reagents || !reagents.total_volume)
to_chat(user, "<span class='warning'>[src] is empty!</span>")
return 0
if(!canconsume(M, user))
return 0
if (!is_drainable())
to_chat(user, "<span class='warning'>[src]'s lid hasn't been opened!</span>")
return 0
if(M == user)
user.visible_message("<span class='notice'>[user] swallows a gulp of [src].</span>", "<span class='notice'>You swallow a gulp of [src].</span>")
if(HAS_TRAIT(M, TRAIT_VORACIOUS))
M.changeNext_move(CLICK_CD_MELEE * 0.5) //chug! chug! chug!
else
M.visible_message("<span class='danger'>[user] attempts to feed the contents of [src] to [M].</span>", "<span class='userdanger'>[user] attempts to feed the contents of [src] to [M].</span>")
if(!do_mob(user, M))
return
if(!reagents || !reagents.total_volume)
return // The drink might be empty after the delay, such as by spam-feeding
M.visible_message("<span class='danger'>[user] feeds the contents of [src] to [M].</span>", "<span class='userdanger'>[user] feeds the contents of [src] to [M].</span>")
log_combat(user, M, "fed", reagents.log_list())
var/fraction = min(gulp_size/reagents.total_volume, 1)
checkLiked(fraction, M)
reagents.reaction(M, INGEST, fraction)
reagents.trans_to(M, gulp_size)
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
return 1
/obj/item/reagent_containers/food/drinks/afterattack(obj/target, mob/user , proximity)
. = ..()
if(!proximity)
return
if(target.is_refillable() && is_drainable()) //Something like a glass. Player probably wants to transfer TO it.
if(!reagents.total_volume)
to_chat(user, "<span class='warning'>[src] is empty.</span>")
return
if(target.reagents.holder_full())
to_chat(user, "<span class='warning'>[target] is full.</span>")
return
var/refill = reagents.get_master_reagent_id()
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
to_chat(user, "<span class='notice'>You transfer [trans] units of the solution to [target].</span>")
if(iscyborg(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)
addtimer(CALLBACK(reagents, /datum/reagents.proc/add_reagent, refill, trans), 600)
else if(target.is_drainable()) //A dispenser. Transfer FROM it TO us.
if (!is_refillable())
to_chat(user, "<span class='warning'>[src]'s tab isn't open!</span>")
return
if(!target.reagents.total_volume)
to_chat(user, "<span class='warning'>[target] is empty.</span>")
return
if(reagents.holder_full())
to_chat(user, "<span class='warning'>[src] is full.</span>")
return
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
to_chat(user, "<span class='notice'>You fill [src] with [trans] units of the contents of [target].</span>")
/obj/item/reagent_containers/food/drinks/attackby(obj/item/I, mob/user, params)
var/hotness = I.get_temperature()
if(hotness && reagents)
reagents.expose_temperature(hotness)
to_chat(user, "<span class='notice'>You heat [name] with [I]!</span>")
..()
/obj/item/reagent_containers/food/drinks/throw_impact(atom/target, datum/thrownthing/throwinfo)
. = ..()
if(!.) //if the bottle wasn't caught
smash(target, throwinfo.thrower, TRUE)
/obj/item/reagent_containers/food/drinks/proc/smash(atom/target, mob/thrower, ranged = FALSE)
if(!isGlass)
return
if(QDELING(src) || !target) //Invalid loc
return
if(bartender_check(target) && ranged)
return
var/obj/item/broken_bottle/B = new (loc)
B.icon_state = icon_state
var/icon/I = new('icons/obj/drinks.dmi', src.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
B.name = "broken [name]"
if(ranged)
var/matrix/M = matrix(B.transform)
M.Turn(rand(-170, 170))
B.transform = M
B.pixel_x = rand(-12, 12)
B.pixel_y = rand(-12, 12)
if(prob(33))
new/obj/item/shard(drop_location())
playsound(src, "shatter", 70, 1)
transfer_fingerprints_to(B)
qdel(src)
////////////////////////////////////////////////////////////////////////////////
/// Drinks. END
////////////////////////////////////////////////////////////////////////////////
/obj/item/reagent_containers/food/drinks/trophy
name = "pewter cup"
desc = "Everyone gets a trophy."
icon_state = "pewter_cup"
w_class = WEIGHT_CLASS_TINY
force = 1
throwforce = 1
amount_per_transfer_from_this = 5
materials = list(MAT_METAL=100)
possible_transfer_amounts = list()
volume = 5
flags_1 = CONDUCT_1
spillable = TRUE
resistance_flags = FIRE_PROOF
isGlass = FALSE
/obj/item/reagent_containers/food/drinks/trophy/gold_cup
name = "gold cup"
desc = "You're winner!"
icon_state = "golden_cup"
w_class = WEIGHT_CLASS_BULKY
force = 14
throwforce = 10
amount_per_transfer_from_this = 20
materials = list(MAT_GOLD=1000)
volume = 150
/obj/item/reagent_containers/food/drinks/trophy/silver_cup
name = "silver cup"
desc = "Best loser!"
icon_state = "silver_cup"
w_class = WEIGHT_CLASS_NORMAL
force = 10
throwforce = 8
amount_per_transfer_from_this = 15
materials = list(MAT_SILVER=800)
volume = 100
/obj/item/reagent_containers/food/drinks/trophy/bronze_cup
name = "bronze cup"
desc = "At least you ranked!"
icon_state = "bronze_cup"
w_class = WEIGHT_CLASS_SMALL
force = 5
throwforce = 4
amount_per_transfer_from_this = 10
materials = list(MAT_METAL=400)
volume = 25
///////////////////////////////////////////////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/reagent_containers/food/drinks/coffee
name = "robust coffee"
desc = "Careful, the beverage you're about to enjoy is extremely hot."
icon_state = "coffee"
list_reagents = list("coffee" = 30)
spillable = TRUE
resistance_flags = FREEZE_PROOF
isGlass = FALSE
//Used by MREs
/obj/item/reagent_containers/food/drinks/coffee/type2
name = "\improper Coffee, instant (type 2)"
desc = "Coffee that's been blow dried into a granulated powder. This packet includes self heating water for your nutritional pleasure."
icon = 'icons/obj/food/containers.dmi'
icon_state = "condi_cornoil"
/obj/item/reagent_containers/food/drinks/ice
name = "ice cup"
desc = "Careful, cold ice, do not chew."
icon_state = "coffee"
list_reagents = list("ice" = 30)
spillable = TRUE
isGlass = FALSE
/obj/item/reagent_containers/food/drinks/mug/ // parent type is literally just so empty mug sprites are a thing
name = "mug"
desc = "A drink served in a classy mug."
icon_state = "tea"
item_state = "coffee"
spillable = TRUE
/obj/item/reagent_containers/food/drinks/mug/on_reagent_change(changetype)
if(reagents.total_volume)
icon_state = "tea"
else
icon_state = "tea_empty"
/obj/item/reagent_containers/food/drinks/mug/tea
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."
list_reagents = list("tea" = 30)
/obj/item/reagent_containers/food/drinks/mug/coco
name = "Dutch hot coco"
desc = "Made in Space South America."
list_reagents = list("hot_coco" = 30, "sugar" = 5)
foodtype = SUGAR
resistance_flags = FREEZE_PROOF
/obj/item/reagent_containers/food/drinks/dry_ramen
name = "cup ramen"
desc = "Just add 10ml of water, self heats! A taste that reminds you of your school years."
icon_state = "ramen"
list_reagents = list("dry_ramen" = 30)
foodtype = GRAIN
isGlass = FALSE
/obj/item/reagent_containers/food/drinks/beer
name = "space beer"
desc = "Beer. In space."
icon_state = "beer"
list_reagents = list("beer" = 30)
foodtype = GRAIN | ALCOHOL
/obj/item/reagent_containers/food/drinks/beer/light
name = "Carp Lite"
desc = "Brewed with \"Pure Ice Asteroid Spring Water\"."
list_reagents = list("light_beer" = 30)
/obj/item/reagent_containers/food/drinks/ale
name = "Magm-Ale"
desc = "A true dorf's drink of choice."
icon_state = "alebottle"
item_state = "beer"
list_reagents = list("ale" = 30)
foodtype = GRAIN | ALCOHOL
/obj/item/reagent_containers/food/drinks/sillycup
name = "paper cup"
desc = "A paper water cup."
icon_state = "water_cup_e"
possible_transfer_amounts = list()
volume = 10
spillable = TRUE
isGlass = FALSE
/obj/item/reagent_containers/food/drinks/sillycup/on_reagent_change(changetype)
if(reagents.total_volume)
icon_state = "water_cup"
else
icon_state = "water_cup_e"
/obj/item/reagent_containers/food/drinks/sillycup/smallcarton
name = "small carton"
desc = "A small carton, intended for holding drinks."
icon_state = "juicebox"
volume = 15 //I figure if you have to craft these it should at least be slightly better than something you can get for free from a watercooler
/obj/item/reagent_containers/food/drinks/sillycup/smallcarton/smash(atom/target, mob/thrower, ranged = FALSE)
if(bartender_check(target) && ranged)
return
var/obj/item/broken_bottle/B = new (loc)
B.icon_state = icon_state
var/icon/I = new('icons/obj/drinks.dmi', src.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
B.name = "broken [name]"
B.force = 0
B.throwforce = 0
B.desc = "A carton with the bottom half burst open. Might give you a papercut."
if(ranged)
var/matrix/M = matrix(B.transform)
M.Turn(rand(-170, 170))
B.transform = M
B.pixel_x = rand(-12, 12)
B.pixel_y = rand(-12, 12)
transfer_fingerprints_to(B)
qdel(src)
/obj/item/reagent_containers/food/drinks/sillycup/smallcarton/on_reagent_change(changetype)
if (reagents.reagent_list.len)
switch(reagents.get_master_reagent_id())
if("orangejuice")
icon_state = "orangebox"
name = "orange juice box"
desc = "A great source of vitamins. Stay healthy!"
foodtype = FRUIT
if("milk")
icon_state = "milkbox"
name = "carton of milk"
desc = "An excellent source of calcium for growing space explorers."
foodtype = DAIRY
if("applejuice")
icon_state = "juicebox"
name = "apple juice box"
desc = "Sweet apple juice. Don't be late for school!"
foodtype = FRUIT
if("grapejuice")
icon_state = "grapebox"
name = "grape juice box"
desc = "Tasty grape juice in a fun little container. Non-alcoholic!"
foodtype = FRUIT
if("chocolate_milk")
icon_state = "chocolatebox"
name = "carton of chocolate milk"
desc = "Milk for cool kids!"
foodtype = SUGAR
if("eggnog")
icon_state = "nog2"
name = "carton of eggnog"
desc = "For enjoying the most wonderful time of the year."
foodtype = MEAT
else
icon_state = "juicebox"
name = "small carton"
desc = "A small carton, intended for holding drinks."
//////////////////////////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/reagent_containers/food/drinks/shaker
name = "shaker"
desc = "A metal shaker to mix drinks in."
icon_state = "shaker"
materials = list(MAT_METAL=1500)
amount_per_transfer_from_this = 10
volume = 100
isGlass = FALSE
/obj/item/reagent_containers/food/drinks/flask
name = "flask"
desc = "Every good spaceman knows it's a good idea to bring along a couple of pints of whiskey wherever they go."
icon_state = "flask"
materials = list(MAT_METAL=250)
volume = 60
isGlass = FALSE
/obj/item/reagent_containers/food/drinks/flask/gold
name = "captain's flask"
desc = "A gold flask belonging to the captain."
icon_state = "flask_gold"
materials = list(MAT_GOLD=500)
/obj/item/reagent_containers/food/drinks/flask/det
name = "detective's flask"
desc = "The detective's only true friend."
icon_state = "detflask"
list_reagents = list("whiskey" = 30)
/obj/item/reagent_containers/food/drinks/britcup
name = "cup"
desc = "A cup with the british flag emblazoned on it."
icon_state = "britcup"
volume = 30
spillable = TRUE
//////////////////////////soda_cans//
//These are in their own group to be used as IED's in /obj/item/grenade/ghettobomb.dm
/obj/item/reagent_containers/food/drinks/soda_cans
name = "soda can"
lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi'
reagent_flags = NONE
spillable = FALSE
isGlass = FALSE
/obj/item/reagent_containers/food/drinks/soda_cans/suicide_act(mob/living/carbon/user)
user.visible_message("<span class='suicide'>[user] is trying to eat \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(user.loc)
crushed_can.icon_state = icon_state
qdel(src)
return BRUTELOSS
/obj/item/reagent_containers/food/drinks/soda_cans/attack(mob/M, mob/user)
if(M == user && !src.reagents.total_volume && user.a_intent == INTENT_HARM && user.zone_selected == BODY_ZONE_HEAD)
user.visible_message("<span class='warning'>[user] crushes the can of [src] on [user.p_their()] forehead!</span>", "<span class='notice'>You crush the can of [src] on your forehead.</span>")
playsound(user.loc,'sound/weapons/pierce.ogg', rand(10,50), 1)
var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(user.loc)
crushed_can.icon_state = icon_state
qdel(src)
..()
/obj/item/reagent_containers/food/drinks/soda_cans/attack_self(mob/user)
if(!is_drainable())
to_chat(user, "You pull back the tab of \the [src] with a satisfying pop.") //Ahhhhhhhh
ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER)
playsound(src, "can_open", 50, 1)
spillable = TRUE
return
return ..()
/obj/item/reagent_containers/food/drinks/soda_cans/cola
name = "Space Cola"
desc = "Cola. in space."
icon_state = "cola"
list_reagents = list("cola" = 30)
foodtype = SUGAR
/obj/item/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"
list_reagents = list("tonic" = 50)
foodtype = ALCOHOL
/obj/item/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"
list_reagents = list("sodawater" = 50)
/obj/item/reagent_containers/food/drinks/soda_cans/lemon_lime
name = "orange soda"
desc = "You wanted ORANGE. It gave you Lemon Lime."
icon_state = "lemon-lime"
list_reagents = list("lemon_lime" = 30)
foodtype = FRUIT
/obj/item/reagent_containers/food/drinks/soda_cans/lemon_lime/Initialize()
. = ..()
name = "lemon-lime soda"
/obj/item/reagent_containers/food/drinks/soda_cans/space_up
name = "Space-Up!"
desc = "Tastes like a hull breach in your mouth."
icon_state = "space-up"
list_reagents = list("space_up" = 30)
foodtype = SUGAR | JUNKFOOD
/obj/item/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"
list_reagents = list("cola" = 15, "orangejuice" = 15)
foodtype = SUGAR | FRUIT | JUNKFOOD
/obj/item/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"
list_reagents = list("spacemountainwind" = 30)
foodtype = SUGAR | JUNKFOOD
/obj/item/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, drunkenness, or even death. Please Drink Responsibly."
icon_state = "thirteen_loko"
list_reagents = list("thirteenloko" = 30)
foodtype = SUGAR | JUNKFOOD
/obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb
name = "Dr. Gibb"
desc = "A delicious mixture of 42 different flavors."
icon_state = "dr_gibb"
list_reagents = list("dr_gibb" = 30)
foodtype = SUGAR | JUNKFOOD
/obj/item/reagent_containers/food/drinks/soda_cans/pwr_game
name = "Pwr Game"
desc = "The only drink with the PWR that true gamers crave."
icon_state = "purple_can"
list_reagents = list("pwr_game" = 30)
/obj/item/reagent_containers/food/drinks/soda_cans/shamblers
name = "Shambler's juice"
desc = "~Shake me up some of that Shambler's Juice!~"
icon_state = "shamblers"
list_reagents = list("shamblers" = 30)
foodtype = SUGAR | JUNKFOOD
/obj/item/reagent_containers/food/drinks/soda_cans/grey_bull
name = "Grey Bull"
desc = "Grey Bull, it gives you gloves!"
icon_state = "energy_drink"
list_reagents = list("grey_bull" = 20)
foodtype = SUGAR | JUNKFOOD
/obj/item/reagent_containers/food/drinks/soda_cans/air
name = "canned air"
desc = "There is no air shortage. Do not drink."
icon_state = "air"
list_reagents = list("nitrogen" = 24, "oxygen" = 6)
@@ -0,0 +1,681 @@
///////////////////////////////////////////////Alchohol bottles! -Agouri //////////////////////////
//Functionally identical to regular drinks. The only difference is that the default bottle size is 100. - Darem
//Bottles now knockdown and break when smashed on people's heads. - Giacom
/obj/item/reagent_containers/food/drinks/bottle
amount_per_transfer_from_this = 10
volume = 100
force = 15
throwforce = 15
item_state = "broken_beer" //Generic held-item sprite until unique ones are made.
lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi'
var/knockdown_duration = 13 //Directly relates to the 'knockdown' duration. Lowered by armor (i.e. helmets)
isGlass = TRUE
foodtype = ALCOHOL
/obj/item/reagent_containers/food/drinks/bottle/smash(mob/living/target, mob/thrower, ranged = FALSE)
//Creates a shattering noise and replaces the bottle with a broken_bottle
if(bartender_check(target) && ranged)
return
var/obj/item/broken_bottle/B = new (loc)
if(!ranged)
thrower.put_in_hands(B)
else
var/matrix/M = matrix(B.transform)
M.Turn(rand(-170, 170))
B.transform = M
B.pixel_x = rand(-12, 12)
B.pixel_y = rand(-12, 12)
B.icon_state = icon_state
var/icon/I = new('icons/obj/drinks.dmi', src.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
if(isGlass)
if(prob(33))
new/obj/item/shard(drop_location())
playsound(src, "shatter", 70, 1)
else
B.force = 0
B.throwforce = 0
B.desc = "A carton with the bottom half burst open. Might give you a papercut."
B.name = "broken [name]"
transfer_fingerprints_to(B)
qdel(src)
/obj/item/reagent_containers/food/drinks/bottle/attack(mob/living/target, mob/living/user)
if(!target)
return
if(user.a_intent != INTENT_HARM || !isGlass)
return ..()
if(HAS_TRAIT(user, TRAIT_PACIFISM))
to_chat(user, "<span class='warning'>You don't want to harm [target]!</span>")
return
var/obj/item/bodypart/affecting = user.zone_selected //Find what the player is aiming at
var/headarmor = 0 // Target's head armor
var/armor_block = min(90, target.run_armor_check(affecting, "melee", null, null,armour_penetration)) // For normal attack damage
//If they have a hat/helmet and the user is targeting their head.
if(affecting == BODY_ZONE_HEAD)
var/obj/item/I = target.get_item_by_slot(SLOT_HEAD)
if(I)
headarmor = I.armor.melee
//Calculate the knockdown duration for the target.
var/armor_duration = (knockdown_duration - headarmor) + force
//Apply the damage!
target.apply_damage(force, BRUTE, affecting, armor_block)
// You are going to knock someone out for longer if they are not wearing a helmet.
var/head_attack_message = ""
if(affecting == BODY_ZONE_HEAD && iscarbon(target))
head_attack_message = " on the head"
//Knockdown the target for the duration that we calculated and divide it by 5.
if(armor_duration)
target.Knockdown(min(armor_duration, 200)) // Never knockdown more than a flash!
//Display an attack message.
if(target != user)
target.visible_message("<span class='danger'>[user] has hit [target][head_attack_message] with a bottle of [src.name]!</span>", \
"<span class='userdanger'>[user] has hit [target][head_attack_message] with a bottle of [src.name]!</span>")
else
user.visible_message("<span class='danger'>[target] hits [target.p_them()]self with a bottle of [src.name][head_attack_message]!</span>", \
"<span class='userdanger'>[target] hits [target.p_them()]self with a bottle of [src.name][head_attack_message]!</span>")
//Attack logs
log_combat(user, target, "attacked", src)
//The reagents in the bottle splash all over the target, thanks for the idea Nodrak
SplashReagents(target)
//Finally, smash the bottle. This kills (del) the bottle.
smash(target, user)
return
//Keeping this here for now, I'll ask if I should keep it here.
/obj/item/broken_bottle
name = "broken bottle"
desc = "A bottle with a sharp broken bottom."
icon = 'icons/obj/drinks.dmi'
icon_state = "broken_bottle"
force = 9
throwforce = 5
throw_speed = 3
throw_range = 5
w_class = WEIGHT_CLASS_TINY
item_state = "beer"
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("stabbed", "slashed", "attacked")
var/icon/broken_outline = icon('icons/obj/drinks.dmi', "broken")
sharpness = IS_SHARP
/obj/item/broken_bottle/Initialize()
. = ..()
AddComponent(/datum/component/butchering, 200, 55)
/obj/item/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"
list_reagents = list("gin" = 100)
/obj/item/reagent_containers/food/drinks/bottle/gin/empty
list_reagents = list("gin" = 0)
/obj/item/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"
list_reagents = list("whiskey" = 100)
/obj/item/reagent_containers/food/drinks/bottle/whiskey/empty
list_reagents = list("whiskey" = 0)
/obj/item/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"
list_reagents = list("vodka" = 100)
/obj/item/reagent_containers/food/drinks/bottle/vodka/empty
list_reagents = list("vodka" = 0)
/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka
name = "Badminka vodka"
desc = "The label's written in Cyrillic. All you can make out is the name and a word that looks vaguely like 'Vodka'."
icon_state = "badminka"
list_reagents = list("vodka" = 100)
/obj/item/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"
list_reagents = list("tequila" = 100)
/obj/item/reagent_containers/food/drinks/bottle/tequila/empty
list_reagents = list("tequila" = 0)
/obj/item/reagent_containers/food/drinks/bottle/bottleofnothing
name = "bottle of nothing"
desc = "A bottle filled with nothing."
icon_state = "bottleofnothing"
list_reagents = list("nothing" = 100)
foodtype = NONE
/obj/item/reagent_containers/food/drinks/bottle/bottleofnothing/empty
list_reagents = list("nothing" = 0)
/obj/item/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"
list_reagents = list("patron" = 100)
/obj/item/reagent_containers/food/drinks/bottle/patron/empty
list_reagents = list("patron" = 0)
/obj/item/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"
list_reagents = list("rum" = 100)
/obj/item/reagent_containers/food/drinks/bottle/rum/empty
list_reagents = list("rum" = 0)
/obj/item/reagent_containers/food/drinks/bottle/holywater
name = "flask of holy water"
desc = "A flask of the chaplain's holy water."
icon_state = "holyflask"
list_reagents = list("holywater" = 100)
foodtype = NONE
/obj/item/reagent_containers/food/drinks/bottle/holywater/hell
desc = "A flask of holy water...it's been sitting in the Necropolis a while though."
list_reagents = list("hell_water" = 100)
/obj/item/reagent_containers/food/drinks/bottle/holyoil
name = "flask of zelus oil"
desc = "A brass flask of Zelus oil, a viscous fluid scenting of brass. Can be thrown to deal damage from afar."
icon_state = "zelusflask"
list_reagents = list("holyoil" = 30)
volume = 30
foodtype = NONE
force = 18
throwforce = 18
knockdown_duration = 18
/obj/item/reagent_containers/food/drinks/bottle/holyoil/empty
list_reagents = list("holyoil" = 0)
/obj/item/reagent_containers/food/drinks/bottle/vermouth
name = "Goldeneye vermouth"
desc = "Sweet, sweet dryness~"
icon_state = "vermouthbottle"
list_reagents = list("vermouth" = 100)
/obj/item/reagent_containers/food/drinks/bottle/vermouth/empty
list_reagents = list("vermouth" = 0)
/obj/item/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"
list_reagents = list("kahlua" = 100)
foodtype = VEGETABLES
/obj/item/reagent_containers/food/drinks/bottle/kahlua/empty
list_reagents = list("kahlua" = 0)
/obj/item/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"
list_reagents = list("goldschlager" = 100)
/obj/item/reagent_containers/food/drinks/bottle/goldschlager/empty
list_reagents = list("goldschlager" = 0)
/obj/item/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"
list_reagents = list("cognac" = 100)
/obj/item/reagent_containers/food/drinks/bottle/cognac/empty
list_reagents = list("cognac" = 0)
/obj/item/reagent_containers/food/drinks/bottle/wine
name = "Doublebeard's bearded special wine"
desc = "A faint aura of unease and asspainery surrounds the bottle."
icon_state = "winebottle"
list_reagents = list("wine" = 100)
foodtype = FRUIT | ALCOHOL
/obj/item/reagent_containers/food/drinks/bottle/wine/empty
list_reagents = list("wine" = 0)
/obj/item/reagent_containers/food/drinks/bottle/absinthe
name = "extra-strong absinthe"
desc = "An strong alcoholic drink brewed and distributed by"
icon_state = "absinthebottle"
list_reagents = list("absinthe" = 100)
/obj/item/reagent_containers/food/drinks/bottle/absinthe/empty
list_reagents = list("absinthe" = 0)
/obj/item/reagent_containers/food/drinks/bottle/absinthe/Initialize()
. = ..()
redact()
/obj/item/reagent_containers/food/drinks/bottle/absinthe/proc/redact()
// There was a large fight in the coderbus about a player reference
// in absinthe. Ergo, this is why the name generation is now so
// complicated. Judge us kindly.
var/shortname = pickweight(
list("T&T" = 1, "A&A" = 1, "Generic" = 1))
var/fullname
switch(shortname)
if("T&T")
fullname = "Teal and Tealer"
if("A&A")
fullname = "Ash and Asher"
if("Generic")
fullname = "Nanotrasen Cheap Imitations"
var/removals = list("\[REDACTED\]", "\[EXPLETIVE DELETED\]",
"\[EXPUNGED\]", "\[INFORMATION ABOVE YOUR SECURITY CLEARANCE\]",
"\[MOVE ALONG CITIZEN\]", "\[NOTHING TO SEE HERE\]")
var/chance = 50
if(prob(chance))
shortname = pick_n_take(removals)
var/list/final_fullname = list()
for(var/word in splittext(fullname, " "))
if(prob(chance))
word = pick_n_take(removals)
final_fullname += word
fullname = jointext(final_fullname, " ")
// Actually finally setting the new name and desc
name = "[shortname] [name]"
desc = "[desc] [fullname] Inc."
/obj/item/reagent_containers/food/drinks/bottle/absinthe/premium
name = "Gwyn's premium absinthe"
desc = "A potent alcoholic beverage, almost makes you forget the ash in your lungs."
icon_state = "absinthepremium"
/obj/item/reagent_containers/food/drinks/bottle/absinthe/premium/redact()
return
/obj/item/reagent_containers/food/drinks/bottle/lizardwine
name = "bottle of lizard wine"
desc = "An alcoholic beverage from Space China, made by infusing lizard tails in ethanol. Inexplicably popular among command staff."
icon_state = "lizardwine"
list_reagents = list("lizardwine" = 100)
foodtype = FRUIT | ALCOHOL
/obj/item/reagent_containers/food/drinks/bottle/hcider
name = "Jian Hard Cider"
desc = "Apple juice for adults."
icon_state = "hcider"
volume = 50
list_reagents = list("hcider" = 50)
/obj/item/reagent_containers/food/drinks/bottle/hcider/empty
list_reagents = list("hcider" = 0)
/obj/item/reagent_containers/food/drinks/bottle/grappa
name = "Phillipes well-aged Grappa"
desc = "Bottle of Grappa."
icon_state = "grappabottle"
list_reagents = list("grappa" = 100)
/obj/item/reagent_containers/food/drinks/bottle/grappa/empty
list_reagents = list("grappa" = 0)
/obj/item/reagent_containers/food/drinks/bottle/sake
name = "Ryo's traditional sake"
desc = "Sweet as can be, and burns like fire going down."
icon_state = "sakebottle"
list_reagents = list("sake" = 100)
/obj/item/reagent_containers/food/drinks/bottle/sake/empty
list_reagents = list("sake" = 0)
/obj/item/reagent_containers/food/drinks/bottle/sake/Initialize()
. = ..()
if(prob(10))
name = "Fluffy Tail Sake"
desc += " On the bottle is a picture of a kitsune with nine touchable tails."
icon_state = "sakebottle_k"
else if(prob(10))
name = "Inubashiri's Home Brew"
desc += " Awoo."
icon_state = "sakebottle_i"
/obj/item/reagent_containers/food/drinks/bottle/fernet
name = "Fernet Bronca"
desc = "A bottle of pure Fernet Bronca, produced in Cordoba Space Station"
icon_state = "fernetbottle"
list_reagents = list("fernet" = 100)
/obj/item/reagent_containers/food/drinks/bottle/fernet/empty
list_reagents = list("fernet" = 0)
/obj/item/reagent_containers/food/drinks/bottle/applejack
name = "Buckin' Bronco's Applejack"
desc = "Kicks like a horse, tastes like an apple!"
icon_state = "applejack_bottle"
list_reagents = list("applejack" = 100)
foodtype = FRUIT
/obj/item/reagent_containers/food/drinks/bottle/applejack/empty
list_reagents = list("applejack" = 0)
/obj/item/reagent_containers/food/drinks/bottle/champagne
name = "Eau d' Dandy Brut Champagne"
desc = "Finely sourced from only the most pretentious French vineyards."
icon_state = "champagne_bottle"
list_reagents = list("champagne" = 100)
/obj/item/reagent_containers/food/drinks/bottle/champagne/empty
list_reagents = list("champagne" = 0)
/obj/item/reagent_containers/food/drinks/bottle/blazaam
name = "Ginbad's Blazaam"
desc = "You feel like you should give the bottle a good rub before opening."
icon_state = "blazaambottle"
list_reagents = list("blazaam" = 100)
/obj/item/reagent_containers/food/drinks/bottle/blazaam/empty
list_reagents = list("blazaam" = 0)
/obj/item/reagent_containers/food/drinks/bottle/trappist
name = "Mont de Requin Trappistes Bleu"
desc = "Brewed in space-Belgium. Fancy!"
icon_state = "trappistbottle"
volume = 50
list_reagents = list("trappist" = 50)
/obj/item/reagent_containers/food/drinks/bottle/trappist/empty
list_reagents = list("trappist" = 0)
//////////////////////////JUICES AND STUFF ///////////////////////
/obj/item/reagent_containers/food/drinks/bottle/orangejuice
name = "orange juice"
desc = "Full of vitamins and deliciousness!"
icon_state = "orangejuice"
item_state = "carton"
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
isGlass = FALSE
list_reagents = list("orangejuice" = 100)
foodtype = FRUIT
/obj/item/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"
item_state = "carton"
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
isGlass = FALSE
list_reagents = list("cream" = 100)
foodtype = DAIRY
/obj/item/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"
item_state = "carton"
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
isGlass = FALSE
list_reagents = list("tomatojuice" = 100)
foodtype = VEGETABLES
/obj/item/reagent_containers/food/drinks/bottle/limejuice
name = "lime juice"
desc = "Sweet-sour goodness."
icon_state = "limejuice"
item_state = "carton"
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
isGlass = FALSE
list_reagents = list("limejuice" = 100)
foodtype = FRUIT
/obj/item/reagent_containers/food/drinks/bottle/menthol
name = "menthol"
desc = "Tastes naturally minty, and imparts a very mild numbing sensation."
icon_state = "mentholbox"
item_state = "carton"
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
isGlass = FALSE
list_reagents = list("menthol" = 100)
/obj/item/reagent_containers/food/drinks/bottle/grenadine
name = "Jester Grenadine"
desc = "Contains 0% real cherries!"
icon_state = "grenadine"
isGlass = TRUE
list_reagents = list("grenadine" = 100)
foodtype = FRUIT
/obj/item/reagent_containers/food/drinks/bottle/grenadine/empty
list_reagents = list("grenadine" = 0)
////////////////////////// MOLOTOV ///////////////////////
/obj/item/reagent_containers/food/drinks/bottle/molotov
name = "molotov cocktail"
desc = "A throwing weapon used to ignite things, typically filled with an accelerant. Recommended highly by rioters and revolutionaries. Light and toss."
icon_state = "vodkabottle"
list_reagents = list()
var/list/accelerants = list( /datum/reagent/consumable/ethanol, /datum/reagent/fuel, /datum/reagent/clf3, /datum/reagent/phlogiston,
/datum/reagent/napalm, /datum/reagent/hellwater, /datum/reagent/toxin/plasma, /datum/reagent/toxin/spore_burning)
var/active = 0
/obj/item/reagent_containers/food/drinks/bottle/molotov/CheckParts(list/parts_list)
..()
var/obj/item/reagent_containers/food/drinks/bottle/B = locate() in contents
if(B)
icon_state = B.icon_state
B.reagents.copy_to(src,100)
if(!B.isGlass)
desc += " You're not sure if making this out of a carton was the brightest idea."
isGlass = FALSE
return
/obj/item/reagent_containers/food/drinks/bottle/molotov/throw_impact(atom/target,datum/thrownthing/throwdata)
var/firestarter = 0
for(var/datum/reagent/R in reagents.reagent_list)
for(var/A in accelerants)
if(istype(R,A))
firestarter = 1
break
if(firestarter && active)
target.fire_act()
new /obj/effect/hotspot(get_turf(target))
..()
/obj/item/reagent_containers/food/drinks/bottle/molotov/attackby(obj/item/I, mob/user, params)
if(I.get_temperature() && !active)
active = 1
var/message = "[ADMIN_LOOKUP(user)] has primed a [name] for detonation at [ADMIN_VERBOSEJMP(user)]."
GLOB.bombers += message
message_admins(message)
log_game("[key_name(user)] has primed a [name] for detonation at [AREACOORD(user)].")
to_chat(user, "<span class='info'>You light [src] on fire.</span>")
add_overlay(GLOB.fire_overlay)
if(!isGlass)
spawn(50)
if(active)
var/counter
var/target = src.loc
for(counter = 0, counter<2, counter++)
if(istype(target, /obj/item/storage))
var/obj/item/storage/S = target
target = S.loc
if(istype(target, /atom))
var/atom/A = target
SplashReagents(A)
A.fire_act()
qdel(src)
/obj/item/reagent_containers/food/drinks/bottle/molotov/attack_self(mob/user)
if(active)
if(!isGlass)
to_chat(user, "<span class='danger'>The flame's spread too far on it!</span>")
return
to_chat(user, "<span class='info'>You snuff out the flame on [src].</span>")
cut_overlay(GLOB.fire_overlay)
active = 0
/obj/item/export/bottle/attack_self(mob/user)
to_chat(user, "<span class='danger'>The seal seems fine. Best to not open it.</span>")
return
/obj/item/export/bottle
name = "Report this please"
desc = "A sealed bottle of alcohol, ready to be exported"
icon = 'icons/obj/drinks.dmi'
force = 0
throwforce = 0
throw_speed = 0
throw_range = 0
w_class = WEIGHT_CLASS_TINY
item_state = "beer"
attack_verb = list("boop", "thunked", "shown")
/obj/item/export/bottle/gin
icon_state = "ginbottle"
name = "Sealed Gin"
/obj/item/export/bottle/wine
icon_state = "winebottle"
name = "Sealed Wine"
/obj/item/export/bottle/whiskey
icon_state = "whiskeybottle"
name = "Sealed Whiskey"
/obj/item/export/bottle/vodka
icon_state = "vodkabottle"
name = "Sealed Vodka"
/obj/item/export/bottle/tequila
icon_state = "tequilabottle"
name = "Sealed Tequila"
/obj/item/export/bottle/patron
icon_state = "patronbottle"
name = "Sealed Patron"
/obj/item/export/bottle/rum
icon_state = "rumbottle"
name = "Sealed Rum"
/obj/item/export/bottle/vermouth
icon_state = "vermouthbottle"
name = "Sealed Vermouth"
/obj/item/export/bottle/kahlua
icon_state = "kahluabottle"
name = "Sealed Kahlua"
/obj/item/export/bottle/goldschlager
icon_state = "goldschlagerbottle"
name = "Sealed Goldschlager"
/obj/item/export/bottle/hcider
icon_state = "hcider"
name = "Sealed Cider"
/obj/item/export/bottle/cognac
icon_state = "cognacbottle"
name = "Sealed Cognac"
/obj/item/export/bottle/absinthe
icon_state = "absinthebottle"
name = "Sealed Unmarked Absinthe"
/obj/item/export/bottle/grappa
icon_state = "grappabottle"
name = "Sealed Grappa"
/obj/item/export/bottle/sake
icon_state = "sakebottle"
name = "Sealed Sake"
/obj/item/export/bottle/fernet
icon_state = "fernetbottle"
name = "Sealed Fernet"
/obj/item/export/bottle/applejack
icon_state = "applejack_bottle"
name = "Sealed Applejack"
/obj/item/export/bottle/champagne
icon_state = "champagne_bottle"
name = "Sealed Champagne"
/obj/item/export/bottle/blazaam
icon_state = "blazaambottle"
name = "Sealed Blazaam"
/obj/item/export/bottle/trappist
icon_state = "trappistbottle"
name = "Sealed Trappist"
/obj/item/export/bottle/grenadine
icon_state = "grenadine"
name = "Sealed Grenadine"
/obj/item/export/bottle/minikeg
name = "Mini-Beer Keg"
icon_state = "keggy"
desc = "A small wooden barrle with metal rings, untapped beer inside."
/obj/item/export/bottle/blooddrop
icon_state = "champagne_selling_bottle"
name = "Blood Drop"
desc = "Large red bottle filled with a mix of wine and other named brands."
/obj/item/export/bottle/slim_gold
name = "Slim Gold "
icon_state = "selling_bottle_alt"
desc = "A gold looking yellow bottle that has a mix of different named brands."
/obj/item/export/bottle/white_bloodmoon
name = "White Bloodmoon"
icon_state = "selling_bottle_basic"
desc = "Rather simple bottle for this kind of drink."
/obj/item/export/bottle/greenroad
name = "Green Road"
icon_state = "selling_bottle"
desc = "Ironic name as the fruit used is from ashy plants."
+362
View File
@@ -0,0 +1,362 @@
/** # Snacks
Items in the "Snacks" subcategory are food items that people actually eat. The key points are that they are created
already filled with reagents and are destroyed when empty. Additionally, they make a "munching" noise when eaten.
Notes by Darem: Food in the "snacks" subtype can hold a maximum of 50 units. Generally speaking, you don't want to go over 40
total for the item because you want to leave space for extra condiments. If you want effect besides healing, add a reagent for
it. Try to stick to existing reagents when possible (so if you want a stronger healing effect, just use omnizine). On use
effect (such as the old officer eating a donut code) requires a unique reagent (unless you can figure out a better way).
The nutriment reagent and bitesize variable replace the old heal_amt and amount variables. Each unit of nutriment is equal to
2 of the old heal_amt variable. Bitesize is the rate at which the reagents are consumed. So if you have 6 nutriment and a
bitesize of 2, then it'll take 3 bites to eat. Unlike the old system, the contained reagents are evenly spread among all
the bites. No more contained reagents = no more bites.
Here is an example of the new formatting for anyone who wants to add more food items.
```
/obj/item/reagent_containers/food/snacks/xenoburger //Identification path for the object.
name = "Xenoburger" //Name that displays in the UI.
desc = "Smells caustic. Tastes like heresy." //Duh
icon_state = "xburger" //Refers to an icon in food.dmi
/obj/item/reagent_containers/food/snacks/xenoburger/Initialize() //Don't mess with this. | nO I WILL MESS WITH THIS
. = ..() //Same here.
reagents.add_reagent("xenomicrobes", 10) //This is what is in the food item. you may copy/paste
reagents.add_reagent("nutriment", 2) //this line of code for all the contents.
bitesize = 3 //This is the amount each bite consumes.
```
All foods are distributed among various categories. Use common sense.
*/
/obj/item/reagent_containers/food/snacks
name = "snack"
desc = "Yummy."
icon = 'icons/obj/food/food.dmi'
icon_state = null
lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi'
obj_flags = UNIQUE_RENAME
grind_results = list() //To let them be ground up to transfer their reagents
var/bitesize = 2
var/bitecount = 0
var/trash = null
var/slice_path // for sliceable food. path of the item resulting from the slicing
var/slices_num
var/eatverb
var/dried_type = null
var/dry = 0
var/cooked_type = null //for microwave cooking. path of the resulting item after microwaving
var/filling_color = "#FFFFFF" //color to use when added to custom food.
var/custom_food_type = null //for food customizing. path of the custom food to create
var/junkiness = 0 //for junk food. used to lower human satiety.
var/list/bonus_reagents //the amount of reagents (usually nutriment and vitamin) added to crafted/cooked snacks, on top of the ingredients reagents.
var/customfoodfilling = 1 // whether it can be used as filling in custom food
var/list/tastes // for example list("crisps" = 2, "salt" = 1)
//Placeholder for effect that trigger on eating that aren't tied to reagents.
/obj/item/reagent_containers/food/snacks/add_initial_reagents()
if(tastes && tastes.len)
if(list_reagents)
for(var/rid in list_reagents)
var/amount = list_reagents[rid]
if(rid == "nutriment" || rid == "vitamin")
reagents.add_reagent(rid, amount, tastes.Copy())
else
reagents.add_reagent(rid, amount)
else
..()
/obj/item/reagent_containers/food/snacks/proc/On_Consume(mob/living/eater)
if(!eater)
return
if(!reagents.total_volume)
var/obj/item/trash_item = generate_trash(eater)
qdel(src)
eater.put_in_hands(trash_item)
/obj/item/reagent_containers/food/snacks/attack_self(mob/user)
return
/obj/item/reagent_containers/food/snacks/attack(mob/living/M, mob/living/user, def_zone)
if(user.a_intent == INTENT_HARM)
return ..()
if(!eatverb)
eatverb = pick("bite","chew","nibble","gnaw","gobble","chomp")
if(!reagents.total_volume) //Shouldn't be needed but it checks to see if it has anything left in it.
to_chat(user, "<span class='notice'>None of [src] left, oh no!</span>")
qdel(src)
return 0
if(iscarbon(M))
if(!canconsume(M, user))
return 0
var/fullness = M.nutrition + 10
for(var/datum/reagent/consumable/C in M.reagents.reagent_list) //we add the nutrition value of what we're currently digesting
fullness += C.nutriment_factor * C.volume / C.metabolization_rate
if(M == user) //If you're eating it yourself.
if(junkiness && M.satiety < -150 && M.nutrition > NUTRITION_LEVEL_STARVING + 50 )
to_chat(M, "<span class='notice'>You don't feel like eating any more junk food at the moment.</span>")
return 0
else if(fullness <= 50)
user.visible_message("<span class='notice'>[user] hungrily takes a [eatverb] from \the [src], gobbling it down!</span>", "<span class='notice'>You hungrily take a [eatverb] from \the [src], gobbling it down!</span>")
else if(fullness > 50 && fullness < 150)
user.visible_message("<span class='notice'>[user] hungrily takes a [eatverb] from \the [src].</span>", "<span class='notice'>You hungrily take a [eatverb] from \the [src].</span>")
else if(fullness > 150 && fullness < 500)
user.visible_message("<span class='notice'>[user] takes a [eatverb] from \the [src].</span>", "<span class='notice'>You take a [eatverb] from \the [src].</span>")
else if(fullness > 500 && fullness < 600)
user.visible_message("<span class='notice'>[user] unwillingly takes a [eatverb] of a bit of \the [src].</span>", "<span class='warning'>You unwillingly take a [eatverb] of a bit of \the [src].</span>")
else if(fullness > (600 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat
user.visible_message("<span class='warning'>[user] cannot force any more of \the [src] to go down [user.p_their()] throat!</span>", "<span class='danger'>You cannot force any more of \the [src] to go down your throat!</span>")
return 0
if(HAS_TRAIT(M, TRAIT_VORACIOUS))
M.changeNext_move(CLICK_CD_MELEE * 0.5) //nom nom nom
else
if(!isbrain(M)) //If you're feeding it to someone else.
if(fullness <= (600 * (1 + M.overeatduration / 1000)))
M.visible_message("<span class='danger'>[user] attempts to feed [M] [src].</span>", \
"<span class='userdanger'>[user] attempts to feed [M] [src].</span>")
else
M.visible_message("<span class='warning'>[user] cannot force any more of [src] down [M]'s throat!</span>", \
"<span class='warning'>[user] cannot force any more of [src] down [M]'s throat!</span>")
return 0
if(!do_mob(user, M))
return
log_combat(user, M, "fed", reagents.log_list())
M.visible_message("<span class='danger'>[user] forces [M] to eat [src].</span>", \
"<span class='userdanger'>[user] forces [M] to eat [src].</span>")
else
to_chat(user, "<span class='warning'>[M] doesn't seem to have a mouth!</span>")
return
if(reagents) //Handle ingestion of the reagent.
if(M.satiety > -200)
M.satiety -= junkiness
playsound(M.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
if(reagents.total_volume)
SEND_SIGNAL(src, COMSIG_FOOD_EATEN, M, user)
var/fraction = min(bitesize / reagents.total_volume, 1)
reagents.reaction(M, INGEST, fraction)
reagents.trans_to(M, bitesize)
bitecount++
On_Consume(M)
checkLiked(fraction, M)
return 1
return 0
/obj/item/reagent_containers/food/snacks/examine(mob/user)
..()
if(bitecount == 0)
return
else if(bitecount == 1)
to_chat(user, "[src] was bitten by someone!")
else if(bitecount <= 3)
to_chat(user, "[src] was bitten [bitecount] times!")
else
to_chat(user, "[src] was bitten multiple times!")
/obj/item/reagent_containers/food/snacks/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/storage))
..() // -> item/attackby()
return 0
if(istype(W, /obj/item/reagent_containers/food/snacks))
var/obj/item/reagent_containers/food/snacks/S = W
if(custom_food_type && ispath(custom_food_type))
if(S.w_class > WEIGHT_CLASS_SMALL)
to_chat(user, "<span class='warning'>[S] is too big for [src]!</span>")
return 0
if(!S.customfoodfilling || istype(W, /obj/item/reagent_containers/food/snacks/customizable) || istype(W, /obj/item/reagent_containers/food/snacks/pizzaslice/custom) || istype(W, /obj/item/reagent_containers/food/snacks/cakeslice/custom))
to_chat(user, "<span class='warning'>[src] can't be filled with [S]!</span>")
return 0
if(contents.len >= 20)
to_chat(user, "<span class='warning'>You can't add more ingredients to [src]!</span>")
return 0
var/obj/item/reagent_containers/food/snacks/customizable/C = new custom_food_type(get_turf(src))
C.initialize_custom_food(src, S, user)
return 0
var/sharp = W.get_sharpness()
if(sharp)
if(slice(sharp, W, user))
return 1
else
..()
//Called when you finish tablecrafting a snack.
/obj/item/reagent_containers/food/snacks/CheckParts(list/parts_list, datum/crafting_recipe/food/R)
..()
reagents.clear_reagents()
for(var/obj/item/reagent_containers/RC in contents)
RC.reagents.trans_to(reagents, RC.reagents.maximum_volume)
if(istype(R))
contents_loop:
for(var/A in contents)
for(var/B in R.real_parts)
if(istype(A, B))
continue contents_loop
qdel(A)
SSblackbox.record_feedback("tally", "food_made", 1, type)
if(bonus_reagents && bonus_reagents.len)
for(var/r_id in bonus_reagents)
var/amount = bonus_reagents[r_id]
if(r_id == "nutriment" || r_id == "vitamin")
reagents.add_reagent(r_id, amount, tastes)
else
reagents.add_reagent(r_id, amount)
/obj/item/reagent_containers/food/snacks/proc/slice(accuracy, obj/item/W, mob/user)
if((slices_num <= 0 || !slices_num) || !slice_path) //is the food sliceable?
return FALSE
if ( \
!isturf(src.loc) || \
!(locate(/obj/structure/table) in src.loc) && \
!(locate(/obj/structure/table/optable) in src.loc) && \
!(locate(/obj/item/storage/bag/tray) in src.loc) \
)
to_chat(user, "<span class='warning'>You cannot slice [src] here! You need a table or at least a tray.</span>")
return FALSE
var/slices_lost = 0
if (accuracy >= IS_SHARP_ACCURATE)
user.visible_message( \
"[user] slices [src].", \
"<span class='notice'>You slice [src].</span>" \
)
else
user.visible_message( \
"[user] inaccurately slices [src] with [W]!", \
"<span class='notice'>You inaccurately slice [src] with your [W]!</span>" \
)
slices_lost = rand(1,min(1,round(slices_num/2)))
var/reagents_per_slice = reagents.total_volume/slices_num
for(var/i=1 to (slices_num-slices_lost))
var/obj/item/reagent_containers/food/snacks/slice = new slice_path (loc)
initialize_slice(slice, reagents_per_slice)
qdel(src)
return TRUE
/obj/item/reagent_containers/food/snacks/proc/initialize_slice(obj/item/reagent_containers/food/snacks/slice, reagents_per_slice)
slice.create_reagents(slice.volume)
reagents.trans_to(slice,reagents_per_slice)
if(name != initial(name))
slice.name = "slice of [name]"
if(desc != initial(desc))
slice.desc = "[desc]"
if(foodtype != initial(foodtype))
slice.foodtype = foodtype //if something happens that overrode our food type, make sure the slice carries that over
/obj/item/reagent_containers/food/snacks/proc/generate_trash(atom/location)
if(trash)
if(ispath(trash, /obj/item))
. = new trash(location)
trash = null
return
else if(isitem(trash))
var/obj/item/trash_item = trash
trash_item.forceMove(location)
. = trash
trash = null
return
/obj/item/reagent_containers/food/snacks/proc/update_overlays(obj/item/reagent_containers/food/snacks/S)
cut_overlays()
var/mutable_appearance/filling = mutable_appearance(icon, "[initial(icon_state)]_filling")
if(S.filling_color == "#FFFFFF")
filling.color = pick("#FF0000","#0000FF","#008000","#FFFF00")
else
filling.color = S.filling_color
add_overlay(filling)
// initialize_cooked_food() is called when microwaving the food
/obj/item/reagent_containers/food/snacks/proc/initialize_cooked_food(obj/item/reagent_containers/food/snacks/S, cooking_efficiency = 1)
S.create_reagents(S.volume)
if(reagents)
reagents.trans_to(S, reagents.total_volume)
if(S.bonus_reagents && S.bonus_reagents.len)
for(var/r_id in S.bonus_reagents)
var/amount = S.bonus_reagents[r_id] * cooking_efficiency
if(r_id == "nutriment" || r_id == "vitamin")
S.reagents.add_reagent(r_id, amount, tastes)
else
S.reagents.add_reagent(r_id, amount)
/obj/item/reagent_containers/food/snacks/microwave_act(obj/machinery/microwave/M)
var/turf/T = get_turf(src)
var/obj/item/result
if(cooked_type)
result = new cooked_type(T)
if(istype(M))
initialize_cooked_food(result, M.efficiency)
else
initialize_cooked_food(result, 1)
SSblackbox.record_feedback("tally", "food_made", 1, result.type)
else
result = new /obj/item/reagent_containers/food/snacks/badrecipe(T)
if(istype(M) && M.dirty < 100)
M.dirty++
qdel(src)
return result
/obj/item/reagent_containers/food/snacks/Destroy()
if(contents)
for(var/atom/movable/something in contents)
something.forceMove(drop_location())
return ..()
/obj/item/reagent_containers/food/snacks/attack_animal(mob/M)
if(isanimal(M))
if(iscorgi(M))
var/mob/living/L = M
if(bitecount == 0 || prob(50))
M.emote("me", 1, "nibbles away at \the [src]")
bitecount++
L.taste(reagents) // why should carbons get all the fun?
if(bitecount >= 5)
var/sattisfaction_text = pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where \the [src] was")
if(sattisfaction_text)
M.emote("me", 1, "[sattisfaction_text]")
qdel(src)
// //////////////////////////////////////////////Store////////////////////////////////////////
/// All the food items that can store an item inside itself, like bread or cake.
/obj/item/reagent_containers/food/snacks/store
w_class = WEIGHT_CLASS_NORMAL
var/stored_item = 0
/obj/item/reagent_containers/food/snacks/store/attackby(obj/item/W, mob/user, params)
..()
if(W.w_class <= WEIGHT_CLASS_SMALL & !istype(W, /obj/item/reagent_containers/food/snacks)) //can't slip snacks inside, they're used for custom foods.
if(W.get_sharpness())
return 0
if(stored_item)
return 0
if(!iscarbon(user))
return 0
if(contents.len >= 20)
to_chat(user, "<span class='warning'>[src] is full.</span>")
return 0
to_chat(user, "<span class='notice'>You slip [W] inside [src].</span>")
user.transferItemToLoc(W, src)
add_fingerprint(user)
contents += W
stored_item = 1
return 1 // no afterattack here
/obj/item/reagent_containers/food/snacks/MouseDrop(atom/over)
var/turf/T = get_turf(src)
var/obj/structure/table/TB = locate(/obj/structure/table) in T
if(TB)
TB.MouseDrop(over)
else
return ..()
@@ -0,0 +1,421 @@
/obj/item/reagent_containers/food/snacks/meat
var/subjectname = ""
var/subjectjob = null
/obj/item/reagent_containers/food/snacks/meat/slab
name = "meat"
desc = "A slab of meat."
icon_state = "meat"
dried_type = /obj/item/reagent_containers/food/snacks/sosjerky/healthy
bitesize = 3
list_reagents = list("nutriment" = 3, "cooking_oil" = 2) //Meat has fats that a food processor can process into cooking oil
cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/plain
slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain
slices_num = 3
filling_color = "#FF0000"
tastes = list("meat" = 1)
foodtype = MEAT | RAW
/obj/item/reagent_containers/food/snacks/meat/slab/initialize_slice(obj/item/reagent_containers/food/snacks/meat/rawcutlet/slice, reagents_per_slice)
..()
var/mutable_appearance/filling = mutable_appearance(icon, "rawcutlet_coloration")
filling.color = filling_color
slice.add_overlay(filling)
slice.filling_color = filling_color
slice.name = "raw [name] cutlet"
slice.meat_type = name
/obj/item/reagent_containers/food/snacks/meat/slab/initialize_cooked_food(obj/item/reagent_containers/food/snacks/S, cooking_efficiency)
..()
S.name = "[name] steak"
///////////////////////////////////// HUMAN MEATS //////////////////////////////////////////////////////
/obj/item/reagent_containers/food/snacks/meat/slab/human
name = "meat"
cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/plain/human
slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain/human
tastes = list("tender meat" = 1)
foodtype = MEAT | RAW | GROSS
/obj/item/reagent_containers/food/snacks/meat/slab/human/initialize_slice(obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain/human/slice, reagents_per_slice)
..()
slice.subjectname = subjectname
slice.subjectjob = subjectjob
if(subjectname)
slice.name = "raw [subjectname] cutlet"
else if(subjectjob)
slice.name = "raw [subjectjob] cutlet"
/obj/item/reagent_containers/food/snacks/meat/slab/human/initialize_cooked_food(obj/item/reagent_containers/food/snacks/meat/S, cooking_efficiency)
..()
S.subjectname = subjectname
S.subjectjob = subjectjob
if(subjectname)
S.name = "[subjectname] meatsteak"
else if(subjectjob)
S.name = "[subjectjob] meatsteak"
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime
icon_state = "slimemeat"
desc = "Because jello wasn't offensive enough to vegans."
list_reagents = list("nutriment" = 3, "slimejelly" = 3)
filling_color = "#00FFFF"
tastes = list("slime" = 1, "jelly" = 1)
foodtype = MEAT | RAW | TOXIC
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/golem
icon_state = "golemmeat"
desc = "Edible rocks, welcome to the future."
list_reagents = list("nutriment" = 3, "iron" = 3)
filling_color = "#A9A9A9"
tastes = list("rock" = 1)
foodtype = MEAT | RAW | GROSS
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/golem/adamantine
icon_state = "agolemmeat"
desc = "From the slime pen to the rune to the kitchen, science."
filling_color = "#66CDAA"
foodtype = MEAT | RAW | GROSS
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard
icon_state = "lizardmeat"
desc = "Delicious dino damage."
filling_color = "#6B8E23"
tastes = list("meat" = 4, "scales" = 1)
foodtype = MEAT | RAW
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/plant
icon_state = "plantmeat"
desc = "All the joys of healthy eating with all the fun of cannibalism."
filling_color = "#E9967A"
tastes = list("salad" = 1, "wood" = 1)
foodtype = VEGETABLES
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/shadow
icon_state = "shadowmeat"
desc = "Ow, the edge."
filling_color = "#202020"
tastes = list("darkness" = 1, "meat" = 1)
foodtype = MEAT | RAW
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/fly
icon_state = "flymeat"
desc = "Nothing says tasty like maggot filled radioactive mutant flesh."
list_reagents = list("nutriment" = 3, "uranium" = 3)
tastes = list("maggots" = 1, "the inside of a reactor" = 1)
foodtype = MEAT | RAW | GROSS
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/insect
icon_state = "mothmeat"
desc = "Unpleasantly powdery and dry. Kind of pretty, though."
filling_color = "#BF896B"
tastes = list("dust" = 1, "powder" = 1, "meat" = 2)
foodtype = MEAT | RAW
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton
name = "bone"
icon_state = "skeletonmeat"
desc = "There's a point where this needs to stop, and clearly we have passed it."
filling_color = "#F0F0F0"
tastes = list("bone" = 1)
slice_path = null //can't slice a bone into cutlets
foodtype = GROSS
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie
name = " meat (rotten)"
icon_state = "rottenmeat"
desc = "Halfway to becoming fertilizer for your garden."
filling_color = "#6B8E23"
tastes = list("brains" = 1, "meat" = 1)
foodtype = RAW | MEAT | TOXIC
////////////////////////////////////// OTHER MEATS ////////////////////////////////////////////////////////
/obj/item/reagent_containers/food/snacks/meat/slab/synthmeat
name = "synthmeat"
desc = "A synthetic slab of meat."
foodtype = RAW | MEAT //hurr durr chemicals we're harmed in the production of this meat thus its non-vegan.
/obj/item/reagent_containers/food/snacks/meat/slab/meatproduct
name = "meat product"
desc = "A slab of station reclaimed and chemically processed meat product."
foodtype = RAW | MEAT
/obj/item/reagent_containers/food/snacks/meat/slab/monkey
name = "monkey meat"
foodtype = RAW | MEAT
/obj/item/reagent_containers/food/snacks/meat/slab/corgi
name = "corgi meat"
desc = "Tastes like... well you know..."
tastes = list("meat" = 4, "a fondness for wearing hats" = 1)
foodtype = RAW | MEAT | GROSS
/obj/item/reagent_containers/food/snacks/meat/slab/pug
name = "pug meat"
desc = "Tastes like... well you know..."
foodtype = RAW | MEAT | GROSS
/obj/item/reagent_containers/food/snacks/meat/slab/killertomato
name = "killer tomato meat"
desc = "A slice from a huge tomato."
icon_state = "tomatomeat"
list_reagents = list("nutriment" = 2)
filling_color = "#FF0000"
cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/killertomato
slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/killertomato
tastes = list("tomato" = 1)
foodtype = FRUIT
/obj/item/reagent_containers/food/snacks/meat/slab/bear
name = "bear meat"
desc = "A very manly slab of meat."
icon_state = "bearmeat"
list_reagents = list("nutriment" = 12, "morphine" = 5, "vitamin" = 2, "cooking_oil" = 6)
filling_color = "#FFB6C1"
cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/bear
slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/bear
tastes = list("meat" = 1, "salmon" = 1)
foodtype = RAW | MEAT
/obj/item/reagent_containers/food/snacks/meat/slab/xeno
name = "xeno meat"
desc = "A slab of meat."
icon_state = "xenomeat"
list_reagents = list("nutriment" = 3, "vitamin" = 1)
bitesize = 4
filling_color = "#32CD32"
cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/xeno
slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/xeno
tastes = list("meat" = 1, "acid" = 1)
foodtype = RAW | MEAT
/obj/item/reagent_containers/food/snacks/meat/slab/spider
name = "spider meat"
desc = "A slab of spider meat."
icon_state = "spidermeat"
list_reagents = list("nutriment" = 3, "toxin" = 3, "vitamin" = 1)
filling_color = "#7CFC00"
cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/spider
slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/spider
tastes = list("cobwebs" = 1)
foodtype = RAW | MEAT | TOXIC
/obj/item/reagent_containers/food/snacks/meat/slab/goliath
name = "goliath meat"
desc = "A slab of goliath meat. It's not very edible now, but it cooks great in lava."
list_reagents = list("nutriment" = 3, "toxin" = 5, "cooking_oil" = 3)
icon_state = "goliathmeat"
tastes = list("meat" = 1)
foodtype = RAW | MEAT | TOXIC
/obj/item/reagent_containers/food/snacks/meat/slab/goliath/burn()
visible_message("[src] finishes cooking!")
new /obj/item/reagent_containers/food/snacks/meat/steak/goliath(loc)
qdel(src)
/obj/item/reagent_containers/food/snacks/meat/slab/meatwheat
name = "meatwheat clump"
desc = "This doesn't look like meat, but your standards aren't <i>that</i> high to begin with."
list_reagents = list("nutriment" = 3, "vitamin" = 2, "blood" = 5, "cooking_oil" = 1)
filling_color = rgb(150, 0, 0)
icon_state = "meatwheat_clump"
bitesize = 4
tastes = list("meat" = 1, "wheat" = 1)
foodtype = GRAIN
/obj/item/reagent_containers/food/snacks/meat/slab/gorilla
name = "gorilla meat"
desc = "Much meatier than monkey meat."
list_reagents = list("nutriment" = 5, "vitamin" = 1, "cooking_oil" = 5) //Plenty of fat!
/obj/item/reagent_containers/food/snacks/meat/rawbacon
name = "raw piece of bacon"
desc = "A raw piece of bacon."
icon_state = "bacon"
cooked_type = /obj/item/reagent_containers/food/snacks/meat/bacon
bitesize = 2
list_reagents = list("nutriment" = 1, "cooking_oil" = 3)
filling_color = "#B22222"
tastes = list("bacon" = 1)
foodtype = RAW | MEAT
/obj/item/reagent_containers/food/snacks/meat/bacon
name = "piece of bacon"
desc = "A delicious piece of bacon."
icon_state = "baconcooked"
list_reagents = list("nutriment" = 2)
bonus_reagents = list("nutriment" = 1, "vitamin" = 1, "cooking_oil" = 2)
filling_color = "#854817"
tastes = list("bacon" = 1)
foodtype = MEAT
/obj/item/reagent_containers/food/snacks/meat/slab/gondola
name = "gondola meat"
desc = "According to legends of old, consuming raw gondola flesh grants one inner peace."
list_reagents = list("nutriment" = 3, "tranquility" = 5, "cooking_oil" = 3)
tastes = list("meat" = 4, "tranquility" = 1)
filling_color = "#9A6750"
cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/gondola
slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/gondola
foodtype = RAW | MEAT
////////////////////////////////////// MEAT STEAKS ///////////////////////////////////////////////////////////
/obj/item/reagent_containers/food/snacks/meat/steak
name = "steak"
desc = "A piece of hot spicy meat."
icon_state = "meatsteak"
list_reagents = list("nutriment" = 5)
bonus_reagents = list("nutriment" = 2, "vitamin" = 1)
trash = /obj/item/trash/plate
filling_color = "#B22222"
foodtype = MEAT
tastes = list("meat" = 1)
/obj/item/reagent_containers/food/snacks/meat/steak/plain
foodtype = MEAT
/obj/item/reagent_containers/food/snacks/meat/steak/plain/human
tastes = list("tender meat" = 1)
foodtype = MEAT | GROSS
/obj/item/reagent_containers/food/snacks/meat/steak/killertomato
name = "killer tomato steak"
tastes = list("tomato" = 1)
foodtype = FRUIT
/obj/item/reagent_containers/food/snacks/meat/steak/bear
name = "bear steak"
tastes = list("meat" = 1, "salmon" = 1)
/obj/item/reagent_containers/food/snacks/meat/steak/xeno
name = "xeno steak"
tastes = list("meat" = 1, "acid" = 1)
/obj/item/reagent_containers/food/snacks/meat/steak/spider
name = "spider steak"
tastes = list("cobwebs" = 1)
/obj/item/reagent_containers/food/snacks/meat/steak/goliath
name = "goliath steak"
desc = "A delicious, lava cooked steak."
resistance_flags = LAVA_PROOF | FIRE_PROOF
icon_state = "goliathsteak"
trash = null
tastes = list("meat" = 1, "rock" = 1)
foodtype = MEAT
/obj/item/reagent_containers/food/snacks/meat/steak/gondola
name = "gondola steak"
tastes = list("meat" = 1, "tranquility" = 1)
//////////////////////////////// MEAT CUTLETS ///////////////////////////////////////////////////////
//Raw cutlets
/obj/item/reagent_containers/food/snacks/meat/rawcutlet
name = "raw cutlet"
desc = "A raw meat cutlet."
icon_state = "rawcutlet"
cooked_type = /obj/item/reagent_containers/food/snacks/meat/cutlet/plain
bitesize = 2
list_reagents = list("nutriment" = 1)
filling_color = "#B22222"
tastes = list("meat" = 1)
var/meat_type = "meat"
foodtype = MEAT | RAW
/obj/item/reagent_containers/food/snacks/meat/rawcutlet/initialize_cooked_food(obj/item/reagent_containers/food/snacks/S, cooking_efficiency)
..()
S.name = "[meat_type] cutlet"
/obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain
foodtype = MEAT
/obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain/human
cooked_type = /obj/item/reagent_containers/food/snacks/meat/cutlet/plain/human
tastes = list("tender meat" = 1)
foodtype = MEAT | RAW | GROSS
/obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain/human/initialize_cooked_food(obj/item/reagent_containers/food/snacks/S, cooking_efficiency)
..()
if(subjectname)
S.name = "[subjectname] [initial(S.name)]"
else if(subjectjob)
S.name = "[subjectjob] [initial(S.name)]"
/obj/item/reagent_containers/food/snacks/meat/rawcutlet/killertomato
name = "raw killer tomato cutlet"
cooked_type = /obj/item/reagent_containers/food/snacks/meat/cutlet/killertomato
tastes = list("tomato" = 1)
foodtype = FRUIT
/obj/item/reagent_containers/food/snacks/meat/rawcutlet/bear
name = "raw bear cutlet"
cooked_type = /obj/item/reagent_containers/food/snacks/meat/cutlet/bear
tastes = list("meat" = 1, "salmon" = 1)
/obj/item/reagent_containers/food/snacks/meat/rawcutlet/xeno
name = "raw xeno cutlet"
cooked_type = /obj/item/reagent_containers/food/snacks/meat/cutlet/xeno
tastes = list("meat" = 1, "acid" = 1)
/obj/item/reagent_containers/food/snacks/meat/rawcutlet/spider
name = "raw spider cutlet"
cooked_type = /obj/item/reagent_containers/food/snacks/meat/cutlet/spider
tastes = list("cobwebs" = 1)
/obj/item/reagent_containers/food/snacks/meat/rawcutlet/gondola
name = "raw gondola cutlet"
cooked_type = /obj/item/reagent_containers/food/snacks/meat/cutlet/gondola
tastes = list("meat" = 1, "tranquility" = 1)
//Cooked cutlets
/obj/item/reagent_containers/food/snacks/meat/cutlet
name = "cutlet"
desc = "A cooked meat cutlet."
icon_state = "cutlet"
bitesize = 2
list_reagents = list("nutriment" = 2)
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
filling_color = "#B22222"
tastes = list("meat" = 1)
foodtype = MEAT
/obj/item/reagent_containers/food/snacks/meat/cutlet/plain
/obj/item/reagent_containers/food/snacks/meat/cutlet/plain/human
tastes = list("tender meat" = 1)
foodtype = MEAT | GROSS
/obj/item/reagent_containers/food/snacks/meat/cutlet/killertomato
name = "killer tomato cutlet"
tastes = list("tomato" = 1)
foodtype = FRUIT
/obj/item/reagent_containers/food/snacks/meat/cutlet/bear
name = "bear cutlet"
tastes = list("meat" = 1, "salmon" = 1)
/obj/item/reagent_containers/food/snacks/meat/cutlet/xeno
name = "xeno cutlet"
tastes = list("meat" = 1, "acid" = 1)
/obj/item/reagent_containers/food/snacks/meat/cutlet/spider
name = "spider cutlet"
tastes = list("cobwebs" = 1)
/obj/item/reagent_containers/food/snacks/meat/cutlet/gondola
name = "gondola cutlet"
tastes = list("meat" = 1, "tranquility" = 1)
@@ -0,0 +1,381 @@
/obj/item/reagent_containers/food/snacks/store/cake
icon = 'icons/obj/food/piecake.dmi'
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/plain
slices_num = 5
bitesize = 3
volume = 80
list_reagents = list("nutriment" = 20, "vitamin" = 5)
tastes = list("cake" = 1)
foodtype = GRAIN | DAIRY
/obj/item/reagent_containers/food/snacks/cakeslice
icon = 'icons/obj/food/piecake.dmi'
trash = /obj/item/trash/plate
list_reagents = list("nutriment" = 4, "vitamin" = 1)
customfoodfilling = 0 //to avoid infinite cake-ception
tastes = list("cake" = 1)
foodtype = GRAIN | DAIRY
/obj/item/reagent_containers/food/snacks/store/cake/plain
name = "plain cake"
desc = "A plain cake, not a lie."
icon_state = "plaincake"
custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/cake
bonus_reagents = list("nutriment" = 10, "vitamin" = 2)
tastes = list("sweetness" = 2,"cake" = 5)
foodtype = GRAIN | DAIRY | SUGAR
/obj/item/reagent_containers/food/snacks/cakeslice/plain
name = "plain cake slice"
desc = "Just a slice of cake, it is enough for everyone."
icon_state = "plaincake_slice"
filling_color = "#FFD700"
customfoodfilling = 1
tastes = list("sweetness" = 2,"cake" = 5)
foodtype = GRAIN | DAIRY | SUGAR
/obj/item/reagent_containers/food/snacks/store/cake/carrot
name = "carrot cake"
desc = "A favorite desert of a certain wascally wabbit. Not a lie."
icon_state = "carrotcake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/carrot
slices_num = 5
bonus_reagents = list("nutriment" = 3, "oculine" = 5, "vitamin" = 10)
list_reagents = list("nutriment" = 20, "oculine" = 10, "vitamin" = 5)
tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1)
foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR
/obj/item/reagent_containers/food/snacks/cakeslice/carrot
name = "carrot cake slice"
desc = "Carrotty slice of Carrot Cake, carrots are good for your eyes! Also not a lie."
icon_state = "carrotcake_slice"
filling_color = "#FFA500"
list_reagents = list("nutriment" = 4, "oculine" = 2, "vitamin" = 1)
tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1)
foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR
/obj/item/reagent_containers/food/snacks/store/cake/brain
name = "brain cake"
desc = "A squishy cake-thing."
icon_state = "braincake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/brain
slices_num = 5
bonus_reagents = list("nutriment" = 5, "mannitol" = 10, "vitamin" = 10)
list_reagents = list("nutriment" = 20, "mannitol" = 10, "vitamin" = 5)
tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1)
foodtype = GRAIN | DAIRY | MEAT | GROSS | SUGAR
/obj/item/reagent_containers/food/snacks/cakeslice/brain
name = "brain cake slice"
desc = "Lemme tell you something about prions. THEY'RE DELICIOUS."
icon_state = "braincakeslice"
filling_color = "#FF69B4"
list_reagents = list("nutriment" = 4, "mannitol" = 2, "vitamin" = 1)
tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1)
foodtype = GRAIN | DAIRY | MEAT | GROSS | SUGAR
/obj/item/reagent_containers/food/snacks/store/cake/cheese
name = "cheese cake"
desc = "DANGEROUSLY cheesy."
icon_state = "cheesecake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/cheese
slices_num = 5
bonus_reagents = list("vitamin" = 10)
tastes = list("cake" = 4, "cream cheese" = 3)
foodtype = GRAIN | DAIRY
/obj/item/reagent_containers/food/snacks/cakeslice/cheese
name = "cheese cake slice"
desc = "Slice of pure cheestisfaction."
icon_state = "cheesecake_slice"
filling_color = "#FFFACD"
tastes = list("cake" = 4, "cream cheese" = 3)
foodtype = GRAIN | DAIRY
/obj/item/reagent_containers/food/snacks/store/cake/orange
name = "orange cake"
desc = "A cake with added orange."
icon_state = "orangecake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/orange
slices_num = 5
bonus_reagents = list("nutriment" = 3, "vitamin" = 10)
tastes = list("cake" = 5, "sweetness" = 2, "oranges" = 2)
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/cakeslice/orange
name = "orange cake slice"
desc = "Just a slice of cake, it is enough for everyone."
icon_state = "orangecake_slice"
filling_color = "#FFA500"
tastes = list("cake" = 5, "sweetness" = 2, "oranges" = 2)
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/store/cake/lime
name = "lime cake"
desc = "A cake with added lime."
icon_state = "limecake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/lime
slices_num = 5
bonus_reagents = list("nutriment" = 3, "vitamin" = 10)
tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2)
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/cakeslice/lime
name = "lime cake slice"
desc = "Just a slice of cake, it is enough for everyone."
icon_state = "limecake_slice"
filling_color = "#00FF00"
tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2)
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/store/cake/lemon
name = "lemon cake"
desc = "A cake with added lemon."
icon_state = "lemoncake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/lemon
slices_num = 5
bonus_reagents = list("nutriment" = 3, "vitamin" = 10)
tastes = list("cake" = 5, "sweetness" = 2, "sourness" = 2)
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/cakeslice/lemon
name = "lemon cake slice"
desc = "Just a slice of cake, it is enough for everyone."
icon_state = "lemoncake_slice"
filling_color = "#FFEE00"
tastes = list("cake" = 5, "sweetness" = 2, "sourness" = 2)
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/store/cake/chocolate
name = "chocolate cake"
desc = "A cake with added chocolate."
icon_state = "chocolatecake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/chocolate
slices_num = 5
bonus_reagents = list("nutriment" = 3, "vitamin" = 10)
tastes = list("cake" = 5, "sweetness" = 1, "chocolate" = 4)
foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR
/obj/item/reagent_containers/food/snacks/cakeslice/chocolate
name = "chocolate cake slice"
desc = "Just a slice of cake, it is enough for everyone."
icon_state = "chocolatecake_slice"
filling_color = "#A0522D"
tastes = list("cake" = 5, "sweetness" = 1, "chocolate" = 4)
foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR
/obj/item/reagent_containers/food/snacks/store/cake/birthday
name = "birthday cake"
desc = "Happy Birthday little clown..."
icon_state = "birthdaycake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/birthday
slices_num = 5
bonus_reagents = list("nutriment" = 7, "sprinkles" = 10, "vitamin" = 5)
list_reagents = list("nutriment" = 20, "sprinkles" = 10, "vitamin" = 5)
tastes = list("cake" = 5, "sweetness" = 1)
foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR
/obj/item/reagent_containers/food/snacks/cakeslice/birthday
name = "birthday cake slice"
desc = "A slice of your birthday."
icon_state = "birthdaycakeslice"
filling_color = "#DC143C"
list_reagents = list("nutriment" = 4, "sprinkles" = 2, "vitamin" = 1)
tastes = list("cake" = 5, "sweetness" = 1)
foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR
/obj/item/reagent_containers/food/snacks/store/cake/apple
name = "apple cake"
desc = "A cake centred with Apple."
icon_state = "applecake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/apple
slices_num = 5
bonus_reagents = list("nutriment" = 3, "vitamin" = 10)
tastes = list("cake" = 5, "sweetness" = 1, "apple" = 1)
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/cakeslice/apple
name = "apple cake slice"
desc = "A slice of heavenly cake."
icon_state = "applecakeslice"
filling_color = "#FF4500"
tastes = list("cake" = 5, "sweetness" = 1, "apple" = 1)
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/cakeslice/custom
name = "cake slice"
icon_state = "plaincake_slice"
filling_color = "#FFFFFF"
foodtype = GRAIN | DAIRY
/obj/item/reagent_containers/food/snacks/store/cake/slimecake
name = "Slime cake"
desc = "A cake made of slimes. Probably not electrified."
icon_state = "slimecake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/slimecake
bonus_reagents = list("nutriment" = 1, "vitamin" = 3)
tastes = list("cake" = 5, "sweetness" = 1, "slime" = 1)
foodtype = GRAIN | DAIRY | SUGAR
/obj/item/reagent_containers/food/snacks/cakeslice/slimecake
name = "slime cake slice"
desc = "A slice of slime cake."
icon_state = "slimecake_slice"
filling_color = "#00FFFF"
tastes = list("cake" = 5, "sweetness" = 1, "slime" = 1)
foodtype = GRAIN | DAIRY | SUGAR
/obj/item/reagent_containers/food/snacks/store/cake/pumpkinspice
name = "pumpkin spice cake"
desc = "A hollow cake with real pumpkin."
icon_state = "pumpkinspicecake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/pumpkinspice
bonus_reagents = list("nutriment" = 3, "vitamin" = 5)
tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1)
foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR
/obj/item/reagent_containers/food/snacks/cakeslice/pumpkinspice
name = "pumpkin spice cake slice"
desc = "A spicy slice of pumpkin goodness."
icon_state = "pumpkinspicecakeslice"
filling_color = "#FFD700"
tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1)
foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR
/obj/item/reagent_containers/food/snacks/store/cake/bsvc // blackberry strawberries vanilla cake
name = "blackberry and strawberry vanilla cake"
desc = "A plain cake, filled with assortment of blackberries and strawberries!"
icon_state = "blackbarry_strawberries_cake_vanilla_cake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/bsvc
bonus_reagents = list("nutriment" = 14, "vitamin" = 4)
tastes = list("blackbarry" = 2, "strawberries" = 2, "vanilla" = 2, "sweetness" = 2, "cake" = 3)
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/cakeslice/bsvc
name = "blackberry and strawberry vanilla cake slice"
desc = "Just a slice of cake filled with assortment of blackberries and strawberries!"
icon_state = "blackbarry_strawberries_cake_vanilla_slice"
filling_color = "#FFD700"
tastes = list("blackbarry" = 2, "strawberries" = 2, "vanilla" = 2, "sweetness" = 2,"cake" = 3)
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/store/cake/bscc // blackbarry strawberries chocolate cake
name = "blackberry and strawberry chocolate cake"
desc = "A plain cake, filled with assortment of blackberries and strawberries!"
icon_state = "blackbarry_strawberries_cake_coco_cake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/bscc
bonus_reagents = list("nutriment" = 14, "vitamin" = 4, "cocoa" = 5)
tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2,"cake" = 3)
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/cakeslice/bscc
name = "blackberry and strawberry chocolate cake slice"
desc = "Just a slice of cake filled with assortment of blackberries and strawberries!"
icon_state = "blackbarry_strawberries_cake_coco_slice"
filling_color = "#FFD700"
tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2,"cake" = 3)
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/store/cake/holy_cake
name = "angel food cake"
desc = "A cake made for angels and chaplains alike! Contains holy water."
icon_state = "holy_cake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/holy_cake_slice
bonus_reagents = list("nutriment" = 1, "vitamin" = 3, "holy_water" = 10)
tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1)
foodtype = GRAIN | DAIRY | SUGAR
/obj/item/reagent_containers/food/snacks/cakeslice/holy_cake_slice
name = "angel food cake slice"
desc = "A slice of heavenly cake."
icon_state = "holy_cake_slice"
filling_color = "#00FFFF"
tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1)
foodtype = GRAIN | DAIRY | SUGAR
obj/item/reagent_containers/food/snacks/store/cake/pound_cake
name = "pound cake"
desc = "A condensed cake made for filling people up quickly."
icon_state = "pound_cake"
slices_num = 7 //Its ment to feed the party
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/pound_cake_slice
bonus_reagents = list("nutriment" = 60)
tastes = list("cake" = 5, "sweetness" = 1, "batter" = 1)
foodtype = GRAIN | DAIRY | SUGAR | JUNKFOOD
/obj/item/reagent_containers/food/snacks/cakeslice/pound_cake_slice
name = "pound cake slice"
desc = "A slice of condensed cake made for filling people up quickly."
icon_state = "pound_cake_slice"
filling_color = "#00FFFF"
tastes = list("cake" = 5, "sweetness" = 5, "batter" = 1)
foodtype = GRAIN | DAIRY | SUGAR | JUNKFOOD
/obj/item/reagent_containers/food/snacks/store/cake/hardware_cake
name = "hardware cake"
desc = "A cake that is made with electronic boards and leaks acid..."
icon_state = "hardware_cake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/hardware_cake_slice
bonus_reagents = list("sacid" = 15, "oil" = 15)
tastes = list("acid" = 1, "metal" = 1, "regret" = 10)
foodtype = GRAIN | GROSS
/obj/item/reagent_containers/food/snacks/cakeslice/hardware_cake_slice
name = "hardware cake slice"
desc = "A slice of electronic boards and some acid."
icon_state = "hardware_cake_slice"
filling_color = "#00FFFF"
tastes = list("acid" = 1, "metal" = 1, "regret" = 10)
foodtype = GRAIN | GROSS
/obj/item/reagent_containers/food/snacks/store/cake/vanilla_cake
name = "vanilla cake"
desc = "A vanilla frosted cake."
icon_state = "vanillacake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/vanilla_slice
bonus_reagents = list("sugar" = 15, "vanilla" = 15)
tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10)
foodtype = GRAIN | SUGAR | DAIRY
/obj/item/reagent_containers/food/snacks/cakeslice/vanilla_slice
name = "vanilla cake slice"
desc = "A slice of vanilla frosted cake."
icon_state = "vanillacake_slice"
filling_color = "#00FFFF"
tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10)
foodtype = GRAIN | SUGAR | DAIRY
/obj/item/reagent_containers/food/snacks/store/cake/clown_cake
name = "clown cake"
desc = "A funny cake with a clown face on it."
icon_state = "clowncake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/clown_slice
bonus_reagents = list("sugar" = 15, "laugher" = 15)
tastes = list("cake" = 1, "sugar" = 1, "joy" = 10)
foodtype = GRAIN | SUGAR | DAIRY
/obj/item/reagent_containers/food/snacks/cakeslice/clown_slice
name = "clown cake slice"
desc = "A slice of bad jokes, and silly props."
icon_state = "clowncake_slice"
filling_color = "#00FFFF"
tastes = list("cake" = 1, "sugar" = 1, "joy" = 10)
foodtype = GRAIN | SUGAR | DAIRY
/obj/item/reagent_containers/food/snacks/store/cake/peach_cake
name = "peach cake"
desc = "A peach filled cake."
icon_state = "peachcake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/peach_slice
bonus_reagents = list("sugar" = 5, "peachjuice" = 15)
tastes = list("cake" = 1, "sugar" = 1, "peachjuice" = 10)
foodtype = GRAIN | SUGAR | DAIRY
/obj/item/reagent_containers/food/snacks/cakeslice/peach_slice
name = "peach cake slice"
desc = "A slice of peach cake."
icon_state = "peach_slice"
filling_color = "#00FFFF"
tastes = list("cake" = 1, "sugar" = 1, "peachjuice" = 10)
foodtype = GRAIN | SUGAR | DAIRY
@@ -0,0 +1,497 @@
//Pastry is a food that is made from dough which is made from wheat or rye flour.
//This file contains pastries that don't fit any existing categories.
////////////////////////////////////////////DONUTS////////////////////////////////////////////
/obj/item/reagent_containers/food/snacks/donut
name = "donut"
desc = "Goes great with robust coffee."
icon_state = "donut1"
bitesize = 5
bonus_reagents = list("sugar" = 1)
list_reagents = list("nutriment" = 3, "sprinkles" = 1, "sugar" = 2)
filling_color = "#D2691E"
tastes = list("donut" = 1)
foodtype = JUNKFOOD | GRAIN | FRIED | SUGAR
var/frosted_icon = "donut2"
var/is_frosted = FALSE
var/extra_reagent = null
/obj/item/reagent_containers/food/snacks/donut/Initialize()
. = ..()
if(prob(30))
frost_donut()
/obj/item/reagent_containers/food/snacks/donut/proc/frost_donut()
if(is_frosted || !frosted_icon)
return
is_frosted = TRUE
name = "frosted [name]"
icon_state = frosted_icon //delish~!
reagents.add_reagent("sprinkles", 1)
filling_color = "#FF69B4"
return TRUE
/obj/item/reagent_containers/food/snacks/donut/checkLiked(fraction, mob/M) //Sec officers always love donuts
if(last_check_time + 50 < world.time)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(M.mind && HAS_TRAIT(M.mind, TRAIT_LAW_ENFORCEMENT_METABOLISM) && !HAS_TRAIT(H, TRAIT_AGEUSIA))
to_chat(H,"<span class='notice'>I love this taste!</span>")
H.adjust_disgust(-5 + -2.5 * fraction)
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "fav_food", /datum/mood_event/favorite_food)
last_check_time = world.time
return
..()
/obj/item/reagent_containers/food/snacks/donut/chaos
name = "chaos donut"
desc = "Like life, it never quite tastes the same."
bitesize = 10
tastes = list("donut" = 3, "chaos" = 1)
/obj/item/reagent_containers/food/snacks/donut/chaos/Initialize()
. = ..()
extra_reagent = pick("nutriment", "capsaicin", "frostoil", "krokodil", "plasma", "cocoa", "slimejelly", "banana", "berryjuice", "omnizine")
reagents.add_reagent("[extra_reagent]", 3)
/obj/item/reagent_containers/food/snacks/donut/jelly
name = "jelly donut"
desc = "You jelly?"
icon_state = "jdonut1"
frosted_icon = "jdonut2"
bonus_reagents = list("sugar" = 1, "vitamin" = 1)
extra_reagent = "berryjuice"
tastes = list("jelly" = 1, "donut" = 3)
foodtype = JUNKFOOD | GRAIN | FRIED | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/donut/jelly/Initialize()
. = ..()
if(extra_reagent)
reagents.add_reagent("[extra_reagent]", 3)
/obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly
name = "jelly donut"
desc = "You jelly?"
icon_state = "jdonut1"
extra_reagent = "slimejelly"
foodtype = JUNKFOOD | GRAIN | FRIED | TOXIC | SUGAR
/obj/item/reagent_containers/food/snacks/donut/jelly/cherryjelly
name = "jelly donut"
desc = "You jelly?"
icon_state = "jdonut1"
extra_reagent = "cherryjelly"
foodtype = JUNKFOOD | GRAIN | FRIED | FRUIT
/obj/item/reagent_containers/food/snacks/donut/meat
bonus_reagents = list("ketchup" = 1)
list_reagents = list("nutriment" = 3, "ketchup" = 2)
tastes = list("meat" = 1)
foodtype = JUNKFOOD | MEAT | GROSS | FRIED
/obj/item/reagent_containers/food/snacks/donut/semen
name = "\"cream\" donut"
desc = "That cream looks a little runny..."
icon_state = "donut3"
bitesize = 10
bonus_reagents = list("semen" = 1)
list_reagents = list("nutriment" = 3, "sugar" = 2, "semen" = 5)
filling_color = "#FFFFFF"
tastes = list("donut" = 1, "salt" = 3)
foodtype = JUNKFOOD | GRAIN | FRIED | SUGAR
////////////////////////////////////////////MUFFINS////////////////////////////////////////////
/obj/item/reagent_containers/food/snacks/muffin
name = "muffin"
desc = "A delicious and spongy little cake."
icon_state = "muffin"
bonus_reagents = list("vitamin" = 1)
list_reagents = list("nutriment" = 6)
filling_color = "#F4A460"
tastes = list("muffin" = 1)
foodtype = GRAIN | SUGAR
/obj/item/reagent_containers/food/snacks/muffin/berry
name = "berry muffin"
icon_state = "berrymuffin"
desc = "A delicious and spongy little cake, with berries."
tastes = list("muffin" = 3, "berry" = 1)
foodtype = GRAIN | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/muffin/booberry
name = "booberry muffin"
icon_state = "berrymuffin"
alpha = 125
desc = "My stomach is a graveyard! No living being can quench my bloodthirst!"
tastes = list("muffin" = 3, "spookiness" = 1)
foodtype = GRAIN | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/chawanmushi
name = "chawanmushi"
desc = "A legendary egg custard that makes friends out of enemies. Probably too hot for a cat to eat."
icon_state = "chawanmushi"
bonus_reagents = list("vitamin" = 1)
list_reagents = list("nutriment" = 5)
filling_color = "#FFE4E1"
tastes = list("custard" = 1)
foodtype = GRAIN | MEAT | VEGETABLES
////////////////////////////////////////////WAFFLES////////////////////////////////////////////
/obj/item/reagent_containers/food/snacks/waffles
name = "waffles"
desc = "Mmm, waffles."
icon_state = "waffles"
trash = /obj/item/trash/waffles
bonus_reagents = list("vitamin" = 1)
list_reagents = list("nutriment" = 8, "vitamin" = 1)
filling_color = "#D2691E"
tastes = list("waffles" = 1)
foodtype = GRAIN | SUGAR
/obj/item/reagent_containers/food/snacks/soylentgreen
name = "\improper Soylent Green"
desc = "Not made of people. Honest." //Totally people.
icon_state = "soylent_green"
trash = /obj/item/trash/waffles
bonus_reagents = list("vitamin" = 1)
list_reagents = list("nutriment" = 10, "vitamin" = 1)
filling_color = "#9ACD32"
tastes = list("waffles" = 7, "people" = 1)
foodtype = GRAIN | GROSS | MEAT
/obj/item/reagent_containers/food/snacks/soylenviridians
name = "\improper Soylent Virdians"
desc = "Not made of people. Honest." //Actually honest for once.
icon_state = "soylent_yellow"
trash = /obj/item/trash/waffles
bonus_reagents = list("vitamin" = 1)
list_reagents = list("nutriment" = 10, "vitamin" = 1)
filling_color = "#9ACD32"
tastes = list("waffles" = 7, "the colour green" = 1)
foodtype = GRAIN
/obj/item/reagent_containers/food/snacks/rofflewaffles
name = "roffle waffles"
desc = "Waffles from Roffle. Co."
icon_state = "rofflewaffles"
trash = /obj/item/trash/waffles
bitesize = 4
bonus_reagents = list("vitamin" = 2)
list_reagents = list("nutriment" = 8, "mushroomhallucinogen" = 2, "vitamin" = 2)
filling_color = "#00BFFF"
tastes = list("waffle" = 1, "mushrooms" = 1)
foodtype = GRAIN | VEGETABLES | TOXIC | SUGAR
////////////////////////////////////////////OTHER////////////////////////////////////////////
/obj/item/reagent_containers/food/snacks/cookie
name = "cookie"
desc = "COOKIE!!!"
icon_state = "COOKIE!!!"
bitesize = 1
bonus_reagents = list("nutriment" = 1)
list_reagents = list("nutriment" = 1)
filling_color = "#F0E68C"
tastes = list("cookie" = 1)
foodtype = SUGAR
/obj/item/reagent_containers/food/snacks/donkpocket
name = "\improper Donk-pocket"
desc = "The food of choice for the seasoned traitor."
icon_state = "donkpocket"
list_reagents = list("nutriment" = 4)
cooked_type = /obj/item/reagent_containers/food/snacks/donkpocket/warm
filling_color = "#CD853F"
tastes = list("meat" = 2, "dough" = 2, "laziness" = 1)
foodtype = GRAIN
/obj/item/reagent_containers/food/snacks/donkpocket/warm
name = "warm Donk-pocket"
desc = "The heated food of choice for the seasoned traitor."
bonus_reagents = list("omnizine" = 3)
list_reagents = list("nutriment" = 4, "omnizine" = 3)
tastes = list("meat" = 2, "dough" = 2, "laziness" = 1)
foodtype = GRAIN
/obj/item/reagent_containers/food/snacks/dankpocket
name = "\improper Dank-pocket"
desc = "The food of choice for the seasoned botanist."
icon_state = "dankpocket"
list_reagents = list("lipolicide" = 3, "space_drugs" = 3, "nutriment" = 4)
filling_color = "#00FF00"
tastes = list("meat" = 2, "dough" = 2)
foodtype = GRAIN | VEGETABLES
/obj/item/reagent_containers/food/snacks/fortunecookie
name = "fortune cookie"
desc = "A true prophecy in each cookie!"
icon_state = "fortune_cookie"
bonus_reagents = list("nutriment" = 2)
list_reagents = list("nutriment" = 3)
filling_color = "#F4A460"
tastes = list("cookie" = 1)
foodtype = GRAIN | SUGAR
/obj/item/reagent_containers/food/snacks/poppypretzel
name = "poppy pretzel"
desc = "It's all twisted up!"
icon_state = "poppypretzel"
bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
list_reagents = list("nutriment" = 5)
filling_color = "#F0E68C"
tastes = list("pretzel" = 1)
foodtype = GRAIN | SUGAR
/obj/item/reagent_containers/food/snacks/plumphelmetbiscuit
name = "plump helmet biscuit"
desc = "This is a finely-prepared plump helmet biscuit. The ingredients are exceptionally minced plump helmet, and well-minced dwarven wheat flour."
icon_state = "phelmbiscuit"
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
list_reagents = list("nutriment" = 5)
filling_color = "#F0E68C"
tastes = list("mushroom" = 1, "biscuit" = 1)
foodtype = GRAIN | VEGETABLES
/obj/item/reagent_containers/food/snacks/plumphelmetbiscuit/Initialize()
var/fey = prob(10)
if(fey)
name = "exceptional plump helmet biscuit"
desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!"
bonus_reagents = list("omnizine" = 5, "nutriment" = 1, "vitamin" = 1)
. = ..()
if(fey)
reagents.add_reagent("omnizine", 5)
/obj/item/reagent_containers/food/snacks/cracker
name = "cracker"
desc = "It's a salted cracker."
icon_state = "cracker"
bitesize = 1
bonus_reagents = list("nutriment" = 1)
list_reagents = list("nutriment" = 1)
filling_color = "#F0E68C"
tastes = list("cracker" = 1)
foodtype = GRAIN
/obj/item/reagent_containers/food/snacks/hotdog
name = "hotdog"
desc = "Fresh footlong ready to go down on."
icon_state = "hotdog"
bitesize = 3
bonus_reagents = list("nutriment" = 1, "vitamin" = 3)
list_reagents = list("nutriment" = 6, "ketchup" = 3, "vitamin" = 3)
filling_color = "#8B0000"
tastes = list("bun" = 3, "meat" = 2)
foodtype = GRAIN | MEAT | VEGETABLES
/obj/item/reagent_containers/food/snacks/meatbun
name = "meat bun"
desc = "Has the potential to not be Dog."
icon_state = "meatbun"
bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
list_reagents = list("nutriment" = 6, "vitamin" = 2)
filling_color = "#8B0000"
tastes = list("bun" = 3, "meat" = 2)
foodtype = GRAIN | MEAT | VEGETABLES
/obj/item/reagent_containers/food/snacks/khachapuri
name = "khachapuri"
desc = "Bread with egg and cheese?"
icon_state = "khachapuri"
list_reagents = list("nutriment" = 12, "vitamin" = 2)
filling_color = "#FFFF4D"
tastes = list("bread" = 1, "egg" = 1, "cheese" = 1)
foodtype = GRAIN | MEAT | DAIRY
/obj/item/reagent_containers/food/snacks/sugarcookie
name = "sugar cookie"
desc = "Just like your little sister used to make."
icon_state = "sugarcookie"
bonus_reagents = list("nutriment" = 1, "sugar" = 3)
list_reagents = list("nutriment" = 3, "sugar" = 3)
filling_color = "#CD853F"
tastes = list("sweetness" = 1)
foodtype = GRAIN | JUNKFOOD | SUGAR
/obj/item/reagent_containers/food/snacks/chococornet
name = "chocolate cornet"
desc = "Which side's the head, the fat end or the thin end?"
icon_state = "chococornet"
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
list_reagents = list("nutriment" = 5, "vitamin" = 1)
filling_color = "#FFE4C4"
tastes = list("biscuit" = 3, "chocolate" = 1)
foodtype = GRAIN | JUNKFOOD
/obj/item/reagent_containers/food/snacks/oatmealcookie
name = "oatmeal cookie"
desc = "The best of both cookie and oat."
icon_state = "oatmealcookie"
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
list_reagents = list("nutriment" = 5, "vitamin" = 1)
filling_color = "#D2691E"
tastes = list("cookie" = 2, "oat" = 1)
foodtype = GRAIN
/obj/item/reagent_containers/food/snacks/raisincookie
name = "raisin cookie"
desc = "Why would you put raisins on a cookie?"
icon_state = "raisincookie"
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
list_reagents = list("nutriment" = 5, "vitamin" = 1)
filling_color = "#F0E68C"
tastes = list("cookie" = 1, "raisins" = 1)
foodtype = GRAIN | FRUIT
/obj/item/reagent_containers/food/snacks/cherrycupcake
name = "cherry cupcake"
desc = "A sweet cupcake with cherry bits."
icon_state = "cherrycupcake"
bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
list_reagents = list("nutriment" = 5, "vitamin" = 1)
filling_color = "#F0E68C"
tastes = list("cake" = 3, "cherry" = 1)
foodtype = GRAIN | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/bluecherrycupcake
name = "blue cherry cupcake"
desc = "Blue cherries inside a delicious cupcake."
icon_state = "bluecherrycupcake"
bonus_reagents = list("nutriment" = 1, "vitamin" = 3)
list_reagents = list("nutriment" = 5, "vitamin" = 1)
filling_color = "#F0E68C"
tastes = list("cake" = 3, "blue cherry" = 1)
foodtype = GRAIN | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/strawberrycupcake
name = "Strawberry cupcake"
desc = "Strawberry inside a delicious cupcake."
icon_state = "strawberrycupcake"
bonus_reagents = list("nutriment" = 1, "vitamin" = 3)
list_reagents = list("nutriment" = 5, "vitamin" = 1)
filling_color = "#F0E68C"
tastes = list("cake" = 2, "strawberry" = 1)
foodtype = GRAIN | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/honeybun
name = "honey bun"
desc = "A sticky pastry bun glazed with honey."
icon_state = "honeybun"
bonus_reagents = list("nutriment" = 1, "honey" = 1)
list_reagents = list("nutriment" = 5, "honey" = 5)
filling_color = "#F2CE91"
tastes = list("pastry" = 1, "sweetness" = 1)
foodtype = GRAIN
#define PANCAKE_MAX_STACK 10
/obj/item/reagent_containers/food/snacks/pancakes
name = "pancake"
desc = "A fluffy pancake. The softer, superior relative of the waffle."
icon_state = "pancakes_1"
item_state = "pancakes"
bonus_reagents = list("vitamin" = 1)
list_reagents = list("nutriment" = 4, "vitamin" = 1)
filling_color = "#D2691E"
tastes = list("pancakes" = 1)
foodtype = GRAIN | SUGAR
/obj/item/reagent_containers/food/snacks/pancakes/blueberry
name = "blueberry pancake"
desc = "A fluffy and delicious blueberry pancake."
icon_state = "bbpancakes_1"
item_state = "bbpancakes"
bonus_reagents = list("vitamin" = 2)
list_reagents = list("nutriment" = 6, "vitamin" = 3)
tastes = list("pancakes" = 1, "blueberries" = 1)
/obj/item/reagent_containers/food/snacks/pancakes/chocolatechip
name = "chocolate chip pancake"
desc = "A fluffy and delicious chocolate chip pancake."
icon_state = "ccpancakes_1"
item_state = "ccpancakes"
bonus_reagents = list("vitamin" = 2)
list_reagents = list("nutriment" = 6, "vitamin" = 3)
tastes = list("pancakes" = 1, "chocolate" = 1)
/obj/item/reagent_containers/food/snacks/pancakes/Initialize()
. = ..()
update_icon()
/obj/item/reagent_containers/food/snacks/pancakes/update_icon()
if(contents.len)
name = "stack of pancakes"
else
name = initial(name)
if(contents.len < LAZYLEN(overlays))
overlays-=overlays[overlays.len]
/obj/item/reagent_containers/food/snacks/pancakes/examine(mob/user)
var/ingredients_listed = ""
var/pancakeCount = contents.len
switch(pancakeCount)
if(0)
desc = initial(desc)
if(1 to 2)
desc = "A stack of fluffy pancakes."
if(3 to 6)
desc = "A fat stack of fluffy pancakes!"
if(7 to 9)
desc = "A grand tower of fluffy, delicious pancakes!"
if(PANCAKE_MAX_STACK to INFINITY)
desc = "A massive towering spire of fluffy, delicious pancakes. It looks like it could tumble over!"
var/originalBites = bitecount
if (pancakeCount)
var/obj/item/reagent_containers/food/snacks/S = contents[pancakeCount]
bitecount = S.bitecount
..()
if (pancakeCount)
for(var/obj/item/reagent_containers/food/snacks/pancakes/ING in contents)
ingredients_listed += "[ING.name], "
to_chat(user, "It contains [contents.len?"[ingredients_listed]":"no ingredient, "]on top of a [initial(name)].")
bitecount = originalBites
/obj/item/reagent_containers/food/snacks/pancakes/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/reagent_containers/food/snacks/pancakes/))
var/obj/item/reagent_containers/food/snacks/pancakes/P = I
if((contents.len >= PANCAKE_MAX_STACK) || ((P.contents.len + contents.len) > PANCAKE_MAX_STACK) || (reagents.total_volume >= volume))
to_chat(user, "<span class='warning'>You can't add that many pancakes to [src]!</span>")
else
if(!user.transferItemToLoc(I, src))
return
to_chat(user, "<span class='notice'>You add the [I] to the [name].</span>")
P.name = initial(P.name)
contents += P
update_overlays(P)
if (P.contents.len)
for(var/V in P.contents)
P = V
P.name = initial(P.name)
contents += P
update_overlays(P)
P = I
clearlist(P.contents)
return
else if(contents.len)
var/obj/O = contents[contents.len]
return O.attackby(I, user, params)
..()
/obj/item/reagent_containers/food/snacks/pancakes/update_overlays(obj/item/reagent_containers/food/snacks/P)
var/mutable_appearance/pancake = mutable_appearance(icon, "[P.item_state]_[rand(1,3)]")
pancake.pixel_x = rand(-1,1)
pancake.pixel_y = 3 * contents.len - 1
add_overlay(pancake)
update_icon()
/obj/item/reagent_containers/food/snacks/pancakes/attack(mob/M, mob/user, def_zone, stacked = TRUE)
if(user.a_intent == INTENT_HARM || !contents.len || !stacked)
return ..()
var/obj/item/O = contents[contents.len]
. = O.attack(M, user, def_zone, FALSE)
update_icon()
#undef PANCAKE_MAX_STACK
+346
View File
@@ -0,0 +1,346 @@
/obj/item/bombcore/miniature/pizza
name = "pizza bomb"
desc = "Special delivery!"
icon_state = "pizzabomb_inactive"
item_state = "eshield0"
lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
/obj/item/pizzabox
name = "pizza box"
desc = "A box suited for pizzas."
icon = 'icons/obj/food/containers.dmi'
icon_state = "pizzabox"
item_state = "pizzabox"
lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi'
var/open = FALSE
var/can_open_on_fall = TRUE //if FALSE, this pizza box will never open if it falls from a stack
var/boxtag = ""
var/list/boxes = list()
var/obj/item/reagent_containers/food/snacks/pizza/pizza
var/obj/item/bombcore/miniature/pizza/bomb
var/bomb_active = FALSE // If the bomb is counting down.
var/bomb_defused = TRUE // If the bomb is inert.
var/bomb_timer = 1 // How long before blowing the bomb.
var/const/BOMB_TIMER_MIN = 1
var/const/BOMB_TIMER_MAX = 10
/obj/item/pizzabox/Initialize()
. = ..()
update_icon()
/obj/item/pizzabox/Destroy()
unprocess()
return ..()
/obj/item/pizzabox/update_icon()
// Description
desc = initial(desc)
if(open)
if(pizza)
desc = "[desc] It appears to have \a [pizza] inside. Use your other hand to take it out."
if(bomb)
desc = "[desc] Wait, what?! It has \a [bomb] inside!"
if(bomb_defused)
desc = "[desc] The bomb seems inert. Use your other hand to activate it."
if(bomb_active)
desc = "[desc] It looks like it's about to go off!"
else
var/obj/item/pizzabox/box = boxes.len ? boxes[boxes.len] : src
if(boxes.len)
desc = "A pile of boxes suited for pizzas. There appear to be [boxes.len + 1] boxes in the pile."
if(box.boxtag != "")
desc = "[desc] The [boxes.len ? "top box" : "box"]'s tag reads: [box.boxtag]"
// Icon/Overlays
cut_overlays()
if(open)
icon_state = "pizzabox_open"
if(pizza)
icon_state = "pizzabox_messy"
var/mutable_appearance/pizza_overlay = mutable_appearance(pizza.icon, pizza.icon_state)
pizza_overlay.pixel_y = -3
add_overlay(pizza_overlay)
if(bomb)
bomb.icon_state = "pizzabomb_[bomb_active ? "active" : "inactive"]"
var/mutable_appearance/bomb_overlay = mutable_appearance(bomb.icon, bomb.icon_state)
bomb_overlay.pixel_y = 5
add_overlay(bomb_overlay)
else
icon_state = "pizzabox"
var/current_offset = 3
for(var/V in boxes)
var/obj/item/pizzabox/P = V
var/mutable_appearance/box_overlay = mutable_appearance(P.icon, P.icon_state)
box_overlay.pixel_y = current_offset
add_overlay(box_overlay)
current_offset += 3
var/obj/item/pizzabox/box = boxes.len ? boxes[boxes.len] : src
if(box.boxtag != "")
var/mutable_appearance/tag_overlay = mutable_appearance(icon, "pizzabox_tag")
tag_overlay.pixel_y = boxes.len * 3
add_overlay(tag_overlay)
/obj/item/pizzabox/worn_overlays(isinhands, icon_file)
. = list()
var/current_offset = 2
if(isinhands)
for(var/V in boxes) //add EXTRA BOX per box
var/mutable_appearance/M = mutable_appearance(icon_file, item_state)
M.pixel_y = current_offset
current_offset += 2
. += M
/obj/item/pizzabox/attack_self(mob/user)
if(boxes.len > 0)
return
open = !open
if(open && !bomb_defused)
audible_message("<span class='warning'>[icon2html(src, hearers(src))] *beep*</span>")
bomb_active = TRUE
START_PROCESSING(SSobj, src)
update_icon()
//ATTACK HAND IGNORING PARENT RETURN VALUE
/obj/item/pizzabox/attack_hand(mob/user)
if(user.get_inactive_held_item() != src)
return ..()
if(open)
if(pizza)
user.put_in_hands(pizza)
to_chat(user, "<span class='notice'>You take [pizza] out of [src].</span>")
pizza = null
update_icon()
else if(bomb)
if(wires.is_all_cut() && bomb_defused)
user.put_in_hands(bomb)
to_chat(user, "<span class='notice'>You carefully remove the [bomb] from [src].</span>")
bomb = null
update_icon()
return
else
bomb_timer = input(user, "Set the [bomb] timer from [BOMB_TIMER_MIN] to [BOMB_TIMER_MAX].", bomb, bomb_timer) as num
bomb_timer = CLAMP(CEILING(bomb_timer / 2, 1), BOMB_TIMER_MIN, BOMB_TIMER_MAX)
bomb_defused = FALSE
var/message = "[ADMIN_LOOKUPFLW(user)] has trapped a [src] with [bomb] set to [bomb_timer * 2] seconds."
GLOB.bombers += message
message_admins(message)
log_game("[key_name(user)] has trapped a [src] with [bomb] set to [bomb_timer * 2] seconds.")
bomb.adminlog = "The [bomb.name] in [src.name] that [key_name(user)] activated has detonated!"
to_chat(user, "<span class='warning'>You trap [src] with [bomb].</span>")
update_icon()
else if(boxes.len)
var/obj/item/pizzabox/topbox = boxes[boxes.len]
boxes -= topbox
user.put_in_hands(topbox)
to_chat(user, "<span class='notice'>You remove the topmost [name] from the stack.</span>")
topbox.update_icon()
update_icon()
user.regenerate_icons()
/obj/item/pizzabox/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/pizzabox))
var/obj/item/pizzabox/newbox = I
if(!open && !newbox.open)
var/list/add = list()
add += newbox
add += newbox.boxes
if(!user.transferItemToLoc(newbox, src))
return
boxes += add
newbox.boxes.Cut()
to_chat(user, "<span class='notice'>You put [newbox] on top of [src]!</span>")
newbox.update_icon()
update_icon()
user.regenerate_icons()
if(boxes.len >= 5)
if(prob(10 * boxes.len))
to_chat(user, "<span class='danger'>You can't keep holding the stack!</span>")
disperse_pizzas()
else
to_chat(user, "<span class='warning'>The stack is getting a little high...</span>")
return
else
to_chat(user, "<span class='notice'>Close [open ? src : newbox] first!</span>")
else if(istype(I, /obj/item/reagent_containers/food/snacks/pizza) || istype(I, /obj/item/reagent_containers/food/snacks/customizable/pizza))
if(open)
if(pizza)
to_chat(user, "<span class='warning'>[src] already has \a [pizza.name]!</span>")
return
if(!user.transferItemToLoc(I, src))
return
pizza = I
to_chat(user, "<span class='notice'>You put [I] in [src].</span>")
update_icon()
return
else if(istype(I, /obj/item/bombcore/miniature/pizza))
if(open && !bomb)
if(!user.transferItemToLoc(I, src))
return
wires = new /datum/wires/explosive/pizza(src)
bomb = I
to_chat(user, "<span class='notice'>You put [I] in [src]. Sneeki breeki...</span>")
update_icon()
return
else if(bomb)
to_chat(user, "<span class='notice'>[src] already has a bomb in it!</span>")
else if(istype(I, /obj/item/pen))
if(!open)
if(!user.is_literate())
to_chat(user, "<span class='notice'>You scribble illegibly on [src]!</span>")
return
var/obj/item/pizzabox/box = boxes.len ? boxes[boxes.len] : src
box.boxtag += stripped_input(user, "Write on [box]'s tag:", box, "", 30)
if(!user.canUseTopic(src, BE_CLOSE))
return
to_chat(user, "<span class='notice'>You write with [I] on [src].</span>")
update_icon()
return
else if(is_wire_tool(I))
if(wires && bomb)
wires.interact(user)
else if(istype(I, /obj/item/reagent_containers/food))
to_chat(user, "<span class='warning'>That's not a pizza!</span>")
..()
/obj/item/pizzabox/process()
if(bomb_active && !bomb_defused && (bomb_timer > 0))
playsound(loc, 'sound/items/timer.ogg', 50, 0)
bomb_timer--
if(bomb_active && !bomb_defused && (bomb_timer <= 0))
if(bomb in src)
bomb.detonate()
unprocess()
qdel(src)
if(!bomb_active || bomb_defused)
if(bomb_defused && bomb in src)
bomb.defuse()
bomb_active = FALSE
unprocess()
return
/obj/item/pizzabox/attack(mob/living/target, mob/living/user, def_zone)
. = ..()
if(boxes.len >= 3 && prob(25 * boxes.len))
disperse_pizzas()
/obj/item/pizzabox/throw_impact(atom/movable/AM)
if(boxes.len >= 2 && prob(20 * boxes.len))
disperse_pizzas()
/obj/item/pizzabox/proc/disperse_pizzas()
visible_message("<span class='warning'>The pizzas fall everywhere!</span>")
for(var/V in boxes)
var/obj/item/pizzabox/P = V
var/fall_dir = pick(GLOB.alldirs)
step(P, fall_dir)
if(P.pizza && P.can_open_on_fall && prob(50)) //rip pizza
P.open = TRUE
P.pizza.forceMove(get_turf(P))
fall_dir = pick(GLOB.alldirs)
step(P.pizza, fall_dir)
P.pizza = null
P.update_icon()
boxes -= P
update_icon()
if(isliving(loc))
var/mob/living/L = loc
L.regenerate_icons()
/obj/item/pizzabox/proc/unprocess()
STOP_PROCESSING(SSobj, src)
qdel(wires)
wires = null
update_icon()
/obj/item/pizzabox/bomb/Initialize()
. = ..()
var/randompizza = pick(subtypesof(/obj/item/reagent_containers/food/snacks/pizza))
pizza = new randompizza(src)
bomb = new(src)
wires = new /datum/wires/explosive/pizza(src)
/obj/item/pizzabox/margherita/Initialize()
. = ..()
AddPizza()
boxtag = "Margherita Deluxe"
/obj/item/pizzabox/margherita/proc/AddPizza()
pizza = new /obj/item/reagent_containers/food/snacks/pizza/margherita(src)
/obj/item/pizzabox/margherita/robo/AddPizza()
pizza = new /obj/item/reagent_containers/food/snacks/pizza/margherita/robo(src)
/obj/item/pizzabox/vegetable/Initialize()
. = ..()
pizza = new /obj/item/reagent_containers/food/snacks/pizza/vegetable(src)
boxtag = "Gourmet Vegatable"
/obj/item/pizzabox/mushroom/Initialize()
. = ..()
pizza = new /obj/item/reagent_containers/food/snacks/pizza/mushroom(src)
boxtag = "Mushroom Special"
/obj/item/pizzabox/meat/Initialize()
. = ..()
pizza = new /obj/item/reagent_containers/food/snacks/pizza/meat(src)
boxtag = "Meatlover's Supreme"
/obj/item/pizzabox/pineapple/Initialize()
. = ..()
pizza = new /obj/item/reagent_containers/food/snacks/pizza/pineapple(src)
boxtag = "Honolulu Chew"
//An anomalous pizza box that, when opened, produces the opener's favorite kind of pizza.
/obj/item/pizzabox/infinite
resistance_flags = FIRE_PROOF | LAVA_PROOF | ACID_PROOF //hard to destroy
can_open_on_fall = FALSE
var/list/pizza_types = list(
/obj/item/reagent_containers/food/snacks/pizza/meat = 1,
/obj/item/reagent_containers/food/snacks/pizza/mushroom = 1,
/obj/item/reagent_containers/food/snacks/pizza/margherita = 1,
/obj/item/reagent_containers/food/snacks/pizza/sassysage = 0.8,
/obj/item/reagent_containers/food/snacks/pizza/vegetable = 0.8,
/obj/item/reagent_containers/food/snacks/pizza/pineapple = 0.5,
/obj/item/reagent_containers/food/snacks/pizza/donkpocket = 0.3,
/obj/item/reagent_containers/food/snacks/pizza/dank = 0.1) //pizzas here are weighted by chance to be someone's favorite
var/static/list/pizza_preferences
/obj/item/pizzabox/infinite/Initialize()
. = ..()
if(!pizza_preferences)
pizza_preferences = list()
/obj/item/pizzabox/infinite/examine(mob/user)
..()
if(isobserver(user))
to_chat(user, "<span class='deadsay'>This pizza box is anomalous, and will produce infinite pizza.</span>")
/obj/item/pizzabox/infinite/attack_self(mob/living/user)
QDEL_NULL(pizza)
if(ishuman(user))
attune_pizza(user)
. = ..()
/obj/item/pizzabox/infinite/proc/attune_pizza(mob/living/carbon/human/noms) //tonight on "proc names I never thought I'd type"
if(!pizza_preferences[noms.ckey])
pizza_preferences[noms.ckey] = pickweight(pizza_types)
if(noms.has_quirk(/datum/quirk/pineapple_liker))
pizza_preferences[noms.ckey] = /obj/item/reagent_containers/food/snacks/pizza/pineapple
else if(noms.has_quirk(/datum/quirk/pineapple_hater))
var/list/pineapple_pizza_liker = pizza_types.Copy()
pineapple_pizza_liker -= /obj/item/reagent_containers/food/snacks/pizza/pineapple
pizza_preferences[noms.ckey] = pickweight(pineapple_pizza_liker)
if(noms.mind && noms.mind.assigned_role == "Botanist")
pizza_preferences[noms.ckey] = /obj/item/reagent_containers/food/snacks/pizza/dank
var/obj/item/pizza_type = pizza_preferences[noms.ckey]
pizza = new pizza_type (src)
pizza.foodtype = noms.dna.species.liked_food //it's our favorite!
@@ -382,7 +382,7 @@
results = list("neurotoxin" = 2)
required_reagents = list("gargleblaster" = 1, "morphine" = 1)
//FermiChem vars: Easy to make, but hard to make potent
OptimalTempMin = 200 // Lower area of bell curve for determining heat based rate reactions
OptimalTempMin = 100 // Lower area of bell curve for determining heat based rate reactions
OptimalTempMax = 950 // Upper end for above
ExplodeTemp = 999 //Temperature at which reaction explodes
OptimalpHMin = 4.6 // Lowest value of pH determining pH a 1 value for pH based rate reactions (Plateu phase)
@@ -0,0 +1,195 @@
// see code/module/crafting/table.dm
////////////////////////////////////////////////CAKE////////////////////////////////////////////////
/datum/crafting_recipe/food/carrotcake
name = "Carrot cake"
reqs = list(
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/carrot = 2
)
result = /obj/item/reagent_containers/food/snacks/store/cake/carrot
subcategory = CAT_CAKE
/datum/crafting_recipe/food/cheesecake
name = "Cheese cake"
reqs = list(
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
/obj/item/reagent_containers/food/snacks/cheesewedge = 2
)
result = /obj/item/reagent_containers/food/snacks/store/cake/cheese
subcategory = CAT_CAKE
/datum/crafting_recipe/food/applecake
name = "Apple cake"
reqs = list(
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/apple = 2
)
result = /obj/item/reagent_containers/food/snacks/store/cake/apple
subcategory = CAT_CAKE
/datum/crafting_recipe/food/orangecake
name = "Orange cake"
reqs = list(
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/citrus/orange = 2
)
result = /obj/item/reagent_containers/food/snacks/store/cake/orange
subcategory = CAT_CAKE
/datum/crafting_recipe/food/limecake
name = "Lime cake"
reqs = list(
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/citrus/lime = 2
)
result = /obj/item/reagent_containers/food/snacks/store/cake/lime
subcategory = CAT_CAKE
/datum/crafting_recipe/food/lemoncake
name = "Lemon cake"
reqs = list(
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/citrus/lemon = 2
)
result = /obj/item/reagent_containers/food/snacks/store/cake/lemon
subcategory = CAT_CAKE
/datum/crafting_recipe/food/chocolatecake
name = "Chocolate cake"
reqs = list(
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
/obj/item/reagent_containers/food/snacks/chocolatebar = 2
)
result = /obj/item/reagent_containers/food/snacks/store/cake/chocolate
subcategory = CAT_CAKE
/datum/crafting_recipe/food/birthdaycake
name = "Birthday cake"
reqs = list(
/datum/reagent/consumable/sugar = 10,
/obj/item/candle = 1,
/obj/item/reagent_containers/food/snacks/grown/vanillapod = 2,
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1
)
result = /obj/item/reagent_containers/food/snacks/store/cake/birthday
subcategory = CAT_CAKE
/datum/crafting_recipe/food/braincake
name = "Brain cake"
reqs = list(
/obj/item/organ/brain = 1,
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1
)
result = /obj/item/reagent_containers/food/snacks/store/cake/brain
subcategory = CAT_CAKE
/datum/crafting_recipe/food/slimecake
name = "Slime cake"
reqs = list(
/obj/item/slime_extract = 1,
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1
)
result = /obj/item/reagent_containers/food/snacks/store/cake/slimecake
subcategory = CAT_CAKE
/datum/crafting_recipe/food/pumpkinspicecake
name = "Pumpkin spice cake"
reqs = list(
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/pumpkin = 2
)
result = /obj/item/reagent_containers/food/snacks/store/cake/pumpkinspice
subcategory = CAT_CAKE
/datum/crafting_recipe/food/holycake
name = "Angel food cake"
reqs = list(
/datum/reagent/water/holywater = 15,
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1
)
result = /obj/item/reagent_containers/food/snacks/store/cake/holy_cake
subcategory = CAT_CAKE
/datum/crafting_recipe/food/poundcake
name = "Pound cake"
reqs = list(
/obj/item/reagent_containers/food/snacks/store/cake/plain = 4
)
result = /obj/item/reagent_containers/food/snacks/store/cake/pound_cake
subcategory = CAT_CAKE
/datum/crafting_recipe/food/hardwarecake
name = "Hardware cake"
reqs = list(
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
/obj/item/circuitboard = 2,
/datum/reagent/toxin/acid = 5
)
result = /obj/item/reagent_containers/food/snacks/store/cake/hardware_cake
subcategory = CAT_CAKE
/datum/crafting_recipe/food/bscccake
name = "blackberry and strawberry chocolate cake"
reqs = list(
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
/obj/item/reagent_containers/food/snacks/chocolatebar = 2,
/obj/item/reagent_containers/food/snacks/grown/berries = 5
)
result = /obj/item/reagent_containers/food/snacks/store/cake/bscc
subcategory = CAT_CAKE
/datum/crafting_recipe/food/bscvcake
name = "blackberry and strawberry vanilla cake"
reqs = list(
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/berries = 5
)
result = /obj/item/reagent_containers/food/snacks/store/cake/bsvc
subcategory = CAT_CAKE
/datum/crafting_recipe/food/clowncake
name = "clown cake"
always_availible = FALSE
reqs = list(
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
/obj/item/reagent_containers/food/snacks/sundae = 2,
/obj/item/reagent_containers/food/snacks/grown/banana = 5
)
result = /obj/item/reagent_containers/food/snacks/store/cake/clown_cake
subcategory = CAT_CAKE
/datum/crafting_recipe/food/vanillacake
name = "vanilla cake"
always_availible = FALSE
reqs = list(
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/vanillapod = 2
)
result = /obj/item/reagent_containers/food/snacks/store/cake/vanilla_cake
subcategory = CAT_CAKE
/datum/crafting_recipe/food/peachcake
name = "Peach cake"
reqs = list(
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/peach = 5
)
result = /obj/item/reagent_containers/food/snacks/store/cake/peach_cake
subcategory = CAT_CAKE
/datum/crafting_recipe/food/cak
name = "Living cat/cake hybrid"
reqs = list(
/obj/item/organ/brain = 1,
/obj/item/organ/heart = 1,
/obj/item/reagent_containers/food/snacks/store/cake/birthday = 1,
/obj/item/reagent_containers/food/snacks/meat/slab = 3,
/datum/reagent/blood = 30,
/datum/reagent/consumable/sprinkles = 5,
/datum/reagent/teslium = 1 //To shock the whole thing into life
)
result = /mob/living/simple_animal/pet/cat/cak
subcategory = CAT_CAKE //Cat! Haha, get it? CAT? GET IT? We get it - Love Catpeople
@@ -0,0 +1,226 @@
// see code/module/crafting/table.dm
////////////////////////////////////////////////PIES////////////////////////////////////////////////
/datum/crafting_recipe/food/bananacreampie
name = "Banana cream pie"
reqs = list(
/datum/reagent/consumable/milk = 5,
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/banana = 1
)
result = /obj/item/reagent_containers/food/snacks/pie/cream
subcategory = CAT_PIE
/datum/crafting_recipe/food/meatpie
name = "Meat pie"
reqs = list(
/datum/reagent/consumable/blackpepper = 1,
/datum/reagent/consumable/sodiumchloride = 1,
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/meat/steak/plain = 1
)
result = /obj/item/reagent_containers/food/snacks/pie/meatpie
subcategory = CAT_PIE
/datum/crafting_recipe/food/tofupie
name = "Tofu pie"
reqs = list(
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/tofu = 1
)
result = /obj/item/reagent_containers/food/snacks/pie/tofupie
subcategory = CAT_PIE
/datum/crafting_recipe/food/xenopie
name = "Xeno pie"
reqs = list(
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/meat/cutlet/xeno = 1
)
result = /obj/item/reagent_containers/food/snacks/pie/xemeatpie
subcategory = CAT_PIE
/datum/crafting_recipe/food/cherrypie
name = "Cherry pie"
reqs = list(
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/cherries = 1
)
result = /obj/item/reagent_containers/food/snacks/pie/cherrypie
subcategory = CAT_PIE
/datum/crafting_recipe/food/berryclafoutis
name = "Berry clafoutis"
reqs = list(
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/berries = 1
)
result = /obj/item/reagent_containers/food/snacks/pie/berryclafoutis
subcategory = CAT_PIE
/datum/crafting_recipe/food/bearypie
name = "Beary Pie"
reqs = list(
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/berries = 1,
/obj/item/reagent_containers/food/snacks/meat/steak/bear = 1
)
result = /obj/item/reagent_containers/food/snacks/pie/bearypie
subcategory = CAT_PIE
/datum/crafting_recipe/food/amanitapie
name = "Amanita pie"
reqs = list(
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/mushroom/amanita = 1
)
result = /obj/item/reagent_containers/food/snacks/pie/amanita_pie
subcategory = CAT_PIE
/datum/crafting_recipe/food/plumppie
name = "Plump pie"
reqs = list(
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/mushroom/plumphelmet = 1
)
result = /obj/item/reagent_containers/food/snacks/pie/plump_pie
subcategory = CAT_PIE
/datum/crafting_recipe/food/applepie
name = "Apple pie"
reqs = list(
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/apple = 1
)
result = /obj/item/reagent_containers/food/snacks/pie/applepie
subcategory = CAT_PIE
/datum/crafting_recipe/food/pumpkinpie
name = "Pumpkin pie"
reqs = list(
/datum/reagent/consumable/milk = 5,
/datum/reagent/consumable/sugar = 5,
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/pumpkin = 1
)
result = /obj/item/reagent_containers/food/snacks/pie/pumpkinpie
subcategory = CAT_PIE
/datum/crafting_recipe/food/goldenappletart
name = "Golden apple tart"
reqs = list(
/datum/reagent/consumable/milk = 5,
/datum/reagent/consumable/sugar = 5,
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/apple/gold = 1
)
result = /obj/item/reagent_containers/food/snacks/pie/appletart
subcategory = CAT_PIE
/datum/crafting_recipe/food/grapetart
name = "Grape tart"
reqs = list(
/datum/reagent/consumable/milk = 5,
/datum/reagent/consumable/sugar = 5,
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/grapes = 3
)
result = /obj/item/reagent_containers/food/snacks/pie/grapetart
subcategory = CAT_PIE
/datum/crafting_recipe/food/blumpkinpie
name = "Blumpkin pie"
reqs = list(
/datum/reagent/consumable/milk = 5,
/datum/reagent/consumable/sugar = 5,
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/blumpkin = 1
)
result = /obj/item/reagent_containers/food/snacks/pie/blumpkinpie
subcategory = CAT_PIE
/datum/crafting_recipe/food/dulcedebatata
name = "Dulce de batata"
reqs = list(
/datum/reagent/consumable/vanilla = 5,
/datum/reagent/water = 5,
/obj/item/reagent_containers/food/snacks/grown/potato/sweet = 2
)
result = /obj/item/reagent_containers/food/snacks/pie/dulcedebatata
subcategory = CAT_PIE
/datum/crafting_recipe/food/frostypie
name = "Frosty pie"
reqs = list(
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/bluecherries = 1
)
result = /obj/item/reagent_containers/food/snacks/pie/frostypie
subcategory = CAT_PIE
/datum/crafting_recipe/food/strawberrypie
name = "Strawberry pie"
reqs = list(
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/strawberry = 1
)
result = /obj/item/reagent_containers/food/snacks/pie/strawberrypie
subcategory = CAT_PIE
/datum/crafting_recipe/food/baklava
name = "Baklava pie"
reqs = list(
/obj/item/reagent_containers/food/snacks/butter = 1,
/obj/item/reagent_containers/food/snacks/tortilla = 4, //Layers
/obj/item/seeds/wheat/oat = 3
)
result = /obj/item/reagent_containers/food/snacks/pie/baklava
subcategory = CAT_PIE
/datum/crafting_recipe/food/mimetart
name = "Mime tart"
always_availible = FALSE
reqs = list(
/datum/reagent/consumable/milk = 5,
/datum/reagent/consumable/sugar = 5,
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/datum/reagent/consumable/nothing = 5
)
result = /obj/item/reagent_containers/food/snacks/pie/mimetart
subcategory = CAT_PIE
/datum/crafting_recipe/food/berrytart
name = "Berry tart"
always_availible = FALSE
reqs = list(
/datum/reagent/consumable/milk = 5,
/datum/reagent/consumable/sugar = 5,
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/berries = 3
)
result = /obj/item/reagent_containers/food/snacks/pie/berrytart
subcategory = CAT_PIE
/datum/crafting_recipe/food/cocolavatart
name = "Chocolate Lava tart"
always_availible = FALSE
reqs = list(
/datum/reagent/consumable/milk = 5,
/datum/reagent/consumable/sugar = 5,
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/chocolatebar = 3,
/obj/item/slime_extract = 1
)
result = /obj/item/reagent_containers/food/snacks/pie/cocolavatart
subcategory = CAT_PIE
/datum/crafting_recipe/food/peachpie
name = "Peach Pie"
reqs = list(
/obj/item/reagent_containers/food/snacks/pie/plain = 1,
/obj/item/reagent_containers/food/snacks/grown/peach = 3
)
result = /obj/item/reagent_containers/food/snacks/pie/peachpie
subcategory = CAT_PIE