Skip to content

Commit

Permalink
Martian Food: A Taste of the Red Planet (tgstation#75988)
Browse files Browse the repository at this point in the history
Adds a selection of new foods and drinks based around Mars.
More information on Mars can be found here:
https://github.com/tgstation/common_core/blob/master/Interesting%20Planets/Human%20Space/The%20Sol%20System.md
To summarise for the general audience, Mars is a vital colony of the
Terran Federation, having been primarily settled (at least originally)
by Cybersun Industries to harvest its lucrative supplies of plasma, the
second largest in human space behind Lavaland. This has given Mars a
diverse culture evolving from the mostly East Asian colonists, and their
food reflects this.

Thanks to Melbert for their work on the soup portion of this PR.

The food:
Martian cuisine draws upon the culinary traditions of East Asia, and
adds in fusion cuisine from the later colonists. Expect classics such as
ramen, curry, noodles and donburi, as well as new takes on the formula
like the Croque-Martienne, Peanut Butter Ice Cream Mochi, and the
Kitzushi- chilli cheese and rice inside a fried tofu casing. Oh, and
lots of pineapple. The Martians love pineapple:

![image](https://github.com/tgstation/tgstation/assets/58124831/c9ae33a1-e03a-4f94-8ce0-8ad124e88e8d)
Also included are some foods for Ethereals, which may or may not be
hinting at something I've got planned...

The drinks:
Four new base drinks make their way to the game, bringing with them a
host of new cocktails: enjoy new ventures in bartending with Coconut
Rum, Shochu/Soju, Yuyake (our favourite legally-distinct melon liqueur),
and Mars' favourite alcoholic beverage, rice beer. Each is available in
the dispenser, as well as bottles in the booze-o-mat:

![image](https://github.com/tgstation/tgstation/assets/58124831/914a6e2a-7ef5-4791-ae31-d08fa9211083)

The recipes:
To make your (and the wiki editors) lives easier, please find below the
recipes for both foods and drinks:
Food: https://hackmd.io/@EOBGames/BkVFU0w9Y
Drinks: https://hackmd.io/@EOBGames/rJ1OhnsJ2

Another lot of variety for the chef and bartender, as well as continuing
the work started with lizard and moth food in getting Common Core into
the game in a tangible and fun way.

:cl: EOBGames, MrMelbert
add: 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!
/:cl:

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
  • Loading branch information
2 people authored and AlbertNanotracen committed Jan 29, 2024
1 parent 5a9a661 commit e118a51
Show file tree
Hide file tree
Showing 33 changed files with 2,181 additions and 13 deletions.
2 changes: 2 additions & 0 deletions code/__DEFINES/construction.dm
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,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"
Expand All @@ -112,6 +113,7 @@ GLOBAL_LIST_INIT(crafting_category_food, list(
CAT_LIZARD,
CAT_MEAT,
CAT_SEAFOOD,
CAT_MARTIAN,
CAT_MISCFOOD,
CAT_MEXICAN,
CAT_MOTH,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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
4 changes: 0 additions & 4 deletions code/game/objects/items/food/martian.dm
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,6 @@
food_reagents = list(
/datum/reagent/consumable/nutriment = 15
)
burns_in_oven = TRUE
tastes = list("bread" = 10)
foodtypes = GRAIN | VEGETABLES
venue_value = FOOD_PRICE_TRASH
Expand Down Expand Up @@ -1177,8 +1176,6 @@
/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
Expand Down Expand Up @@ -1208,7 +1205,6 @@
/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
Expand Down
10 changes: 10 additions & 0 deletions code/game/objects/items/food/meatdish.dm
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,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."
Expand Down
76 changes: 76 additions & 0 deletions code/game/objects/items/food/packaged.dm
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,53 @@
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
)
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
Expand Down Expand Up @@ -220,6 +267,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
Expand Down
43 changes: 43 additions & 0 deletions code/game/objects/items/trash.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
13 changes: 10 additions & 3 deletions code/modules/food_and_drinks/machinery/stove.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
75 changes: 75 additions & 0 deletions code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)

0 comments on commit e118a51

Please sign in to comment.