diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm index 283bcba679f7..a4c6bdc05795 100644 --- a/code/__DEFINES/construction.dm +++ b/code/__DEFINES/construction.dm @@ -96,6 +96,7 @@ #define CAT_LIZARD "Lizard Food" #define CAT_MEAT "Meats" #define CAT_SEAFOOD "Seafood" +#define CAT_MARTIAN "Martian Food" #define CAT_MISCFOOD "Misc. Food" #define CAT_MEXICAN "Mexican Food" #define CAT_MOTH "Mothic Food" @@ -118,6 +119,7 @@ GLOBAL_LIST_INIT(crafting_category_food, list( CAT_LIZARD, CAT_MEAT, CAT_SEAFOOD, + CAT_MARTIAN, CAT_MISCFOOD, CAT_MEXICAN, CAT_MOTH, diff --git a/code/__DEFINES/stamina.dm b/code/__DEFINES/stamina.dm index 94c743c79b26..df8badbf2c0f 100644 --- a/code/__DEFINES/stamina.dm +++ b/code/__DEFINES/stamina.dm @@ -77,3 +77,8 @@ #define STAMINA_GRAB_AGGRESSIVE_RESIST_CHANCE 60 /// Chance to resist out of chokeholds grabs. #define STAMINA_GRAB_CHOKE_RESIST_CHANCE 45 + +//// +/// TRAITS +//// +#define TRAIT_CANT_STAMCRIT "cant_stamcrit" diff --git a/code/controllers/subsystem/events.dm b/code/controllers/subsystem/events.dm index ecae06bbfdb7..53181e24e844 100644 --- a/code/controllers/subsystem/events.dm +++ b/code/controllers/subsystem/events.dm @@ -14,10 +14,13 @@ SUBSYSTEM_DEF(events) var/wizardmode = FALSE /datum/controller/subsystem/events/Initialize() - for(var/type in typesof(/datum/round_event_control)) - var/datum/round_event_control/event = new type() - if(!event.typepath || !event.valid_for_map()) - continue //don't want this one! leave it for the garbage collector + for(var/datum/round_event_control/event_type as anything in typesof(/datum/round_event_control)) + if(!event_type::typepath || !event_type::name) + continue + var/datum/round_event_control/event = new event_type + if(!event.valid_for_map()) + qdel(event) + continue control += event //add it to the list of all events (controls) reschedule() // Instantiate our holidays list if it hasn't been already diff --git a/code/datums/mood_events/drink_events.dm b/code/datums/mood_events/drink_events.dm index f9c54b1b8cc8..e18938d5fd40 100644 --- a/code/datums/mood_events/drink_events.dm +++ b/code/datums/mood_events/drink_events.dm @@ -39,6 +39,6 @@ timeout = 10 MINUTES /datum/mood_event/wellcheers - description = "What a tasty can of Wellcheers! The salty grape taste is a great pick-me-up." + description = "What a tasty can of Wellcheers! The salty grape flavor is a great pick-me-up." mood_change = 3 timeout = 7 MINUTES diff --git a/code/game/machinery/computer/orders/order_items/cook/order_milk_eggs.dm b/code/game/machinery/computer/orders/order_items/cook/order_milk_eggs.dm index d3fb31fec302..12ceaee8d3f0 100644 --- a/code/game/machinery/computer/orders/order_items/cook/order_milk_eggs.dm +++ b/code/game/machinery/computer/orders/order_items/cook/order_milk_eggs.dm @@ -31,6 +31,11 @@ item_path = /obj/item/food/fishmeat cost_per_order = 12 +/datum/orderable_item/milk_eggs/octopus + name = "Octopus Tentacle" + item_path = /obj/item/food/fishmeat/octopus + cost_per_order = 12 + /datum/orderable_item/milk_eggs/spider_eggs name = "Spider Eggs" item_path = /obj/item/food/spidereggs @@ -65,6 +70,16 @@ item_path = /obj/item/food/canned/pine_nuts cost_per_order = 20 +/datum/orderable_item/milk_eggs/canned_squid_ink + name = "Canned Squid Ink" + item_path = /obj/item/food/canned/squid_ink + cost_per_order = 20 + +/datum/orderable_item/milk_eggs/chap + name = "Can of CHAP" + item_path = /obj/item/food/canned/chap + cost_per_order = 20 + /datum/orderable_item/milk_eggs/ready_donk name = "Ready-Donk Meal: Bachelor Chow" item_path = /obj/item/food/ready_donk @@ -80,6 +95,16 @@ item_path = /obj/item/food/ready_donk/donkhiladas cost_per_order = 40 +/datum/orderable_item/milk_eggs/ready_donk_nachos + name = "Ready-Donk Meal: Donk Sol Series Boritos Nachos Grandes" + item_path = /obj/item/food/ready_donk/nachos_grandes + cost_per_order = 40 + +/datum/orderable_item/milk_eggs/ready_donk_orange + name = "Ready-Donk Meal: Donk-range Chicken" + item_path = /obj/item/food/ready_donk/donkrange_chicken + cost_per_order = 40 + /datum/orderable_item/milk_eggs/tiziran_goods name = "Tiziran Farm-Fresh Pack" item_path = /obj/item/storage/box/tiziran_goods diff --git a/code/game/machinery/computer/orders/order_items/cook/order_reagents.dm b/code/game/machinery/computer/orders/order_items/cook/order_reagents.dm index db9d20a676ff..584403a1195f 100644 --- a/code/game/machinery/computer/orders/order_items/cook/order_reagents.dm +++ b/code/game/machinery/computer/orders/order_items/cook/order_reagents.dm @@ -65,3 +65,33 @@ name = "Cherry Jelly" item_path = /obj/item/reagent_containers/condiment/cherryjelly cost_per_order = 30 + +/datum/orderable_item/reagents/worcestershire + name = "Worcestershire Sauce" + item_path = /obj/item/reagent_containers/condiment/worcestershire + cost_per_order = 30 + +/datum/orderable_item/reagents/red_bay + name = "Red Bay Seasoning" + item_path = /obj/item/reagent_containers/condiment/red_bay + cost_per_order = 30 + +/datum/orderable_item/reagents/curry_powder + name = "Curry Powder" + item_path = /obj/item/reagent_containers/condiment/curry_powder + cost_per_order = 30 + +/datum/orderable_item/reagents/dashi_concentrate + name = "Dashi Concentrate" + item_path = /obj/item/reagent_containers/condiment/dashi_concentrate + cost_per_order = 30 + +/datum/orderable_item/reagents/coconut_milk + name = "Coconut Milk" + item_path = /obj/item/reagent_containers/condiment/coconut_milk + cost_per_order = 30 + +/datum/orderable_item/reagents/grounding_solution + name = "Grounding Solution" + item_path = /obj/item/reagent_containers/condiment/grounding_solution + cost_per_order = 30 diff --git a/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm b/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm index 8b0f9d71a4c2..996972c61d25 100644 --- a/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm +++ b/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm @@ -84,3 +84,8 @@ name = "Jar of pickles" item_path = /obj/item/storage/fancy/pickles_jar cost_per_order = 60 + +/datum/orderable_item/veggies/pickled_voltvine + name = "Pickled Voltvine" + item_path = /obj/item/food/pickled_voltvine + cost_per_order = 5 diff --git a/code/game/objects/items/food/martian.dm b/code/game/objects/items/food/martian.dm new file mode 100644 index 000000000000..ffd9e7523a14 --- /dev/null +++ b/code/game/objects/items/food/martian.dm @@ -0,0 +1,1264 @@ +//Ingredients and Simple Dishes +/obj/item/food/kimchi + name = "kimchi" + desc = "A classic Korean dish in the Martian style- shredded cabbage with chilli peppers, konbu, bonito, and a mix of spices." + icon = 'icons/obj/food/martian.dmi' + icon_state = "kimchi" + food_reagents = list( + /datum/reagent/consumable/nutriment/vitamin = 3, + /datum/reagent/consumable/capsaicin = 1, + ) + tastes = list("spicy cabbage" = 1) + foodtypes = VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/inferno_kimchi + name = "inferno kimchi" + desc = "For when ordinary kimchi just can't scratch your itch for insane heat, inferno kimchi picks up the slack." + icon = 'icons/obj/food/martian.dmi' + icon_state = "inferno_kimchi" + food_reagents = list( + /datum/reagent/consumable/nutriment/vitamin = 3, + /datum/reagent/consumable/capsaicin = 3, + ) + tastes = list("very spicy cabbage" = 1) + foodtypes = VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/garlic_kimchi + name = "garlic kimchi" + desc = "A new twist on a classic formula- kimchi and garlic, finally together in perfect harmony." + icon = 'icons/obj/food/martian.dmi' + icon_state = "garlic_kimchi" + food_reagents = list( + /datum/reagent/consumable/nutriment/vitamin = 3, + /datum/reagent/consumable/capsaicin = 1, + /datum/reagent/consumable/garlic = 2, + ) + tastes = list("spicy cabbage" = 1, "garlic" = 1) + foodtypes = VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/surimi + name = "surimi" + desc = "A portion of uncured fish surimi." + icon = 'icons/obj/food/martian.dmi' + icon_state = "surimi" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 4, + /datum/reagent/consumable/nutriment/vitamin = 2, + ) + tastes = list("fish" = 1) + foodtypes = SEAFOOD + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/surimi/Initialize(mapload) + . = ..() + AddElement(/datum/element/dryable, /obj/item/food/kamaboko) + +/obj/item/food/kamaboko + name = "kamaboko" + desc = "A Japanese-style cured fishcake frequently used in snacks and ramen." + icon = 'icons/obj/food/martian.dmi' + icon_state = "kamaboko_sunrise" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 4, + /datum/reagent/consumable/nutriment/vitamin = 4, + ) + tastes = list("fish" = 1) + foodtypes = SEAFOOD + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/kamaboko/Initialize(mapload) + . = ..() + var/design = pick("smiling", "spiral", "star", "sunrise") + name = "[design] kamaboko" + icon_state = "kamaboko_[design]" + +/obj/item/food/kamaboko/make_processable() + AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/kamaboko_slice, 4, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut") + +/obj/item/food/kamaboko_slice + name = "kamaboko slice" + desc = "A slice of fishcake. Goes good in ramen." + icon = 'icons/obj/food/martian.dmi' + icon_state = "kamaboko_slice" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 1, + /datum/reagent/consumable/nutriment/vitamin = 1, + ) + tastes = list("fish" = 1) + foodtypes = SEAFOOD + w_class = WEIGHT_CLASS_TINY + +/obj/item/food/sambal + name = "sambal" + desc = "A spice paste from Indonesia, used widely in cooking throughout South East Asia." + icon = 'icons/obj/food/martian.dmi' + icon_state = "sambal" + food_reagents = list( + /datum/reagent/consumable/nutriment/vitamin = 5, + /datum/reagent/consumable/capsaicin = 2 + ) + tastes = list("chilli heat" = 1, "umami" = 1) + foodtypes = SEAFOOD | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/katsu_fillet + name = "katsu fillet" + desc = "Breaded and deep fried meat, used for a variety of dishes." + icon = 'icons/obj/food/martian.dmi' + icon_state = "katsu_fillet" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 6, + /datum/reagent/consumable/nutriment/vitamin = 2, + /datum/reagent/consumable/nutriment = 2 + ) + tastes = list("meat" = 1, "breadcrumbs" = 1) + foodtypes = MEAT | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/rice_dough + name = "rice dough" + desc = "A piece of dough made with equal parts rice flour and wheat flour, for a unique flavour." + icon = 'icons/obj/food/martian.dmi' + icon_state = "rice_dough" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6 + ) + tastes = list("rice" = 1) + foodtypes = GRAIN + +/obj/item/food/rice_dough/make_bakeable() + AddComponent(/datum/component/bakeable, /obj/item/food/bread/reispan, rand(30 SECONDS, 45 SECONDS), TRUE, TRUE) + +/obj/item/food/rice_dough/make_processable() + AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/spaghetti/rawnoodles, 6, 3 SECONDS, table_required = TRUE) + +/obj/item/food/spaghetti/rawnoodles + name = "fresh noodles" + desc = "Rice noodles, made fresh. Remember, there is no secret ingredient." + icon = 'icons/obj/food/martian.dmi' + icon_state = "raw_noodles" + + food_reagents = list( + /datum/reagent/consumable/nutriment = 3 + ) + tastes = list("rice" = 1) + foodtypes = GRAIN + +/obj/item/food/spaghetti/boilednoodles + name = "cooked noodles" + desc = "Cooked fresh to order." + icon = 'icons/obj/food/martian.dmi' + icon_state = "cooked_noodles" + food_reagents = list( + /datum/reagent/consumable/nutriment = 3 + ) + tastes = list("rice" = 1) + foodtypes = GRAIN + +/obj/item/food/bread/reispan + name = "reispan" + desc = "Though the concept of rice bread has been common in Asia for centuries, the reispan as we know it today is most commonly associated with Mars- where limited arable land has forced ingenuity." + icon = 'icons/obj/food/martian.dmi' + icon_state = "reispan" + food_reagents = list( + /datum/reagent/consumable/nutriment = 15 + ) + burns_in_oven = TRUE + tastes = list("bread" = 10) + foodtypes = GRAIN | VEGETABLES + venue_value = FOOD_PRICE_TRASH + +/obj/item/food/bread/reispan/make_processable() + AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/breadslice/reispan, 5, 3 SECONDS, table_required = TRUE) + +/obj/item/food/breadslice/reispan + name = "reispan slice" + desc = "A slice of reispan, for use in Martian-style sandwiches." + icon = 'icons/obj/food/martian.dmi' + icon_state = "reispan_slice" + food_reagents = list( + /datum/reagent/consumable/nutriment = 3 + ) + foodtypes = GRAIN | VEGETABLES + +// Fried Rice + +/obj/item/food/salad/hurricane_rice + name = "hurricane fried rice" + desc = "Inspired by nasi goreng, this piquant rice dish comes straight from Prospect, on Mars, and its night markets. It's named for its distinctive cooking style, where the frying rice is given lots of airtime while being flipped, mostly because it looks really cool for the customers." + icon = 'icons/obj/food/martian.dmi' + icon_state = "hurricane_rice" + food_reagents = list( + /datum/reagent/consumable/nutriment = 10, + /datum/reagent/consumable/nutriment/protein = 6, + /datum/reagent/consumable/nutriment/vitamin = 10, + ) + tastes = list("rice" = 1, "meat" = 1, "pineapple" = 1, "veggies" = 1) + foodtypes = MEAT | GRAIN | PINEAPPLE | FRUIT | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/ikareis + name = "ikareis" + desc = "A spicy rice dish made with squid-ink, peppers, onions, sausage, and flavourful chillis." + icon = 'icons/obj/food/martian.dmi' + icon_state = "ikareis" + food_reagents = list( + /datum/reagent/consumable/nutriment = 10, + /datum/reagent/consumable/nutriment/protein = 10, + /datum/reagent/consumable/nutriment/vitamin = 6, + /datum/reagent/consumable/capsaicin = 4 + ) + tastes = list("rice" = 1, "squid ink" = 1, "veggies" = 1, "sausage" = 1, "chilli heat" = 1) + foodtypes = MEAT | GRAIN | SEAFOOD | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/hawaiian_fried_rice + name = "\improper Hawaiian fried rice" + desc = "Not a traditional Hawaiian dish, Hawaiian fried rice instead utilises a pastiche of Hawaiian ingredients- including diced Chap and, controversially, pineapple. Purists are split on whether pineapple belongs in rice." + icon = 'icons/obj/food/martian.dmi' + icon_state = "hawaiian_fried_rice" + food_reagents = list( + /datum/reagent/consumable/nutriment = 10, + /datum/reagent/consumable/nutriment/protein = 10, + /datum/reagent/consumable/nutriment/vitamin = 8, + ) + tastes = list("rice" = 1, "pork" = 1, "pineapple" = 1, "soy sauce" = 1, "veggies" = 1) + foodtypes = MEAT | GRAIN | VEGETABLES | FRUIT | PINEAPPLE + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/ketchup_fried_rice + name = "ketchup fried rice" + desc = "A classic Japanese comfort food, made with sausage, veggies, worchestershire sauce, rice- oh, and of course, ketchup." + icon = 'icons/obj/food/martian.dmi' + icon_state = "ketchup_fried_rice" + food_reagents = list( + /datum/reagent/consumable/nutriment = 10, + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/nutriment/vitamin = 8, + /datum/reagent/consumable/ketchup = 2, + ) + tastes = list("rice" = 1, "sausage" = 1, "ketchup" = 1, "veggies" = 1) + foodtypes = MEAT | GRAIN | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/mediterranean_fried_rice + name = "mediterranean fried rice" + desc = "A strange take on the fried rice formula: herbs, cheese, olives, and of course, meatballs. Sorta like a hybrid of risotto and fried rice." + icon = 'icons/obj/food/martian.dmi' + icon_state = "mediterranean_fried_rice" + food_reagents = list( + /datum/reagent/consumable/nutriment = 8, + /datum/reagent/consumable/nutriment/protein = 10, + /datum/reagent/consumable/nutriment/vitamin = 10, + ) + tastes = list("rice" = 1, "cheese" = 1, "meatball" = 1, "olives" = 1, "herbs" = 1) + foodtypes = MEAT | GRAIN | VEGETABLES | DAIRY + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/egg_fried_rice + name = "egg fried rice" + desc = "As simple as fried rice gets: rice, egg, soy sauce. Simple, elegant, and infinitely customisable." + icon = 'icons/obj/food/martian.dmi' + icon_state = "egg_fried_rice" + food_reagents = list( + /datum/reagent/consumable/nutriment = 8, + /datum/reagent/consumable/nutriment/protein = 2, + ) + tastes = list("rice" = 1, "egg" = 1, "soy sauce" = 1) + foodtypes = MEAT | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/egg_fried_rice/Initialize(mapload) + . = ..() + AddComponent(/datum/component/customizable_reagent_holder, null, CUSTOM_INGREDIENT_ICON_STACK) + +/obj/item/food/salad/bibimbap + name = "bibimbap" + desc = "A Korean dish consisting of rice and various toppings, served in a hot stone bowl." + icon = 'icons/obj/food/martian.dmi' + icon_state = "bibimbap" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 4, + /datum/reagent/consumable/nutriment/vitamin = 8, + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/capsaicin = 2, + ) + tastes = list("rice" = 1, "spicy cabbage" = 1, "chilli heat" = 1, "egg" = 1, "meat" = 1) + foodtypes = MEAT | VEGETABLES | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/bibimbap/Initialize(mapload) + . = ..() + AddComponent(/datum/component/customizable_reagent_holder, null, CUSTOM_INGREDIENT_ICON_STACK) + +// Noodles +/obj/item/food/salad/bulgogi_noodles + name = "bulgogi noodles" + desc = "Korean barbecue meat served with noodles! Made with gochujang, for extra spicy flavour." + icon = 'icons/obj/food/martian.dmi' + icon_state = "bulgogi_noodles" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/nutriment = 8, + /datum/reagent/consumable/capsaicin = 2, + ) + tastes = list("barbecue meat" = 1, "noodles" = 1, "chilli heat" = 1) + foodtypes = MEAT | GRAIN | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/yakisoba_katsu + name = "yakisoba katsu" + desc = "Breaded and deep fried meat on a bed of fried noodles. Delicious, if unconventional." + icon = 'icons/obj/food/martian.dmi' + icon_state = "yakisoba_katsu" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/nutriment/vitamin = 4, + /datum/reagent/consumable/nutriment = 8, + ) + tastes = list("fried noodles" = 1, "meat" = 1, "breadcrumbs" = 1, "veggies" = 1) + foodtypes = MEAT | VEGETABLES | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/martian_fried_noodles + name = "\improper Martian fried noodles" + desc = "Fried noodles from the red planet. Martian cooking draws from many cultures, and these noodles are no exception- there's elements of Malay, Thai, Chinese, Korean and Japanese cuisine in here." + icon = 'icons/obj/food/martian.dmi' + icon_state = "martian_fried_noodles" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/nutriment/vitamin = 4, + /datum/reagent/consumable/nutriment = 8, + ) + tastes = list("noodles" = 1, "meat" = 1, "nuts" = 1, "onion" = 1, "egg" = 1) + foodtypes = GRAIN | NUTS | MEAT | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/simple_fried_noodles + name = "simple fried noodles" + desc = "A simple yet delicious fried noodle dish, perfect for the creative chef to make whatever fried noodles they want." + icon = 'icons/obj/food/martian.dmi' + icon_state = "simple_fried_noodles" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 4, + /datum/reagent/consumable/nutriment/vitamin = 4, + /datum/reagent/consumable/nutriment = 6, + ) + tastes = list("noodles" = 1, "soy sauce" = 1) + foodtypes = GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/simple_fried_noodles/Initialize(mapload) + . = ..() + AddComponent(/datum/component/customizable_reagent_holder, null, CUSTOM_INGREDIENT_ICON_STACK) + +// Curry +/obj/item/food/salad/setagaya_curry //let me explain... + name = "\improper Setagaya curry" + desc = "Made famous by a cafe in Setagaya, this curry's extensive recipe has gone on to be a closely-guarded secret amongst cafe owners across human space. The taste is said to replenish the diner's soul, whatever that means." + icon = 'icons/obj/food/martian.dmi' + icon_state = "setagaya_curry" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/nutriment/vitamin = 8, + /datum/reagent/consumable/nutriment = 8, + /datum/reagent/medicine/omnizine = 5, + ) + tastes = list("masterful curry" = 1, "rice" = 1) + foodtypes = GRAIN | MEAT | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +// Burgers and Sandwiches +/obj/item/food/burger/big_blue + name = "\improper Big Blue burger" + desc = "The original and best Big Blue, straight outta Mars' favourite burger joint. Catch the wave, brother!" + icon = 'icons/obj/food/martian.dmi' + icon_state = "big_blue_burger" + food_reagents = list( + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/nutriment/vitamin = 8, + ) + tastes = list("bun" = 1, "burger" = 2, "teriyaki onions" = 1, "cheese" = 1, "bacon" = 1, "pineapple" = 1) + foodtypes = MEAT | GRAIN | DAIRY | VEGETABLES | FRUIT | PINEAPPLE + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/burger/chappy + name = "\improper Chappy patty" + desc = "Originally born of a night of drinking in a Big Blue Burger's kitchen, the Chappy patty has since become a staple of both Big Blue's menu and Hawaiian (or at least, faux-Hawaiian) cuisine galaxy-wide. Given Big Kahuna operates most of its stores on Mars, it's perhaps no wonder this dish is popular there." + icon = 'icons/obj/food/martian.dmi' + icon_state = "chappy_patty" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/nutriment/protein = 6, + ) + tastes = list("bun" = 1, "fried pork" = 2, "egg" = 1, "cheese" = 1, "ketchup" = 1) + foodtypes = MEAT | GRAIN | DAIRY | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/king_katsu_sandwich + name = "\improper King Katsu sandwich" + desc = "A big sandwich with crispy fried katsu, bacon, kimchi slaw and salad, all on reispan bread. Truly the king of meat between bread." + icon = 'icons/obj/food/martian.dmi' + icon_state = "king_katsu_sandwich" + food_reagents = list( + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/nutriment/protein = 6, + /datum/reagent/consumable/nutriment/vitamin = 6, + /datum/reagent/consumable/capsaicin = 1, + ) + tastes = list("meat" = 1, "bacon" = 1, "kimchi" = 1, "salad" = 1, "rice bread" = 1) + foodtypes = MEAT | GRAIN | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/marte_cubano_sandwich + name = "\improper Marte Cubano sandwich" + desc = "A fusion food from Mars, the Marte-Cubano is based on the classic Cubano, but updated for ingredient availability and changes in tastes." + icon = 'icons/obj/food/martian.dmi' + icon_state = "marte_cubano_sandwich" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/nutriment/protein = 6, + /datum/reagent/consumable/nutriment/vitamin = 4, + ) + tastes = list("bacon" = 1, "pickles" = 1, "cheese" = 1, "rice bread" = 1) + foodtypes = MEAT | DAIRY | VEGETABLES | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/little_shiro_sandwich + name = "\improper Little Shiro sandwich" + desc = "A classic Martian sandwich, named for the first president of TerraGov to come from Mars. It features fried eggs, bulgogi beef, a kimchi salad, and a healthy topping of mozzarella cheese." + icon = 'icons/obj/food/martian.dmi' + icon_state = "marte_cubano_sandwich" + food_reagents = list( + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/nutriment/protein = 6, + /datum/reagent/consumable/nutriment/vitamin = 6, + /datum/reagent/consumable/capsaicin = 1, + ) + tastes = list("egg" = 1, "meat" = 1, "kimchi" = 1, "mozzarella" = 1) + foodtypes = MEAT | DAIRY | VEGETABLES | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/croque_martienne + name = "croque-martienne" + desc = "The quintessential Martian breakfast sandwich. Egg, belly pork, pineapple, cheese. Simple. Classic. Available in every cafe across New Osaka." + icon = 'icons/obj/food/martian.dmi' + icon_state = "croque_martienne" + food_reagents = list( + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/nutriment/vitamin = 4, + ) + tastes = list("egg" = 1, "toast" = 1, "pork" = 1, "pineapple" = 1, "cheese" = 1) + foodtypes = MEAT | DAIRY | VEGETABLES | GRAIN | PINEAPPLE | BREAKFAST + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/prospect_sunrise + name = "\improper Prospect Sunrise" + desc = "The second-most quintessential Martian breakfast sandwich. The most beautiful combination of omelette, bacon, pickles and cheese. Available in every cafe across Prospect." + icon = 'icons/obj/food/martian.dmi' + icon_state = "prospect_sunrise" + food_reagents = list( + /datum/reagent/consumable/nutriment = 5, + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/nutriment/vitamin = 3, + ) + tastes = list("egg" = 1, "toast" = 1, "bacon" = 1, "pickles" = 1, "cheese" = 1) + foodtypes = MEAT | DAIRY | VEGETABLES | GRAIN | PINEAPPLE | BREAKFAST + w_class = WEIGHT_CLASS_SMALL + +// Snacks +/obj/item/food/takoyaki + name = "takoyaki" + desc = "A classic Japanese street food, takoyaki (or octopus balls) are made from octopus and onion inside a fried batter, topped with a savoury sauce." + icon = 'icons/obj/food/martian.dmi' + icon_state = "takoyaki" + food_reagents = list( + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/nutriment/protein = 4, + /datum/reagent/consumable/cooking_oil = 2, + ) + tastes = list("octopus" = 1, "batter" = 1, "onion" = 1, "worcestershire sauce" = 1) + foodtypes = MEAT | GRAIN | FRIED | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/takoyaki/russian + name = "russian takoyaki" + desc = "A dangerous twist on a classic dish, that makes for the perfect cover for evading the police." + icon = 'icons/obj/food/martian.dmi' + icon_state = "russian_takoyaki" + food_reagents = list( + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/nutriment/protein = 4, + /datum/reagent/consumable/capsaicin = 10, + ) + tastes = list("octopus" = 1, "batter" = 1, "onion" = 1, "chilli heat" = 1) + foodtypes = MEAT | GRAIN | FRIED | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/takoyaki/taco + name = "tacoyaki" + desc = "Straight outta Mars' most innovative street food stands, it's tacoyaki- trading octopus for taco meat and corn, and worcestershire sauce for queso. ¡Tan sabroso!" + icon = 'icons/obj/food/martian.dmi' + icon_state = "tacoyaki" + food_reagents = list( + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/nutriment/protein = 4, + /datum/reagent/consumable/cooking_oil = 2, + ) + tastes = list("taco meat" = 1, "batter" = 1, "corn" = 1, "cheese" = 1) + foodtypes = MEAT | GRAIN | FRIED | VEGETABLES | DAIRY + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/okonomiyaki + name = "okonomiyaki" + desc = "A Kansai classic, okonomiyaki consists of a savoury pancake filled with... well, whatever you want- although cabbage, nagaimo and dashi are pretty much required, as is the eponymous okonomiyaki sauce." + icon = 'icons/obj/food/martian.dmi' + icon_state = "okonomiyaki" + food_reagents = list( + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/nutriment/vitamin = 6, + ) + tastes = list("batter" = 1, "cabbage" = 1, "onion" = 1, "worcestershire sauce" = 1) + foodtypes = MEAT | GRAIN | FRIED | VEGETABLES | DAIRY + w_class = WEIGHT_CLASS_SMALL + +//hey, the name literally means "grilled how you like it", it'd be crazy to not make it customisable +/obj/item/food/okonomiyaki/Initialize(mapload) + . = ..() + AddComponent(/datum/component/customizable_reagent_holder, null, CUSTOM_INGREDIENT_ICON_STACK) + +/obj/item/food/brat_kimchi + name = "brat-kimchi" + desc = "Fried kimchi, mixed with sugar and topped with bratwurst. A popular dish at izakayas on Mars." + icon = 'icons/obj/food/martian.dmi' + icon_state = "brat_kimchi" + food_reagents = list( + /datum/reagent/consumable/nutriment/vitamin = 4, + /datum/reagent/consumable/nutriment/protein = 4, + /datum/reagent/consumable/capsaicin = 2, + /datum/reagent/consumable/sugar = 2, + ) + tastes = list("spicy cabbage" = 1, "sausage" = 1) + foodtypes = MEAT | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/tonkatsuwurst + name = "tonkatsuwurst" + desc = "A cultural fusion between German and Japanese cooking, tonkatsuwurst blends the currywurst and tonkatsu sauce into something familiar, yet new." + icon = 'icons/obj/food/martian.dmi' + icon_state = "tonkatsuwurst" + food_reagents = list( + /datum/reagent/consumable/nutriment/vitamin = 3, + /datum/reagent/consumable/nutriment/protein = 6, + /datum/reagent/consumable/worcestershire = 2, + ) + tastes = list("sausage" = 1, "spicy sauce" = 1, "fries" = 1) + foodtypes = MEAT | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/kebab/ti_hoeh_koe + name = "ti hoeh koe skewer" + desc = "Pig blood, mixed with rice, fried, and topped with peanut and coriander. It's an... acquired taste for sure, but it's popular at Prospect's night markets, brought by Taiwanese settlers." + icon = 'icons/obj/food/martian.dmi' + icon_state = "ti_hoeh_koe" + food_reagents = list( + /datum/reagent/consumable/nutriment/vitamin = 1, + /datum/reagent/consumable/nutriment/protein = 5, + /datum/reagent/consumable/peanut_butter = 1, + ) + tastes = list("blood" = 1, "nuts" = 1, "herbs" = 1) + foodtypes = MEAT | NUTS | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/kitzushi + name = "kitzushi" + desc = "A variant on inarizushi popular on Mars amongst vulpinids (and the wider animalid community), kitzushi integrates a spicy cheese and chilli mix inside the pocket for extra flavour." + icon = 'icons/obj/food/martian.dmi' + icon_state = "kitzushi" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 3, + /datum/reagent/consumable/nutriment = 3, + /datum/reagent/consumable/capsaicin = 2, + ) + tastes = list("rice" = 1, "tofu" = 1, "chilli cheese" = 1) + foodtypes = GRAIN | FRIED | VEGETABLES | DAIRY + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/epok_epok + name = "epok-epok" + desc = "A fried pastry snack from Malaysia, which migrated via Singapore into the Martian diet. Stuffed with curried chicken and potatoes, alongside a slice of hard boiled egg, it's a popular street food on the Red Planet." + icon = 'icons/obj/food/martian.dmi' + icon_state = "epok_epok" + food_reagents = list( + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/nutriment/protein = 4, + ) + tastes = list("curry" = 1, "egg" = 1, "pastry" = 1) + foodtypes = GRAIN | MEAT | VEGETABLES | FRIED + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/roti_john + name = "roti john" + desc = "A classic Malaysian snack, the roti john consists of bread fried in a mixture of meat, egg and onion, yielding a result that's somewhere between French toast and an omelette." + icon = 'icons/obj/food/martian.dmi' + icon_state = "roti_john" + food_reagents = list( + /datum/reagent/consumable/nutriment/vitamin = 6, + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/nutriment = 10, + ) + tastes = list("bread" = 1, "egg" = 1, "meat" = 1, "onion" = 1) + foodtypes = GRAIN | MEAT | VEGETABLES | FRIED | BREAKFAST + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/izakaya_fries + name = "izakaya fries" + desc = "New Osaka's favourite fries, 2 centuries running- and it's all thanks to the marriage of Red Bay, furikake and mayonnaise." + icon = 'icons/obj/food/martian.dmi' + icon_state = "izakaya_fries" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/nutriment/protein = 2, + /datum/reagent/consumable/capsaicin = 2, + /datum/reagent/consumable/salt = 2, + ) + tastes = list("fries" = 1, "mars" = 1) + foodtypes = VEGETABLES | FRIED + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/kurry_ok_subsando + name = "kurry-ok subsando" + desc = "The bunny chow meets Martian ingenuity in the form of the kurry-ok subsando, with fries and katsu curry in perfect harmony." + icon = 'icons/obj/food/martian.dmi' + icon_state = "kurry_ok_subsando" + food_reagents = list( + /datum/reagent/consumable/nutriment = 10, + /datum/reagent/consumable/nutriment/protein = 6, + /datum/reagent/consumable/nutriment/vitamin = 8, + ) + tastes = list("bread" = 1, "spicy fries" = 1, "mayonnaise" = 1, "curry" = 1, "meat" = 1) + foodtypes = MEAT | GRAIN | VEGETABLES | FRIED + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/loco_moco + name = "loco moco" + desc = "A simple classic from Hawaii. Makes for a filling, tasty, and cheap meal." + icon = 'icons/obj/food/martian.dmi' + icon_state = "loco_moco" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/nutriment/protein = 8, + ) + tastes = list("rice" = 1, "burger" = 1, "gravy" = 1, "egg" = 1) + foodtypes = MEAT | GRAIN | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/wild_duck_fries + name = "wild duck fries" + desc = "Fries with shredded duck, ketchup, mayo, and Red Bay. A classic street food on Mars, although they're most often associated with Kwik-Kwak, Mars' favourite (and indeed, only) duck themed fast food chain." + icon = 'icons/obj/food/martian.dmi' + icon_state = "wild_duck_fries" + food_reagents = list( + /datum/reagent/consumable/nutriment = 8, + /datum/reagent/consumable/nutriment/protein = 6, + /datum/reagent/consumable/capsaicin = 2, + /datum/reagent/consumable/salt = 2, + ) + tastes = list("fries" = 1, "duck" = 1, "ketchup" = 1, "mayo" = 1, "spicy seasoning" = 1) + foodtypes = MEAT | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/little_hawaii_hotdog + name = "\improper Little Hawaii hotdog" + desc = "From the friendly vendors of Honolulu Avenue comes the Little Hawaii dog- tropical and fattening, all at the same time!" + icon = 'icons/obj/food/martian.dmi' + icon_state = "little_hawaii_hotdog" + food_reagents = list( + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/nutriment/protein = 6, + /datum/reagent/consumable/nutriment/vitamin = 6, + ) + tastes = list("sausage" = 1, "pineapple" = 1, "onion" = 1, "teriyaki" = 1) + foodtypes = MEAT | VEGETABLES | FRUIT | PINEAPPLE + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salt_chilli_fries + name = "salt n' chilli fries" + desc = "The simple name of this dish doesn't tell the full story of its deliciousness- sure, salt and chilli are big components, but the onion, ginger and garlic are the real flavour heroes here." + icon = 'icons/obj/food/martian.dmi' + icon_state = "salt_chilli_fries" + food_reagents = list( + /datum/reagent/consumable/nutriment = 8, + /datum/reagent/consumable/nutriment/vitamin = 4, + /datum/reagent/consumable/capsaicin = 2, + /datum/reagent/consumable/salt = 2, + ) + tastes = list("fries" = 1, "garlic" = 1, "ginger" = 1, "numbing heat" = 1, "salt" = 1) + foodtypes = VEGETABLES | FRIED + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/grilled_octopus + name = "grilled octopus tentacle" + desc = "A simple seafood dish, typical to everywhere that octopus is eaten. Martians like it with Red Bay." + icon = 'icons/obj/food/martian.dmi' + icon_state = "grilled_octopus" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 6, + /datum/reagent/consumable/nutriment/vitamin = 2, + /datum/reagent/consumable/char = 2) + tastes = list("octopus" = 1) + foodtypes = SEAFOOD | FRIED + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/steak_croquette + name = "steak croquette" + desc = "Man, sticking chunks of steak in a croquette. Must be the countryside way." + icon = 'icons/obj/food/martian.dmi' + icon_state = "steak_croquette" + food_reagents = list( + /datum/reagent/consumable/nutriment = 3, + /datum/reagent/consumable/nutriment/protein = 6, + ) + tastes = list("steak" = 1, "potato" = 1) + foodtypes = MEAT | VEGETABLES | FRIED + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/chapsilog + name = "chapsilog" + desc = "A traditional Filipino-style silog consisting of sinangag, a fried egg, and slices of chap. Makes for a simple, yet filling, breakfast." + icon = 'icons/obj/food/martian.dmi' + icon_state = "chapsilog" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/nutriment/protein = 6, + /datum/reagent/consumable/nutriment/vitamin = 3, + /datum/reagent/consumable/garlic = 1, + ) + tastes = list("ham" = 1, "garlic rice" = 1, "egg" = 1) + foodtypes = MEAT | GRAIN | VEGETABLES | BREAKFAST + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/chap_hash + name = "chap hash" + desc = "What do you get when you combine chap, onions, peppers and potatoes? The chap hash, of course! Add some red bay, and you've got yourself a tasty breakfast." + icon = 'icons/obj/food/martian.dmi' + icon_state = "chap_hash" + food_reagents = list( + /datum/reagent/consumable/nutriment/vitamin = 6, + /datum/reagent/consumable/nutriment/protein = 6, + /datum/reagent/consumable/nutriment = 3, + ) + tastes = list("ham" = 1, "onion" = 1, "pepper" = 1, "potato" = 1) + foodtypes = MEAT | VEGETABLES | BREAKFAST + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/agedashi_tofu + name = "agedashi tofu" + desc = "Crispy fried tofu, served in a tasty umami broth. Frequently served at izakayas." + icon = 'icons/obj/food/martian.dmi' + icon_state = "agedashi_tofu" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/nutriment/protein = 2, + /datum/reagent/consumable/nutriment/vitamin = 4, + ) + tastes = list("umami broth" = 1, "tofu" = 1) + foodtypes = SEAFOOD | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +// Curries and Stews +/obj/item/food/salad/po_kok_gai + name = "po kok gai" + desc = "Also known as galinha à portuguesa, or Portuguese chicken, this dish is a Macanese classic born of Portuguese colonialism, though the dish itself is not a Portuguese dish. It consists of chicken in \"Portuguese Sauce\", a mild coconut-based curry." + icon = 'icons/obj/food/martian.dmi' + icon_state = "po_kok_gai" + food_reagents = list( + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/nutriment/vitamin = 2, + ) + tastes = list("chicken" = 1, "coconut" = 1, "curry" = 1) + foodtypes = MEAT | VEGETABLES | DAIRY + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/huoxing_tofu + name = "\improper Huoxing tofu" + desc = "An adaptation of mapo tofu made famous in Prospect, the foodie Mecca of Mars. It even kinda looks like Mars, if you really squint." + icon = 'icons/obj/food/martian.dmi' + icon_state = "huoxing_tofu" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/nutriment/vitamin = 4, + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/capsaicin = 2 + ) + tastes = list("meat" = 1, "chilli heat" = 1, "tofu" = 1) + foodtypes = MEAT | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/feizhou_ji + name = "fēizhōu jī" + desc = "Considered a Macanese variant on piri-piri, fēizhōu jī, or galinha à africana, or African chicken (if you're feeling like speaking Common), is a popular dish in the TID, and subsequently also on Mars due to its influx of Macanese settlers." + icon = 'icons/obj/food/martian.dmi' + icon_state = "feizhou_ji" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/capsaicin = 2, + ) + tastes = list("chicken" = 1, "chilli heat" = 1, "vinegar" = 1) + foodtypes = MEAT | VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/galinha_de_cabidela + name = "galinha de cabidela" + desc = "Originally a Portuguese dish, cabidela rice is traditionally made with chicken in Portugal, and duck in Macau- ultimately, the chicken version won out on Mars due to European influence." + icon = 'icons/obj/food/martian.dmi' + icon_state = "galinha_de_cabidela" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/nutriment/protein = 12, + ) + tastes = list("chicken" = 1, "iron" = 1, "vinegar" = 1, "rice" = 1) + foodtypes = MEAT | VEGETABLES | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/katsu_curry + name = "katsu curry" + desc = "Breaded and deep fried meat, topped with curry sauce and served on a bed of rice." + icon = 'icons/obj/food/martian.dmi' + icon_state = "katsu_curry" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/nutriment/protein = 8, + ) + tastes = list("curry" = 1, "meat" = 1, "breadcrumbs" = 1, "rice" = 1) + foodtypes = MEAT | VEGETABLES | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/beef_bowl + name = "beef bowl" + desc = "A tasty mix of stewed beef and onion, served over rice. Typical toppings include pickled ginger, chilli powder, and fried eggs." + icon = 'icons/obj/food/martian.dmi' + icon_state = "beef_bowl" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/nutriment/vitamin = 2, + ) + tastes = list("beef" = 25, "onion" = 25, "chili heat" = 15, "rice" = 34, "soul" = 1) //I pour my soul into this bowl + foodtypes = MEAT | VEGETABLES | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/salt_chilli_bowl + name = "salt n' chilli octopus bowl" + desc = "Inspired by the Japanese donburi tradition, this spicy take on ten-don is a flavour sensation that's swept the Martian nation." + icon = 'icons/obj/food/martian.dmi' + icon_state = "salt_chilli_bowl" + food_reagents = list( + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/nutriment/protein = 6, + /datum/reagent/consumable/nutriment/vitamin = 6, + /datum/reagent/consumable/capsaicin = 2, + /datum/reagent/consumable/salt = 2, + ) + tastes = list("seafood" = 1, "rice" = 1, "garlic" = 1, "ginger" = 1, "numbing heat" = 1, "salt" = 1) + foodtypes = SEAFOOD | VEGETABLES | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/kansai_bowl + name = "\improper Kansai bowl" + desc = "Also known as konohadon, this donburi is typical to the Kansai region, and consists of kamaboko fishcake, egg and onion served over rice." + icon = 'icons/obj/food/martian.dmi' + icon_state = "kansai_bowl" + food_reagents = list( + /datum/reagent/consumable/nutriment = 8, + /datum/reagent/consumable/nutriment/protein = 6, + /datum/reagent/consumable/nutriment/vitamin = 2, + ) + tastes = list("seafood" = 1, "rice" = 1, "egg" = 1, "onion" = 1) + foodtypes = SEAFOOD | MEAT | VEGETABLES | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/salad/eigamudo_curry //curry is meant to be really spicy or kinda mild, this just stinks! + name = "\improper Eigamudo curry" + desc = "An inexplicable curry dish made from a cacophony of ingredients. Presumably tastes good to someone, somewhere- though good luck finding them." + icon = 'icons/obj/food/martian.dmi' + icon_state = "eigamudo_curry" + food_reagents = list( + /datum/reagent/consumable/nutraslop = 8, + /datum/reagent/consumable/capsaicin = 2, + /datum/reagent/toxin/slimejelly = 4, + ) + tastes = list("grit" = 1, "slime" = 1, "gristle" = 1, "rice" = 1, "Mystery Food X" = 1) + foodtypes = GROSS | GRAIN | TOXIC + w_class = WEIGHT_CLASS_SMALL + +// Entrees +/obj/item/food/cilbir + name = "çilbir" + desc = "Eggs, served on a savoury yoghurt base with a spicy oil topping. Originally a Turkish dish, it came to Mars with German-Turkish settlers and has become a breakfast mainstay since." + icon = 'icons/obj/food/martian.dmi' + icon_state = "cilbir" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 4, + /datum/reagent/consumable/nutriment/vitamin = 6, + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/capsaicin = 2, + /datum/reagent/consumable/garlic = 1, + ) + tastes = list("yoghurt" = 1, "garlic" = 1, "lemon" = 1, "egg" = 1, "chilli heat" = 1) + foodtypes = DAIRY | VEGETABLES | FRUIT | BREAKFAST + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/peking_duck_crepes + name = "\improper Peking duck crepes a l'orange" + desc = "This dish takes the best of Beijing's and Paris' cuisines to make a deliciously tangy and savoury meal." + icon = 'icons/obj/food/martian.dmi' + icon_state = "peking_duck_crepes" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 10, + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/nutriment/vitamin = 4, + /datum/reagent/consumable/orangejuice = 4, + ) + tastes = list("meat" = 1, "crepes" = 1, "orange" = 1) + foodtypes = MEAT | DAIRY | VEGETABLES | FRUIT + w_class = WEIGHT_CLASS_SMALL + +// Desserts +/obj/item/food/cake/spekkoek + name = "vulgaris spekkoek" + desc = "Brought to Mars by both Dutch and Indonesian settlers, spekkoek is a common holiday cake on the Red Planet, often being served as part of a traditional rijsttafel. Use of ambrosia vulgaris as a flavouring is one of necessity in deep space, as pandan leaf is rare this far from Earth." + icon = 'icons/obj/food/martian.dmi' + icon_state = "spekkoek" + food_reagents = list( + /datum/reagent/consumable/nutriment = 30, + /datum/reagent/consumable/nutriment/vitamin = 15 + ) + tastes = list("winter spices" = 2, "ambrosia vulgaris" = 2, "cake" = 5) + foodtypes = GRAIN | SUGAR | DAIRY + burns_in_oven = TRUE + +/obj/item/food/cake/spekkoek/make_processable() + AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/spekkoek, 5, 3 SECONDS, table_required = TRUE) + +/obj/item/food/cakeslice/spekkoek + name = "vulgaris spekkoek slice" + desc = "A slice of vulgaris spekkoek. If you're Martian, this might remind you of home." + icon = 'icons/obj/food/martian.dmi' + icon_state = "spekkoek_slice" + tastes = list("winter spices" = 2, "ambrosia vulgaris" = 2, "cake" = 5) + foodtypes = GRAIN | SUGAR | DAIRY + +/obj/item/food/salad/pineapple_foster + name = "pineapple foster" + desc = "A classic Martian adaptation of another classic dessert, Pineapple Foster is a toasty sweet treat which presents only a mild-to-moderate fire risk." + icon = 'icons/obj/food/martian.dmi' + icon_state = "pineapple_foster" + food_reagents = list( + /datum/reagent/consumable/nutriment/vitamin = 6, + /datum/reagent/consumable/nutriment = 2, + /datum/reagent/consumable/caramel = 4, + /datum/reagent/consumable/pineapplejuice = 2, + /datum/reagent/consumable/milk = 4 + ) + tastes = list("pineapple" = 1, "vanilla" = 1, "caramel" = 1, "ice cream" = 1) + foodtypes = FRUIT | DAIRY | PINEAPPLE + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/pastel_de_nata + name = "pastel de nata" + desc = "Originally created by Portuguese monks, pastéis de nata went worldwide under the Portuguese colonial empire- including Macau, from which it came to Mars with settlers from the TID of Hong Kong and Macau." + icon = 'icons/obj/food/martian.dmi' + icon_state = "pastel_de_nata" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 4, + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/sugar = 4, + ) + tastes = list("custard" = 1, "vanilla" = 1, "sweet pastry" = 1) + foodtypes = DAIRY | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/boh_loh_yah + name = "boh loh yah" + desc = "Confusingly referred to as a \"pineapple bun\", this Hong Konger treat contains no actual pineapple- instead, it's a sugar-cookie like bun with a butter filling." + icon = 'icons/obj/food/martian.dmi' + icon_state = "boh_loh_yah" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/sugar = 4, + ) + tastes = list("cookie" = 1, "butter" = 1) + foodtypes = DAIRY | GRAIN | PINEAPPLE //it's funny + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/banana_fritter + name = "banana fritter" + desc = "A ubiquitous sweet snack from much of Maritime South-East Asia, the banana fritter has many names, but all share a similar style- banana, coated in batter, and fried." + icon = 'icons/obj/food/martian.dmi' + icon_state = "banana_fritter" + food_reagents = list( + /datum/reagent/consumable/nutriment = 3, + /datum/reagent/consumable/nutriment/vitamin = 1, + /datum/reagent/consumable/sugar = 1, + ) + tastes = list("banana" = 1, "batter" = 1) + foodtypes = GRAIN | FRUIT | FRIED + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/pineapple_fritter + name = "pineapple fritter" + desc = "Like its cousin, the banana fritter, the pineapple fritter is a popular snack, though somewhat let down by pineapple's infamous \"love it or hate it\" flavour." + icon = 'icons/obj/food/martian.dmi' + icon_state = "pineapple_fritter" + food_reagents = list( + /datum/reagent/consumable/nutriment = 3, + /datum/reagent/consumable/nutriment/vitamin = 1, + /datum/reagent/consumable/sugar = 1, + ) + tastes = list("pineapple" = 1, "batter" = 1) + foodtypes = GRAIN | FRUIT | FRIED | PINEAPPLE + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/kebab/kasei_dango + name = "kasei dango" + desc = "Japanese-style dango balls, flavoured with grenadine and orange, giving a final result that looks like Mars and tastes like dessert, served three to a stick." + icon = 'icons/obj/food/martian.dmi' + icon_state = "kasei_dango" + food_reagents = list( + /datum/reagent/consumable/sugar = 6, + /datum/reagent/consumable/nutriment = 2, + /datum/reagent/consumable/orangejuice = 3, + /datum/reagent/consumable/grenadine = 3 + ) + tastes = list("pomegranate" = 1, "orange" = 1) + foodtypes = FRUIT | GRAIN + w_class = WEIGHT_CLASS_SMALL + +// Frozen +/obj/item/food/pb_ice_cream_mochi + name = "peanut butter ice cream mochi" + desc = "A classic dessert at the Arabia Street Night Market in Prospect, peanut butter ice cream mochi is made with a peanut-butter flavoured ice cream as the main filling, and coated in crushed peanuts in the Taiwanese tradition." + icon = 'icons/obj/food/martian.dmi' + icon_state = "pb_ice_cream_mochi" + food_reagents = list( + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/sugar = 6, + /datum/reagent/consumable/peanut_butter = 4, + /datum/reagent/consumable/milk = 2, + ) + tastes = list("peanut butter" = 1, "mochi" = 1) + foodtypes = NUTS | GRAIN | DAIRY | SUGAR + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/popsicle/pineapple_pop + name = "frozen pineapple pop" + desc = "Few cultures love pineapple as much as the Martians, and this dessert proves that- frozen pineapple, on a stick, with just a little dunk of dark chocolate." + overlay_state = "pineapple_pop" + food_reagents = list( + /datum/reagent/consumable/pineapplejuice = 4, + /datum/reagent/consumable/sugar = 4, + /datum/reagent/consumable/nutriment = 2, + /datum/reagent/consumable/nutriment/vitamin = 2, + ) + tastes = list("cold pineapple" = 1, "chocolate" = 1) + foodtypes = SUGAR | PINEAPPLE + +/obj/item/food/popsicle/sea_salt + name = "sea salt ice-cream bar" + desc = "This sky-blue ice-cream bar is flavoured with only the finest imported sea salt. Salty... no, sweet!" + overlay_state = "sea_salt_pop" + food_reagents = list( + /datum/reagent/consumable/salt = 1, + /datum/reagent/consumable/nutriment = 2, + /datum/reagent/consumable/cream = 2, + /datum/reagent/consumable/vanilla = 2, + /datum/reagent/consumable/sugar = 4, + ) + tastes = list("salt" = 1, "sweet" = 1) + foodtypes = SUGAR | DAIRY + +// topsicles, also known as tofu popsicles +/obj/item/food/popsicle/topsicle + name = "berry topsicle" + desc = "A frozen treat made from tofu and berry juice blended smooth, then frozen. Supposedly a favourite of bears, but that makes no sense..." + overlay_state = "topsicle_berry" + food_reagents = list( + /datum/reagent/consumable/nutriment/vitamin = 4, + /datum/reagent/consumable/sugar = 6, + /datum/reagent/consumable/berryjuice = 4 + ) + tastes = list("berry" = 1, "tofu" = 1) + foodtypes = FRUIT | VEGETABLES + +/obj/item/food/popsicle/topsicle/banana + name = "banana topsicle" + desc = "A frozen treat made from tofu and banana juice blended smooth, then frozen. Popular in rural Japan in the summer." + overlay_state = "topsicle_banana" + food_reagents = list( + /datum/reagent/consumable/nutriment/vitamin = 4, + /datum/reagent/consumable/sugar = 6, + /datum/reagent/consumable/banana = 4 + ) + tastes = list("banana" = 1, "tofu" = 1) + +/obj/item/food/popsicle/topsicle/pineapple + name = "pineapple topsicle" + desc = "A frozen treat made from tofu and pineapple juice blended smooth, then frozen. As seen on TV." + overlay_state = "topsicle_pineapple" + food_reagents = list( + /datum/reagent/consumable/nutriment/vitamin = 4, + /datum/reagent/consumable/sugar = 6, + /datum/reagent/consumable/pineapplejuice = 4 + ) + tastes = list("pineapple" = 1, "tofu" = 1) + +// Ballpark Food +/obj/item/food/plasma_dog_supreme + name = "\improper Plasma Dog Supreme" + desc = "The signature snack of Cybersun Park, home of the New Osaka Woodpeckers: a ballpark hot-dog with sambal, dashi-grilled onions and pineapple-lime salsa. You know, the sort of bold flavours they enjoy on Mars." + icon = 'icons/obj/food/martian.dmi' + icon_state = "plasma_dog_supreme" + food_reagents = list( + /datum/reagent/consumable/nutriment/vitamin = 8, + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/nutriment = 6 + ) + tastes = list("sausage" = 1, "relish" = 1, "onion" = 1, "fruity salsa" = 1) + foodtypes = FRUIT | MEAT | PINEAPPLE | VEGETABLES | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/frickles + name = "frickles" + desc = "Spicy fried pickle spears? Such a bold combination can surely come only from one place- Martian ballparks? Well, not really, but they are a popular snack there." + icon = 'icons/obj/food/martian.dmi' + icon_state = "frickles" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/cooking_oil = 2, + /datum/reagent/consumable/capsaicin = 1, + ) + tastes = list("frickles" = 1) + foodtypes = VEGETABLES | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/raw_ballpark_pretzel + name = "raw pretzel" + desc = "A twisted knot of dough, ready to be baked, or possibly griddled?" + icon = 'icons/obj/food/martian.dmi' + icon_state = "raw_ballpark_pretzel" + food_reagents = list( + /datum/reagent/consumable/nutriment = 3, + /datum/reagent/consumable/salt = 1, + ) + tastes = list("bread" = 1, "salt" = 1) + foodtypes = GRAIN | RAW + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/raw_ballpark_pretzel/make_bakeable() + AddComponent(/datum/component/bakeable, /obj/item/food/ballpark_pretzel, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE) + +/obj/item/food/raw_ballpark_pretzel/make_grillable() + AddComponent(/datum/component/grillable, /obj/item/food/ballpark_pretzel, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE) + +/obj/item/food/ballpark_pretzel + name = "ballpark pretzel" + desc = "A classic German bread, transformed by the hand of American imperialism into a game-day snack, and then carried to the Red Planet on the backs of Japanese settlers. How multicultural." + icon = 'icons/obj/food/martian.dmi' + icon_state = "ballpark_pretzel" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/salt = 1, + ) + burns_on_grill = TRUE + burns_in_oven = TRUE + tastes = list("bread" = 1, "salt" = 1) + foodtypes = GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/kebab/raw_ballpark_tsukune + name = "raw tsukune" + desc = "Raw chicken meatballs on a skewer, ready to be griddled into something delicious." + icon = 'icons/obj/food/martian.dmi' + icon_state = "raw_ballpark_tsukune" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 3, + /datum/reagent/consumable/nutriment = 2, + ) + tastes = list("raw chicken" = 7, "salmonella" = 1) + foodtypes = MEAT | RAW + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/kebab/raw_ballpark_tsukune/make_grillable() + AddComponent(/datum/component/grillable, /obj/item/food/kebab/ballpark_tsukune, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE) + +/obj/item/food/kebab/ballpark_tsukune + name = "ballpark tsukune" + desc = "Skewered chicken meatballs in a sweet-and-savoury yakitori sauce. A common sight at Martian ballparks." + icon = 'icons/obj/food/martian.dmi' + icon_state = "ballpark_tsukune" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 6, + /datum/reagent/consumable/nutriment = 4, + ) + burns_on_grill = TRUE + tastes = list("chicken" = 1, "umami sauce" = 1) + foodtypes = MEAT + w_class = WEIGHT_CLASS_SMALL + +// Ethereal-suitable cross-culture food +/* Ethereals are, as part of the uplifting process, considered as citizens of the Terran Federation. + For this reason, a lot of ethereals have chosen to move throughout human space, settling on various planets to a mixed reception. + Mars is no exception to this rule, where the ethereal population has been more welcomed than most, due to Mars' more cosmopolitan past. + Here, the ethereals have developed a distinct culture, neither that of their homeland nor that of Mars, and with that a distinct cuisine. +*/ + +// Pickled Voltvine +/obj/item/food/pickled_voltvine + name = "pickled voltvine" + desc = "A traditional dish from Sprout (where it is known as hinu'sashuruhk), pickled voltvine has taken on a new identity amongst the pickle masters of Mars, earning a seat at the holy pickle pantheon alongside pickled ginger and kimchi (once appropriately discharged, at least)." + icon = 'icons/obj/food/martian.dmi' + icon_state = "pickled_voltvine" + food_reagents = list( + /datum/reagent/consumable/liquidelectricity = 4, //Monkestation edit: no enriched + /datum/reagent/consumable/nutriment/vitamin = 2, + ) + tastes = list("sour radish" = 1) + foodtypes = VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +// 24-Volt Energy +/obj/item/food/volt_fish + name = "24-volt fish" + desc = "Some may question the 24-volt fish. After all, fish poached in electric-blue super-sour energy drink looks awful. And, indeed, tastes awful. So why do the Martian ethereals like it, then?" //beats the hell out of me + icon = 'icons/obj/food/martian.dmi' + icon_state = "volt_fish" + food_reagents = list( + /datum/reagent/consumable/liquidelectricity = 6, //Monkestation edit: no enriched + /datum/reagent/consumable/nutriment/protein = 4, + ) + tastes = list("fish" = 1, "sour pear" = 1) + foodtypes = SEAFOOD + w_class = WEIGHT_CLASS_SMALL + +// Sprout Bowl +/obj/item/food/salad/sprout_bowl + name = "\improper Sprout bowl" + desc = "Named for the Ethereal homeworld, this rice-based bowl draws on the donburi tradition, but rejects typical donburi toppings, instead using sashimi grade fish and pickled voltvine." + icon = 'icons/obj/food/martian.dmi' + icon_state = "sprout_bowl" + food_reagents = list( + /datum/reagent/consumable/liquidelectricity = 8, //Monkestation edit: no enriched + /datum/reagent/consumable/nutriment/protein = 4, + /datum/reagent/consumable/nutriment/vitamin = 2, + ) + tastes = list("fish" = 1, "sour radish" = 1, "rice" = 1) + foodtypes = SEAFOOD | VEGETABLES | GRAIN + w_class = WEIGHT_CLASS_SMALL diff --git a/code/game/objects/items/food/meatdish.dm b/code/game/objects/items/food/meatdish.dm index 6861118bd203..e246c7476e9a 100644 --- a/code/game/objects/items/food/meatdish.dm +++ b/code/game/objects/items/food/meatdish.dm @@ -88,6 +88,16 @@ desc = "The dreaded donkfish fillet. No sane spaceman would eat this, and it does not get better when cooked." icon_state = "donkfillet" +/obj/item/food/fishmeat/octopus + name = "octopus tentacle" + desc = "A large tentacle from an octopus." + icon = 'icons/obj/food/martian.dmi' + icon_state = "octopus_fillet" + food_reagents = list(/datum/reagent/consumable/nutriment/protein = 3) + +/obj/item/food/fishmeat/octopus/make_grillable() + AddComponent(/datum/component/grillable, /obj/item/food/grilled_octopus, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE) + /obj/item/food/fishfingers name = "fish fingers" desc = "A finger of fish." diff --git a/code/game/objects/items/food/packaged.dm b/code/game/objects/items/food/packaged.dm index ce8a6f6a8256..e0226497a8aa 100644 --- a/code/game/objects/items/food/packaged.dm +++ b/code/game/objects/items/food/packaged.dm @@ -145,6 +145,54 @@ playsound(loc, 'sound/items/eatfood.ogg', rand(30, 50), TRUE) qdel(src) +/obj/item/food/canned/squid_ink + name = "canned squid ink" + desc = "An odd ingredient in typical cooking, squid ink lends a taste of the sea to any dish- while also dyeing it jet black in the process." + icon_state = "squidinkcan" + trash_type = /obj/item/trash/can/food/squid_ink + food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/salt = 5) + tastes = list("seafood" = 7, "tin" = 1) + foodtypes = SEAFOOD + +/obj/item/food/canned/chap + name = "can of CHAP" + desc = "CHAP: Chopped Ham And Pork. The classic American canned meat product that won a world war, then sent millions of servicemen home with heart congestion." + icon_state = "chapcan" + trash_type = /obj/item/trash/can/food/chap + food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/salt = 5) + tastes = list("meat" = 7, "tin" = 1) + foodtypes = MEAT + +/obj/item/food/canned/chap/make_processable() + AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/chapslice, 5, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut") + +/obj/item/food/chapslice + name = "slice of chap" + desc = "A thin slice of chap. Useful for frying, or making sandwiches." + icon = 'icons/obj/food/martian.dmi' + icon_state = "chapslice" + food_reagents = list( + /datum/reagent/consumable/nutriment/vitamin = 3 + ) + tastes = list("meat" = 1) + foodtypes = MEAT + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/chapslice/make_grillable() + AddComponent(/datum/component/grillable, /obj/item/food/grilled_chapslice, rand(20 SECONDS, 40 SECONDS), TRUE, TRUE) + +/obj/item/food/grilled_chapslice + name = "grilled slice of chap" + desc = "A greasy hot slice of chap. Forms a good part of a balanced meal." + icon = 'icons/obj/food/martian.dmi' + icon_state = "chapslice_grilled" + food_reagents = list( + /datum/reagent/consumable/nutriment/vitamin = 3 + ) + burns_on_grill = TRUE + tastes = list("meat" = 1) + foodtypes = MEAT + w_class = WEIGHT_CLASS_SMALL // DONK DINNER: THE INNOVATIVE WAY TO GET YOUR DAILY RECOMMENDED ALLOWANCE OF SALT... AND THEN SOME! /obj/item/food/ready_donk @@ -218,6 +266,35 @@ tastes = list("enchiladas" = 2, "laziness" = 1) foodtypes = GRAIN | DAIRY | MEAT | VEGETABLES | JUNKFOOD +/obj/item/food/ready_donk/nachos_grandes //which translates to... big nachos + name = "\improper Ready-Donk: Donk Sol Series Boritos Nachos Grandes" + desc = "Get ready for game day with Donk's classic Nachos Grandes, sponsors of the Donk Sol Series! Boritos chips loaded with cheese, spicy meat and beans, alongside separate guac, pico and donk sauce. Batter up!" + tastes = list("nachos" = 2, "laziness" = 1) + foodtypes = GRAIN | DAIRY | MEAT | VEGETABLES | JUNKFOOD + + warm_type = /obj/item/food/ready_donk/warm/nachos_grandes + +/obj/item/food/ready_donk/warm/nachos_grandes + name = "warm Ready-Donk: Donk Sol Series Boritos Nachos Grandes" + desc = "Get ready for game day with Donk's classic Nachos Grandes, sponsors of the Donk Sol Series! Boritos chips loaded with cheese, spicy meat and beans, alongside separate guac, pico and donk sauce. Served hotter than Sakamoto's fastball!" + icon_state = "ready_donk_warm_nachos" + tastes = list("nachos" = 2, "laziness" = 1) + foodtypes = GRAIN | DAIRY | MEAT | VEGETABLES | JUNKFOOD + +/obj/item/food/ready_donk/donkrange_chicken + name = "\improper Ready-Donk: Donk-range Chicken" + desc = "A Chinese classic, it's Donk's original spicy orange chicken with stir-fried peppers and onions, all over steamed rice." + tastes = list("orange chicken" = 2, "laziness" = 1) + foodtypes = GRAIN | MEAT | VEGETABLES | JUNKFOOD + + warm_type = /obj/item/food/ready_donk/warm/donkrange_chicken + +/obj/item/food/ready_donk/warm/donkrange_chicken + name = "warm Ready-Donk: Ready-Donk: Donk-range Chicken" + desc = "A Chinese classic, it's Donk's original spicy orange chicken with stir-fried peppers and onions, all over steamed rice and served hotter than a dragon's breath." + icon_state = "ready_donk_warm_orange" + tastes = list("orange chicken" = 2, "laziness" = 1) + foodtypes = GRAIN | MEAT | VEGETABLES | JUNKFOOD // Rations /obj/item/food/rationpack diff --git a/code/game/objects/items/food/salad.dm b/code/game/objects/items/food/salad.dm index ebbccd53af10..db8c39df7626 100644 --- a/code/game/objects/items/food/salad.dm +++ b/code/game/objects/items/food/salad.dm @@ -70,11 +70,13 @@ tastes = list("rice" = 1) foodtypes = GRAIN | RAW +/* Monkestation Edit: You have to boil it /obj/item/food/uncooked_rice/make_bakeable() AddComponent(/datum/component/bakeable, /obj/item/food/boiledrice, rand(15 SECONDS, 20 SECONDS), TRUE, TRUE) /obj/item/food/uncooked_rice/make_microwaveable() AddElement(/datum/element/microwavable, /obj/item/food/boiledrice) +End Monkestation Edit */ /obj/item/food/boiledrice name = "boiled rice" diff --git a/code/game/objects/items/food/snacks.dm b/code/game/objects/items/food/snacks.dm index 8e96ebd37014..1b3364291d25 100644 --- a/code/game/objects/items/food/snacks.dm +++ b/code/game/objects/items/food/snacks.dm @@ -540,3 +540,153 @@ GLOBAL_LIST_INIT(safe_peanut_types, populate_safe_peanut_types()) qdel(sample) . = ..() + +/obj/item/food/hot_shots + name = "\improper Hot Shots" + desc = "The ultimate baseball snack. Once you start, it's hard to stop!" + icon_state = "hot_shots" + trash_type = /obj/item/trash/hot_shots + food_reagents = list( + /datum/reagent/consumable/nutriment = 2, + /datum/reagent/consumable/nutriment/vitamin = 1, + ) + tastes = list("popcorn" = 1, "caramel" = 1, "peanuts" = 1) + foodtypes = JUNKFOOD | SUGAR | NUTS + junkiness = 25 + w_class = WEIGHT_CLASS_SMALL + grind_results = list(/datum/reagent/consumable/cornoil = 3, /datum/reagent/consumable/caramel = 2) + +/obj/item/food/sticko + name = "\improper Sticko Classic" + desc = "A classic treat for all ages, it's Sticko, the original chocolate-coated biscuit stick! This one's the original (and as some would say, best) flavour: biscuit and milk chocolate." + icon_state = "sticko_classic" + trash_type = /obj/item/trash/sticko + food_reagents = list( + /datum/reagent/consumable/sugar = 3, + /datum/reagent/consumable/coco = 1, + ) + tastes = list("biscuit" = 1, "chocolate" = 1) + junkiness = 25 + foodtypes = JUNKFOOD | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/sticko/matcha + name = "\improper Sticko Matcha" + desc = "A classic treat for all ages, it's Sticko, the original chocolate-coated biscuit stick! This one's got matcha flavoured white chocolate as its coating, to evoke feelings of tradition." + icon_state = "sticko_matcha" + trash_type = /obj/item/trash/sticko/matcha + food_reagents = list( + /datum/reagent/consumable/sugar = 2, + /datum/reagent/consumable/coco = 1, + /datum/reagent/consumable/caramel = 1, + ) + tastes = list("biscuit" = 1, "matcha" = 1) + +/obj/item/food/sticko/nutty + name = "\improper Sticko Nutty" + desc = "A classic treat for all ages, it's Sticko, the original chocolate-coated biscuit stick! This one's got peanut-butter flavoured chocolate as its coating, for a nutty twist." + icon_state = "sticko_nutty" + trash_type = /obj/item/trash/sticko/nutty + food_reagents = list( + /datum/reagent/consumable/sugar = 2, + /datum/reagent/consumable/nutriment = 1, + /datum/reagent/consumable/coco = 1, + ) + tastes = list("biscuit" = 1, "peanut butter" = 1) + foodtypes = JUNKFOOD | GRAIN | NUTS + +/obj/item/food/sticko/pineapple + name = "\improper Sticko Pineapple" + desc = "A classic treat for all ages, it's Sticko, the original chocolate-coated biscuit stick! This one's got pineapple flavoured white chocolate as its coating, for those ananas fan-as." + icon_state = "sticko_pineapple" + trash_type = /obj/item/trash/sticko/pineapple + food_reagents = list( + /datum/reagent/consumable/sugar = 2, + /datum/reagent/consumable/coco = 1, + /datum/reagent/consumable/peanut_butter = 1, + ) + tastes = list("biscuit" = 1, "pineapple" = 1) + foodtypes = JUNKFOOD | GRAIN | PINEAPPLE + +/obj/item/food/sticko/yuyake + name = "\improper Sticko Yūyake" + desc = "A classic treat for all ages, it's Sticko, the original chocolate-coated biscuit stick! This one's got Yūyake flavoured white chocolate as its coating, for a refreshing melony treat." + icon_state = "sticko_yuyake" + trash_type = /obj/item/trash/sticko/yuyake + food_reagents = list( + /datum/reagent/consumable/sugar = 2, + /datum/reagent/consumable/coco = 1, + /datum/reagent/consumable/banana = 1, + ) + tastes = list("biscuit" = 1, "melon" = 1) + +/obj/item/food/sticko/random + name = "\improper Sticko Mystery" + desc = "A classic treat for all ages, it's Sticko, the original chocolate-coated biscuit stick! This one's got an obscuring paper sheath, to hide the true flavour..." + +/obj/item/food/sticko/random/Initialize(mapload) + var/random_flavour = pick(subtypesof(/obj/item/food/sticko) - /obj/item/food/sticko/random) + var/obj/item/food/sample = new random_flavour(loc) + name = sample.name + desc = sample.desc + food_reagents = sample.food_reagents + tastes = sample.tastes + + qdel(sample) + + . = ..() + +/obj/item/food/shok_roks + name = "\improper Shok-Roks - Stormcloud Candy flavour" + desc = "You've heard of Snap-Roks, now get ready for Shok-Roks: the popping candy for Ethereals! Available in 5 exciting flavours, of which this bag contains Stormcloud Candy- like cotton candy, but electric!" + icon_state = "shok_roks_candy" + trash_type = /obj/item/trash/shok_roks + food_reagents = list( + /datum/reagent/consumable/liquidelectricity = 2, //Monkestation edit: no enriched + /datum/reagent/consumable/sugar = 3 + ) + tastes = list("sugar" = 1, "lightning" = 1) + +/obj/item/food/shok_roks/citrus + name = "\improper Shok-Roks - Cirrus Citrus flavour" + desc = "You've heard of Snap-Roks, now get ready for Shok-Roks: the popping candy for Ethereals! Available in 5 exciting flavours, of which this bag contains Cirrus Citrus- all the citrus flavour, none of the real citrus extract." + icon_state = "shok_roks_citrus" + trash_type = /obj/item/trash/shok_roks/citrus + tastes = list("citrus" = 1, "lightning" = 1) + +/obj/item/food/shok_roks/berry + name = "\improper Shok-Roks - Berry Storm flavour" + desc = "You've heard of Snap-Roks, now get ready for Shok-Roks: the popping candy for Ethereals! Available in 5 exciting flavours, of which this bag contains Berry Storm- filled with non-descript sour berry flavour!" + icon_state = "shok_roks_berry" + trash_type = /obj/item/trash/shok_roks/berry + tastes = list("sour berry" = 1, "lightning" = 1) + +/obj/item/food/shok_roks/tropical + name = "\improper Shok-Roks - Tropical Thunder flavour" + desc = "You've heard of Snap-Roks, now get ready for Shok-Roks: the popping candy for Ethereals! Available in 5 exciting flavours, of which this bag contains Tropical Thunder- all the tropical fruits! ALL OF THEM!" + icon_state = "shok_roks_tropical" + trash_type = /obj/item/trash/shok_roks/tropical + tastes = list("tropical fruits" = 1, "lightning" = 1) + +/obj/item/food/shok_roks/lanternfruit + name = "\improper Shok-Roks - Lightning Lanternfruit flavour" + desc = "You've heard of Snap-Roks, now get ready for Shok-Roks: the popping candy for Ethereals! Available in 5 exciting flavours, of which this bag contains Lightning Lanternfruit- the only Sprout-native fruit in any Shok-Rok flavour." + icon_state = "shok_roks_lanternfruit" + trash_type = /obj/item/trash/shok_roks/lanternfruit + tastes = list("sour pear" = 1, "lightning" = 1) + +/obj/item/food/shok_roks/random + name = "\improper Shok-Roks - Hidden Hurricane flavour" + desc = "You've heard of Snap-Roks, now get ready for Shok-Roks: the popping candy for Ethereals! Available in 5 exciting flavours, any of which could be in this bag!" + +/obj/item/food/shok_roks/random/Initialize(mapload) + var/random_flavour = pick(subtypesof(/obj/item/food/shok_roks) - /obj/item/food/shok_roks/random) + var/obj/item/food/sample = new random_flavour(loc) + name = sample.name + desc = sample.desc + food_reagents = sample.food_reagents + tastes = sample.tastes + + qdel(sample) + + . = ..() diff --git a/code/game/objects/items/melee/baton.dm b/code/game/objects/items/melee/baton.dm index c054ccfb48b0..25ec917416e5 100644 --- a/code/game/objects/items/melee/baton.dm +++ b/code/game/objects/items/melee/baton.dm @@ -204,7 +204,11 @@ target.Paralyze((isnull(stun_override) ? stun_time_cyborg : stun_override) * (trait_check ? 0.1 : 1)) additional_effects_cyborg(target, user) else - target.stamina.adjust(-stamina_damage) + if(!trait_check) + target.stamina.adjust(-stamina_damage) + else + var/stamina_to_min = (target.stamina.maximum * 0.35) + target.stamina.adjust_to(-stamina_damage, stamina_to_min) if(!trait_check) target.Knockdown((isnull(stun_override) ? knockdown_time : stun_override)) additional_effects_non_cyborg(target, user) diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index 7ce67bb360f0..ffca12c094ff 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -180,3 +180,46 @@ desc = "It's been Donk-decimated." icon_state = "ready_donk" +/obj/item/trash/can/food/squid_ink + name = "canned squid ink" + icon_state = "squidinkcan_empty" + +/obj/item/trash/can/food/chap + name = "can of CHAP" + icon_state = "chapcan_empty" + +/obj/item/trash/hot_shots + name = "\improper Hot Shots box" + icon_state = "hot_shots" + +/obj/item/trash/sticko + name = "\improper Sticko box" + icon_state = "sticko" + +/obj/item/trash/sticko/matcha + icon_state = "sticko_matcha" + +/obj/item/trash/sticko/nutty + icon_state = "sticko_nutty" + +/obj/item/trash/sticko/pineapple + icon_state = "sticko_pineapple" + +/obj/item/trash/sticko/yuyake + icon_state = "sticko_yuyake" + +/obj/item/trash/shok_roks + name = "\improper Shok-Roks packet" + icon_state = "shok_roks" + +/obj/item/trash/shok_roks/citrus + icon_state = "shok_roks_citrus" + +/obj/item/trash/shok_roks/berry + icon_state = "shok_roks_berry" + +/obj/item/trash/shok_roks/tropical + icon_state = "shok_roks_tropical" + +/obj/item/trash/shok_roks/lanternfruit + icon_state = "shok_roks_lanternfruit" diff --git a/code/modules/antagonists/heretic/magic/realignment.dm b/code/modules/antagonists/heretic/magic/realignment.dm index 07c8d57e76a4..a1b8061a102e 100644 --- a/code/modules/antagonists/heretic/magic/realignment.dm +++ b/code/modules/antagonists/heretic/magic/realignment.dm @@ -59,6 +59,7 @@ /datum/status_effect/realignment/on_apply() ADD_TRAIT(owner, TRAIT_PACIFISM, id) + ADD_TRAIT(owner, TRAIT_CANT_STAMCRIT, id) owner.add_filter(id, 2, list("type" = "outline", "color" = "#d6e3e7", "size" = 2)) var/filter = owner.get_filter(id) animate(filter, alpha = 127, time = 1 SECONDS, loop = -1) @@ -67,10 +68,11 @@ /datum/status_effect/realignment/on_remove() REMOVE_TRAIT(owner, TRAIT_PACIFISM, id) + REMOVE_TRAIT(owner, TRAIT_CANT_STAMCRIT, id) owner.remove_filter(id) /datum/status_effect/realignment/tick(seconds_per_tick, times_fired) - owner.stamina.adjust(5, TRUE) + owner.stamina.adjust(15, TRUE) owner.AdjustAllImmobility(-0.5 SECONDS) /atom/movable/screen/alert/status_effect/realignment diff --git a/code/modules/food_and_drinks/machinery/stove.dm b/code/modules/food_and_drinks/machinery/stove.dm index db5e0bb63c8b..c6e1d9dfbebe 100644 --- a/code/modules/food_and_drinks/machinery/stove.dm +++ b/code/modules/food_and_drinks/machinery/stove.dm @@ -178,11 +178,18 @@ // Clearing reagents Will do this for us already, but if we have no reagents this is a failsafe dump_ingredients() -/obj/item/reagent_containers/cup/soup_pot/proc/dump_ingredients(atom/drop_loc = drop_location()) +/** + * Dumps all inside ingredients to a spot + * + * * drop_loc - Where to drop the ingredients, defaults to drop loc + * * x_offset - How much pixel X offset to give every ingredient, if not set will be random + * * y_offset - How much pixel Y offset to give every ingredient, if not set will be random + */ +/obj/item/reagent_containers/cup/soup_pot/proc/dump_ingredients(atom/drop_loc = drop_location(), x_offset, y_offset) for(var/obj/item/ingredient as anything in added_ingredients) ingredient.forceMove(drop_loc) - ingredient.pixel_x += rand(-4, 4) - ingredient.pixel_y += rand(-4, 4) + ingredient.pixel_x += (isnum(x_offset) ? x_offset : rand(-4, 4)) + ingredient.pixel_y += (isnum(y_offset) ? x_offset : rand(-4, 4)) ingredient.SpinAnimation(loops = 1) update_appearance(UPDATE_OVERLAYS) diff --git a/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm b/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm index 091ad220c5c8..116982d597c2 100644 --- a/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm +++ b/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm @@ -586,3 +586,78 @@ mix_message = "Arcs of lightning fly from the mixture." mix_sound = 'sound/weapons/zapbang.ogg' +/datum/chemical_reaction/drink/yuyakita + results = list(/datum/reagent/consumable/ethanol/yuyakita = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 2, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/ethanol/yuyake = 1) + +/datum/chemical_reaction/drink/saibasan + results = list(/datum/reagent/consumable/ethanol/saibasan = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/shochu = 2, /datum/reagent/consumable/ethanol/yuyake = 2, /datum/reagent/consumable/triple_citrus = 3, /datum/reagent/consumable/cherryjelly = 3) + +/datum/chemical_reaction/drink/banzai_ti + results = list(/datum/reagent/consumable/ethanol/banzai_ti = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/yuyake = 1, /datum/reagent/consumable/ethanol/triple_sec = 1, /datum/reagent/consumable/ethanol/gin = 1, /datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/ethanol/tequila = 1, /datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/triple_citrus = 2, /datum/reagent/consumable/sodawater = 2) + +/datum/chemical_reaction/drink/sanraizusoda + results = list(/datum/reagent/consumable/ethanol/sanraizusoda = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/yuyake = 1, /datum/reagent/consumable/sodawater = 2, /datum/reagent/consumable/ice = 1, /datum/reagent/consumable/cream = 1) + +/datum/chemical_reaction/drink/kumicho + results = list(/datum/reagent/consumable/ethanol/kumicho = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/godfather = 2, /datum/reagent/consumable/ethanol/shochu = 1, /datum/reagent/consumable/ethanol/bitters = 1) + +/datum/chemical_reaction/drink/red_planet + results = list(/datum/reagent/consumable/ethanol/red_planet = 8) + required_reagents = list(/datum/reagent/consumable/ethanol/shochu = 2, /datum/reagent/consumable/ethanol/triple_sec = 2, /datum/reagent/consumable/ethanol/vermouth = 2, /datum/reagent/consumable/grenadine = 1, /datum/reagent/consumable/ethanol/bitters = 1) + +/datum/chemical_reaction/drink/amaterasu + results = list(/datum/reagent/consumable/ethanol/amaterasu = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/shochu = 1, /datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/grenadine = 1, /datum/reagent/consumable/berryjuice = 2, /datum/reagent/consumable/sodawater = 5) + +/datum/chemical_reaction/drink/nekomimosa + results = list(/datum/reagent/consumable/ethanol/nekomimosa = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/yuyake = 2, /datum/reagent/consumable/watermelonjuice = 2, /datum/reagent/consumable/ethanol/champagne = 1) + +/datum/chemical_reaction/drink/sentai_quencha + results = list(/datum/reagent/consumable/ethanol/sentai_quencha = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/shochu = 1, /datum/reagent/consumable/ethanol/curacao = 1, /datum/reagent/consumable/triple_citrus = 1, /datum/reagent/consumable/melon_soda = 2) + +/datum/chemical_reaction/drink/bosozoku + results = list(/datum/reagent/consumable/ethanol/bosozoku = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/rice_beer = 1, /datum/reagent/consumable/lemonade = 1) + +/datum/chemical_reaction/drink/ersatzche + results = list(/datum/reagent/consumable/ethanol/ersatzche = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/rice_beer = 5, /datum/reagent/consumable/pineapplejuice = 3, /datum/reagent/consumable/capsaicin = 1, /datum/reagent/consumable/sugar = 1) + +/datum/chemical_reaction/drink/red_city_am + results = list(/datum/reagent/consumable/ethanol/red_city_am = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/rice_beer = 5, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/red_bay = 1, /datum/reagent/consumable/soysauce = 1, /datum/reagent/consumable/tomatojuice = 2) + +/datum/chemical_reaction/drink/kings_ransom + results = list(/datum/reagent/consumable/ethanol/kings_ransom = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/rice_beer = 5, /datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/berryjuice = 2, /datum/reagent/consumable/ethanol/bitters = 1) + +/datum/chemical_reaction/drink/four_bit + results = list(/datum/reagent/consumable/ethanol/four_bit = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/hakka_mate = 2, /datum/reagent/consumable/limejuice = 1) + +/datum/chemical_reaction/drink/white_hawaiian + results = list(/datum/reagent/consumable/ethanol/white_hawaiian = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/kahlua = 1, /datum/reagent/consumable/ethanol/coconut_rum = 1, /datum/reagent/consumable/coconut_milk = 2) + +/datum/chemical_reaction/drink/maui_sunrise + results = list(/datum/reagent/consumable/ethanol/maui_sunrise = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/coconut_rum = 2, /datum/reagent/consumable/pineapplejuice = 2, /datum/reagent/consumable/ethanol/yuyake = 1, /datum/reagent/consumable/triple_citrus = 1, /datum/reagent/consumable/lemon_lime = 4) + +/datum/chemical_reaction/drink/imperial_mai_tai + results = list(/datum/reagent/consumable/ethanol/imperial_mai_tai = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/navy_rum = 1, /datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/ethanol/triple_sec = 1, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/korta_nectar = 1) + +/datum/chemical_reaction/drink/konococo_rumtini + results = list(/datum/reagent/consumable/ethanol/konococo_rumtini = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/coconut_rum = 2, /datum/reagent/consumable/ethanol/kahlua = 3, /datum/reagent/consumable/coffee = 3, /datum/reagent/consumable/sugar = 2) + +/datum/chemical_reaction/drink/blue_hawaiian + results = list(/datum/reagent/consumable/ethanol/blue_hawaiian = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/coconut_rum = 2, /datum/reagent/consumable/pineapplejuice = 1, /datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/ethanol/curacao = 1) diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index dd32b7d9f80a..714ca78a76a7 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -258,4 +258,17 @@ /datum/chemical_reaction/food/vinegar results = list(/datum/reagent/consumable/vinegar = 5) required_reagents = list(/datum/reagent/consumable/ethanol/wine = 1, /datum/reagent/water = 1, /datum/reagent/consumable/sugar = 1) - + //reaction_flags = REACTION_INSTANT + +/datum/chemical_reaction/food/grounding_neutralise + results = list(/datum/reagent/consumable/salt = 2) + required_reagents = list(/datum/reagent/consumable/liquidelectricity = 2, /datum/reagent/consumable/grounding_solution = 1) //Monkestation edit: no enriched + mix_message = "The mixture lets off a sharp snap as the electricity discharges." + mix_sound = 'sound/weapons/taser.ogg' + //reaction_flags = REACTION_INSTANT + +/datum/chemical_reaction/food/martian_batter + results = list(/datum/reagent/consumable/martian_batter = 2) + required_reagents = list(/datum/reagent/consumable/flour = 1, /datum/reagent/consumable/nutriment/soup/dashi = 1) + mix_message = "A smooth batter forms." + //reaction_flags = REACTION_INSTANT diff --git a/code/modules/food_and_drinks/recipes/soup_guide.dm b/code/modules/food_and_drinks/recipes/soup_guide.dm index 4a1e0a58132e..a2bc0faccdba 100644 --- a/code/modules/food_and_drinks/recipes/soup_guide.dm +++ b/code/modules/food_and_drinks/recipes/soup_guide.dm @@ -2,10 +2,27 @@ machinery = list(/obj/machinery/stove) category = CAT_SOUP non_craftable = TRUE - + /// What contained is this reaction expected to be served in? + /// Used to determine the icon to display in the crafting UI. var/expected_container = /obj/item/reagent_containers/cup/bowl +/datum/crafting_recipe/food/reaction/soup/New() + // What are ya using this path for if it's not a food reaction? + if(!ispath(reaction, /datum/chemical_reaction/food)) + return ..() + + var/datum/chemical_reaction/food/soup_reaction = reaction + // If the reaction has a solid food item result, it is prioritized over reagent results + if(ispath(initial(soup_reaction.resulting_food_path), /obj/item/food)) + result = initial(soup_reaction.resulting_food_path) + result_amount = 1 + + return ..() + /datum/crafting_recipe/food/reaction/soup/crafting_ui_data() + if(ispath(result, /obj/item/food)) + return ..() + var/list/data = list() var/datum/glass_style/has_foodtype/soup_style = GLOB.glass_style_singletons[expected_container][result] @@ -20,11 +37,11 @@ if(!istype(chemical_reaction)) return for(var/obj/item/ingredienttype as anything in chemical_reaction.required_ingredients) - reqs[ingredienttype] = chemical_reaction.required_ingredients[ingredienttype] + LAZYSET(reqs, ingredienttype, chemical_reaction.required_ingredients[ingredienttype]) if(ispath(result, /datum/reagent/consumable)) var/datum/reagent/consumable/soup_result = result - total_nutriment_factor = initial(soup_result.nutriment_factor) * result_amount + total_nutriment_factor += initial(soup_result.nutriment_factor) * result_amount /datum/crafting_recipe/food/reaction/soup/meatball_soup reaction = /datum/chemical_reaction/food/soup/meatballsoup diff --git a/code/modules/food_and_drinks/recipes/soup_mixtures.dm b/code/modules/food_and_drinks/recipes/soup_mixtures.dm index e4912ebfa0ad..186d144a0771 100644 --- a/code/modules/food_and_drinks/recipes/soup_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/soup_mixtures.dm @@ -91,6 +91,12 @@ if(!length(required_ingredients)) return + // This only happens if we're being instant reacted so let's just skip to what we really want + if(isnull(reaction)) + testing("Soup reaction of type [type] instant reacted, cleaning up.") + clean_up(holder) + return + if(isnull(total_ingredient_max)) total_ingredient_max = 0 // We only need to calculate this once, effectively static per-type @@ -164,9 +170,21 @@ var/obj/item/reagent_containers/cup/soup_pot/pot = holder.my_atom if(!istype(pot)) CRASH("[pot ? "Non-pot atom" : "Null pot"]) made it to the end of the [type] reaction chain.") - reaction.data["ingredients"] = null testing("Soup reaction finished with a total react volume of [react_vol] and [length(pot.added_ingredients)] ingredients. Cleaning up.") + clean_up(holder, reaction, react_vol) + +/** + * Cleans up the ingredients and adds whatever leftover reagents to the mixture + * + * * holder: The sou ppot + * * reaction: The reaction being cleaned up, note this CAN be null if being instant reacted + * * react_vol: How much soup was produced + */ +/datum/chemical_reaction/food/soup/proc/clean_up(datum/reagents/holder, datum/equilibrium/reaction, react_vol) + var/obj/item/reagent_containers/cup/soup_pot/pot = holder.my_atom + + reaction?.data["ingredients"] = null if(length(outputted_ingredients)) var/repeating_amount = 0 @@ -199,11 +217,28 @@ if (!Nonsouprecipe) //monkeedit ingredient.AddElement(/datum/element/fried_item, 30) - //LAZYNULL(pot.added_ingredients) + // Spawning physical food results + if(resulting_food_path) + var/obj/item/created = new resulting_food_path(get_turf(pot)) + created.pixel_y += 8 + + // Anything left in the ingredient list will get dumped out + pot.dump_ingredients(get_turf(pot), y_offset = 8) // Blackbox log the chemical reaction used, to account for soup reaction that don't produce typical results BLACKBOX_LOG_FOOD_MADE(type) +/** + * Transfers reagents from the passed reagent to the soup pot, as a "result" + * + * Also handles deleting a portion of nutriment reagents present, pseudo-converting it into soup reagent + * + * * ingredient: The ingredient to transfer reagents from + * * holder: The reagent holder of the soup pot the reaction is taking place in + * * amount: The amount of reagents to transfer, if null will transfer all reagents + */ /datum/chemical_reaction/food/soup/proc/transfer_ingredient_reagents(obj/item/ingredient, datum/reagents/holder, amount) + if(ingredient_reagent_multiplier <= 0) + return var/datum/reagents/ingredient_pool = ingredient.reagents // Some ingredients are purely flavor (no pun intended) and will have reagents if(isnull(ingredient_pool) || ingredient_pool.total_volume <= 0) @@ -219,6 +254,7 @@ // The other half of the nutriment, and the rest of the reagents, will get put directly into the pot ingredient_pool.trans_to(holder, amount, ingredient_reagent_multiplier, no_react = TRUE) +/// Called whenever the soup pot overfills with reagent. /datum/chemical_reaction/food/soup/proc/boil_over(datum/reagents/holder) var/obj/item/reagent_containers/cup/soup_pot/pot = holder.my_atom var/turf/below_pot = get_turf(pot) @@ -1738,3 +1774,408 @@ /datum/reagent/consumable/sugar = 8, ) percentage_of_nutriment_converted = 0.1 + +// Martian Food +// Boiled Noodles +/datum/chemical_reaction/food/soup/boilednoodles + required_reagents = list( + /datum/reagent/consumable/salt = 2 + ) + required_ingredients = list( + /obj/item/food/spaghetti/rawnoodles = 1 + ) + required_catalysts = list( + /datum/reagent/water/salt = 10, + ) + resulting_food_path = /obj/item/food/spaghetti/boilednoodles + ingredient_reagent_multiplier = 0 + +// Dashi Broth +/datum/reagent/consumable/nutriment/soup/dashi + name = "Dashi" + description = "Made with kombu and katsuobushi, this mother stock forms the basis for a large number of Japanese dishes." + data = list("umami" = 1) + color = "#D49D26" + +/datum/glass_style/has_foodtype/soup/dashi + required_drink_type = /datum/reagent/consumable/nutriment/soup/dashi + name = "dashi" + drink_type = SEAFOOD + +/datum/chemical_reaction/food/soup/dashi + required_reagents = list( + /datum/reagent/consumable/dashi_concentrate = 5, + /datum/reagent/water = 40, + ) + results = list( + /datum/reagent/consumable/nutriment/soup/dashi = 40, + ) + +// Teriyaki Sauce +/datum/reagent/consumable/nutriment/soup/teriyaki + name = "Teriyaki Sauce" + description = "A Japanese sauce that's heavy on umami." + data = list("umami" = 1) + color = "#3F0D02" + +/datum/glass_style/has_foodtype/soup/teriyaki + required_drink_type = /datum/reagent/consumable/nutriment/soup/teriyaki + name = "teriyaki sauce" + drink_type = VEGETABLES + +/datum/chemical_reaction/food/soup/teriyaki + required_reagents = list( + /datum/reagent/consumable/soysauce = 10, + /datum/reagent/consumable/ethanol/sake = 10, + /datum/reagent/consumable/honey = 5, + ) + results = list( + /datum/reagent/consumable/nutriment/soup/teriyaki = 20, + ) + +// Curry Sauce +/datum/reagent/consumable/nutriment/soup/curry_sauce + name = "Curry Sauce" + description = "A basic curry sauce that goes well on a wide range of foods." + data = list("curry" = 1) + color = "#F6C800" + +/datum/glass_style/has_foodtype/soup/curry_sauce + required_drink_type = /datum/reagent/consumable/nutriment/soup/curry_sauce + name = "curry sauce" + drink_type = VEGETABLES + +/datum/chemical_reaction/food/soup/curry_sauce + required_reagents = list( + /datum/reagent/water = 30, + /datum/reagent/consumable/curry_powder = 10, + /datum/reagent/consumable/soysauce = 5, + /datum/reagent/consumable/corn_starch = 5, + ) + results = list( + /datum/reagent/consumable/nutriment/soup/curry_sauce = 40, + ) + +// Shoyu Ramen +/datum/reagent/consumable/nutriment/soup/shoyu_ramen + name = "Shōyu Ramen" + description = "A soy-sauce based ramen, with noodles, fishcake, barbecued meat and a boiled egg." + data = list("egg" = 1, "fish" = 1, "noodles" = 1, "meat" = 1, "broth" = 1) + color = "#442621" + +/datum/glass_style/has_foodtype/soup/shoyu_ramen + required_drink_type = /datum/reagent/consumable/nutriment/soup/shoyu_ramen + name = "shōyu ramen" + icon = 'icons/obj/food/martian.dmi' + icon_state = "shoyu_ramen" + drink_type = MEAT | GRAIN | VEGETABLES | SEAFOOD + +/datum/chemical_reaction/food/soup/shoyu_ramen + required_reagents = list( + /datum/reagent/consumable/nutriment/soup/dashi = 20, + /datum/reagent/consumable/nutriment/soup/teriyaki = 15, + ) + required_ingredients = list( + /obj/item/food/spaghetti/boilednoodles = 1, + /obj/item/food/kamaboko_slice = 1, + /obj/item/food/meat/cutlet = 1, + /obj/item/food/boiledegg = 1, + ) + results = list( + /datum/reagent/consumable/nutriment/soup/shoyu_ramen = 30, + /datum/reagent/consumable/nutriment/vitamin = 8, + /datum/reagent/consumable/nutriment/protein = 8, + ) + percentage_of_nutriment_converted = 0.2 + +// Gyuramen +/datum/reagent/consumable/nutriment/soup/gyuramen + name = "Gyuramen Miy Käzu" + description = "A rich beef and onion ramen with cheese- blending several cultural influences seemlessly into one tasty dish." + data = list("beef broth" = 1, "onion" = 1, "cheese" = 1) + color = "#442621" + +/datum/glass_style/has_foodtype/soup/gyuramen + required_drink_type = /datum/reagent/consumable/nutriment/soup/gyuramen + name = "gyuramen miy käzu" + icon = 'icons/obj/food/martian.dmi' + icon_state = "gyuramen" + drink_type = MEAT | GRAIN | DAIRY | VEGETABLES + +/datum/chemical_reaction/food/soup/gyuramen + required_reagents = list( + /datum/reagent/consumable/nutriment/soup/dashi = 20, + /datum/reagent/consumable/soysauce = 5, + ) + required_ingredients = list( + /obj/item/food/spaghetti/boilednoodles = 1, + /obj/item/food/cheese/wedge = 1, + /obj/item/food/onion_slice = 2, + /obj/item/food/meat/cutlet = 1, + ) + results = list( + /datum/reagent/consumable/nutriment/soup/gyuramen = 30, + /datum/reagent/consumable/nutriment/vitamin = 2, + /datum/reagent/consumable/nutriment/protein = 10, + ) + percentage_of_nutriment_converted = 0.15 + +// New Osaka Sunrise +/datum/reagent/consumable/nutriment/soup/new_osaka_sunrise + name = "New Osaka Sunrise Soup" + description = "A bright, flavourful miso soup with tofu that commonly forms part of a traditional Martian breakfast, at least in the capital." + data = list("miso" = 1, "tofu" = 1, "onion" = 1, "eggplant" = 1) + color = "#EAB26E" + +/datum/glass_style/has_foodtype/soup/new_osaka_sunrise + required_drink_type = /datum/reagent/consumable/nutriment/soup/new_osaka_sunrise + name = "\improper New Osaka Sunrise soup" + icon = 'icons/obj/food/martian.dmi' + icon_state = "new_osaka_sunrise" + drink_type = MEAT | GRAIN | DAIRY | VEGETABLES + +/datum/chemical_reaction/food/soup/new_osaka_sunrise + required_reagents = list( + /datum/reagent/consumable/nutriment/soup/miso = 15, + ) + required_ingredients = list( + /obj/item/food/grown/herbs = 1, + /obj/item/food/grown/eggplant = 1, + /obj/item/food/onion_slice = 1, + /obj/item/food/tofu = 1, + ) + results = list( + /datum/reagent/consumable/nutriment/soup/new_osaka_sunrise = 30, + /datum/reagent/consumable/nutriment/vitamin = 8, + /datum/reagent/consumable/nutriment/protein = 2, + ) + percentage_of_nutriment_converted = 0.15 + +// Satsuma Black +/datum/reagent/consumable/nutriment/soup/satsuma_black + name = "Satsuma Black Soup" + description = "A rich, heavy seafood and noodle soup from Mars, employing squid ink to give a strong taste of the sea." + data = list("seafood" = 1, "tofu" = 1, "noodles" = 1) + color = "#171221" + +/datum/glass_style/has_foodtype/soup/satsuma_black + required_drink_type = /datum/reagent/consumable/nutriment/soup/satsuma_black + name = "\improper Satsuma Black soup" + icon = 'icons/obj/food/martian.dmi' + icon_state = "satsuma_black" + drink_type = SEAFOOD | GRAIN | VEGETABLES + +/datum/chemical_reaction/food/soup/satsuma_black + required_reagents = list( + /datum/reagent/consumable/nutriment/soup/dashi = 20, + ) + required_ingredients = list( + /obj/item/food/spaghetti/boilednoodles = 1, + /obj/item/food/seaweedsheet = 1, + /obj/item/food/tofu = 1, + /obj/item/food/canned/squid_ink = 1, + ) + results = list( + /datum/reagent/consumable/nutriment/soup/satsuma_black = 30, + /datum/reagent/consumable/nutriment/vitamin = 4, + /datum/reagent/consumable/nutriment/protein = 6, + ) + percentage_of_nutriment_converted = 0.15 + +// Dragon Style +/datum/reagent/consumable/nutriment/soup/dragon_ramen + name = "Dragon Style Ramen" + description = "For the ramen fan who hates their tastebuds and digestive tract. Traditionally made with seven different chilis, although after two or so the point sorta gets lost." + data = list("meat" = 1, "liquid hot magma" = 1, "noodles" = 1) + color = "#980F00" + +/datum/glass_style/has_foodtype/soup/dragon_ramen + required_drink_type = /datum/reagent/consumable/nutriment/soup/dragon_ramen + name = "\improper Dragon Style ramen" + icon = 'icons/obj/food/martian.dmi' + icon_state = "dragon_ramen" + drink_type = SEAFOOD | GRAIN | VEGETABLES + +/datum/chemical_reaction/food/soup/dragon_ramen + required_reagents = list( + /datum/reagent/consumable/nutriment/soup/dashi = 20, + /datum/reagent/consumable/nutriment/soup/teriyaki = 10, + /datum/reagent/consumable/red_bay = 5, + ) + required_ingredients = list( + /obj/item/food/spaghetti/boilednoodles = 1, + /obj/item/food/grown/ghost_chili = 1, + /obj/item/food/grown/chili = 1, + /obj/item/food/kamaboko_slice = 1, + /obj/item/food/boiledegg = 1, + ) + results = list( + /datum/reagent/consumable/nutriment/soup/dragon_ramen = 30, + /datum/reagent/consumable/nutriment/vitamin = 4, + /datum/reagent/consumable/nutriment/protein = 6, + ) + ingredient_reagent_multiplier = 0.3 //reduces the impact of the chilis to manageable levels + +// Hong Kong Borscht +/datum/reagent/consumable/nutriment/soup/hong_kong_borscht + name = "Hong Kong Borscht" + description = "Also known as luo song tang or Russian soup, this dish bears little to no resemblance to Eastern European borscht- indeed, it's a tomato-based soup with no beets in sight." + data = list("tomato" = 1, "meat" = 1, "cabbage" = 1) + color = "#CA4810" + +/datum/glass_style/has_foodtype/soup/hong_kong_borscht + required_drink_type = /datum/reagent/consumable/nutriment/soup/hong_kong_borscht + name = "\improper Hong Kong borscht" + icon = 'icons/obj/food/martian.dmi' + icon_state = "hong_kong_borscht" + drink_type = MEAT | VEGETABLES + +/datum/chemical_reaction/food/soup/hong_kong_borscht + required_reagents = list( + /datum/reagent/water = 50, + /datum/reagent/consumable/soysauce = 5, + ) + required_ingredients = list( + /obj/item/food/grown/tomato = 1, + /obj/item/food/grown/cabbage = 1, + /obj/item/food/grown/onion = 1, + /obj/item/food/grown/carrot = 1, + /obj/item/food/meat/cutlet = 1, + ) + results = list( + /datum/reagent/consumable/nutriment/soup/hong_kong_borscht = 30, + /datum/reagent/consumable/nutriment/vitamin = 8, + /datum/reagent/consumable/nutriment/protein = 2, + ) + percentage_of_nutriment_converted = 0.1 + +// Huotui Tong Fen +/datum/reagent/consumable/nutriment/soup/hong_kong_macaroni + name = "Hong Kong Macaroni Soup" + description = "A favourite from Hong Kong's Cha Chaan Tengs, this macaroni soup came to Mars with Cantonese settlers under Cybersun Industries, and has become as much of a breakfast staple there as it is in its homeland." + data = list("cream" = 1, "chicken" = 1, "pasta" = 1, "ham" = 1) + color = "#FFFAB5" + +/datum/glass_style/has_foodtype/soup/hong_kong_macaroni + required_drink_type = /datum/reagent/consumable/nutriment/soup/hong_kong_macaroni + name = "\improper Hong Kong macaroni soup" + icon = 'icons/obj/food/martian.dmi' + icon_state = "hong_kong_macaroni" + drink_type = MEAT | VEGETABLES + +/datum/chemical_reaction/food/soup/hong_kong_macaroni + required_reagents = list( + /datum/reagent/water = 30, + /datum/reagent/consumable/cream = 10, + ) + required_ingredients = list( + /obj/item/food/spaghetti/boiledspaghetti = 1, + /obj/item/food/meat/cutlet/chicken = 1, + /obj/item/food/meat/bacon = 1, + ) + results = list( + /datum/reagent/consumable/nutriment/soup/hong_kong_macaroni = 30, + /datum/reagent/consumable/nutriment/protein = 6, + ) + percentage_of_nutriment_converted = 0.2 + +// Fox's Prize Soup +/datum/reagent/consumable/nutriment/soup/foxs_prize_soup + name = "Fox's Prize Soup" + description = "Originally based on the Chinese classic of egg-drop soup, fox's prize soup iterated on the concept via the addition of aburaage and dashi, making a dish that would truly appeal to any hungry fox." + data = list("egg" = 1, "chicken" = 1, "fried tofu" = 1, "umami broth" = 1) + color = "#E9B200" + +/datum/glass_style/has_foodtype/soup/foxs_prize_soup + required_drink_type = /datum/reagent/consumable/nutriment/soup/foxs_prize_soup + name = "fox's prize soup" + icon = 'icons/obj/food/martian.dmi' + icon_state = "foxs_prize_soup" + drink_type = MEAT | VEGETABLES + +/datum/chemical_reaction/food/soup/foxs_prize_soup + required_reagents = list( + /datum/reagent/consumable/nutriment/soup/dashi = 30, + /datum/reagent/consumable/eggwhite = 10, + ) + required_ingredients = list( + /obj/item/food/meat/cutlet/chicken = 1, + /obj/item/food/tofu = 1, + ) + results = list( + /datum/reagent/consumable/nutriment/soup/foxs_prize_soup = 30, + /datum/reagent/consumable/nutriment/protein = 6, + ) + +// Secret Noodle Soup +/datum/reagent/consumable/nutriment/soup/secret_noodle_soup + name = "Secret Noodle Soup" + description = "Made to a secret family recipe (that's in several cookbooks). What is the secret ingredient, you ask? Well, let's just say it could be anything..." + data = list("noodles" = 1, "chicken" = 1, "aromatic broth" = 1) + color = "#D9BB79" + +/datum/glass_style/has_foodtype/soup/secret_noodle_soup + required_drink_type = /datum/reagent/consumable/nutriment/soup/secret_noodle_soup + name = "secret noodle soup" + icon = 'icons/obj/food/martian.dmi' + icon_state = "secret_noodle_soup" + drink_type = MEAT | VEGETABLES + +/datum/chemical_reaction/food/soup/secret_noodle_soup + required_reagents = list( + /datum/reagent/consumable/nutriment/soup/dashi = 30, + ) + required_ingredients = list( + /obj/item/food/meat/cutlet/chicken = 1, + /obj/item/food/spaghetti/boilednoodles = 1, + /obj/item/food/grown/mushroom/chanterelle = 1, + ) + results = list( + /datum/reagent/consumable/nutriment/soup/secret_noodle_soup = 30, + /datum/reagent/consumable/nutriment/protein = 6, + ) + +// Budae-Jjigae +/datum/reagent/consumable/nutriment/soup/budae_jjigae + name = "Budae-Jjigae" + description = "A dish born of the American presence in South Korea, made with ingredients typical to the 1960s American army base- hot dogs, chap, and baked beans, as well as a number of native Korean ingredients such as gochujang and kimchi." + data = list("hot dog" = 1, "pork" = 1, "beans" = 1, "kimchi" = 1, "noodles" = 1) + color = "#C8400E" + +/datum/glass_style/has_foodtype/soup/budae_jjigae + required_drink_type = /datum/reagent/consumable/nutriment/soup/budae_jjigae + name = "budae-jjigae" + icon = 'icons/obj/food/martian.dmi' + icon_state = "budae_jjigae" + drink_type = MEAT | VEGETABLES | GRAIN + +/datum/chemical_reaction/food/soup/budae_jjigae + required_reagents = list( + /datum/reagent/water = 30, + ) + required_ingredients = list( + /obj/item/food/canned/beans = 1, + /obj/item/food/spaghetti/rawnoodles = 1, + /obj/item/food/sausage/american = 1, + /obj/item/food/chapslice = 2, + /obj/item/food/kimchi = 1, + /obj/item/food/cheese/wedge = 1, + ) + results = list( + /datum/reagent/consumable/nutriment/soup/budae_jjigae = 30, + /datum/reagent/consumable/nutriment/protein = 6, + ) + percentage_of_nutriment_converted = 0.1 + +// 24-Volt Fish +// Simply poach the fish in boiling energy drink, easy as +/datum/chemical_reaction/food/soup/volt_fish + required_reagents = list( + /datum/reagent/consumable/volt_energy = 15, + ) + required_ingredients = list( + /obj/item/food/fishmeat = 1 + ) + resulting_food_path = /obj/item/food/volt_fish + ingredient_reagent_multiplier = 0 + mix_message = "The air fills with a hellish mix of fish and artificial flavouring." diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_guide.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_guide.dm index ea0ebdad95be..3b44f5afcd88 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_guide.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_guide.dm @@ -38,7 +38,7 @@ /datum/crafting_recipe/food/reaction/New() . = ..() - if(!reaction) + if(!ispath(reaction, /datum/chemical_reaction)) return if(length(GLOB.chemical_reactions_list)) @@ -189,6 +189,13 @@ /datum/crafting_recipe/food/reaction/moonshine reaction = /datum/chemical_reaction/drink/moonshine +/datum/crafting_recipe/food/reaction/martian_batter + reaction = /datum/chemical_reaction/food/martian_batter + category = CAT_MARTIAN + +/datum/crafting_recipe/food/reaction/grounding_neutralise + reaction = /datum/chemical_reaction/food/grounding_neutralise + // Tools: Rolling pin /datum/crafting_recipe/food/rollingpin @@ -352,6 +359,21 @@ result = /obj/item/food/watermelonslice category = CAT_SALAD +/datum/crafting_recipe/food/knife/kamaboko_slice + reqs = list(/obj/item/food/kamaboko = 1) + result = /obj/item/food/kamaboko_slice + category = CAT_MARTIAN + +/datum/crafting_recipe/food/knife/raw_noodles + reqs = list(/obj/item/food/rice_dough = 1) + result = /obj/item/food/spaghetti/rawnoodles + category = CAT_MARTIAN + +/datum/crafting_recipe/food/knife/chapslice + reqs = list(/obj/item/food/canned/chap = 1) + result = /obj/item/food/chapslice + category = CAT_MEAT + // Machinery: Grill /datum/crafting_recipe/food/grill @@ -422,11 +444,26 @@ result = /obj/item/food/grilled_cheese_sandwich category = CAT_BREAD -/datum/crafting_recipe/food/grill/moonfish +/datum/crafting_recipe/food/grill/grilled_cheese reqs = list(/obj/item/food/cheese/firm_cheese_slice = 1) result = /obj/item/food/grilled_cheese category = CAT_MISCFOOD +/datum/crafting_recipe/food/grill/ballpark_pretzel + reqs = list(/obj/item/food/raw_ballpark_pretzel = 1) + result = /obj/item/food/ballpark_pretzel + category = CAT_MARTIAN + +/datum/crafting_recipe/food/grill/ballpark_tsukune + reqs = list(/obj/item/food/kebab/raw_ballpark_tsukune = 1) + result = /obj/item/food/kebab/ballpark_tsukune + category = CAT_MARTIAN + +/datum/crafting_recipe/food/grill/chapslice + reqs = list(/obj/item/food/chapslice = 1) + result = /obj/item/food/grilled_chapslice + category = CAT_MEAT + /datum/crafting_recipe/food/grill/friedegg reqs = list(/obj/item/food/egg = 1) result = /obj/item/food/friedegg @@ -632,10 +669,10 @@ result = /obj/item/food/boiledegg category = CAT_EGG -/datum/crafting_recipe/food/microwave/boiledrice +/* /datum/crafting_recipe/food/microwave/boiledrice Monkestation Edit: Boiled rice needs to be boiled reqs = list(/obj/item/food/uncooked_rice = 1) result = /obj/item/food/boiledrice - category = CAT_SALAD + category = CAT_SALAD */ /datum/crafting_recipe/food/microwave/onionrings reqs = list(/obj/item/food/onion_slice = 1) @@ -761,6 +798,16 @@ result = /obj/item/food/yakiimo category = CAT_SALAD +/datum/crafting_recipe/food/oven/reispan + reqs = list(/obj/item/food/rice_dough = 1) + result = /obj/item/food/bread/reispan + category = CAT_MARTIAN + +/datum/crafting_recipe/food/oven/ballpark_pretzel + reqs = list(/obj/item/food/raw_ballpark_pretzel = 1) + result = /obj/item/food/ballpark_pretzel + category = CAT_MARTIAN + // Machinery: Drying rack /datum/crafting_recipe/food/drying machinery = list(/obj/machinery/smartfridge/drying_rack) @@ -794,3 +841,8 @@ /datum/crafting_recipe/food/drying/semki reqs = list(/obj/item/food/grown/sunflower = 1) result = /obj/item/food/semki/healthy + +/datum/crafting_recipe/food/drying/kamaboko + reqs = list(/obj/item/food/surimi = 1) + result = /obj/item/food/kamaboko + category = CAT_MARTIAN diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_martian.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_martian.dm new file mode 100644 index 000000000000..774c8ed5b464 --- /dev/null +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_martian.dm @@ -0,0 +1,915 @@ +/datum/crafting_recipe/food/kimchi + name = "Kimchi" + reqs = list( + /obj/item/food/grown/cabbage = 1, + /obj/item/food/grown/chili = 1, + /datum/reagent/consumable/salt = 5 + ) + result = /obj/item/food/kimchi + category = CAT_MARTIAN + +/datum/crafting_recipe/food/inferno_kimchi + name = "Inferno kimchi" + reqs = list( + /obj/item/food/grown/cabbage = 1, + /obj/item/food/grown/ghost_chili = 1, + /datum/reagent/consumable/salt = 5 + ) + result = /obj/item/food/inferno_kimchi + category = CAT_MARTIAN + +/datum/crafting_recipe/food/garlic_kimchi + name = "Garlic kimchi" + reqs = list( + /obj/item/food/grown/cabbage = 1, + /obj/item/food/grown/chili = 1, + /obj/item/food/grown/garlic = 1, + /datum/reagent/consumable/salt = 5 + ) + result = /obj/item/food/garlic_kimchi + category = CAT_MARTIAN + +/datum/crafting_recipe/food/surimi + name = "Surimi" + reqs = list( + /obj/item/food/fishmeat = 1, + ) + result = /obj/item/food/surimi + category = CAT_MARTIAN + +/datum/crafting_recipe/food/sambal + name = "Sambal" + reqs = list( + /obj/item/food/grown/chili = 1, + /obj/item/food/grown/garlic = 1, + /obj/item/food/grown/onion = 1, + /datum/reagent/consumable/sugar = 3, + /datum/reagent/consumable/limejuice = 3, + ) + result = /obj/item/food/sambal + category = CAT_MARTIAN + +/datum/crafting_recipe/food/katsu_fillet + name = "Katsu fillet" + reqs = list( + /obj/item/food/meat/rawcutlet = 1, + /obj/item/food/breadslice/reispan = 1, + ) + result = /obj/item/food/katsu_fillet + category = CAT_MARTIAN + +/datum/crafting_recipe/food/rice_dough + name = "Rice dough" + reqs = list( + /datum/reagent/consumable/flour = 10, + /datum/reagent/consumable/rice = 10, + /datum/reagent/water = 10, + ) + result = /obj/item/food/rice_dough + category = CAT_MARTIAN + +/datum/crafting_recipe/food/hurricane_rice + name = "Hurricane fried rice" + reqs = list( + /obj/item/food/boiledrice = 1, + /obj/item/food/egg = 1, + /obj/item/food/onion_slice = 1, + /obj/item/food/grown/chili = 1, + /obj/item/food/meat/cutlet = 1, + /obj/item/food/pineappleslice = 1, + /datum/reagent/consumable/soysauce = 3, + ) + result = /obj/item/food/salad/hurricane_rice + category = CAT_MARTIAN + +/datum/crafting_recipe/food/ikareis + name = "Ikareis" + reqs = list( + /obj/item/food/boiledrice = 1, + /obj/item/food/canned/squid_ink = 1, + /obj/item/food/grown/bell_pepper = 1, + /obj/item/food/onion_slice = 1, + /obj/item/food/sausage = 1, + /obj/item/food/grown/chili = 1, + ) + result = /obj/item/food/salad/ikareis + category = CAT_MARTIAN + +/datum/crafting_recipe/food/hawaiian_fried_rice + name = "Hawaiian fried rice" + reqs = list( + /obj/item/food/boiledrice = 1, + /obj/item/food/chapslice = 1, + /obj/item/food/grown/bell_pepper = 1, + /obj/item/food/pineappleslice = 1, + /obj/item/food/onion_slice = 1, + /datum/reagent/consumable/soysauce = 5 + ) + result = /obj/item/food/salad/hawaiian_fried_rice + category = CAT_MARTIAN + +/datum/crafting_recipe/food/ketchup_fried_rice + name = "Ketchup fried rice" + reqs = list( + /obj/item/food/boiledrice = 1, + /obj/item/food/onion_slice = 1, + /obj/item/food/sausage/american = 1, + /obj/item/food/grown/carrot = 1, + /obj/item/food/grown/peas = 1, + /datum/reagent/consumable/ketchup = 5, + /datum/reagent/consumable/worcestershire = 2, + ) + result = /obj/item/food/salad/ketchup_fried_rice + category = CAT_MARTIAN + +/datum/crafting_recipe/food/mediterranean_fried_rice + name = "Mediterranean fried rice" + reqs = list( + /obj/item/food/boiledrice = 1, + /obj/item/food/onion_slice = 1, + /obj/item/food/grown/herbs = 1, + /obj/item/food/cheese/firm_cheese_slice = 1, + /obj/item/food/grown/olive = 1, + /obj/item/food/meatball = 1, + ) + result = /obj/item/food/salad/mediterranean_fried_rice + category = CAT_MARTIAN + +/datum/crafting_recipe/food/egg_fried_rice + name = "Egg fried rice" + reqs = list( + /obj/item/food/boiledrice = 1, + /obj/item/food/egg = 1, + /datum/reagent/consumable/soysauce = 3, + ) + result = /obj/item/food/salad/egg_fried_rice + category = CAT_MARTIAN + +/datum/crafting_recipe/food/bibimbap + name = "Bibimbap" + reqs = list( + /obj/item/food/boiledrice = 1, + /obj/item/food/grown/cucumber = 1, + /obj/item/food/grown/mushroom = 1, + /obj/item/food/meat/cutlet = 1, + /obj/item/food/kimchi = 1, + /obj/item/food/egg = 1, + ) + result = /obj/item/food/salad/bibimbap + category = CAT_MARTIAN + +/datum/crafting_recipe/food/bulgogi_noodles + name = "Bulgogi noodles" + reqs = list( + /obj/item/food/spaghetti/boilednoodles = 1, + /obj/item/food/meat/cutlet = 1, + /obj/item/food/grown/apple = 1, + /obj/item/food/grown/garlic = 1, + /obj/item/food/onion_slice = 1, + /datum/reagent/consumable/nutriment/soup/teriyaki = 4, + ) + result = /obj/item/food/salad/bibimbap + category = CAT_MARTIAN + +/datum/crafting_recipe/food/yakisoba_katsu + name = "Yakisoba katsu" + reqs = list( + /obj/item/food/spaghetti/boilednoodles = 1, + /obj/item/food/grown/cabbage = 1, + /obj/item/food/grown/carrot = 1, + /obj/item/food/onion_slice = 1, + /obj/item/food/katsu_fillet = 1, + /datum/reagent/consumable/worcestershire = 3, + ) + result = /obj/item/food/salad/yakisoba_katsu + category = CAT_MARTIAN + +/datum/crafting_recipe/food/martian_fried_noodles + name = "Martian fried noodles" + reqs = list( + /obj/item/food/spaghetti/boilednoodles = 1, + /obj/item/food/peanuts/salted = 1, + /obj/item/food/meat/cutlet = 1, + /obj/item/food/onion_slice = 1, + /obj/item/food/egg = 1, + /datum/reagent/consumable/soysauce = 3, + /datum/reagent/consumable/red_bay = 3, + ) + result = /obj/item/food/salad/martian_fried_noodles + category = CAT_MARTIAN + +/datum/crafting_recipe/food/simple_fried_noodles + name = "Simple fried noodles" + reqs = list( + /obj/item/food/spaghetti/boilednoodles = 1, + /datum/reagent/consumable/soysauce = 3, + ) + result = /obj/item/food/salad/simple_fried_noodles + category = CAT_MARTIAN + +/datum/crafting_recipe/food/setagaya_curry + name = "Setagaya curry" + reqs = list( + /obj/item/food/boiledrice = 1, + /obj/item/food/grown/apple = 1, + /datum/reagent/consumable/honey = 3, + /datum/reagent/consumable/ketchup = 3, + /obj/item/food/chocolatebar = 1, + /datum/reagent/consumable/coffee = 3, + /datum/reagent/consumable/ethanol/wine = 3, + /datum/reagent/consumable/curry_powder = 3, + /obj/item/food/meat/slab = 1, + /obj/item/food/grown/onion = 1, + /obj/item/food/grown/carrot = 1, + /obj/item/food/grown/potato = 1, + ) + result = /obj/item/food/salad/setagaya_curry + category = CAT_MARTIAN + +/datum/crafting_recipe/food/big_blue_burger + name = "Big Blue Burger" + reqs = list( + /obj/item/food/bun = 1, + /obj/item/food/patty = 2, + /obj/item/food/onion_slice = 1, + /obj/item/food/cheese/wedge = 1, + /obj/item/food/meat/bacon = 1, + /obj/item/food/pineappleslice = 1, + /datum/reagent/consumable/nutriment/soup/teriyaki = 4, + ) + result = /obj/item/food/burger/big_blue + category = CAT_MARTIAN + +/datum/crafting_recipe/food/chappy_patty + name = "Chappy Patty" + reqs = list( + /obj/item/food/bun = 1, + /obj/item/food/grilled_chapslice = 2, + /obj/item/food/friedegg = 1, + /obj/item/food/cheese/wedge = 1, + /datum/reagent/consumable/ketchup = 3, + ) + result = /obj/item/food/burger/chappy + category = CAT_MARTIAN + +/datum/crafting_recipe/food/king_katsu_sandwich + name = "King Katsu sandwich" + reqs = list( + /obj/item/food/breadslice/reispan = 2, + /obj/item/food/katsu_fillet = 1, + /obj/item/food/meat/bacon = 1, + /obj/item/food/kimchi = 1, + /obj/item/food/onion_slice = 1, + /obj/item/food/grown/tomato = 1, + ) + result = /obj/item/food/king_katsu_sandwich + category = CAT_MARTIAN + +/datum/crafting_recipe/food/marte_cubano_sandwich + name = "Marte Cubano sandwich" + reqs = list( + /obj/item/food/breadslice/reispan = 2, + /obj/item/food/meat/bacon = 1, + /obj/item/food/pickle = 2, + /obj/item/food/cheese/wedge = 1, + ) + result = /obj/item/food/marte_cubano_sandwich + category = CAT_MARTIAN + +/datum/crafting_recipe/food/little_shiro_sandwich + name = "Little Shiro sandwich" + reqs = list( + /obj/item/food/breadslice/reispan = 2, + /obj/item/food/meat/cutlet = 1, + /obj/item/food/friedegg = 1, + /obj/item/food/garlic_kimchi = 1, + /obj/item/food/cheese/mozzarella = 1, + /obj/item/food/grown/herbs = 1, + ) + result = /obj/item/food/little_shiro_sandwich + category = CAT_MARTIAN + +/datum/crafting_recipe/food/croque_martienne + name = "Croque-Martienne sandwich" + reqs = list( + /obj/item/food/breadslice/reispan = 2, + /obj/item/food/meat/cutlet = 1, + /obj/item/food/cheese/wedge = 1, + /obj/item/food/pineappleslice = 1, + /obj/item/food/friedegg = 1, + ) + result = /obj/item/food/croque_martienne + category = CAT_MARTIAN + +/datum/crafting_recipe/food/prospect_sunrise + name = "Prospect Sunrise sandwich" + reqs = list( + /obj/item/food/breadslice/reispan = 2, + /obj/item/food/meat/bacon = 1, + /obj/item/food/cheese/wedge = 1, + /obj/item/food/omelette = 1, + /obj/item/food/pickle = 1, + ) + result = /obj/item/food/prospect_sunrise + category = CAT_MARTIAN + +/datum/crafting_recipe/food/takoyaki + name = "Takoyaki" + reqs = list( + /obj/item/food/fishmeat/octopus = 1, + /obj/item/food/onion_slice = 1, + /datum/reagent/consumable/martian_batter = 6, + /datum/reagent/consumable/worcestershire = 3, + ) + result = /obj/item/food/takoyaki + category = CAT_MARTIAN + +/datum/crafting_recipe/food/russian_takoyaki + name = "Russian takoyaki" + reqs = list( + /obj/item/food/fishmeat/octopus = 1, + /obj/item/food/grown/ghost_chili = 1, + /datum/reagent/consumable/martian_batter = 6, + /datum/reagent/consumable/capsaicin = 3, + ) + result = /obj/item/food/takoyaki/russian + category = CAT_MARTIAN + +/datum/crafting_recipe/food/tacoyaki + name = "Tacoyaki" + reqs = list( + /obj/item/food/meatball = 1, + /obj/item/food/grown/corn = 1, + /datum/reagent/consumable/martian_batter = 6, + /datum/reagent/consumable/red_bay = 3, + /obj/item/food/cheese/wedge = 1, + ) + result = /obj/item/food/takoyaki/taco + category = CAT_MARTIAN + +/datum/crafting_recipe/food/okonomiyaki + name = "Okonomiyaki" + reqs = list( + /datum/reagent/consumable/martian_batter = 6, + /datum/reagent/consumable/worcestershire = 3, + /datum/reagent/consumable/mayonnaise = 3, + /obj/item/food/grown/cabbage = 1, + /obj/item/food/grown/potato/sweet = 1, + ) + result = /obj/item/food/okonomiyaki + category = CAT_MARTIAN + +/datum/crafting_recipe/food/brat_kimchi + name = "Brat-kimchi" + reqs = list( + /obj/item/food/sausage = 1, + /obj/item/food/kimchi = 1, + /datum/reagent/consumable/sugar = 3, + ) + result = /obj/item/food/brat_kimchi + category = CAT_MARTIAN + +/datum/crafting_recipe/food/tonkatsuwurst + name = "Tonkatsuwurst" + reqs = list( + /obj/item/food/sausage = 1, + /obj/item/food/fries = 1, + /datum/reagent/consumable/worcestershire = 3, + /datum/reagent/consumable/red_bay = 2, + ) + result = /obj/item/food/tonkatsuwurst + category = CAT_MARTIAN + +/datum/crafting_recipe/food/ti_hoeh_koe + name = "Ti hoeh koe" + reqs = list( + /obj/item/food/boiledrice = 1, + /obj/item/food/peanuts/salted = 1, + /obj/item/food/grown/herbs = 1, + /datum/reagent/blood = 5, + ) + result = /obj/item/food/kebab/ti_hoeh_koe + category = CAT_MARTIAN + +/datum/crafting_recipe/food/kitzushi + name = "Kitzushi" + reqs = list( + /obj/item/food/boiledrice = 1, + /obj/item/food/tofu = 1, + /obj/item/food/cheese/wedge = 1, + /obj/item/food/grown/chili = 1, + ) + result = /obj/item/food/kitzushi + category = CAT_MARTIAN + +/datum/crafting_recipe/food/epok_epok + name = "Epok-epok" + reqs = list( + /obj/item/food/doughslice = 1, + /obj/item/food/meat/cutlet/chicken = 1, + /obj/item/food/grown/potato/wedges = 1, + /obj/item/food/boiledegg = 1, + /datum/reagent/consumable/curry_powder = 3, + ) + result = /obj/item/food/epok_epok + category = CAT_MARTIAN + +/datum/crafting_recipe/food/roti_john + name = "Roti John" + reqs = list( + /obj/item/food/baguette = 1, + /obj/item/food/raw_meatball = 1, + /obj/item/food/egg = 1, + /obj/item/food/onion_slice = 1, + /datum/reagent/consumable/capsaicin = 3, + /datum/reagent/consumable/mayonnaise = 3, + ) + result = /obj/item/food/roti_john + category = CAT_MARTIAN + +/datum/crafting_recipe/food/izakaya_fries + name = "Izakaya fries" + reqs = list( + /obj/item/food/fries = 1, + /obj/item/food/grown/herbs = 1, + /datum/reagent/consumable/red_bay = 3, + /datum/reagent/consumable/mayonnaise = 3, + ) + result = /obj/item/food/izakaya_fries + category = CAT_MARTIAN + +/datum/crafting_recipe/food/kurry_ok_subsando + name = "Kurry-OK subsando" + reqs = list( + /obj/item/food/baguette = 1, + /obj/item/food/izakaya_fries = 1, + /obj/item/food/katsu_fillet = 1, + /datum/reagent/consumable/nutriment/soup/curry_sauce = 5, + ) + result = /obj/item/food/kurry_ok_subsando + category = CAT_MARTIAN + +/datum/crafting_recipe/food/loco_moco + name = "Loco moco" + reqs = list( + /obj/item/food/boiledrice = 1, + /obj/item/food/patty = 1, + /obj/item/food/onion_slice = 1, + /obj/item/food/friedegg = 1, + /datum/reagent/consumable/gravy = 5, + ) + result = /obj/item/food/loco_moco + category = CAT_MARTIAN + +/datum/crafting_recipe/food/wild_duck_fries + name = "Wild duck fries" + reqs = list( + /obj/item/food/izakaya_fries = 1, + /obj/item/food/meat/cutlet = 1, + /datum/reagent/consumable/ketchup = 3, + ) + result = /obj/item/food/wild_duck_fries + category = CAT_MARTIAN + +/datum/crafting_recipe/food/little_hawaii_hotdog + name = "Little Hawaii hotdog" + reqs = list( + /obj/item/food/hotdog = 1, + /obj/item/food/pineappleslice = 1, + /obj/item/food/onion_slice = 1, + /datum/reagent/consumable/nutriment/soup/teriyaki = 3, + ) + result = /obj/item/food/little_hawaii_hotdog + category = CAT_MARTIAN + +/datum/crafting_recipe/food/salt_chilli_fries + name = "Salt n' chilli fries" + reqs = list( + /obj/item/food/fries = 1, + /obj/item/food/grown/chili = 1, + /obj/item/food/grown/onion = 1, + /obj/item/food/grown/garlic = 1, + /datum/reagent/consumable/salt = 3, + ) + result = /obj/item/food/salt_chilli_fries + category = CAT_MARTIAN + +/datum/crafting_recipe/food/steak_croquette + name = "Steak croquette" + reqs = list( + /obj/item/food/meat/steak = 1, + /obj/item/food/mashed_potatoes = 1, + /obj/item/food/breadslice/reispan = 1, + ) + result = /obj/item/food/steak_croquette + category = CAT_MARTIAN + +/datum/crafting_recipe/food/chapsilog + name = "Chapsilog" + reqs = list( + /obj/item/food/grilled_chapslice = 2, + /obj/item/food/friedegg = 1, + /obj/item/food/boiledrice = 1, + /obj/item/food/grown/garlic = 1, + ) + result = /obj/item/food/chapsilog + category = CAT_MARTIAN + +/datum/crafting_recipe/food/chap_hash + name = "Chap hash" + reqs = list( + /obj/item/food/chapslice = 2, + /obj/item/food/egg = 1, + /obj/item/food/grown/bell_pepper = 1, + /obj/item/food/grown/potato = 1, + /obj/item/food/onion_slice = 1, + ) + result = /obj/item/food/chap_hash + category = CAT_MARTIAN + +/datum/crafting_recipe/food/agedashi_tofu + name = "Agedashi tofu" + reqs = list( + /obj/item/food/tofu = 1, + /obj/item/food/onion_slice = 1, + /datum/reagent/consumable/nutriment/soup/dashi = 20, + /obj/item/reagent_containers/cup/bowl = 1, + ) + result = /obj/item/food/salad/agedashi_tofu + category = CAT_MARTIAN + +/datum/crafting_recipe/food/po_kok_gai + name = "Po kok gai" + reqs = list( + /obj/item/food/boiledrice = 1, + /obj/item/food/meat/slab/chicken = 1, + /datum/reagent/consumable/coconut_milk = 5, + /datum/reagent/consumable/curry_powder = 3, + ) + result = /obj/item/food/salad/po_kok_gai + category = CAT_MARTIAN + +/datum/crafting_recipe/food/huoxing_tofu + name = "Huoxing tofu" + reqs = list( + /obj/item/food/tofu = 1, + /obj/item/food/raw_meatball = 1, + /obj/item/food/grown/chili = 1, + /obj/item/food/grown/soybeans = 1, + /obj/item/reagent_containers/cup/bowl = 1, + ) + result = /obj/item/food/salad/huoxing_tofu + category = CAT_MARTIAN + +/datum/crafting_recipe/food/feizhou_ji + name = "Fēizhōu jī" + reqs = list( + /obj/item/food/meat/slab/chicken = 1, + /obj/item/food/grown/chili = 1, + /obj/item/food/grown/bell_pepper = 1, + /datum/reagent/consumable/vinegar = 5, + ) + result = /obj/item/food/feizhou_ji + category = CAT_MARTIAN + +/datum/crafting_recipe/food/galinha_de_cabidela + name = "Galinha de cabidela" + reqs = list( + /obj/item/food/meat/slab/chicken = 1, + /obj/item/food/grown/tomato = 1, + /obj/item/food/uncooked_rice = 1, + /datum/reagent/blood = 5, + ) + result = /obj/item/food/salad/galinha_de_cabidela + category = CAT_MARTIAN + +/datum/crafting_recipe/food/katsu_curry + name = "Katsu curry" + reqs = list( + /obj/item/food/katsu_fillet = 1, + /obj/item/food/boiledrice = 1, + /datum/reagent/consumable/nutriment/soup/curry_sauce = 5, + ) + result = /obj/item/food/salad/katsu_curry + category = CAT_MARTIAN + +/datum/crafting_recipe/food/beef_bowl + name = "Beef bowl" + reqs = list( + /obj/item/food/meat/cutlet = 1, + /obj/item/food/onion_slice = 1, + /obj/item/food/boiledrice = 1, + /datum/reagent/consumable/nutriment/soup/dashi = 5, + ) + result = /obj/item/food/salad/beef_bowl + category = CAT_MARTIAN + +/datum/crafting_recipe/food/salt_chilli_bowl + name = "Salt n' chilli octopus bowl" + reqs = list( + /obj/item/food/grilled_octopus = 1, + /obj/item/food/grown/chili = 1, + /obj/item/food/grown/onion = 1, + /obj/item/food/boiledrice = 1, + /datum/reagent/consumable/salt = 2, + /datum/reagent/consumable/nutriment/soup/curry_sauce = 5, + ) + result = /obj/item/food/salad/salt_chilli_bowl + category = CAT_MARTIAN + +/datum/crafting_recipe/food/kansai_bowl + name = "Kansai bowl" + reqs = list( + /obj/item/food/kamaboko_slice = 2, + /obj/item/food/boiledegg = 1, + /obj/item/food/grown/onion = 1, + /obj/item/food/boiledrice = 1, + /datum/reagent/consumable/nutriment/soup/dashi = 5, + ) + result = /obj/item/food/salad/kansai_bowl + category = CAT_MARTIAN + +/datum/crafting_recipe/food/eigamudo_curry + name = "Eigamudo curry" + reqs = list( + /obj/item/food/grown/olive = 1, + /obj/item/food/kimchi = 1, + /obj/item/food/fishmeat = 1, + /obj/item/food/boiledrice = 1, + /datum/reagent/consumable/cafe_latte = 5, + ) + result = /obj/item/food/salad/eigamudo_curry + category = CAT_MARTIAN + +/datum/crafting_recipe/food/cilbir + name = "Çilbir" + reqs = list( + /obj/item/food/grown/garlic = 1, + /obj/item/food/friedegg = 1, + /obj/item/food/grown/chili = 1, + /datum/reagent/consumable/yoghurt = 5, + /datum/reagent/consumable/quality_oil = 2, + ) + result = /obj/item/food/cilbir + category = CAT_MARTIAN + +/datum/crafting_recipe/food/peking_duck_crepes + name = "Peking duck crepes a l'orange" + reqs = list( + /obj/item/food/pancakes = 1, + /obj/item/food/meat/cutlet = 1, + /obj/item/food/grown/citrus/orange = 1, + /datum/reagent/consumable/ethanol/cognac = 2, + ) + result = /obj/item/food/peking_duck_crepes + category = CAT_MARTIAN + +/datum/crafting_recipe/food/vulgaris_spekkoek + name = "Vulgaris spekkoek" + reqs = list( + /obj/item/food/cake/plain = 1, + /obj/item/food/grown/ambrosia/vulgaris = 1, + /obj/item/food/butter = 1, //monkestation edit: no butterslices yet, is intended to be 2 slices + ) + result = /obj/item/food/cake/spekkoek + category = CAT_MARTIAN + +/datum/crafting_recipe/food/pineapple_foster + name = "Pineapple foster" + reqs = list( + /obj/item/food/pineappleslice = 1, + /datum/reagent/consumable/caramel = 2, + /obj/item/food/icecream = 1, + /datum/reagent/consumable/ethanol/rum = 2, + ) + result = /obj/item/food/salad/pineapple_foster + category = CAT_MARTIAN + +/datum/crafting_recipe/food/pastel_de_nata + name = "Pastel de nata" + reqs = list( + /obj/item/food/pastrybase = 1, + /obj/item/food/grown/vanillapod = 1, + /obj/item/food/egg = 1, + /datum/reagent/consumable/sugar = 2, + ) + result = /obj/item/food/pastel_de_nata + category = CAT_MARTIAN + +/datum/crafting_recipe/food/boh_loh_yah + name = "Boh loh yah" + reqs = list( + /obj/item/food/doughslice = 1, + /obj/item/food/butter = 1, //monkestation edit: no butterslices yet, is intended to be 1 slice + /datum/reagent/consumable/sugar = 5, + ) + result = /obj/item/food/boh_loh_yah + category = CAT_MARTIAN + +/datum/crafting_recipe/food/banana_fritter + name = "Banana fritter" + reqs = list( + /obj/item/food/grown/banana = 1, + /datum/reagent/consumable/martian_batter = 2 + ) + result = /obj/item/food/banana_fritter + category = CAT_MARTIAN + +/datum/crafting_recipe/food/pineapple_fritter + name = "Pineapple fritter" + reqs = list( + /obj/item/food/pineappleslice = 1, + /datum/reagent/consumable/martian_batter = 2 + ) + result = /obj/item/food/pineapple_fritter + category = CAT_MARTIAN + +/datum/crafting_recipe/food/kasei_dango + name = "Kasei dango" + reqs = list( + /obj/item/stack/rods = 1, + /datum/reagent/consumable/sugar = 5, + /datum/reagent/consumable/rice = 5, + /datum/reagent/consumable/orangejuice = 2, + /datum/reagent/consumable/grenadine = 2, + ) + result = /obj/item/food/kebab/kasei_dango + category = CAT_MARTIAN + +/datum/crafting_recipe/food/pb_ice_cream_mochi + name = "Peanut-butter ice cream mochi" + reqs = list( + /datum/reagent/consumable/sugar = 5, + /datum/reagent/consumable/rice = 5, + /datum/reagent/consumable/peanut_butter = 2, + /obj/item/food/icecream = 1, + ) + result = /obj/item/food/pb_ice_cream_mochi + category = CAT_MARTIAN + +/datum/crafting_recipe/food/frozen_pineapple_pop + name = "Frozen pineapple pop" + reqs = list( + /obj/item/food/pineappleslice = 1, + /obj/item/food/chocolatebar = 1, + /obj/item/popsicle_stick = 1, + ) + result = /obj/item/food/popsicle/pineapple_pop + category = CAT_MARTIAN + +/datum/crafting_recipe/food/sea_salt_pop + name = "Sea-salt ice cream bar" + reqs = list( + /datum/reagent/consumable/cream = 5, + /datum/reagent/consumable/sugar = 5, + /datum/reagent/consumable/salt = 3, + /obj/item/popsicle_stick = 1, + ) + result = /obj/item/food/popsicle/sea_salt + category = CAT_MARTIAN + +/datum/crafting_recipe/food/berry_topsicle + name = "Berry topsicle" + reqs = list( + /obj/item/food/tofu = 1, + /datum/reagent/consumable/berryjuice = 5, + /datum/reagent/consumable/sugar = 5, + /obj/item/popsicle_stick = 1, + ) + result = /obj/item/food/popsicle/topsicle + category = CAT_MARTIAN + +/datum/crafting_recipe/food/banana_topsicle + name = "Banana topsicle" + reqs = list( + /obj/item/food/tofu = 1, + /datum/reagent/consumable/banana = 5, + /datum/reagent/consumable/sugar = 5, + /obj/item/popsicle_stick = 1, + ) + result = /obj/item/food/popsicle/topsicle/banana + category = CAT_MARTIAN + +/datum/crafting_recipe/food/berry_topsicle + name = "Pineapple topsicle" + reqs = list( + /obj/item/food/tofu = 1, + /datum/reagent/consumable/pineapplejuice = 5, + /datum/reagent/consumable/sugar = 5, + /obj/item/popsicle_stick = 1, + ) + result = /obj/item/food/popsicle/topsicle/pineapple + category = CAT_MARTIAN + +/datum/crafting_recipe/food/plasma_dog_supreme + name = "Plasma Dog Supreme" + reqs = list( + /obj/item/food/hotdog = 1, + /obj/item/food/pineappleslice = 1, + /obj/item/food/sambal = 1, + /obj/item/food/onion_slice = 1, + ) + result = /obj/item/food/plasma_dog_supreme + category = CAT_MARTIAN + +/datum/crafting_recipe/food/frickles + name = "Frickles" + reqs = list( + /obj/item/food/pickle = 1, + /datum/reagent/consumable/martian_batter = 2, + /datum/reagent/consumable/red_bay = 1, + ) + result = /obj/item/food/frickles + category = CAT_MARTIAN + +/datum/crafting_recipe/food/raw_ballpark_pretzel + name = "Raw ballpark pretzel" + reqs = list( + /obj/item/food/doughslice = 1, + /datum/reagent/consumable/salt = 2, + ) + result = /obj/item/food/raw_ballpark_pretzel + category = CAT_MARTIAN + +/datum/crafting_recipe/food/raw_ballpark_tsukune + name = "Raw ballpark tsukune" + reqs = list( + /obj/item/food/raw_meatball/chicken = 1, + /datum/reagent/consumable/nutriment/soup/teriyaki = 2, + /obj/item/stack/rods = 1, + ) + result = /obj/item/food/kebab/raw_ballpark_tsukune + category = CAT_MARTIAN + +/datum/crafting_recipe/food/sprout_bowl + name = "Sprout bowl" + reqs = list( + /obj/item/food/pickled_voltvine = 1, + /obj/item/food/fishmeat = 1, + /obj/item/food/boiledrice = 1, + /datum/reagent/consumable/nutriment/soup/dashi = 5, + ) + result = /obj/item/food/salad/sprout_bowl + category = CAT_MARTIAN + +// Soups + +/datum/crafting_recipe/food/reaction/soup/boilednoodles + reaction = /datum/chemical_reaction/food/soup/boilednoodles + category = CAT_MARTIAN + +/datum/crafting_recipe/food/reaction/soup/dashi + reaction = /datum/chemical_reaction/food/soup/dashi + category = CAT_MARTIAN + +/datum/crafting_recipe/food/reaction/soup/teriyaki + reaction = /datum/chemical_reaction/food/soup/teriyaki + category = CAT_MARTIAN + +/datum/crafting_recipe/food/reaction/soup/curry_sauce + reaction = /datum/chemical_reaction/food/soup/curry_sauce + category = CAT_MARTIAN + +/datum/crafting_recipe/food/reaction/soup/shoyu_ramen + reaction = /datum/chemical_reaction/food/soup/shoyu_ramen + category = CAT_MARTIAN + +/datum/crafting_recipe/food/reaction/soup/gyuramen + reaction = /datum/chemical_reaction/food/soup/gyuramen + category = CAT_MARTIAN + +/datum/crafting_recipe/food/reaction/soup/new_osaka_sunrise + reaction = /datum/chemical_reaction/food/soup/new_osaka_sunrise + category = CAT_MARTIAN + +/datum/crafting_recipe/food/reaction/soup/satsuma_black + reaction = /datum/chemical_reaction/food/soup/satsuma_black + category = CAT_MARTIAN + +/datum/crafting_recipe/food/reaction/soup/dragon_ramen + reaction = /datum/chemical_reaction/food/soup/dragon_ramen + category = CAT_MARTIAN + +/datum/crafting_recipe/food/reaction/soup/hong_kong_borscht + reaction = /datum/chemical_reaction/food/soup/hong_kong_borscht + category = CAT_MARTIAN + +/datum/crafting_recipe/food/reaction/soup/hong_kong_macaroni + reaction = /datum/chemical_reaction/food/soup/hong_kong_macaroni + category = CAT_MARTIAN + +/datum/crafting_recipe/food/reaction/soup/foxs_prize_soup + reaction = /datum/chemical_reaction/food/soup/foxs_prize_soup + category = CAT_MARTIAN + +/datum/crafting_recipe/food/reaction/soup/secret_noodle_soup + reaction = /datum/chemical_reaction/food/soup/secret_noodle_soup + category = CAT_MARTIAN + +/datum/crafting_recipe/food/reaction/soup/budae_jjigae + reaction = /datum/chemical_reaction/food/soup/budae_jjigae + category = CAT_MARTIAN + +/datum/crafting_recipe/food/reaction/soup/volt_fish + reaction = /datum/chemical_reaction/food/soup/volt_fish + category = CAT_MARTIAN diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm index 6b5b83e41832..d29ae4f804e2 100644 --- a/code/modules/mob/living/carbon/status_procs.dm +++ b/code/modules/mob/living/carbon/status_procs.dm @@ -13,7 +13,7 @@ return /mob/living/carbon/stamina_stun() - if(HAS_TRAIT(src, TRAIT_BATON_RESISTANCE)) + if(HAS_TRAIT(src, TRAIT_CANT_STAMCRIT)) return //baton resistance can't stam crit but can still be non sprinted if(HAS_TRAIT_FROM(src, TRAIT_INCAPACITATED, STAMINA)) //Already in stamcrit return diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 170a5bc136e0..6eb3009bd3da 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -498,6 +498,7 @@ /datum/reagent/consumable/lemonjuice, /datum/reagent/consumable/lemon_lime, /datum/reagent/consumable/limejuice, + /datum/reagent/consumable/melon_soda, /datum/reagent/consumable/menthol, /datum/reagent/consumable/orangejuice, /datum/reagent/consumable/pineapplejuice, @@ -571,6 +572,7 @@ /datum/reagent/consumable/ethanol/ale, /datum/reagent/consumable/ethanol/applejack, /datum/reagent/consumable/ethanol/beer, + /datum/reagent/consumable/ethanol/coconut_rum, /datum/reagent/consumable/ethanol/cognac, /datum/reagent/consumable/ethanol/creme_de_cacao, /datum/reagent/consumable/ethanol/creme_de_coconut, @@ -581,6 +583,7 @@ /datum/reagent/consumable/ethanol/kahlua, /datum/reagent/consumable/ethanol/beer/maltliquor, /datum/reagent/consumable/ethanol/navy_rum, + /datum/reagent/consumable/ethanol/rice_beer, /datum/reagent/consumable/ethanol/rum, /datum/reagent/consumable/ethanol/sake, /datum/reagent/consumable/ethanol/tequila, @@ -589,6 +592,7 @@ /datum/reagent/consumable/ethanol/vodka, /datum/reagent/consumable/ethanol/whiskey, /datum/reagent/consumable/ethanol/wine, + /datum/reagent/consumable/ethanol/yuyake, ) upgrade_reagents = null emagged_reagents = list( diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm index b2776171fdd5..9ea62c503cbf 100644 --- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm @@ -129,12 +129,14 @@ . = TRUE /datum/reagent/medicine/c2/probital/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired) - affected_mob.stamina.adjust(-3 * REM * seconds_per_tick, FALSE) + affected_mob.stamina.adjust(-3 * REM * seconds_per_tick, TRUE) if(affected_mob.stamina.loss >= 80) affected_mob.adjust_drowsiness(2 SECONDS * REM * seconds_per_tick) if(affected_mob.stamina.loss >= 100) to_chat(affected_mob,span_warning("You feel more tired than you usually do, perhaps if you rest your eyes for a bit...")) affected_mob.stamina.adjust(100, TRUE) + if(HAS_TRAIT(affected_mob, TRAIT_INCAPACITATED)) + affected_mob.exit_stamina_stun() affected_mob.Sleeping(10 SECONDS) ..() . = TRUE diff --git a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm index 4c508a9533a1..1fd79f131f42 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm @@ -2622,5 +2622,214 @@ if(istype(stomach)) stomach.adjust_charge(reac_volume * 5) +// Welcome to the Blue Room Bar and Grill, home to Mars' finest cocktails +/datum/reagent/consumable/ethanol/rice_beer + name = "Rice Beer" + description = "A light, rice-based lagered beer popular on Mars. Considered a hate crime against Bavarians under the Reinheitsgebot Act of 1516." + boozepwr = 20 + color = "#664300" + quality = DRINK_NICE + taste_description = "mild carbonated malt" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/shochu + name = "Shochu" + description = "Also known as soju or baijiu, this drink is made from fermented rice, much like sake, but at a generally higher proof making it more similar to a true spirit." + boozepwr = 20 + color = "#DDDDDD" + quality = DRINK_NICE + taste_description = "stiff rice wine" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/yuyake + name = "Yūyake" + description = "A sweet melon liqueur from Japan. Considered a relic of the 1980s by most, it has some niche use in cocktail making, in part due to its bright red colour." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "sweet melon" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/coconut_rum + name = "Coconut Rum" + description = "The distilled essence of the beach. Tastes like bleach-blonde hair and suncream." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "coconut rum" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +// Mixed Martian Drinks +/datum/reagent/consumable/ethanol/yuyakita + name = "Yūyakita" + description = "A hell unleashed upon the world by an unnamed patron." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "death" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/saibasan + name = "Saibāsan" + description = "A drink glorifying Cybersun's enduring business." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "betrayal" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/banzai_ti + name = "Banzai-Tī" + description = "A variation on the Long Island Iced Tea, made with yuyake for an alternative flavour that's hard to place." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "an asian twist on the liquor cabinet" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/sanraizusoda + name = "Sanraizusōda" + description = "It's a melon cream soda, except with alcohol- what's not to love? Well... possibly the hangovers." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "creamy melon soda" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/kumicho + name = "Kumichō" + description = "A new take on a classic cocktail, the Kumicho takes the Godfather formula and adds shochu for an Asian twist." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "rice and rye" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/red_planet + name = "Red Planet" + description = "Made in celebration of the Martian Concession, the Red Planet is based on the classic El Presidente, and is as patriotic as it is bright crimson." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "the spirit of freedom" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/amaterasu + name = "Amaterasu" + description = "Named for Amaterasu, the Shinto Goddess of the Sun, this cocktail embodies radiance- or something like that, anyway." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "sweet nectar of the gods" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/nekomimosa + name = "Nekomimosa" + description = "An overly sweet cocktail, made with melon liqueur, melon juice, and champagne (which contains no melon, unfortunately)." + boozepwr = 20 + color = "#FF0C8D" + quality = DRINK_NICE + taste_description = "MELON" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/sentai_quencha //melon soda, triple citrus, shochu, blue curacao + name = "Sentai Quencha" + description = "Based on the galaxy-famous \"Kyūkyoku no Ninja Pawā Sentai\", the Sentai Quencha is a favourite at anime conventions and weeb bars." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "ultimate ninja power" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/bosozoku + name = "Bōsōzoku" + description = "A simple summer drink from Mars, made from a 1:1 mix of rice beer and lemonade." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "bittersweet lemon" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/ersatzche + name = "Ersatzche" + description = "Sweet, bitter, spicy- that's a great combination." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "spicy pineapple beer" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/red_city_am + name = "Red City AM" + description = "A breakfast drink from New Osaka, for when you really need to get drunk at 9:30 in the morning in more socially acceptable manner than drinking bagwine on the bullet train. Not that you should drink this on the bullet train either." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "breakfast in a glass" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/kings_ransom + name = "King's Ransom" + description = "A stiff, bitter drink with an odd name and odder recipe." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "bitter raspberry" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/four_bit + name = "Four Bit" + description = "A drink to power your typing hands." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "cyberspace" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/white_hawaiian //coconut milk, coconut rum, coffee liqueur + name = "White Hawaiian" + description = "A take on the classic White Russian, subbing out the classics for some tropical flavours." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "COCONUT" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/maui_sunrise //coconut rum, pineapple juice, yuyake, triple citrus, lemon-lime soda + name = "Maui Sunrise" + description = "Behind this drink's red facade lurks a sharp, complex flavour." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "sunrise over the pacific" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/imperial_mai_tai //navy rum, rum, lime, triple sec, korta nectar + name = "Imperial Mai Tai" + description = "For when orgeat is in short supply, do as the spacers do- make do and mend." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "spicy nutty rum" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/konococo_rumtini //todo: add espresso | coffee, coffee liqueur, coconut rum, sugar + name = "Konococo Rumtini" + description = "Coconut rum, coffee liqueur, and espresso- an odd combination, to be sure, but a welcomed one." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "coconut coffee" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/ethanol/blue_hawaiian //pineapple juice, lemon juice, coconut rum, blue curacao + name = "Blue Hawaiian" + description = "Sweet, sharp and coconutty." + boozepwr = 20 + color = "#F54040" + quality = DRINK_NICE + taste_description = "the aloha state" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + #undef ALCOHOL_EXPONENT #undef ALCOHOL_THRESHOLD_MODIFIER diff --git a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm index 21a3538c2aba..19b9e82f518d 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm @@ -629,12 +629,12 @@ /datum/reagent/consumable/wellcheers/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) affected_mob.adjust_drowsiness(3 SECONDS * REM * seconds_per_tick) - switch(affected_mob.mob_mood.mood_level) - if (MOOD_LEVEL_SAD4 to MOOD_LEVEL_SAD2) + switch(affected_mob.mob_mood.sanity_level) + if (SANITY_INSANE to SANITY_CRAZY) affected_mob.stamina.adjust(-3 * REM * seconds_per_tick)//Monkestation Edit: custom stamina - if (MOOD_LEVEL_SAD2 to MOOD_LEVEL_HAPPY2) + if (SANITY_UNSTABLE to SANITY_DISTURBED) affected_mob.add_mood_event("wellcheers", /datum/mood_event/wellcheers) - if (MOOD_LEVEL_HAPPY2 to MOOD_LEVEL_HAPPY4) + if (SANITY_NEUTRAL to SANITY_GREAT) affected_mob.adjustBruteLoss(-1.5 * REM * seconds_per_tick, 0) return ..() @@ -1175,3 +1175,41 @@ drinker.adjust_hallucinations(60 SECONDS * REM * seconds_per_tick) return ..() + +/datum/reagent/consumable/hakka_mate + name = "Hakka-Mate" + description = "A Martian-made yerba mate soda, dragged straight out of the pits of a hacking convention." + color = "#c4b000" + taste_description = "bubbly yerba mate" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/coconut_milk + name = "Coconut Milk" + description = "A versatile milk substitute that's perfect for everything from cooking to making cocktails." + color = "#DFDFDF" + taste_description = "milky coconut" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/melon_soda + name = "Melon Soda" + description = "A neon green hit of nostalgia." + color = "#6FEB48" + taste_description = "fizzy melon" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/volt_energy + name = "24-Volt Energy" + description = "An artificially coloured and flavoured electric energy drink, in lanternfruit flavour. Made for ethereals, by ethereals." + color = "#99E550" + taste_description = "sour pear" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/volt_energy/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume) + . = ..() + if(!(methods & (INGEST|INJECT|PATCH)) || !iscarbon(exposed_mob)) + return + + var/mob/living/carbon/exposed_carbon = exposed_mob + var/obj/item/organ/internal/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH) + if(istype(stomach)) + stomach.adjust_charge(reac_volume * 3) diff --git a/code/modules/reagents/chemistry/reagents/drinks/glass_styles/alcohol.dm b/code/modules/reagents/chemistry/reagents/drinks/glass_styles/alcohol.dm index eda3827876c3..bb9e5869ca80 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/glass_styles/alcohol.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/glass_styles/alcohol.dm @@ -175,6 +175,33 @@ desc = "Typically you'd want to mix this with something- but you do you." icon_state = "bitters" +/datum/glass_style/drinking_glass/coconut_rum + required_drink_type = /datum/reagent/consumable/ethanol/coconut_rum + name = "glass of coconut rum" + desc = "Breathe in and relax, you're on vacation until this glass is empty." + icon = 'icons/obj/drinks/drinks.dmi' + icon_state = "ginvodkaglass" + +/datum/glass_style/drinking_glass/yuyake + required_drink_type = /datum/reagent/consumable/ethanol/yuyake + name = "glass of yūyake" + desc = "It's the saccharine essence of the 70s in a glass... the 1970s, that is!" + icon = 'icons/obj/drinks/drinks.dmi' + icon_state = "glass_red" + +/datum/glass_style/drinking_glass/shochu + required_drink_type = /datum/reagent/consumable/ethanol/shochu + name = "glass of shochu" + desc = "A glass of strong rice wine." + icon = 'icons/obj/drinks/drinks.dmi' + icon_state = "ginvodkaglass" + +/datum/glass_style/drinking_glass/rice_beer + required_drink_type = /datum/reagent/consumable/ethanol/rice_beer + name = "glass of rice beer" + desc = "A glass of fine, light rice beer. Best enjoyed cold." + icon = 'icons/obj/drinks/drinks.dmi' + icon_state = "rice_beer" // Shot glasses diff --git a/code/modules/reagents/chemistry/reagents/drinks/glass_styles/dairy.dm b/code/modules/reagents/chemistry/reagents/drinks/glass_styles/dairy.dm index 4a6592abe0ee..e788a589ad12 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/glass_styles/dairy.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/glass_styles/dairy.dm @@ -32,3 +32,10 @@ name = "glass of cream" desc = "Ewwww..." icon_state = "glass_white" + +/datum/glass_style/drinking_glass/coconut_milk + required_drink_type = /datum/reagent/consumable/coconut_milk + name = "glass of coconut milk" + desc = "The essence of the tropics, contained safely within a glass." + icon = 'icons/obj/drinks/drinks.dmi' + icon_state = "glass_white" diff --git a/code/modules/reagents/chemistry/reagents/drinks/glass_styles/mixed_alcohol.dm b/code/modules/reagents/chemistry/reagents/drinks/glass_styles/mixed_alcohol.dm index e3da44023b16..a3250c119d97 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/glass_styles/mixed_alcohol.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/glass_styles/mixed_alcohol.dm @@ -899,6 +899,138 @@ icon = 'icons/obj/drinks/mixed_drinks.dmi' icon_state = "pod_tesla" +/datum/glass_style/drinking_glass/yuyakita + required_drink_type = /datum/reagent/consumable/ethanol/yuyakita + name = "Yūyakita" + desc = "And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "yuyakita" + +/datum/glass_style/drinking_glass/saibasan + required_drink_type = /datum/reagent/consumable/ethanol/saibasan + name = "Saibāsan" + desc = "A drink made in honour of Cybersun Industries' 600th year of continual business. Officially, you're meant to call this a \"Hong Kong Cooler\" on Nanotrasen stations, but that name sucks." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "saibasan" + +/datum/glass_style/drinking_glass/banzai_ti + required_drink_type = /datum/reagent/consumable/ethanol/banzai_ti + name = "Banzai-Tī" + desc = "A drink to last ten-thousand years- better sip slowly then." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "banzai_ti" + +/datum/glass_style/drinking_glass/sanraizusoda + required_drink_type = /datum/reagent/consumable/ethanol/sanraizusoda + name = "Sanraizusōda" + desc = "A popular children's dessert from Japan, made adult with the addition of booze. Kanpai!" + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "sanraizusoda" + +/datum/glass_style/drinking_glass/kumicho + required_drink_type = /datum/reagent/consumable/ethanol/kumicho + name = "Kumichō" + desc = "Much like the American Godfather, the Kumichō is sophisticated, strong, and almost certainly tied to illicit activities." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "kumicho" + +/datum/glass_style/drinking_glass/red_planet + required_drink_type = /datum/reagent/consumable/ethanol/red_planet + name = "Red Planet" + desc = "A patriotic drink from Mars, commonly enjoyed on September 15th: the day that peace was declared following the Martian uprising, with the Martian Concession granting Mars proper representation as part of the Terran Federation." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "red_planet" + +/datum/glass_style/drinking_glass/amaterasu + required_drink_type = /datum/reagent/consumable/ethanol/amaterasu + name = "Amaterasu" + desc = "And so Amaterasu emerged from the Heavenly Rock Cave, and light was restored to the world." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "amaterasu" + +/datum/glass_style/drinking_glass/nekomimosa + required_drink_type = /datum/reagent/consumable/ethanol/nekomimosa + name = "Nekomimosa" + desc = "A syrupy mess of a cocktail, dedicated to a felinid popstar that took Mars by storm a few years ago." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "nekomimosa" + +/datum/glass_style/drinking_glass/sentai_quencha + required_drink_type = /datum/reagent/consumable/ethanol/sentai_quencha + name = "Sentai Quencha" + desc = "Tastes like ultimate ninja power. And melon. And citrus. And some other stuff." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "sentai_quencha" + +/datum/glass_style/drinking_glass/bosozoku + required_drink_type = /datum/reagent/consumable/ethanol/bosozoku + name = "Bōsōzoku" + desc = "A refreshing summer drink enjoyed across Mars and beyond. Any resemblance to shandies or radlers is unintentional." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "bosozoku" + +/datum/glass_style/drinking_glass/ersatzche + required_drink_type = /datum/reagent/consumable/ethanol/ersatzche + name = "Ersatzche" + desc = "An interesting drink invented in the Blue Room Bar and Grill in New Osaka. It's a tasty take on Mexican tepache, made with a beer base." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "ersatzche" + +/datum/glass_style/drinking_glass/red_city_am + required_drink_type = /datum/reagent/consumable/ethanol/red_city_am + name = "Red City AM" + desc = "A popular breakfast drink from New Osaka's bars- for the enterprising day drinker." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "red_city_am" + +/datum/glass_style/drinking_glass/kings_ransom + required_drink_type = /datum/reagent/consumable/ethanol/kings_ransom + name = "King's Ransom" + desc = "A weird drink that manages to marry a number of seemingly conflicting flavours into a single harmonious taste." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "kings_ransom" + +/datum/glass_style/drinking_glass/four_bit + required_drink_type = /datum/reagent/consumable/ethanol/four_bit + name = "Four Bit" + desc = "Straight out of the pits of a Martian hacking convention." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "four_bit" + +/datum/glass_style/drinking_glass/white_hawaiian + required_drink_type = /datum/reagent/consumable/ethanol/white_hawaiian + name = "White Hawaiian" + desc = "One of the infinite variations on the White Russian, this drink gets away from the frozen north and into the heat of the ring of fire with a host of toasty coconut flavours." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "white_hawaiian" + +/datum/glass_style/drinking_glass/maui_sunrise + required_drink_type = /datum/reagent/consumable/ethanol/maui_sunrise + name = "Maui Sunrise" + desc = "Take a sip and be transported to the Aloha state. Metaphorically, of course." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "maui_sunrise" + +/datum/glass_style/drinking_glass/imperial_mai_tai + required_drink_type = /datum/reagent/consumable/ethanol/imperial_mai_tai + name = "Imperial Mai Tai" + desc = "I mean, who springs for orgeat these days anyway? Korta nut's the new big thing, baby." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "imperial_mai_tai" + +/datum/glass_style/drinking_glass/konococo_rumtini + required_drink_type = /datum/reagent/consumable/ethanol/konococo_rumtini + name = "Konococo Rumtini" + desc = "Considered an acceptable breakfast drink in Little Hawaii." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "konococo_rumtini" + +/datum/glass_style/drinking_glass/blue_hawaiian + required_drink_type = /datum/reagent/consumable/ethanol/blue_hawaiian + name = "Blue Hawaiian" + desc = "It's a tropical vacation in a glass." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "blue_hawaiian" // Shot glasses diff --git a/code/modules/reagents/chemistry/reagents/drinks/glass_styles/sodas.dm b/code/modules/reagents/chemistry/reagents/drinks/glass_styles/sodas.dm index 75c03448b3d6..467b80400fb9 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/glass_styles/sodas.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/glass_styles/sodas.dm @@ -95,3 +95,24 @@ name = "Sol Dry" desc = "A soothing, mellow drink made from ginger." icon_state = "soldry" + +/datum/glass_style/drinking_glass/hakka_mate + required_drink_type = /datum/reagent/consumable/hakka_mate + name = "glass of Hakka-Mate" + desc = "The perfect drink for hacking. Just don't pour it on your computer, that'll only slow you down." + icon = 'icons/obj/drinks/drinks.dmi' + icon_state = "hakka_mate" + +/datum/glass_style/drinking_glass/melon_soda + required_drink_type = /datum/reagent/consumable/melon_soda + name = "glass of melon soda" + desc = "As enjoyed by Japanese children and 30-something Japan enthusiasts." + icon = 'icons/obj/drinks/drinks.dmi' + icon_state = "melon_soda" + +/datum/glass_style/drinking_glass/volt_energy + required_drink_type = /datum/reagent/consumable/volt_energy + name = "glass of 24-Volt Energy" + desc = "It's sharp, it's sour, it's electrifying!" + icon = 'icons/obj/drinks/drinks.dmi' + icon_state = "volt_energy" diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 7afbfb2c5f21..95ef729d7091 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -1195,3 +1195,50 @@ affected_mob.investigate_log("has been gibbed by consuming [src] while fat.", INVESTIGATE_DEATHS) affected_mob.inflate_gib() return ..() + +/datum/reagent/consumable/worcestershire + name = "Worcestershire Sauce" + description = "That's \"Woostershire\" sauce, by the way." + nutriment_factor = 2 * REAGENTS_METABOLISM + color = "#572b26" + taste_description = "sweet fish" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + default_container = /obj/item/reagent_containers/condiment/worcestershire + +/datum/reagent/consumable/red_bay + name = "Red Bay Seasoning" + description = "A secret blend of herbs and spices that goes well with anything- according to Martians, at least." + color = "#8E4C00" + taste_description = "spice" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + default_container = /obj/item/reagent_containers/condiment/red_bay + +/datum/reagent/consumable/curry_powder + name = "Curry Powder" + description = "One of humanity's most common spices. Typically used to make curry." + color = "#F6C800" + taste_description = "dry curry" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + default_container = /obj/item/reagent_containers/condiment/curry_powder + +/datum/reagent/consumable/dashi_concentrate + name = "Dashi Concentrate" + description = "A concentrated form of dashi. Simmer with water in a 1:8 ratio to produce a tasty dashi broth." + color = "#372926" + taste_description = "extreme umami" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + default_container = /obj/item/reagent_containers/condiment/dashi_concentrate + +/datum/reagent/consumable/martian_batter + name = "Martian Batter" + description = "A thick batter made with dashi and flour, used for making dishes such as okonomiyaki and takoyaki." + color = "#D49D26" + taste_description = "umami dough" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/grounding_solution + name = "Grounding Solution" + description = "A food-safe ionic solution designed to neutralise the enigmatic \"liquid electricity\" that is common to food from Sprout, forming harmless salt on contact." + color = "#efeff0" + taste_description = "metallic salt" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 741f644b29e6..9519846b59b6 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1066,10 +1066,12 @@ ph = 8.7 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE addiction_types = list(/datum/addiction/stimulants = 4) //0.8 per 2 seconds - metabolized_traits = list(TRAIT_BATON_RESISTANCE, TRAIT_ANALGESIA) + metabolized_traits = list(TRAIT_BATON_RESISTANCE, TRAIT_ANALGESIA, TRAIT_CANT_STAMCRIT) /datum/reagent/medicine/stimulants/on_mob_metabolize(mob/living/affected_mob) ..() + if(HAS_TRAIT(affected_mob, TRAIT_INCAPACITATED)) + affected_mob.exit_stamina_stun() affected_mob.add_movespeed_modifier(/datum/movespeed_modifier/reagent/stimulants) /datum/reagent/medicine/stimulants/on_mob_end_metabolize(mob/living/affected_mob) @@ -1084,7 +1086,7 @@ affected_mob.adjustBruteLoss(-1 * REM * seconds_per_tick, FALSE, required_bodytype = affected_bodytype) affected_mob.adjustFireLoss(-1 * REM * seconds_per_tick, FALSE, required_bodytype = affected_bodytype) affected_mob.AdjustAllImmobility(-60 * REM * seconds_per_tick) - affected_mob.stamina.adjust(5 * REM * seconds_per_tick, TRUE) + affected_mob.stamina.adjust(10 * REM * seconds_per_tick, TRUE) ..() . = TRUE @@ -1294,12 +1296,12 @@ /datum/reagent/medicine/changelingadrenaline/on_mob_metabolize(mob/living/affected_mob) ..() - affected_mob.add_traits(list(TRAIT_SLEEPIMMUNE, TRAIT_BATON_RESISTANCE), type) + affected_mob.add_traits(list(TRAIT_SLEEPIMMUNE, TRAIT_BATON_RESISTANCE, TRAIT_CANT_STAMCRIT), type) affected_mob.add_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) /datum/reagent/medicine/changelingadrenaline/on_mob_end_metabolize(mob/living/affected_mob) ..() - affected_mob.remove_traits(list(TRAIT_SLEEPIMMUNE, TRAIT_BATON_RESISTANCE), type) + affected_mob.remove_traits(list(TRAIT_SLEEPIMMUNE, TRAIT_BATON_RESISTANCE, TRAIT_CANT_STAMCRIT), type) affected_mob.remove_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) affected_mob.remove_status_effect(/datum/status_effect/dizziness) affected_mob.remove_status_effect(/datum/status_effect/jitter) diff --git a/code/modules/reagents/reagent_containers/condiment.dm b/code/modules/reagents/reagent_containers/condiment.dm index 0814b1364c9e..28db9519a016 100644 --- a/code/modules/reagents/reagent_containers/condiment.dm +++ b/code/modules/reagents/reagent_containers/condiment.dm @@ -317,6 +317,51 @@ list_reagents = list(/datum/reagent/consumable/ketchup = 50) fill_icon_thresholds = null +/obj/item/reagent_containers/condiment/worcestershire + name = "worcestershire sauce" + desc = "A fermented sauce of legend from old England. Makes almost anything better." + icon_state = "worcestershire" + list_reagents = list(/datum/reagent/consumable/worcestershire = 50) + fill_icon_thresholds = null + +/obj/item/reagent_containers/condiment/red_bay + name = "\improper Red Bay seasoning" + desc = "Mars' favourite seasoning." + icon_state = "red_bay" + list_reagents = list(/datum/reagent/consumable/red_bay = 50) + fill_icon_thresholds = null + +/obj/item/reagent_containers/condiment/curry_powder + name = "curry powder" + desc = "It's this yellow magic that makes curry taste like curry." + icon_state = "curry_powder" + list_reagents = list(/datum/reagent/consumable/curry_powder = 50) + fill_icon_thresholds = null + +/obj/item/reagent_containers/condiment/dashi_concentrate + name = "dashi concentrate" + desc = "A bottle of Amagi brand dashi concentrate. Simmer with water in a 1:8 ratio for a perfect dashi broth." + icon_state = "dashi_concentrate" + list_reagents = list(/datum/reagent/consumable/dashi_concentrate = 50) + fill_icon_thresholds = null + +/obj/item/reagent_containers/condiment/coconut_milk + name = "coconut milk" + desc = "It's coconut milk. Toasty!" + icon_state = "coconut_milk" + inhand_icon_state = "carton" + lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi' + list_reagents = list(/datum/reagent/consumable/coconut_milk = 50) + fill_icon_thresholds = null + +/obj/item/reagent_containers/condiment/grounding_solution + name = "grounding solution" + desc = "A food-safe ionic solution designed to neutralise the enigmatic \"liquid electricity\" that is common to food from Sprout, forming harmless salt on contact." + icon_state = "grounding_solution" + list_reagents = list(/datum/reagent/consumable/grounding_solution = 50) + fill_icon_thresholds = null + //technically condiment packs but they are non transparent /obj/item/reagent_containers/condiment/creamer diff --git a/code/modules/reagents/reagent_containers/cups/glassbottle.dm b/code/modules/reagents/reagent_containers/cups/glassbottle.dm index 9710eab6d2d4..659b236c7cea 100644 --- a/code/modules/reagents/reagent_containers/cups/glassbottle.dm +++ b/code/modules/reagents/reagent_containers/cups/glassbottle.dm @@ -712,6 +712,30 @@ list_reagents = list(/datum/reagent/consumable/ethanol/mushi_kombucha = 30) isGlass = FALSE +/obj/item/reagent_containers/cup/glass/bottle/hakka_mate + name = "Hakka-Mate" + desc = "Hakka-Mate: it's an acquired taste." + icon_state = "hakka_mate_bottle" + list_reagents = list(/datum/reagent/consumable/hakka_mate = 30) + +/obj/item/reagent_containers/cup/glass/bottle/shochu + name = "Shu-Kouba Straight Shochu" + desc = "A boozier form of shochu designed for mixing. Comes straight from Mars' Dusty City itself, Shu-Kouba." + icon_state = "shochu_bottle" + list_reagents = list(/datum/reagent/consumable/ethanol/shochu = 100) + +/obj/item/reagent_containers/cup/glass/bottle/yuyake + name = "Moonlabor Yūyake" + desc = "The distilled essence of disco and flared pants, captured like lightning in a bottle." + icon_state = "yuyake_bottle" + list_reagents = list(/datum/reagent/consumable/ethanol/yuyake = 100) + +/obj/item/reagent_containers/cup/glass/bottle/coconut_rum + name = "Breezy Shoals Coconut Rum" + desc = "Live the breezy life with Breezy Shoals, made with only the *finest Caribbean rum." + icon_state = "coconut_rum_bottle" + list_reagents = list(/datum/reagent/consumable/ethanol/coconut_rum = 100) + ////////////////////////// MOLOTOV /////////////////////// /obj/item/reagent_containers/cup/glass/bottle/molotov name = "molotov cocktail" diff --git a/code/modules/reagents/reagent_containers/cups/soda.dm b/code/modules/reagents/reagent_containers/cups/soda.dm index 6c350e2a4d0b..da708319d446 100644 --- a/code/modules/reagents/reagent_containers/cups/soda.dm +++ b/code/modules/reagents/reagent_containers/cups/soda.dm @@ -282,8 +282,51 @@ list_reagents = list(/datum/reagent/consumable/monkey_energy = 50) drink_type = SUGAR | JUNKFOOD +/obj/item/reagent_containers/cup/soda_cans/volt_energy + name = "24-Volt Energy" + desc = "Recharge, with 24-Volt Energy!" + icon_state = "volt_energy" + list_reagents = list(/datum/reagent/consumable/volt_energy = 30) + drink_type = SUGAR | JUNKFOOD + +/obj/item/reagent_containers/cup/soda_cans/melon_soda + name = "Kansumi Melon Soda" + desc = "Japan's favourite melon soda, now available in can form!" + icon_state = "melon_soda" + list_reagents = list(/datum/reagent/consumable/melon_soda = 30) + drink_type = SUGAR | JUNKFOOD + /obj/item/reagent_containers/cup/soda_cans/air name = "canned air" desc = "There is no air shortage. Do not drink." icon_state = "air" list_reagents = list(/datum/reagent/nitrogen = 24, /datum/reagent/oxygen = 6) + +/obj/item/reagent_containers/cup/soda_cans/beer + name = "space beer" + desc = "Canned beer. In space." + icon_state = "space_beer" + volume = 40 + list_reagents = list(/datum/reagent/consumable/ethanol/beer = 40) + drink_type = GRAIN + +/obj/item/reagent_containers/cup/soda_cans/beer/rice + name = "rice beer" + desc = "A light, rice-based lagered beer popular on Mars. Considered a hate crime against Bavarians under the Reinheitsgebot Act of 1516." + icon_state = "ebisu" + list_reagents = list(/datum/reagent/consumable/ethanol/rice_beer = 40) + +/obj/item/reagent_containers/cup/soda_cans/beer/rice/Initialize(mapload) + . = ..() + var/brand = pick("Ebisu Super Dry", "Shimauma Ichiban", "Moonlabor Malt's") + name = "[brand]" + switch(brand) + if("Ebisu Super Dry") + icon_state = "ebisu" + desc = "Mars' favourite rice beer brand, 200 years running." + if("Shimauma Ichiban") + icon_state = "shimauma" + desc = "Mars' most middling rice beer brand. Not as popular as Ebisu, but it's comfortable in second place." + if("Moonlabor Malt's") + icon_state = "moonlabor" + desc = "Mars' underdog rice beer brand. Popular amongst the Yakuza, for reasons unknown." diff --git a/code/modules/vending/boozeomat.dm b/code/modules/vending/boozeomat.dm index 7f4c2b5280be..a5e4f551ac5c 100644 --- a/code/modules/vending/boozeomat.dm +++ b/code/modules/vending/boozeomat.dm @@ -32,6 +32,11 @@ /obj/item/reagent_containers/cup/glass/bottle/beer = 6, /obj/item/reagent_containers/cup/glass/bottle/vodka = 5, /obj/item/reagent_containers/cup/glass/bottle/whiskey = 5, + /obj/item/reagent_containers/cup/glass/bottle/coconut_rum = 5, + /obj/item/reagent_containers/cup/glass/bottle/yuyake = 5, + /obj/item/reagent_containers/cup/glass/bottle/shochu = 5, + /obj/item/reagent_containers/cup/soda_cans/beer = 10, + /obj/item/reagent_containers/cup/soda_cans/beer/rice = 10, ), ), @@ -49,6 +54,8 @@ /obj/item/reagent_containers/cup/soda_cans/sol_dry = 8, /obj/item/reagent_containers/cup/soda_cans/cola = 8, /obj/item/reagent_containers/cup/soda_cans/tonic = 8, + /obj/item/reagent_containers/cup/glass/bottle/hakka_mate = 5, + /obj/item/reagent_containers/cup/soda_cans/melon_soda = 5, ), ), diff --git a/code/modules/vending/cola.dm b/code/modules/vending/cola.dm index fcbc14913ed8..a2d9ef5e7de0 100644 --- a/code/modules/vending/cola.dm +++ b/code/modules/vending/cola.dm @@ -17,6 +17,7 @@ /obj/item/reagent_containers/cup/soda_cans/sol_dry = 10, /obj/item/reagent_containers/cup/glass/waterbottle = 10, /obj/item/reagent_containers/cup/glass/bottle/mushi_kombucha = 3, + /obj/item/reagent_containers/cup/soda_cans/volt_energy = 3, ) contraband = list( /obj/item/reagent_containers/cup/soda_cans/thirteenloko = 6, diff --git a/code/modules/vending/snack.dm b/code/modules/vending/snack.dm index 22d17761bf16..ec633084fd83 100644 --- a/code/modules/vending/snack.dm +++ b/code/modules/vending/snack.dm @@ -24,6 +24,11 @@ /obj/item/reagent_containers/cup/glass/dry_ramen = 3, /obj/item/storage/box/gum = 3, /obj/item/food/energybar = 6, + /obj/item/food/hot_shots = 6, + /obj/item/food/sticko = 6, + /obj/item/food/sticko/random = 3, + /obj/item/food/shok_roks = 6, + /obj/item/food/shok_roks/random = 3, ) contraband = list( /obj/item/food/syndicake = 6, diff --git a/html/changelogs/AutoChangeLog-pr-1511.yml b/html/changelogs/AutoChangeLog-pr-1511.yml new file mode 100644 index 000000000000..d617822207f7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1511.yml @@ -0,0 +1,10 @@ +author: "AlbertNanotracen" +delete-after: True +changes: + - rscadd: "Mars celebrates the 250th anniversary of the Martian Concession this year, and this has brought Martian cuisine to new heights of popularity. Find a new selection of Martian foods and drinks available in your crafting menu today!\nPort #77757" + - bugfix: "wellcheers is now based on sanity rather than mood" + - image: "resprites martian cans" + - image: "adds inhands for martian cans and wellcheers" + - image: "minor tweaks to other cans" + - spellcheck: "updates wellcheers mood text\nPort #77562" + - bugfix: "a few issues with Martian food" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-1591.yml b/html/changelogs/AutoChangeLog-pr-1591.yml new file mode 100644 index 000000000000..9b67962c7b29 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1591.yml @@ -0,0 +1,5 @@ +author: "Bastian0930" +delete-after: True +changes: + - bugfix: "Bloodsuckers are unable to spam click the persuasion rack and lose all their blood, as part of the new clan training." + - bugfix: "Bloodsuckers will not torture basic mobs or animals, after a clan agreement involving the Animal Rights Consortium." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-1642.yml b/html/changelogs/AutoChangeLog-pr-1642.yml new file mode 100644 index 000000000000..eb158cdc431b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1642.yml @@ -0,0 +1,4 @@ +author: "Absolucy" +delete-after: True +changes: + - bugfix: "Fixed the bug where your actions would be permanently slowed down after wading through liquid." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-1643.yml b/html/changelogs/AutoChangeLog-pr-1643.yml new file mode 100644 index 000000000000..d46b150aa305 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1643.yml @@ -0,0 +1,4 @@ +author: "Absolucy" +delete-after: True +changes: + - bugfix: "Fix invalid events (with blank names) being considered to run." \ No newline at end of file diff --git a/icons/mob/inhands/items/drinks_lefthand.dmi b/icons/mob/inhands/items/drinks_lefthand.dmi index b1aa5e67822b..fb2d9c22dd49 100644 Binary files a/icons/mob/inhands/items/drinks_lefthand.dmi and b/icons/mob/inhands/items/drinks_lefthand.dmi differ diff --git a/icons/mob/inhands/items/drinks_righthand.dmi b/icons/mob/inhands/items/drinks_righthand.dmi index 3d1110960443..13f9dc0a0264 100644 Binary files a/icons/mob/inhands/items/drinks_righthand.dmi and b/icons/mob/inhands/items/drinks_righthand.dmi differ diff --git a/icons/obj/drinks/bottles.dmi b/icons/obj/drinks/bottles.dmi index 6f3622179546..180275021f75 100644 Binary files a/icons/obj/drinks/bottles.dmi and b/icons/obj/drinks/bottles.dmi differ diff --git a/icons/obj/drinks/boxes.dmi b/icons/obj/drinks/boxes.dmi index a0408465ee13..aca834722922 100644 Binary files a/icons/obj/drinks/boxes.dmi and b/icons/obj/drinks/boxes.dmi differ diff --git a/icons/obj/drinks/drinks.dmi b/icons/obj/drinks/drinks.dmi index add38550de25..4b966cb2db27 100644 Binary files a/icons/obj/drinks/drinks.dmi and b/icons/obj/drinks/drinks.dmi differ diff --git a/icons/obj/drinks/mixed_drinks.dmi b/icons/obj/drinks/mixed_drinks.dmi index 9d11040d0abc..e38df4890409 100644 Binary files a/icons/obj/drinks/mixed_drinks.dmi and b/icons/obj/drinks/mixed_drinks.dmi differ diff --git a/icons/obj/drinks/soda.dmi b/icons/obj/drinks/soda.dmi index 95b195789d13..f061e029c4dc 100644 Binary files a/icons/obj/drinks/soda.dmi and b/icons/obj/drinks/soda.dmi differ diff --git a/icons/obj/food/canned.dmi b/icons/obj/food/canned.dmi index 5f61b7e17967..97f66f2d5b5e 100644 Binary files a/icons/obj/food/canned.dmi and b/icons/obj/food/canned.dmi differ diff --git a/icons/obj/food/containers.dmi b/icons/obj/food/containers.dmi index 3489068f4cbd..949c589225f0 100644 Binary files a/icons/obj/food/containers.dmi and b/icons/obj/food/containers.dmi differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 30e8be87ada2..7bec955214fc 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/icons/obj/food/frozen_treats.dmi b/icons/obj/food/frozen_treats.dmi index 133d6de83a03..b5b91520e8ca 100644 Binary files a/icons/obj/food/frozen_treats.dmi and b/icons/obj/food/frozen_treats.dmi differ diff --git a/icons/obj/food/martian.dmi b/icons/obj/food/martian.dmi new file mode 100644 index 000000000000..79efcd1813d5 Binary files /dev/null and b/icons/obj/food/martian.dmi differ diff --git a/icons/obj/service/janitor.dmi b/icons/obj/service/janitor.dmi index 18a574c7cff0..8c73a99b4164 100644 Binary files a/icons/obj/service/janitor.dmi and b/icons/obj/service/janitor.dmi differ diff --git a/monkestation/code/datums/stamina_container.dm b/monkestation/code/datums/stamina_container.dm index 60c948b2d218..4be931363d8d 100644 --- a/monkestation/code/datums/stamina_container.dm +++ b/monkestation/code/datums/stamina_container.dm @@ -86,3 +86,17 @@ /// Revitalize the stamina to the maximum this container can have. /datum/stamina_container/proc/revitalize(forced = FALSE) return adjust(maximum, forced) + +/datum/stamina_container/proc/adjust_to(amount, lowest_stamina_value, forced = FALSE) + if((!amount || !COOLDOWN_FINISHED(src, stamina_grace_period)) && !forced) + return + + var/stamina_after_loss = current + amount + if(stamina_after_loss < lowest_stamina_value) + amount = current - lowest_stamina_value + + current = round(clamp(current + amount, 0, maximum), DAMAGE_PRECISION) + update() + if((amount < 0) && is_regenerating) + pause(STAMINA_REGEN_TIME) + return amount diff --git a/monkestation/code/modules/bloodsuckers/structures/bloodsucker_crypt.dm b/monkestation/code/modules/bloodsuckers/structures/bloodsucker_crypt.dm index 479aefd681bb..0bcb6a479938 100644 --- a/monkestation/code/modules/bloodsuckers/structures/bloodsucker_crypt.dm +++ b/monkestation/code/modules/bloodsuckers/structures/bloodsucker_crypt.dm @@ -130,6 +130,8 @@ var/disloyalty_confirm = FALSE /// Prevents popup spam. var/disloyalty_offered = FALSE + // Prevent spamming torture via spam click. Otherwise they're able to lose a lot of blood quickly + var/blood_draining = FALSE /obj/structure/bloodsucker/vassalrack/Initialize(mapload) . = ..() @@ -282,6 +284,9 @@ balloon_alert(user, "someone else's vassal!") return FALSE + if(!ishuman(target)) + balloon_alert(user, "you can't torture an animal or basic mob!") + return FALSE var/disloyalty_requires = RequireDisloyalty(user, target) if(HAS_TRAIT(target, TRAIT_MINDSHIELD)) @@ -294,6 +299,11 @@ // Conversion Process if(convert_progress) + //Are we currently torturing this person? If so, do not spill blood more. + if(blood_draining) + return + //We're torturing. Do not start another torture on this rack. + blood_draining = TRUE balloon_alert(user, "spilling blood...") bloodsuckerdatum.AddBloodVolume(-TORTURE_BLOOD_HALF_COST) if(!do_torture(user, target)) @@ -312,26 +322,27 @@ balloon_alert(user, "has external loyalties! more persuasion required!") else balloon_alert(user, "ready for communion!") - return - - if(!disloyalty_confirm && disloyalty_requires) - if(!do_disloyalty(user, target)) return - if(!disloyalty_confirm) - balloon_alert(user, "refused persuasion!") - else - balloon_alert(user, "ready for communion!") - return - user.balloon_alert_to_viewers("smears blood...", "painting bloody marks...") - if(!do_after(user, 5 SECONDS, target)) - balloon_alert(user, "interrupted!") - return - // Convert to Vassal! - bloodsuckerdatum.AddBloodVolume(-TORTURE_CONVERSION_COST) - if(bloodsuckerdatum.make_vassal(target)) - remove_loyalties(target) - SEND_SIGNAL(bloodsuckerdatum, BLOODSUCKER_MADE_VASSAL, user, target) + if(!disloyalty_confirm && disloyalty_requires) + if(!do_disloyalty(user, target)) + return + if(!disloyalty_confirm) + balloon_alert(user, "refused persuasion!") + else + balloon_alert(user, "ready for communion!") + return + //If they don't need any more torture, start converting them into a vassal! + else + user.balloon_alert_to_viewers("smears blood...", "painting bloody marks...") + if(!do_after(user, 5 SECONDS, target)) + balloon_alert(user, "interrupted!") + return + // Convert to Vassal! + bloodsuckerdatum.AddBloodVolume(-TORTURE_CONVERSION_COST) + if(bloodsuckerdatum.make_vassal(target)) + remove_loyalties(target) + SEND_SIGNAL(bloodsuckerdatum, BLOODSUCKER_MADE_VASSAL, user, target) /obj/structure/bloodsucker/vassalrack/proc/do_torture(mob/living/user, mob/living/carbon/target, mult = 1) // Fifteen seconds if you aren't using anything. Shorter with weapons and such. @@ -363,6 +374,8 @@ torture_time = max(5 SECONDS, torture_time * 10) // Now run process. if(!do_after(user, (torture_time * mult), target)) + //Torture failed. You can start again. + blood_draining = FALSE return FALSE if(held_item) @@ -374,6 +387,8 @@ INVOKE_ASYNC(target, TYPE_PROC_REF(/mob, emote), "scream") target.set_timed_status_effect(5 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE) target.apply_damages(brute = torture_dmg_brute, burn = torture_dmg_burn, def_zone = selected_bodypart.body_zone) + //Torture succeeded. You may torture again. + blood_draining = FALSE return TRUE /// Offer them the oppertunity to join now. diff --git a/monkestation/code/modules/food_and_drinks/recipes/boiling.dm b/monkestation/code/modules/food_and_drinks/recipes/boiling.dm index 29f0ac91f126..3e46dcdda6b9 100644 --- a/monkestation/code/modules/food_and_drinks/recipes/boiling.dm +++ b/monkestation/code/modules/food_and_drinks/recipes/boiling.dm @@ -5,3 +5,27 @@ results = list(/datum/reagent/water = 5) max_outputs = 10 Nonsouprecipe = TRUE + +/datum/chemical_reaction/food/soup/boiledrice + required_ingredients = list(/obj/item/food/uncooked_rice = 1) + required_reagents = list(/datum/reagent/water = 50) + outputted_ingredients = list(/obj/item/food/boiledrice = 1) + results = list(/datum/reagent/water = 5) + max_outputs = 10 + Nonsouprecipe = TRUE + +// Machinery: Stove +/datum/crafting_recipe/food/stove + machinery = list(/obj/machinery/stove) + steps = list("Add all ingredients into a soup pot","Heat up to 450K") + category = CAT_SPAGHETTI + non_craftable = TRUE + +/datum/crafting_recipe/food/stove/boiledspaghetti + reqs = list(/datum/reagent/water = 50, /obj/item/reagent_containers/cup/soup_pot, /obj/item/food/spaghetti/raw = 1) + result = /obj/item/food/spaghetti/boiledspaghetti + +/datum/crafting_recipe/food/stove/boiledrice + reqs = list(/datum/reagent/water = 50, /obj/item/reagent_containers/cup/soup_pot, /obj/item/food/uncooked_rice = 1) + result = /obj/item/food/boiledrice + category = CAT_SALAD diff --git a/monkestation/code/modules/liquids/liquid_status_effect.dm b/monkestation/code/modules/liquids/liquid_status_effect.dm index 2311372f9d18..514667fc0272 100644 --- a/monkestation/code/modules/liquids/liquid_status_effect.dm +++ b/monkestation/code/modules/liquids/liquid_status_effect.dm @@ -12,34 +12,30 @@ //Factor in swimming skill here? var/turf/T = get_turf(owner) var/slowdown_amount = T.liquids.liquid_group.group_overlay_state * 0.5 - owner.add_or_update_variable_actionspeed_modifier(/datum/movespeed_modifier/liquids, multiplicative_slowdown = slowdown_amount) + owner.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/liquids, multiplicative_slowdown = slowdown_amount) /datum/status_effect/water_affected/tick() - var/turf/T = get_turf(owner) - if(!T || !T.liquids || T.liquids.liquid_group.group_overlay_state == LIQUID_STATE_PUDDLE) + var/turf/owner_turf = get_turf(owner) + if(QDELETED(owner_turf) || QDELETED(owner_turf.liquids) || owner_turf.liquids.liquid_group.group_overlay_state == LIQUID_STATE_PUDDLE) qdel(src) return calculate_water_slow() //Make the reagents touch the person - var/fraction = SUBMERGEMENT_PERCENT(owner, T.liquids) - T.liquids.liquid_group.expose_members_turf(T.liquids) - T.liquids.liquid_group.transfer_to_atom(T.liquids, ((SUBMERGEMENT_REAGENTS_TOUCH_AMOUNT*fraction/20)), owner) + var/fraction = SUBMERGEMENT_PERCENT(owner, owner_turf.liquids) + owner_turf.liquids.liquid_group.expose_members_turf(owner_turf.liquids) + owner_turf.liquids.liquid_group.transfer_to_atom(owner_turf.liquids, ((SUBMERGEMENT_REAGENTS_TOUCH_AMOUNT * fraction / 20)), owner) return ..() /datum/status_effect/water_affected/on_remove() - owner.remove_movespeed_modifier("liquid_slowdown") - + owner.remove_movespeed_modifier(/datum/movespeed_modifier/liquids) /datum/movespeed_modifier/liquids - id = "liquid_slowdown" variable = TRUE - blacklisted_movetypes = FLOATING - + blacklisted_movetypes = FLOATING | FLYING /datum/status_effect/ocean_affected - id = "oceanaffected" alert_type = null duration = -1 diff --git a/monkestation/code/modules/storytellers/gamemode_subsystem.dm b/monkestation/code/modules/storytellers/gamemode_subsystem.dm index dfc69e1a3439..95e7edc19921 100644 --- a/monkestation/code/modules/storytellers/gamemode_subsystem.dm +++ b/monkestation/code/modules/storytellers/gamemode_subsystem.dm @@ -174,11 +174,12 @@ SUBSYSTEM_DEF(gamemode) for(var/type in subtypesof(/datum/storyteller)) storytellers[type] = new type() - for(var/type in typesof(/datum/round_event_control)) - var/datum/round_event_control/event = new type() - if(!event.typepath || !event.name) - continue //don't want this one! leave it for the garbage collector + for(var/datum/round_event_control/event_type as anything in typesof(/datum/round_event_control)) + if(!event_type::typepath || !event_type::name) + continue + var/datum/round_event_control/event = new event_type if(!event.valid_for_map()) + qdel(event) continue // event isn't good for this map no point in trying to add it to the list control += event //add it to the list of all events (controls) getHoliday() diff --git a/tgstation.dme b/tgstation.dme index 1f78c788a729..66898c20cee7 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2139,6 +2139,7 @@ #include "code\game\objects\items\food\egg.dm" #include "code\game\objects\items\food\frozen.dm" #include "code\game\objects\items\food\lizard.dm" +#include "code\game\objects\items\food\martian.dm" #include "code\game\objects\items\food\meatdish.dm" #include "code\game\objects\items\food\meatslab.dm" #include "code\game\objects\items\food\mexican.dm" @@ -3705,6 +3706,7 @@ #include "code\modules\food_and_drinks\recipes\tablecraft\recipes_frozen.dm" #include "code\modules\food_and_drinks\recipes\tablecraft\recipes_guide.dm" #include "code\modules\food_and_drinks\recipes\tablecraft\recipes_lizard.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_martian.dm" #include "code\modules\food_and_drinks\recipes\tablecraft\recipes_meat.dm" #include "code\modules\food_and_drinks\recipes\tablecraft\recipes_mexican.dm" #include "code\modules\food_and_drinks\recipes\tablecraft\recipes_misc.dm"