From 649528bf6bb2af318b91c4b6fb39298745eeb69d Mon Sep 17 00:00:00 2001
From: SkyratBot <59378654+SkyratBot@users.noreply.github.com>
Date: Sun, 6 Sep 2020 06:05:26 +0200
Subject: [PATCH] [MIRROR] Gives the Chef a Beacon to pick their ingredient box
(#670)
* Gives the Chef a Beacon to pick their ingredient box (#53146)
* adds ingredients beacon
* starts the chef off with an ingredient beacon instead of a box
* Update boxes.dm
* Revert "Update boxes.dm"
This reverts commit b89fadab042cfd2a7323012b315d201bc3965b50.
* optimizes the list thingy (thank you, Floyd)
* Fixes a typo in one of the comments
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* fixes a definition
* moves ingredient box/beacon code to miscellaneous instead of boxes
* adds the random option
* adds a cute little bit of 'flavor' text... get it?
* Revert "adds a cute little bit of 'flavor' text... get it?"
This reverts commit a6541bf22084d82e6f22bf2aa7589b88c879e564.
* adds references to a new company and a bit of fun text
* moves randomFood out of the for loop
* Revert "moves randomFood out of the for loop"
This reverts commit e2c5171fced08607af91b73317809e755d1d14dc.
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Gives the Chef a Beacon to pick their ingredient box
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
---
code/game/objects/items/miscellaneous.dm | 173 ++++++++++++++++++++++-
code/game/objects/items/storage/boxes.dm | 140 ------------------
code/modules/jobs/job_types/cook.dm | 10 +-
3 files changed, 176 insertions(+), 147 deletions(-)
diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm
index fcf2793596c..cb5c6874786 100644
--- a/code/game/objects/items/miscellaneous.dm
+++ b/code/game/objects/items/miscellaneous.dm
@@ -51,10 +51,9 @@
to_chat(M, "[uses] use[uses > 1 ? "s" : ""] remaining on the [src].")
/obj/item/choice_beacon/proc/spawn_option(obj/choice,mob/living/M)
- var/obj/new_item = new choice()
var/obj/structure/closet/supplypod/bluespacepod/pod = new()
+ new choice(pod)
pod.explosionSize = list(0,0,0,0)
- new_item.forceMove(pod)
var/msg = "After making your selection, you notice a strange target on the ground. It might be best to step back!"
if(ishuman(M))
var/mob/living/carbon/human/H = M
@@ -64,6 +63,172 @@
new /obj/effect/pod_landingzone(get_turf(src), pod)
+/obj/item/choice_beacon/ingredient
+ name = "ingredient delivery beacon"
+ desc = "Summon a box of ingredients to help you get started cooking."
+ icon_state = "gangtool-white"
+
+/obj/item/choice_beacon/ingredient/generate_display_names()
+ var/list/ingredients = list()
+ for(var/V in subtypesof(/obj/item/storage/box/ingredients))
+ var/obj/item/storage/box/ingredients/A = V
+ ingredients[initial(A.theme_name)] = A
+ return ingredients
+
+/obj/item/choice_beacon/ingredient/spawn_option(obj/choice,mob/living/M)
+ new choice(get_turf(M))
+ to_chat(M, "You hear something crackle from the beacon for a moment before a voice speaks. \"Please stand by for a message from Sophronia Broadcasting. Message as follows: Please enjoy your Sophronia Broadcasting's 'Plasteel Chef' Ingredients Box, exactly as shown in the hit show! Message ends.\"")
+
+/obj/item/storage/box/ingredients //This box is for the randomly chosen version the chef used to spawn with, it shouldn't actually exist.
+ name = "ingredients box"
+ illustration = "fruit"
+ var/theme_name
+
+/obj/item/storage/box/ingredients/Initialize()
+ . = ..()
+ if(theme_name)
+ name = "[name] ([theme_name])"
+ desc = "A box containing supplementary ingredients for the aspiring chef. The box's theme is '[theme_name]'."
+ inhand_icon_state = "syringe_kit"
+
+/obj/item/storage/box/ingredients/wildcard
+ theme_name = "wildcard"
+
+/obj/item/storage/box/ingredients/wildcard/PopulateContents()
+ for(var/i in 1 to 7)
+ var/randomFood = pick(/obj/item/reagent_containers/food/snacks/grown/chili,
+ /obj/item/reagent_containers/food/snacks/grown/tomato,
+ /obj/item/reagent_containers/food/snacks/grown/carrot,
+ /obj/item/reagent_containers/food/snacks/grown/potato,
+ /obj/item/reagent_containers/food/snacks/grown/potato/sweet,
+ /obj/item/reagent_containers/food/snacks/grown/apple,
+ /obj/item/reagent_containers/food/snacks/chocolatebar,
+ /obj/item/reagent_containers/food/snacks/grown/cherries,
+ /obj/item/reagent_containers/food/snacks/grown/banana,
+ /obj/item/reagent_containers/food/snacks/grown/cabbage,
+ /obj/item/reagent_containers/food/snacks/grown/soybeans,
+ /obj/item/reagent_containers/food/snacks/grown/corn,
+ /obj/item/reagent_containers/food/snacks/grown/mushroom/plumphelmet,
+ /obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle)
+ new randomFood(src)
+
+/obj/item/storage/box/ingredients/fiesta
+ theme_name = "fiesta"
+
+/obj/item/storage/box/ingredients/fiesta/PopulateContents()
+ new /obj/item/reagent_containers/food/snacks/tortilla(src)
+ for(var/i in 1 to 2)
+ new /obj/item/reagent_containers/food/snacks/grown/corn(src)
+ new /obj/item/reagent_containers/food/snacks/grown/soybeans(src)
+ new /obj/item/reagent_containers/food/snacks/grown/chili(src)
+
+/obj/item/storage/box/ingredients/italian
+ theme_name = "italian"
+
+/obj/item/storage/box/ingredients/italian/PopulateContents()
+ for(var/i in 1 to 3)
+ new /obj/item/reagent_containers/food/snacks/grown/tomato(src)
+ new /obj/item/reagent_containers/food/snacks/meatball(src)
+ new /obj/item/reagent_containers/food/drinks/bottle/wine(src)
+
+/obj/item/storage/box/ingredients/vegetarian
+ theme_name = "vegetarian"
+
+/obj/item/storage/box/ingredients/vegetarian/PopulateContents()
+ for(var/i in 1 to 2)
+ new /obj/item/reagent_containers/food/snacks/grown/carrot(src)
+ new /obj/item/reagent_containers/food/snacks/grown/eggplant(src)
+ new /obj/item/reagent_containers/food/snacks/grown/potato(src)
+ new /obj/item/reagent_containers/food/snacks/grown/apple(src)
+ new /obj/item/reagent_containers/food/snacks/grown/corn(src)
+ new /obj/item/reagent_containers/food/snacks/grown/tomato(src)
+
+/obj/item/storage/box/ingredients/american
+ theme_name = "american"
+
+/obj/item/storage/box/ingredients/american/PopulateContents()
+ for(var/i in 1 to 2)
+ new /obj/item/reagent_containers/food/snacks/grown/potato(src)
+ new /obj/item/reagent_containers/food/snacks/grown/tomato(src)
+ new /obj/item/reagent_containers/food/snacks/grown/corn(src)
+ new /obj/item/reagent_containers/food/snacks/meatball(src)
+
+/obj/item/storage/box/ingredients/fruity
+ theme_name = "fruity"
+
+/obj/item/storage/box/ingredients/fruity/PopulateContents()
+ for(var/i in 1 to 2)
+ new /obj/item/reagent_containers/food/snacks/grown/apple(src)
+ new /obj/item/reagent_containers/food/snacks/grown/citrus/orange(src)
+ new /obj/item/reagent_containers/food/snacks/grown/citrus/lemon(src)
+ new /obj/item/reagent_containers/food/snacks/grown/citrus/lime(src)
+ new /obj/item/reagent_containers/food/snacks/grown/watermelon(src)
+
+/obj/item/storage/box/ingredients/sweets
+ theme_name = "sweets"
+
+/obj/item/storage/box/ingredients/sweets/PopulateContents()
+ for(var/i in 1 to 2)
+ new /obj/item/reagent_containers/food/snacks/grown/cherries(src)
+ new /obj/item/reagent_containers/food/snacks/grown/banana(src)
+ new /obj/item/reagent_containers/food/snacks/chocolatebar(src)
+ new /obj/item/reagent_containers/food/snacks/grown/cocoapod(src)
+ new /obj/item/reagent_containers/food/snacks/grown/apple(src)
+
+/obj/item/storage/box/ingredients/delights
+ theme_name = "delights"
+
+/obj/item/storage/box/ingredients/delights/PopulateContents()
+ for(var/i in 1 to 2)
+ new /obj/item/reagent_containers/food/snacks/grown/potato/sweet(src)
+ new /obj/item/reagent_containers/food/snacks/grown/bluecherries(src)
+ new /obj/item/reagent_containers/food/snacks/grown/vanillapod(src)
+ new /obj/item/reagent_containers/food/snacks/grown/cocoapod(src)
+ new /obj/item/reagent_containers/food/snacks/grown/berries(src)
+
+/obj/item/storage/box/ingredients/grains
+ theme_name = "grains"
+
+/obj/item/storage/box/ingredients/grains/PopulateContents()
+ for(var/i in 1 to 3)
+ new /obj/item/reagent_containers/food/snacks/grown/oat(src)
+ new /obj/item/reagent_containers/food/snacks/grown/wheat(src)
+ new /obj/item/reagent_containers/food/snacks/grown/cocoapod(src)
+ new /obj/item/reagent_containers/honeycomb(src)
+ new /obj/item/seeds/poppy(src)
+
+/obj/item/storage/box/ingredients/carnivore
+ theme_name = "carnivore"
+
+/obj/item/storage/box/ingredients/carnivore/PopulateContents()
+ new /obj/item/reagent_containers/food/snacks/meat/slab/bear(src)
+ new /obj/item/reagent_containers/food/snacks/meat/slab/spider(src)
+ new /obj/item/reagent_containers/food/snacks/spidereggs(src)
+ new /obj/item/reagent_containers/food/snacks/carpmeat(src)
+ new /obj/item/reagent_containers/food/snacks/meat/slab/xeno(src)
+ new /obj/item/reagent_containers/food/snacks/meat/slab/corgi(src)
+ new /obj/item/reagent_containers/food/snacks/meatball(src)
+
+/obj/item/storage/box/ingredients/exotic
+ theme_name = "exotic"
+
+/obj/item/storage/box/ingredients/exotic/PopulateContents()
+ for(var/i in 1 to 2)
+ new /obj/item/reagent_containers/food/snacks/carpmeat(src)
+ new /obj/item/reagent_containers/food/snacks/grown/soybeans(src)
+ new /obj/item/reagent_containers/food/snacks/grown/cabbage(src)
+ new /obj/item/reagent_containers/food/snacks/grown/chili(src)
+
+/obj/item/storage/box/ingredients/random
+ theme_name = "random"
+ desc = "This box should not exist, contact the proper authorities."
+
+/obj/item/storage/box/ingredients/random/Initialize()
+ .=..()
+ var/chosen_box = pick(subtypesof(/obj/item/storage/box/ingredients) - /obj/item/storage/box/ingredients/random)
+ new chosen_box(loc)
+ return INITIALIZE_HINT_QDEL
+
/obj/item/choice_beacon/hero
name = "heroic beacon"
desc = "To summon heroes from the past to protect the future."
@@ -78,6 +243,10 @@
hero_item_list[initial(A.name)] = A
return hero_item_list
+/obj/item/choice_beacon/hero/spawn_option(obj/choice,mob/living/M)
+ new choice(get_turf(M))
+ to_chat(M, "You hear something crackle from the beacon for a moment before a voice speaks. \"Please stand by for a message from Sophronia Broadcasting. Message as follows: Please enjoy your Sophronia Broadcasting's 'History Comes Alive branded' Costume Set, exactly as shown in the hit show! Message ends.\"")
+
/obj/item/storage/box/hero
name = "Courageous Tomb Raider - 1940's."
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index f7bae8b357b..59866214ebe 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -962,146 +962,6 @@
for(var/i in 1 to 7)
new /obj/item/reagent_containers/food/snacks/meat/slab(src)
-/obj/item/storage/box/ingredients //This box is for the randomely chosen version the chef spawns with, it shouldn't actually exist.
- name = "ingredients box"
- illustration = "fruit"
- var/theme_name
-
-/obj/item/storage/box/ingredients/Initialize()
- . = ..()
- if(theme_name)
- name = "[name] ([theme_name])"
- desc = "A box containing supplementary ingredients for the aspiring chef. The box's theme is '[theme_name]'."
- inhand_icon_state = "syringe_kit"
-
-/obj/item/storage/box/ingredients/wildcard
- theme_name = "wildcard"
-
-/obj/item/storage/box/ingredients/wildcard/PopulateContents()
- for(var/i in 1 to 7)
- var/randomFood = pick(/obj/item/reagent_containers/food/snacks/grown/chili,
- /obj/item/reagent_containers/food/snacks/grown/tomato,
- /obj/item/reagent_containers/food/snacks/grown/carrot,
- /obj/item/reagent_containers/food/snacks/grown/potato,
- /obj/item/reagent_containers/food/snacks/grown/potato/sweet,
- /obj/item/reagent_containers/food/snacks/grown/apple,
- /obj/item/reagent_containers/food/snacks/chocolatebar,
- /obj/item/reagent_containers/food/snacks/grown/cherries,
- /obj/item/reagent_containers/food/snacks/grown/banana,
- /obj/item/reagent_containers/food/snacks/grown/cabbage,
- /obj/item/reagent_containers/food/snacks/grown/soybeans,
- /obj/item/reagent_containers/food/snacks/grown/corn,
- /obj/item/reagent_containers/food/snacks/grown/mushroom/plumphelmet,
- /obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle)
- new randomFood(src)
-
-/obj/item/storage/box/ingredients/fiesta
- theme_name = "fiesta"
-
-/obj/item/storage/box/ingredients/fiesta/PopulateContents()
- new /obj/item/reagent_containers/food/snacks/tortilla(src)
- for(var/i in 1 to 2)
- new /obj/item/reagent_containers/food/snacks/grown/corn(src)
- new /obj/item/reagent_containers/food/snacks/grown/soybeans(src)
- new /obj/item/reagent_containers/food/snacks/grown/chili(src)
-
-/obj/item/storage/box/ingredients/italian
- theme_name = "italian"
-
-/obj/item/storage/box/ingredients/italian/PopulateContents()
- for(var/i in 1 to 3)
- new /obj/item/reagent_containers/food/snacks/grown/tomato(src)
- new /obj/item/reagent_containers/food/snacks/meatball(src)
- new /obj/item/reagent_containers/food/drinks/bottle/wine(src)
-
-/obj/item/storage/box/ingredients/vegetarian
- theme_name = "vegetarian"
-
-/obj/item/storage/box/ingredients/vegetarian/PopulateContents()
- for(var/i in 1 to 2)
- new /obj/item/reagent_containers/food/snacks/grown/carrot(src)
- new /obj/item/reagent_containers/food/snacks/grown/eggplant(src)
- new /obj/item/reagent_containers/food/snacks/grown/potato(src)
- new /obj/item/reagent_containers/food/snacks/grown/apple(src)
- new /obj/item/reagent_containers/food/snacks/grown/corn(src)
- new /obj/item/reagent_containers/food/snacks/grown/tomato(src)
-
-/obj/item/storage/box/ingredients/american
- theme_name = "american"
-
-/obj/item/storage/box/ingredients/american/PopulateContents()
- for(var/i in 1 to 2)
- new /obj/item/reagent_containers/food/snacks/grown/potato(src)
- new /obj/item/reagent_containers/food/snacks/grown/tomato(src)
- new /obj/item/reagent_containers/food/snacks/grown/corn(src)
- new /obj/item/reagent_containers/food/snacks/meatball(src)
-
-/obj/item/storage/box/ingredients/fruity
- theme_name = "fruity"
-
-/obj/item/storage/box/ingredients/fruity/PopulateContents()
- for(var/i in 1 to 2)
- new /obj/item/reagent_containers/food/snacks/grown/apple(src)
- new /obj/item/reagent_containers/food/snacks/grown/citrus/orange(src)
- new /obj/item/reagent_containers/food/snacks/grown/citrus/lemon(src)
- new /obj/item/reagent_containers/food/snacks/grown/citrus/lime(src)
- new /obj/item/reagent_containers/food/snacks/grown/watermelon(src)
-
-/obj/item/storage/box/ingredients/sweets
- theme_name = "sweets"
-
-/obj/item/storage/box/ingredients/sweets/PopulateContents()
- for(var/i in 1 to 2)
- new /obj/item/reagent_containers/food/snacks/grown/cherries(src)
- new /obj/item/reagent_containers/food/snacks/grown/banana(src)
- new /obj/item/reagent_containers/food/snacks/chocolatebar(src)
- new /obj/item/reagent_containers/food/snacks/grown/cocoapod(src)
- new /obj/item/reagent_containers/food/snacks/grown/apple(src)
-
-/obj/item/storage/box/ingredients/delights
- theme_name = "delights"
-
-/obj/item/storage/box/ingredients/delights/PopulateContents()
- for(var/i in 1 to 2)
- new /obj/item/reagent_containers/food/snacks/grown/potato/sweet(src)
- new /obj/item/reagent_containers/food/snacks/grown/bluecherries(src)
- new /obj/item/reagent_containers/food/snacks/grown/vanillapod(src)
- new /obj/item/reagent_containers/food/snacks/grown/cocoapod(src)
- new /obj/item/reagent_containers/food/snacks/grown/berries(src)
-
-/obj/item/storage/box/ingredients/grains
- theme_name = "grains"
-
-/obj/item/storage/box/ingredients/grains/PopulateContents()
- for(var/i in 1 to 3)
- new /obj/item/reagent_containers/food/snacks/grown/oat(src)
- new /obj/item/reagent_containers/food/snacks/grown/wheat(src)
- new /obj/item/reagent_containers/food/snacks/grown/cocoapod(src)
- new /obj/item/reagent_containers/honeycomb(src)
- new /obj/item/seeds/poppy(src)
-
-/obj/item/storage/box/ingredients/carnivore
- theme_name = "carnivore"
-
-/obj/item/storage/box/ingredients/carnivore/PopulateContents()
- new /obj/item/reagent_containers/food/snacks/meat/slab/bear(src)
- new /obj/item/reagent_containers/food/snacks/meat/slab/spider(src)
- new /obj/item/reagent_containers/food/snacks/spidereggs(src)
- new /obj/item/reagent_containers/food/snacks/carpmeat(src)
- new /obj/item/reagent_containers/food/snacks/meat/slab/xeno(src)
- new /obj/item/reagent_containers/food/snacks/meat/slab/corgi(src)
- new /obj/item/reagent_containers/food/snacks/meatball(src)
-
-/obj/item/storage/box/ingredients/exotic
- theme_name = "exotic"
-
-/obj/item/storage/box/ingredients/exotic/PopulateContents()
- for(var/i in 1 to 2)
- new /obj/item/reagent_containers/food/snacks/carpmeat(src)
- new /obj/item/reagent_containers/food/snacks/grown/soybeans(src)
- new /obj/item/reagent_containers/food/snacks/grown/cabbage(src)
- new /obj/item/reagent_containers/food/snacks/grown/chili(src)
-
/obj/item/storage/box/emptysandbags
name = "box of empty sandbags"
illustration = "sandbag"
diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm
index 34d8ccfdd39..06c852e68eb 100644
--- a/code/modules/jobs/job_types/cook.dm
+++ b/code/modules/jobs/job_types/cook.dm
@@ -28,7 +28,10 @@
suit = /obj/item/clothing/suit/toggle/chef
head = /obj/item/clothing/head/chefhat
mask = /obj/item/clothing/mask/fakemoustache/italian
- backpack_contents = list(/obj/item/sharpener = 1)
+ backpack_contents = list(
+ /obj/item/sharpener = 1,
+ /obj/item/choice_beacon/ingredient = 1
+ )
/datum/outfit/job/cook/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
@@ -44,10 +47,7 @@
..()
if(visualsOnly)
return
- var/list/possible_boxes = subtypesof(/obj/item/storage/box/ingredients)
- var/chosen_box = pick(possible_boxes)
- var/obj/item/storage/box/I = new chosen_box(src)
- H.equip_to_slot_or_del(I,ITEM_SLOT_BACKPACK)
+
var/datum/martial_art/cqc/under_siege/justacook = new
justacook.teach(H)