diff --git a/code/datums/components/sizzle.dm b/code/datums/components/sizzle.dm
index 88fadb377ceb..ecb45e448d84 100644
--- a/code/datums/components/sizzle.dm
+++ b/code/datums/components/sizzle.dm
@@ -3,9 +3,11 @@
var/sizzlealpha = 0
dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
-/datum/component/sizzle/Initialize()
+/datum/component/sizzle/Initialize(_alpha)
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
+ if(_alpha)
+ sizzlealpha = _alpha
setup_sizzle()
/datum/component/sizzle/InheritComponent(datum/component/C, i_am_original)
diff --git a/code/modules/cargo/packs/food.dm b/code/modules/cargo/packs/food.dm
index 9c366406af5c..6bf438f22867 100644
--- a/code/modules/cargo/packs/food.dm
+++ b/code/modules/cargo/packs/food.dm
@@ -8,7 +8,7 @@
/datum/supply_pack/food/donkpockets
name = "Donk Pocket Variety Crate"
desc = "Featuring a line up of Donk Co.'s most popular pastry!"
- cost = 2000
+ cost = 500
contains = list(/obj/item/storage/box/donkpockets/donkpocketspicy,
/obj/item/storage/box/donkpockets/donkpocketteriyaki,
/obj/item/storage/box/donkpockets/donkpocketpizza,
@@ -25,7 +25,7 @@
/datum/supply_pack/food/pizza
name = "Pizza Crate"
desc = "Best prices on this side of the galaxy. All deliveries are guaranteed to be 99.5% anomaly-free!"
- cost = 3000// Best prices this side of the galaxy.
+ cost = 750// Best prices this side of the galaxy.
contains = list(/obj/item/pizzabox/margherita,
/obj/item/pizzabox/mushroom,
/obj/item/pizzabox/meat,
@@ -42,6 +42,19 @@
fourfiveeight.boxtag = P.boxtag
qdel(P)
+/datum/supply_pack/food/ration
+ name = "Ration Crate"
+ desc = "6 standerd issue rations."
+ cost = 500
+ contains = list(/obj/effect/spawner/lootdrop/ration,
+ /obj/effect/spawner/lootdrop/ration,
+ /obj/effect/spawner/lootdrop/ration,
+ /obj/effect/spawner/lootdrop/ration,
+ /obj/effect/spawner/lootdrop/ration,
+ /obj/effect/spawner/lootdrop/ration)
+ crate_name = "ration crate"
+ crate_type = /obj/structure/closet/crate
+
/*
Ingredients
*/
@@ -49,7 +62,7 @@
/datum/supply_pack/food/ingredients_basic
name = "Basic Ingredients Crate"
desc = "Get things cooking with this crate full of useful ingredients! Contains a dozen eggs, two slabs of meat, some flour, some rice, a bottle of milk, a bottle of soymilk, and a bag of sugar."
- cost = 1000
+ cost = 300
contains = list(/obj/item/reagent_containers/food/condiment/flour,
/obj/item/reagent_containers/food/condiment/flour,
/obj/item/reagent_containers/food/condiment/rice,
@@ -63,16 +76,17 @@
crate_name = "food crate"
crate_type = /obj/structure/closet/crate/freezer
-/datum/supply_pack/food/ingredients_specialized
- name = "Advanced Cooking Crate"
- desc = "For the discerning chef. Contains a bottle of enzyme, a salt shaker, a pepper mill, a bottle of ketchup, a bottle of hot sauce, and a bottle of cream."
- cost = 2000
+/datum/supply_pack/food/ingredients_condiments
+ name = "Condiments Crate"
+ desc = "A variety of garnishes for topping off your dish with a little extra pizzaz. Contains a bottle of enzyme, a salt shaker, a pepper mill, a bottle of ketchup, a bottle of hot sauce, a bottle of BBQ sauce, and a bottle of cream."
+ cost = 250
contains = list(/obj/item/reagent_containers/food/condiment/enzyme,
/obj/item/reagent_containers/food/condiment/saltshaker,
/obj/item/reagent_containers/food/condiment/peppermill,
/obj/item/reagent_containers/food/condiment/ketchup,
/obj/item/reagent_containers/food/condiment/hotsauce,
- /obj/item/reagent_containers/food/drinks/bottle/cream
+ /obj/item/reagent_containers/food/drinks/bottle/cream,
+ /obj/item/reagent_containers/food/condiment/bbqsauce
)
crate_name = "condiments crate"
crate_type = /obj/structure/closet/crate/freezer
@@ -80,7 +94,7 @@
/datum/supply_pack/food/ingredients_randomized
name = "Exotic Meat Crate"
desc = "The best cuts in the whole galaxy. Probably."
- cost = 1000
+ cost = 500
contains = list(/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime,
/obj/item/reagent_containers/food/snacks/meat/slab/killertomato,
/obj/item/reagent_containers/food/snacks/meat/slab/bear,
@@ -103,7 +117,7 @@
/datum/supply_pack/food/ingredients_randomized/meat
name = "Standard Meat Crate"
desc = "Less interesting cuts of meat, but filling nonetheless."
- cost = 1500
+ cost = 300
contains = list(/obj/item/reagent_containers/food/snacks/meat/slab,
/obj/item/reagent_containers/food/snacks/meat/slab/chicken,
/obj/item/reagent_containers/food/snacks/meat/slab/synthmeat,
@@ -116,7 +130,7 @@
/datum/supply_pack/food/ingredients_randomized/vegetables
name = "Vegetables Crate"
desc = "Grown in vats."
- cost = 1300
+ cost = 250
contains = list(/obj/item/reagent_containers/food/snacks/grown/chili,
/obj/item/reagent_containers/food/snacks/grown/corn,
/obj/item/reagent_containers/food/snacks/grown/tomato,
@@ -132,7 +146,7 @@
/datum/supply_pack/food/ingredients_randomized/fruits
name = "Fruit Crate"
desc = "Rich of vitamins, may contain oranges."
- cost = 1500
+ cost = 250
contains = list(/obj/item/reagent_containers/food/snacks/grown/citrus/lime,
/obj/item/reagent_containers/food/snacks/grown/citrus/orange,
/obj/item/reagent_containers/food/snacks/grown/citrus/lemon,
@@ -147,7 +161,7 @@
/datum/supply_pack/food/ingredients_randomized/grains
name = "Grains Crate"
desc = "A crate full of various grains. How interesting."
- cost = 1000
+ cost = 250
contains = list(/obj/item/reagent_containers/food/snacks/grown/wheat,
/obj/item/reagent_containers/food/snacks/grown/wheat,
/obj/item/reagent_containers/food/snacks/grown/wheat, //Weighted to be more common
@@ -162,7 +176,7 @@
/datum/supply_pack/food/ingredients_randomized/bread
name = "Bread Crate"
desc = "A crate full of various breads. Bready to either be eaten or made into delicious meals."
- cost = 1000
+ cost = 300
contains = list(/obj/item/food/bread/plain,
/obj/item/food/breadslice/plain,
/obj/item/food/breadslice/plain,
@@ -181,17 +195,16 @@
/datum/supply_pack/food/grill
name = "Grilling Starter Kit"
desc = "Sometimes the stresses of the world are too much to bear. Some times, for God's sake, you just want to grill. This crate is for those times."
- cost = 5000
+ cost = 1000
contains = list(/obj/item/stack/sheet/mineral/coal/five,
- /obj/machinery/grill/unwrenched,
- /obj/item/reagent_containers/food/drinks/soda_cans/xeno_energy)
+ /obj/machinery/grill/unwrenched)
crate_name = "grilling starter kit crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/food/grillfuel
name = "Grilling Fuel Kit"
desc = "Contains propane and propane accessories. (Note: doesn't contain any actual propane.)"
- cost = 2000
+ cost = 250
contains = list(/obj/item/stack/sheet/mineral/coal/ten)
crate_name = "grilling fuel kit crate"
@@ -202,7 +215,7 @@
/datum/supply_pack/food/hydrotank
name = "Hydroponics Backpack Crate"
desc = "Bring on the flood with this high-capacity backpack crate. Contains 500 units of life-giving H2O."
- cost = 1000
+ cost = 750
contains = list(/obj/item/watertank)
crate_name = "hydroponics backpack crate"
crate_type = /obj/structure/closet/crate/hydroponics
@@ -210,7 +223,7 @@
/datum/supply_pack/food/gardening
name = "Gardening Crate"
desc = "Supplies for growing a great garden! Contains two bottles of ammonia, two Plant-B-Gone spray bottles, a hatchet, cultivator, plant analyzer, as well as a pair of leather gloves and a botanist's apron."
- cost = 1500
+ cost = 500
contains = list(/obj/item/reagent_containers/spray/plantbgone,
/obj/item/reagent_containers/spray/plantbgone,
/obj/item/reagent_containers/glass/bottle/ammonia,
@@ -227,7 +240,7 @@
/datum/supply_pack/food/weedcontrol
name = "Weed Control Crate"
desc = "Contains a scythe, gasmask, and two anti-weed defoliant grenades, for when your garden grows out of control."
- cost = 1500
+ cost = 750
contains = list(/obj/item/scythe,
/obj/item/clothing/mask/gas,
/obj/item/grenade/chem_grenade/antiweed,
@@ -238,7 +251,7 @@
/datum/supply_pack/food/seeds
name = "Seeds Crate"
desc = "Big things have small beginnings. Contains fourteen different seeds."
- cost = 2000
+ cost = 750
contains = list(/obj/item/seeds/chili,
/obj/item/seeds/cotton,
/obj/item/seeds/berry,
@@ -259,7 +272,7 @@
/datum/supply_pack/food/exoticseeds
name = "Exotic Seeds Crate"
desc = "Any entrepreneuring botanist's dream. Contains eleven different seeds, including two mystery seeds!"
- cost = 3000
+ cost = 1000
contains = list(/obj/item/seeds/nettle,
/obj/item/seeds/plump,
/obj/item/seeds/liberty,
@@ -281,7 +294,7 @@
/datum/supply_pack/food/beekeeping_suits
name = "Beekeeper Suit Crate"
desc = "Bee business booming? Better be benevolent and boost botany by bestowing bi-Beekeeper-suits! Contains two beekeeper suits and matching headwear."
- cost = 2000
+ cost = 1000
contains = list(/obj/item/clothing/head/beekeeper_head,
/obj/item/clothing/suit/beekeeper_suit,
/obj/item/clothing/head/beekeeper_head,
@@ -292,7 +305,7 @@
/datum/supply_pack/food/beekeeping_fullkit
name = "Beekeeping Starter Crate"
desc = "BEES BEES BEES. Contains three honey frames, a beekeeper suit and helmet, flyswatter, bee house, and, of course, a pure-bred Nanotrasen-Standardized Queen Bee!"
- cost = 3000
+ cost = 2000
contains = list(/obj/structure/beebox/unwrenched,
/obj/item/honey_frame,
/obj/item/honey_frame,
@@ -304,16 +317,5 @@
crate_name = "beekeeping starter crate"
crate_type = /obj/structure/closet/crate/hydroponics
-/datum/supply_pack/food/ration
- name = "Ration Crate"
- desc = "6 standerd issue rations."
- cost = 2000
- contains = list(/obj/effect/spawner/lootdrop/ration,
- /obj/effect/spawner/lootdrop/ration,
- /obj/effect/spawner/lootdrop/ration,
- /obj/effect/spawner/lootdrop/ration,
- /obj/effect/spawner/lootdrop/ration,
- /obj/effect/spawner/lootdrop/ration)
- crate_name = "ration crate"
- crate_type = /obj/structure/closet/crate
+
diff --git a/code/modules/food_and_drinks/kitchen_machinery/grill.dm b/code/modules/food_and_drinks/kitchen_machinery/grill.dm
index c349c7511752..c150fe94498d 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/grill.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/grill.dm
@@ -9,7 +9,7 @@
layer = BELOW_OBJ_LAYER
use_power = NO_POWER_USE
var/grill_fuel = 0
- var/obj/item/reagent_containers/food/grilled_item
+ var/obj/item/reagent_containers/food/snacks/grilled_item
var/grill_time = 0
var/datum/looping_sound/grill/grill_loop
@@ -27,68 +27,74 @@
else
icon_state = "grill_open"
return ..()
+
+/obj/machinery/grill/examine(mob/user)
+ . = ..()
+ if(grill_fuel)
+ . += span_notice("\The [src] has [grill_fuel] units of fuel left.")
+ else
+ . += span_warning("\The [src] is out of fuel! Add some wood or coal!")
+
/obj/machinery/grill/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/stack/sheet/mineral/coal) || istype(I, /obj/item/stack/sheet/mineral/wood))
var/obj/item/stack/S = I
var/stackamount = S.get_amount()
- to_chat(user, "You put [stackamount] [I]s in [src].")
+ to_chat(user, span_notice("You put [stackamount] [I]s in [src]."))
if(istype(I, /obj/item/stack/sheet/mineral/coal))
- grill_fuel += (500 * stackamount)
- else
grill_fuel += (50 * stackamount)
+ else
+ grill_fuel += (5 * stackamount)
S.use(stackamount)
update_appearance()
return
if(I.resistance_flags & INDESTRUCTIBLE)
- to_chat(user, "You don't feel it would be wise to grill [I]...")
+ to_chat(user, span_warning("You don't feel it would be wise to grill [I]..."))
return ..()
- if(istype(I, /obj/item/reagent_containers))
- if(istype(I, /obj/item/reagent_containers/food) && !istype(I, /obj/item/reagent_containers/food/drinks))
- var/obj/item/reagent_containers/food/food_item = I
- if(HAS_TRAIT(food_item, TRAIT_NODROP) || (food_item.item_flags & (ABSTRACT | DROPDEL)))
- return ..()
- else if(food_item.foodtype & GRILLED)
- to_chat(user, "[food_item] has already been grilled!")
- return
- else if(!grill_fuel)
- to_chat(user, "There is not enough fuel!")
- return
- else if(!grilled_item && user.transferItemToLoc(food_item, src))
- grilled_item = food_item
- grilled_item.foodtype |= GRILLED
- to_chat(user, "You put the [grilled_item] on [src].")
- update_appearance()
- grill_loop.start()
- return
- else
- if(I.reagents.has_reagent(/datum/reagent/consumable/xeno_energy))
- grill_fuel += (20 * (I.reagents.get_reagent_amount(/datum/reagent/consumable/xeno_energy)))
- to_chat(user, "You pour the Monkey Energy in [src].")
- I.reagents.remove_reagent(/datum/reagent/consumable/xeno_energy, I.reagents.get_reagent_amount(/datum/reagent/consumable/xeno_energy))
- update_appearance()
- return
+
+ if(istype(I, /obj/item/reagent_containers/food/snacks))
+ var/obj/item/reagent_containers/food/snacks/food_item = I
+ if(HAS_TRAIT(food_item, TRAIT_NODROP) || (food_item.item_flags & (ABSTRACT | DROPDEL)))
+ return ..()
+ else if(food_item.foodtype & GRILLED)
+ to_chat(user, span_notice("[food_item] has already been grilled!"))
+ return
+ else if(grill_fuel <= 0)
+ to_chat(user, span_warning("There is not enough fuel!"))
+ return
+ else if(grilled_item)
+ to_chat(user,span_warning("\The [src] is already grilling something, take it out first!"))
+ return
+ else if(user.transferItemToLoc(food_item, src))
+ START_PROCESSING(SSmachines, src)
+ grilled_item = food_item
+ to_chat(user, span_notice("You put the [grilled_item] on [src]."))
+ update_appearance()
+ grill_loop.start()
+ return
..()
/obj/machinery/grill/process()
..()
+ if(!grilled_item)
+ return PROCESS_KILL
update_appearance()
- if(!grill_fuel)
+ if(grill_fuel <= 0)
+ grill_fuel = 0
+ visible_message(span_warning("\The [src] is out of fuel!"))
+ if(grilled_item)
+ grilled_item.forceMove(loc)
+ finish_grill()
return
- else
- grill_fuel -= 1
- if(prob(1))
- var/datum/effect_system/smoke_spread/bad/smoke = new
- smoke.set_up(1, loc)
- smoke.start()
- if(grilled_item)
- grill_time += 1
- grill_fuel -= 10
- grilled_item.AddComponent(/datum/component/sizzle)
+ grill_time += 1
+ grill_fuel -= 1
+ if(prob(1))
+ var/datum/effect_system/smoke_spread/bad/smoke = new
+ smoke.set_up(1, loc)
+ smoke.start()
/obj/machinery/grill/Exited(atom/movable/AM)
if(AM == grilled_item)
finish_grill()
- grilled_item = null
. = ..()
/obj/machinery/grill/Destroy()
@@ -118,13 +124,15 @@
/obj/machinery/grill/attack_hand(mob/user)
if(grilled_item)
- to_chat(user, "You take out [grilled_item] from [src].")
+ to_chat(user, span_notice("You take out [grilled_item] from [src]."))
grilled_item.forceMove(drop_location())
update_appearance()
return
return ..()
/obj/machinery/grill/proc/finish_grill()
+ if(grill_time >= 10 && grilled_item.cooked_type)
+ grilled_item = grilled_item.microwave_act()
switch(grill_time) //no 0-9 to prevent spam
if(10 to 15)
grilled_item.name = "lightly-grilled [grilled_item.name]"
@@ -141,8 +149,12 @@
grilled_item.name = "Powerfully Grilled [grilled_item.name]"
grilled_item.desc = "A [grilled_item.name]. Reminds you of your wife, wait, no, it's prettier!"
grilled_item.foodtype |= FRIED
+ grilled_item.AddComponent(/datum/component/sizzle, (grill_time * 7.5))
+ grilled_item.foodtype |= GRILLED
grill_time = 0
grill_loop.stop()
+ grilled_item = null
+ update_appearance()
/obj/machinery/grill/unwrenched
anchored = FALSE