diff --git a/code/_helpers/type2type.dm b/code/_helpers/type2type.dm
index 18a94a501d0..77019ab7b9f 100644
--- a/code/_helpers/type2type.dm
+++ b/code/_helpers/type2type.dm
@@ -281,3 +281,103 @@
return strtype
return copytext(strtype, delim_pos)
+// Concatenates a list of strings into a single string. A seperator may optionally be provided.
+/proc/list2text(list/ls, sep)
+ if (ls.len <= 1) // Early-out code for empty or singleton lists.
+ return ls.len ? ls[1] : ""
+
+ var/l = ls.len // Made local for sanic speed.
+ var/i = 0 // Incremented every time a list index is accessed.
+
+ if (sep != null)
+ // Macros expand to long argument lists like so: sep, ls[++i], sep, ls[++i], sep, ls[++i], etc...
+ #define S1 sep, ls[++i]
+ #define S4 S1, S1, S1, S1
+ #define S16 S4, S4, S4, S4
+ #define S64 S16, S16, S16, S16
+
+ . = "[ls[++i]]" // Make sure the initial element is converted to text.
+
+ // Having the small concatenations come before the large ones boosted speed by an average of at least 5%.
+ if (l-1 & 0x01) // 'i' will always be 1 here.
+ . = text("[][][]", ., S1) // Append 1 element if the remaining elements are not a multiple of 2.
+ if (l-i & 0x02)
+ . = text("[][][][][]", ., S1, S1) // Append 2 elements if the remaining elements are not a multiple of 4.
+ if (l-i & 0x04)
+ . = text("[][][][][][][][][]", ., S4) // And so on....
+ if (l-i & 0x08)
+ . = text("[][][][][][][][][][][][][][][][][]", ., S4, S4)
+ if (l-i & 0x10)
+ . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16)
+ if (l-i & 0x20)
+ . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
+ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16, S16)
+ if (l-i & 0x40)
+ . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
+ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
+ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
+ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64)
+ while (l > i) // Chomp through the rest of the list, 128 elements at a time.
+ . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
+ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
+ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
+ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
+ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
+ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
+ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
+ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64, S64)
+
+ #undef S64
+ #undef S16
+ #undef S4
+ #undef S1
+ else
+ // Macros expand to long argument lists like so: ls[++i], ls[++i], ls[++i], etc...
+ #define S1 ls[++i]
+ #define S4 S1, S1, S1, S1
+ #define S16 S4, S4, S4, S4
+ #define S64 S16, S16, S16, S16
+
+ . = "[ls[++i]]" // Make sure the initial element is converted to text.
+
+ if (l-1 & 0x01) // 'i' will always be 1 here.
+ . += S1 // Append 1 element if the remaining elements are not a multiple of 2.
+ if (l-i & 0x02)
+ . = text("[][][]", ., S1, S1) // Append 2 elements if the remaining elements are not a multiple of 4.
+ if (l-i & 0x04)
+ . = text("[][][][][]", ., S4) // And so on...
+ if (l-i & 0x08)
+ . = text("[][][][][][][][][]", ., S4, S4)
+ if (l-i & 0x10)
+ . = text("[][][][][][][][][][][][][][][][][]", ., S16)
+ if (l-i & 0x20)
+ . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16, S16)
+ if (l-i & 0x40)
+ . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
+ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64)
+ while (l > i) // Chomp through the rest of the list, 128 elements at a time.
+ . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
+ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
+ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
+ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64, S64)
+
+ #undef S64
+ #undef S16
+ #undef S4
+ #undef S1
+
+// Converts a string into a list by splitting the string at each delimiter found. (discarding the seperator)
+/proc/text2list(text, delimiter="\n")
+ var/delim_len = length(delimiter)
+ if (delim_len < 1)
+ return list(text)
+
+ . = list()
+ var/last_found = 1
+ var/found
+
+ do
+ found = findtext(text, delimiter, last_found, 0)
+ . += copytext(text, last_found, found)
+ last_found = found + delim_len
+ while (found)
diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm
index 3fcbc98e850..b9aca5a2323 100644
--- a/code/game/machinery/biogenerator.dm
+++ b/code/game/machinery/biogenerator.dm
@@ -129,7 +129,10 @@
dat += "Leather Coat ([round(500/build_eff)])
"
dat += "Leather Jacket ([round(500/build_eff)])
"
dat += "Winter Coat ([round(500/build_eff)])
"
+<<<<<<< HEAD
dat += "4 Algae Sheets ([round(400/build_eff)])
" //VOREStation Edit - Algae for oxygen generator
+=======
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
//dat += "Other
"
//dat += "Monkey (500)
"
else
diff --git a/code/game/machinery/vending_machines.dm b/code/game/machinery/vending_machines.dm
index 59524f869a1..7ca2a2031d8 100644
--- a/code/game/machinery/vending_machines.dm
+++ b/code/game/machinery/vending_machines.dm
@@ -384,8 +384,12 @@
/obj/item/weapon/storage/toolbox/lunchbox/nymph = 3,
/obj/item/weapon/storage/toolbox/lunchbox/syndicate = 3,
/obj/item/weapon/reagent_containers/cooking_container/oven = 5,
+<<<<<<< HEAD
/obj/item/weapon/reagent_containers/cooking_container/fryer = 4,
/obj/item/trash/bowl = 10) //VOREStation Add
+=======
+ /obj/item/weapon/reagent_containers/cooking_container/fryer = 4)
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
contraband = list(/obj/item/weapon/material/knife/butch = 2)
/obj/machinery/vending/sovietsoda
diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm
index 95574343725..8110f0901b2 100644
--- a/code/modules/food/food/snacks.dm
+++ b/code/modules/food/food/snacks.dm
@@ -157,7 +157,11 @@
. = ..()
if(Adjacent(user))
if(coating)
+<<<<<<< HEAD
to_chat(user, "It's coated in [coating.name]!")
+=======
+ . += "It's coated in [coating.name]!"
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
if(bitecount==0)
return .
else if (bitecount==1)
@@ -4528,12 +4532,23 @@
filling_color = "#DB0000"
center_of_mass = list("x"=16, "y"=16)
do_coating_prefix = 0
+<<<<<<< HEAD
New()
. = ..()
reagents.add_reagent("protein", 6)
reagents.add_reagent("batter", 1.7)
reagents.add_reagent("oil", 1.5)
bitesize = 2
+=======
+ bitesize = 2
+
+
+/obj/item/weapon/reagent_containers/food/snacks/sausage/battered/Initialize()
+ . = ..()
+ reagents.add_reagent("protein", 6)
+ reagents.add_reagent("batter", 1.7)
+ reagents.add_reagent("oil", 1.5)
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
/obj/item/weapon/reagent_containers/food/snacks/jalapeno_poppers
name = "jalapeno popper"
@@ -4558,10 +4573,18 @@
icon = 'icons/obj/food_syn.dmi'
icon_state = "ratburger"
center_of_mass = list("x"=16, "y"=11)
+<<<<<<< HEAD
New()
. = ..()
reagents.add_reagent("protein", 4)
bitesize = 2
+=======
+ bitesize = 2
+
+/obj/item/weapon/reagent_containers/food/snacks/mouseburger/Initialize()
+ . = ..()
+ reagents.add_reagent("protein", 4)
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
/obj/item/weapon/reagent_containers/food/snacks/chickenkatsu
name = "chicken katsu"
@@ -4637,6 +4660,7 @@
nutriment_amt = 25
nutriment_desc = list("fried pizza" = 25)
center_of_mass = list("x"=16, "y"=11)
+<<<<<<< HEAD
New()
. = ..()
@@ -4644,6 +4668,15 @@
coating = reagents.get_reagent("batter")
reagents.add_reagent("oil", 4)
bitesize = 2
+=======
+ bitesize = 2
+
+/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/crunch/Initialize()
+ . = ..()
+ reagents.add_reagent("batter", 6.5)
+ coating = reagents.get_reagent("batter")
+ reagents.add_reagent("oil", 4)
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
/obj/item/weapon/reagent_containers/food/snacks/pizzacrunchslice
name = "pizza crunch"
@@ -6032,4 +6065,20 @@
/obj/item/weapon/reagent_containers/food/snacks/cosmicbrowniesslice/filled/Initialize()
. = ..()
- reagents.add_reagent("protein", 1)
\ No newline at end of file
+<<<<<<< HEAD
+ reagents.add_reagent("protein", 1)
+=======
+ reagents.add_reagent("protein", 1)
+
+/obj/item/weapon/reagent_containers/food/snacks/lasagna
+ name = "lasagna"
+ desc = "Meaty, tomato-y, and ready to eat-y. Favorite of cats."
+ icon = 'icons/obj/food.dmi'
+ icon_state = "lasagna"
+ nutriment_amt = 5
+ nutriment_desc = list("tomato" = 4, "meat" = 2)
+
+/obj/item/weapon/reagent_containers/food/snacks/lasagna/Initialize()
+ ..()
+ reagents.add_reagent("protein", 2) //For meaty things.
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
diff --git a/code/modules/food/kitchen/cooking_machines/_appliance.dm b/code/modules/food/kitchen/cooking_machines/_appliance.dm
index 265b0c95bcd..f600d1aeb3a 100644
--- a/code/modules/food/kitchen/cooking_machines/_appliance.dm
+++ b/code/modules/food/kitchen/cooking_machines/_appliance.dm
@@ -53,12 +53,19 @@
if (!available_recipes)
available_recipes = new
+<<<<<<< HEAD
for (var/type in subtypesof(/datum/recipe))
var/datum/recipe/test = new type
if ((appliancetype & test.appliance))
available_recipes += test
else
qdel(test)
+=======
+ for(var/type in subtypesof(/datum/recipe))
+ var/datum/recipe/test = type
+ if((appliancetype & initial(test.appliance)))
+ available_recipes += new test
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
/obj/machinery/appliance/Destroy()
for (var/a in cooking_objs)
@@ -79,7 +86,11 @@
for (var/a in cooking_objs)
var/datum/cooking_item/CI = a
string += "-\a [CI.container.label(null, CI.combine_target)], [report_progress(CI)]"
+<<<<<<< HEAD
to_chat(user, string)
+=======
+ return string
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
else
to_chat(user, "")
@@ -125,14 +136,22 @@
return
if (!user.IsAdvancedToolUser())
+<<<<<<< HEAD
to_chat(user, "You lack the dexterity to do that!")
+=======
+ to_chat(user, "You lack the dexterity to do that!")
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
return
if (user.stat || user.restrained() || user.incapacitated())
return
if (!Adjacent(user) && !issilicon(user))
+<<<<<<< HEAD
to_chat(user, "You can't reach [src] from here.")
+=======
+ to_chat(user, "You can't reach [src] from here!")
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
return
if (stat & POWEROFF)//Its turned off
@@ -234,10 +253,17 @@
//This function is overridden by cookers that do stuff with containers
/obj/machinery/appliance/proc/has_space(var/obj/item/I)
+<<<<<<< HEAD
if (cooking_objs.len >= max_contents)
return FALSE
else return TRUE
+=======
+ if(cooking_objs.len >= max_contents)
+ return FALSE
+
+ return TRUE
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
/obj/machinery/appliance/attackby(var/obj/item/I, var/mob/user)
if(!cook_type || (stat & (BROKEN)))
@@ -246,12 +272,18 @@
var/result = can_insert(I, user)
if(!result)
+<<<<<<< HEAD
if(default_deconstruction_screwdriver(user, I))
return
else if(default_part_replacement(user, I))
return
else
return
+=======
+ if(!(default_deconstruction_screwdriver(user, I)))
+ default_part_replacement(user, I)
+ return
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
if(result == 2)
var/obj/item/weapon/grab/G = I
@@ -344,7 +376,11 @@
else if(istype(I, /obj/item/weapon/holder))
var/obj/item/weapon/holder/H = I
if (H.held_mob)
+<<<<<<< HEAD
work += ((H.held_mob.mob_size * H.held_mob.size_multiplier) * (H.held_mob.mob_size * H.held_mob.size_multiplier) * 2)+2
+=======
+ work += (H.held_mob.mob_size * H.held_mob.mob_size * 2)+2
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
CI.max_cookwork += work
@@ -370,7 +406,11 @@
for(var/obj/item/weapon/holder/H in CI.container.contents)
var/mob/living/M = H.held_mob
if(M)
+<<<<<<< HEAD
M.apply_damage(rand(1,3) * (1/M.size_multiplier), mobdamagetype, pick(BP_ALL))
+=======
+ M.apply_damage(rand(1,3) * (1/M.mob_size), mobdamagetype, pick(BP_ALL)) // Allows special handling for mice/smaller mobs.
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
return TRUE
@@ -572,6 +612,7 @@
var/datum/cooking_item/CI = menuoptions[selection]
eject(CI, user)
update_icon()
+<<<<<<< HEAD
return 1
return 0
@@ -583,6 +624,19 @@
return 0
return 1
+=======
+ return TRUE
+ return FALSE
+
+/obj/machinery/appliance/proc/can_remove_items(var/mob/user)
+ if (!Adjacent(user))
+ return FALSE
+
+ if (isanimal(user))
+ return FALSE
+
+ return TRUE
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
/obj/machinery/appliance/proc/eject(var/datum/cooking_item/CI, var/mob/user = null)
var/obj/item/thing
diff --git a/code/modules/food/kitchen/cooking_machines/_cooker.dm b/code/modules/food/kitchen/cooking_machines/_cooker.dm
index 1e7193f166e..66340a08260 100644
--- a/code/modules/food/kitchen/cooking_machines/_cooker.dm
+++ b/code/modules/food/kitchen/cooking_machines/_cooker.dm
@@ -19,12 +19,21 @@
if(.) //no need to duplicate adjacency check
if(!stat)
if (temperature < min_temp)
+<<<<<<< HEAD
to_chat(user, "\The [src] is still heating up and is too cold to cook anything yet.")
else
to_chat(user, "It is running at [round(get_efficiency(), 0.1)]% efficiency!")
to_chat(user, "Temperature: [round(temperature - T0C, 0.1)]C / [round(optimal_temp - T0C, 0.1)]C")
else
to_chat(user, "It is switched off.")
+=======
+ . += "\The [src] is still heating up and is too cold to cook anything yet."
+ else
+ . += "It is running at [round(get_efficiency(), 0.1)]% efficiency!"
+ . += "Temperature: [round(temperature - T0C, 0.1)]C / [round(optimal_temp - T0C, 0.1)]C"
+ else
+ . += "It is switched off."
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
/obj/machinery/appliance/cooker/list_contents(var/mob/user)
if (cooking_objs.len)
diff --git a/code/modules/food/kitchen/cooking_machines/_mixer.dm b/code/modules/food/kitchen/cooking_machines/_mixer.dm
index 18b75998d97..013ebd73186 100644
--- a/code/modules/food/kitchen/cooking_machines/_mixer.dm
+++ b/code/modules/food/kitchen/cooking_machines/_mixer.dm
@@ -17,7 +17,11 @@ fundamental differences
/obj/machinery/appliance/mixer/examine(var/mob/user)
. = ..()
if(Adjacent(user))
+<<<<<<< HEAD
to_chat(user, "It is currently set to make a [selected_option]")
+=======
+ . += "It is currently set to make a [selected_option]"
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
/obj/machinery/appliance/mixer/Initialize()
. = ..()
@@ -27,7 +31,11 @@ fundamental differences
//Mixers cannot-not do combining mode. So the default option is removed from this. A combine target must be chosen
/obj/machinery/appliance/mixer/choose_output()
+<<<<<<< HEAD
set src in oview(1)
+=======
+ set src in view(1)
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
set name = "Choose output"
set category = "Object"
@@ -91,7 +99,11 @@ fundamental differences
/obj/machinery/appliance/mixer/toggle_power()
+<<<<<<< HEAD
set src in view()
+=======
+ set src in view(1)
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
set name = "Toggle Power"
set category = "Object"
diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm
index 3e40412b1b0..1fe2500cf00 100644
--- a/code/modules/food/kitchen/microwave.dm
+++ b/code/modules/food/kitchen/microwave.dm
@@ -268,7 +268,11 @@
return
start()
if(reagents.total_volume==0 && !(locate(/obj) in ((contents - component_parts) - circuit))) //dry run
+<<<<<<< HEAD
if(!wzhzhzh(16)) //VOREStation Edit - Quicker Microwaves (Undone during Auroraport, left note in case of reversion, was 5)
+=======
+ if(!wzhzhzh(16))
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
abort()
return
abort()
@@ -279,23 +283,39 @@
if(!recipe)
dirty += 1
if(prob(max(10,dirty*5)))
+<<<<<<< HEAD
if(!wzhzhzh(16)) //VOREStation Edit - Quicker Microwaves (Undone during Auroraport, left note in case of reversion, was 2)
abort()
return
muck_start()
wzhzhzh(2) //VOREStation Edit - Quicker Microwaves (Undone during Auroraport, left note in case of reversion, was 2)
+=======
+ if(!wzhzhzh(16))
+ abort()
+ return
+ muck_start()
+ wzhzhzh(2)
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
muck_finish()
cooked = fail()
cooked.forceMove(src.loc)
else if(has_extra_item())
+<<<<<<< HEAD
if(!wzhzhzh(16)) //VOREStation Edit - Quicker Microwaves (Undone during Auroraport, left note in case of reversion, was 2)
+=======
+ if(!wzhzhzh(16))
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
abort()
return
broke()
cooked = fail()
cooked.forceMove(src.loc)
else
+<<<<<<< HEAD
if(!wzhzhzh(40)) //VOREStation Edit - Quicker Microwaves (Undone during Auroraport, left note in case of reversion, was 5)
+=======
+ if(!wzhzhzh(40))
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
abort()
return
stop()
@@ -304,7 +324,11 @@
return
//Making multiple copies of a recipe
+<<<<<<< HEAD
var/halftime = round(recipe.time*4/10/2) // VOREStation Edit - Quicker Microwaves (Undone during Auroraport, left note in case of reversion, was round(recipe.time/20/2))
+=======
+ var/halftime = round(recipe.time*4/10/2)
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
if(!wzhzhzh(halftime))
abort()
return
@@ -359,7 +383,11 @@
if (stat & (NOPOWER|BROKEN))
return 0
use_power(active_power_usage)
+<<<<<<< HEAD
sleep(5) //VOREStation Edit - Quicker Microwaves
+=======
+ sleep(10)
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
return 1
/obj/machinery/microwave/proc/has_extra_item() //- coded to have different microwaves be able to handle different items
@@ -519,7 +547,11 @@
..()
reagents.maximum_volume = 1000
+<<<<<<< HEAD
/datum/recipe/splat // We use this to handle cooking micros (or mice, etc) in a microwave. Janky but it works better than snowflake code to handle the same thing.
+=======
+/datum/recipe/splat // We use this to handle cooking mice or other smaller/similar-size mobs in a microwave. Janky but it works better than snowflake code to handle the same thing.
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
items = list(
/obj/item/weapon/holder
)
diff --git a/code/modules/food/recipe.dm b/code/modules/food/recipe.dm
index e5b5a02eb04..6a90986c163 100644
--- a/code/modules/food/recipe.dm
+++ b/code/modules/food/recipe.dm
@@ -71,6 +71,7 @@
// This is a bitfield, more than one type can be used
// Grill is presently unused and not listed
+<<<<<<< HEAD
/datum/recipe/proc/check_reagents(var/datum/reagents/avail_reagents)
if(!reagents || !reagents.len)
return 1
@@ -96,6 +97,33 @@
return 1
. = 1
+=======
+/datum/recipe/proc/check_reagents(var/datum/reagents/avail_reagents, var/exact = 0)
+ if(!reagents || !reagents.len)
+ return TRUE
+
+ if(!avail_reagents)
+ return FALSE
+
+ . = TRUE
+ for(var/r_r in reagents)
+ var/aval_r_amnt = avail_reagents.get_reagent_amount(r_r)
+ if(aval_r_amnt - reagents[r_r] >= 0)
+ if(aval_r_amnt>(reagents[r_r] && exact))
+ . = FALSE
+ else
+ return FALSE
+
+ if((reagents?(reagents.len):(0)) < avail_reagents.reagent_list.len)
+ return FALSE
+ return .
+
+/datum/recipe/proc/check_fruit(var/obj/container, var/exact = 0)
+ if (!fruit || !fruit.len)
+ return TRUE
+
+ . = TRUE
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
if(fruit && fruit.len)
var/list/checklist = list()
// You should trust Copy().
@@ -107,6 +135,7 @@
checklist[G.seed.kitchen_tag]--
for(var/ktag in checklist)
if(!isnull(checklist[ktag]))
+<<<<<<< HEAD
if(checklist[ktag] < 0)
. = 0
else if(checklist[ktag] > 0)
@@ -119,6 +148,20 @@
return 1
. = 1
+=======
+ if(checklist[ktag] < 0 && exact)
+ . = FALSE
+ else if(checklist[ktag] > 0)
+ . = FALSE
+ break
+ return .
+
+/datum/recipe/proc/check_items(var/obj/container as obj, var/exact = 0)
+ if(!items || !items.len)
+ return TRUE
+
+ . = TRUE
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
if(items && items.len)
var/list/checklist = list()
checklist = items.Copy() // You should really trust Copy
@@ -127,25 +170,41 @@
for(var/obj/O in ((machine.contents - machine.component_parts) - machine.circuit))
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown))
continue // Fruit is handled in check_fruit().
+<<<<<<< HEAD
var/found = 0
+=======
+ var/found = FALSE
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
for(var/i = 1; i < checklist.len+1; i++)
var/item_type = checklist[i]
if (istype(O,item_type))
checklist.Cut(i, i+1)
+<<<<<<< HEAD
found = 1
break
if(!found)
. = 0
+=======
+ found = TRUE
+ break
+ if(!found && exact)
+ return FALSE
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
else
for(var/obj/O in container.contents)
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown))
continue // Fruit is handled in check_fruit().
+<<<<<<< HEAD
var/found = 0
+=======
+ var/found = FALSE
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
for(var/i = 1; i < checklist.len+1; i++)
var/item_type = checklist[i]
if (istype(O,item_type))
if(check_coating(O))
checklist.Cut(i, i+1)
+<<<<<<< HEAD
found = 1
break
if (!found)
@@ -161,16 +220,42 @@
if (coating == -1)
return 1 //-1 value doesnt care
+=======
+ found = TRUE
+ break
+ if (!found && exact)
+ return FALSE
+ if(checklist.len)
+ return FALSE
+ return .
+
+//This is called on individual items within the container.
+/datum/recipe/proc/check_coating(var/obj/O, var/exact = FALSE)
+ if(!istype(O,/obj/item/weapon/reagent_containers/food/snacks))
+ return TRUE //Only snacks can be battered
+
+ if (coating == -1)
+ return TRUE //-1 value doesnt care
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
var/obj/item/weapon/reagent_containers/food/snacks/S = O
if (!S.coating)
if (!coating)
+<<<<<<< HEAD
return 1
return 0
else if (S.coating.type == coating)
return 1
return 0
+=======
+ return TRUE
+ return FALSE
+ else if (S.coating.type == coating)
+ return TRUE
+
+ return FALSE
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
//general version
/datum/recipe/proc/make(var/obj/container as obj)
@@ -308,7 +393,11 @@
/proc/select_recipe(var/list/datum/recipe/available_recipes, var/obj/obj as obj, var/exact)
var/list/datum/recipe/possible_recipes = list()
for (var/datum/recipe/recipe in available_recipes)
+<<<<<<< HEAD
if((recipe.check_reagents(obj.reagents) < exact) || (recipe.check_items(obj) < exact) || (recipe.check_fruit(obj) < exact))
+=======
+ if(!recipe.check_reagents(obj.reagents, exact) || !recipe.check_items(obj, exact) || !recipe.check_fruit(obj, exact))
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
continue
possible_recipes |= recipe
if (!possible_recipes.len)
diff --git a/code/modules/food/recipes_fryer.dm b/code/modules/food/recipes_fryer.dm
index b0347d154d9..30963429ee0 100644
--- a/code/modules/food/recipes_fryer.dm
+++ b/code/modules/food/recipes_fryer.dm
@@ -6,6 +6,10 @@
result = /obj/item/weapon/reagent_containers/food/snacks/fries
/datum/recipe/cheesyfries
+<<<<<<< HEAD
+=======
+ appliance = FRYER
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
items = list(
/obj/item/weapon/reagent_containers/food/snacks/fries,
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
@@ -100,6 +104,7 @@
)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/poisonberry
+<<<<<<< HEAD
/datum/recipe/jellydonut/slime
appliance = FRYER
reagents = list("slimejelly" = 5, "sugar" = 5)
@@ -107,6 +112,13 @@
/datum/recipe/jellydonut/cherry
appliance = FRYER
+=======
+/datum/recipe/jellydonut/slime // Subtypes of jellydonut, appliance inheritance applies.
+ reagents = list("slimejelly" = 5, "sugar" = 5)
+ result = /obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly
+
+/datum/recipe/jellydonut/cherry // Subtypes of jellydonut, appliance inheritance applies.
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
reagents = list("cherryjelly" = 5, "sugar" = 5)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly
@@ -158,6 +170,7 @@
)
reagents = list("soysauce" = 5, "batter" = 10)
result = /obj/item/weapon/reagent_containers/food/snacks/sweet_and_sour
+<<<<<<< HEAD
/datum/recipe/generalschicken
appliance = FRYER
@@ -177,4 +190,6 @@
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/meat
)
- result = /obj/item/weapon/storage/box/wings //This is kinda like the donut box.
\ No newline at end of file
+ result = /obj/item/weapon/storage/box/wings //This is kinda like the donut box.
+=======
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm
index 1245c7e0211..aeab2acc33e 100644
--- a/code/modules/food/recipes_microwave.dm
+++ b/code/modules/food/recipes_microwave.dm
@@ -208,10 +208,18 @@ I said no!
/datum/recipe/amanitajelly
reagents = list("water" = 5, "vodka" = 5, "amatoxin" = 5)
result = /obj/item/weapon/reagent_containers/food/snacks/amanitajelly
+<<<<<<< HEAD
make_food(var/obj/container as obj)
. = ..(container)
for(var/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/being_cooked in .)
being_cooked.reagents.del_reagent("amatoxin")
+=======
+
+/datum/recipe/amanitajelly/make_food(var/obj/container as obj)
+ . = ..(container)
+ for(var/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/being_cooked in .)
+ being_cooked.reagents.del_reagent("amatoxin")
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
/datum/recipe/meatballsoup
fruit = list("carrot" = 1, "potato" = 1)
@@ -531,12 +539,21 @@ I said no!
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
+<<<<<<< HEAD
make_food(var/obj/container as obj)
. = ..(container)
for (var/obj/item/weapon/reagent_containers/food/snacks/validsalad/being_cooked in .)
being_cooked.reagents.del_reagent("toxin")
+=======
+
+/datum/recipe/validsalad/make_food(var/obj/container as obj)
+ . = ..(container)
+ for (var/obj/item/weapon/reagent_containers/food/snacks/validsalad/being_cooked in .)
+ being_cooked.reagents.del_reagent("toxin")
+
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
/datum/recipe/stuffing
reagents = list("water" = 5, "sodiumchloride" = 1, "blackpepper" = 1)
items = list(
@@ -1010,6 +1027,7 @@ I said no!
reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product
result = /obj/item/weapon/reagent_containers/food/snacks/honeytoast
+<<<<<<< HEAD
/datum/recipe/donerkebab
fruit = list("tomato" = 1, "cabbage" = 1)
@@ -1021,6 +1039,8 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/donerkebab
+=======
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
/datum/recipe/sashimi
reagents = list("soysauce" = 5)
items = list(
@@ -1028,7 +1048,10 @@ I said no!
)
result = /obj/item/weapon/reagent_containers/food/snacks/sashimi
+<<<<<<< HEAD
+=======
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
/datum/recipe/nugget
reagents = list("flour" = 5)
items = list(
@@ -1312,6 +1335,7 @@ I said no!
/obj/item/weapon/reagent_containers/food/snacks/bacon
)
result = /obj/item/weapon/reagent_containers/food/snacks/porkbowl
+<<<<<<< HEAD
/datum/recipe/sushi
fruit = list("cabbage" = 1)
@@ -1392,3 +1416,5 @@ I said no!
)
result = /obj/item/weapon/reagent_containers/food/snacks/makaroni
+=======
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
diff --git a/code/modules/food/recipes_oven.dm b/code/modules/food/recipes_oven.dm
index 3f89560372a..e7198cbe4b1 100644
--- a/code/modules/food/recipes_oven.dm
+++ b/code/modules/food/recipes_oven.dm
@@ -83,6 +83,10 @@
result = /obj/item/weapon/reagent_containers/food/snacks/flatbread
/datum/recipe/tortilla
+<<<<<<< HEAD
+=======
+ appliance = OVEN
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
reagents = list("flour" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
index a70f4777796..5d522ae8f6f 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
@@ -69,6 +69,7 @@
/datum/reagent/nutriment/coating/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
//We'll assume that the batter isnt going to be regurgitated and eaten by someone else. Only show this once
+<<<<<<< HEAD
if (data["cooked"] != 1)
if (!messaged)
to_chat(M, "Ugh, this raw [name] tastes disgusting.")
@@ -77,6 +78,16 @@
//Raw coatings will sometimes cause vomiting
if (prob(1))
+=======
+ if(data["cooked"] != 1)
+ if (!messaged)
+ to_chat(M, "Ugh, this raw [name] tastes disgusting.")
+ nutriment_factor *= 0.5
+ messaged = 1
+
+ //Raw coatings will sometimes cause vomiting. 75% chance of this happening.
+ if(prob(75))
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
M.vomit()
..()
diff --git a/code/modules/research/designs/circuits/circuits.dm b/code/modules/research/designs/circuits/circuits.dm
index 28e76ceac98..980dfb96e66 100644
--- a/code/modules/research/designs/circuits/circuits.dm
+++ b/code/modules/research/designs/circuits/circuits.dm
@@ -625,6 +625,10 @@ CIRCUITS BELOW
req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4)
build_path = /obj/item/weapon/circuitboard/microwave/advanced
sort_string = "HACAA"
+<<<<<<< HEAD
+=======
+
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
/datum/design/circuit/shield_generator
name = "shield generator"
diff --git a/html/changelogs/rykka-stormheart-pr-7344.yml b/html/changelogs/rykka-stormheart-pr-7344.yml
new file mode 100644
index 00000000000..e8394c72cb6
--- /dev/null
+++ b/html/changelogs/rykka-stormheart-pr-7344.yml
@@ -0,0 +1,43 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: Rykka Stormheart
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "Ported over Aurora Cooking from AuroraStation and Citadel-RP!"
+ - rscadd: "Refactored Recipes to be separated per-appliance, and all appliances have a use!"
+ - rscadd: "Please take note, Chefs, to pre-heat you appliances at the start of your shift."
+ - rscadd: "Fryer Recipes require batter before they can be made!"
+ - rscadd: "Fire alarms will go off if you burn food!"
+ - rscadd: "The largest change - Cooking takes TIME. Around 6 minutes for the largest recipes in the game."
+ - rscadd: "Too many other changes to list - refer to PR #7344 https://github.com/PolarisSS13/Polaris/pull/7344"
+ - rscdel: "Removed fun, and any sense of joy in the game."
diff --git a/maps/submaps/surface_submaps/plains/Diner.dmm b/maps/submaps/surface_submaps/plains/Diner.dmm
index 69f2b63996c..a462d83e12d 100644
--- a/maps/submaps/surface_submaps/plains/Diner.dmm
+++ b/maps/submaps/surface_submaps/plains/Diner.dmm
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
/turf/template_noop,
@@ -1130,3 +1131,489 @@ aa
aa
aa
"}
+=======
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aa" = (
+/turf/template_noop,
+/area/template_noop)
+"ab" = (
+/turf/template_noop,
+/area/submap/Diner)
+"ac" = (
+/turf/simulated/floor/outdoors/dirt,
+/area/submap/Diner)
+"ad" = (
+/turf/simulated/wall,
+/area/submap/Diner)
+"ae" = (
+/obj/structure/window/reinforced/full,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"af" = (
+/obj/effect/floor_decal/corner/red/diagonal,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"ag" = (
+/obj/structure/table/standard,
+/obj/machinery/microwave,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"ah" = (
+/obj/structure/table/standard,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"ai" = (
+/obj/structure/table/standard,
+/obj/item/weapon/reagent_containers/food/condiment/enzyme,
+/obj/item/weapon/reagent_containers/glass/beaker,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aj" = (
+/obj/structure/table/standard,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/item/weapon/material/knife/butch,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"ak" = (
+/obj/machinery/vending/cola,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"al" = (
+/obj/machinery/vending/dinnerware,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"am" = (
+/obj/structure/sink/kitchen,
+/turf/simulated/wall,
+/area/submap/Diner)
+"an" = (
+/obj/structure/flora/tree/sif,
+/turf/template_noop,
+/area/submap/Diner)
+"ao" = (
+/obj/structure/bed/chair/wood{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/red/diagonal,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"ap" = (
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aq" = (
+/obj/effect/floor_decal/corner/red/diagonal,
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"ar" = (
+/obj/effect/floor_decal/corner/red/diagonal,
+/obj/structure/table/standard,
+/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker,
+/obj/item/weapon/material/kitchen/utensil/fork,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"as" = (
+/obj/effect/floor_decal/corner/red/diagonal,
+/obj/structure/table/standard,
+/obj/item/weapon/reagent_containers/food/condiment/small/peppermill,
+/obj/machinery/light{
+ icon_state = "tube1";
+ dir = 4
+ },
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"at" = (
+/obj/machinery/light{
+ dir = 8;
+ icon_state = "tube1";
+ pixel_y = 0
+ },
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"au" = (
+/obj/structure/table/standard,
+/obj/item/weapon/book/manual/chef_recipes,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"av" = (
+/obj/structure/table/standard,
+/obj/item/weapon/material/kitchen/rollingpin,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aw" = (
+/obj/machinery/appliance/mixer/cereal,
+/obj/machinery/light{
+ icon_state = "tube1";
+ dir = 4
+ },
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"ax" = (
+/obj/structure/bed/chair/wood,
+/obj/effect/floor_decal/corner/red/diagonal,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"ay" = (
+/obj/structure/closet/secure_closet/freezer/fridge,
+/obj/item/weapon/storage/fancy/egg_box,
+/obj/item/weapon/storage/fancy/egg_box,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/milk,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/milk,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/milk,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/cream,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/cream,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/cream,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/cream,
+/obj/item/weapon/reagent_containers/food/condiment/sugar,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"az" = (
+/obj/structure/simple_door/wood,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aA" = (
+/obj/structure/simple_door/wood,
+/turf/simulated/floor/tiled,
+/area/submap/Diner)
+"aB" = (
+/obj/structure/simple_door/wood,
+/turf/simulated/floor/tiled/freezer,
+/area/submap/Diner)
+"aC" = (
+/obj/structure/table/standard,
+/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker,
+/obj/effect/floor_decal/corner/red/diagonal,
+/obj/item/weapon/material/kitchen/utensil/fork,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aD" = (
+/obj/structure/table/standard,
+/obj/item/weapon/reagent_containers/food/condiment/small/peppermill,
+/obj/effect/floor_decal/corner/red/diagonal,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aE" = (
+/obj/effect/floor_decal/corner/red/diagonal,
+/obj/item/weapon/stool/padded,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aF" = (
+/obj/structure/table/standard,
+/obj/effect/floor_decal/corner/red/diagonal,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aG" = (
+/turf/simulated/floor/tiled,
+/area/submap/Diner)
+"aH" = (
+/turf/simulated/floor/tiled/freezer,
+/area/submap/Diner)
+"aI" = (
+/obj/structure/closet/crate/freezer,
+/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/meat,
+/obj/item/weapon/reagent_containers/food/snacks/meat,
+/obj/item/weapon/reagent_containers/food/snacks/meat,
+/obj/item/weapon/reagent_containers/food/snacks/meat,
+/turf/simulated/floor/tiled/freezer,
+/area/submap/Diner)
+"aJ" = (
+/obj/structure/table/standard,
+/obj/effect/floor_decal/corner/red/diagonal,
+/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aK" = (
+/obj/effect/floor_decal/corner/red/diagonal,
+/obj/machinery/light{
+ icon_state = "tube1";
+ dir = 4
+ },
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aL" = (
+/obj/machinery/light/small{
+ brightness_color = "#DA0205";
+ brightness_power = 1;
+ brightness_range = 5;
+ dir = 8
+ },
+/turf/simulated/floor/tiled,
+/area/submap/Diner)
+"aM" = (
+/obj/machinery/light/small{
+ brightness_color = "#DA0205";
+ brightness_power = 1;
+ brightness_range = 5;
+ dir = 8
+ },
+/turf/simulated/floor/tiled/freezer,
+/area/submap/Diner)
+"aN" = (
+/obj/structure/closet/crate/freezer,
+/obj/machinery/light/small{
+ dir = 4
+ },
+/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/meat,
+/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/meat,
+/turf/simulated/floor/tiled/freezer,
+/area/submap/Diner)
+"aO" = (
+/obj/structure/table/standard,
+/obj/effect/floor_decal/corner/red/diagonal,
+/obj/item/weapon/reagent_containers/food/condiment/small/peppermill,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aP" = (
+/obj/effect/floor_decal/corner/red/diagonal,
+/obj/structure/table/standard,
+/obj/machinery/microwave,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aQ" = (
+/obj/structure/closet/crate/freezer,
+/obj/item/weapon/reagent_containers/food/condiment/flour,
+/obj/item/weapon/reagent_containers/food/condiment/flour,
+/obj/item/weapon/reagent_containers/food/condiment/flour,
+/obj/item/weapon/reagent_containers/food/condiment/flour,
+/obj/item/weapon/reagent_containers/food/condiment/flour,
+/obj/item/weapon/reagent_containers/food/condiment/flour,
+/obj/item/weapon/reagent_containers/food/condiment/flour,
+/turf/simulated/floor/tiled/freezer,
+/area/submap/Diner)
+"aR" = (
+/obj/effect/floor_decal/corner/red/diagonal,
+/obj/structure/coatrack,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aS" = (
+/obj/effect/floor_decal/corner/red/diagonal,
+/obj/structure/table/standard,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aT" = (
+/obj/structure/closet/crate/freezer,
+/turf/simulated/floor/tiled/freezer,
+/area/submap/Diner)
+"aU" = (
+/obj/machinery/gibber,
+/turf/simulated/floor/tiled/freezer,
+/area/submap/Diner)
+"aV" = (
+/obj/machinery/light/small,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aW" = (
+/obj/machinery/appliance/cooker/fryer,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aX" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/simulated/floor/outdoors/dirt,
+/area/submap/Diner)
+"aY" = (
+/obj/effect/floor_decal/corner/red/diagonal,
+/obj/machinery/light{
+ dir = 8;
+ icon_state = "tube1";
+ pixel_y = 0
+ },
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"aZ" = (
+/obj/effect/floor_decal/corner/red/diagonal,
+/obj/machinery/appliance/cooker/grill,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"ba" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/tiled,
+/area/submap/Diner)
+"bb" = (
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/submap/Diner)
+"bc" = (
+/obj/machinery/light{
+ icon_state = "tube1";
+ dir = 4
+ },
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"bd" = (
+/obj/effect/floor_decal/corner/red/diagonal,
+/obj/structure/closet/secure_closet/freezer/fridge,
+/obj/item/weapon/storage/fancy/egg_box,
+/obj/item/weapon/storage/fancy/egg_box,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/milk,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/milk,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/milk,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/milk,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/cream,
+/obj/item/weapon/reagent_containers/food/drinks/bottle/cream,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"be" = (
+/obj/structure/table/standard,
+/obj/machinery/chemical_dispenser/bar_coffee,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"bf" = (
+/obj/item/frame/apc,
+/turf/simulated/floor/lino,
+/area/submap/Diner)
+"bg" = (
+/obj/structure/table/woodentable,
+/obj/item/device/flashlight/lamp,
+/turf/simulated/floor/lino,
+/area/submap/Diner)
+"bh" = (
+/obj/structure/bed/chair/office/light,
+/turf/simulated/floor/lino,
+/area/submap/Diner)
+"bi" = (
+/turf/simulated/floor/lino,
+/area/submap/Diner)
+"bk" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/turf/simulated/floor/lino,
+/area/submap/Diner)
+"bl" = (
+/obj/structure/table/woodentable,
+/obj/item/weapon/cell/high,
+/turf/simulated/floor/lino,
+/area/submap/Diner)
+"bm" = (
+/obj/structure/table/woodentable,
+/turf/simulated/floor/lino,
+/area/submap/Diner)
+"bn" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/simulated/floor/lino,
+/area/submap/Diner)
+"bo" = (
+/obj/structure/simple_door/wood,
+/turf/simulated/floor/lino,
+/area/submap/Diner)
+"bp" = (
+/obj/effect/floor_decal/corner/red/diagonal,
+/obj/structure/windoor_assembly{
+ icon_state = "l_windoor_assembly01";
+ dir = 2
+ },
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"bq" = (
+/obj/structure/bookcase,
+/turf/simulated/floor/lino,
+/area/submap/Diner)
+"br" = (
+/obj/effect/floor_decal/corner/red/diagonal,
+/obj/machinery/space_heater,
+/obj/machinery/light,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"bs" = (
+/obj/structure/sink{
+ icon_state = "sink";
+ dir = 8;
+ pixel_x = -12;
+ pixel_y = 2
+ },
+/turf/simulated/floor/tiled/hydro,
+/area/submap/Diner)
+"bt" = (
+/turf/simulated/floor/tiled/hydro,
+/area/submap/Diner)
+"bu" = (
+/obj/structure/toilet,
+/turf/simulated/floor/tiled/hydro,
+/area/submap/Diner)
+"bv" = (
+/obj/structure/bed/chair/wood{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/red/diagonal,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"bw" = (
+/obj/structure/bed/chair/wood{
+ dir = 8
+ },
+/obj/effect/floor_decal/corner/red/diagonal,
+/turf/simulated/floor/tiled/white,
+/area/submap/Diner)
+"bx" = (
+/obj/structure/simple_door/wood,
+/turf/simulated/floor/tiled/hydro,
+/area/submap/Diner)
+"by" = (
+/obj/structure/mirror{
+ dir = 4;
+ pixel_x = -32;
+ pixel_y = 0
+ },
+/turf/simulated/floor/tiled/hydro,
+/area/submap/Diner)
+"bz" = (
+/obj/machinery/light/small,
+/turf/simulated/floor/tiled/hydro,
+/area/submap/Diner)
+"bA" = (
+/obj/structure/table/standard,
+/turf/simulated/floor/tiled/hydro,
+/area/submap/Diner)
+
+(1,1,1) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaabababacabababababadaeaeadadadadadadadadabababaa
+aaabababacacabababadadafafadagahaiajakalamadababaa
+aaabanacacacababadadafaxaxadapapapapapapapadadabaa
+aaababacacacabadadaqafarasadatapauahavapapawadadaa
+aaababacacacabadafafafaoaoadapapapapapapapapayadaa
+aaababacacacabaeaxaxafafafadazazadaAadadaBadadadaa
+aaababacacacabaeaCaDafafaEaFafafadaGadaHaHaHaIadaa
+aaababacacacabaeaoaoafafaEaJafaKadaLadaMaHaHaNadaa
+aaababacacacabadafafafafaEaOafaPadaGadaQaHaHaHadaa
+aaababacacacacadadadaRafaEaFafaSadaGadaTaHaHaUadaa
+aaababacacacacazaVazafafaEaFafaWadaGadadadadadadaa
+aaababacacacaXadadadaYafaEaFafaZadaGbabbaGaAbbaAaa
+aaanabacacacabaeaxaxafafaEaFafbcadbabababaaAaGaAaa
+aaababacacacabaeaCaDafafaEaFafbdadbaadadadadadadaa
+aaababacacacabaeaoaoafafaEaFafbeadaGadbfbgbhbiadaa
+aaababacacacabadaxaxafafaEaOafahadaGadbkblbmbnadaa
+aaababacacacabaeaCaDafafaEaJafaKadaLbobibibibiadaa
+aaababacacacabaeaoaoafafaEaFahbpadaGadbibibqbqadaa
+aaababacacacabaeafafafafafafafafadadadadadadadadaa
+aaababacacacabadadbrafafafafafafadbsbtbuadadadadaa
+aaabababacabababadadafafbvaDbwafbxbtbtbtadadadabaa
+aaabanababababababadadafbvaCbwafadbybzbAadadababaa
+aaabababababababababadadaeaeaeadadadadadadabababaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+"}
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
diff --git a/maps/submaps/surface_submaps/wilderness/Manor1.dmm b/maps/submaps/surface_submaps/wilderness/Manor1.dmm
index 311e2b7bb14..2d00027ba4c 100644
--- a/maps/submaps/surface_submaps/wilderness/Manor1.dmm
+++ b/maps/submaps/surface_submaps/wilderness/Manor1.dmm
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
"aa" = (/turf/template_noop,/area/submap/Manor1)
"ab" = (/turf/simulated/wall/wood,/area/submap/Manor1)
"ac" = (/obj/structure/window/reinforced/full,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
@@ -185,4 +186,194 @@ cNaaaaaaaaaaaaaaaaababcwcFcGabcwcJabcKcLabaaaaaaaaaaaaaaaaaaaaaaaaabcMalalagagag
cNaaaaaacOaaaaaaaaaaabababababababababababaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababaaaaaaaaaaaaaacN
cNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacN
cNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcN
-"}
\ No newline at end of file
+"}
+=======
+"aa" = (/turf/template_noop,/area/submap/Manor1)
+"ab" = (/turf/simulated/wall/wood,/area/submap/Manor1)
+"ac" = (/obj/structure/window/reinforced/full,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"ad" = (/obj/structure/bed/chair/wood{icon_state = "wooden_chair"; dir = 4},/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"ae" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"af" = (/obj/structure/bed/chair/wood{icon_state = "wooden_chair"; dir = 8},/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"ag" = (/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"ah" = (/obj/structure/flora/pottedplant/dead,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"ai" = (/obj/structure/flora/pottedplant/drooping,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aj" = (/obj/structure/table/woodentable,/obj/item/clothing/mask/smokable/cigarette/cigar,/obj/item/weapon/material/ashtray/glass,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"ak" = (/obj/structure/flora/pottedplant/dead,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"al" = (/obj/structure/table/woodentable,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"am" = (/obj/structure/table/woodentable,/obj/item/device/flashlight,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"an" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"ao" = (/obj/structure/mopbucket,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"ap" = (/obj/structure/sink,/turf/simulated/wall/wood,/area/submap/Manor1)
+"aq" = (/turf/simulated/floor/carpet/bcarpet,/area/submap/Manor1)
+"ar" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/carpet/bcarpet,/area/submap/Manor1)
+"as" = (/obj/structure/simple_door/wood,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"at" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/obj/effect/decal/cleanable/blood/gibs/robot,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"au" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"av" = (/obj/structure/janitorialcart,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aw" = (/obj/structure/table/woodentable,/obj/item/weapon/mop,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"ax" = (/obj/structure/closet/cabinet,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"ay" = (/obj/effect/decal/cleanable/blood/gibs/robot/limb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"az" = (/obj/structure/table/woodentable,/obj/item/trash/candle,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aA" = (/obj/effect/decal/cleanable/dirt,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aB" = (/obj/effect/decal/cleanable/dirt,/obj/effect/spider/stickyweb,/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aC" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/maglight,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aD" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aE" = (/obj/structure/closet/cabinet,/obj/effect/decal/cleanable/cobweb2,/obj/item/clothing/head/hood/winter,/obj/item/clothing/shoes/boots/winter,/obj/item/clothing/suit/storage/hooded/wintercoat,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aF" = (/obj/structure/table/woodentable,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aG" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aH" = (/obj/structure/table/woodentable,/obj/item/weapon/pen,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aI" = (/obj/structure/flora/pottedplant/dead,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aJ" = (/obj/effect/spider/stickyweb,/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aK" = (/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aL" = (/obj/structure/fireplace,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aM" = (/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aN" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aO" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aP" = (/obj/structure/bed/chair/wood,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aQ" = (/turf/simulated/floor/carpet/purcarpet,/area/submap/Manor1)
+"aR" = (/obj/structure/table/standard,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aS" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aT" = (/obj/structure/closet/cabinet,/obj/random/projectile/shotgun,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aU" = (/obj/structure/bookcase,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aV" = (/obj/structure/table/woodentable,/obj/item/weapon/material/kitchen/utensil/fork,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aW" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/condiment/small/peppermill,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aX" = (/obj/structure/table/standard,/obj/item/weapon/material/knife,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aY" = (/obj/machinery/appliance/cooker/oven,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"aZ" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"ba" = (/obj/machinery/appliance/cooker/grill,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bb" = (/obj/structure/table/standard,/obj/item/weapon/tray,/obj/item/weapon/tray,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bc" = (/obj/structure/table/standard,/obj/item/weapon/material/knife/butch,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bd" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle,/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"be" = (/obj/random/trash,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bf" = (/obj/structure/closet/cabinet,/obj/item/clothing/head/hood/winter,/obj/item/clothing/shoes/boots/winter,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/random/contraband,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bg" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bh" = (/obj/structure/bed/chair/wood{icon_state = "wooden_chair"; dir = 1},/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bi" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/wood{icon_state = "wood_broken0"},/area/submap/Manor1)
+"bj" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bk" = (/obj/random/plushielarge,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bl" = (/turf/simulated/floor/carpet/blucarpet,/area/submap/Manor1)
+"bm" = (/obj/structure/loot_pile/surface/bones,/obj/item/clothing/accessory/sweater/blue,/turf/simulated/floor/carpet/blucarpet,/area/submap/Manor1)
+"bn" = (/obj/structure/window/reinforced/full,/turf/template_noop,/area/submap/Manor1)
+"bo" = (/obj/item/weapon/material/twohanded/baseballbat/metal,/turf/simulated/floor/carpet/blucarpet,/area/submap/Manor1)
+"bp" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/carpet/blucarpet,/area/submap/Manor1)
+"bq" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"br" = (/obj/structure/bed/chair/comfy/purp{icon_state = "comfychair_preview"; dir = 4},/turf/simulated/floor/holofloor/wood{icon_state = "wood_broken5"},/area/submap/Manor1)
+"bs" = (/obj/structure/table,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bt" = (/obj/structure/bed/chair/wood{icon_state = "wooden_chair"; dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bu" = (/obj/structure/bed/chair/wood{icon_state = "wooden_chair"; dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bv" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/condiment/small/sugar,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bw" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/carpet/blucarpet,/area/submap/Manor1)
+"bx" = (/obj/structure/bed/chair/comfy/purp{icon_state = "comfychair_preview"; dir = 4},/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"by" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/item/clothing/head/hood/winter,/obj/item/clothing/shoes/boots/winter,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bz" = (/obj/structure/table/woodentable,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bA" = (/obj/structure/table/standard,/obj/item/weapon/material/kitchen/utensil/fork,/obj/item/weapon/material/kitchen/utensil/fork,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bB" = (/obj/structure/closet/secure_closet/freezer/fridge,/obj/item/weapon/reagent_containers/food/snacks/stew,/obj/item/weapon/reagent_containers/food/snacks/stew,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bC" = (/obj/item/weapon/shovel,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bD" = (/obj/structure/bed/chair/wood{icon_state = "wooden_chair"; dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bE" = (/obj/structure/table/standard,/obj/item/weapon/material/kitchen/utensil/spoon,/obj/item/weapon/material/kitchen/utensil/spoon,/obj/item/weapon/material/kitchen/utensil/spoon,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bF" = (/obj/structure/table/standard,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bG" = (/obj/structure/closet/secure_closet/freezer/fridge,/obj/item/weapon/reagent_containers/food/snacks/sausage,/obj/item/weapon/reagent_containers/food/snacks/sausage,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bH" = (/obj/effect/decal/cleanable/dirt,/obj/structure/flora/pottedplant/drooping,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bI" = (/obj/effect/decal/cleanable/dirt,/obj/structure/flora/pottedplant/dead,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bJ" = (/obj/structure/table/standard,/obj/item/weapon/material/kitchen/rollingpin,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bK" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bL" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/fancy/candle_box,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bM" = (/obj/machinery/papershredder,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bN" = (/obj/structure/simple_door/wood,/turf/simulated/floor/carpet/purcarpet,/area/submap/Manor1)
+"bO" = (/obj/machinery/icecream_vat,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bP" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/carpet/blucarpet,/area/submap/Manor1)
+"bQ" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bR" = (/obj/effect/decal/cleanable/cobweb,/obj/structure/table/woodentable,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bS" = (/obj/structure/flora/pottedplant/subterranean,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bT" = (/obj/item/weapon/material/minihoe,/turf/simulated/floor/carpet/blucarpet,/area/submap/Manor1)
+"bU" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/carpet/purcarpet,/area/submap/Manor1)
+"bV" = (/turf/simulated/floor/holofloor/wood{icon_state = "wood_broken6"},/area/submap/Manor1)
+"bW" = (/obj/machinery/washing_machine,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bX" = (/obj/structure/table/woodentable,/obj/structure/bedsheetbin,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bY" = (/obj/structure/table/rack,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"bZ" = (/obj/structure/closet/crate,/obj/item/stack/cable_coil/random_belt,/obj/random/cash,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"ca" = (/obj/structure/table/woodentable,/obj/item/weapon/melee/umbrella/random,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cb" = (/obj/structure/closet/cabinet,/obj/random/gun/random,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cc" = (/obj/structure/closet/cabinet,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/random/medical,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cd" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"ce" = (/obj/structure/bed/double,/obj/item/weapon/bedsheet/rddouble,/obj/structure/curtain/open/bed,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cf" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/wallet/random,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cg" = (/obj/structure/flora/pottedplant/dead,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"ch" = (/obj/structure/loot_pile/surface/bones,/obj/item/clothing/accessory/sweater,/turf/simulated/floor/carpet/blucarpet,/area/submap/Manor1)
+"ci" = (/obj/structure/closet/crate,/obj/item/weapon/flame/lighter/random,/obj/random/powercell,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cj" = (/obj/structure/closet/cabinet,/obj/item/clothing/shoes/boots/winter,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/item/clothing/head/hood/winter,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"ck" = (/obj/effect/decal/cleanable/spiderling_remains,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cl" = (/turf/simulated/floor/carpet/turcarpet,/area/submap/Manor1)
+"cm" = (/obj/effect/decal/cleanable/blood,/obj/structure/bed/chair/comfy/purp{icon_state = "comfychair_preview"; dir = 4},/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cn" = (/obj/structure/closet/crate,/obj/item/weapon/storage/wallet/random,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"co" = (/obj/structure/coatrack,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cp" = (/obj/structure/loot_pile/surface/bones,/obj/item/clothing/suit/storage/hooded/wintercoat,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cq" = (/obj/structure/loot_pile/surface/bones,/obj/item/clothing/under/suit_jacket,/obj/item/clothing/shoes/black,/obj/random/projectile/random,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cr" = (/obj/structure/simple_door/wood,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/carpet/purcarpet,/area/submap/Manor1)
+"cs" = (/obj/item/weapon/material/twohanded/spear,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"ct" = (/obj/structure/closet/cabinet{opened = 1},/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cu" = (/obj/effect/decal/remains,/obj/item/weapon/material/knife/tacknife/combatknife,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cv" = (/obj/structure/sink{pixel_y = 30},/turf/simulated/floor/tiled/hydro,/area/submap/Manor1)
+"cw" = (/turf/simulated/floor/tiled/hydro,/area/submap/Manor1)
+"cx" = (/obj/structure/table/standard,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/tiled/hydro,/area/submap/Manor1)
+"cy" = (/obj/structure/table/standard,/obj/item/weapon/towel/random,/obj/item/weapon/towel/random,/turf/simulated/floor/tiled/hydro,/area/submap/Manor1)
+"cz" = (/obj/effect/decal/cleanable/cobweb2,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cA" = (/obj/item/weapon/paper/crumpled,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cB" = (/turf/simulated/floor/holofloor/wood{icon_state = "wood_broken3"},/area/submap/Manor1)
+"cC" = (/obj/effect/decal/cleanable/spiderling_remains,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cD" = (/obj/structure/closet/crate,/obj/item/clothing/suit/armor/vest,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cE" = (/obj/structure/closet/crate,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cF" = (/obj/structure/simple_door/wood,/turf/simulated/floor/tiled/hydro,/area/submap/Manor1)
+"cG" = (/obj/structure/toilet{icon_state = "toilet00"; dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Manor1)
+"cH" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/hydro,/area/submap/Manor1)
+"cI" = (/obj/item/stack/material/wood,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cJ" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/obj/structure/curtain/open/shower,/obj/random/soap,/turf/simulated/floor/tiled/hydro,/area/submap/Manor1)
+"cK" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/hydro,/area/submap/Manor1)
+"cL" = (/obj/structure/toilet{icon_state = "toilet00"; dir = 1},/turf/simulated/floor/tiled/hydro,/area/submap/Manor1)
+"cM" = (/obj/structure/table/woodentable,/obj/item/modular_computer/laptop/preset/custom_loadout/cheap,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1)
+"cN" = (/turf/template_noop,/area/template_noop)
+"cO" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/Manor1)
+
+(1,1,1) = {"
+cNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcN
+cNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacababacacacacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacN
+cNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababadaeafagahaiagadajafababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacN
+cNaaaaaaaaaaaaaaaaababababababababababababagagagagagagagagagagagagababababababababababababababaaaaaaaaaaaacN
+cNaaaacOaaaaaaaaabababakagagagalamalagananagagagagananananagagagagagagagagalalalagagagaiabaoapabaaaacOaaaacN
+cNaaaaaaaaaaaaababalabagaqaqaqaqarararararararaqarararararararaqaqaqaqaqaqaqaqaqaqaqaqagasagagababaaaaaaaacN
+cNaaaaaaaaaaababatauabagaqaqaqaqaqaqaqarararararararararararararaqaqaqaqaqaqaqaqaqaqaqagabavagawababaaaaaacN
+cNaaaaaaaaaaabaxagayabagaqagagazalalaganananaAaBaAagananagagagagagagagagagalalaCagagaqagababababababaaaaaacN
+cNaaaaaaaaaaababasababagaqagabababababababababababababababababababababababababababagaqagabaDagagaEabaaaaaacN
+cNaaaaaacOaaabagagagasagaqagabaFaGagalaHabaIaJaKagagaLaLagagagagahabagaMagagagaNabagaqagabaOagagalabaaaaaacN
+cNaaaaaaaaaaabasabababagaqagabagagagagagabaKaKaPaPagaQaQagaPaPagagabaRagaRaRagaSabagaqagabababasababaaaaaacN
+cNaaaaaaaaaaabagagaTabagaqagabagaUagaUagabagadalaVafaQaQadaValafagabaRagaWaXagaYabalaqagasagagagagabaaaaaacN
+cNaaaaaaaaaaabagagaMabagaqagabagaUagaUagabagadalalafaQaQadalalafagabaRagaZaRagbaabagaqagabababasababaaaaaacN
+cNaaaaaaaaaaabaDalaOabagaqagabagaUagaUagabagadalalafaQaQadalalafagabbbagaRbcagbdabagaqagabaOagagalabaaaaaacN
+cNaaaaaaaaaaabababababagaqagabagagagaganabagadalalafaQaQadalalafagabagagagagagagabagaqagabaDbeagbfabaaaaaacN
+cNaaaaaaaaaaabaDalbgabalaqagabagaUagaUanabagadalalafaQaQadalalafagabagagagagagagabagaqagababababababaaaaaacN
+cNaaaaaaaaababagbhagabazaqagasagaUagaUanabagadaGalafaQaQadalalafagabagagagagagagabagaqagabbiagagagababaaaacN
+cNaaaaaaababbjagagbkabalaqagabagaUanaUanabagadalalafaQaQadalalafagabagagagagagagabagaqagabagblbmagagababaacN
+cNaaaaaabnagagagagaOabagaqanabanananananabanadalalafaQaQadalalafagasagagagagagagasagaqagasagbobpbqbrbsacaacN
+cNaaaaaabnagagagagalabagaranabagaUanaUagabanbtalalafaQaQadalalbuanabagagaRbvagagabagaqagabagblbwagbxbsacaacN
+cNaaaaaaababagagagbyabanaranabagaUanaUagabanbtalalafaQaQadalbzbuanabagagbAaRagbBabagaqagabagblblagbCababaacN
+cNaaaaaaaaababagagagabanaragabagaUanaUagabananbhbhagaQaQagbhbDananabagagbEbFagbGabagaqagabalblblagababaaaacN
+cNaaaaaaaaaaabagagagabagaragabagaganagagabbHananagagaQaQaganananbIabagagbFbJagbKabagaqagabaDblblalabaaaaaacN
+cNaaaaaaaaaaabagagagasagaqagabaGbLbMagaiababababababbNbNababababababbOaKaKaKagagabagaqagabalblblalabaaaaaacN
+cNaaaaaaaaaaabazalagabagaqagababababasabababababalalaQaQalalabababababababababababagaqagabalbwbPalabaaaaaacN
+cNaaaaaaaaaaabababababbQaqagagananananananananasagagaQaQagagasagagagagagagagagagagagaqagabazblbPalabaaaaaacN
+cNaaaaaaaaababbRazbSabbqaqagagagagananananananasagagaQaQagagasagagagagagagagagagagagaqagabalblbTagababaaaacN
+cNaaaaaaababagagagagabagaqagababababasabababababalagbUaQagalabababababababababababagaqagabagblblbVagababaacN
+cNaaaaaaacagagagagbqasbqaqagabbWbXabagabbYagbZabalagbUbUagcaabcbccagcdcecfagagcgabagaqagasagbpchagbxbsacaacN
+cNaacOaaacagagagbqagabagaqagabagagasagabagagciabcjckbUbUagcjabagclclclclclclclaDabagaqagabbqbwblagcmagacaacN
+cNaaaaaaababagbQbQagabahaqagabbWazabagasagagcnababcobUbUcoababagclclclclclclclalabahaqahabagbwblagcpababaacN
+cNaaaaaaaaababcqagagababasabababababagabagagagaKababcrcrababagagclclclclclclclalababasababcsblbwagababaaaacN
+cNaaaaaaaaaaabctagcuabcvcwcxabcycwasagabbYagaKaKczabbUbUabazafagclclclclclclclagagagagahabagcAcBagabaaaaaacN
+cNaaaaaaaaaaababalagabcwabababcwcwabagabbYcCaJcDcEabbUbUabalagagagagagclclclclclclclclagabcAbqagababaaaaaacN
+cNaaaaaaaaaaaaababalabcwcFcGabcwcHabasabababababababbNbNabababababahagclclclclclclclclagabagcIababaaaaaaaacN
+cNaaaaaaaaaaaaaaabababcwabababcwcHabcwcvababaaaaaaaaaaaaaaaaaaaaababalclclclclclclclclagabcIababaaaaaaaaaacN
+cNaaaaaaaaaaaaaaaaababcwcFcGabcwcJabcKcLabaaaaaaaaaaaaaaaaaaaaaaaaabcMalalagagagagagagahabababaaaaaacOaaaacN
+cNaaaaaacOaaaaaaaaaaabababababababababababaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababaaaaaaaaaaaaaacN
+cNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacN
+cNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcN
+"}
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
diff --git a/nano/README.md b/nano/README.md
index 5a3f55425b8..9ec131522a7 100644
--- a/nano/README.md
+++ b/nano/README.md
@@ -249,6 +249,240 @@ The doT tutorial is [here](https://olado.github.io/doT/tutorial.html).
__Print Tag__
- The print tag outputs the given expression as text to the UI.
+<<<<<<< HEAD
+=======
+### Credit goes to Neersighted of /tg/station for the styling and large chunks of content of this README.
+
+NanoUI is one of the three primary user interface libraries currently in use
+on Polaris (browse(), /datum/browser, NanoUI). It is the most complex of the three,
+but offers quite a few advantages, most notably in default features.
+
+NanoUI adds a `ui_interact()` proc to all atoms, which, ideally, should be called
+via `interact()`; However, the current standardized layout is `ui_interact()` being
+directly called from anywhere in the atom, generally `attack_hand()` or `attack_self()`.
+The `ui_interact()` proc should not contain anything but NanoUI data and code.
+
+Here is a simple example from
+[poolcontroller.dm @ ParadiseSS13/Paradise](https://github.com/ParadiseSS13/Paradise/blob/master/code/game/machinery/poolcontroller.dm).
+
+```
+ /obj/machinery/poolcontroller/attack_hand(mob/user)
+ ui_interact(user)
+
+ /obj/machinery/poolcontroller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
+ var/data[0]
+
+ data["currentTemp"] = temperature
+ data["emagged"] = emagged
+ data["TempColor"] = temperaturecolor
+
+ ui = SSnano.try_update_ui(user, src, ui_key, ui, data, force_open)
+ if(!ui)
+ ui = new(user, src, ui_key, "poolcontroller.tmpl", "Pool Controller Interface", 520, 410)
+ ui.set_initial_data(data)
+ ui.open()
+```
+
+
+
+## Components
+
+### `ui_interact()`
+
+The `ui_interact()` proc is used to open a NanoUI (or update it if already open).
+As NanoUI will call this proc to update your UI, you should include the data list
+within it. On /tg/station, this is handled via `get_ui_data()`, however, as it would
+take quite a long time to convert every single one of the 100~ UI's to using such a method,
+it is instead just directly created within `ui_interact()`.
+
+The parameters for `try_update_ui` and `/datum/nanoui/New()` are documented in
+the code [here](https://github.com/PolarisSS13/Polaris/tree/master/code/modules/nano).
+
+For:
+`/datum/nanoui/New(nuser, nsrc_object, nui_key, ntemplate_filename, ntitle = 0, nwidth = 0, nheight = 0, var/atom/nref = null, var/datum/nanoui/master_ui = null, var/datum/topic_state/state = default_state)`
+Most of the parameters are fairly self explanatory.
+ - `nuser` is the person who gets to see the UI window
+ - `nsrc_obj` is the thing you want to call Topic() on
+ - `nui_key` should almost always be `main`
+ - `ntemplate_filename` is the filename with `.tmpl` extension in /nano/templates/
+ - `ntitle` is what you want to show at the top of the UI window
+ - `nwidth` is the width of the new window
+ - `nheight` is the height of the new window
+ - `nref` is used for onclose()
+ - `master_ui` is used for UIs that have multiple children, see code for examples
+ - And finally, `state`.
+
+The most interesting parameter here is `state`, which allows the object to choose the
+checks that allow the UI to be interacted with.
+
+The default state (`default_state`) checks that the user is alive, conscious,
+and within a few tiles. It allows universal access to silicons. Other states
+exist, and may be more appropriate for different interfaces. For example,
+`physical_state` requires the user to be nearby, even if they are a silicon.
+`inventory_state` checks that the user has the object in their first-level
+(not container) inventory, this is suitable for devices such as radios;
+`admin_state` checks that the user is an admin (good for admin tools).
+
+```
+ /obj/item/the/thing/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, force_open = 0)
+ var/data[0]
+
+ ui = SSnano.try_update_ui(user, src, ui_key, ui, data, force_open = force_open)
+ if(!ui)
+ ui = new(user, src, ui_key, "template_name_here.tmpl", title, width, height)
+ ui.set_initial_data(data)
+ ui.open()
+```
+
+### `Topic()`
+
+`Topic()` handles input from the UI. Typically you will recieve some data from
+a button press, or pop up a input dialog to take a numerical value from the
+user. Sanity checking is useful here, as `Topic()` is trivial to spoof with
+arbitrary data.
+
+The `Topic()` interface is just the same as with more conventional,
+stringbuilder-based UIs, and this needs little explanation.
+
+```
+ /obj/item/weapon/tank/Topic(href, href_list)
+ if(..())
+ return 1
+
+ if(href_list["dist_p"])
+ if(href_list["dist_p"] == "custom")
+ var/custom = input(usr, "What rate do you set the regulator to? The dial reads from 0 to [TANK_MAX_RELEASE_PRESSURE].") as null|num
+ if(isnum(custom))
+ href_list["dist_p"] = custom
+ .()
+ else if(href_list["dist_p"] == "reset")
+ distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE
+ else if(href_list["dist_p"] == "min")
+ distribute_pressure = TANK_MIN_RELEASE_PRESSURE
+ else if(href_list["dist_p"] == "max")
+ distribute_pressure = TANK_MAX_RELEASE_PRESSURE
+ else
+ distribute_pressure = text2num(href_list["dist_p"])
+ distribute_pressure = min(max(round(distribute_pressure), TANK_MIN_RELEASE_PRESSURE), TANK_MAX_RELEASE_PRESSURE)
+ if(href_list["stat"])
+ if(istype(loc,/mob/living/carbon))
+ var/mob/living/carbon/location = loc
+ if(location.internal == src)
+ location.internal = null
+ location.internals.icon_state = "internal0"
+ to_chat(usr, "You close the tank release valve.")
+ if(location.internals)
+ location.internals.icon_state = "internal0"
+ else
+ if(location.wear_mask && (location.wear_mask.flags & MASKINTERNALS))
+ location.internal = src
+ to_chat(usr, "You open \the [src] valve.")
+ if(location.internals)
+ location.internals.icon_state = "internal1"
+ else
+ to_chat(usr, "You need something to connect to \the [src]!")
+```
+
+### Template (doT)
+
+NanoUI templates are written in a customized version of
+[doT](https://olado.github.io/doT/index.html),
+a Javascript template engine. Data is accessed from the `data` object,
+configuration (not used in pratice) from the `config` object, and template
+helpers are accessed from the `helper` object.
+
+It is worth explaining that Polaris's version of doT uses custom syntax
+for the templates. The `?` operator is split into `if`, `else if parameter`, and `else`,
+instead of `?`, `?? paramater`, `??`, and the `=` operator is replaced with `:`. Refer
+to the chart below for a full comparison.
+
+#### Helpers
+
+##### Link
+
+`{{:helpers.link(text, icon, {'parameter': true}, status, class, id)}}`
+
+Used to create a link (button), which will pass its parameters to `Topic()`.
+
+* Text: The text content of the link/button
+* Icon: The icon shown to the left of the link (http://fontawesome.io/)
+* Parameters: The values to be passed to `Topic()`'s `href_list`.
+* Status: `null` for clickable, a class for selected/unclickable.
+* Class: Styling to apply to the link.
+* ID: Sets the element ID.
+
+Status and Class have almost the same effect. However, changing a link's status
+from `null` to something else makes it unclickable, while setting a custom Class
+does not.
+
+Ternary operators are often used to avoid writing many `if` statements.
+For example, depending on if a value in `data` is true or false we can set a
+button to clickable or selected:
+
+`{{:helper.link('Close', 'lock', {'stat': 1}, data.valveOpen ? null : 'selected')}}`
+
+Available classes/statuses are:
+
+* null (normal)
+* selected
+* disabled
+* yellowButton
+* redButton
+* linkDanger
+
+##### displayBar
+
+`{{:helpers.displayBar(value, min, max, class, text)}}`
+
+Used to create a bar, to display a numerical value visually. Min and Max default
+to 0 and 100, but you can change them to avoid doing your own percent calculations.
+
+* Value: Defaults to a percentage but can be a straight number if Min/Max are set
+* Min: The minimum value (left hand side) of the bar
+* Max: The maximum value (right hand side) of the bar
+* Class: The color of the bar (null/normal, good, average, bad)
+* Text: The text label for the data contained in the bar (often just number form)
+
+As with buttons, ternary operators are quite useful:
+
+`{{:helper.bar(data.tankPressure, 0, 1013, (data.tankPressure > 200) ? 'good' : ((data.tankPressure > 100) ? 'average' : 'bad'))}}`
+
+
+#### doT
+
+doT is a simple template language, with control statements mixed in with
+regular HTML and interpolation expressions.
+
+However, Polaris uses a custom version with a different syntax. Refer
+to the chart below for the differences.
+
+Operator | doT | equiv |
+|-----------|------------|-------------------|
+|Conditional| ? | if |
+| | ?? | else |
+| | ?? (param) | else if(param) |
+|Interpolate| = | : |
+|^ + Encode | ! | > |
+|Evaluation | # | # |
+|Defines | ## # | ## # |
+|Iteration | ~ (param) | for (param) |
+
+Here is a simple example from tanks, checking if a variable is true:
+
+```
+ {{if data.maskConnected}}
+ The regulator is connected to a mask.
+ {{else if}}
+ The regulator is not connected to a mask.
+ {{/if}}
+```
+
+The doT tutorial is [here](https://olado.github.io/doT/tutorial.html).
+
+__Print Tag__
+- The print tag outputs the given expression as text to the UI.
+
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking
`{{:data.variable}}`
`{{:functioncall()}}`
diff --git a/vorestation.dme b/vorestation.dme
index 4d08abb4ff7..aace82fae43 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -2077,7 +2077,10 @@
#include "code\modules\food\recipes_fryer.dm"
#include "code\modules\food\recipes_grill.dm"
#include "code\modules\food\recipes_microwave.dm"
+<<<<<<< HEAD:vorestation.dme
#include "code\modules\food\recipes_microwave_vr.dm"
+=======
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking:polaris.dme
#include "code\modules\food\recipes_oven.dm"
#include "code\modules\food\drinkingglass\drinkingglass.dm"
#include "code\modules\food\drinkingglass\extras.dm"
@@ -2110,7 +2113,10 @@
#include "code\modules\food\kitchen\icecream.dm"
#include "code\modules\food\kitchen\microwave.dm"
#include "code\modules\food\kitchen\smartfridge.dm"
+<<<<<<< HEAD:vorestation.dme
#include "code\modules\food\kitchen\smartfridge_vr.dm"
+=======
+>>>>>>> d003767... Merge pull request #7344 from Rykka-Stormheart/shep-dev-aurora-cooking:polaris.dme
#include "code\modules\food\kitchen\cooking_machines\_appliance.dm"
#include "code\modules\food\kitchen\cooking_machines\_cooker.dm"
#include "code\modules\food\kitchen\cooking_machines\_cooker_output.dm"