diff --git a/baystation12.dme b/baystation12.dme
index ffe4612b3b..93e5a8e08a 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -451,7 +451,6 @@
#include "code\game\machinery\embedded_controller\embedded_program_base.dm"
#include "code\game\machinery\embedded_controller\simple_docking_controller.dm"
#include "code\game\machinery\kitchen\gibber.dm"
-#include "code\game\machinery\kitchen\juicer.dm"
#include "code\game\machinery\kitchen\microwave.dm"
#include "code\game\machinery\kitchen\processor.dm"
#include "code\game\machinery\kitchen\smartfridge.dm"
@@ -958,6 +957,7 @@
#include "code\modules\games\cards.dm"
#include "code\modules\genetics\side_effects.dm"
#include "code\modules\hydroponics\_hydro_setup.dm"
+#include "code\modules\hydroponics\grown.dm"
#include "code\modules\hydroponics\grown_inedible.dm"
#include "code\modules\hydroponics\seed.dm"
#include "code\modules\hydroponics\seed_datums.dm"
diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm
index d2c747dd5b..5852b956fb 100644
--- a/code/datums/recipe.dm
+++ b/code/datums/recipe.dm
@@ -34,11 +34,11 @@
* */
/datum/recipe
- var/list/reagents // example: = list("berryjuice" = 5) // do not list same reagent twice
- var/list/items // example: =list(/obj/item/weapon/crowbar, /obj/item/weapon/welder) // place /foo/bar before /foo
- var/result //example: = /obj/item/weapon/reagent_containers/food/snacks/donut/normal
- var/time = 100 // 1/10 part of second
-
+ var/list/reagents // example: = list("berryjuice" = 5) // do not list same reagent twice
+ var/list/items // example: = list(/obj/item/weapon/crowbar, /obj/item/weapon/welder) // place /foo/bar before /foo
+ var/list/fruit // example: = list("fruit" = 3)
+ var/result // example: = /obj/item/weapon/reagent_containers/food/snacks/donut/normal
+ var/time = 100 // 1/10 part of second
/datum/recipe/proc/check_reagents(var/datum/reagents/avail_reagents) //1=precisely, 0=insufficiently, -1=superfluous
. = 1
@@ -53,15 +53,31 @@
return -1
return .
+/datum/recipe/proc/check_fruit(var/obj/container)
+ if(!fruit)
+ . = 1
+ return 1
+
+ var/list/checklist = fruit.Copy()
+ for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in container)
+ if(!G.seed)
+ return
+ if(!G.seed.kitchen_tag || !checklist[G.seed.kitchen_tag] || checklist[G.seed.kitchen_tag] <= 0)
+ continue
+ checklist[G.seed.kitchen_tag]--
+
+ for(var/ktag in checklist)
+ if(checklist[ktag] && checklist[ktag] > 0)
+ . = -1
+ return -1
+ return .
+
/datum/recipe/proc/check_items(var/obj/container as obj) //1=precisely, 0=insufficiently, -1=superfluous
if (!items)
- if (locate(/obj/) in container)
- return -1
- else
- return 1
+ return 1
. = 1
var/list/checklist = items.Copy()
- for (var/obj/O in container)
+ for(var/obj/O in container)
var/found = 0
for (var/type in checklist)
if (istype(O,type))
@@ -100,7 +116,7 @@
exact = -1
var/list/datum/recipe/possible_recipes = new
for (var/datum/recipe/recipe in avaiable_recipes)
- if (recipe.check_reagents(obj.reagents)==exact && recipe.check_items(obj)==exact)
+ if (recipe.check_reagents(obj.reagents)==exact && recipe.check_items(obj)==exact && recipe.check_fruit(obj)==exact)
possible_recipes+=recipe
if (possible_recipes.len==0)
return null
diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm
index 14a86aed13..bcb3c7c7d1 100644
--- a/code/datums/supplypacks.dm
+++ b/code/datums/supplypacks.dm
@@ -53,9 +53,8 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/obj/item/weapon/reagent_containers/food/snacks/tofu,
/obj/item/weapon/reagent_containers/food/snacks/tofu,
/obj/item/weapon/reagent_containers/food/snacks/meat,
- /obj/item/weapon/reagent_containers/food/snacks/meat,
- /obj/item/weapon/reagent_containers/food/snacks/grown/banana,
- /obj/item/weapon/reagent_containers/food/snacks/grown/banana)
+ /obj/item/weapon/reagent_containers/food/snacks/meat
+ )
cost = 10
containertype = /obj/structure/closet/crate/freezer
containername = "Food crate"
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index ab7b57cb42..10f92f521d 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -24,17 +24,6 @@
var/mode = 1
w_class = 3.0
-/obj/item/weapon/bananapeel
- name = "banana peel"
- desc = "A peel from a banana."
- icon = 'icons/obj/items.dmi'
- icon_state = "banana_peel"
- item_state = "banana_peel"
- w_class = 2.0
- throwforce = 0
- throw_speed = 4
- throw_range = 20
-
/obj/item/weapon/soap
name = "soap"
desc = "A cheap bar of soap. Doesn't smell."
diff --git a/code/game/machinery/kitchen/juicer.dm b/code/game/machinery/kitchen/juicer.dm
deleted file mode 100644
index a5a15fb876..0000000000
--- a/code/game/machinery/kitchen/juicer.dm
+++ /dev/null
@@ -1,172 +0,0 @@
-
-/obj/machinery/juicer
- name = "Juicer"
- icon = 'icons/obj/kitchen.dmi'
- icon_state = "juicer1"
- layer = 2.9
- density = 0
- anchored = 0
- use_power = 1
- idle_power_usage = 5
- active_power_usage = 100
- var/obj/item/weapon/reagent_containers/beaker = null
- var/global/list/allowed_items = list (
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = "tomatojuice",
- /obj/item/weapon/reagent_containers/food/snacks/grown/carrot = "carrotjuice",
- /obj/item/weapon/reagent_containers/food/snacks/grown/berries = "berryjuice",
- /obj/item/weapon/reagent_containers/food/snacks/grown/banana = "banana",
- /obj/item/weapon/reagent_containers/food/snacks/grown/potato = "potato",
- /obj/item/weapon/reagent_containers/food/snacks/grown/lemon = "lemonjuice",
- /obj/item/weapon/reagent_containers/food/snacks/grown/orange = "orangejuice",
- /obj/item/weapon/reagent_containers/food/snacks/grown/lime = "limejuice",
- /obj/item/weapon/reagent_containers/food/snacks/watermelonslice = "watermelonjuice",
- /obj/item/weapon/reagent_containers/food/snacks/grown/grapes = "grapejuice",
- /obj/item/weapon/reagent_containers/food/snacks/grown/poisonberries = "poisonberryjuice",
- )
-
-/obj/machinery/juicer/New()
- beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
-
-/obj/machinery/juicer/update_icon()
- icon_state = "juicer"+num2text(!isnull(beaker))
- return
-
-
-/obj/machinery/juicer/attackby(var/obj/item/O as obj, var/mob/user as mob)
- if (istype(O,/obj/item/weapon/reagent_containers/glass) || \
- istype(O,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass))
- if (beaker)
- return 1
- else
- user.before_take_item(O)
- O.loc = src
- beaker = O
- src.verbs += /obj/machinery/juicer/verb/detach
- update_icon()
- src.updateUsrDialog()
- return 0
- if (!is_type_in_list(O, allowed_items))
- user << "It looks as not containing any juice."
- return 1
- user.before_take_item(O)
- O.loc = src
- src.updateUsrDialog()
- return 0
-
-/obj/machinery/juicer/attack_ai(mob/user as mob)
- return 0
-
-/obj/machinery/juicer/attack_hand(mob/user as mob)
- user.set_machine(src)
- interact(user)
-
-/obj/machinery/juicer/interact(mob/user as mob) // The microwave Menu
- var/is_chamber_empty = 0
- var/is_beaker_ready = 0
- var/processing_chamber = ""
- var/beaker_contents = ""
-
- for (var/i in allowed_items)
- for (var/obj/item/O in src.contents)
- if (!istype(O,i))
- continue
- processing_chamber+= "some [O]
"
- break
- if (!processing_chamber)
- is_chamber_empty = 1
- processing_chamber = "Nothing."
- if (!beaker)
- beaker_contents = "\The [src] has no beaker attached."
- else if (!beaker.reagents.total_volume)
- beaker_contents = "\The [src] has attached an empty beaker."
- is_beaker_ready = 1
- else if (beaker.reagents.total_volume < beaker.reagents.maximum_volume)
- beaker_contents = "\The [src] has attached a beaker with something."
- is_beaker_ready = 1
- else
- beaker_contents = "\The [src] has attached a beaker and beaker is full!"
-
- var/dat = {"
-Processing chamber contains:
-[processing_chamber]
-[beaker_contents]
-"}
- if (is_beaker_ready && !is_chamber_empty && !(stat & (NOPOWER|BROKEN)))
- dat += "Turn on!
"
- if (beaker)
- dat += "Detach a beaker!
"
- user << browse("Juicer[dat]", "window=juicer")
- onclose(user, "juicer")
- return
-
-
-/obj/machinery/juicer/Topic(href, href_list)
- if(..())
- return
- usr.set_machine(src)
- switch(href_list["action"])
- if ("juice")
- juice()
-
- if ("detach")
- detach()
- src.updateUsrDialog()
- return
-
-/obj/machinery/juicer/verb/detach()
- set category = "Object"
- set name = "Detach Beaker from the juicer"
- set src in oview(1)
- if (usr.stat != 0)
- return
- if (!beaker)
- return
- src.verbs -= /obj/machinery/juicer/verb/detach
- beaker.loc = src.loc
- beaker = null
- update_icon()
-
-/obj/machinery/juicer/proc/get_juice_id(var/obj/item/weapon/reagent_containers/food/snacks/grown/O)
- for (var/i in allowed_items)
- if (istype(O, i))
- return allowed_items[i]
-
-/obj/machinery/juicer/proc/get_juice_amount(var/obj/item/weapon/reagent_containers/food/snacks/grown/O)
- if (!istype(O))
- return 5
- else if (O.potency == -1)
- return 5
- else
- return round(5*sqrt(O.potency))
-
-/obj/machinery/juicer/proc/juice()
- power_change() //it is a portable machine
- if(stat & (NOPOWER|BROKEN))
- return
- if (!beaker || beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
- return
- playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1)
- for (var/obj/item/weapon/reagent_containers/food/snacks/O in src.contents)
- var/r_id = get_juice_id(O)
- beaker.reagents.add_reagent(r_id,get_juice_amount(O))
- del(O)
- if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
- break
-
-/obj/structure/closet/crate/juice
- New()
- ..()
- new/obj/machinery/juicer(src)
- new/obj/item/weapon/reagent_containers/food/snacks/grown/tomato(src)
- new/obj/item/weapon/reagent_containers/food/snacks/grown/carrot(src)
- new/obj/item/weapon/reagent_containers/food/snacks/grown/berries(src)
- new/obj/item/weapon/reagent_containers/food/snacks/grown/banana(src)
- new/obj/item/weapon/reagent_containers/food/snacks/grown/tomato(src)
- new/obj/item/weapon/reagent_containers/food/snacks/grown/carrot(src)
- new/obj/item/weapon/reagent_containers/food/snacks/grown/berries(src)
- new/obj/item/weapon/reagent_containers/food/snacks/grown/banana(src)
- new/obj/item/weapon/reagent_containers/food/snacks/grown/tomato(src)
- new/obj/item/weapon/reagent_containers/food/snacks/grown/carrot(src)
- new/obj/item/weapon/reagent_containers/food/snacks/grown/berries(src)
- new/obj/item/weapon/reagent_containers/food/snacks/grown/banana(src)
-
diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm
index 4af48a539b..45e32948b5 100644
--- a/code/game/machinery/kitchen/microwave.dm
+++ b/code/game/machinery/kitchen/microwave.dm
@@ -42,11 +42,11 @@
acceptable_reagents |= reagent
if (recipe.items)
max_n_of_items = max(max_n_of_items,recipe.items.len)
-
// This will do until I can think of a fun recipe to use dionaea in -
// will also allow anything using the holder item to be microwaved into
// impure carbon. ~Z
acceptable_items |= /obj/item/weapon/holder
+ acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown
/*******************
* Item Adding
diff --git a/code/game/machinery/kitchen/processor.dm b/code/game/machinery/kitchen/processor.dm
index 3b86ea400e..3f33d4d862 100644
--- a/code/game/machinery/kitchen/processor.dm
+++ b/code/game/machinery/kitchen/processor.dm
@@ -28,6 +28,7 @@
input = /obj/item/weapon/reagent_containers/food/snacks/meat
output = /obj/item/weapon/reagent_containers/food/snacks/meatball
+ /*
potato
input = /obj/item/weapon/reagent_containers/food/snacks/grown/potato
output = /obj/item/weapon/reagent_containers/food/snacks/rawsticks
@@ -43,6 +44,7 @@
wheat
input = /obj/item/weapon/reagent_containers/food/snacks/grown/wheat
output = /obj/item/weapon/reagent_containers/food/snacks/flour
+ */
spaghetti
input = /obj/item/weapon/reagent_containers/food/snacks/flour
diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm
index e96d036721..f89dd73d0e 100644
--- a/code/game/objects/items/weapons/gift_wrappaper.dm
+++ b/code/game/objects/items/weapons/gift_wrappaper.dm
@@ -99,8 +99,6 @@
/obj/item/toy/prize/seraph,
/obj/item/toy/spinningtoy,
/obj/item/toy/sword,
- /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,
- /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,
/obj/item/device/paicard,
/obj/item/device/violin,
/obj/item/weapon/storage/belt/utility/full,
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 71d50c1e8b..0626f6f5a7 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -662,7 +662,6 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/chaplain_hoodie(M), slot_wear_suit)
- M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(M), slot_r_store)
var/obj/item/weapon/card/id/W = new(M)
diff --git a/code/modules/distillery/main.dm b/code/modules/distillery/main.dm
index 049548a782..2d8fff4c00 100644
--- a/code/modules/distillery/main.dm
+++ b/code/modules/distillery/main.dm
@@ -1,60 +1,60 @@
-// This dreammaker file includes the food processing machines:
+//This dm file includes some food processing machines:
// - I. Mill
// - II. Fermenter
// - III. Still
// - IV. Squeezer
// - V. Centrifuge
+
+
// I. The mill is intended to be loaded with produce and returns ground up items. For example: Wheat should become flour and grapes should become raisins.
+
/obj/machinery/mill
- var/list/obj/item/weapon/reagent_containers/food/input = list()
+ var/list/obj/item/weapon/reagent_containers/food/input = list()
var/list/obj/item/weapon/reagent_containers/food/output = list()
var/obj/item/weapon/reagent_containers/food/milled_item
- var/busy = 0
+ var/busy = 0
var/progress = 0
- var/error = 0
+ var/error = 0
name = "\improper Mill"
desc = "It is a machine that grinds produce."
icon_state = "autolathe"
- density = 1
- anchored = 1
+ density = 1
+ anchored = 1
use_power = 1
- idle_power_usage = 10
+ idle_power_usage = 10
active_power_usage = 1000
/obj/machinery/mill/process()
- if (error)
+ if(error)
return
-
- if (!busy)
+
+ if(!busy)
use_power = 1
- if (input.len)
+ if(input.len)
milled_item = input[1]
input -= milled_item
progress = 0
busy = 1
use_power = 2
return
-
+
progress++
- if (progress < 10) // Edit this value to make milling faster or slower.
- return // Not done yet.
-
- switch (milled_item.type)
- if (/obj/item/weapon/reagent_containers/food/snacks/grown/wheat) // Wheat becomes flour.
- var/obj/item/weapon/reagent_containers/food/snacks/flour/F = new(src)
- output += F
- if (/obj/item/weapon/reagent_containers/food/snacks/flour) // Flour is still flour.
+ if(progress < 10) //Edit this value to make milling faster or slower
+ return //Not done yet.
+
+ switch(milled_item.type)
+ if(/obj/item/weapon/reagent_containers/food/snacks/flour) //Flour is still flour
var/obj/item/weapon/reagent_containers/food/snacks/flour/F = new(src)
output += F
else
error = 1
-
+
del(milled_item)
busy = 0
/obj/machinery/mill/attackby(var/obj/item/weapon/W as obj, mob/user as mob)
- if (istype(W,/obj/item/weapon/reagent_containers/food))
+ if(istype(W,/obj/item/weapon/reagent_containers/food))
user.u_equip(W)
W.loc = src
input += W
@@ -62,11 +62,17 @@
..()
/obj/machinery/mill/attack_hand(var/mob/user as mob)
- for (var/obj/item/weapon/reagent_containers/food/F in output)
+ for(var/obj/item/weapon/reagent_containers/food/F in output)
F.loc = src.loc
output -= F
+
+
+
+
+
// II. The fermenter is intended to be loaded with food items and returns medium-strength alcohol items, sucha s wine and beer.
+
/obj/machinery/fermenter
var/list/obj/item/weapon/reagent_containers/food/input = list()
var/list/obj/item/weapon/reagent_containers/food/output = list()
@@ -85,40 +91,40 @@
active_power_usage = 500
/obj/machinery/fermenter/process()
- if (error)
+ if(error)
return
-
- if (!busy)
+
+ if(!busy)
use_power = 1
- if (input.len)
+ if(input.len)
fermenting_item = input[1]
input -= fermenting_item
progress = 0
busy = 1
use_power = 2
return
-
- if (!water_level)
+
+ if(!water_level)
return
-
+
water_level--
-
+
progress++
- if (progress < 10) // Edit this value to make milling faster or slower.
- return // Not done yet.
-
- switch (fermenting_item.type)
- if (/obj/item/weapon/reagent_containers/food/snacks/flour) // Flour is still flour.
+ if(progress < 10) //Edit this value to make milling faster or slower
+ return //Not done yet.
+
+ switch(fermenting_item.type)
+ if(/obj/item/weapon/reagent_containers/food/snacks/flour) //Flour is still flour
var/obj/item/weapon/reagent_containers/food/drinks/cans/beer/B = new(src)
output += B
else
error = 1
-
+
del(fermenting_item)
busy = 0
/obj/machinery/fermenter/attackby(var/obj/item/weapon/W as obj, mob/user as mob)
- if (istype(W,/obj/item/weapon/reagent_containers/food))
+ if(istype(W,/obj/item/weapon/reagent_containers/food))
user.u_equip(W)
W.loc = src
input += W
@@ -126,57 +132,60 @@
..()
/obj/machinery/fermenter/attack_hand(var/mob/user as mob)
- for (var/obj/item/weapon/reagent_containers/food/F in output)
+ for(var/obj/item/weapon/reagent_containers/food/F in output)
F.loc = src.loc
output -= F
+
+
// III. The still is a machine that is loaded with food items and returns hard liquor, such as vodka.
+
/obj/machinery/still
- var/list/obj/item/weapon/reagent_containers/food/input = list()
+ var/list/obj/item/weapon/reagent_containers/food/input = list()
var/list/obj/item/weapon/reagent_containers/food/output = list()
- var/obj/item/weapon/reagent_containers/food/distilling_item
- var/busy = 0
+ var/obj/item/weapon/reagent_containers/food/destilling_item
+ var/busy = 0
var/progress = 0
- var/error = 0
+ var/error = 0
name = "\improper Still"
desc = "It is a machine that produces hard liquor from alcoholic drinks."
icon_state = "autolathe"
- density = 1
- anchored = 1
+ density = 1
+ anchored = 1
use_power = 1
idle_power_usage = 10
active_power_usage = 10000
/obj/machinery/still/process()
- if (error)
+ if(error)
return
-
- if (!busy)
+
+ if(!busy)
use_power = 1
- if (input.len)
- distilling_item = input[1]
- input -= distilling_item
+ if(input.len)
+ destilling_item = input[1]
+ input -= destilling_item
progress = 0
busy = 1
use_power = 2
return
-
+
progress++
- if (progress < 10) // Edit this value to make distilling faster or slower.
- return // Not done yet.
-
- switch (distilling_item.type)
- if (/obj/item/weapon/reagent_containers/food/drinks/cans/beer) // Flour is still flour.
+ if(progress < 10) //Edit this value to make distilling faster or slower
+ return //Not done yet.
+
+ switch(destilling_item.type)
+ if(/obj/item/weapon/reagent_containers/food/drinks/cans/beer) //Flour is still flour
var/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka/V = new(src)
output += V
else
error = 1
-
- del(distilling_item)
+
+ del(destilling_item)
busy = 0
/obj/machinery/still/attackby(var/obj/item/weapon/W as obj, mob/user as mob)
- if (istype(W,/obj/item/weapon/reagent_containers/food))
+ if(istype(W,/obj/item/weapon/reagent_containers/food))
user.u_equip(W)
W.loc = src
input += W
@@ -184,75 +193,84 @@
..()
/obj/machinery/still/attack_hand(var/mob/user as mob)
- for (var/obj/item/weapon/reagent_containers/food/F in output)
+ for(var/obj/item/weapon/reagent_containers/food/F in output)
F.loc = src.loc
output -= F
+
+
+
// IV. The squeezer is intended to destroy inserted food items, but return some of the reagents they contain.
+
/obj/machinery/squeezer
var/list/obj/item/weapon/reagent_containers/food/input = list()
var/obj/item/weapon/reagent_containers/food/squeezed_item
var/water_level = 0
- var/busy = 0
- var/progress = 0
- var/error = 0
+ var/busy = 0
+ var/progress = 0
+ var/error = 0
name = "\improper Squeezer"
desc = "It is a machine that squeezes extracts from produce."
icon_state = "autolathe"
- density = 1
- anchored = 1
+ density = 1
+ anchored = 1
use_power = 1
- idle_power_usage = 10
+ idle_power_usage = 10
active_power_usage = 500
+
+
+
+
// V. The centrifuge spins inserted food items. It is intended to squeeze out the reagents that are common food catalysts (enzymes currently)
+
/obj/machinery/centrifuge
var/list/obj/item/weapon/reagent_containers/food/input = list()
var/list/obj/item/weapon/reagent_containers/food/output = list()
var/obj/item/weapon/reagent_containers/food/spinning_item
- var/busy = 0
+ var/busy = 0
var/progress = 0
- var/error = 0
- var/enzymes = 0
- var/water = 0
+ var/error = 0
+ var/enzymes = 0
+ var/water = 0
name = "\improper Centrifuge"
desc = "It is a machine that spins produce."
icon_state = "autolathe"
- density = 1
- anchored = 1
+ density = 1
+ anchored = 1
use_power = 1
- idle_power_usage = 10
+ idle_power_usage = 10
active_power_usage = 10000
/obj/machinery/centrifuge/process()
- if (error)
+ if(error)
return
-
- if (!busy)
+
+ if(!busy)
use_power = 1
- if (input.len)
+ if(input.len)
spinning_item = input[1]
input -= spinning_item
progress = 0
busy = 1
use_power = 2
return
-
+
progress++
- if (progress < 10) // Edit this value to make milling faster or slower.
- return // Not done yet.
-
+ if(progress < 10) //Edit this value to make milling faster or slower
+ return //Not done yet.
+
var/transfer_enzymes = spinning_item.reagents.get_reagent_amount("enzyme")
-
- if (transfer_enzymes)
+
+ if(transfer_enzymes)
enzymes += transfer_enzymes
spinning_item.reagents.remove_reagent("enzyme",transfer_enzymes)
-
+
output += spinning_item
busy = 0
/obj/machinery/centrifuge/attackby(var/obj/item/weapon/W as obj, mob/user as mob)
- if (istype(W,/obj/item/weapon/reagent_containers/food))
+ if(istype(W,/obj/item/weapon/reagent_containers/food))
user.u_equip(W)
W.loc = src
input += W
@@ -260,9 +278,10 @@
..()
/obj/machinery/centrifuge/attack_hand(var/mob/user as mob)
- for (var/obj/item/weapon/reagent_containers/food/F in output)
+ for(var/obj/item/weapon/reagent_containers/food/F in output)
F.loc = src.loc
output -= F
- while (enzymes >= 50)
+ while(enzymes >= 50)
enzymes -= 50
new/obj/item/weapon/reagent_containers/food/condiment/enzyme(src.loc)
+
diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm
index 94ef9b3bdf..56aefbc718 100644
--- a/code/modules/food/recipes_microwave.dm
+++ b/code/modules/food/recipes_microwave.dm
@@ -34,24 +34,11 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/boiledegg
/datum/recipe/dionaroast
+ fruit = list("apple" = 1)
reagents = list("pacid" = 5) //It dissolves the carapace. Still poisonous, though.
- items = list(
- /obj/item/weapon/holder/diona,
- /obj/item/weapon/reagent_containers/food/snacks/grown/apple
- )
+ items = list(/obj/item/weapon/holder/diona)
result = /obj/item/weapon/reagent_containers/food/snacks/dionaroast
-
-/*
-/datum/recipe/bananaphone
- reagents = list("psilocybin" = 5) //Trippin' balls, man.
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/banana,
- /obj/item/device/radio
- )
- result = /obj/item/weapon/reagent_containers/food/snacks/bananaphone
-*/
-
/datum/recipe/jellydonut
reagents = list("berryjuice" = 5, "sugar" = 5)
items = list(
@@ -146,8 +133,7 @@ I said no!
/datum/recipe/clownburger
items = list(
/obj/item/weapon/reagent_containers/food/snacks/bun,
- /obj/item/clothing/mask/gas/clown_hat,
- /* /obj/item/weapon/reagent_containers/food/snacks/grown/banana, */
+ /obj/item/clothing/mask/gas/clown_hat
)
result = /obj/item/weapon/reagent_containers/food/snacks/clownburger
@@ -245,12 +231,12 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread
/datum/recipe/bananabread
+ fruit = list("banana" = 1)
reagents = list("milk" = 5, "sugar" = 15)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
- /obj/item/weapon/reagent_containers/food/snacks/dough,
- /obj/item/weapon/reagent_containers/food/snacks/grown/banana,
+ /obj/item/weapon/reagent_containers/food/snacks/dough
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread
@@ -271,19 +257,19 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/muffin
/datum/recipe/eggplantparm
+ fruit = list("eggplant" = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
- /obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
- /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant
- )
+ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge
+ )
result = /obj/item/weapon/reagent_containers/food/snacks/eggplantparm
/datum/recipe/soylenviridians
+ fruit = list("soybeans" = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
- /obj/item/weapon/reagent_containers/food/snacks/flour,
- /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans
+ /obj/item/weapon/reagent_containers/food/snacks/flour
)
result = /obj/item/weapon/reagent_containers/food/snacks/soylenviridians
@@ -298,14 +284,12 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/soylentgreen
/datum/recipe/carrotcake
+ fruit = list("carrot" = 3)
reagents = list("milk" = 5, "sugar" = 15)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
- /obj/item/weapon/reagent_containers/food/snacks/dough,
- /obj/item/weapon/reagent_containers/food/snacks/grown/carrot,
- /obj/item/weapon/reagent_containers/food/snacks/grown/carrot,
- /obj/item/weapon/reagent_containers/food/snacks/grown/carrot,
+ /obj/item/weapon/reagent_containers/food/snacks/dough
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake
@@ -351,25 +335,23 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/xemeatpie
/datum/recipe/pie
+ fruit = list("banana" = 1)
reagents = list("sugar" = 5)
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
- /obj/item/weapon/reagent_containers/food/snacks/grown/banana,
- )
+ items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough)
result = /obj/item/weapon/reagent_containers/food/snacks/pie
/datum/recipe/cherrypie
+ fruit = list("cherries" = 1)
reagents = list("sugar" = 10)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
- /obj/item/weapon/reagent_containers/food/snacks/grown/cherries,
)
result = /obj/item/weapon/reagent_containers/food/snacks/cherrypie
/datum/recipe/berryclafoutis
+ fruit = list("berries" = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
- /obj/item/weapon/reagent_containers/food/snacks/grown/berries,
)
result = /obj/item/weapon/reagent_containers/food/snacks/berryclafoutis
@@ -434,10 +416,8 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread
/datum/recipe/loadedbakedpotato
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/potato,
- /obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
- )
+ fruit = list("potato" = 1)
+ items = list(/obj/item/weapon/reagent_containers/food/snacks/cheesewedge)
result = /obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato
/datum/recipe/cheesyfries
@@ -448,17 +428,15 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/cheesyfries
/datum/recipe/cubancarp
+ fruit = list("chili" = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough,
- /obj/item/weapon/reagent_containers/food/snacks/grown/chili,
- /obj/item/weapon/reagent_containers/food/snacks/carpmeat,
+ /obj/item/weapon/reagent_containers/food/snacks/carpmeat
)
result = /obj/item/weapon/reagent_containers/food/snacks/cubancarp
/datum/recipe/popcorn
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/corn
- )
+ fruit = list("corn" = 1)
result = /obj/item/weapon/reagent_containers/food/snacks/popcorn
@@ -494,91 +472,69 @@ I said no!
/datum/recipe/meatsteak
reagents = list("sodiumchloride" = 1, "blackpepper" = 1)
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/meat
- )
+ items = list(/obj/item/weapon/reagent_containers/food/snacks/meat)
result = /obj/item/weapon/reagent_containers/food/snacks/meatsteak
/datum/recipe/syntisteak
reagents = list("sodiumchloride" = 1, "blackpepper" = 1)
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh
- )
+ items = list(/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh)
result = /obj/item/weapon/reagent_containers/food/snacks/meatsteak
/datum/recipe/pizzamargherita
+ fruit = list("tomato" = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
- /obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
+ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita
/datum/recipe/meatpizza
+ fruit = list("tomato" = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/meat,
- /obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
+ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza
/datum/recipe/syntipizza
+ fruit = list("tomato" = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,
/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,
/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,
- /obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
+ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza
/datum/recipe/mushroompizza
+ fruit = list("mushroom" = 5, "tomato" = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom,
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom,
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom,
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom,
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom,
- /obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
+ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza
/datum/recipe/vegetablepizza
+ fruit = list("eggplant" = 1, "carrot" = 1, "corn" = 1, "tomato" = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
- /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant,
- /obj/item/weapon/reagent_containers/food/snacks/grown/carrot,
- /obj/item/weapon/reagent_containers/food/snacks/grown/corn,
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
- /obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
+ /obj/item/weapon/reagent_containers/food/snacks/cheesewedge
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza
/datum/recipe/spacylibertyduff
- reagents = list("water" = 5, "vodka" = 5)
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,
- )
+ reagents = list("water" = 5, "vodka" = 5, "psilocybin" = 5)
result = /obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff
/datum/recipe/amanitajelly
- reagents = list("water" = 5, "vodka" = 5)
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita,
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita,
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita,
- )
+ reagents = list("water" = 5, "vodka" = 5, "amatoxin" = 5)
result = /obj/item/weapon/reagent_containers/food/snacks/amanitajelly
make_food(var/obj/container as obj)
var/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/being_cooked = ..(container)
@@ -586,30 +542,21 @@ I said no!
return being_cooked
/datum/recipe/meatballsoup
+ fruit = list("carrot" = 1, "potato" = 1)
reagents = list("water" = 10)
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/meatball ,
- /obj/item/weapon/reagent_containers/food/snacks/grown/carrot,
- /obj/item/weapon/reagent_containers/food/snacks/grown/potato,
- )
+ items = list(/obj/item/weapon/reagent_containers/food/snacks/meatball)
result = /obj/item/weapon/reagent_containers/food/snacks/meatballsoup
/datum/recipe/vegetablesoup
+ fruit = list("carrot" = 1, "potato" = 1, "corn" = 1, "eggplant" = 1)
reagents = list("water" = 10)
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/carrot,
- /obj/item/weapon/reagent_containers/food/snacks/grown/corn,
- /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant,
- /obj/item/weapon/reagent_containers/food/snacks/grown/potato,
- )
result = /obj/item/weapon/reagent_containers/food/snacks/vegetablesoup
/datum/recipe/nettlesoup
+ fruit = list("nettle" = 1, "potato" = 1)
reagents = list("water" = 10)
items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/nettle,
- /obj/item/weapon/reagent_containers/food/snacks/grown/potato,
- /obj/item/weapon/reagent_containers/food/snacks/egg,
+ /obj/item/weapon/reagent_containers/food/snacks/egg
)
result = /obj/item/weapon/reagent_containers/food/snacks/nettlesoup
@@ -618,33 +565,23 @@ I said no!
result= /obj/item/weapon/reagent_containers/food/snacks/wishsoup
/datum/recipe/hotchili
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/meat,
- /obj/item/weapon/reagent_containers/food/snacks/grown/chili,
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
- )
+ fruit = list("chili" = 1, "tomato" = 1)
+ items = list(/obj/item/weapon/reagent_containers/food/snacks/meat)
result = /obj/item/weapon/reagent_containers/food/snacks/hotchili
/datum/recipe/coldchili
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/meat,
- /obj/item/weapon/reagent_containers/food/snacks/grown/icepepper,
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
- )
+ fruit = list("icechili" = 1, "tomato" = 1)
+ items = list(/obj/item/weapon/reagent_containers/food/snacks/meat)
result = /obj/item/weapon/reagent_containers/food/snacks/coldchili
/datum/recipe/amanita_pie
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita,
- )
+ reagents = list("amatoxin" = 5)
+ items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough)
result = /obj/item/weapon/reagent_containers/food/snacks/amanita_pie
/datum/recipe/plump_pie
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet,
- )
+ fruit = list("plumphelmet" = 1)
+ items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough)
result = /obj/item/weapon/reagent_containers/food/snacks/plump_pie
/datum/recipe/spellburger
@@ -672,12 +609,8 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/bigbiteburger
/datum/recipe/enchiladas
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/cutlet,
- /obj/item/weapon/reagent_containers/food/snacks/grown/chili,
- /obj/item/weapon/reagent_containers/food/snacks/grown/chili,
- /obj/item/weapon/reagent_containers/food/snacks/grown/corn,
- )
+ fruit = list("chili" = 2, "corn" = 1)
+ items = list(/obj/item/weapon/reagent_containers/food/snacks/cutlet)
result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas
/datum/recipe/creamcheesebread
@@ -691,11 +624,11 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread
/datum/recipe/monkeysdelight
+ fruit = list("banana" = 1)
reagents = list("sodiumchloride" = 1, "blackpepper" = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
- /obj/item/weapon/reagent_containers/food/snacks/monkeycube,
- /obj/item/weapon/reagent_containers/food/snacks/grown/banana,
+ /obj/item/weapon/reagent_containers/food/snacks/monkeycube
)
result = /obj/item/weapon/reagent_containers/food/snacks/monkeysdelight
@@ -755,11 +688,8 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/grilledcheese
/datum/recipe/tomatosoup
+ fruit = list("tomato" = 2)
reagents = list("water" = 10)
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
- )
result = /obj/item/weapon/reagent_containers/food/snacks/tomatosoup
/datum/recipe/rofflewaffles
@@ -771,15 +701,9 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/rofflewaffles
/datum/recipe/stew
+ fruit = list("potato" = 1, "tomato" = 1, "carrot" = 1, "eggplant" = 1, "mushroom" = 1)
reagents = list("water" = 10)
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
- /obj/item/weapon/reagent_containers/food/snacks/meat,
- /obj/item/weapon/reagent_containers/food/snacks/grown/potato,
- /obj/item/weapon/reagent_containers/food/snacks/grown/carrot,
- /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant,
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom,
- )
+ items = list(/obj/item/weapon/reagent_containers/food/snacks/meat)
result = /obj/item/weapon/reagent_containers/food/snacks/stew
/datum/recipe/slimetoast
@@ -807,11 +731,10 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/milosoup
/datum/recipe/stewedsoymeat
+ fruit = list("carrot" = 1, "tomato" = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/soydope,
- /obj/item/weapon/reagent_containers/food/snacks/soydope,
- /obj/item/weapon/reagent_containers/food/snacks/grown/carrot,
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
+ /obj/item/weapon/reagent_containers/food/snacks/soydope
)
result = /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat
@@ -837,19 +760,14 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/ricepudding
/datum/recipe/pastatomato
+ fruit = list("tomato" = 2)
reagents = list("water" = 5)
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/spagetti,
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
- )
+ items = list(/obj/item/weapon/reagent_containers/food/snacks/spagetti)
result = /obj/item/weapon/reagent_containers/food/snacks/pastatomato
/datum/recipe/poppypretzel
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/poppy,
- /obj/item/weapon/reagent_containers/food/snacks/dough,
- )
+ fruit = list("poppy" = 1)
+ items = list(/obj/item/weapon/reagent_containers/food/snacks/dough)
result = /obj/item/weapon/reagent_containers/food/snacks/poppypretzel
/datum/recipe/meatballspagetti
@@ -873,39 +791,34 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/spesslaw
/datum/recipe/superbiteburger
+ fruit = list("tomato" = 1)
reagents = list("sodiumchloride" = 5, "blackpepper" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger,
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/meat,
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
/obj/item/weapon/reagent_containers/food/snacks/boiledegg,
)
result = /obj/item/weapon/reagent_containers/food/snacks/superbiteburger
/datum/recipe/candiedapple
+ fruit = list("apple" = 1)
reagents = list("water" = 5, "sugar" = 5)
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/apple
- )
result = /obj/item/weapon/reagent_containers/food/snacks/candiedapple
/datum/recipe/applepie
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,
- /obj/item/weapon/reagent_containers/food/snacks/grown/apple,
- )
+ fruit = list("apple" = 1)
+ items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough)
result = /obj/item/weapon/reagent_containers/food/snacks/applepie
/datum/recipe/applecake
+ fruit = list("apple" = 2)
reagents = list("milk" = 5, "sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough,
/obj/item/weapon/reagent_containers/food/snacks/dough,
- /obj/item/weapon/reagent_containers/food/snacks/dough,
- /obj/item/weapon/reagent_containers/food/snacks/grown/apple,
- /obj/item/weapon/reagent_containers/food/snacks/grown/apple,
+ /obj/item/weapon/reagent_containers/food/snacks/dough
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake
@@ -948,6 +861,7 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry
/datum/recipe/orangecake
+ fruit = list("orange" = 2)
reagents = list("milk" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
@@ -955,13 +869,12 @@ I said no!
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
- /obj/item/weapon/reagent_containers/food/snacks/egg,
- /obj/item/weapon/reagent_containers/food/snacks/grown/orange,
- /obj/item/weapon/reagent_containers/food/snacks/grown/orange,
+ /obj/item/weapon/reagent_containers/food/snacks/egg
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake
/datum/recipe/limecake
+ fruit = list("lime" = 2)
reagents = list("milk" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
@@ -969,13 +882,12 @@ I said no!
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
- /obj/item/weapon/reagent_containers/food/snacks/egg,
- /obj/item/weapon/reagent_containers/food/snacks/grown/lime,
- /obj/item/weapon/reagent_containers/food/snacks/grown/lime,
+ /obj/item/weapon/reagent_containers/food/snacks/egg
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake
/datum/recipe/lemoncake
+ fruit = list("lemon" = 2)
reagents = list("milk" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
@@ -983,9 +895,7 @@ I said no!
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/egg,
/obj/item/weapon/reagent_containers/food/snacks/egg,
- /obj/item/weapon/reagent_containers/food/snacks/egg,
- /obj/item/weapon/reagent_containers/food/snacks/grown/lemon,
- /obj/item/weapon/reagent_containers/food/snacks/grown/lemon,
+ /obj/item/weapon/reagent_containers/food/snacks/egg
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake
@@ -1004,11 +914,7 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake
/datum/recipe/bloodsoup
- reagents = list("blood" = 10)
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/bloodtomato,
- /obj/item/weapon/reagent_containers/food/snacks/grown/bloodtomato,
- )
+ reagents = list("blood" = 30)
result = /obj/item/weapon/reagent_containers/food/snacks/bloodsoup
/datum/recipe/slimesoup
@@ -1070,84 +976,61 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/mysterysoup
/datum/recipe/pumpkinpie
+ fruit = list("pumpkin" = 1)
reagents = list("milk" = 5, "sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
- /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin,
- /obj/item/weapon/reagent_containers/food/snacks/egg,
+ /obj/item/weapon/reagent_containers/food/snacks/egg
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie
/datum/recipe/plumphelmetbiscuit
+ fruit = list("plumphelmet" = 1)
reagents = list("water" = 5)
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/flour,
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet,
- )
+ items = list(/obj/item/weapon/reagent_containers/food/snacks/flour)
result = /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit
/datum/recipe/mushroomsoup
+ fruit = list("mushroom" = 1)
reagents = list("water" = 5, "milk" = 5)
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle,
- )
result = /obj/item/weapon/reagent_containers/food/snacks/mushroomsoup
/datum/recipe/chawanmushi
+ fruit = list("mushroom" = 1)
reagents = list("water" = 5, "soysauce" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/egg,
- /obj/item/weapon/reagent_containers/food/snacks/egg,
- /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle,
+ /obj/item/weapon/reagent_containers/food/snacks/egg
)
result = /obj/item/weapon/reagent_containers/food/snacks/chawanmushi
/datum/recipe/beetsoup
+ fruit = list("whitebeet" = 1, "cabbage" = 1)
reagents = list("water" = 10)
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet,
- /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage,
- )
result = /obj/item/weapon/reagent_containers/food/snacks/beetsoup
/datum/recipe/appletart
+ fruit = list("goldapple" = 1)
reagents = list("sugar" = 5, "milk" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
/obj/item/weapon/reagent_containers/food/snacks/flour,
- /obj/item/weapon/reagent_containers/food/snacks/egg,
- /obj/item/weapon/reagent_containers/food/snacks/grown/goldapple,
+ /obj/item/weapon/reagent_containers/food/snacks/egg
)
result = /obj/item/weapon/reagent_containers/food/snacks/appletart
/datum/recipe/tossedsalad
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage,
- /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage,
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
- /obj/item/weapon/reagent_containers/food/snacks/grown/carrot,
- /obj/item/weapon/reagent_containers/food/snacks/grown/apple,
- )
+ fruit = list("cabbage" = 2, "tomato" = 1, "carrot" = 1, "apple" = 1)
result = /obj/item/weapon/reagent_containers/food/snacks/tossedsalad
/datum/recipe/aesirsalad
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,
- /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,
- /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,
- /obj/item/weapon/reagent_containers/food/snacks/grown/goldapple,
- )
+ fruit = list("goldapple" = 1, "ambrosiadeus" = 1)
result = /obj/item/weapon/reagent_containers/food/snacks/aesirsalad
/datum/recipe/validsalad
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,
- /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,
- /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,
- /obj/item/weapon/reagent_containers/food/snacks/grown/potato,
- /obj/item/weapon/reagent_containers/food/snacks/meatball,
- )
+ fruit = list("potato" = 1, "ambrosia" = 3)
+ items = list(/obj/item/weapon/reagent_containers/food/snacks/meatball)
result = /obj/item/weapon/reagent_containers/food/snacks/validsalad
make_food(var/obj/container as obj)
var/obj/item/weapon/reagent_containers/food/snacks/validsalad/being_cooked = ..(container)
diff --git a/code/modules/hydroponics/_hydro_setup.dm b/code/modules/hydroponics/_hydro_setup.dm
index 05e4a8dae4..88467d920b 100644
--- a/code/modules/hydroponics/_hydro_setup.dm
+++ b/code/modules/hydroponics/_hydro_setup.dm
@@ -11,42 +11,41 @@
#define ALL_GENES list(GENE_PRODUCTS,GENE_CONSUMPTION,GENE_ENVIRONMENT,GENE_RESISTANCE,GENE_VIGOUR,GENE_PIGMENT)
//Definitions for traits (individual descriptors)
-#define TRAIT_PRODUCTS 1
-#define TRAIT_CHEMS 2
-#define TRAIT_EXUDE_GASSES 3
-#define TRAIT_ALTER_TEMP 4
-#define TRAIT_POTENCY 5
-#define TRAIT_HARVEST_REPEAT 6
-#define TRAIT_PRODUCES_POWER 7
-#define TRAIT_JUICY 8
-#define TRAIT_PRODUCT_ICON 9
-#define TRAIT_PLANT_ICON 10
-#define TRAIT_CONSUME_GASSES 11
-#define TRAIT_REQUIRES_NUTRIENTS 12
-#define TRAIT_NUTRIENT_CONSUMPTION 13
-#define TRAIT_REQUIRES_WATER 14
-#define TRAIT_WATER_CONSUMPTION 15
-#define TRAIT_CARNIVOROUS 16
-#define TRAIT_PARASITE 17
-#define TRAIT_STINGS 18
-#define TRAIT_IDEAL_HEAT 19
-#define TRAIT_HEAT_TOLERANCE 20
-#define TRAIT_IDEAL_LIGHT 21
-#define TRAIT_LIGHT_TOLERANCE 22
-#define TRAIT_LOWKPA_TOLERANCE 23
-#define TRAIT_HIGHKPA_TOLERANCE 24
-#define TRAIT_EXPLOSIVE 25
-#define TRAIT_TOXINS_TOLERANCE 26
-#define TRAIT_PEST_TOLERANCE 27
-#define TRAIT_WEED_TOLERANCE 28
-#define TRAIT_ENDURANCE 29
-#define TRAIT_YIELD 30
-#define TRAIT_SPREAD 31
-#define TRAIT_MATURATION 32
-#define TRAIT_PRODUCTION 33
-#define TRAIT_TELEPORTING 34
-#define TRAIT_PLANT_COLOUR 35
-#define TRAIT_PRODUCT_COLOUR 36
-#define TRAIT_BIOLUM 37
-#define TRAIT_BIOLUM_COLOUR 38
-#define TRAIT_IMMUTABLE 39
\ No newline at end of file
+#define TRAIT_CHEMS 1
+#define TRAIT_EXUDE_GASSES 2
+#define TRAIT_ALTER_TEMP 3
+#define TRAIT_POTENCY 4
+#define TRAIT_HARVEST_REPEAT 5
+#define TRAIT_PRODUCES_POWER 6
+#define TRAIT_JUICY 7
+#define TRAIT_PRODUCT_ICON 8
+#define TRAIT_PLANT_ICON 0
+#define TRAIT_CONSUME_GASSES 10
+#define TRAIT_REQUIRES_NUTRIENTS 11
+#define TRAIT_NUTRIENT_CONSUMPTION 12
+#define TRAIT_REQUIRES_WATER 13
+#define TRAIT_WATER_CONSUMPTION 14
+#define TRAIT_CARNIVOROUS 15
+#define TRAIT_PARASITE 16
+#define TRAIT_STINGS 17
+#define TRAIT_IDEAL_HEAT 18
+#define TRAIT_HEAT_TOLERANCE 19
+#define TRAIT_IDEAL_LIGHT 20
+#define TRAIT_LIGHT_TOLERANCE 21
+#define TRAIT_LOWKPA_TOLERANCE 22
+#define TRAIT_HIGHKPA_TOLERANCE 23
+#define TRAIT_EXPLOSIVE 24
+#define TRAIT_TOXINS_TOLERANCE 25
+#define TRAIT_PEST_TOLERANCE 26
+#define TRAIT_WEED_TOLERANCE 27
+#define TRAIT_ENDURANCE 28
+#define TRAIT_YIELD 29
+#define TRAIT_SPREAD 30
+#define TRAIT_MATURATION 31
+#define TRAIT_PRODUCTION 32
+#define TRAIT_TELEPORTING 33
+#define TRAIT_PLANT_COLOUR 34
+#define TRAIT_PRODUCT_COLOUR 35
+#define TRAIT_BIOLUM 36
+#define TRAIT_BIOLUM_COLOUR 37
+#define TRAIT_IMMUTABLE 38
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index 9a53ba5a22..2b607f0509 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -2,8 +2,9 @@
/obj/item/weapon/reagent_containers/food/snacks/grown
name = "fruit"
- desc = "It's a fruit."
- icon = 'icons/obj/harvest.dmi'
+ //icon = 'icons/obj/harvest.dmi' //Todo convert to greyscale
+ icon = 'icons/obj/hydroponics_products.dmi'
+ desc = "The product of some kind of plant." //Todo store descs for retrieval.
var/plantname
var/datum/seed/seed
@@ -19,18 +20,29 @@
// Fill the object up with the appropriate reagents.
if(planttype)
plantname = planttype
- seed = seed_types[plantname]
- if(!seed || !seed.chems)
- return
- potency = seed.get_trait(TRAIT_POTENCY)
+ if(!plantname)
+ return
- for(var/rid in seed.chems)
- var/list/reagent_data = seed.chems[rid]
- var/rtotal = reagent_data[1]
- if(reagent_data.len > 1 && potency > 0)
- rtotal += round(potency/reagent_data[2])
- reagents.add_reagent(rid,max(1,rtotal))
+ seed = seed_types[plantname]
+ if(!seed)
+ return
+
+ name = "[seed.seed_name]"
+ icon_state = "[seed.get_trait(TRAIT_PRODUCT_ICON)]"
+ color = "[seed.get_trait(TRAIT_PRODUCT_COLOUR)]"
+
+ if(!seed.chems)
+ return
+
+ potency = seed.get_trait(TRAIT_POTENCY)
+
+ for(var/rid in seed.chems)
+ var/list/reagent_data = seed.chems[rid]
+ var/rtotal = reagent_data[1]
+ if(reagent_data.len > 1 && potency > 0)
+ rtotal += round(potency/reagent_data[2])
+ reagents.add_reagent(rid,max(1,rtotal))
if(reagents.total_volume > 0)
bitesize = 1+round(reagents.total_volume / 2, 1)
@@ -183,461 +195,10 @@
user.SetLuminosity(user.luminosity - seed.get_trait(TRAIT_BIOLUM))
SetLuminosity(seed.get_trait(TRAIT_BIOLUM))
-// Food object defines follow.
-/obj/item/weapon/reagent_containers/food/snacks/grown/corn
- name = "ear of corn"
- desc = "Needs some butter!"
- plantname = "corn"
- icon_state = "corn"
- potency = 40
- filling_color = "#FFEE00"
- trash = /obj/item/weapon/corncob
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/cherries
- name = "cherries"
- desc = "Great for toppings!"
- icon_state = "cherry"
- filling_color = "#FF0000"
- gender = PLURAL
- plantname = "cherry"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/poppy
- name = "poppy"
- desc = "Long-used as a symbol of rest, peace, and death."
- icon_state = "poppy"
- potency = 30
- filling_color = "#CC6464"
- plantname = "poppies"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/harebell
- name = "harebell"
- desc = "\"I'll sweeten thy sad grave: thou shalt not lack the flower that's like thy face, pale primrose, nor the azured hare-bell, like thy veins; no, nor the leaf of eglantine, whom not to slander, out-sweeten’d not thy breath.\""
- icon_state = "harebell"
- potency = 1
- filling_color = "#D4B2C9"
- plantname = "harebells"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/potato
- name = "potato"
- desc = "Boil 'em! Mash 'em! Stick 'em in a stew!"
- icon_state = "potato"
- potency = 25
- filling_color = "#E6E8DA"
- plantname = "potato"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/grapes
- name = "bunch of grapes"
- desc = "Nutritious!"
- icon_state = "grapes"
- filling_color = "#A332AD"
- plantname = "grapes"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/greengrapes
- name = "bunch of green grapes"
- desc = "Nutritious!"
- icon_state = "greengrapes"
- potency = 25
- filling_color = "#A6FFA3"
- plantname = "greengrapes"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/peanut
- name = "peanut"
- desc = "Nuts!"
- icon_state = "peanut"
- filling_color = "857e27"
- potency = 25
- plantname = "peanut"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/cabbage
- name = "cabbage"
- desc = "Ewwwwwwwwww. Cabbage."
- icon_state = "cabbage"
- potency = 25
- filling_color = "#A2B5A1"
- plantname = "cabbage"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/berries
- name = "bunch of berries"
- desc = "Nutritious!"
- icon_state = "berrypile"
- filling_color = "#C2C9FF"
- plantname = "berries"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/plastellium
- name = "clump of plastellium"
- desc = "Hmm, needs some processing"
- icon_state = "plastellium"
- filling_color = "#C4C4C4"
- plantname = "plastic"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/glowberries
- name = "bunch of glow-berries"
- desc = "Nutritious!"
- filling_color = "#D3FF9E"
- icon_state = "glowberrypile"
- plantname = "glowberries"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod
- name = "cocoa pod"
- desc = "Can be ground into cocoa powder."
- icon_state = "cocoapod"
- potency = 50
- filling_color = "#9C8E54"
- plantname = "cocoa"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane
- name = "sugarcane"
- desc = "Sickly sweet."
- icon_state = "sugarcane"
- potency = 50
- filling_color = "#C0C9AD"
- plantname = "sugarcane"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/poisonberries
- name = "bunch of poison-berries"
- desc = "Taste so good, you could die!"
- icon_state = "poisonberrypile"
- gender = PLURAL
- potency = 15
- filling_color = "#B422C7"
- plantname = "poisonberries"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/deathberries
- name = "bunch of death-berries"
- desc = "Taste so good, you could die!"
- icon_state = "deathberrypile"
- gender = PLURAL
- potency = 50
- filling_color = "#4E0957"
- plantname = "deathberries"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris
- name = "ambrosia vulgaris branch"
- desc = "This is a plant containing various healing chemicals."
- icon_state = "ambrosiavulgaris"
- potency = 10
- filling_color = "#125709"
- plantname = "ambrosia"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus
- name = "ambrosia deus branch"
- desc = "Eating this makes you feel immortal!"
- icon_state = "ambrosiadeus"
- potency = 10
- filling_color = "#229E11"
- plantname = "ambrosiadeus"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/apple
- name = "apple"
- desc = "It's a little piece of Eden."
- icon_state = "apple"
- potency = 15
- filling_color = "#DFE88B"
- plantname = "apple"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/apple/poisoned
- name = "apple"
- desc = "It's a little piece of Eden."
- icon_state = "apple"
- potency = 15
- filling_color = "#B3BD5E"
- plantname = "poisonapple"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/goldapple
- name = "golden apple"
- desc = "Emblazoned upon the apple is the word 'Kallisti'."
- icon_state = "goldapple"
- potency = 15
- filling_color = "#F5CB42"
- plantname = "goldapple"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon
- name = "watermelon"
- desc = "It's full of watery goodness."
- icon_state = "watermelon"
- potency = 10
- filling_color = "#FA2863"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/watermelonslice
- slices_num = 5
- plantname = "watermelon"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/lime
- name = "lime"
- desc = "It's so sour, your face will twist."
- icon_state = "lime"
- potency = 20
- filling_color = "#28FA59"
- plantname = "lime"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/lemon
- name = "lemon"
- desc = "When life gives you lemons, be grateful they aren't limes."
- icon_state = "lemon"
- potency = 20
- filling_color = "#FAF328"
- plantname = "lemon"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/orange
- name = "orange"
- desc = "It's a tangy fruit."
- icon_state = "orange"
- potency = 20
- filling_color = "#FAAD28"
- plantname = "orange"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet
- name = "white-beet"
- desc = "You can't beat white-beet."
- icon_state = "whitebeet"
- potency = 15
- filling_color = "#FFFCCC"
- plantname = "whitebeet"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/banana
- name = "banana"
- desc = "It's an excellent prop for a comedy."
- icon = 'icons/obj/items.dmi'
- icon_state = "banana"
- item_state = "banana"
- filling_color = "#FCF695"
- trash = /obj/item/weapon/bananapeel
- plantname = "banana"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/chili
- name = "chili"
- desc = "It's spicy! Wait... IT'S BURNING ME!!"
- icon_state = "chilipepper"
- filling_color = "#FF0000"
- plantname = "chili"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/eggplant
- name = "eggplant"
- desc = "Maybe there's a chicken inside?"
- icon_state = "eggplant"
- filling_color = "#550F5C"
- plantname = "eggplant"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans
- name = "soybeans"
- desc = "It's pretty bland, but oh the possibilities..."
- gender = PLURAL
- filling_color = "#E6E8B7"
- icon_state = "soybeans"
- plantname = "soybean"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato
- name = "tomato"
- desc = "I say to-mah-to, you say tom-mae-to."
- icon_state = "tomato"
- filling_color = "#FF0000"
- potency = 10
- plantname = "tomato"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/bloodtomato
- name = "blood-tomato"
- desc = "So juicy."
- icon_state = "bloodtomato"
- potency = 10
- filling_color = "#FF0000"
- plantname = "bloodtomato"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/bluetomato
- name = "blue-tomato"
- desc = "I say blue-mah-to, you say blue-mae-to."
- icon_state = "bluetomato"
- potency = 10
- filling_color = "#586CFC"
- plantname = "bluetomato"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/wheat
- name = "wheat"
- desc = "Sigh... wheat... a-grain?"
- gender = PLURAL
- icon_state = "wheat"
- filling_color = "#F7E186"
- plantname = "wheat"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/ricestalk
- name = "rice stalk"
- desc = "Rice to see you."
- gender = PLURAL
- icon_state = "rice"
- filling_color = "#FFF8DB"
- plantname = "rice"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod
- name = "kudzu pod"
- desc = "Pueraria Virallis: An invasive species with vines that rapidly creep and wrap around whatever they contact."
- icon_state = "kudzupod"
- filling_color = "#59691B"
- plantname = "kudzu"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/icepepper
- name = "ice-pepper"
- desc = "It's a mutant strain of chili"
- icon_state = "icepepper"
- potency = 20
- filling_color = "#66CEED"
- plantname = "icechili"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/carrot
- name = "carrot"
- desc = "It's good for the eyes!"
- icon_state = "carrot"
- potency = 10
- filling_color = "#FFC400"
- plantname = "carrot"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi
- name = "reishi"
- desc = "Ganoderma lucidum: A special fungus believed to help relieve stress."
- icon_state = "reishi"
- potency = 10
- filling_color = "#FF4800"
- plantname = "reishi"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita
- name = "fly amanita"
- desc = "Amanita Muscaria: Learn poisonous mushrooms by heart. Only pick mushrooms you know."
- icon_state = "amanita"
- potency = 10
- filling_color = "#FF0000"
- plantname = "amanita"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel
- name = "destroying angel"
- desc = "Amanita Virosa: Deadly poisonous basidiomycete fungus filled with alpha amatoxins."
- icon_state = "angel"
- potency = 35
- filling_color = "#FFDEDE"
- plantname = "destroyingangel"
+// Predefined types for placing on the map.
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap
- name = "liberty-cap"
- desc = "Psilocybe Semilanceata: Liberate yourself!"
- icon_state = "libertycap"
- potency = 15
- filling_color = "#F714BE"
plantname = "libertycap"
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet
- name = "plump-helmet"
- desc = "Plumus Hellmus: Plump, soft and s-so inviting~"
- icon_state = "plumphelmet"
- filling_color = "#F714BE"
- plantname = "plumphelmet"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom
- name = "walking mushroom"
- desc = "Plumus Locomotus: The beginning of the great walk."
- icon_state = "walkingmushroom"
- filling_color = "#FFBFEF"
- potency = 30
- plantname = "walkingmushroom"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle
- name = "chanterelle cluster"
- desc = "Cantharellus Cibarius: These jolly yellow little shrooms sure look tasty!"
- icon_state = "chanterelle"
- filling_color = "#FFE991"
- plantname = "mushrooms"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom
- name = "glowshroom cluster"
- desc = "Mycena Bregprox: This species of mushroom glows in the dark. Or does it?"
- icon_state = "glowshroom"
- filling_color = "#DAFF91"
- potency = 30
- plantname = "glowshroom"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/bluespacetomato
- name = "blue-space tomato"
- desc = "So lubricated, you might slip through space-time."
- icon_state = "bluespacetomato"
- potency = 20
- origin_tech = "bluespace=3"
- filling_color = "#91F8FF"
- plantname = "bluespacetomato"
-
-// Super special snowflake grown items below.
-/obj/item/weapon/reagent_containers/food/snacks/grown/shand
- name = "S'rendarr's Hand leaf"
- desc = "A leaf sample from a lowland thicket shrub. Smells strongly like wax."
- icon_state = "shand"
- filling_color = "#70C470"
- plantname = "shand"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mtear
- name = "sprig of Messa's Tear"
- desc = "A mountain climate herb with a soft, cold blue flower, known to contain an abundance of healing chemicals."
- icon_state = "mtear"
- filling_color = "#70C470"
- plantname = "mtear"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mtear/attack_self(mob/user as mob)
- if(istype(user.loc,/turf/space))
- return
- var/obj/item/stack/medical/ointment/tajaran/poultice = new /obj/item/stack/medical/ointment/tajaran(user.loc)
-
- poultice.heal_burn = potency
- del(src)
-
- user << "You mash the petals into a poultice."
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/shand/attack_self(mob/user as mob)
- if(istype(user.loc,/turf/space))
- return
- var/obj/item/stack/medical/bruise_pack/tajaran/poultice = new /obj/item/stack/medical/bruise_pack/tajaran(user.loc)
-
- poultice.heal_brute = potency
- del(src)
-
- user << "You mash the leaves into a poultice."
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin
- name = "pumpkin"
- desc = "It's large and scary."
- icon_state = "pumpkin"
- potency = 10
- filling_color = "#FAB728"
- plantname = "pumpkin"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/weapon/W as obj, mob/user as mob)
- ..()
- if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || istype(W, /obj/item/weapon/twohanded/fireaxe) || istype(W, /obj/item/weapon/kitchen/utensil/knife) || istype(W, /obj/item/weapon/kitchenknife) || istype(W, /obj/item/weapon/melee/energy))
- user.show_message("You carve a face into [src]!", 1)
- new /obj/item/clothing/head/pumpkinhead (user.loc)
- del(src)
- return
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/sunflower // FLOWER POWER!
- plantname = "sunflowers"
- name = "sunflower"
- desc = "A beautiful yellow flower."
- icon_state = "sunflower"
- damtype = "fire"
- force = 0
- throw_speed = 1
- throw_range = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/nettle
- plantname = "nettle"
- desc = "It's probably not wise to touch it with bare hands..."
- icon = 'icons/obj/weapons.dmi'
- name = "nettle"
- icon_state = "nettle"
- damtype = "fire"
- force = 15
- w_class = 2.0
- throw_speed = 1
- throw_range = 3
- origin_tech = "combat=1"
- attack_verb = list("stung")
- hitsound = ""
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/nettle/death
- plantname = "deathnettle"
- desc = "A cruel and toxic-looking plant."
- name = "deathnettle"
- icon_state = "deathnettle"
- origin_tech = "combat=3"
\ No newline at end of file
+/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris
+ plantname = "ambrosia"
diff --git a/code/modules/hydroponics/grown_inedible.dm b/code/modules/hydroponics/grown_inedible.dm
index 0ff345285a..3dc7a9429e 100644
--- a/code/modules/hydroponics/grown_inedible.dm
+++ b/code/modules/hydroponics/grown_inedible.dm
@@ -79,4 +79,15 @@
user << "You use [W] to fashion a pipe out of the corn cob!"
new /obj/item/clothing/mask/cigarette/pipe/cobpipe (user.loc)
del(src)
- return
\ No newline at end of file
+ return
+
+/obj/item/weapon/bananapeel
+ name = "banana peel"
+ desc = "A peel from a banana."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "banana_peel"
+ item_state = "banana_peel"
+ w_class = 2.0
+ throwforce = 0
+ throw_speed = 4
+ throw_range = 20
diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm
index e417c115dc..ee8c9612be 100644
--- a/code/modules/hydroponics/seed.dm
+++ b/code/modules/hydroponics/seed.dm
@@ -108,12 +108,13 @@ proc/populate_seed_list()
var/can_self_harvest = 0 // Mostly used for living mobs.
var/growth_stages = 0 // Number of stages the plant passes through before it is mature.
var/list/traits = list() // Initialized in New()
- var/list/products // Possible fruit/other product paths.
var/list/mutants // Possible predefined mutant varieties, if any.
var/list/chems // Chemicals that plant produces in products/injects into victim.
var/list/consume_gasses // The plant will absorb these gasses during its life.
var/list/exude_gasses // The plant will exude these gasses during its life.
var/splat_type = /obj/effect/decal/cleanable/fruit_smudge // Graffiti decal.
+ var/kitchen_tag // Used by the reagent grinder.
+ var/trash_type // Garbage item produced when eaten.
/datum/seed/New()
@@ -377,7 +378,6 @@ proc/populate_seed_list()
display_name = "strange plants" // TODO: name generator.
mysterious = 1
seed_noun = pick("spores","nodes","cuttings","seeds")
- products = list(pick(typesof(/obj/item/weapon/reagent_containers/food/snacks/grown)-/obj/item/weapon/reagent_containers/food/snacks/grown))
set_trait(TRAIT_POTENCY,rand(5,30),200,0)
set_trait(TRAIT_PRODUCT_ICON,pick(plant_product_sprites))
@@ -604,9 +604,6 @@ proc/populate_seed_list()
for(var/trait in list(TRAIT_YIELD, TRAIT_ENDURANCE))
if(get_trait(trait) > 0) set_trait(trait,get_trait(trait),null,1,0.85)
- if(!products) products = list()
- products |= gene.values["[TRAIT_PRODUCTS]"]
-
if(!chems) chems = list()
var/list/gene_value = gene.values["[TRAIT_CHEMS]"]
@@ -651,7 +648,6 @@ proc/populate_seed_list()
switch(genetype)
if(GENE_PRODUCTS)
- P.values["[TRAIT_PRODUCTS]"] = products
P.values["[TRAIT_CHEMS]"] = chems
P.values["[TRAIT_EXUDE_GASSES]"] = exude_gasses
traits_to_copy = list(TRAIT_ALTER_TEMP,TRAIT_POTENCY,TRAIT_HARVEST_REPEAT,TRAIT_PRODUCES_POWER,TRAIT_JUICY,TRAIT_PRODUCT_ICON,TRAIT_PLANT_ICON)
@@ -677,11 +673,7 @@ proc/populate_seed_list()
if(!user)
return
- var/got_product
- if(!isnull(products) && products.len && get_trait(TRAIT_YIELD) > 0)
- got_product = 1
-
- if(!force_amount && !got_product && !harvest_sample)
+ if(!force_amount && get_trait(TRAIT_YIELD) == 0 && !harvest_sample)
if(istype(user)) user << "You fail to harvest anything useful."
else
if(istype(user)) user << "You [harvest_sample ? "take a sample" : "harvest"] from the [display_name]."
@@ -712,9 +704,7 @@ proc/populate_seed_list()
currently_querying = list()
for(var/i = 0;i seed.get_trait(TRAIT_MATURATION)) && \
+ if((age > seed.get_trait(TRAIT_MATURATION)) && \
((age - lastproduce) > seed.get_trait(TRAIT_PRODUCTION)) && \
(!harvest && !dead))
harvest = 1
diff --git a/code/modules/hydroponics/trays/tray_tools.dm b/code/modules/hydroponics/trays/tray_tools.dm
index fb01f4d217..d4b1777e54 100644
--- a/code/modules/hydroponics/trays/tray_tools.dm
+++ b/code/modules/hydroponics/trays/tray_tools.dm
@@ -108,9 +108,6 @@
else if(grown_seed.get_trait(TRAIT_IMMUTABLE) > 0)
dat += "This plant does not possess genetics that are alterable.
"
- if(grown_seed.products && grown_seed.products.len)
- dat += "The mature plant will produce [grown_seed.products.len == 1 ? "fruit" : "[grown_seed.products.len] varieties of fruit"].
"
-
if(grown_seed.get_trait(TRAIT_REQUIRES_NUTRIENTS))
if(grown_seed.get_trait(TRAIT_NUTRIENT_CONSUMPTION) < 0.05)
dat += "It consumes a small amount of nutrient fluid.
"
diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
index 4442e8caf0..ca0b4e173a 100644
--- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
+++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
@@ -222,15 +222,18 @@ var/global/chicken_count = 0
chicken_count -= 1
/mob/living/simple_animal/chicken/attackby(var/obj/item/O as obj, var/mob/user as mob)
- if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown/wheat)) //feedin' dem chickens
- if(!stat && eggsleft < 8)
- user.visible_message("\blue [user] feeds [O] to [name]! It clucks happily.","\blue You feed [O] to [name]! It clucks happily.")
- user.drop_item()
- del(O)
- eggsleft += rand(1, 4)
- //world << eggsleft
+ if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown)) //feedin' dem chickens
+ var/obj/item/weapon/reagent_containers/food/snacks/grown/G = O
+ if(G.seed && G.seed.kitchen_tag == "wheat")
+ if(!stat && eggsleft < 8)
+ user.visible_message("\blue [user] feeds [O] to [name]! It clucks happily.","\blue You feed [O] to [name]! It clucks happily.")
+ user.drop_item()
+ del(O)
+ eggsleft += rand(1, 4)
+ else
+ user << "\blue [name] doesn't seem hungry!"
else
- user << "\blue [name] doesn't seem hungry!"
+ user << "[name] doesn't seem interested in that."
else
..()
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index 074c5dbce3..e7edbe2317 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -646,7 +646,7 @@
if(type in diseases) // Make sure this is a disease
D = new type(0, null)
var/list/data = list("viruses"=list(D))
- var/name = sanitize(copytext(input(usr,"Name:","Name the culture",D.name), 1, MAX_NAME_LEN))
+ var/name = sanitize(input(usr,"Name:","Name the culture",D.name))
if(!name || name == " ") name = D.name
B.name = "[name] culture bottle"
B.desc = "A small bottle. Contains [D.agent] culture in synthblood medium."
@@ -824,56 +824,6 @@
var/inuse = 0
var/obj/item/weapon/reagent_containers/beaker = null
var/limit = 10
- var/list/blend_items = list (
-
- //Sheets
- /obj/item/stack/sheet/mineral/phoron = list("phoron" = 20),
- /obj/item/stack/sheet/mineral/uranium = list("uranium" = 20),
- /obj/item/stack/sheet/mineral/silver = list("silver" = 20),
- /obj/item/stack/sheet/mineral/gold = list("gold" = 20),
- /obj/item/weapon/reagent_containers/food/snacks/grown/nettle/death = list("pacid" = 0),
- /obj/item/weapon/reagent_containers/food/snacks/grown/nettle = list("sacid" = 0),
-
- //Blender Stuff
- /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = list("soymilk" = 0),
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = list("ketchup" = 0),
- /obj/item/weapon/reagent_containers/food/snacks/grown/corn = list("cornoil" = 0),
- ///obj/item/weapon/reagent_containers/food/snacks/grown/wheat = list("flour" = -5),
- /obj/item/weapon/reagent_containers/food/snacks/grown/ricestalk = list("rice" = -5),
- /obj/item/weapon/reagent_containers/food/snacks/grown/cherries = list("cherryjelly" = 0),
- /obj/item/weapon/reagent_containers/food/snacks/grown/plastellium = list("plasticide" = 5),
-
-
- //archaeology!
- /obj/item/weapon/rocksliver = list("ground_rock" = 50),
-
-
-
- //All types that you can put into the grinder to transfer the reagents to the beaker. !Put all recipes above this.!
- /obj/item/weapon/reagent_containers/pill = list(),
- /obj/item/weapon/reagent_containers/food = list(),
-
- //Crayons
- /obj/item/toy/crayon = list()
- )
-
- var/list/juice_items = list (
-
- //Juicer Stuff
- /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = list("tomatojuice" = 0),
- /obj/item/weapon/reagent_containers/food/snacks/grown/carrot = list("carrotjuice" = 0),
- /obj/item/weapon/reagent_containers/food/snacks/grown/berries = list("berryjuice" = 0),
- /obj/item/weapon/reagent_containers/food/snacks/grown/banana = list("banana" = 0),
- /obj/item/weapon/reagent_containers/food/snacks/grown/potato = list("potato" = 0),
- /obj/item/weapon/reagent_containers/food/snacks/grown/lemon = list("lemonjuice" = 0),
- /obj/item/weapon/reagent_containers/food/snacks/grown/orange = list("orangejuice" = 0),
- /obj/item/weapon/reagent_containers/food/snacks/grown/lime = list("limejuice" = 0),
- /obj/item/weapon/reagent_containers/food/snacks/watermelonslice = list("watermelonjuice" = 0),
- /obj/item/weapon/reagent_containers/food/snacks/grown/grapes = list("grapejuice" = 0),
- /obj/item/weapon/reagent_containers/food/snacks/grown/poisonberries = list("poisonberryjuice" = 0),
- )
-
-
var/list/holdingitems = list()
/obj/machinery/reagentgrinder/New()
@@ -885,10 +835,8 @@
icon_state = "juicer"+num2text(!isnull(beaker))
return
-
/obj/machinery/reagentgrinder/attackby(var/obj/item/O as obj, var/mob/user as mob)
-
if (istype(O,/obj/item/weapon/reagent_containers/glass) || \
istype(O,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass) || \
istype(O,/obj/item/weapon/reagent_containers/food/drinks/shaker))
@@ -908,24 +856,36 @@
return 1
//Fill machine with the plantbag!
- if(istype(O, /obj/item/weapon/storage/bag/plants))
+ if(!istype(O))
+ return
- for (var/obj/item/weapon/reagent_containers/food/snacks/grown/G in O.contents)
+ if(istype(O,/obj/item/weapon/storage/bag/plants))
+
+ var/failed = 1
+ for (var/obj/item/G in O.contents)
+ if(!O.reagents || !O.reagents.total_volume)
+ continue
+ failed = 0
O.contents -= G
G.loc = src
holdingitems += G
- if(holdingitems && holdingitems.len >= limit) //Sanity checking so the blender doesn't overfill
- user << "You fill the All-In-One grinder to the brim."
+ if(holdingitems && holdingitems.len >= limit)
break
+ if(failed)
+ user << "Nothing in the plant bag is usable."
+ return 1
+
if(!O.contents.len)
- user << "You empty the plant bag into the All-In-One grinder."
+ user << "You fill \the [src]."
+ else
+ user << "You fill \the [src]. Some of the things in the plant bag aren't suitable."
src.updateUsrDialog()
return 0
- if (!is_type_in_list(O, blend_items) && !is_type_in_list(O, juice_items))
- user << "Cannot refine into a reagent."
+ if(!O.reagents || !O.reagents.total_volume)
+ user << "\The [O] is not suitable for blending."
return 1
user.before_take_item(O)
@@ -974,8 +934,7 @@
[beaker_contents]
"}
if (is_beaker_ready && !is_chamber_empty && !(stat & (NOPOWER|BROKEN)))
- dat += "Grind the reagents
"
- dat += "Juice the reagents
"
+ dat += "Process the reagents
"
if(holdingitems && holdingitems.len > 0)
dat += "Eject the reagents
"
if (beaker)
@@ -994,8 +953,6 @@
switch(href_list["action"])
if ("grind")
grind()
- if("juice")
- juice()
if("eject")
eject()
if ("detach")
@@ -1025,190 +982,32 @@
holdingitems -= O
holdingitems = list()
-/obj/machinery/reagentgrinder/proc/is_allowed(var/obj/item/weapon/reagent_containers/O)
- for (var/i in blend_items)
- if(istype(O, i))
- return 1
- return 0
-
-/obj/machinery/reagentgrinder/proc/get_allowed_by_id(var/obj/item/weapon/grown/O)
- for (var/i in blend_items)
- if (istype(O, i))
- return blend_items[i]
-
-/obj/machinery/reagentgrinder/proc/get_allowed_snack_by_id(var/obj/item/weapon/reagent_containers/food/snacks/O)
- for(var/i in blend_items)
- if(istype(O, i))
- return blend_items[i]
-
-/obj/machinery/reagentgrinder/proc/get_allowed_juice_by_id(var/obj/item/weapon/reagent_containers/food/snacks/O)
- for(var/i in juice_items)
- if(istype(O, i))
- return juice_items[i]
-
-/obj/machinery/reagentgrinder/proc/get_grownweapon_amount(var/obj/item/weapon/grown/O)
- if (!istype(O))
- return 5
- else if (O.potency == -1)
- return 5
- else
- return round(O.potency)
-
-/obj/machinery/reagentgrinder/proc/get_juice_amount(var/obj/item/weapon/reagent_containers/food/snacks/grown/O)
- if (!istype(O))
- return 5
- else if (O.potency == -1)
- return 5
- else
- return round(5*sqrt(O.potency))
-
/obj/machinery/reagentgrinder/proc/remove_object(var/obj/item/O)
holdingitems -= O
del(O)
-/obj/machinery/reagentgrinder/proc/juice()
- power_change()
- if(stat & (NOPOWER|BROKEN))
- return
- if (!beaker || (beaker && beaker.reagents.total_volume >= beaker.reagents.maximum_volume))
- return
- playsound(src.loc, 'sound/machines/juicer.ogg', 20, 1)
- inuse = 1
- spawn(50)
- inuse = 0
- interact(usr)
- //Snacks
- for (var/obj/item/weapon/reagent_containers/food/snacks/O in holdingitems)
- if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
- break
-
- var/allowed = get_allowed_juice_by_id(O)
- if(isnull(allowed))
- break
-
- for (var/r_id in allowed)
-
- var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
- var/amount = get_juice_amount(O)
-
- beaker.reagents.add_reagent(r_id, min(amount, space))
-
- if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
- break
-
- remove_object(O)
-
/obj/machinery/reagentgrinder/proc/grind()
power_change()
if(stat & (NOPOWER|BROKEN))
return
+
+ // Sanity check.
if (!beaker || (beaker && beaker.reagents.total_volume >= beaker.reagents.maximum_volume))
return
+
playsound(src.loc, 'sound/machines/blender.ogg', 50, 1)
inuse = 1
+
+ // Reset the machine.
spawn(60)
inuse = 0
interact(usr)
- //Snacks and Plants
- for (var/obj/item/weapon/reagent_containers/food/snacks/O in holdingitems)
- if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
- break
- var/allowed = get_allowed_snack_by_id(O)
- if(isnull(allowed))
- break
-
- for (var/r_id in allowed)
-
- var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
- var/amount = allowed[r_id]
- if(amount <= 0)
- if(amount == 0)
- if (O.reagents != null && O.reagents.has_reagent("nutriment"))
- beaker.reagents.add_reagent(r_id, min(O.reagents.get_reagent_amount("nutriment"), space))
- O.reagents.remove_reagent("nutriment", min(O.reagents.get_reagent_amount("nutriment"), space))
- else
- if (O.reagents != null && O.reagents.has_reagent("nutriment"))
- beaker.reagents.add_reagent(r_id, min(round(O.reagents.get_reagent_amount("nutriment")*abs(amount)), space))
- O.reagents.remove_reagent("nutriment", min(O.reagents.get_reagent_amount("nutriment"), space))
-
- else
- O.reagents.trans_id_to(beaker, r_id, min(amount, space))
-
- if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
- break
-
- if(O.reagents.reagent_list.len == 0)
+ // Process.
+ for (var/obj/item/O in holdingitems)
+ O.reagents.trans_to(beaker, min(O.reagents.total_volume, (beaker.reagents.maximum_volume - beaker.reagents.total_volume)))
+ if(O.reagents.total_volume == 0)
remove_object(O)
-
- //Sheets
- for (var/obj/item/stack/sheet/O in holdingitems)
- var/allowed = get_allowed_by_id(O)
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
break
- for(var/i = 1; i <= round(O.amount, 1); i++)
- for (var/r_id in allowed)
- var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
- var/amount = allowed[r_id]
- beaker.reagents.add_reagent(r_id,min(amount, space))
- if (space < amount)
- break
- if (i == round(O.amount, 1))
- remove_object(O)
- break
- //Plants
- for (var/obj/item/weapon/grown/O in holdingitems)
- if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
- break
- var/allowed = get_allowed_by_id(O)
- for (var/r_id in allowed)
- var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
- var/amount = allowed[r_id]
- if (amount == 0)
- if (O.reagents != null && O.reagents.has_reagent(r_id))
- beaker.reagents.add_reagent(r_id,min(O.reagents.get_reagent_amount(r_id), space))
- else
- beaker.reagents.add_reagent(r_id,min(amount, space))
-
- if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
- break
- remove_object(O)
-
- //xenoarch
- for(var/obj/item/weapon/rocksliver/O in holdingitems)
- if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
- break
- var/allowed = get_allowed_by_id(O)
- for (var/r_id in allowed)
- var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
- var/amount = allowed[r_id]
- beaker.reagents.add_reagent(r_id,min(amount, space), O.geological_data)
-
- if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
- break
- remove_object(O)
-
- //crayons
- for (var/obj/item/toy/crayon/O in holdingitems)
- if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
- break
- var/amount = round(O.uses/3) //full crayon gives 10 juice
- var/dustcolour = "red"
- if (O.colourName == "mime")
- dustcolour = "grey" //black+white
- else if (O.colourName == "rainbow")
- dustcolour = "brown" //mix of all colours
- else if (!isnull(O.colourName)) //all other defined colours
- dustcolour = O.colourName
- beaker.reagents.add_reagent("crayon_dust_[dustcolour]",amount)
- remove_object(O)
-
- //Everything else - Transfers reagents from it into beaker
- for (var/obj/item/weapon/reagent_containers/O in holdingitems)
- if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
- break
- var/amount = O.reagents.total_volume
- O.reagents.trans_to(beaker, amount)
- if(!O.reagents.total_volume)
- remove_object(O)
diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm
index 4d6b44fb84..6b76e75d03 100644
--- a/code/modules/reagents/Chemistry-Recipes.dm
+++ b/code/modules/reagents/Chemistry-Recipes.dm
@@ -586,6 +586,14 @@ datum
required_reagents = list("capsaicin" = 2)
required_catalysts = list("phoron" = 5)
result_amount = 1
+
+ ketchup
+ name = "Ketchup"
+ id = "ketchup"
+ result = "ketchup"
+ required_reagents = list("tomatojuice" = 2, "water" = 1, "sugar" = 1)
+ result_amount = 4
+
///////////////////////////////////////////////////////////////////////////////////
// foam and foam precursor
diff --git a/code/modules/research/xenoarchaeology/geosample.dm b/code/modules/research/xenoarchaeology/geosample.dm
index 401ae13cd3..689f61b888 100644
--- a/code/modules/research/xenoarchaeology/geosample.dm
+++ b/code/modules/research/xenoarchaeology/geosample.dm
@@ -29,6 +29,8 @@
icon_state = "sliver[rand(1,3)]"
pixel_x = rand(0,16)-8
pixel_y = rand(0,8)-8
+ create_reagents(50)
+ reagents.add_reagent("ground_rock",50)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Geosample datum
diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm
index 28724abc1a..3def3b66c7 100644
--- a/maps/exodus-2.dmm
+++ b/maps/exodus-2.dmm
@@ -866,7 +866,7 @@
"qH" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom)
"qI" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "admin_shuttle_bay"; name = "shuttle bay controller"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "admin_shuttle_bay_door"},/turf/unsimulated/floor{name = "plating"},/area/centcom)
"qJ" = (/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/structure/table,/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living)
-"qK" = (/obj/structure/table,/obj/machinery/juicer{pixel_y = 6},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living)
+"qK" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living)
"qL" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{name = "plating"},/area/centcom/living)
"qM" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/living)
"qN" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/living)
@@ -1237,7 +1237,7 @@
"xO" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops)
"xP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops)
"xQ" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"xR" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/turf/unsimulated/floor{dir = 6; icon_state = "asteroid8"; name = "sand"},/area/centcom/specops)
+"xR" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/handcuffs,/obj/item/device/flash,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/gun/energy/stunrevolver,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom)
"xS" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
"xT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor,/area/centcom/control)
"xU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor,/area/centcom/control)
@@ -1288,7 +1288,7 @@
"yN" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
"yO" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
"yP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor,/area/centcom/control)
-"yQ" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/handcuffs,/obj/item/device/flash,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/gun/energy/stunrevolver,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom)
+"yQ" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/turf/unsimulated/floor{dir = 6; icon_state = "asteroid8"; name = "sand"},/area/centcom/specops)
"yR" = (/obj/structure/table/reinforced,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"yS" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; listening = 0; name = "Station Intercom (General)"; pixel_x = -28},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)
"yT" = (/turf/unsimulated/floor{icon_state = "green"; dir = 1},/area/centcom/control)
@@ -1882,9 +1882,9 @@
"Kj" = (/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station)
"Kk" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{tag = "icon-lava"; name = "plating"; icon_state = "lava"},/area/wizard_station)
"Kl" = (/turf/unsimulated/floor{tag = "icon-lava"; name = "plating"; icon_state = "lava"},/area/wizard_station)
-"Km" = (/turf/unsimulated/floor{tag = "icon-ironsand8"; icon_state = "ironsand8"},/turf/unsimulated/floor{tag = "icon-asteroid8"; name = "plating"; icon_state = "asteroid8"},/area/wizard_station)
-"Kn" = (/turf/unsimulated/floor{tag = "icon-ironsand11"; icon_state = "ironsand11"},/turf/unsimulated/floor{tag = "icon-asteroid5"; name = "plating"; icon_state = "asteroid5"},/area/wizard_station)
-"Ko" = (/turf/unsimulated/floor{tag = "icon-ironsand7"; icon_state = "ironsand7"},/mob/living/simple_animal/crab{name = "Experiment 68a"},/turf/unsimulated/floor{tag = "icon-asteroid7"; name = "plating"; icon_state = "asteroid7"},/area/wizard_station)
+"Km" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/roller,/obj/item/roller,/obj/item/roller,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom)
+"Kn" = (/turf/unsimulated/floor{tag = "icon-ironsand8"; icon_state = "ironsand8"},/turf/unsimulated/floor{tag = "icon-asteroid8"; name = "plating"; icon_state = "asteroid8"},/area/wizard_station)
+"Ko" = (/turf/unsimulated/floor{tag = "icon-ironsand11"; icon_state = "ironsand11"},/turf/unsimulated/floor{tag = "icon-asteroid5"; name = "plating"; icon_state = "asteroid5"},/area/wizard_station)
"Kp" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/wizard_station)
"Kq" = (/obj/structure/flora/ausbushes/fullgrass,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/wizard_station)
"Kr" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station)
@@ -1902,7 +1902,7 @@
"KD" = (/obj/machinery/optable,/obj/item/organ/brain,/obj/structure/window/basic{dir = 1},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station)
"KE" = (/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/unsimulated/floor{tag = "icon-lava"; name = "plating"; icon_state = "lava"},/area/wizard_station)
"KF" = (/obj/effect/landmark{name = "Holocarp Spawn Random"},/turf/simulated/floor/holofloor{icon_state = "1"; dir = 5},/area/holodeck/source_space)
-"KG" = (/turf/unsimulated/floor{tag = "icon-ironsand14"; icon_state = "ironsand14"},/turf/unsimulated/floor{tag = "icon-asteroid7"; name = "plating"; icon_state = "asteroid7"},/area/wizard_station)
+"KG" = (/turf/unsimulated/floor{tag = "icon-ironsand7"; icon_state = "ironsand7"},/mob/living/simple_animal/crab{name = "Experiment 68a"},/turf/unsimulated/floor{tag = "icon-asteroid7"; name = "plating"; icon_state = "asteroid7"},/area/wizard_station)
"KH" = (/obj/structure/flora/ausbushes/grassybush,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/wizard_station)
"KI" = (/mob/living/simple_animal/hostile/retaliate/goat{name = "Experiment 97d"},/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/wizard_station)
"KJ" = (/obj/item/weapon/caution,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station)
@@ -1927,7 +1927,7 @@
"Lc" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/vox/station)
"Ld" = (/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox/station)
"Le" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{dir = 2; id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station)
-"Lf" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/roller,/obj/item/roller,/obj/item/roller,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom)
+"Lf" = (/turf/unsimulated/floor{tag = "icon-ironsand14"; icon_state = "ironsand14"},/turf/unsimulated/floor{tag = "icon-asteroid7"; name = "plating"; icon_state = "asteroid7"},/area/wizard_station)
"Lg" = (/obj/structure/table/rack,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/grenade_launcher,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/rcd,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/chem_dispenser/injector,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom)
"Lh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station)
"Li" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station)
@@ -2086,13 +2086,13 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvutvIvbvJoNukujulumtZoNoNxatZtZvOoNuyvQoNvRvRvRvRvRvRvSvTcZtvtNtxufufvVvWvXvXvXvXvXvXvXvYueufufugvZwawbwcwdugweuNuptxurururtxwfwfuNwfwfvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMwgaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumu
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMuUuVuVuVuVuVuVuVuVuVuVuVuVuVwWuXuVuVuVuYwWwivavbwjoNtvoNoNoNtZoNvetZtZtZwloNwmwnwowpwpwpwpwpwpwqtvtvtvtvtvufufvVwrwsufwtwuwvufwswrueufufugugugugugugugweuNuptxurururtxwwwwuNwwwwvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumu
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvutwxvbwyoNwzwAwBoNtZoNvNvKtZtZwEoNwmvMtvwFwGwGwGwHwGwItvwJwJwJtvufufwKwLwMwNwOwPwQwRwSwLwTufuftxwUwUwUwUwUtxtxuOtxtxtxuOtxtxuNuNuNuNuNvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumu
-aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMwVoVoVoVoVoVoVoVoVoVoVoVoVoVwhoUoVoVoVqVwhwXwYvMwZoNyQtZxboNxcoNoNoNxdoNoNoNwmwnuWxfxfxfxfxfxfxfxgxfxfxfxgufufufxhufufxiufxiufufxhufufufxjurururururxjurururururururxjwwwwwwwwwwvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMmu
+aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMwVoVoVoVoVoVoVoVoVoVoVoVoVoVwhoUoVoVoVqVwhwXwYvMwZoNxRtZxboNxcoNoNoNxdoNoNoNwmwnuWxfxfxfxfxfxfxfxgxfxfxfxgufufufxhufufxiufxiufufxhufufufxjurururururxjurururururururxjwwwwwwwwwwvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMmu
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMxkoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNxlxmvMxnoNvPuhwkoNtZxqtZxrtZxsxtxttZxutvxvxwxwxxxyxzxAtvxBxBxBtvufufvBxCxDwNxEufxFwRxGxCvDufufxjurururururxjurururururururxjwwwwwwwwwwtxuOuOtxtxtxtxtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
-aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMwVoVoVoVoVoVoVoVoVoVoVoVoVoVxHoUoVoVoVqVxHxIxJvMwnxKuhtZtZxLtZxMtZwmwmxNxNwmwmxutvxOxOxOxPxQxPxRtvtvtvtvtvufufvVwLxSufxiufxiufxSwLueufuftxxTxUxUxUxVtxtxxWtxtxtxuOtxtxtxxXxXxXtxtxurururxYurxZtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
+aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMwVoVoVoVoVoVoVoVoVoVoVoVoVoVxHoUoVoVoVqVxHxIxJvMwnxKuhtZtZxLtZxMtZwmwmxNxNwmwmxutvxOxOxOxPxQxPyQtvtvtvtvtvufufvVwLxSufxiufxiufxSwLueufuftxxTxUxUxUxVtxtxxWtxtxtxuOtxtxtxxXxXxXtxtxurururxYurxZtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMxkoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNLgyaoNoNoNoNoNyboNycwmydyeyWygwmxutvtvyhyiyjykylymyhaMaMaMtxufufvVtxtxynyoufypyqtxtxueufuftxaMaMaMaMaMtxyrystxuNytuNuNyuyvywywywyxtxururuQuQururyyaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoNoNoNoNyzyAxowDtZoNxewmydyfyfygwmxpyEyFyhyGyHyIyByKyhaMaMaMtxufufvVtxtxvlvmvmvmvotxtxueufuftxaMaMaMaMaMtxysystxyLyLyLuNyuywywywywyMtxuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoNzitZtZtZtZtZtZoNxetZtZwqwqwmwmwmwmyRyhySyIyIyIyIyhaMaMaMtxufufwKyTyTyTyTyTyTyTyTyTwTufuftxaMaMaMaMaMtxyUystxyLyVyLuNyuyuyuyuyuyutxuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
-aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoNzltZtZtZtZtZLfoNyXtZtZyYtZtZwCvdyJzcyhyIyIyIyIzdyhtxtxtxtxtxtxzetxtxufufufufuftxtxtxtxtxtxaMaMaMaMaMtxzfystxvFuNuNuNyuaMaMaMaMaMtxuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
+aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoNzltZtZtZtZtZKmoNyXtZtZyYtZtZwCvdyJzcyhyIyIyIyIzdyhtxtxtxtxtxtxzetxtxufufufufuftxtxtxtxtxtxaMaMaMaMaMtxzfystxvFuNuNuNyuaMaMaMaMaMtxuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoNzgzgzhyDyZxazkoNyXzmzmoNznznoNoNoNoNyhyIzozpzqzryhzsztztzszuzvufzwtxtxtxzxtxtxdCaMaMaMaMaMaMaMaMaMaMtxtxtxtxtxtxtxtxyuaMaMaMaMaMzyuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzzmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtwgmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmt
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoNoNoNoNoNoNoNoNoNoNoNoNzAzBzBzAaMaMaMyhyIzCzDzEzDyhzszFzFzszGzHufzwtxzIwTufwKzJtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzKururzLzLururzKaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzMzNzNzNzNzOzOzNzNzPaMyhyIyIyIyIyIyhzsztztzszQzHufzwtxueufufufvVtxaMaMaMaMaMaMaMaMaMaMaMzRzSzTzUaMaMaMaMaMaMaMaMaMtxzVururururzWtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
@@ -2192,8 +2192,8 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYIcJdJGJHJgIcJuJuJuJuJuJuJuJuJuHYaMaMaMaM
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYIcJdJPJQJgIcJuJuJuJuJuJuJRJSJTHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMIYJUJVIYIUJbJLJDJBJDJBJDJLJbIUIYJXJYIYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYIcIcIcIcIcIcJuJuJuJuJuJuJuJuJuHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMIYJZKaIYIYIYIYIYIYKbIYIYIYIYIYIYKcKdIYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYKeKfKfKgKfKfKfKgKfKfKfKgKfKfKhHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMIUJKKiKjKjKjKjKjKjIYKjIYKjKjKjKjKjKjKiJKIUaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
-aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYKkKlKlJkKmKoKnJkKpKpKqJkKrKsKtHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMIUJaKvKwKxKyKzIYKbIYKbIYKbIYKAKBKCKDKvJaIUaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
-aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYKlKEKkJvKGLvLuJvKHKIKpJvKJKtKKHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMIUJbKvJDJDJDKLIYJDJDJDJDJDIYJDJDKMJDKvJbIUaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
+aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYKkKlKlJkKnKGKoJkKpKpKqJkKrKsKtHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMIUJaKvKwKxKyKzIYKbIYKbIYKbIYKAKBKCKDKvJaIUaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
+aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYKlKEKkJvLfLvLuJvKHKIKpJvKJKtKKHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMIUJbKvJDJDJDKLIYJDJDJDJDJDIYJDJDKMJDKvJbIUaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYHYHYHYHYHYHYHYHYHYHYHYHYHYHYHYHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMITIYKNKOKPJlHmIYJoJDJDJDKQIYKUKVKWKXKNIYIVaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMKYIYKZKZIYIYIYIYKRJDJDJDKSIYIYIYIYKZKZIYLcaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMKYLdLdLcaMaMIYKTJDJDJDLaIYaMaMKYLdLdLcaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM