diff --git a/code/game/machinery/vending_machines_vr.dm b/code/game/machinery/vending_machines_vr.dm
index c53378411df..fbefa49966c 100644
--- a/code/game/machinery/vending_machines_vr.dm
+++ b/code/game/machinery/vending_machines_vr.dm
@@ -3750,10 +3750,28 @@
/obj/item/weapon/reagent_containers/food/snacks/donerkebab = 10,
/obj/item/weapon/reagent_containers/food/snacks/donkpocket = 10,
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket = 10,
- /obj/item/weapon/reagent_containers/food/snacks/donut = 10,
- /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly = 10,
- /obj/item/weapon/reagent_containers/food/snacks/donut/jelly = 10,
- /obj/item/weapon/reagent_containers/food/snacks/donut/normal = 10,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/pink = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/pink/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/purple = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/purple/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/green = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/green/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/beige = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/beige/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/blue = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/blue/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/yellow = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/yellow/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/olive = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/olive/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/homer = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/homer/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles/jelly = 2,
/obj/item/weapon/reagent_containers/food/snacks/egg_pancake = 10,
/obj/item/weapon/reagent_containers/food/snacks/eggbowl = 10,
/obj/item/weapon/reagent_containers/food/snacks/eggplantparm = 10,
@@ -3985,8 +4003,8 @@
/obj/item/weapon/reagent_containers/food/snacks/brainburger = 10,
/obj/item/weapon/reagent_containers/food/snacks/chaoscakeslice = 10,
/obj/item/weapon/reagent_containers/food/snacks/donut/chaos = 10,
- /obj/item/weapon/reagent_containers/food/snacks/donut/poisonberry = 10,
- /obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly = 10,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/poisonberry = 10,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/slimejelly = 10,
/obj/item/weapon/reagent_containers/food/snacks/ghostmuffin/poison = 10,
/obj/item/weapon/reagent_containers/food/snacks/old/hotdog = 10,
/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice = 10,
@@ -4064,7 +4082,10 @@
/obj/item/weapon/reagent_containers/food/snacks/sliceable/sharkchunk = 10,
/obj/item/weapon/reagent_containers/food/snacks/spagetti = 10,
/obj/item/weapon/reagent_containers/food/snacks/xenomeat = 10,
- /obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat = 10)
+ /obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat = 10,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_burger = 10,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_hotdog = 10,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_burrito = 10)
vend_delay = 15
/obj/machinery/vending/event/food/safe //FOR FACILITATING/OUTFITTING EVENTS, DO NOT PUT THESE ON THE MAP//
@@ -4212,10 +4233,28 @@
/obj/item/weapon/reagent_containers/food/snacks/donerkebab = 10,
/obj/item/weapon/reagent_containers/food/snacks/donkpocket = 10,
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket = 10,
- /obj/item/weapon/reagent_containers/food/snacks/donut = 10,
- /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly = 10,
- /obj/item/weapon/reagent_containers/food/snacks/donut/jelly = 10,
- /obj/item/weapon/reagent_containers/food/snacks/donut/normal = 10,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/pink = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/pink/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/purple = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/purple/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/green = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/green/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/beige = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/beige/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/blue = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/blue/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/yellow = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/yellow/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/olive = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/olive/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/homer = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/homer/jelly = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles/jelly = 2,
/obj/item/weapon/reagent_containers/food/snacks/egg_pancake = 10,
/obj/item/weapon/reagent_containers/food/snacks/eggbowl = 10,
/obj/item/weapon/reagent_containers/food/snacks/eggplantparm = 10,
@@ -4437,7 +4476,10 @@
/obj/item/weapon/reagent_containers/food/snacks/wingfangchu = 10,
/obj/item/weapon/reagent_containers/food/snacks/wishsoup = 10,
/obj/item/weapon/reagent_containers/food/snacks/yellowcurry = 10,
- /obj/item/weapon/reagent_containers/food/snacks/zestfish = 10)
+ /obj/item/weapon/reagent_containers/food/snacks/zestfish = 10,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_burger = 10,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_hotdog = 10,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_burrito = 10)
vend_delay = 15
/obj/machinery/vending/event/food/ingredients //FOR FACILITATING/OUTFITTING EVENTS, DO NOT PUT THESE ON THE MAP//
diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm
index fc73b3196cc..e09c9b1e5de 100644
--- a/code/game/objects/items/trash.dm
+++ b/code/game/objects/items/trash.dm
@@ -216,154 +216,170 @@
return
-/obj/item/trash/beef //ADDITION 04/11/2021
+/obj/item/trash/beef
name = "empty beef can"
icon_state = "beef"
drop_sound = 'sound/items/drop/soda.ogg'
pickup_sound = 'sound/items/pickup/soda.ogg'
-/obj/item/trash/beans //ADDITION 04/11/2021
+/obj/item/trash/beans
name = "empty bean can"
icon_state = "beans"
drop_sound = 'sound/items/drop/soda.ogg'
pickup_sound = 'sound/items/pickup/soda.ogg'
-/obj/item/trash/spinach //ADDITION 04/11/2021
+/obj/item/trash/spinach
name = "empty spinach can"
icon_state = "spinach"
drop_sound = 'sound/items/drop/soda.ogg'
pickup_sound = 'sound/items/pickup/soda.ogg'
-/obj/item/trash/fishegg //ADDITION 04/11/2021
+/obj/item/trash/fishegg
name = "empty fisheggs can"
icon_state = "fisheggs"
drop_sound = 'sound/items/drop/soda.ogg'
pickup_sound = 'sound/items/pickup/soda.ogg'
-/obj/item/trash/carpegg //ADDITION 04/11/2021
+/obj/item/trash/carpegg
name = "empty carpeggs can"
icon_state = "carpeggs"
drop_sound = 'sound/items/drop/soda.ogg'
pickup_sound = 'sound/items/pickup/soda.ogg'
-/obj/item/trash/salo //ADDITION 04/11/2021
+/obj/item/trash/salo
name = "salo pack"
icon_state = "pigfat"
-/obj/item/trash/croutons //ADDITION 04/11/2021
+/obj/item/trash/croutons
name = "suhariki pack"
icon_state = "croutons"
-/obj/item/trash/squid //ADDITION 04/11/2021
+/obj/item/trash/squid
name = "calamari pack"
icon_state = "squid"
-/obj/item/trash/driedfish //ADDITION 04/11/2021
+/obj/item/trash/driedfish
name = "vobla pack"
icon_state = "driedfish"
-/obj/item/trash/lunacakewrap //ADDITION 04/11/2021
+/obj/item/trash/lunacakewrap
name = "cake wrapper"
icon_state = "cakewrap"
-/obj/item/trash/mochicakewrap //ADDITION 04/11/2021
+/obj/item/trash/mochicakewrap
name = "cake wrapper"
icon_state = "mochicakewrap"
-/obj/item/trash/mooncakewrap //ADDITION 04/11/2021
+/obj/item/trash/mooncakewrap
name = "cake wrapper"
icon_state = "mooncakewrap"
-/obj/item/trash/tidegobs//ADDITION 04/11/2021
+/obj/item/trash/tidegobs
name = "tide gob bag"
icon_state = "tidegobs"
-/obj/item/trash/saturno//ADDITION 04/11/2021
+/obj/item/trash/saturno
name = "\improper saturn-Os bag"
icon_state = "saturn0s"
-/obj/item/trash/jupiter//ADDITION 04/11/2021
+/obj/item/trash/jupiter
name = "gello cup"
icon_state = "jupiter"
-/obj/item/trash/pluto//ADDITION 04/11/2021
+/obj/item/trash/pluto
name = "rod bag"
icon_state = "pluto"
-/obj/item/trash/venus//ADDITION 04/11/2021
+/obj/item/trash/venus
name = "hot cakes bag"
icon_state = "venus"
-/obj/item/trash/mars//ADDITION 04/11/2021
+/obj/item/trash/mars
name = "frouka box"
icon_state = "mars"
-/obj/item/trash/oort//ADDITION 04/11/2021
+/obj/item/trash/oort
name = "oort rock bag"
icon_state = "oort"
-/obj/item/trash/weebonuts//ADDITION 04/11/2021
+/obj/item/trash/weebonuts
name = "red alert nuts bag"
icon_state = "weebonuts"
-/obj/item/trash/stick//ADDITION 04/11/2021
+/obj/item/trash/stick
name = "stick"
desc = "a stick from some snack or other food item, not even useful as crafting material."
icon_state = "stick"
-/obj/item/trash/maps//ADDITION 04/13/2021
+/obj/item/trash/maps
name = "empty MAPS can"
icon_state = "maps"
drop_sound = 'sound/items/drop/soda.ogg'
pickup_sound = 'sound/items/pickup/soda.ogg'
-/obj/item/trash/spacer_cake_wrap//ADDITION 04/14/2021
+/obj/item/trash/spacer_cake_wrap
name = "snack cake wrapper"
icon_state = "spacer_cake_wrap"
-/obj/item/trash/sun_snax//ADDITION 04/14/2021
+/obj/item/trash/sun_snax
name = "sun snax bag"
icon_state = "sun_snax"
-/obj/item/trash/wasabi_peas//ADDITION 04/14/2021
+/obj/item/trash/wasabi_peas
name = "wasabi peas bag"
icon_state = "wasabi_peas"
-/obj/item/trash/namagashi//ADDITION 04/14/2021
+/obj/item/trash/namagashi
name = "namagashi bag"
icon_state = "namagashi"
-/obj/item/trash/pocky//ADDITION 04/14/2021
+/obj/item/trash/pocky
name = "pocky bag"
icon_state = "pocky"
-/obj/item/trash/appleberry//ADDITION 04/14/2021
+/obj/item/trash/appleberry
name = "appleberry can"
icon_state = "appleberry"
drop_sound = 'sound/items/drop/soda.ogg'
pickup_sound = 'sound/items/pickup/soda.ogg'
-/obj/item/trash/hakarl//ADDITION 04/22/2021
+/obj/item/trash/hakarl
name = "\improper Indigo Co. Hákarl bag"
icon_state = "hakarl"
-/obj/item/trash/pretzel//ADDITION 04/22/2021
+/obj/item/trash/pretzel
name = "\improper Value Pretzel Snack"
icon_state = "pretzel"
-/obj/item/trash/sweetration//ADDITION 04/20/2021
+/obj/item/trash/sweetration
name = "desert ration bag"
icon_state = "baseration"
-/obj/item/trash/genration//ADDITION 04/20/2021
+/obj/item/trash/genration
name = "generic ration bag"
icon_state = "genration"
-/obj/item/trash/meatration//ADDITION 04/20/2021
+/obj/item/trash/meatration
name = "meat ration bag"
icon_state = "meatration"
-/obj/item/trash/vegration//ADDITION 04/20/2021
+/obj/item/trash/vegration
name = "veggie ration bag"
icon_state = "vegration"
+/obj/item/trash/tgmc_mre
+ name = "\improper CRS ration bag"
+ icon_state = "tgmc_mre_trash"
+
+/obj/item/trash/vendor_burger
+ name = "burger wrapper"
+ icon_state = "packburger_wrapper"
+
+/obj/item/trash/vendor_hotdog
+ name = "hotdog wrapper"
+ icon_state = "packhotdog_wrapper"
+
+/obj/item/trash/vendor_burrito
+ name = "burrito wrapper"
+ icon_state = "packburrito_wrapper"
+
diff --git a/code/game/objects/items/weapons/storage/misc.dm b/code/game/objects/items/weapons/storage/misc.dm
index 5c9be66e260..8b6384b9cba 100644
--- a/code/game/objects/items/weapons/storage/misc.dm
+++ b/code/game/objects/items/weapons/storage/misc.dm
@@ -2,8 +2,34 @@
* Donut Box
*/
+var/list/random_weighted_donuts = list(
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain = 5,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly = 5,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/pink = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/pink/jelly = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/purple = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/purple/jelly = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/green = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/green/jelly = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/beige = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/beige/jelly = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc/jelly = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/blue = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/blue/jelly = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/yellow = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/yellow/jelly = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/olive = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/olive/jelly = 4,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/homer = 3,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/homer/jelly = 3,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles = 3,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles/jelly = 3,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/chaos = 1
+)
+
/obj/item/weapon/storage/box/donut
- icon = 'icons/obj/food.dmi'
+ icon = 'icons/obj/food_donuts.dmi'
icon_state = "donutbox"
name = "donut box"
desc = "A box that holds tasty donuts, if you're lucky."
@@ -11,18 +37,24 @@
max_storage_space = ITEMSIZE_COST_SMALL * 6
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/donut)
foldable = /obj/item/stack/material/cardboard
- starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/donut/normal = 6)
+ //starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/donut/normal = 6)
/obj/item/weapon/storage/box/donut/Initialize()
+ if(!empty)
+ for(var/i in 1 to 6)
+ var/type_to_spawn = pickweight(random_weighted_donuts)
+ new type_to_spawn(src)
. = ..()
update_icon()
/obj/item/weapon/storage/box/donut/update_icon()
cut_overlays()
- var/i = 0
+ var/x_offset = 0
for(var/obj/item/weapon/reagent_containers/food/snacks/donut/D in contents)
- add_overlay("[i][D.overlay_state]")
- i++
+ var/mutable_appearance/ma = mutable_appearance(icon = icon, icon_state = D.overlay_state)
+ ma.pixel_x = x_offset
+ add_overlay(ma)
+ x_offset += 3
/obj/item/weapon/storage/box/donut/empty
empty = TRUE
diff --git a/code/game/objects/items/weapons/storage/mre.dm b/code/game/objects/items/weapons/storage/mre.dm
index 50536564d3b..390d4e4e8fa 100644
--- a/code/game/objects/items/weapons/storage/mre.dm
+++ b/code/game/objects/items/weapons/storage/mre.dm
@@ -288,3 +288,95 @@ MRE Stuff
/obj/item/weapon/storage/mrebag/dessert/menu11
starts_with = list(/obj/item/weapon/pen/crayon/rainbow)
+
+// TGMC MREs - Smaller, less trash
+/obj/item/weapon/storage/box/tgmc_mre
+ name = "\improper CRS MRE"
+ desc = "Meal Ready-to-Eat, meant to be consumed in the field, prepared by the Commonwealth Ration Service. It says it's government property..."
+ icon = 'icons/obj/food.dmi'
+ icon_state = "tgmc_mre"
+ w_class = ITEMSIZE_SMALL
+ can_hold = list()
+ storage_slots = 5
+ max_w_class = 0
+ foldable = null
+ var/isopened = 0
+
+/obj/item/weapon/storage/box/tgmc_mre/Initialize()
+ . = ..()
+ pickflavor()
+
+/obj/item/weapon/storage/box/tgmc_mre/Destroy()
+ var/turf/T = get_turf(src)
+ if(T)
+ new /obj/item/trash/tgmc_mre(T)
+ return ..()
+
+/obj/item/weapon/storage/box/tgmc_mre/proc/pickflavor()
+ var/entree = pick("boneless pork ribs", "grilled chicken", "pizza square", "spaghetti", "chicken tenders")
+ var/side = pick("meatballs", "cheese spread", "beef turnover", "mashed potatoes")
+ var/snack = pick("biscuit", "pretzels", "peanuts", "cracker")
+ var/desert = pick("spiced apples", "chocolate brownie", "sugar cookie", "choco bar")
+
+ name = "[initial(name)] ([entree])"
+
+ new /obj/item/weapon/reagent_containers/food/snacks/tgmc_mre_component(src, entree)
+ new /obj/item/weapon/reagent_containers/food/snacks/tgmc_mre_component(src, side)
+ new /obj/item/weapon/reagent_containers/food/snacks/tgmc_mre_component(src, snack)
+ new /obj/item/weapon/reagent_containers/food/snacks/tgmc_mre_component(src, desert)
+ new /obj/random/mre/drink(src)
+
+/obj/item/weapon/storage/box/tgmc_mre/remove_from_storage()
+ . = ..()
+ if(. && !contents.len && !gc_destroyed)
+ qdel(src)
+
+/obj/item/weapon/storage/box/tgmc_mre/update_icon()
+ if(!isopened)
+ isopened = 1
+ icon_state = "tgmc_mre_opened"
+
+// The sneaky food-looks-like-a-package items
+/obj/item/weapon/reagent_containers/food/snacks/tgmc_mre_component
+ name = "\improper MRE component"
+ package = TRUE
+ bitesize = 1
+ icon_state = "tgmcmre_entree"
+ var/flavor = "boneless pork ribs"
+
+/obj/item/weapon/reagent_containers/food/snacks/tgmc_mre_component/Initialize(mapload, newflavor)
+ determinetype(newflavor)
+ desc = "A packaged [flavor] from a Meal Ready-to-Eat, there is a lengthy list of [pick("obscure", "arcane", "unintelligible", "revolutionary", "sophisticated", "unspellable")] ingredients and addictives printed on the back."
+ . = ..()
+
+/obj/item/weapon/reagent_containers/food/snacks/tgmc_mre_component/unpackage(mob/user as mob)
+ . = ..()
+ name = "\improper" + flavor
+ desc = "The contents of a standard issue CRS MRE. This one is " + flavor + "."
+
+/obj/item/weapon/reagent_containers/food/snacks/tgmc_mre_component/proc/determinetype(newflavor)
+ name = "\improper MRE component" + " (" + newflavor + ")"
+ flavor = newflavor
+ var/static/tastes = list("something scrumptious","nothing","the usual grub","something mediocre","hell","heaven","tentalization","disgust","dog food","cat food","fish food","recycled pizza","junk","trash","rubbish","sawdust","nutraloafs","gourmand food","gourmet food","moistness","squalidness","old grub","actually good food","bleach","soap","sand","synthetic grub","blandness","prison food","Discount Dan's","Discount Dan's Special","Discount Dan's leftovers","yesterday leftovers","microwaved leftovers","leftovers","UPP rations","uncooked grub","overcooked grub","not-so-bad grub","pinapple pizza flavored grub","mystery food","burnt food","frozen food","lukewarm food","rancidness","processed grub","crunchiness","faux meat","something false","low-calorie food","high-carb food","transfat-free food","gluten-free food","delictableness","acid","mintiness","sauciness","saltiness","extreme saltiness","spiced grub","crispness","questionable grub","something untastable","bitterness","savoriness","sourness","sweetness","umami","chewing gum","shoe polish","the jungle","indigestion","oldberries","butter","lard","oil","grass","cough syrup","water","iron","rubber","lead","bronze","wood","paper","plastic","kevlar","cloth","buckshot","gunpowder","black powder","petroleum","gasoline","diesel","biofuel","paint","jelly","slime","sludge","tofu","dietetic food","counterfeit food","grossness","dryness","tartiness","cryogenic juice","the secret ingredient","the ninth element","compressed matter","deep-fried food","double-fried food","a culinary apocalypse","experimental post-modern cuisine","a disaster","muckiness","mustard","mordant","citruses","crayon dust")
+ var/new_taste = pick(tastes)
+
+ switch(newflavor)
+ if("boneless pork ribs", "grilled chicken", "pizza square", "spaghetti", "chicken tenders")
+ icon_state = "tgmcmre_entree"
+ nutriment_amt = 5
+ starts_with = list("sodiumchloride" = 1)
+ if("meatballs", "cheese spread", "beef turnover", "mashed potatoes")
+ icon_state = "tgmcmre_side"
+ nutriment_amt = 3
+ starts_with = list("sodiumchloride" = 1)
+ if("biscuit", "pretzels", "peanuts", "cracker")
+ icon_state = "tgmcmre_snack"
+ nutriment_amt = 2
+ starts_with = list("sodiumchloride" = 1)
+ if("spiced apples", "chocolate brownie", "sugar cookie", "choco bar")
+ icon_state = "tgmcmre_dessert"
+ nutriment_amt = 2
+ starts_with = list("sugar" = 1)
+
+ package_open_state = "tgmcmre_[flavor]"
+ nutriment_desc = list("[new_taste]" = nutriment_amt)
diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm
index e4d18b5cc61..3183d26fe74 100644
--- a/code/game/objects/random/misc.dm
+++ b/code/game/objects/random/misc.dm
@@ -412,10 +412,28 @@
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white,
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/truffle,
/obj/item/weapon/reagent_containers/food/snacks/chocolateegg,
- /obj/item/weapon/reagent_containers/food/snacks/donut,
- /obj/item/weapon/reagent_containers/food/snacks/donut/normal,
- /obj/item/weapon/reagent_containers/food/snacks/donut/jelly,
- /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/pink,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/pink/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/purple,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/purple/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/green,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/green/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/beige,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/beige/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/blue,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/blue/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/yellow,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/yellow/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/olive,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/olive/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/homer,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/homer/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles/jelly,
/obj/item/weapon/reagent_containers/food/snacks/tuna,
/obj/item/weapon/reagent_containers/food/snacks/pistachios,
/obj/item/weapon/reagent_containers/food/snacks/semki,
@@ -838,8 +856,8 @@
/obj/random/mre/dessert/item_to_spawn()
return pick(/obj/item/weapon/reagent_containers/food/snacks/candy,
/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar,
- /obj/item/weapon/reagent_containers/food/snacks/donut/normal,
- /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly,
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
/obj/item/weapon/reagent_containers/food/snacks/cookiesnack)
@@ -850,7 +868,7 @@
/obj/random/mre/dessert/vegan/item_to_spawn()
return pick(/obj/item/weapon/reagent_containers/food/snacks/candy,
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
- /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly,
/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit)
/obj/random/mre/drink
diff --git a/code/modules/economy/vending_machines.dm b/code/modules/economy/vending_machines.dm
index 60088c1e96c..d1c77d3f972 100644
--- a/code/modules/economy/vending_machines.dm
+++ b/code/modules/economy/vending_machines.dm
@@ -158,6 +158,9 @@
/obj/item/weapon/reagent_containers/food/snacks/pistachios = 12,
/obj/item/weapon/reagent_containers/food/snacks/semki = 12,
/obj/item/weapon/reagent_containers/food/snacks/sosjerky = 12,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_burger = 12,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_hotdog = 12,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_burrito = 12,
/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 12,
/obj/item/weapon/reagent_containers/food/snacks/packaged/spacetwinkie = 12,
/obj/item/weapon/reagent_containers/food/snacks/tastybread = 12,
@@ -188,6 +191,9 @@
/obj/item/weapon/reagent_containers/food/snacks/pistachios = 1,
/obj/item/weapon/reagent_containers/food/snacks/semki = 1,
/obj/item/weapon/reagent_containers/food/snacks/sosjerky = 2,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_burger = 7,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_hotdog = 7,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_burrito = 7,
/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 1,
/obj/item/weapon/reagent_containers/food/snacks/packaged/spacetwinkie = 1,
/obj/item/weapon/reagent_containers/food/snacks/tastybread = 2,
@@ -439,7 +445,8 @@
products = list(/obj/item/weapon/handcuffs = 8,
/obj/item/weapon/grenade/flashbang = 4,
/obj/item/device/flash = 5,
- /obj/item/weapon/reagent_containers/food/snacks/donut/normal = 12,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain = 6,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly = 6,
/obj/item/weapon/storage/box/evidence = 6)
contraband = list(/obj/item/clothing/glasses/sunglasses = 2,
/obj/item/weapon/storage/box/donut = 2)
@@ -1009,6 +1016,9 @@
/obj/item/weapon/reagent_containers/food/snacks/syndicake = 8,
/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 8,
/obj/item/weapon/reagent_containers/food/snacks/sosjerky = 8,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_burger = 8,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_hotdog = 8,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_burrito = 8,
/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 8,
/obj/item/weapon/reagent_containers/food/snacks/tastybread = 8,
/obj/item/weapon/reagent_containers/food/snacks/chips/bbq = 8,
@@ -1027,6 +1037,9 @@
/obj/item/weapon/reagent_containers/food/snacks/syndicake = 5,
/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 5,
/obj/item/weapon/reagent_containers/food/snacks/sosjerky = 5,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_burger = 5,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_hotdog = 5,
+ /obj/item/weapon/reagent_containers/food/snacks/vendor_burrito = 5,
/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 5,
/obj/item/weapon/reagent_containers/food/snacks/tastybread = 5,
/obj/item/weapon/reagent_containers/food/snacks/chips/bbq = 5,
diff --git a/code/modules/food/food/lunch.dm b/code/modules/food/food/lunch.dm
index 871e37e1872..6bbd434e435 100644
--- a/code/modules/food/food/lunch.dm
+++ b/code/modules/food/food/lunch.dm
@@ -12,8 +12,8 @@ var/list/lunchables_lunches_ = list(/obj/item/weapon/reagent_containers/food/sna
/obj/item/weapon/reagent_containers/food/snacks/tossedsalad,
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose)
-var/list/lunchables_snacks_ = list(/obj/item/weapon/reagent_containers/food/snacks/donut/jelly,
- /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly,
+var/list/lunchables_snacks_ = list(/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly,
+ /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/cherryjelly,
/obj/item/weapon/reagent_containers/food/snacks/muffin,
/obj/item/weapon/reagent_containers/food/snacks/popcorn,
/obj/item/weapon/reagent_containers/food/snacks/sosjerky,
diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm
index 68a9ca739b7..5605a5a7022 100644
--- a/code/modules/food/food/snacks.dm
+++ b/code/modules/food/food/snacks.dm
@@ -4,6 +4,10 @@
desc = "yummy"
icon = 'icons/obj/food.dmi'
icon_state = null
+ center_of_mass = list("x"=16, "y"=16)
+ w_class = ITEMSIZE_SMALL
+ force = 0
+
var/bitesize = 1
var/bitecount = 0
var/trash = null
@@ -17,12 +21,18 @@
var/datum/reagent/nutriment/coating/coating = null
var/icon/flat_icon = null //Used to cache a flat icon generated from dipping in batter. This is used again to make the cooked-batter-overlay
var/do_coating_prefix = 1 //If 0, we wont do "battered thing" or similar prefixes. Mainly for recipes that include batter but have a special name
- var/cooked_icon = null //Used for foods that are "cooked" without being made into a specific recipe or combination.
- //Generally applied during modification cooking with oven/fryer
- //Used to stop deepfried meat from looking like slightly tanned raw meat, and make it actually look cooked
- center_of_mass = list("x"=16, "y"=16)
- w_class = ITEMSIZE_SMALL
- force = 0
+
+ /// Used for foods that are "cooked" without being made into a specific recipe or combination.
+ /// Generally applied during modification cooking with oven/fryer
+ /// Used to stop deepfried meat from looking like slightly tanned raw meat, and make it actually look cooked
+ var/cooked_icon = null
+
+ /// If this has a wrapper on it. If true, it will print a message and ask you to remove it
+ var/package = FALSE
+ /// Packaged meals drop this trash type item when opened, if set
+ var/package_trash
+ /// Packaged meals switch to this state when opened, if set
+ var/package_open_state
/obj/item/weapon/reagent_containers/food/snacks/Initialize()
. = ..()
@@ -47,7 +57,8 @@
return
/obj/item/weapon/reagent_containers/food/snacks/attack_self(mob/user as mob)
- return
+ if(package && !user.incapacitated())
+ unpackage(user)
/obj/item/weapon/reagent_containers/food/snacks/attack(mob/living/M as mob, mob/user as mob, def_zone)
if(reagents && !reagents.total_volume)
@@ -56,6 +67,10 @@
qdel(src)
return 0
+ if(package)
+ to_chat(M, "How do you expect to eat this with the package still on?")
+ return FALSE
+
if(istype(M, /mob/living/carbon))
//TODO: replace with standard_feed_mob() call.
@@ -238,6 +253,18 @@
something.dropInto(loc)
. = ..()
+ return
+
+/obj/item/weapon/reagent_containers/food/snacks/proc/unpackage(mob/user)
+ package = FALSE
+ to_chat(user, "You unwrap [src].")
+ playsound(user,'sound/effects/pageturn2.ogg', 15, 1)
+ if(package_trash)
+ var/obj/item/T = new package_trash
+ user.put_in_hands(T)
+ if(package_open_state)
+ icon_state = package_open_state
+
////////////////////////////////////////////////////////////////////////////////
/// FOOD END
////////////////////////////////////////////////////////////////////////////////
@@ -384,43 +411,256 @@
name = "donut"
desc = "Goes great with Robust Coffee."
description_fluff = "These donuts claim to be made fresh daily in a boutique bakery in New Reykjavik and delivered to Nanotrasen's hardworking asset protection crew. They're probably synthesized."
- icon_state = "donut1"
+ icon = 'icons/obj/food_donuts.dmi'
+ icon_state = "donut"
filling_color = "#D9C386"
- var/overlay_state = "box-donut1"
- center_of_mass = list("x"=13, "y"=16)
nutriment_desc = list("sweetness", "donut")
-
-/obj/item/weapon/reagent_containers/food/snacks/donut/normal
- name = "donut"
- desc = "Goes great with Robust Coffee."
- icon_state = "donut1"
nutriment_amt = 3
- bitesize = 3
+ bitesize = 4
+ var/overlay_state = "donut_inbox"
-/obj/item/weapon/reagent_containers/food/snacks/donut/normal/Initialize()
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain
+ name = "plain donut"
+ icon_state = "donut"
+ desc = "A plain ol' donut."
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly
+ name = "plain jelly donut"
+ icon_state = "jelly"
+ desc = "At least this one has jelly!"
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/pink
+ name = "pink frosted donut"
+ icon_state = "donut_pink"
+ desc = "This one has pink frosting!"
+ overlay_state = "donut_pink_inbox"
+/obj/item/weapon/reagent_containers/food/snacks/donut/pink/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/pink/jelly
+ name = "pink frosted jelly donut"
+ icon_state = "jelly_pink"
+ desc = "This one has pink frosting and a jelly filling!"
+/obj/item/weapon/reagent_containers/food/snacks/donut/pink/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/purple
+ name = "purple frosted donut"
+ icon_state = "donut_purple"
+ desc = "This one has purple frosting!"
+ overlay_state = "donut_purple_inbox"
+/obj/item/weapon/reagent_containers/food/snacks/donut/purple/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/purple/jelly
+ name = "purple frosted jelly donut"
+ icon_state = "jelly_purple"
+ desc = "This one has purple frosting and a jelly filling!"
+/obj/item/weapon/reagent_containers/food/snacks/donut/purple/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/green
+ name = "green frosted donut"
+ icon_state = "donut_green"
+ desc = "This one has green frosting!"
+ overlay_state = "donut_green_inbox"
+/obj/item/weapon/reagent_containers/food/snacks/donut/green/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/green/jelly
+ name = "green frosted jelly donut"
+ icon_state = "jelly_green"
+ desc = "This one has green frosting and a jelly filling!"
+/obj/item/weapon/reagent_containers/food/snacks/donut/green/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/beige
+ name = "beige frosted donut"
+ icon_state = "donut_beige"
+ desc = "This one has beige frosting!"
+ overlay_state = "donut_beige_inbox"
+/obj/item/weapon/reagent_containers/food/snacks/donut/beige/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/beige/jelly
+ name = "beige frosted jelly donut"
+ icon_state = "jelly_beige"
+ desc = "This one has beige frosting and a jelly filling!"
+/obj/item/weapon/reagent_containers/food/snacks/donut/beige/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/choc
+ name = "chocolate frosted donut"
+ icon_state = "donut_choc"
+ desc = "This one has chocolate frosting!"
+ overlay_state = "donut_choc_inbox"
+/obj/item/weapon/reagent_containers/food/snacks/donut/choc/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/choc/jelly
+ name = "chocolate frosted jelly donut"
+ icon_state = "jelly_choc"
+ desc = "This one has chocolate frosting and a jelly filling!"
+/obj/item/weapon/reagent_containers/food/snacks/donut/choc/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/blue
+ name = "blue frosted donut"
+ icon_state = "donut_blue"
+ desc = "This one has blue frosting!"
+ overlay_state = "donut_blue_inbox"
+/obj/item/weapon/reagent_containers/food/snacks/donut/blue/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/blue/jelly
+ name = "blue frosted jelly donut"
+ icon_state = "jelly_blue"
+ desc = "This one has blue frosting and a jelly filling!"
+/obj/item/weapon/reagent_containers/food/snacks/donut/blue/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/yellow
+ name = "yellow frosted donut"
+ icon_state = "donut_yellow"
+ desc = "This one has yellow frosting!"
+ overlay_state = "donut_yellow_inbox"
+/obj/item/weapon/reagent_containers/food/snacks/donut/yellow/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/yellow/jelly
+ name = "yellow frosted jelly donut"
+ icon_state = "jelly_yellow"
+ desc = "This one has yellow frosting and a jelly filling!"
+/obj/item/weapon/reagent_containers/food/snacks/donut/yellow/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/olive
+ name = "olive frosted donut"
+ icon_state = "donut_olive"
+ desc = "This one has olive frosting!"
+ overlay_state = "donut_olive_inbox"
+/obj/item/weapon/reagent_containers/food/snacks/donut/olive/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/olive/jelly
+ name = "olive frosted jelly donut"
+ icon_state = "jelly_olive"
+ desc = "This one has olive frosting and a jelly filling!"
+/obj/item/weapon/reagent_containers/food/snacks/donut/olive/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/homer
+ name = "frosted donut with sprinkles"
+ icon_state = "donut_homer"
+ desc = "It's a d'ohnut!"
+ overlay_state = "donut_homer_inbox"
+/obj/item/weapon/reagent_containers/food/snacks/donut/homer/Initialize()
. = ..()
reagents.add_reagent("nutriment", 3, nutriment_desc)
reagents.add_reagent("sprinkles", 1)
- if(prob(30))
- src.icon_state = "donut2"
- src.overlay_state = "box-donut2"
- src.name = "frosted donut"
- reagents.add_reagent("sprinkles", 2)
- center_of_mass = list("x"=19, "y"=16)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/homer/jelly
+ name = "frosted jelly donut with sprinkles"
+ icon_state = "jelly_homer"
+ desc = "It's a d'ohnut with jelly filling!"
+/obj/item/weapon/reagent_containers/food/snacks/donut/homer/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("sprinkles", 1)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles
+ name = "chocolate sprinkles donut"
+ icon_state = "donut_choc_sprinkles"
+ desc = "Mmm, chocolate with sprinkles... approaching maximum donut."
+ overlay_state = "donut_choc_sprinkles_inbox"
+/obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("sprinkles", 1)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles/jelly
+ name = "chocolate sprinkles jelly donut"
+ icon_state = "jelly_choc_sprinkles"
+ desc = "Pretty sure this is the most sugar you can pack into a donut."
+/obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("sprinkles", 1)
+ reagents.add_reagent("berryjuice", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/meat
+ name = "meat donut"
+ icon_state = "donut_meat"
+ desc = "This donut has ... meat? Is it made of meat?!"
+ overlay_state = "donut_meat_inbox"
+/obj/item/weapon/reagent_containers/food/snacks/donut/meat/Initialize()
+ . = ..()
+ reagents.add_reagent("protein", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/laugh
+ name = "laugh donut"
+ icon_state = "donut_laugh"
+ desc = "Try not to laugh."
+ overlay_state = "donut_laugh_inbox"
+/obj/item/weapon/reagent_containers/food/snacks/donut/laugh/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/donut/laugh/jelly
+ name = "laugh jelly donut"
+ icon_state = "jelly_laugh"
+ desc = "Try not to be jelly."
+/obj/item/weapon/reagent_containers/food/snacks/donut/laugh/jelly/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 3, nutriment_desc)
+ reagents.add_reagent("berryjuice", 5)
+
/obj/item/weapon/reagent_containers/food/snacks/donut/chaos
name = "Chaos Donut"
desc = "Like life, it never quite tastes the same."
- icon_state = "donut1"
+ icon_state = "donut_chaos"
filling_color = "#ED11E6"
nutriment_amt = 2
bitesize = 10
+ overlay_state = "donut_chaos_inbox"
/obj/item/weapon/reagent_containers/food/snacks/donut/chaos/Initialize()
. = ..()
reagents.add_reagent("sprinkles", 1)
- var/chaosselect = pick(1,2,3,4,5,6,7,8,9,10)
- switch(chaosselect)
+ switch(rand(1,10))
if(1)
reagents.add_reagent("nutriment", 3, nutriment_desc)
if(2)
@@ -441,87 +681,28 @@
reagents.add_reagent("berryjuice", 3)
if(10)
reagents.add_reagent("tricordrazine", 3)
- if(prob(30))
- src.icon_state = "donut2"
- src.overlay_state = "box-donut2"
- src.name = "Frosted Chaos Donut"
- reagents.add_reagent("sprinkles", 2)
-/obj/item/weapon/reagent_containers/food/snacks/donut/jelly
- name = "Jelly Donut"
- desc = "You jelly?"
- icon_state = "jdonut1"
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/poisonberry
filling_color = "#ED1169"
- center_of_mass = list("x"=16, "y"=11)
- nutriment_amt = 3
- bitesize = 5
-/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/Initialize()
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/poisonberry/Initialize()
. = ..()
- reagents.add_reagent("sprinkles", 1)
- reagents.add_reagent("berryjuice", 5)
- if(prob(30))
- src.icon_state = "jdonut2"
- src.overlay_state = "box-donut2"
- src.name = "Frosted Jelly Donut"
- reagents.add_reagent("sprinkles", 2)
-
-/obj/item/weapon/reagent_containers/food/snacks/donut/poisonberry
- name = "Jelly Donut"
- desc = "You jelly?"
- icon_state = "jdonut1"
- filling_color = "#ED1169"
- center_of_mass = list("x"=16, "y"=11)
- nutriment_amt = 3
- bitesize = 5
-
-/obj/item/weapon/reagent_containers/food/snacks/donut/poisonberry/Initialize()
- . = ..()
- reagents.add_reagent("sprinkles", 1)
reagents.add_reagent("poisonberryjuice", 5)
- if(prob(30))
- src.icon_state = "jdonut2"
- src.overlay_state = "box-donut2"
- src.name = "Frosted Jelly Donut"
- reagents.add_reagent("sprinkles", 2)
-/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly
- name = "Jelly Donut"
- desc = "You jelly?"
- icon_state = "jdonut1"
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/slimejelly
filling_color = "#ED1169"
- center_of_mass = list("x"=16, "y"=11)
- nutriment_amt = 3
- bitesize = 5
-/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly/Initialize()
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/slimejelly/Initialize()
. = ..()
- reagents.add_reagent("sprinkles", 1)
reagents.add_reagent("slimejelly", 5)
- if(prob(30))
- src.icon_state = "jdonut2"
- src.overlay_state = "box-donut2"
- src.name = "Frosted Jelly Donut"
- reagents.add_reagent("sprinkles", 2)
-/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly
- name = "Jelly Donut"
- desc = "You jelly?"
- icon_state = "jdonut1"
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/cherryjelly
filling_color = "#ED1169"
- center_of_mass = list("x"=16, "y"=11)
- nutriment_amt = 3
- bitesize = 5
-/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly/Initialize()
+/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/cherryjelly/Initialize()
. = ..()
- reagents.add_reagent("sprinkles", 1)
reagents.add_reagent("cherryjelly", 5)
- if(prob(30))
- src.icon_state = "jdonut2"
- src.overlay_state = "box-donut2"
- src.name = "Frosted Jelly Donut"
- reagents.add_reagent("sprinkles", 2)
+
/obj/item/weapon/reagent_containers/food/snacks/egg
name = "egg"
@@ -6920,3 +7101,36 @@
/obj/item/weapon/reagent_containers/food/snacks/packaged/sweetration/Initialize()
. = ..()
reagents.add_reagent("sugar", 6)
+
+/obj/item/weapon/reagent_containers/food/snacks/vendor_burger
+ name = "packaged burger"
+ icon_state = "packburger"
+ desc = "A burger stored in a plastic wrapping for vending machine distribution. Surely it tastes fine!"
+ package = TRUE
+ package_trash = /obj/item/trash/vendor_burger
+ package_open_state = "smolburger"
+ nutriment_amt = 3
+ nutriment_desc = list("stale burger" = 3)
+ starts_with = list("sodiumchloride" = 1)
+
+/obj/item/weapon/reagent_containers/food/snacks/vendor_hotdog
+ name = "packaged hotdog"
+ icon_state = "packhotdog"
+ desc = "A hotdog stored in a plastic wrapping for vending machine distribution. Surely it tastes fine!"
+ package = TRUE
+ package_trash = /obj/item/trash/vendor_hotdog
+ package_open_state = "smolhotdog"
+ nutriment_amt = 3
+ nutriment_desc = list("stale hotdog" = 3)
+ starts_with = list("sodiumchloride" = 1)
+
+/obj/item/weapon/reagent_containers/food/snacks/vendor_burrito
+ name = "packaged burrito"
+ icon_state = "packburrito"
+ desc = "A burrito stored in a plastic wrapping for vending machine distribution. Surely it tastes fine!"
+ package = TRUE
+ package_trash = /obj/item/trash/vendor_burrito
+ package_open_state = "smolburrito"
+ nutriment_amt = 3
+ nutriment_desc = list("stale burrito" = 3)
+ starts_with = list("sodiumchloride" = 1)
diff --git a/code/modules/food/recipes_fryer.dm b/code/modules/food/recipes_fryer.dm
index ba6884b10b3..bc977d8afb8 100644
--- a/code/modules/food/recipes_fryer.dm
+++ b/code/modules/food/recipes_fryer.dm
@@ -128,7 +128,7 @@
items = list(
/obj/item/weapon/reagent_containers/food/snacks/doughslice
)
- result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly
+ result = /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly
result_quantity = 2
/datum/recipe/jellydonut/poisonberry
@@ -136,15 +136,15 @@
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough
)
- result = /obj/item/weapon/reagent_containers/food/snacks/donut/poisonberry
+ result = /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/poisonberry
/datum/recipe/jellydonut/slime // Subtypes of jellydonut, appliance inheritance applies.
reagents = list("slimejelly" = 5, "sugar" = 5)
- result = /obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly
+ result = /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/slimejelly
/datum/recipe/jellydonut/cherry // Subtypes of jellydonut, appliance inheritance applies.
reagents = list("cherryjelly" = 5, "sugar" = 5)
- result = /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly
+ result = /obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly/cherryjelly
/datum/recipe/donut
appliance = FRYER
@@ -152,7 +152,7 @@
items = list(
/obj/item/weapon/reagent_containers/food/snacks/doughslice
)
- result = /obj/item/weapon/reagent_containers/food/snacks/donut/normal
+ result = /obj/item/weapon/reagent_containers/food/snacks/donut/plain
result_quantity = 2
/datum/recipe/chaosdonut
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 13bc02dda48..c26629a8bb6 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -138,7 +138,7 @@ var/list/slot_equipment_priority = list( \
/mob/proc/put_in_hands(var/obj/item/W)
if(!W)
return 0
- W.forceMove(get_turf(src))
+ W.forceMove(drop_location())
W.reset_plane_and_layer()
W.dropped()
return 0
diff --git a/code/modules/reagents/reagent_containers/_reagent_containers.dm b/code/modules/reagents/reagent_containers/_reagent_containers.dm
index 5c61d6a5ad4..10196da040d 100644
--- a/code/modules/reagents/reagent_containers/_reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers/_reagent_containers.dm
@@ -7,6 +7,7 @@
var/amount_per_transfer_from_this = 5
var/possible_transfer_amounts = list(5,10,15,25,30)
var/volume = 30
+ var/list/starts_with
/obj/item/weapon/reagent_containers/verb/set_APTFT() //set amount_per_transfer_from_this
set name = "Set transfer amount"
@@ -21,6 +22,16 @@
if(!possible_transfer_amounts)
src.verbs -= /obj/item/weapon/reagent_containers/verb/set_APTFT
create_reagents(volume)
+
+ if(starts_with)
+ var/total_so_far = 0
+ for(var/string in starts_with)
+ var/amt = starts_with[string] || 1
+ total_so_far += amt
+ reagents.add_reagent(string, amt)
+ if(total_so_far > volume)
+ warning("[src]([src.type]) starts with more reagents than it has total volume")
+ starts_with = null // it should gc, since it's just strings and numbers
/obj/item/weapon/reagent_containers/attack_self(mob/user as mob)
return
diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi
index 618566f6e22..aac77fedc84 100644
Binary files a/icons/obj/food.dmi and b/icons/obj/food.dmi differ
diff --git a/icons/obj/food_donuts.dmi b/icons/obj/food_donuts.dmi
new file mode 100644
index 00000000000..9dfb4efb21a
Binary files /dev/null and b/icons/obj/food_donuts.dmi differ
diff --git a/icons/obj/food_ingredients.dmi b/icons/obj/food_ingredients.dmi
index 4795180c2f4..97f47f65dc5 100644
Binary files a/icons/obj/food_ingredients.dmi and b/icons/obj/food_ingredients.dmi differ
diff --git a/icons/obj/trash.dmi b/icons/obj/trash.dmi
index 76f60a84ced..186a7877340 100644
Binary files a/icons/obj/trash.dmi and b/icons/obj/trash.dmi differ