Skip to content

Commit

Permalink
[PORT] Food and Drink Ports (#1647)
Browse files Browse the repository at this point in the history
* Split drinks into different files (#75898)

Splits our nearly 4000 and 1600 line long files. Mostly just moves the
glass appearances into their own files.

* undoes removals of some bypass restrictions & metabolized_traits related things

* removed changes to on_hydroponics_apply()

* we had more arguments, missed that

* sigh

* Martian Food: A Taste of the Red Planet (#75988)

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>

* updates martian can sprites, fixes misc text and bugs in wellcheers (#77757)

this is kind of a miscellaneous pile of fixes for soda.dmi, rolled up
with a larger resprite of the new cans that were added with #75988. you
can see everything visually changed (other than inhands) in the image
below

![image](https://github.com/tgstation/tgstation/assets/110322848/4c28f0c7-3975-4510-9958-9eef7f913051)
and then the inhands here:

![image](https://github.com/tgstation/tgstation/assets/110322848/03967e6e-6551-40d5-b2ec-7f27fabbc175)
also changes wellcheers mood event text, and the mood switch to be based
on sanity instead. apparently the mood test allowed for foolproof
traitor testing, which is not ideal. this hopefully fixes that.

the new martian drinks used the previous style of cans, which was
updated in #77424. this makes them consistent with that style.
everything else is minor things i missed or forgot to do in that PR.
also things that enable traitor testing are not great, even if they're
niche and require amputation to pull off.

:cl:
fix: 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
/:cl:

* Removing enriched liquid electricity references

* look, icons are hard

* boiled rice now needs to be boiled and recipe guide for boiled spaghetti/rice

* martian hotfix (#77562)

## About The Pull Request
Fixes a few issues with Martian food. Makes stuff that's cooked on the
grill or oven not burn, and adds guide recipes for the non-crafting-menu
stuff.
## Why It's Good For The Game
Fixes some problems, removes some confusion
## Changelog
:cl:
fix: a few issues with Martian food
/:cl:

* removed references to butter slices for now

* Change from improvised medicine

* better block comment formating

* T (#77442)

## About The Pull Request
Adds T, basically a boosted tea for mimes.
Can be made by mixing Nothing with Tea, trading off the brute healing
for toxin & drowsiness healing.


![dinky-export2](https://github.com/tgstation/tgstation/assets/66052067/8a81f719-8fd8-4dd2-be74-58ff2442ce94)
## Why It's Good For The Game


https://github.com/tgstation/tgstation/assets/66052067/9df3ee77-ff45-49ce-a56d-59004e4b308c
## Changelog
:cl: Wallem
add: T
/:cl:

* Fixes silliness involving soup pots clearing ingredients list  (#74882)

Fixes #74866

The issue is misleading, it never deleted the disk. The disk remained in
the pot's contents but was no longer tracked as an ingredient, leaving
it stuck

Foolishly I had a case for indestructible things when soup reactions
finished, where it wouldn't delete stuff like the disk.
But I never removed it from the pot. I just nulled the ingredients list.
Oops.

So pots will drop ingredients that fail to cook into anything when the
reaction finishes.

---

Semi-unrelated but stuff like stoves, ovens, and chem heater should
probably `allowdrop() return FALSE`. I cannot think of many (any)
situations where you would want to use `drop_location` from something in
an oven, stove, or heater and actually want those returned rather than
their own loc.

Whoops

:cl: Melbert
fix: Ingredients which fail to react in soup reactions drop when the
reaction finishes as intended
/:cl:

* Adds the Death Sandwich to the game (#75013)

Adds the Death Sandwich to the game, the ultimate form of
bread-conveyed-meat-based consumables.

![deathsandwich](https://user-images.githubusercontent.com/66052067/235041733-287be1fd-1eed-4d6d-840b-96f95494f093.png)

And remember;
Eat it right, or you die!

I'm genuinely surprised we don't already have a meatball sub in the game
also I love humor food, and I doubt my edition of the Eggcellent
Challenge would ever be merged if I tried to do so, so this is the next
best thing.

:cl: Wallem
add: The ancient recipe for the Death Sandwich has been rediscovered
buried in the deepest depths of an erupting volcano.
/:cl:

* Wedding Cakes (#75076)

## About The Pull Request

Added wedding cakes, which are sliceable into wedding cake slices.
Mechanically, they are just worse pound cakes - they require more
ingredients and provide less nutrients - but they are here for the
flavor. Sometimes a pound cake just doesn't suffice when you want to
roleplay a wedding.

Fair warning, I've not done a pull request here before, any advice
welcome.

<img
src='https://user-images.githubusercontent.com/102194057/235379312-2eaecffa-c48f-45b6-a3c6-09bf4bbff14a.png'>

## Why It's Good For The Game

Roleplayers like weddings, and what is a wedding without a cake? (This
PR was originally made for Skyrat but they recommended I take it
upstream).

## Changelog
:cl:
add: Added wedding cakes
/:cl:

---------

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>

* Adds a var to chemical reactions that allows them to take place in subtypes of their required container (#75527)

## About The Pull Request

As the title may imply, a variable has been added to chemical reactions
that'll make them check istype on the required container, rather than
looking for the exact type path.
## Why It's Good For The Game

In my specific example, lets say I want to have sybtypes of soup pots.
The current behavior doesn't allow for these subtypes of soup pots to
actually make soup, which is sub-optimal.
## Changelog
:cl:
code: A var has been added to chemical reactions (defaulted to FALSE to
keep current behavior) that allows subtypes of that reactions required
container to be used as well, rather than the exact type.
/:cl:

* adds toast sandwich (#75545)

## About The Pull Request

Adds toast sandwich to the game.

![image](https://github.com/tgstation/tgstation/assets/32695675/6860aff1-7dde-4e0b-9ed8-a4343cf3f115)

## Why It's Good For The Game

Gives our UK players a little taste of home :)
Also it's funny

## Changelog

:cl: Epoc
add: Toast sandwich
/:cl:

---------

Co-authored-by: alec-b-williams <alec.b.williams@wsu.edu>
Co-authored-by: alec-b-williams <78933704+alec-b-williams@users.noreply.github.com>

* Fixes a little inconsistency with the peanut butter banana sandwich and makes sandwiches subtypes of the generic sandwhich. (#75750)

The peanut butter banana sandwich is presented ingame as grilled when it
doesn't require a griddle to make.
Also, I'm taking the opportunity to repath the sandwich types, since
they all share the same weight class, food flags and icons file.

This will fix #74585.

:cl:
fix: The peanut butter banana sandwich is no longer presented as grilled
when it doesn't require a griddle to make.
/:cl:

* Map changes needed for sandwich refactor

* i really need to find a better way to do this

* Modify death sandwich disease to work with pathology

* Blood brothers can now chose the death sandwich recipe as their gear

* the cure should be shown somewhere in game, that was dumb of me

* changed our boiling recipes that output items to match 24-volt fist

* wedding cake can feed a small wedding party

---------

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: EOBGames <58124831+EOBGames@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Lamb <110322848+CoiledLamb@users.noreply.github.com>
Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
Co-authored-by: Thlumyn <102194057+Thlumyn@users.noreply.github.com>
Co-authored-by: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com>
Co-authored-by: Epoc <32695675+epochayur@users.noreply.github.com>
Co-authored-by: alec-b-williams <alec.b.williams@wsu.edu>
Co-authored-by: alec-b-williams <78933704+alec-b-williams@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: dwasint <82520990+dwasint@users.noreply.github.com>
  • Loading branch information
13 people authored Jun 13, 2024
1 parent be26efd commit b9bce7b
Show file tree
Hide file tree
Showing 31 changed files with 379 additions and 110 deletions.
2 changes: 1 addition & 1 deletion _maps/map_files/Deltastation/DeltaStation2.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -96092,7 +96092,7 @@
normaldoorcontrol = 1;
specialfunctions = 4
},
/obj/item/food/grilled_cheese_sandwich,
/obj/item/food/sandwich/cheese/grilled,
/turf/open/floor/iron/cafeteria,
/area/station/medical/break_room)
"wWy" = (
Expand Down
2 changes: 1 addition & 1 deletion _maps/map_files/IceBoxStation/IceBoxStation.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -58786,7 +58786,7 @@
/area/station/cargo/storage)
"sQc" = (
/obj/structure/table,
/obj/item/food/grilled_cheese_sandwich{
/obj/item/food/sandwich/cheese/grilled{
name = "idiot sandwich";
pixel_y = 8
},
Expand Down
4 changes: 2 additions & 2 deletions _maps/shuttles/emergency_luxury.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@
/turf/open/floor/holofloor/beach/water,
/area/shuttle/escape/luxury)
"nC" = (
/obj/item/food/grilled_cheese_sandwich{
/obj/item/food/sandwich/cheese/grilled{
pixel_y = 11
},
/obj/structure/table/wood/fancy/black,
Expand Down Expand Up @@ -961,7 +961,7 @@
/turf/open/floor/iron,
/area/shuttle/escape)
"Oe" = (
/obj/item/food/notasandwich{
/obj/item/food/sandwich/notasandwich{
pixel_y = 11
},
/obj/structure/table/wood/fancy/black,
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/~monkestation/virology.dm
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
#define DISEASE_ROBOT "robot"
#define DISEASE_COLD "cold"
#define DISEASE_HEART "heart"
#define DISEASE_SANDWICH "sandwich"
#define DISEASE_TRAUMA "trauma"
#define DISEASE_DECLONING "decloning"
#define DISEASE_ANXIETY "anxiety"
1 change: 1 addition & 0 deletions code/_globalvars/lists/maintenance_loot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items
/obj/item/stock_parts/cell/high = 1,
/obj/item/storage/box/clown = 1,
/obj/item/weaponcrafting/receiver = 1,
/obj/item/book/granter/crafting_recipe/death_sandwich = 1,
) = 8,

list(//medical and chemicals
Expand Down
60 changes: 60 additions & 0 deletions code/datums/diseases/death_sandwich_poisoning.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
/datum/disease/death_sandwich_poisoning
name = "Death Sandwich Poisoning"
desc = "If left untreated the subject will ultimately perish."
form = "Condition"
spread_text = "Unknown"
max_stages = 3
cure_text = "Anacea" // I ain't about to make a second sandwich to counteract the first one, so closest thing I'm going for is this.
cures = list(/datum/reagent/toxin/anacea)
cure_chance = 4
agent = "eating the Death Sandwich wrong"
viable_mobtypes = list(/mob/living/carbon/human)
severity = DISEASE_SEVERITY_DANGEROUS
disease_flags = CURABLE
spread_flags = DISEASE_SPREAD_SPECIAL
visibility_flags = HIDDEN_SCANNER
bypasses_immunity = TRUE


/datum/disease/death_sandwich_poisoning/stage_act(seconds_per_tick, times_fired)
. = ..()
if(!.)
return

switch(stage)
if(1)
if(SPT_PROB(1.5, seconds_per_tick))
affected_mob.emote("cough")
if(SPT_PROB(0.5, seconds_per_tick))
affected_mob.emote("gag")
if(SPT_PROB(0.5, seconds_per_tick))
affected_mob.adjustToxLoss(5)
if(2)
if(SPT_PROB(5, seconds_per_tick))
affected_mob.emote("cough")
if(SPT_PROB(2.5, seconds_per_tick))
affected_mob.emote("gag")
if(SPT_PROB(1, seconds_per_tick))
to_chat(affected_mob, span_danger("Your body feels hot!"))
if(prob(20))
affected_mob.take_bodypart_damage(burn = 1)
if(SPT_PROB(3, seconds_per_tick))
affected_mob.adjustToxLoss(10)

if(3)
if(SPT_PROB(5, seconds_per_tick))
affected_mob.emote("gag")
if(SPT_PROB(10, seconds_per_tick))
affected_mob.emote("gasp")
if(SPT_PROB(2.5, seconds_per_tick))
affected_mob.vomit(20, TRUE)
if(SPT_PROB(2.5, seconds_per_tick))
to_chat(affected_mob, span_danger("Your body feels hot!"))
if(prob(60))
affected_mob.take_bodypart_damage(burn = 2)
if(SPT_PROB(6, seconds_per_tick))
affected_mob.adjustToxLoss(15)
if(SPT_PROB(1.5, seconds_per_tick))
to_chat(affected_mob, span_danger("You try to scream, but nothing comes out!"))
affected_mob.set_silence_if_lower(5 SECONDS)

21 changes: 21 additions & 0 deletions code/game/objects/items/food/cake.dm
Original file line number Diff line number Diff line change
Expand Up @@ -619,3 +619,24 @@
icon_state = "plumcakeslice"
tastes = list("cake" = 5, "sweetness" = 1, "plum" = 2)
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR

/obj/item/food/cake/wedding
name = "wedding cake"
desc = "An expensive, multi-tiered cake."
icon_state = "weddingcake"
food_reagents = list(
/datum/reagent/consumable/nutriment = 40,
/datum/reagent/consumable/sugar = 30,
/datum/reagent/consumable/nutriment/vitamin = 10,
)
tastes = list("cake" = 3, "frosting" = 1)
foodtypes = GRAIN | DAIRY | SUGAR
slice_type = /obj/item/food/cakeslice/wedding
yield = 20 //Monkestation Edit: it takes 4 plain cakes to make 4x the output should be fine

/obj/item/food/cakeslice/wedding
name = "wedding cake slice"
desc = "Traditionally, those getting married feed each other a slice of cake."
icon_state = "weddingcake_slice"
tastes = list("cake" = 3, "frosting" = 1)
foodtypes = GRAIN | DAIRY | SUGAR
127 changes: 76 additions & 51 deletions code/game/objects/items/food/sandwichtoast.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,74 +13,62 @@
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL

/obj/item/food/grilled_cheese_sandwich
name = "grilled cheese sandwich"
desc = "A warm, melty sandwich that goes perfectly with tomato soup."
icon = 'icons/obj/food/burgerbread.dmi'
icon_state = "toastedsandwich"
food_reagents = list(
/datum/reagent/consumable/nutriment = 6,
/datum/reagent/consumable/nutriment/protein = 5,
/datum/reagent/consumable/nutriment/vitamin = 1,
/datum/reagent/carbon = 4,
)
tastes = list("toast" = 2, "cheese" = 3, "butter" = 1)
foodtypes = GRAIN
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
burns_on_grill = TRUE

/obj/item/food/cheese_sandwich
/obj/item/food/sandwich/cheese
name = "cheese sandwich"
desc = "A light snack for a warm day. ...but what if you grilled it?"
icon = 'icons/obj/food/burgerbread.dmi'
icon_state = "sandwich"
food_reagents = list(
/datum/reagent/consumable/nutriment = 7,
/datum/reagent/consumable/nutriment/protein = 3,
/datum/reagent/consumable/nutriment/vitamin = 1,
)
tastes = list("bread" = 1, "cheese" = 1)
foodtypes = GRAIN | DAIRY
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_NORMAL

/obj/item/food/cheese_sandwich/make_grillable()
AddComponent(/datum/component/grillable, /obj/item/food/grilled_cheese_sandwich, rand(30 SECONDS, 60 SECONDS), TRUE)
/obj/item/food/sandwich/cheese/make_grillable()
if(burns_on_grill)
return ..()
AddComponent(/datum/component/grillable, /obj/item/food/sandwich/cheese/grilled, rand(30 SECONDS, 60 SECONDS), TRUE)

/obj/item/food/sandwich/cheese/grilled
name = "grilled cheese sandwich"
desc = "A warm, melty sandwich that goes perfectly with tomato soup."
icon_state = "toastedsandwich"
food_reagents = list(
/datum/reagent/consumable/nutriment = 6,
/datum/reagent/consumable/nutriment/protein = 5,
/datum/reagent/consumable/nutriment/vitamin = 1,
/datum/reagent/carbon = 4,
)
foodtypes = GRAIN | DAIRY
burns_on_grill = TRUE

/obj/item/food/jellysandwich
/obj/item/food/sandwich/jelly
name = "jelly sandwich"
desc = "You wish you had some peanut butter to go with this..."
icon = 'icons/obj/food/burgerbread.dmi'
icon_state = "jellysandwich"
bite_consumption = 3
tastes = list("bread" = 1, "jelly" = 1)
foodtypes = GRAIN
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL

/obj/item/food/jellysandwich/slime
/obj/item/food/sandwich/jelly/slime
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin/slimejelly = 10, /datum/reagent/consumable/nutriment/vitamin = 4)
foodtypes = GRAIN | TOXIC

/obj/item/food/jellysandwich/cherry
/obj/item/food/sandwich/jelly/cherry
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/cherryjelly = 8, /datum/reagent/consumable/nutriment/vitamin = 4)
foodtypes = GRAIN | FRUIT | SUGAR

/obj/item/food/notasandwich
/obj/item/food/sandwich/notasandwich
name = "not-a-sandwich"
desc = "Something seems to be wrong with this, you can't quite figure what. Maybe it's his moustache."
icon = 'icons/obj/food/burgerbread.dmi'
icon_state = "notasandwich"
food_reagents = list(
/datum/reagent/consumable/nutriment = 6,
/datum/reagent/consumable/nutriment/vitamin = 10,
)
tastes = list("nothing suspicious" = 1)
foodtypes = GRAIN | GROSS
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL

/obj/item/food/griddle_toast
name = "griddle toast"
Expand Down Expand Up @@ -180,10 +168,9 @@
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_NORMAL

/obj/item/food/blt
/obj/item/food/sandwich/blt
name = "\improper BLT"
desc = "A classic bacon, lettuce, and tomato sandwich."
icon = 'icons/obj/food/burgerbread.dmi'
icon_state = "blt"
bite_consumption = 4
food_reagents = list(
Expand All @@ -193,13 +180,10 @@
)
tastes = list("bacon" = 3, "lettuce" = 2, "tomato" = 2, "bread" = 2)
foodtypes = GRAIN | MEAT | VEGETABLES | BREAKFAST
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL

/obj/item/food/peanut_butter_jelly_sandwich
/obj/item/food/sandwich/peanut_butter_jelly
name = "peanut butter and jelly sandwich"
desc = "A classic PB&J sandwich, just like your mom used to make."
icon = 'icons/obj/food/burgerbread.dmi'
icon_state = "peanut_butter_jelly_sandwich"
food_reagents = list(
/datum/reagent/consumable/nutriment = 2,
Expand All @@ -208,13 +192,10 @@
)
tastes = list("peanut butter" = 1, "jelly" = 1, "bread" = 2)
foodtypes = GRAIN | FRUIT | NUTS
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL

/obj/item/food/peanut_butter_banana_sandwich
/obj/item/food/sandwich/peanut_butter_banana
name = "peanut butter and banana sandwich"
desc = "A grilled peanut butter sandwich with banana slices mixed in, a good high protein treat."
icon = 'icons/obj/food/burgerbread.dmi'
desc = "A peanut butter sandwich with banana slices mixed in, a good high protein treat."
icon_state = "peanut_butter_banana_sandwich"
food_reagents = list(
/datum/reagent/consumable/nutriment = 2,
Expand All @@ -224,13 +205,10 @@
)
tastes = list("peanut butter" = 1, "banana" = 1, "bread" = 2)
foodtypes = GRAIN | FRUIT | NUTS
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL

/obj/item/food/philly_cheesesteak
/obj/item/food/sandwich/philly_cheesesteak
name = "Philly cheesesteak"
desc = "A popular sandwich made of sliced meat, onions, melted cheese in a long hoagie roll. Mouthwatering doesn't even begin to describe it."
icon = 'icons/obj/food/burgerbread.dmi'
icon_state = "philly_cheesesteak"
food_reagents = list(
/datum/reagent/consumable/nutriment = 10,
Expand All @@ -239,5 +217,52 @@
)
tastes = list("bread" = 1, "juicy meat" = 1, "melted cheese" = 1, "onions" = 1)
foodtypes = GRAIN | MEAT | DAIRY | VEGETABLES
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL

/obj/item/food/sandwich/toast_sandwich
name = "toast sandwich"
desc = "A piece of buttered toast between two slices of bread. Why would you make this?"
icon_state = "toast_sandwich"
bite_consumption = 3
food_reagents = list(
/datum/reagent/consumable/nutriment = 3,
/datum/reagent/consumable/nutriment/vitamin = 1,
)
tastes = list("bread" = 2, "Britain" = 1, "butter" = 1, "toast" = 1)
foodtypes = GRAIN

/obj/item/food/sandwich/death
name = "death sandwich"
desc = "Eat it right, or you die!"
icon_state = "death_sandwich"
food_reagents = list(
/datum/reagent/consumable/nutriment = 8,
/datum/reagent/consumable/nutriment/protein = 14,
/datum/reagent/consumable/nutriment/vitamin = 6,
)
tastes = list("bread" = 1, "meat" = 1, "tomato sauce" = 1, "death" = 1)
foodtypes = GRAIN | MEAT
eat_time = 4 SECONDS // Makes it harder to force-feed this to people as a weapon, as funny as that is.

/obj/item/food/sandwich/death/Initialize(mapload)
. = ..()
obj_flags &= ~UNIQUE_RENAME // You shouldn't be able to disguise this on account of how it kills you

///Override for checkliked callback
/obj/item/food/sandwich/death/make_edible()
. = ..()
AddComponent(/datum/component/edible, check_liked = CALLBACK(src, PROC_REF(check_liked)))

///Eat it right, or you die.
/obj/item/food/sandwich/death/proc/check_liked(fraction, mob/living/carbon/human/consumer)
/// Closest thing to a mullet we have
if(consumer.hairstyle == "Gelled Back" && istype(consumer.get_item_by_slot(ITEM_SLOT_ICLOTHING), /obj/item/clothing/under/rank/civilian/cookjorts))
return FOOD_LIKED
// I thought it didn't make sense for it to instantly kill you, so instead enjoy shitloads of toxin damage per bite.
balloon_alert(consumer, "ate it wrong!")
consumer.infect_disease_predefined(DISEASE_SANDWICH, TRUE) //Monkestation Edit: Pathology (drinking anacea is still the only cure)

/obj/item/food/sandwich/death/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] starts to shove [src] down [user.p_their()] throat the wrong way. It looks like [user.p_theyre()] trying to commit suicide!"))
qdel(src)
user.gib(TRUE, TRUE, TRUE)
return MANUAL_SUICIDE
17 changes: 17 additions & 0 deletions code/game/objects/items/granters/crafting/death_sandwich.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/obj/item/book/granter/crafting_recipe/death_sandwich
name = "\improper SANDWICH OF DEATH SECRET RECIPE"
desc = "An ancient composition notebook with the instructions for an ancient and ultimate sandwich scrawled upon its looseleaf pages. The title has been scrawled onto it with permanent marker."
crafting_recipe_types = list(
/datum/crafting_recipe/food/death_sandwich
)
icon_state = "cooking_learning_sandwich"
remarks = list(
"A meatball sub, but what makes it so special?",
"I just need to grease back my hair...?",
"What kind of ancient civilization wore jorts?",
"So it DOES matter what angle you fold the salami in...",
)

/obj/item/book/granter/crafting_recipe/death_sandwich/recoil(mob/living/user)
to_chat(user, span_warning("The book comically explodes in your hands, leaving no trace."))
qdel(src)
9 changes: 6 additions & 3 deletions code/modules/food_and_drinks/machinery/stove.dm
Original file line number Diff line number Diff line change
Expand Up @@ -132,11 +132,12 @@
balloon_alert(user, "can't add that!")
return TRUE

var/atom/balloon_loc = ismachinery(loc) ? loc : src
// Ensures that faceatom works correctly, since we can can often be in another atom's loc (a stove)
var/atom/movable/balloon_loc = ismovable(loc) ? loc : src
balloon_loc.balloon_alert(user, "ingredient added")
user.face_atom(balloon_loc)
LAZYADD(added_ingredients, attacking_item)

LAZYADD(added_ingredients, attacking_item)
update_appearance(UPDATE_OVERLAYS)
return TRUE

Expand All @@ -147,7 +148,9 @@
var/obj/item/removed = added_ingredients[1]
removed.forceMove(get_turf(src))
user.put_in_hands(removed)
var/atom/balloon_loc = ismachinery(loc) ? loc : src

// Ensures that faceatom works correctly, since we can can often be in another atom's loc (a stove)
var/atom/movable/balloon_loc = ismovable(loc) ? loc : src
balloon_loc.balloon_alert(user, "ingredient removed")
user.face_atom(balloon_loc)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,3 +178,6 @@
results = list(/datum/reagent/consumable/mississippi_queen = 50)
required_reagents = list(/datum/reagent/consumable/tomatojuice = 15, /datum/reagent/consumable/mayonnaise = 10, /datum/reagent/consumable/soysauce = 5, /datum/reagent/consumable/vinegar = 2, /datum/reagent/consumable/capsaicin = 10, /datum/reagent/consumable/coco = 2)

/datum/chemical_reaction/drink/t_letter
results = list(/datum/reagent/consumable/t_letter = 2)
required_reagents = list(/datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/tea = 1)
Loading

0 comments on commit b9bce7b

Please sign in to comment.