From 8170e9e2601ce641441a647665d85950b7567a5a Mon Sep 17 00:00:00 2001 From: "rastaf.zero@gmail.com" Date: Wed, 13 Apr 2011 14:27:29 +0000 Subject: [PATCH] A Big Kitchen Update. A new powerful microwave code allows completely new recipes. All cooked food all have transferred in all the reagents which ingredients had (except of nutriments). A new neat food sprites from Farart. New/changed recipes for cooking with microwave: - Berry Pie was replaced with Berry Clafoutis with new sprite. Recipe: 2 flour, 1 egg, 2 berries (not berryjuice); - Fortune cookies: 1 flour, 1 egg, piece of paper with prophecy; - Meat stake: 1 unit of salt, 1 unit of black pepper, 1 slab of meat; - Pizza "Margherita": 2 flour, 4 wedges of cheese, 1 tomato; - Meat Pizza: 2 flour, 2 slabs of meat, 1 wedge of cheese, 1 tomato; - Mushroom Pizza: 2 flour, 5 any mushrooms; - Vegetable Pizza: 2 flour, 1 eggplant, 1 carrot, 1 corn, 1 tomato; - Spacy Liberty Duff: 10 units of water, 5 units of vodka, 3 Liberty Caps; - Amanita Jelly: 5 units of water, 10 units of vodka, 3 Amanitas; - Meatball Soup: 20 units of water, 1 meatball (aka faggot), 1 carrot, 1 potato; - Vegetable Soup: 20 units of water, 1 carrot, 1 corn, 1 eggplant, 1 potato; - Meatball Soup: 20 units of water, 1 meatball (aka faggot), 1 carrot, 1 potato; - Nettle Soup: 20 units of water, 1 nettle, 1 egg, 1 potato; - Hot Chili stew: 1 slab of meat, 1 chili pepper, 1 tomato; - Cold Chili stew: 1 slab of meat, 1 ice pepper, 1 tomato; Other bugfixes: Fixed items showing under vendomats/microwaves. Activated item_state for anesthetic tank. Runes are under tables and doors now. Fixed runtime errors caused by some reagents. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1440 316c924e-a436-60f5-8080-3fe189b3f50e --- .../components/unary/vent_pump.dm | 1 + .../components/unary/vent_scrubber.dm | 1 + code/WorkInProgress/Chemistry-Holder.dm | 2 +- code/WorkInProgress/Chemistry-Reagents.dm | 14 +- code/WorkInProgress/Chemistry-Recipes.dm | 2 +- code/WorkInProgress/Chemistry-Tools.dm | 863 +--------------- code/datums/recipe.dm | 117 +++ code/defines/obj.dm | 1 + code/defines/obj/hydro.dm | 20 +- code/defines/obj/machinery.dm | 32 +- code/defines/obj/supplypacks.dm | 18 +- code/defines/obj/vending.dm | 1 + code/defines/obj/weapon.dm | 1 + code/game/machinery/gibber.dm | 6 +- code/game/machinery/microwave.dm | 880 ++++++---------- code/game/machinery/processor.dm | 11 +- code/game/magic/cultist/ritual.dm | 1 + code/game/objects/closets/kitchen.dm | 8 +- code/game/objects/items/helper_procs.dm | 16 +- code/game/objects/kitchen.dm | 4 +- code/modules/food/food.dm | 936 ++++++++++++++++++ code/modules/food/recipes_microwave.dm | 579 +++++++++++ code/modules/mob/mob.dm | 1 + icons/misc/old_or_unused_food.dmi | Bin 0 -> 13831 bytes icons/obj/food.dmi | Bin 42203 -> 42680 bytes tgstation.dme | 4 + 26 files changed, 2063 insertions(+), 1456 deletions(-) create mode 100644 code/datums/recipe.dm create mode 100644 code/modules/food/food.dm create mode 100644 code/modules/food/recipes_microwave.dm create mode 100644 icons/misc/old_or_unused_food.dmi diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 9f874d424c5..368a8ae506c 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -6,6 +6,7 @@ desc = "Has a valve and pump attached to it" level = 1 + layer = TURF_LAYER var/area_uid var/id_tag = null diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index 6c427baab38..a55e38140b1 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -6,6 +6,7 @@ desc = "Has a valve and pump attached to it" level = 1 + layer = TURF_LAYER var/id_tag = null var/frequency = 1439 diff --git a/code/WorkInProgress/Chemistry-Holder.dm b/code/WorkInProgress/Chemistry-Holder.dm index de22a277f0f..3711feabe55 100644 --- a/code/WorkInProgress/Chemistry-Holder.dm +++ b/code/WorkInProgress/Chemistry-Holder.dm @@ -5,7 +5,7 @@ datum reagents - var/list/reagent_list = new/list() + var/list/datum/reagent/reagent_list = new/list() var/total_volume = 0 var/maximum_volume = 100 var/atom/my_atom = null diff --git a/code/WorkInProgress/Chemistry-Reagents.dm b/code/WorkInProgress/Chemistry-Reagents.dm index 1266f6b6897..2b470288d54 100644 --- a/code/WorkInProgress/Chemistry-Reagents.dm +++ b/code/WorkInProgress/Chemistry-Reagents.dm @@ -426,7 +426,7 @@ datum reagent_state = GAS on_mob_life(var/mob/M) if(!M) M = holder.my_atom - usr.take_organ_damage(1, 0) + M.take_organ_damage(1, 0) ..() return @@ -485,7 +485,7 @@ datum on_mob_life(var/mob/M) if(!M) M = holder.my_atom M:toxloss++ - usr.take_organ_damage(0, 1) + M.take_organ_damage(0, 1) ..() return reaction_mob(var/mob/M, var/method=TOUCH, var/volume) @@ -530,7 +530,7 @@ datum on_mob_life(var/mob/M) if(!M) M = holder.my_atom M:toxloss++ - usr.take_organ_damage(0, 1) + M.take_organ_damage(0, 1) ..() return reaction_mob(var/mob/M, var/method=TOUCH, var/volume) @@ -864,7 +864,7 @@ datum on_mob_life(var/mob/M) if(!M) M = holder.my_atom if(prob(33)) - usr.take_organ_damage(1, 0) + M.take_organ_damage(1, 0) M:oxyloss += 3 if(prob(20)) M:emote("gasp") ..() @@ -1037,7 +1037,7 @@ datum M:radiation = max(M:radiation-3,0) if(M:toxloss) M:toxloss-- if(prob(15)) - usr.take_organ_damage(1, 0) + M.take_organ_damage(1, 0) ..() return @@ -1317,7 +1317,7 @@ datum if(!M) M = holder.my_atom M:bodytemperature += 5 if(prob(40)) - usr.take_organ_damage(0, 1) + M.take_organ_damage(0, 1) ..() return @@ -1331,7 +1331,7 @@ datum if(!M) M = holder.my_atom M:bodytemperature -= 5 if(prob(40)) - usr.take_organ_damage(0, 1) + M.take_organ_damage(0, 1) ..() return diff --git a/code/WorkInProgress/Chemistry-Recipes.dm b/code/WorkInProgress/Chemistry-Recipes.dm index c4bfddcdcf4..32275def76e 100644 --- a/code/WorkInProgress/Chemistry-Recipes.dm +++ b/code/WorkInProgress/Chemistry-Recipes.dm @@ -520,7 +520,7 @@ datum result_amount = 1 on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) - new /obj/item/weapon/reagent_containers/food/snacks/cheesewheel(location) + new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location) return icetea diff --git a/code/WorkInProgress/Chemistry-Tools.dm b/code/WorkInProgress/Chemistry-Tools.dm index c270abe3544..72594cd6942 100644 --- a/code/WorkInProgress/Chemistry-Tools.dm +++ b/code/WorkInProgress/Chemistry-Tools.dm @@ -908,7 +908,6 @@ user << "\blue [trans] units injected. [reagents.total_volume] units remaining in the hypospray." return - //////////////////////////////////////////////////////////////////////////////// /// Food. //////////////////////////////////////////////////////////////////////////////// @@ -1014,7 +1013,54 @@ usr << "\blue \The [src] was bitten [bitecount] times!" else usr << "\blue \The [src] was bitten multiple times!" - + +/obj/item/weapon/reagent_containers/food/snacks/sliceable + var/slice_path + var/slices_num + attackby(obj/item/weapon/W as obj, mob/user as mob) + var/inaccurate = 0 + if( \ + istype(W, /obj/item/weapon/kitchenknife) || \ + istype(W, /obj/item/weapon/scalpel) || \ + istype(W, /obj/item/weapon/kitchen/utensil/knife) \ + ) + else if( \ + istype(W, /obj/item/weapon/circular_saw) || \ + istype(W, /obj/item/weapon/sword) && W:active || \ + istype(W, /obj/item/weapon/blade) || \ + istype(W, /obj/item/weapon/shovel) \ + ) + inaccurate = 1 + return + else + return 1 + if ( \ + !isturf(src.loc) || \ + !(locate(/obj/table) in src.loc) && \ + !(locate(/obj/machinery/optable) in src.loc) && \ + !(locate(/obj/item/weapon/tray) in src.loc) \ + ) + user << "\red You cannot slice [src] here! You need a table or at least a tray to do it." + return 1 + var/slices_lost = 0 + if (!inaccurate) + user.visible_message( \ + "\blue [user] slices \the [src]!", \ + "\blue You slice \the [src]!" \ + ) + else + user.visible_message( \ + "\blue [user] inaccurate slices \the [src] with [W]!", \ + "\blue You inaccurate slice \the [src] with your [W]!" \ + ) + slices_lost = rand(1,min(1,round(slices_num/2))) + var/reagents_per_slice = reagents.total_volume/slices_num + for(var/i=1 to (slices_num-slices_lost)) + var/obj/slice = new slice_path (src.loc) + reagents.trans_to(slice,reagents_per_slice) + del(src) + return + //////////////////////////////////////////////////////////////////////////////// /// FOOD END @@ -1579,817 +1625,10 @@ reagents.add_reagent("spaceacillin", 15) update_icon() +//////////////////////////////////////////////////////////////////////////////// +/// Concrete food moved to code/modules/food/food.dm +///////////////////////////////////////////////////////////////////////////// -////////////////////////////////////////////////// -////////////////////////////////////////////Snacks -////////////////////////////////////////////////// -//Items in the "Snacks" subcategory are food items that people actually eat. The key points are that they are created -// already filled with reagents and are destroyed when empty. Additionally, they make a "munching" noise when eaten. - -//Notes by Darem: Food in the "snacks" subtype can hold a maximum of 50 units Generally speaking, you don't want to go over 40 -// total for the item because you want to leave space for extra condiments. If you want effects besides healing, add a reagent for -// it. Try to stick to existing reagents when possible (so if you want a stronger healing effect, just use Tricordrazine). On use -// effects (such as the old officer eating a donut code) requires a unique reagent (unless you can figure out a better way). - -//The nutriment reagent and bitesize variable replace the old heal_amt and amount variables. Each unit of nutriment is equal to -// 2 of the old heal_amt variable. Bitesize is the rate at which the reagents are consumed. So if you have 6 nutriment and a -// bitesize of 2, then it'll take 3 bites to eat. Unlike the old system, the contained reagents are evenly spread among all -// the bites. No more contained reagents = no more bites. - -//Here is an example of the new formatting for anyone who wants to add more food items. -///obj/item/weapon/reagent_containers/food/snacks/xenoburger //Identification path for the object. -// name = "Xenoburger" //Name that displays in the UI. -// desc = "Smells caustic. Tastes like heresy." //Duh -// icon_state = "xburger" //Refers to an icon in food.dmi -// New() //Don't mess with this. -// ..() //Same here. -// reagents.add_reagent("xenomicrobes", 10) //This is what is in the food item. you may copy/paste -// reagents.add_reagent("nutriment", 2) // this line of code for all the contents. -// bitesize = 3 //This is the amount each bite consumes. - -/obj/item/weapon/reagent_containers/food/snacks/banana - name = "Banana" - desc = "A banana." - icon = 'items.dmi' - icon_state = "banana" - item_state = "banana" - On_Consume() - var/mob/M = usr - var/obj/item/weapon/bananapeel/W = new /obj/item/weapon/bananapeel( M ) - M << "\blue You peel the banana." - M.put_in_hand(W) - W.add_fingerprint(M) - New() - ..() - reagents.add_reagent("banana", 5) - bitesize = 5 - src.pixel_x = rand(-5.0, 5) - src.pixel_y = rand(-5.0, 5) - -/obj/item/weapon/reagent_containers/food/snacks/candy - name = "candy" - desc = "Nougat love it or hate it." - icon_state = "candy" - New() - ..() - reagents.add_reagent("nutriment", 3) - -/obj/item/weapon/reagent_containers/food/snacks/candy_corn - name = "candy corm" //Not a typo - desc = "It's a handful of candy corm. Can be stored in a detective's hat." - icon_state = "candy_corn" - New() - ..() - reagents.add_reagent("nutriment", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/chips - name = "chips" - desc = "Commander Riker's What-The-Crisps" - icon_state = "chips" - New() - ..() - reagents.add_reagent("nutriment", 3) - -/obj/item/weapon/reagent_containers/food/snacks/donut - name = "donut" - desc = "Goes great with Robust Coffee." - icon_state = "donut1" - New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("sprinkles", 1) - if(prob(30)) - src.icon_state = "donut2" - src.name = "frosted donut" - src.bitesize = 2 - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("sprinkles", 1) - -/obj/item/weapon/reagent_containers/food/snacks/egg - name = "egg" - desc = "An egg!" - icon_state = "egg" - New() - ..() - reagents.add_reagent("nutriment", 1) - -/obj/item/weapon/reagent_containers/food/snacks/flour - name = "flour" - desc = "Some flour" - icon_state = "flour" - New() - ..() - reagents.add_reagent("nutriment", 1) - -/obj/item/weapon/reagent_containers/food/snacks/humanmeat - name = "-meat" - desc = "A slab of meat" - icon_state = "meat" - var/subjectname = "" - var/subjectjob = null - New() - ..() - reagents.add_reagent("nutriment", 3) - - -/obj/item/weapon/reagent_containers/food/snacks/tofu - name = "Tofu" - icon_state = "tofu" - desc = "We all love tofu." - New() - ..() - reagents.add_reagent("nutriment", 3) - -/obj/item/weapon/reagent_containers/food/snacks/monkeymeat - name = "meat" - desc = "A slab of meat" - icon_state = "meat" - New() - ..() - reagents.add_reagent("nutriment", 3) - -/obj/item/weapon/reagent_containers/food/snacks/carpmeat - name = "carp fillet" - desc = "A fillet of spess carp meat" - icon_state = "fishfillet" - New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("carpotoxin", 3) - -/obj/item/weapon/reagent_containers/food/snacks/xenomeat - name = "meat" - desc = "A slab of meat" - icon_state = "xenomeat" - New() - ..() - reagents.add_reagent("nutriment", 3) - -/obj/item/weapon/reagent_containers/food/snacks/faggot - name = "Faggot" - desc = "A great meal all round. Not a cord of wood." - icon_state = "faggot" - New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/donkpocket - name = "Donk-pocket" - desc = "The food of choice for the seasoned traitor." - icon_state = "donkpocket" - New() - ..() - reagents.add_reagent("nutriment", 2) - var/warm = 0 - proc/cooltime() //Not working, derp? - if (src.warm) - spawn( 4200 ) - src.warm = 0 - src.reagents.del_reagent("tricordrazine") - src.name = "donk-pocket" - return - -/obj/item/weapon/reagent_containers/food/snacks/brainburger - name = "brainburger" - desc = "A strange looking burger. It looks almost sentient." - icon_state = "brainburger" - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/humanburger - name = "-burger" - var/hname = "" - var/job = null - desc = "A bloody burger." - icon_state = "hburger" - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/monkeyburger - name = "burger" - desc = "The cornerstone of every nutritious breakfast." - icon_state = "hburger" - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/fishburger - name = "Fillet -o- Carp Sandwich" - desc = "Almost like a carp is yelling somewhere... Give me back that fillet -o- carp, give me that carp." - icon_state = "fishburger" - New() - ..() - reagents.add_reagent("nutriment", 8) - reagents.add_reagent("carpotoxin", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/tofuburger - name = "Tofu Burger" - desc = "What.. is that meat?" - icon_state = "tofuburger" - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/roburger - name = "roburger" - desc = "The lettuce is the only organic component. Beep." - icon_state = "roburger" - New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("nanites", 10) - bitesize = 3 - - -/obj/item/weapon/reagent_containers/food/snacks/roburgerbig - name = "roburger" - desc = "This massive patty looks like poison. Beep." - icon_state = "roburger" - volume = 100 - New() - ..() - reagents.add_reagent("nanites", 100) - bitesize = 0.1 - -/obj/item/weapon/reagent_containers/food/snacks/xenoburger - name = "xenoburger" - desc = "Smells caustic. Tastes like heresy." - icon_state = "xburger" - New() - ..() - reagents.add_reagent("xenomicrobes", 10) - reagents.add_reagent("nutriment", 2) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/clownburger - name = "Clown Burger" - desc = "This tastes funny..." - icon_state = "clownburger" - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/mimeburger - name = "Mime Burger" - desc = "It's taste defies language." - icon_state = "mimeburger" - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/omelette - name = "Omelette Du Fromage" - desc = "That's all you can say!" - icon_state = "omelette" - var/herp = 0 - New() - ..() - reagents.add_reagent("nutriment", 10) - bitesize = 1 - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W,/obj/item/weapon/kitchen/utensil/fork)) - if (W.icon_state == "forkloaded") - user << "\red You already have omelette on your fork." - return - W.icon = 'kitchen.dmi' - W.icon_state = "forkloaded" - /*if (herp) - world << "[user] takes a piece of omelette with his fork!"*/ //Why this unecessary check? Oh I know, because I'm bad >:C - viewers(3,user) << "[user] takes a piece of omelette with their fork!" - reagents.remove_reagent("nutriment", 1) - if (reagents.total_volume <= 0) - del(src) - -/obj/item/weapon/reagent_containers/food/snacks/omeletteforkload - name = "Omelette Du Fromage" - desc = "That's all you can say!" - New() - ..() - reagents.add_reagent("nutriment", 1) - -/obj/item/weapon/reagent_containers/food/snacks/muffin - name = "Muffin" - desc = "A delicious and spongy little cake" - icon_state = "muffin" - New() - ..() - reagents.add_reagent("nutriment", 6) - -/obj/item/weapon/reagent_containers/food/snacks/pie - name = "Banana Cream Pie" - desc = "Just like back home, on clown planet! HONK!" - icon_state = "pie" - New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("banana",5) - -/obj/item/weapon/reagent_containers/food/snacks/berrypie - name = "Very Berry Pie" - desc = "No black birds, this is a good sign." - icon_state = "pie" - New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("berryjuice", 5) - -/obj/item/weapon/reagent_containers/food/snacks/waffles - name = "waffles" - desc = "Mmm, waffles" - icon_state = "waffles" - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/eggplantparm - name = "Eggplant Parmigiana" - desc = "The only good recipe for eggplant." - icon_state = "eggplantparm" - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/jellydonut - name = "Jelly Donut" - desc = "Oh so gooey on the inside." - icon_state = "donut1" //Placeholder until I stop being lazy. ie. Never. -- Darem - New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("sprinkles", 3) - bitesize = 2 - if(prob(30)) - src.icon_state = "donut2" - src.name = "Frosted Jelly Donut" - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("sprinkles", 3) - bitesize = 4 - -/obj/item/weapon/reagent_containers/food/snacks/soylentgreen - name = "Soylent Green" - desc = "Not made of people. Honest." //Totally people. - icon_state = "soylent" - New() - ..() - reagents.add_reagent("nutriment", 14) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/soylenviridians - name = "Soylen Virdians" - desc = "Not made of people. Honest." //Actually honest for once. - icon_state = "soylent" - New() - ..() - reagents.add_reagent("nutriment", 10) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/humeatpie - name = "Meat-pie" - var/hname = "" - var/job = null - icon_state = "meatpie" - desc = "The best meatpies on station." - New() - ..() - reagents.add_reagent("nutriment", 10) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/momeatpie - name = "Meat-pie" - icon_state = "meatpie" - desc = "A delicious meatpie." - New() - ..() - reagents.add_reagent("nutriment", 10) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/tofupie - name = "Tofu-pie" - icon_state = "meatpie" - desc = "A delicious tofu pie." - New() - ..() - reagents.add_reagent("nutriment", 10) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/xemeatpie - name = "Xeno-pie" - icon_state = "xenomeatpie" - desc = "A delicious meatpie. Probably heretical." - New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 4 - reagents.add_reagent("xenomicrobes", 10) - -/obj/item/weapon/reagent_containers/food/snacks/wingfangchu - name = "Wing Fang Chu" - desc = "A savory dish of alien wing wang in soy." - icon_state = "wingfangchu" - New() - ..() - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("xenomicrobes", 5) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/chaosdonut - name = "Chaos Donut" - desc = "Like life, it never quite tastes the same." - icon_state = "donut1" - New() - ..() - reagents.add_reagent("nutriment", 3) - bitesize = 2 - if(prob(30)) - src.icon_state = "donut2" - src.name = "Frosted Chaos Donut" - var/temp_chaos = pick(1, 2, 3) - if(temp_chaos == 1) - reagents.add_reagent("capsaicin", 3) - else if(temp_chaos == 2) - reagents.add_reagent("frostoil", 3) - else if(temp_chaos == 3) - reagents.add_reagent("nutriment", 3) - -/obj/item/weapon/reagent_containers/food/snacks/humankabob - name = "-kabob" - var/hname = "" - var/job = null - icon_state = "kabob" - desc = "A delicious kabob" - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/monkeykabob - name = "Meat-kabob" - icon_state = "kabob" - desc = "A delicious kabob" - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/tofukabob - name = "Tofu-kabob" - icon_state = "kabob" - desc = "A delicious kabob" - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cubancarp - name = "Cuban Carp" - desc = "A grifftastic sandwich that burns your tongue and then leaves it numb!" - icon_state = "cubancarp" - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("carpotoxin", 3) - reagents.add_reagent("capsaicin", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/popcorn - name = "Popcorm" //not a typo - desc = "Now let's find some cinema." - icon_state = "popcorn" - New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0 - -/obj/item/weapon/reagent_containers/food/snacks/sosjerky - name = "Scaredy's Private Reserve Beef Jerky" - icon_state = "sosjerky" - desc = "Beef jerky made from the finest space cows." - New() - ..() - reagents.add_reagent("nutriment", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/no_raisin - name = "4no Raisins" - icon_state = "4no_raisins" - desc = "Best raisins in the universe. Not sure why." - New() - ..() - reagents.add_reagent("nutriment", 6) - -/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie - name = "Space Twinkie" - icon_state = "space_twinkie" - desc = "Guaranteed to survive longer then you will." - New() - ..() - reagents.add_reagent("sugar", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers - name = "Cheesie Honkers" - icon_state = "cheesie_honkers" - desc = "Bite sized cheesie snacks that will honk all over your mouth" - New() - ..() - reagents.add_reagent("nutriment", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/syndicake - name = "Syndi-Cakes" - icon_state = "syndi_cakes" - desc = "An extremely moist snack cake that tastes just as good after being nuked." - New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("syndicream", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato - name = "Loaded Baked Potato" - desc = "Totally baked." - icon_state = "loadedbakedpotato" - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/fries - name = "Space Fries" - desc = "AKA: French Fries, Freedom Fries, etc" - icon_state = "fries" - New() - ..() - reagents.add_reagent("nutriment", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cheesyfries - name = "Cheesy Fries" - desc = "Fries. Covered in cheese. Duh." - icon_state = "cheesyfries" - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 - -/////////////////////////////////////////////////Sliceable//////////////////////////////////////// -// All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels - -/obj/item/weapon/reagent_containers/food/snacks/meatbread - name = "meatbread loaf" - desc = "The culinary base of every self-respecting eloquen/tg/entleman." - icon_state = "meatbread" - New() - ..() - reagents.add_reagent("nutriment", 40) - bitesize = 2 - - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/)) - W.visible_message(" \red You slice the meatbread! ", 1) - for(var/i=0,i<5,i++) - new /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice (src.loc) - del(src) - return - if(istype(W, /obj/item/weapon/circular_saw)) - W.visible_message(" \red You inaccurate slice the meatbread with your [W]! ", 1) - for(var/i=0,i<3,i++) - new /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice (src.loc) - del(src) - return - -/obj/item/weapon/reagent_containers/food/snacks/meatbreadslice - name = "meatbread slice" - desc = "A slice of delicious meatbread." - icon_state = "meatbreadslice" - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/xenomeatbread - name = "xenomeatbread loaf" - desc = "The culinary base of every self-respecting eloquen/tg/entleman. Extra Heretical." - icon_state = "xenomeatbread" - New() - ..() - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("xenomicrobes", 35) - bitesize = 2 - - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/)) - W.visible_message(" \red You slice the xenomeatbread! ", 1) - for(var/i=0,i<5,i++) - new /obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice (src.loc) - del(src) - return - if(istype(W, /obj/item/weapon/circular_saw)) - W.visible_message(" \red You inaccurate slice the xenomeatbread with your [W]! ", 1) - for(var/i=0,i<3,i++) - new /obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice (src.loc) - del(src) - return - -/obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice - name = "xenomeatbread slice" - desc = "A slice of delicious meatbread. Extra Heretical." - icon_state = "xenobreadslice" - New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("xenomicrobes", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/bananabread - name = "Banana-nut bread" - desc = "A heavenly and filling treat." - icon_state = "tofubread" //filler sprite till there is a banana bread sprite - New() - ..() - reagents.add_reagent("banana", 20) - reagents.add_reagent("nutriment", 20) - bitesize = 2 - - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/)) - W.visible_message(" \red You slice the banana bread! ", 1) - for(var/i=0,i<5,i++) - new /obj/item/weapon/reagent_containers/food/snacks/bananabreadslice (src.loc) - del(src) - return - if(istype(W, /obj/item/weapon/circular_saw)) - W.visible_message(" \red You inaccurately slice the banana bread with your [W]! ", 1) - for(var/i=0,i<3,i++) - new /obj/item/weapon/reagent_containers/food/snacks/bananabreadslice (src.loc) - del(src) - return - -/obj/item/weapon/reagent_containers/food/snacks/bananabreadslice - name = "Banana-nut bread slice" - desc = "A slice of delicious banana bread." - icon_state = "tofubreadslice" //Filler sprite - New() - ..() - reagents.add_reagent("banana", 4) - reagents.add_reagent("nutriment", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/tofubread - name = "Tofubread" - icon_state = "Like meatbread but for vegetarians. Not guaranteed to give superpowers." - icon_state = "tofubread" - New() - ..() - reagents.add_reagent("nutriment", 40) - bitesize = 2 - - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/)) - W.visible_message(" \red You slice the tofubread! ", 1) - for(var/i=0,i<5,i++) - new /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice (src.loc) - del(src) - return - if(istype(W, /obj/item/weapon/circular_saw)) - W.visible_message(" \red You inaccurate slice the tofubread with your [W]! ", 1) - for(var/i=0,i<3,i++) - new /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice (src.loc) - del(src) - return - -/obj/item/weapon/reagent_containers/food/snacks/tofubreadslice - name = "Tofubread slice" - desc = "A slice of delicious tofubread." - icon_state = "tofubreadslice" - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 - - -/obj/item/weapon/reagent_containers/food/snacks/carrotcake - name = "Carrot Cake" - desc = "A favorite desert of a certain wascally wabbit. Not a lie." - icon_state = "carrotcake" - New() - ..() - reagents.add_reagent("nutriment", 30) - reagents.add_reagent("imidazoline", 10) - bitesize = 2 - - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/)) - W.visible_message(" \red You slice the [src]! ", 1) - for(var/i=0,i<5,i++) - new /obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice (src.loc) - del(src) - return - -/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice - name = "Carrot Cake slice" - desc = "Carrotty slice of Carrot Cake, carrots are good for your eyes! Also not a lie." - icon_state = "carrotcake_slice" - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("imidazoline", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cheesecake - name = "Cheese Cake" - desc = "DANGEROUSLY cheesy." - icon_state = "cheesecake" - New() - ..() - reagents.add_reagent("nutriment", 30) - bitesize = 2 - - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/)) - W.visible_message(" \red You slice the [src]! ", 1) - for(var/i=0,i<5,i++) - new /obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice (src.loc) - del(src) - return - -/obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice - name = "Cheese Cake slice" - desc = "Slice of pure cheestisfaction" - icon_state = "cheesecake_slice" - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/plaincake - name = "Vanilla Cake" - desc = "A plain cake, not a lie." - icon_state = "plaincake" - New() - ..() - reagents.add_reagent("nutriment", 25) - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/)) - W.visible_message(" \red You slice the [src]! ", 1) - for(var/i=0,i<5,i++) - new /obj/item/weapon/reagent_containers/food/snacks/plaincakeslice (src.loc) - del(src) - return - -/obj/item/weapon/reagent_containers/food/snacks/plaincakeslice - name = "Vanilla Cake slice" - desc = "Just a slice of cake, it is enough for everyone." - icon_state = "plaincake_slice" - New() - ..() - reagents.add_reagent("nutriment", 5) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cheesewheel - name = "Cheese wheel" - desc = "A big wheel of delcious Cheddar." - icon_state = "cheesewheel" - New() - ..() - reagents.add_reagent("nutriment", 20) - bitesize = 2 - - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/kitchenknife /* || /obj/item/weapon/scalpel*/)) - W.visible_message(" \red You slice the cheese! ", 1) - for(var/i=0,i<5,i++) - new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge (src.loc) - del(src) - return - if(istype(W, /obj/item/weapon/circular_saw)) - W.visible_message(" \red You inaccurate slice the cheese with your [W]! ", 1) - for(var/i=0,i<3,i++) - new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge (src.loc) - del(src) - return - -/obj/item/weapon/reagent_containers/food/snacks/cheesewedge - name = "Cheese wedge" - desc = "A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far." - icon_state = "cheesewedge" - New() - ..() - reagents.add_reagent("nutriment", 4) - bitesize = 2 ///////////////////////////////////////////////Condiments //Notes by Darem: The condiments food-subtype is for stuff you don't actually eat but you use to modify existing food. They all diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm new file mode 100644 index 00000000000..92bb19fae29 --- /dev/null +++ b/code/datums/recipe.dm @@ -0,0 +1,117 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * /datum/recipe by rastaf0 13 apr 2011 * + * * * * * * * * * * * * * * * * * * * * * * * * * * + * This is powerful and flexible recipe system. + * It exists not only for food. + * supports both reagents and objects as prerequisites. + * In order to use this system you have to define a deriative from /datum/recipe + * * reagents are reagents. Acid, milc, booze, etc. + * * items are objects. Fruits, tools, circuit boards. + * * result is type to create as new object + * * time is optional parameter, you shall use in in your machine, + default /datum/recipe/ procs does not rely on this parameter. + * + * Functions you need: + * /datum/recipe/proc/make(var/obj/container as obj) + * Creates result inside container, + * deletes prerequisite reagents, + * transfers reagents from prerequisite objects, + * deletes all prerequisite objects (even not needed for recipe at the moment). + * + * /proc/select_recipe(list/datum/recipe/avaiable_recipes, obj/obj as obj, exact = 1) + * Wonderful function that select suitable recipe for you. + * obj is a machine (or magik hat) with prerequisites, + * exact = 0 forces algorithm to ignore superfluous stuff. + * + * + * Functions you do not need to call directly but could: + * /datum/recipe/proc/check_reagents(var/datum/reagents/avail_reagents) + * //1=precisely, 0=insufficiently, -1=superfluous + * + * /datum/recipe/proc/check_items(var/obj/container as obj) + * //1=precisely, 0=insufficiently, -1=superfluous + * + * */ + +/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 + 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 + for (var/r_r in reagents) + var/aval_r_amnt = avail_reagents.get_reagent_amount(r_r) + if (!(abs(aval_r_amnt - reagents[r_r])<0.5)) //if NOT equals + if (aval_r_amnt>reagents[r_r]) + . = -1 + else + return 0 + if ((reagents?(reagents.len):(0)) < avail_reagents.reagent_list.len) + 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 + . = 1 + var/list/checklist = items.Copy() + for (var/obj/O in container) + var/found = 0 + for (var/type in checklist) + if (istype(O,type)) + checklist-=type + found = 1 + break + if (!found) + . = -1 + if (checklist.len) + return 0 + return . + +//general version +/datum/recipe/proc/make(var/obj/container as obj) + var/obj/result_obj = new result(container) + for (var/obj/O in (container.contents-result_obj)) + O.reagents.trans_to(result_obj, O.reagents.total_volume) + del(O) + container.reagents.clear_reagents() + return result_obj + +// food-related +/datum/recipe/proc/make_food(var/obj/container as obj) + var/obj/result_obj = new result(container) + for (var/obj/O in (container.contents-result_obj)) + O.reagents.del_reagent("nutriment") + O.reagents.update_total() + O.reagents.trans_to(result_obj, O.reagents.total_volume) + del(O) + container.reagents.clear_reagents() + return result_obj + +/proc/select_recipe(var/list/datum/recipe/avaiable_recipes, var/obj/obj as obj, var/exact = 1 as num) + if (!exact) + 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) + possible_recipes+=recipe + if (possible_recipes.len==0) + return null + else if (possible_recipes.len==1) + return possible_recipes[1] + else //okay, let's select the most complicated recipe + var/r_count = 0 + var/i_count = 0 + . = possible_recipes[1] + for (var/datum/recipe/recipe in possible_recipes) + if (recipe.items.len > i_count || (recipe.items.len == i_count && recipe.reagents.len > r_count )) + r_count = recipe.reagents.len + i_count = recipe.items.len + . = recipe + return . diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 8e8160d8b85..1441658b61a 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -795,6 +795,7 @@ icon_state = "table" density = 1 anchored = 1.0 + layer = 2.8 /obj/table/reinforced name = "reinforced table" diff --git a/code/defines/obj/hydro.dm b/code/defines/obj/hydro.dm index 1a88bad88b1..1daed768afa 100644 --- a/code/defines/obj/hydro.dm +++ b/code/defines/obj/hydro.dm @@ -232,7 +232,7 @@ mypath = "/obj/item/seeds/amanitamycelium" species = "amanita" plantname = "Fly Amanita" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/amanita" + productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita" lifespan = 50 endurance = 35 maturation = 10 @@ -249,7 +249,7 @@ mypath = "/obj/item/seeds/angelmycelium" species = "angel" plantname = "Destroying Angel" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/angel" + productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel" lifespan = 50 endurance = 35 maturation = 12 @@ -266,7 +266,7 @@ mypath = "/obj/item/seeds/libertymycelium" species = "liberty" plantname = "Liberty Cap" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/libertycap" + productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap" lifespan = 25 endurance = 15 maturation = 7 @@ -283,7 +283,7 @@ mypath = "/obj/item/seeds/chantermycelium" species = "chanter" plantname = "Chanterelle" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/chanterelle" + productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle" lifespan = 35 endurance = 20 maturation = 7 @@ -317,7 +317,7 @@ mypath = "/obj/item/seeds/plumpmycelium" species = "plump" plantname = "Plump Helmet" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/plumphelmet" + productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet" lifespan = 25 endurance = 15 maturation = 8 @@ -627,7 +627,7 @@ reagents.add_reagent("nutriment", 2) reagents.add_reagent("imidazoline", 2) -/obj/item/weapon/reagent_containers/food/snacks/grown/amanita +/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita seed = "/obj/item/seeds/amanitamycelium" name = "Fly amanita" desc = "Amanita Muscaria: Learn poisonous mushrooms by heart. Only pick mushrooms you know." @@ -640,7 +640,7 @@ reagents.add_reagent("psilocybin", max(drug_amt, 1)) bitesize = max(round(reagents.total_volume / 2, 1), 1) -/obj/item/weapon/reagent_containers/food/snacks/grown/angel +/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel seed = "/obj/item/seeds/angelmycelium" name = "Destroying angel" desc = "Amanita Virosa: Deadly poisonous basidiomycete fungus filled with alpha amatoxins." @@ -653,7 +653,7 @@ reagents.add_reagent("psilocybin", max(drug_amt, 1)) bitesize = max(round(reagents.total_volume / 2, 1), 1) -/obj/item/weapon/reagent_containers/food/snacks/grown/libertycap +/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap seed = "/obj/item/seeds/libertymycelium" name = "Liberty cap" desc = "Psilocybe Semilanceata: Liberate yourself!" @@ -665,7 +665,7 @@ reagents.add_reagent("psilocybin", max(drug_amt, 4)) bitesize = max(round(reagents.total_volume / 2), 1) -/obj/item/weapon/reagent_containers/food/snacks/grown/plumphelmet +/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet seed = "/obj/item/seeds/plumpmycelium" name = "Plump Helmet" desc = "Plumus Hellmus: Plump, soft and s-so inviting~" @@ -675,7 +675,7 @@ reagents.add_reagent("nutriment", 4) bitesize = 2 -/obj/item/weapon/reagent_containers/food/snacks/grown/chanterelle +/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle seed = "/obj/item/seeds/chantermycelium" name = "Chanterelle" desc = "Cantharellus Cibarius: These jolly yellow little shrooms sure look tasty! There's a lot!" diff --git a/code/defines/obj/machinery.dm b/code/defines/obj/machinery.dm index 268b3e5ebf3..5b3cb0b4a4b 100644 --- a/code/defines/obj/machinery.dm +++ b/code/defines/obj/machinery.dm @@ -173,6 +173,7 @@ use_power = 1 idle_power_usage = 2 active_power_usage = 4 + layer = TURF_LAYER /obj/machinery/mass_driver name = "mass driver" @@ -587,45 +588,20 @@ name = "Microwave" icon = 'kitchen.dmi' icon_state = "mw" + layer = 2.9 density = 1 anchored = 1 use_power = 1 idle_power_usage = 5 active_power_usage = 100 - var/egg_amount = 0 //Current number of eggs inside - var/flour_amount = 0 //Current amount of flour inside - var/water_amount = 0 //Current amount of water inside - var/monkeymeat_amount = 0 - var/cheese_amount = 0 - var/humanmeat_amount = 0 - var/donkpocket_amount = 0 - var/xenomeat_amount = 0 - var/milk_amount = 0 - var/hotsauce_amount = 0 - var/coldsauce_amount = 0 - var/soysauce_amount = 0 - var/ketchup_amount = 0 - var/tofu_amount = 0 - var/berryjuice_amount = 0 - var/carpmeat_amount = 0 - var/humanmeat_name = "" - var/humanmeat_job = "" - var/operating = 0 // Is it on? - var/dirty = 0 // Does it need cleaning? - var/broken = 0 // How broken is it??? - var/list/available_recipes = list() // List of the recipes you can use - var/obj/item/weapon/reagent_containers/food/snacks/being_cooked = null // The item being cooked - var/obj/item/extra_item = null// One non food item that can be added flags = OPENCONTAINER //Temporary holder while it counts what's in it. - New() // Stuff can be added but not removed without destroying it. - var/datum/reagents/R = new/datum/reagents(100) - reagents = R - R.my_atom = src + /obj/machinery/processor name = "Food Processor" icon = 'kitchen.dmi' icon_state = "processor" + layer = 2.9 density = 1 anchored = 1 var/broken = 0 diff --git a/code/defines/obj/supplypacks.dm b/code/defines/obj/supplypacks.dm index 2e7507cc81b..83d897e137f 100644 --- a/code/defines/obj/supplypacks.dm +++ b/code/defines/obj/supplypacks.dm @@ -72,15 +72,15 @@ /datum/supply_packs/meat name = "Meat crate" - contains = list("/obj/item/weapon/reagent_containers/food/snacks/monkeymeat", - "/obj/item/weapon/reagent_containers/food/snacks/monkeymeat", - "/obj/item/weapon/reagent_containers/food/snacks/monkeymeat", - "/obj/item/weapon/reagent_containers/food/snacks/monkeymeat", - "/obj/item/weapon/reagent_containers/food/snacks/monkeymeat", - "/obj/item/weapon/reagent_containers/food/snacks/monkeymeat", - "/obj/item/weapon/reagent_containers/food/snacks/monkeymeat", - "/obj/item/weapon/reagent_containers/food/snacks/monkeymeat", - "/obj/item/weapon/reagent_containers/food/snacks/monkeymeat") + contains = list("/obj/item/weapon/reagent_containers/food/snacks/meat/monkey", + "/obj/item/weapon/reagent_containers/food/snacks/meat/monkey", + "/obj/item/weapon/reagent_containers/food/snacks/meat/monkey", + "/obj/item/weapon/reagent_containers/food/snacks/meat/monkey", + "/obj/item/weapon/reagent_containers/food/snacks/meat/monkey", + "/obj/item/weapon/reagent_containers/food/snacks/meat/monkey", + "/obj/item/weapon/reagent_containers/food/snacks/meat/monkey", + "/obj/item/weapon/reagent_containers/food/snacks/meat/monkey", + "/obj/item/weapon/reagent_containers/food/snacks/meat/monkey") cost = 10 containertype = "/obj/crate/freezer" containername = "Meat crate" diff --git a/code/defines/obj/vending.dm b/code/defines/obj/vending.dm index fdaec71c8d1..fdcc10ec3ea 100644 --- a/code/defines/obj/vending.dm +++ b/code/defines/obj/vending.dm @@ -3,6 +3,7 @@ desc = "A generic vending machine." icon = 'vending.dmi' icon_state = "generic" + layer = 2.9 anchored = 1 density = 1 var/active = 1 //No sales pitches if off! diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 8ddbfdf1f8e..01748291d8f 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -1297,6 +1297,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov /obj/item/weapon/tank/anesthetic name = "Gas Tank (Sleeping Agent)" icon_state = "anesthetic" + item_state = "an_tank" /obj/item/weapon/tank/jetpack name = "Jetpack (Oxygen)" diff --git a/code/game/machinery/gibber.dm b/code/game/machinery/gibber.dm index 0a63a183d25..e1ea84b21b5 100644 --- a/code/game/machinery/gibber.dm +++ b/code/game/machinery/gibber.dm @@ -83,9 +83,9 @@ var/sourcetotalreagents = src.occupant.reagents.total_volume var/totalslabs = 3 - var/obj/item/weapon/reagent_containers/food/snacks/humanmeat/newmeat1 = new /obj/item/weapon/reagent_containers/food/snacks/humanmeat - var/obj/item/weapon/reagent_containers/food/snacks/humanmeat/newmeat2 = new /obj/item/weapon/reagent_containers/food/snacks/humanmeat - var/obj/item/weapon/reagent_containers/food/snacks/humanmeat/newmeat3 = new /obj/item/weapon/reagent_containers/food/snacks/humanmeat + var/obj/item/weapon/reagent_containers/food/snacks/meat/human/newmeat1 = new + var/obj/item/weapon/reagent_containers/food/snacks/meat/human/newmeat2 = new + var/obj/item/weapon/reagent_containers/food/snacks/meat/human/newmeat3 = new newmeat1.name = sourcename + newmeat1.name newmeat1.subjectname = sourcename diff --git a/code/game/machinery/microwave.dm b/code/game/machinery/microwave.dm index fcdda58aa7f..46e7b5b6a5e 100644 --- a/code/game/machinery/microwave.dm +++ b/code/game/machinery/microwave.dm @@ -1,498 +1,198 @@ -/datum/recipe - var/egg_amount = 0 - var/flour_amount = 0 - var/water_amount = 0 - var/cheese_amount = 0 - var/monkeymeat_amount = 0 - var/xenomeat_amount = 0 - var/humanmeat_amount = 0 - var/carpmeat_amount = 0 - var/donkpocket_amount = 0 - var/milk_amount = 0 - var/hotsauce_amount = 0 - var/coldsauce_amount = 0 - var/soysauce_amount = 0 - var/ketchup_amount = 0 - var/tofu_amount = 0 - var/berryjuice_amount = 0 - var/obj/extra_item = null // This is if an extra item is needed, eg a butte for an assburger - var/creates = "" // The item that is spawned when the recipe is made -/datum/recipe/jellydonut - egg_amount = 1 - flour_amount = 1 - berryjuice_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/jellydonut" +// see code/modules/food/recipes_microwave.dm for recipes -/datum/recipe/donut - egg_amount = 1 - flour_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/donut" +/******************* +* Initialising +********************/ +/obj/machinery/microwave + var/operating = 0 // Is it on? + var/dirty = 0 // = {0..100} Does it need cleaning? + var/broken = 0 // ={0,1,2} How broken is it??? + var/list/datum/recipe/available_recipes // List of the recipes you can use + var/list/acceptable_items // List of the items you can put in + var/list/acceptable_reagents // List of the reagents you can put in + var/max_n_of_items = 0 -/datum/recipe/monkeyburger - egg_amount = 0 - flour_amount = 1 - monkeymeat_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/monkeyburger" - -/datum/recipe/humanburger - flour_amount = 1 - humanmeat_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/humanburger" - -/datum/recipe/brainburger - flour_amount = 1 - extra_item = /obj/item/brain - creates = "/obj/item/weapon/reagent_containers/food/snacks/brainburger" - -/datum/recipe/roburger/ - flour_amount = 1 - extra_item = /obj/item/robot_parts/head - creates = "/obj/item/weapon/reagent_containers/food/snacks/roburger" - -/datum/recipe/xenoburger - egg_amount = 0 - flour_amount = 1 - xenomeat_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/xenoburger" - -/datum/recipe/fishburger - carpmeat_amount = 1 - flour_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/fishburger" - -/datum/recipe/tofuburger - tofu_amount = 1 - flour_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/tofuburger" - -/datum/recipe/clownburger - extra_item = /obj/item/clothing/mask/gas/clown_hat - flour_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/clownburger" - -/datum/recipe/mimeburger - extra_item = /obj/item/clothing/head/beret - flour_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/mimeburger" - -/datum/recipe/waffles - egg_amount = 2 - flour_amount = 2 - creates = "/obj/item/weapon/reagent_containers/food/snacks/waffles" - -/datum/recipe/faggot - monkeymeat_amount = 1 - humanmeat_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/faggot" - -/datum/recipe/donkpocket - flour_amount = 1 - extra_item = /obj/item/weapon/reagent_containers/food/snacks/faggot - creates = "/obj/item/weapon/reagent_containers/food/snacks/donkpocket" - -/datum/recipe/donkpocket_warm - donkpocket_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/donkpocket" - -/datum/recipe/meatbread - flour_amount = 3 - monkeymeat_amount = 3 - cheese_amount = 3 - creates = "/obj/item/weapon/reagent_containers/food/snacks/meatbread" - -/datum/recipe/meatbreadhuman - flour_amount = 3 - humanmeat_amount = 3 - cheese_amount = 3 - creates = "/obj/item/weapon/reagent_containers/food/snacks/meatbread" - -/datum/recipe/xenomeatbread - flour_amount = 3 - xenomeat_amount = 3 - cheese_amount = 3 - creates = "/obj/item/weapon/reagent_containers/food/snacks/xenomeatbread" - -/datum/recipe/bananabread - flour_amount = 3 - egg_amount = 3 - milk_amount = 1 - extra_item = /obj/item/weapon/reagent_containers/food/snacks/banana - creates = "/obj/item/weapon/reagent_containers/food/snacks/bananabread" - -/datum/recipe/omelette - egg_amount = 2 - cheese_amount = 2 - creates = "/obj/item/weapon/reagent_containers/food/snacks/omelette" - -/datum/recipe/muffin - egg_amount = 2 - flour_amount = 1 - milk_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/muffin" - -/datum/recipe/eggplantparm - cheese_amount = 2 - extra_item = /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant - creates = "/obj/item/weapon/reagent_containers/food/snacks/eggplantparm" - -/datum/recipe/soylenviridians - flour_amount = 3 - extra_item = /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans - creates = "/obj/item/weapon/reagent_containers/food/snacks/soylenviridians" - -/datum/recipe/soylentgreen - flour_amount = 3 - humanmeat_amount = 2 - creates = "/obj/item/weapon/reagent_containers/food/snacks/soylentgreen" - -/datum/recipe/carrotcake - flour_amount = 3 - egg_amount = 3 - milk_amount = 1 - extra_item = /obj/item/weapon/reagent_containers/food/snacks/grown/carrot - creates = "/obj/item/weapon/reagent_containers/food/snacks/carrotcake" - -/datum/recipe/cheesecake - flour_amount = 3 - egg_amount = 3 - cheese_amount = 2 - milk_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/cheesecake" - -/datum/recipe/plaincake - flour_amount = 3 - egg_amount = 3 - milk_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/plaincake" - -/datum/recipe/humeatpie - flour_amount = 2 - humanmeat_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/humeatpie" - -/datum/recipe/momeatpie - flour_amount = 2 - monkeymeat_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/momeatpie" - -/datum/recipe/tofupie - flour_amount = 2 - tofu_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/tofupie" - -/datum/recipe/xemeatpie - flour_amount = 2 - xenomeat_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/xemeatpie" - -/datum/recipe/pie - flour_amount = 2 - extra_item = /obj/item/weapon/reagent_containers/food/snacks/banana - creates = "/obj/item/weapon/reagent_containers/food/snacks/pie" - -/datum/recipe/berrypie - flour_amount = 2 - berryjuice_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/berrypie" - -/datum/recipe/wingfangchu - soysauce_amount = 1 - xenomeat_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/wingfangchu" - -/datum/recipe/chaosdonut - egg_amount = 1 - flour_amount = 1 - coldsauce_amount = 1 - hotsauce_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/chaosdonut" - -/datum/recipe/humankabob - humanmeat_amount = 2 - extra_item = /obj/item/stack/rods - creates = "/obj/item/weapon/reagent_containers/food/snacks/humankabob" - -/datum/recipe/monkeykabob - monkeymeat_amount = 2 - extra_item = /obj/item/stack/rods - creates = "/obj/item/weapon/reagent_containers/food/snacks/monkeykabob" - -/datum/recipe/tofukabob - tofu_amount = 2 - extra_item = /obj/item/stack/rods - creates = "/obj/item/weapon/reagent_containers/food/snacks/tofukabob" - -/datum/recipe/tofubread - tofu_amount = 3 - cheese_amount = 3 - flour_amount = 3 - creates = "/obj/item/weapon/reagent_containers/food/snacks/tofubread" - -/datum/recipe/loadedbakedpotato - extra_item = /obj/item/weapon/reagent_containers/food/snacks/grown/potato - cheese_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato" - -/datum/recipe/cheesyfries - extra_item = /obj/item/weapon/reagent_containers/food/snacks/fries - cheese_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/cheesyfries" - -/datum/recipe/cubancarp - extra_item = /obj/item/weapon/reagent_containers/food/snacks/grown/chili - flour_amount = 1 - carpmeat_amount = 1 - creates = "/obj/item/weapon/reagent_containers/food/snacks/cubancarp" - -/datum/recipe/popcorn - extra_item = /obj/item/weapon/reagent_containers/food/snacks/grown/corn - creates = "/obj/item/weapon/reagent_containers/food/snacks/popcorn" - -// *** After making the recipe above, add it in here! *** -// Special Note: When adding recipes to the list, make sure to list recipes with extra_item before similar recipes without -// one. The reason being that sometimes the FOR loop that searchs through the recipes will just stop -// at the wrong recipe. It's a hack job but it works until I clean up the microwave code. /obj/machinery/microwave/New() - ..() - src.available_recipes += new /datum/recipe/clownburger(src) - src.available_recipes += new /datum/recipe/mimeburger(src) - src.available_recipes += new /datum/recipe/brainburger(src) - src.available_recipes += new /datum/recipe/roburger(src) - src.available_recipes += new /datum/recipe/fishburger(src) - src.available_recipes += new /datum/recipe/tofuburger(src) - src.available_recipes += new /datum/recipe/monkeyburger(src) - src.available_recipes += new /datum/recipe/humanburger(src) - src.available_recipes += new /datum/recipe/cubancarp(src) - src.available_recipes += new /datum/recipe/humankabob(src) - src.available_recipes += new /datum/recipe/monkeykabob(src) - src.available_recipes += new /datum/recipe/tofukabob(src) - src.available_recipes += new /datum/recipe/jellydonut(src) - src.available_recipes += new /datum/recipe/donut(src) - src.available_recipes += new /datum/recipe/waffles(src) - src.available_recipes += new /datum/recipe/faggot(src) - src.available_recipes += new /datum/recipe/donkpocket(src) - src.available_recipes += new /datum/recipe/donkpocket_warm(src) - src.available_recipes += new /datum/recipe/pie(src) - src.available_recipes += new /datum/recipe/berrypie(src) - src.available_recipes += new /datum/recipe/xenoburger(src) - src.available_recipes += new /datum/recipe/meatbread(src) - src.available_recipes += new /datum/recipe/meatbreadhuman(src) - src.available_recipes += new /datum/recipe/omelette (src) - src.available_recipes += new /datum/recipe/muffin (src) - src.available_recipes += new /datum/recipe/eggplantparm(src) - src.available_recipes += new /datum/recipe/soylenviridians(src) - src.available_recipes += new /datum/recipe/soylentgreen(src) - src.available_recipes += new /datum/recipe/carrotcake(src) - src.available_recipes += new /datum/recipe/cheesecake(src) - src.available_recipes += new /datum/recipe/bananabread(src) - src.available_recipes += new /datum/recipe/plaincake(src) - src.available_recipes += new /datum/recipe/humeatpie(src) - src.available_recipes += new /datum/recipe/momeatpie(src) - src.available_recipes += new /datum/recipe/tofupie(src) - src.available_recipes += new /datum/recipe/xemeatpie(src) - src.available_recipes += new /datum/recipe/wingfangchu(src) - src.available_recipes += new /datum/recipe/chaosdonut(src) - src.available_recipes += new /datum/recipe/tofubread(src) - src.available_recipes += new /datum/recipe/loadedbakedpotato(src) - src.available_recipes += new /datum/recipe/cheesyfries(src) - src.available_recipes += new /datum/recipe/xenomeatbread(src) - src.available_recipes += new /datum/recipe/popcorn(src) - - + //..() //do not need this + reagents = new/datum/reagents(100) + reagents.my_atom = src + available_recipes = new + for (var/type in (typesof(/datum/recipe)-/datum/recipe)) + available_recipes+= new type + acceptable_items = new + acceptable_reagents = new + for (var/datum/recipe/recipe in available_recipes) + for (var/item in recipe.items) + //if (!(item in acceptable_items)) + acceptable_items |= item + for (var/reagent in recipe.reagents) + acceptable_reagents |= reagent + if (recipe.items) + max_n_of_items = max(max_n_of_items,recipe.items.len) /******************* * Item Adding ********************/ -obj/machinery/microwave/attackby(var/obj/item/O as obj, var/mob/user as mob) +/obj/machinery/microwave/attackby(var/obj/item/O as obj, var/mob/user as mob) if(src.broken > 0) if(src.broken == 2 && istype(O, /obj/item/weapon/screwdriver)) // If it's broken and they're using a screwdriver - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue [user] starts to fix part of the microwave.")) - sleep(20) - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue [user] fixes part of the microwave.")) - src.broken = 1 // Fix it a bit + user.visible_message( \ + "\blue [user] starts to fix part of the microwave.", \ + "\blue You start to fix part of the microwave." \ + ) + if (do_after(user,20)) + user.visible_message( \ + "\blue [user] fixes part of the microwave.", \ + "\blue You have fixed part of the microwave." \ + ) + src.broken = 1 // Fix it a bit else if(src.broken == 1 && istype(O, /obj/item/weapon/wrench)) // If it's broken and they're doing the wrench - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue [user] starts to fix part of the microwave.")) - sleep(20) - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue [user] fixes the microwave!")) - src.icon_state = "mw" - src.broken = 0 // Fix it! - src.flags = OPENCONTAINER + user.visible_message( \ + "\blue [user] starts to fix part of the microwave.", \ + "\blue You start to fix part of the microwave." \ + ) + if (do_after(user,20)) + user.visible_message( \ + "\blue [user] fixes the microwave.", \ + "\blue You have fixed the microwave." \ + ) + src.icon_state = "mw" + src.broken = 0 // Fix it! + src.dirty = 0 // just to be sure + src.flags = OPENCONTAINER else - user << "It's broken!" - else if(src.dirty) // The microwave is all dirty so can't be used! + user << "\red It's broken!" + return 1 + else if(src.dirty==100) // The microwave is all dirty so can't be used! if(istype(O, /obj/item/weapon/cleaner)) // If they're trying to clean it then let them - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue [user] starts to clean the microwave.")) - sleep(20) - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue [user] has cleaned the microwave!")) - src.dirty = 0 // It's cleaned! - src.icon_state = "mw" - src.flags = OPENCONTAINER + user.visible_message( \ + "\blue [user] starts to clean the microwave.", \ + "\blue You start to clean the microwave." \ + ) + if (do_after(user,20)) + user.visible_message( \ + "\blue [user] has cleaned the microwave.", \ + "\blue You have cleaned the microwave." \ + ) + src.dirty = 0 // It's cleaned! + src.broken = 0 // just to be sure + src.icon_state = "mw" + src.flags = OPENCONTAINER else //Otherwise bad luck!! - return - - else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/egg)) // If an egg is used, add it - if(src.egg_amount < 5) - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue [user] adds an egg to the microwave.")) - src.egg_amount++ - del(O) - - else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/tofu)) // If tofu is used, add it - if(src.tofu_amount < 5) - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue [user] adds tofu to the microwave.")) - src.tofu_amount++ - del(O) - - else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/flour)) // If flour is used, add it - if(src.flour_amount < 5) - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue [user] adds some flour to the microwave.")) - src.flour_amount++ - del(O) - - else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge)) // If cheese is used, add it - if(src.cheese_amount < 5) - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue [user] adds some cheese to the microwave.")) - src.cheese_amount++ - del(O) - - else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeymeat)) - if(src.monkeymeat_amount < 5) - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue [user] adds some meat to the microwave.")) - src.monkeymeat_amount++ - del(O) - - else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/xenomeat)) - if(src.xenomeat_amount < 5) - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue [user] adds some meat to the microwave.")) - src.xenomeat_amount++ - del(O) - - else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/humanmeat)) - if(src.humanmeat_amount < 5) - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue [user] adds some meat to the microwave.")) - src.humanmeat_name = O:subjectname - src.humanmeat_job = O:subjectjob - src.humanmeat_amount++ - del(O) - - else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/carpmeat)) - if(src.carpmeat_amount < 5) - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue [user] adds some meat to the microwave.")) - src.carpmeat_amount++ - del(O) - - else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/donkpocket)) - if(src.donkpocket_amount < 2) - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue [user] adds a donk-pocket to the microwave.")) - src.donkpocket_amount++ - del(O) - - else if(O.is_open_container()) - return - - else - if(!istype(extra_item, /obj/item)) //Allow one non food item to be added! - user.u_equip(O) - extra_item = O - O.loc = src - if((user.client && user.s_active != src)) - user.client.screen -= O - O.dropped(user) - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue [user] adds [O] to the microwave.")) + user << "\red It's dirty!" + return 1 + else if(is_type_in_list(O,acceptable_items)) + if (contents.len>=max_n_of_items) + user << "\red This [src] is full of ingredients, you cannot put more." + return 1 + if (istype(O,/obj/item/stack) && O:amount>1) + new O.type (src) + O:use(1) + user.visible_message( \ + "[user] has added one of [O] to \the [src].", \ + "\blue You add one of [O] to \the [src].") else - user << "There already seems to be an unusual item inside, so you don't add this one too." //Let them know it failed for a reason though + user.before_take_item(O) + O.loc = src + user.visible_message( \ + "[user] has added \the [O] to \the [src].", \ + "\blue You add \the [O] to \the [src].") + else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \ + istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \ + istype(O,/obj/item/weapon/reagent_containers/food/condiment) \ + ) + var/obj/item/weapon/reagent_containers/glass/G = O + if (!G.reagents) + return 1 + for (var/datum/reagent/R in G.reagents.reagent_list) + if (!(R.id in acceptable_reagents)) + user << "\red Your [G] contains components unsuitable for cookery." + return 1 + //G.reagents.trans_to(src,G.amount_per_transfer_from_this) + else if(istype(O,/obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = O + user << "\red This is ridiculous. You can not fit \the [G.affecting] in this [src]." + return 1 + else + user << "\red You have no idea what you can cook with this [O]." + return 1 + src.updateUsrDialog() -obj/machinery/microwave/attack_paw(user as mob) +/obj/machinery/microwave/attack_paw(mob/user as mob) return src.attack_hand(user) +/obj/machinery/microwave/attack_ai(mob/user as mob) + return 0 + +/obj/machinery/microwave/attack_hand(mob/user as mob) + user.machine = src + interact(user) /******************* * Microwave Menu ********************/ -/obj/machinery/microwave/attack_hand(user as mob) // The microwave Menu - var/dat - var/xenodisplay - var/sauces - while(src.reagents.total_volume) //A series of while loops to count up how much of the relevant reagents there are. - while(src.reagents.get_reagent_amount("capsaicin") > 4) // And convert them into other variables. Ugly but it works for now. - src.reagents.remove_reagent("capsaicin", 5) - src.hotsauce_amount++ - while(src.reagents.get_reagent_amount("frostoil") > 4) - src.reagents.remove_reagent("frostoil", 5) - src.coldsauce_amount++ - while(src.reagents.get_reagent_amount("soysauce") > 4) - src.reagents.remove_reagent("soysauce", 5) - src.soysauce_amount++ - while(src.reagents.get_reagent_amount("milk") > 4) - src.reagents.remove_reagent("milk", 5) - src.milk_amount++ - while(src.reagents.get_reagent_amount("soymilk") > 4) - src.reagents.remove_reagent("soymilk", 5) - src.milk_amount++ - while(src.reagents.get_reagent_amount("ketchup") > 4) - src.reagents.remove_reagent("ketchup", 5) - src.ketchup_amount++ - while(src.reagents.get_reagent_amount("berryjuice") > 4) - src.reagents.remove_reagent("berryjuice", 5) - src.berryjuice_amount++ - src.reagents.clear_reagents() - if(src.hotsauce_amount) sauces = sauces + "Hotsauce:[src.hotsauce_amount] units.
" - if(src.coldsauce_amount) sauces = sauces + "Coldsauce:[src.coldsauce_amount] units.
" - if(src.soysauce_amount) sauces = sauces + "Soysauce:[src.soysauce_amount] units.
" - if(src.berryjuice_amount) sauces = sauces + "Berry Juice:[src.berryjuice_amount] units.
" - if(src.ketchup_amount) sauces = sauces + "Ketchup:[src.ketchup_amount] units.
" - if(src.xenomeat_amount) xenodisplay = "Alien Meat: [src.xenomeat_amount]
" +/obj/machinery/microwave/proc/interact(mob/user as mob) // The microwave Menu + var/dat = "" if(src.broken > 0) - dat = {" -Bzzzzttttt - "} + dat = {"Bzzzzttttt"} else if(src.operating) - dat = {" -Microwaving in progress!
-Please wait...!

-
-"} - else if(src.dirty) - dat = {" -This microwave is dirty!
-Please clean it before use!

-
-"} + dat = {"Microwaving in progress!
Please wait...!
"} + else if(src.dirty==100) + dat = {"This microwave is dirty!
Please clean it before use!
"} else - dat = {" -Eggs:[src.egg_amount] eggs
-Flour:[src.flour_amount] cups of flour
-Cheese:[src.cheese_amount] cheese wedges
-Tofu:[src.tofu_amount] tofu chunks
-Monkey Meat:[src.monkeymeat_amount] slabs of meat
-Turnovers:[src.donkpocket_amount] turnovers
-Milk:[src.milk_amount] cups of milk.
-[sauces] -Human Meat:[src.humanmeat_amount] slabs of meat
-Carp Meat:[src.carpmeat_amount] fillets of meat
-[xenodisplay] -
-
-Turn on!
-
Dispose contents!
+ var/list/items_counts = new + var/list/items_measures = new + var/list/items_measures_p = new + for (var/obj/O in contents) + var/display_name = O.name + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) + items_measures[display_name] = "egg" + items_measures_p[display_name] = "eggs" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/flour)) + items_measures[display_name] = "cup of flour" + items_measures_p[display_name] = "cups of flour" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu)) + items_measures[display_name] = "tofu chunk" + items_measures_p[display_name] = "tofu chunks" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat + items_measures[display_name] = "slab of meat" + items_measures_p[display_name] = "slabs of meat" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) + display_name = "Turnovers" + items_measures[display_name] = "turnover" + items_measures_p[display_name] = "turnovers" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) + items_measures[display_name] = "fillet of meat" + items_measures_p[display_name] = "fillets of meat" + items_counts[display_name]++ + for (var/O in items_counts) + var/N = items_counts[O] + if (!(O in items_measures)) + dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
"} + else + if (N==1) + dat += {"[capitalize(O)]: [N] [items_measures[O]]
"} + else + dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
"} + + for (var/datum/reagent/R in reagents.reagent_list) + var/display_name = R.name + if (R.id == "capsaicin") + display_name = "Hotsauce" + if (R.id == "frostoil") + display_name = "Coldsauce" + dat += {"[display_name]: [R.volume] unit\s
"} + + if (items_counts.len==0 && reagents.reagent_list.len==0) + dat = {"The microwave is empty
"} + else + dat = {"Ingredients:
[dat]"} + dat += {"

\ +
Turn on!
\ +
Dispose contents!
\ "} user << browse("Microwave Controls[dat]", "window=microwave") @@ -505,90 +205,156 @@ Please clean it before use!
* Microwave Menu Handling/Cooking ************************************/ +/obj/machinery/microwave/proc/cook() + start() + if (reagents.total_volume==0 && !(locate(/obj) in contents)) //dry run + if (!wzhzhzh(10)) + abort() + return + stop() + return + + var/datum/recipe/recipe = select_recipe(available_recipes,src) + var/obj/cooked + if (!recipe) + dirty += 1 + if (prob(max(10,dirty*5))) + if (!wzhzhzh(4)) + abort() + return + muck_start() + wzhzhzh(4) + muck_finish() + cooked = fail() + cooked.loc = src.loc + return + else if (has_extra_item()) + if (!wzhzhzh(4)) + abort() + return + broke() + cooked = fail() + cooked.loc = src.loc + return + else + if (!wzhzhzh(10)) + abort() + return + stop() + cooked = fail() + cooked.loc = src.loc + return + else + var/halftime = round(recipe.time/10/2) + if (!wzhzhzh(halftime)) + abort() + return + if (!wzhzhzh(halftime)) + abort() + cooked = fail() + cooked.loc = src.loc + return + cooked = recipe.make_food(src) + stop() + cooked.loc = src.loc + return + +/obj/machinery/microwave/proc/wzhzhzh(var/seconds as num) + for (var/i=1 to seconds) + if (stat & (NOPOWER|BROKEN)) + return 0 + use_power(500) + sleep(10) + return 1 + +/obj/machinery/microwave/proc/has_extra_item() + for (var/obj/O in contents) + if ( \ + !istype(O,/obj/item/weapon/reagent_containers/food) && \ + !istype(O, /obj/item/weapon/grown) \ + ) + return 1 + return 0 + +/obj/machinery/microwave/proc/start() + src.visible_message("\blue The microwave turns on.", "\blue You hear a microwave.") + src.operating = 1 + src.icon_state = "mw1" + src.updateUsrDialog() + +/obj/machinery/microwave/proc/abort() + src.operating = 0 // Turn it off again aferwards + src.icon_state = "mw" + src.updateUsrDialog() + +/obj/machinery/microwave/proc/stop() + playsound(src.loc, 'ding.ogg', 50, 1) + src.operating = 0 // Turn it off again aferwards + src.icon_state = "mw" + src.updateUsrDialog() + +/obj/machinery/microwave/proc/dispose() + for (var/obj/O in contents) + del(O) + src.reagents.clear_reagents() + usr << "\blue You dispose of the microwave contents." + +/obj/machinery/microwave/proc/muck_start() + playsound(src.loc, 'splat.ogg', 50, 1) // Play a splat sound + src.icon_state = "mwbloody1" // Make it look dirty!! + +/obj/machinery/microwave/proc/muck_finish() + playsound(src.loc, 'ding.ogg', 50, 1) + src.visible_message("\red The microwave gets covered in muck!") + src.dirty = 100 // Make it dirty so it can't be used util cleaned + src.flags = null //So you can't add condiments + src.icon_state = "mwbloody" // Make it look dirty too + src.operating = 0 // Turn it off again aferwards + src.updateUsrDialog() + +/obj/machinery/microwave/proc/broke() + var/datum/effects/system/spark_spread/s = new + s.set_up(2, 1, src) + s.start() + src.icon_state = "mwb" // Make it look all busted up and shit + src.visible_message("\red The microwave breaks!") //Let them know they're stupid + src.broken = 2 // Make it broken so it can't be used util fixed + src.flags = null //So you can't add condiments + src.operating = 0 // Turn it off again aferwards + src.updateUsrDialog() + +/obj/machinery/microwave/proc/fail() + var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/ffuu = new(src) + var/amount = 0 + for (var/obj/O in contents-ffuu) + amount++ + if (O.reagents) + var/id = O.reagents.get_master_reagent_id() + if (id) + amount+=O.reagents.get_reagent_amount(id) + del(O) + src.reagents.clear_reagents() + ffuu.reagents.add_reagent("carbon", amount) + ffuu.reagents.add_reagent("toxin", amount/10) + return ffuu + /obj/machinery/microwave/Topic(href, href_list) if(..()) return usr.machine = src - src.add_fingerprint(usr) - - if(href_list["cook"]) - if(!src.operating) - var/operation = text2num(href_list["cook"]) - - var/cook_time = 200 // The time to wait before spawning the item - var/cooked_item = null - - if(operation == 1) // If cook was pressed - for(var/mob/V in viewers(src, null)) - V.show_message(text("\blue The microwave turns on.")) - for(var/datum/recipe/R in src.available_recipes) //Look through the recipe list we made above - if(src.carpmeat_amount == R.carpmeat_amount && src.berryjuice_amount >= R.berryjuice_amount && src.cheese_amount == R.cheese_amount && src.tofu_amount == R.tofu_amount && src.egg_amount == R.egg_amount && src.flour_amount == R.flour_amount && src.monkeymeat_amount == R.monkeymeat_amount && src.humanmeat_amount == R.humanmeat_amount && src.donkpocket_amount == R.donkpocket_amount && src.xenomeat_amount == R.xenomeat_amount && src.hotsauce_amount >= R.hotsauce_amount && src.coldsauce_amount >= R.coldsauce_amount && src.soysauce_amount >= R.soysauce_amount && src.ketchup_amount >= R.ketchup_amount && src.milk_amount >= R.milk_amount) // Check if it's an accepted recipe - var/thing - if(src.extra_item) - if (src.extra_item.type == R.extra_item) thing = 1 - if(R.extra_item == null || thing) // Just in case the recipe doesn't have an extra item in it - src.clear() - src.extra_item = null // And the extra item - cooked_item = R.creates // Store the item that will be created - - if(cooked_item == null) //Oops that wasn't a recipe dummy!!! - if(src.carpmeat_amount > 0 || src.egg_amount > 0 || src.tofu_amount > 0 || src.flour_amount > 0 || src.water_amount > 0 || src.monkeymeat_amount > 0 || src.humanmeat_amount > 0 || src.donkpocket_amount > 0 || src.hotsauce_amount > 0 ||src.coldsauce_amount > 0 || src.soysauce_amount > 0 || src.ketchup_amount > 0 || src.milk_amount > 0 && src.extra_item == null) //Make sure there's something inside though to dirty it - src.operating = 1 // Turn it on - src.icon_state = "mw1" - src.updateUsrDialog() - src.clear() - sleep(40) // Half way through - playsound(src.loc, 'splat.ogg', 50, 1) // Play a splat sound - icon_state = "mwbloody1" // Make it look dirty!! - sleep(40) // Then at the end let it finish normally - playsound(src.loc, 'ding.ogg', 50, 1) - for(var/mob/V in viewers(src, null)) - V.show_message(text("\red The microwave gets covered in muck!")) - src.dirty = 1 // Make it dirty so it can't be used util cleaned - src.flags = null //So you can't add condiments - src.icon_state = "mwbloody" // Make it look dirty too - src.operating = 0 // Turn it off again aferwards - // Don't clear the extra item though so important stuff can't be deleted this way and - // it prolly wouldn't make a mess anyway - - else if(src.extra_item != null) // However if there's a weird item inside we want to break it, not dirty it - src.operating = 1 // Turn it on - src.icon_state = "mw1" - src.updateUsrDialog() - src.clear() - sleep(60) // Wait a while - var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread - s.set_up(2, 1, src) - s.start() - icon_state = "mwb" // Make it look all busted up and shit - for(var/mob/V in viewers(src, null)) - V.show_message(text("\red The microwave breaks!")) //Let them know they're stupid - src.broken = 2 // Make it broken so it can't be used util fixed - src.operating = 0 // Turn it off again aferwards - src.flags = null //So you can't add condiments - src.extra_item.loc = get_turf(src) // Eject the extra item so important shit like the disk can't be destroyed in there - src.extra_item = null - - else //Otherwise it was empty, so just turn it on then off again with nothing happening - for(var/obj/O in src.contents) - del(O) //with how brains work now, need to make sure they get deleted so the poor player inside it gets ghosted. --NEO - src.operating = 1 - src.icon_state = "mw1" - src.updateUsrDialog() - sleep(80) - src.icon_state = "mw" - playsound(src.loc, 'ding.ogg', 50, 1) - src.operating = 0 - - if(operation == 2) // If dispose was pressed, empty the microwave - src.clear() - src.reagents.clear_reagents() - if(src.extra_item != null) - src.extra_item.loc = get_turf(src) // Eject the extra item so important shit like the disk can't be destroyed in there - src.extra_item = null - usr << "You dispose of the microwave contents." + if(src.operating) + src.updateUsrDialog() + return + switch(href_list["action"]) + if ("cook") + cook() + + if ("dispose") + dispose() + return +/* var/cooking = cooked_item // Get the item that needs to be spawned if(!isnull(cooking)) src.operating = 1 // Turn it on so it can't be used again while it's cooking @@ -622,24 +388,4 @@ Please clean it before use!
src.icon_state = "mw" else return - -/obj/machinery/microwave/proc/clear() - src.egg_amount = 0 - src.flour_amount = 0 - src.xenomeat_amount = 0 - src.cheese_amount = 0 - src.water_amount = 0 - src.humanmeat_amount = 0 - src.monkeymeat_amount = 0 - src.donkpocket_amount = 0 - src.milk_amount = 0 - src.hotsauce_amount = 0 - src.coldsauce_amount = 0 - src.soysauce_amount = 0 - src.tofu_amount = 0 - src.ketchup_amount = 0 - src.berryjuice_amount = 0 - src.carpmeat_amount = 0 - src.updateUsrDialog() - //src.temp.reagents.clear_reagents() - return \ No newline at end of file +*/ diff --git a/code/game/machinery/processor.dm b/code/game/machinery/processor.dm index fc99311783c..5b282bcc2e9 100644 --- a/code/game/machinery/processor.dm +++ b/code/game/machinery/processor.dm @@ -12,14 +12,19 @@ wheat input = /obj/item/weapon/reagent_containers/food/snacks/grown/wheat output = /obj/item/weapon/reagent_containers/food/snacks/flour + + meat + input = /obj/item/weapon/reagent_containers/food/snacks/meat + output = /obj/item/weapon/reagent_containers/food/snacks/faggot +/* monkeymeat - input = /obj/item/weapon/reagent_containers/food/snacks/monkeymeat + input = /obj/item/weapon/reagent_containers/food/snacks/meat/monkey output = /obj/item/weapon/reagent_containers/food/snacks/faggot humanmeat - input = /obj/item/weapon/reagent_containers/food/snacks/humanmeat + input = /obj/item/weapon/reagent_containers/food/snacks/meat/human output = /obj/item/weapon/reagent_containers/food/snacks/faggot - +*/ potato input = /obj/item/weapon/reagent_containers/food/snacks/grown/potato output = /obj/item/weapon/reagent_containers/food/snacks/fries diff --git a/code/game/magic/cultist/ritual.dm b/code/game/magic/cultist/ritual.dm index ff4617a14b8..c2a6e3901a3 100644 --- a/code/game/magic/cultist/ritual.dm +++ b/code/game/magic/cultist/ritual.dm @@ -55,6 +55,7 @@ var/runedec = 0 icon_state = "1" var/visibility = 0 unacidable = 1 + layer = TURF_LAYER var diff --git a/code/game/objects/closets/kitchen.dm b/code/game/objects/closets/kitchen.dm index 778e98a3423..5c7b934998d 100644 --- a/code/game/objects/closets/kitchen.dm +++ b/code/game/objects/closets/kitchen.dm @@ -42,12 +42,12 @@ sleep(2) new /obj/item/kitchen/egg_box(src) new /obj/item/kitchen/egg_box(src) - new /obj/item/weapon/reagent_containers/food/snacks/monkeymeat(src) - new /obj/item/weapon/reagent_containers/food/snacks/monkeymeat(src) + new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src) + new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src) new /obj/item/weapon/kitchenknife(src) if(prob(95)) - new /obj/item/weapon/reagent_containers/food/snacks/monkeymeat(src) - new /obj/item/weapon/reagent_containers/food/snacks/monkeymeat(src) + new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src) + new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src) else new /obj/item/weapon/reagent_containers/food/snacks/xenomeat(src) new /obj/item/weapon/reagent_containers/food/snacks/xenomeat(src) diff --git a/code/game/objects/items/helper_procs.dm b/code/game/objects/items/helper_procs.dm index c06f46cb1aa..334ec2e5e22 100644 --- a/code/game/objects/items/helper_procs.dm +++ b/code/game/objects/items/helper_procs.dm @@ -67,8 +67,6 @@ /proc/is_type_in_list(var/atom/A, var/list/L) for(var/type in L) - if(isnull(type)) - continue if(istype(A, type)) return 1 return 0 @@ -89,36 +87,36 @@ var/global/list/common_tools = list( return 0 /proc/iswrench(O) - if(O && istype(O, /obj/item/weapon/wrench)) + if(istype(O, /obj/item/weapon/wrench)) return 1 return 0 /proc/iswelder(O) - if(O && istype(O, /obj/item/weapon/weldingtool)) + if(istype(O, /obj/item/weapon/weldingtool)) return 1 return 0 /proc/iscoil(O) - if(O && istype(O, /obj/item/weapon/cable_coil)) + if(istype(O, /obj/item/weapon/cable_coil)) return 1 return 0 /proc/iswirecutter(O) - if(O && istype(O, /obj/item/weapon/wirecutters)) + if(istype(O, /obj/item/weapon/wirecutters)) return 1 return 0 /proc/isscrewdriver(O) - if(O && istype(O, /obj/item/weapon/screwdriver)) + if(istype(O, /obj/item/weapon/screwdriver)) return 1 return 0 /proc/ismultitool(O) - if(O && istype(O, /obj/item/device/multitool)) + if(istype(O, /obj/item/device/multitool)) return 1 return 0 /proc/iscrowbar(O) - if(O && istype(O, /obj/item/weapon/crowbar)) + if(istype(O, /obj/item/weapon/crowbar)) return 1 return 0 diff --git a/code/game/objects/kitchen.dm b/code/game/objects/kitchen.dm index b7548b83bd1..ac3d615659f 100644 --- a/code/game/objects/kitchen.dm +++ b/code/game/objects/kitchen.dm @@ -58,11 +58,11 @@ if(src.meattype == 1) if(src.meat > 1) src.meat-- - new /obj/item/weapon/reagent_containers/food/snacks/monkeymeat( src.loc ) + new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey( src.loc ) usr << "You remove some meat from the monkey." else if(src.meat == 1) src.meat-- - new /obj/item/weapon/reagent_containers/food/snacks/monkeymeat(src.loc) + new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src.loc) usr << "You remove the last piece of meat from the monkey!" src.icon_state = "spike" src.occupied = 0 diff --git a/code/modules/food/food.dm b/code/modules/food/food.dm new file mode 100644 index 00000000000..ef78e7bae78 --- /dev/null +++ b/code/modules/food/food.dm @@ -0,0 +1,936 @@ + +////////////////////////////////////////////////// +////////////////////////////////////////////Snacks +////////////////////////////////////////////////// +//Items in the "Snacks" subcategory are food items that people actually eat. The key points are that they are created +// already filled with reagents and are destroyed when empty. Additionally, they make a "munching" noise when eaten. + +//Notes by Darem: Food in the "snacks" subtype can hold a maximum of 50 units Generally speaking, you don't want to go over 40 +// total for the item because you want to leave space for extra condiments. If you want effects besides healing, add a reagent for +// it. Try to stick to existing reagents when possible (so if you want a stronger healing effect, just use Tricordrazine). On use +// effects (such as the old officer eating a donut code) requires a unique reagent (unless you can figure out a better way). + +//The nutriment reagent and bitesize variable replace the old heal_amt and amount variables. Each unit of nutriment is equal to +// 2 of the old heal_amt variable. Bitesize is the rate at which the reagents are consumed. So if you have 6 nutriment and a +// bitesize of 2, then it'll take 3 bites to eat. Unlike the old system, the contained reagents are evenly spread among all +// the bites. No more contained reagents = no more bites. + +//Here is an example of the new formatting for anyone who wants to add more food items. +///obj/item/weapon/reagent_containers/food/snacks/xenoburger //Identification path for the object. +// name = "Xenoburger" //Name that displays in the UI. +// desc = "Smells caustic. Tastes like heresy." //Duh +// icon_state = "xburger" //Refers to an icon in food.dmi +// New() //Don't mess with this. +// ..() //Same here. +// reagents.add_reagent("xenomicrobes", 10) //This is what is in the food item. you may copy/paste +// reagents.add_reagent("nutriment", 2) // this line of code for all the contents. +// bitesize = 3 //This is the amount each bite consumes. + +/obj/item/weapon/reagent_containers/food/snacks/banana + name = "Banana" + desc = "A banana." + icon = 'items.dmi' + icon_state = "banana" + item_state = "banana" + On_Consume() + var/mob/M = usr + var/obj/item/weapon/bananapeel/W = new /obj/item/weapon/bananapeel( M ) + M << "\blue You peel the banana." + M.put_in_hand(W) + W.add_fingerprint(M) + New() + ..() + reagents.add_reagent("banana", 5) + bitesize = 5 + src.pixel_x = rand(-5.0, 5) + src.pixel_y = rand(-5.0, 5) + +/obj/item/weapon/reagent_containers/food/snacks/candy + name = "candy" + desc = "Nougat love it or hate it." + icon_state = "candy" + New() + ..() + reagents.add_reagent("nutriment", 1) + reagents.add_reagent("sugar", 3) + +/obj/item/weapon/reagent_containers/food/snacks/candy_corn + name = "candy corm" //Not a typo + desc = "It's a handful of candy corm. Can be stored in a detective's hat." + icon_state = "candy_corn" + New() + ..() + reagents.add_reagent("nutriment", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/chips + name = "chips" + desc = "Commander Riker's What-The-Crisps" + icon_state = "chips" + New() + ..() + reagents.add_reagent("nutriment", 3) + +/obj/item/weapon/reagent_containers/food/snacks/donut + name = "donut" + desc = "Goes great with Robust Coffee." + icon_state = "donut1" + New() + ..() + reagents.add_reagent("nutriment", 3) + reagents.add_reagent("sprinkles", 1) + if(prob(30)) + src.icon_state = "donut2" + src.name = "frosted donut" + src.bitesize = 2 + reagents.add_reagent("nutriment", 2) + reagents.add_reagent("sprinkles", 1) + +/obj/item/weapon/reagent_containers/food/snacks/egg + name = "egg" + desc = "An egg!" + icon_state = "egg" + New() + ..() + reagents.add_reagent("nutriment", 1) + +/obj/item/weapon/reagent_containers/food/snacks/flour + name = "flour" + desc = "Some flour" + icon_state = "flour" + New() + ..() + reagents.add_reagent("nutriment", 1) + +/obj/item/weapon/reagent_containers/food/snacks/meat + name = "meat" + desc = "A slab of meat" + icon_state = "meat" + New() + ..() + reagents.add_reagent("nutriment", 3) + +/obj/item/weapon/reagent_containers/food/snacks/meat/human + name = "-meat" + var/subjectname = "" + var/subjectjob = null + +/obj/item/weapon/reagent_containers/food/snacks/meat/monkey + //same as plain meat + +/obj/item/weapon/reagent_containers/food/snacks/tofu + name = "Tofu" + icon_state = "tofu" + desc = "We all love tofu." + New() + ..() + reagents.add_reagent("nutriment", 3) + + +/obj/item/weapon/reagent_containers/food/snacks/carpmeat + name = "carp fillet" + desc = "A fillet of spess carp meat" + icon_state = "fishfillet" + New() + ..() + reagents.add_reagent("nutriment", 3) + reagents.add_reagent("carpotoxin", 3) + +/obj/item/weapon/reagent_containers/food/snacks/xenomeat + name = "meat" + desc = "A slab of meat" + icon_state = "xenomeat" + New() + ..() + reagents.add_reagent("nutriment", 3) + +/obj/item/weapon/reagent_containers/food/snacks/faggot + name = "Faggot" + desc = "A great meal all round. Not a cord of wood." + icon_state = "faggot" + New() + ..() + reagents.add_reagent("nutriment", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/donkpocket + name = "Donk-pocket" + desc = "The food of choice for the seasoned traitor." + icon_state = "donkpocket" + New() + ..() + reagents.add_reagent("nutriment", 2) + var/warm = 0 + proc/cooltime() //Not working, derp? + if (src.warm) + spawn( 4200 ) + src.warm = 0 + src.reagents.del_reagent("tricordrazine") + src.name = "donk-pocket" + return + +/obj/item/weapon/reagent_containers/food/snacks/brainburger + name = "brainburger" + desc = "A strange looking burger. It looks almost sentient." + icon_state = "brainburger" + New() + ..() + reagents.add_reagent("nutriment", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/human + var/hname = "" + var/job = null + +/obj/item/weapon/reagent_containers/food/snacks/human/burger + name = "-burger" + desc = "A bloody burger." + icon_state = "hburger" + New() + ..() + reagents.add_reagent("nutriment", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/monkeyburger + name = "burger" + desc = "The cornerstone of every nutritious breakfast." + icon_state = "hburger" + New() + ..() + reagents.add_reagent("nutriment", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/fishburger + name = "Fillet -o- Carp Sandwich" + desc = "Almost like a carp is yelling somewhere... Give me back that fillet -o- carp, give me that carp." + icon_state = "fishburger" + New() + ..() + reagents.add_reagent("nutriment", 8) + reagents.add_reagent("carpotoxin", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/tofuburger + name = "Tofu Burger" + desc = "What.. is that meat?" + icon_state = "tofuburger" + New() + ..() + reagents.add_reagent("nutriment", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/roburger + name = "roburger" + desc = "The lettuce is the only organic component. Beep." + icon_state = "roburger" + New() + ..() + reagents.add_reagent("nutriment", 2) + reagents.add_reagent("nanites", 10) + bitesize = 3 + + +/obj/item/weapon/reagent_containers/food/snacks/roburgerbig + name = "roburger" + desc = "This massive patty looks like poison. Beep." + icon_state = "roburger" + volume = 100 + New() + ..() + reagents.add_reagent("nanites", 100) + bitesize = 0.1 + +/obj/item/weapon/reagent_containers/food/snacks/xenoburger + name = "xenoburger" + desc = "Smells caustic. Tastes like heresy." + icon_state = "xburger" + New() + ..() + reagents.add_reagent("xenomicrobes", 10) + reagents.add_reagent("nutriment", 2) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/clownburger + name = "Clown Burger" + desc = "This tastes funny..." + icon_state = "clownburger" + New() + ..() +/* + var/datum/disease/F = new /datum/disease/pierrot_throat(0) + var/list/data = list("virus"= F) + reagents.add_reagent("blood", 4, data) +*/ + reagents.add_reagent("nutriment", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/mimeburger + name = "Mime Burger" + desc = "It's taste defies language." + icon_state = "mimeburger" + New() + ..() + reagents.add_reagent("nutriment", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/omelette + name = "Omelette Du Fromage" + desc = "That's all you can say!" + icon_state = "omelette" + //var/herp = 0 + New() + ..() + reagents.add_reagent("nutriment", 10) + bitesize = 1 + attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/kitchen/utensil/fork)) + if (W.icon_state == "forkloaded") + user << "\red You already have omelette on your fork." + return + //W.icon = 'kitchen.dmi' + W.icon_state = "forkloaded" + /*if (herp) + world << "[user] takes a piece of omelette with his fork!"*/ + //Why this unecessary check? Oh I know, because I'm bad >:C + // Yes, you are. You griefing my badmin toys. --rastaf0 + user.visible_message( \ + "[user] takes a piece of omelette with their fork!", \ + "\blue You take a piece of omelette with your fork!" \ + ) + reagents.remove_reagent("nutriment", 1) + if (reagents.total_volume <= 0) + del(src) +/* + * Unsused. +/obj/item/weapon/reagent_containers/food/snacks/omeletteforkload + name = "Omelette Du Fromage" + desc = "That's all you can say!" + New() + ..() + reagents.add_reagent("nutriment", 1) +*/ + +/obj/item/weapon/reagent_containers/food/snacks/muffin + name = "Muffin" + desc = "A delicious and spongy little cake" + icon_state = "muffin" + New() + ..() + reagents.add_reagent("nutriment", 6) + +/obj/item/weapon/reagent_containers/food/snacks/pie + name = "Banana Cream Pie" + desc = "Just like back home, on clown planet! HONK!" + icon_state = "pie" + New() + ..() + reagents.add_reagent("nutriment", 4) + reagents.add_reagent("banana",5) +/* +/obj/item/weapon/reagent_containers/food/snacks/berrypie + name = "Very Berry Pie" + desc = "No black birds, this is a good sign." + icon_state = "pie" + New() + ..() + reagents.add_reagent("nutriment", 4) + reagents.add_reagent("berryjuice", 5) +*/ + +/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis + name = "Berry Clafoutis" + desc = "No black birds, this is a good sign." + icon_state = "berryclafoutis" + New() + ..() + reagents.add_reagent("nutriment", 4) + reagents.add_reagent("berryjuice", 5) + +/obj/item/weapon/reagent_containers/food/snacks/waffles + name = "waffles" + desc = "Mmm, waffles" + icon_state = "waffles" + New() + ..() + reagents.add_reagent("nutriment", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/eggplantparm + name = "Eggplant Parmigiana" + desc = "The only good recipe for eggplant." + icon_state = "eggplantparm" + New() + ..() + reagents.add_reagent("nutriment", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/jellydonut + name = "Jelly Donut" + desc = "Oh so gooey on the inside." + icon_state = "donut1" //Placeholder until I stop being lazy. ie. Never. -- Darem + New() + ..() + reagents.add_reagent("nutriment", 3) + reagents.add_reagent("sprinkles", 3) + bitesize = 2 + if(prob(30)) + src.icon_state = "donut2" + src.name = "Frosted Jelly Donut" + reagents.add_reagent("nutriment", 3) + reagents.add_reagent("sprinkles", 3) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/soylentgreen + name = "Soylent Green" + desc = "Not made of people. Honest." //Totally people. + icon_state = "soylent" + New() + ..() + reagents.add_reagent("nutriment", 14) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/soylenviridians + name = "Soylen Virdians" + desc = "Not made of people. Honest." //Actually honest for once. + icon_state = "soylent" + New() + ..() + reagents.add_reagent("nutriment", 10) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/humeatpie + name = "Meat-pie" +// var/hname = "" //TODO: need some way to find out that facts for the characters. +// var/job = null + icon_state = "meatpie" + desc = "The best meatpies on station." + New() + ..() + reagents.add_reagent("nutriment", 10) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/momeatpie + name = "Meat-pie" + icon_state = "meatpie" + desc = "A delicious meatpie." + New() + ..() + reagents.add_reagent("nutriment", 10) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/tofupie + name = "Tofu-pie" + icon_state = "meatpie" + desc = "A delicious tofu pie." + New() + ..() + reagents.add_reagent("nutriment", 10) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/xemeatpie + name = "Xeno-pie" + icon_state = "xenomeatpie" + desc = "A delicious meatpie. Probably heretical." + New() + ..() + reagents.add_reagent("nutriment", 2) + reagents.add_reagent("xenomicrobes", 10) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/wingfangchu + name = "Wing Fang Chu" + desc = "A savory dish of alien wing wang in soy." + icon_state = "wingfangchu" + New() + ..() + reagents.add_reagent("nutriment", 1) + reagents.add_reagent("xenomicrobes", 5) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/chaosdonut + name = "Chaos Donut" + desc = "Like life, it never quite tastes the same." + icon_state = "donut1" + New() + ..() + reagents.add_reagent("nutriment", 3) + bitesize = 2 + if(prob(30)) + src.icon_state = "donut2" + src.name = "Frosted Chaos Donut" + reagents.add_reagent("sprinkles", 3) + reagents.add_reagent(pick("capsaicin", "frostoil", "nutriment"), 3) + +/obj/item/weapon/reagent_containers/food/snacks/human/kabob + name = "-kabob" + icon_state = "kabob" + desc = "A delicious kabob" + New() + ..() + reagents.add_reagent("nutriment", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/monkeykabob + name = "Meat-kabob" + icon_state = "kabob" + desc = "A delicious kabob" + New() + ..() + reagents.add_reagent("nutriment", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/tofukabob + name = "Tofu-kabob" + icon_state = "kabob" + desc = "A delicious kabob" + New() + ..() + reagents.add_reagent("nutriment", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cubancarp + name = "Cuban Carp" + desc = "A grifftastic sandwich that burns your tongue and then leaves it numb!" + icon_state = "cubancarp" + New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("carpotoxin", 3) + reagents.add_reagent("capsaicin", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/popcorn + name = "Popcorm" //not a typo + desc = "Now let's find some cinema." + icon_state = "popcorn" + New() + ..() + reagents.add_reagent("nutriment", 2) + bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0 + +/obj/item/weapon/reagent_containers/food/snacks/sosjerky + name = "Scaredy's Private Reserve Beef Jerky" + icon_state = "sosjerky" + desc = "Beef jerky made from the finest space cows." + New() + ..() + reagents.add_reagent("nutriment", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/no_raisin + name = "4no Raisins" + icon_state = "4no_raisins" + desc = "Best raisins in the universe. Not sure why." + New() + ..() + reagents.add_reagent("nutriment", 6) + +/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie + name = "Space Twinkie" + icon_state = "space_twinkie" + desc = "Guaranteed to survive longer then you will." + New() + ..() + reagents.add_reagent("sugar", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers + name = "Cheesie Honkers" + icon_state = "cheesie_honkers" + desc = "Bite sized cheesie snacks that will honk all over your mouth" + New() + ..() + reagents.add_reagent("nutriment", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/syndicake + name = "Syndi-Cakes" + icon_state = "syndi_cakes" + desc = "An extremely moist snack cake that tastes just as good after being nuked." + New() + ..() + reagents.add_reagent("nutriment", 4) + reagents.add_reagent("syndicream", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato + name = "Loaded Baked Potato" + desc = "Totally baked." + icon_state = "loadedbakedpotato" + New() + ..() + reagents.add_reagent("nutriment", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/fries + name = "Space Fries" + desc = "AKA: French Fries, Freedom Fries, etc" + icon_state = "fries" + New() + ..() + reagents.add_reagent("nutriment", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cheesyfries + name = "Cheesy Fries" + desc = "Fries. Covered in cheese. Duh." + icon_state = "cheesyfries" + New() + ..() + reagents.add_reagent("nutriment", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cheesyfries + name = "Cheesy Fries" + desc = "Fries. Covered in cheese. Duh." + icon_state = "cheesyfries" + New() + ..() + reagents.add_reagent("nutriment", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/fortunecookie + name = "Fortune cookie" + desc = "A true prophecy in each cookie!" + icon_state = "fortune_cookie" + New() + ..() + reagents.add_reagent("nutriment", 3) + bitesize = 2 + On_Consume() + var/mob/M = usr + var/obj/item/weapon/paper/paper = locate() in src + M.visible_message( \ + "\blue [M] takes a piece of paper from the cookie!", \ + "\blue You take a piece of paper from the cookie! Read it!" \ + ) + M.put_in_hand(paper) + paper.add_fingerprint(M) + +/obj/item/weapon/reagent_containers/food/snacks/badrecipe + name = "Burned mess" + desc = "Someone should be demoted from chef for this." + icon_state = "badrecipe" + New() + ..() + reagents.add_reagent("toxin", 1) + reagents.add_reagent("carbon", 1) + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/meatstake + name = "Meat stake" + desc = "A piece of hot spicy meat." + icon_state = "meatstake" + New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("sodiumchloride", 1) + reagents.add_reagent("capsaicin", 3) + bitesize = 2 + + +/obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff + name = "Spacy Liberty Duff" + desc = "" //TODO + icon_state = "spacylibertyduff" + New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("water", 6) + reagents.add_reagent("psilocybin", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/amanitajelly + name = "Amanita Jelly" + desc = "Looks curiously" + icon_state = "amanitajelly" + New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("water", 6) + reagents.add_reagent("psilocybin", 6) + bitesize = 3 +/* +/obj/item/weapon/reagent_containers/food/snacks/poppypretzel + name = "Poppy pretzel" + desc = "" //TODO + icon_state = "poppypretzel" + bitesize = 2 + New() + ..() + reagents.add_reagent("nutriment", 5) + bitesize = 2 +*/ + +/obj/item/weapon/reagent_containers/food/snacks/meatballsoup + name = "Meatball soup" + desc = "" //TODO + icon_state = "meatballsoup" + New() + ..() + reagents.add_reagent("nutriment", 10) + reagents.add_reagent("water", 10) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/vegetablesoup + name = "Vegetable soup" + desc = "" //TODO + icon_state = "vegetablesoup" + New() + ..() + reagents.add_reagent("nutriment", 10) + reagents.add_reagent("water", 10) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/nettlesoup + name = "Nettle soup" + desc = "" //TODO + icon_state = "nettlesoup" + New() + ..() + reagents.add_reagent("nutriment", 10) + reagents.add_reagent("water", 10) + reagents.add_reagent("tricordrazine", 3) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/hotchili + name = "Hot Chili" + desc = "" //TODO + icon_state = "hotchili" + New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("capsaicin", 3) + reagents.add_reagent("tomatojuice", 2) + bitesize = 5 + + +/obj/item/weapon/reagent_containers/food/snacks/coldchili + name = "Cold Chili" + desc = "" //TODO + icon_state = "coldchili" + New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("frostoil", 3) + reagents.add_reagent("tomatojuice", 2) + bitesize = 5 + +/////////////////////////////////////////////////Sliceable//////////////////////////////////////// +// All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread + name = "meatbread loaf" + desc = "The culinary base of every self-respecting eloquen/tg/entleman." + icon_state = "meatbread" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice + slices_num = 5 + New() + ..() + reagents.add_reagent("nutriment", 40) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/meatbreadslice + name = "meatbread slice" + desc = "A slice of delicious meatbread." + icon_state = "meatbreadslice" + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread + name = "xenomeatbread loaf" + desc = "The culinary base of every self-respecting eloquen/tg/entleman. Extra Heretical." + icon_state = "xenomeatbread" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice + slices_num = 5 + New() + ..() + reagents.add_reagent("nutriment", 5) + reagents.add_reagent("xenomicrobes", 35) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice + name = "xenomeatbread slice" + desc = "A slice of delicious meatbread. Extra Heretical." + icon_state = "xenobreadslice" + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread + name = "Banana-nut bread" + desc = "A heavenly and filling treat." + icon_state = "tofubread" //TODO: filler sprite till there is a banana bread sprite + slice_path = /obj/item/weapon/reagent_containers/food/snacks/bananabreadslice + slices_num = 5 + New() + ..() + reagents.add_reagent("banana", 20) + reagents.add_reagent("nutriment", 20) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/bananabreadslice + name = "Banana-nut bread slice" + desc = "A slice of delicious banana bread." + icon_state = "tofubreadslice" //TODO: Filler sprite + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread + name = "Tofubread" + icon_state = "Like meatbread but for vegetarians. Not guaranteed to give superpowers." + icon_state = "tofubread" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice + slices_num = 5 + New() + ..() + reagents.add_reagent("nutriment", 40) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/tofubreadslice + name = "Tofubread slice" + desc = "A slice of delicious tofubread." + icon_state = "tofubreadslice" + bitesize = 2 + + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake + name = "Carrot Cake" + desc = "A favorite desert of a certain wascally wabbit. Not a lie." + icon_state = "carrotcake" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice + slices_num = 5 + New() + ..() + reagents.add_reagent("nutriment", 30) + reagents.add_reagent("imidazoline", 10) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice + name = "Carrot Cake slice" + desc = "Carrotty slice of Carrot Cake, carrots are good for your eyes! Also not a lie." + icon_state = "carrotcake_slice" + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake + name = "Cheese Cake" + desc = "DANGEROUSLY cheesy." + icon_state = "cheesecake" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice + slices_num = 5 + New() + ..() + reagents.add_reagent("nutriment", 30) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice + name = "Cheese Cake slice" + desc = "Slice of pure cheestisfaction" + icon_state = "cheesecake_slice" + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake + name = "Vanilla Cake" + desc = "A plain cake, not a lie." + icon_state = "plaincake" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/plaincakeslice + slices_num = 5 + New() + ..() + reagents.add_reagent("nutriment", 25) + + +/obj/item/weapon/reagent_containers/food/snacks/plaincakeslice + name = "Vanilla Cake slice" + desc = "Just a slice of cake, it is enough for everyone." + icon_state = "plaincake_slice" + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel + name = "Cheese wheel" + desc = "A big wheel of delcious Cheddar." + icon_state = "cheesewheel" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + slices_num = 5 + New() + ..() + reagents.add_reagent("nutriment", 20) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cheesewedge + name = "Cheese wedge" + desc = "A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far." + icon_state = "cheesewedge" + bitesize = 2 + + +/////////////////////////////////////////////////PIZZA//////////////////////////////////////// + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza + slices_num = 6 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita + name = "Margherita" + desc = "The most cheezy pizza in galaxy" + icon_state = "pizzamargherita" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/margheritaslice + New() + ..() + reagents.add_reagent("nutriment", 40) + reagents.add_reagent("tomatojuice", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/margheritaslice + name = "Margherita slice" + desc = "A slice of the most cheezy pizza in galaxy" + icon_state = "pizzamargheritaslice" + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza + name = "Meatpizza" + desc = "" //TODO: + icon_state = "meatpizza" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice + New() + ..() + reagents.add_reagent("nutriment", 50) + reagents.add_reagent("tomatojuice", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice + name = "Meatpizza slice" + desc = "A slice of " //TODO: + icon_state = "meatpizzaslice" + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza + name = "Mushroompizza" + desc = "Very special pizza" + icon_state = "mushroompizza" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice + New() + ..() + reagents.add_reagent("nutriment", 35) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice + name = "Mushroompizza slice" + desc = "Maybe it is the last slice of pizza in your life." + icon_state = "mushroompizzaslice" + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza + name = "Vegetable pizza" + desc = "No one of Tomatos Sapiens were harmed during making this pizza" + icon_state = "vegetablepizza" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice + New() + ..() + reagents.add_reagent("nutriment", 30) + reagents.add_reagent("tomatojuice", 6) + reagents.add_reagent("imidazoline", 12) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice + name = "Vegetable pizza slice" + desc = "A slice of the most green pizza of all pizzas not containing green ingredients " + icon_state = "vegetablepizzaslice" + bitesize = 2 + + diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm new file mode 100644 index 00000000000..f8180528080 --- /dev/null +++ b/code/modules/food/recipes_microwave.dm @@ -0,0 +1,579 @@ + +// see code/datums/recipe.dm + +/datum/recipe/jellydonut + reagents = list("berryjuice" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/weapon/reagent_containers/food/snacks/egg + ) + result = /obj/item/weapon/reagent_containers/food/snacks/jellydonut + +/datum/recipe/donut + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/weapon/reagent_containers/food/snacks/egg + ) + result = /obj/item/weapon/reagent_containers/food/snacks/donut + +/datum/recipe/human + //invalid recipe + make_food(var/obj/container as obj) + var/human_name + var/human_job + for (var/obj/item/weapon/reagent_containers/food/snacks/meat/human/HM in container) + if (!HM.subjectname) + continue + human_name = HM.subjectname + human_job = HM.subjectjob + break + var/lastname_index = findtext(human_name, " ") + if (lastname_index) + human_name = copytext(human_name,lastname_index+1) + + var/obj/item/weapon/reagent_containers/food/snacks/human/HB = ..(container) + HB.name = human_name+HB.name + HB.job = human_job + return HB + +/datum/recipe/human/burger + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/weapon/reagent_containers/food/snacks/meat/human + ) + result = /obj/item/weapon/reagent_containers/food/snacks/human/burger + +/* +/datum/recipe/monkeyburger + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/weapon/reagent_containers/food/snacks/meat/monkey + ) + result = /obj/item/weapon/reagent_containers/food/snacks/monkeyburger +*/ + +/datum/recipe/plainburger + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/weapon/reagent_containers/food/snacks/meat //do not place this recipe before /datum/recipe/humanburger + ) + result = /obj/item/weapon/reagent_containers/food/snacks/monkeyburger + +/datum/recipe/brainburger + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/brain + ) + result = /obj/item/weapon/reagent_containers/food/snacks/brainburger + +/datum/recipe/roburger + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/robot_parts/head + ) + result = /obj/item/weapon/reagent_containers/food/snacks/roburger + +/datum/recipe/xenoburger + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/weapon/reagent_containers/food/snacks/xenomeat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/xenoburger + +/datum/recipe/fishburger + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/fishburger + +/datum/recipe/tofuburger + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/weapon/reagent_containers/food/snacks/tofu + ) + result = /obj/item/weapon/reagent_containers/food/snacks/tofuburger + +/datum/recipe/clownburger + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/clothing/mask/gas/clown_hat, + /* /obj/item/weapon/reagent_containers/food/snacks/banana, */ + ) + result = /obj/item/weapon/reagent_containers/food/snacks/clownburger + +/datum/recipe/mimeburger + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/clothing/head/beret + ) + result = /obj/item/weapon/reagent_containers/food/snacks/mimeburger + +/datum/recipe/waffles + 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/egg, + /obj/item/weapon/reagent_containers/food/snacks/egg, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/waffles + +/* +/datum/recipe/faggot + monkeymeat_amount = 1 + humanmeat_amount = 1 + creates = "/obj/item/weapon/reagent_containers/food/snacks/faggot" +*/ + +/datum/recipe/donkpocket + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/weapon/reagent_containers/food/snacks/faggot, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/donkpocket //SPECIAL + proc/warm_up(var/obj/item/weapon/reagent_containers/food/snacks/donkpocket/being_cooked) + being_cooked.warm = 1 + being_cooked.reagents.add_reagent("tricordrazine", 5) + being_cooked.bitesize = 6 + being_cooked.name = "Warm " + being_cooked.name + being_cooked.cooltime() + make_food(var/obj/container as obj) + var/obj/item/weapon/reagent_containers/food/snacks/donkpocket/being_cooked = ..(container) + warm_up(being_cooked) + return being_cooked + +/datum/recipe/donkpocket/warm + items = list( + /obj/item/weapon/reagent_containers/food/snacks/donkpocket + ) + result = /obj/item/weapon/reagent_containers/food/snacks/donkpocket //SPECIAL + make_food(var/obj/container as obj) + var/obj/item/weapon/reagent_containers/food/snacks/donkpocket/being_cooked = locate() in container + if (!being_cooked.warm) + warm_up(being_cooked) + return being_cooked + +/datum/recipe/meatbread + 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/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/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread + +/* +/datum/recipe/meatbreadhuman + flour_amount = 3 + humanmeat_amount = 3 + cheese_amount = 3 + creates = "/obj/item/weapon/reagent_containers/food/snacks/meatbread" +*/ + +/datum/recipe/xenomeatbread + 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/xenomeat, + /obj/item/weapon/reagent_containers/food/snacks/xenomeat, + /obj/item/weapon/reagent_containers/food/snacks/xenomeat, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /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/xenomeatbread + +/datum/recipe/bananabread + reagents = list("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/egg, + /obj/item/weapon/reagent_containers/food/snacks/egg, + /obj/item/weapon/reagent_containers/food/snacks/banana + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread + +/datum/recipe/omelette + 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/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/omelette + +/datum/recipe/muffin + reagents = list("milk" = 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/flour, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/muffin + +/datum/recipe/eggplantparm + 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 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/eggplantparm + +/datum/recipe/soylenviridians + 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 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soylenviridians + +/datum/recipe/soylentgreen + 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/meat/human, + /obj/item/weapon/reagent_containers/food/snacks/meat/human, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soylentgreen + +/datum/recipe/carrotcake + reagents = list("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/egg, + /obj/item/weapon/reagent_containers/food/snacks/egg, + /obj/item/weapon/reagent_containers/food/snacks/grown/carrot //TODO: more carrots + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake + +/datum/recipe/cheesecake + reagents = list("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/egg, + /obj/item/weapon/reagent_containers/food/snacks/egg, + /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/cheesecake + +/datum/recipe/plaincake + reagents = list("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/egg, + /obj/item/weapon/reagent_containers/food/snacks/egg, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake + +/datum/recipe/humeatpie + 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/meat/human, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/humeatpie + +/datum/recipe/momeatpie + 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/meat/monkey, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/momeatpie + +/datum/recipe/tofupie + 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/tofu, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/tofupie + +/datum/recipe/xemeatpie + 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/xenomeat, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/xemeatpie + +/datum/recipe/pie + 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/banana + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pie +/* +/datum/recipe/berrypie + reagents = list("berryjuice" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/weapon/reagent_containers/food/snacks/flour, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/berrypie +*/ +/datum/recipe/berryclafoutis + 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/egg, + /obj/item/weapon/reagent_containers/food/snacks/grown/berries, + /obj/item/weapon/reagent_containers/food/snacks/grown/berries, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/berryclafoutis + +/datum/recipe/wingfangchu + reagents = list("soysauce" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/xenomeat, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/wingfangchu + +/datum/recipe/chaosdonut + reagents = list("frostoil" = 5, "capsaicin" = 5, ) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/weapon/reagent_containers/food/snacks/egg + ) + result = /obj/item/weapon/reagent_containers/food/snacks/chaosdonut + +/datum/recipe/human/kabob + items = list( + /obj/item/stack/rods, + /obj/item/weapon/reagent_containers/food/snacks/meat/human, + /obj/item/weapon/reagent_containers/food/snacks/meat/human, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/human/kabob + +/datum/recipe/monkeykabob + items = list( + /obj/item/stack/rods, + /obj/item/weapon/reagent_containers/food/snacks/meat/monkey, + /obj/item/weapon/reagent_containers/food/snacks/meat/monkey, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/monkeykabob + +/datum/recipe/tofukabob + items = list( + /obj/item/stack/rods, + /obj/item/weapon/reagent_containers/food/snacks/tofu, + /obj/item/weapon/reagent_containers/food/snacks/tofu, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/tofukabob + +/datum/recipe/tofubread + 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/tofu, + /obj/item/weapon/reagent_containers/food/snacks/tofu, + /obj/item/weapon/reagent_containers/food/snacks/tofu, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /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/tofubread + +/datum/recipe/loadedbakedpotato + items = list( + /obj/item/weapon/reagent_containers/food/snacks/grown/potato, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato + +/datum/recipe/cheesyfries + items = list( + /obj/item/weapon/reagent_containers/food/snacks/fries, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/cheesyfries + +/datum/recipe/cubancarp + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/weapon/reagent_containers/food/snacks/grown/chili, + /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 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/popcorn + +/datum/recipe/fortunecookie + items = list( + /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/weapon/reagent_containers/food/snacks/egg, + /obj/item/weapon/paper, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/fortunecookie + make_food(var/obj/container as obj) + var/obj/item/weapon/paper/paper = locate() in container + paper.loc = null //prevent deletion + var/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/being_cooked = ..(container) + paper.loc = being_cooked + return being_cooked + check_items(var/obj/container as obj) + . = ..() + if (.) + var/obj/item/weapon/paper/paper = locate() in container + if (!paper.info) + return 0 + return . + +/datum/recipe/meatstake + reagents = list("sodiumchloride" = 1, "blackpepper" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/meatstake + +/datum/recipe/pizzamargherita + 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/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, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita + +/datum/recipe/meatpizza + 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/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, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza + +/datum/recipe/mushroompizza + 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/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, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza + +/datum/recipe/vegetablepizza + 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/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, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza + +/datum/recipe/spacylibertyduff + reagents = list("water" = 10, "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, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff + +/datum/recipe/amanitajelly + reagents = list("water" = 5, "vodka" = 10) + 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, + ) + 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) + being_cooked.reagents.del_reagent("amatoxin") + return being_cooked +/* +/datum/recipe/poppypretzel + items = list( + /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/seeds/poppyseed, //poppy seeds are commented out for some reason -- rastaf0 + /obj/item/seeds/poppyseed, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/poppypretzel +*/ + +/datum/recipe/meatballsoup + reagents = list("water" = 20) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/faggot , + /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, + /obj/item/weapon/reagent_containers/food/snacks/grown/potato, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/meatballsoup + +/datum/recipe/vegetablesoup + reagents = list("water" = 20) + 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 + reagents = list("water" = 20) + items = list( + /obj/item/weapon/grown/nettle, + /obj/item/weapon/reagent_containers/food/snacks/grown/potato, + /obj/item/weapon/reagent_containers/food/snacks/egg, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/nettlesoup + +/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, + ) + 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, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/coldchili + diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 3437b57beee..f94e7778acf 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1146,6 +1146,7 @@ u_equip(item) if (src.client) src.client.screen -= item + item.loc = null src.update_clothing() return diff --git a/icons/misc/old_or_unused_food.dmi b/icons/misc/old_or_unused_food.dmi new file mode 100644 index 0000000000000000000000000000000000000000..01417fc2b991bac1d2fd612fb76b9f57c297e747 GIT binary patch literal 13831 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 literal 0 HcmV?d00001 diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi index 73010f4f80f012d458961e27e3b44385198b5167..eac57b44f19361e5eafb73c525ef1f487daaffc8 100644 GIT binary patch literal 42680 zcmbrk1yEeU^DerJ1$PM$BqRg~L4r$g2ninCAtbm4_r-$*2uX040Kt9nB@o=*SqSd7 z3+w{Bck}z-f7PpZ>sHNdW*@7yi12o{H8UAKdNTJndaw007^taD4wMBq0zW?(gVgTjb1D@s>6ilH+p1o;eQR19h_i7Pt83EO9m;wwA5w3 zyPokd`ndI-e&yFz(hzl?8ZR%c>uc#Ces_O*Q?U+G-j#qS*LIEL4(rNKt}~NvR|oFj zdnt}z_)IW3l;^dO!ZTXF`CnBPnUfi4``oH9sIVCrG0|x*3VamIo`Aab{P?>i`GV9- zVaRV(g4W2%UobXKb$hF_bSV2vy)MJvcX7VQTD9%LA|T19`xG|eK{SrNDO^7dO0S6V zP`u8YlGoJ>Hd3aEkz^#LIxn4wX&y0ey|I3#us-*9f8A2#h%IXmH{BCrs(2LfdBD2Q zCUBH2A=8|K_x#b>TpIt{?i2P`S_1X!#!R$Z%_WicN)aZ_xOUyA*}9JCVXuY z#O4>qeJZV&;#+ybv{e4x-TJO4b)RzvCay)};_swv`>^Td`l9m2-)+<^3^*z} z!HAzEiuBJ-3{3Q=vOaoJP@8-n9X$1c{SmBDP%AN1Tj0e2z1-)j-wn1?DK{n(&Nl=^ z5G=BpO7ucRkCh^~!8CbeGJ%GUx>k|=aO+c1BSPj!_1lZ|wT-jv`0e=n#b4GLCCZwD zkFC;GlgDfaCW@ouam2TBRw&#Sm_LgNImX9d67n;(o<6-|n(vhbXcodA|Dyz+8XhjU@(9#wboH zB>`pGlHRm(3IP7~qEo^H#3=q1@(>-N$u`4#+y9@(V!ez+a5gTk7|0!r4*VeWL6elF zPGRHrx2AVnk(QK$Eu%1SN!*`5irP9l_NQLcW|`EQDaY}V{*z>41Yfh%R8$C0SI=@x zhWYQ0_jyLvru&2PG1I|Tdpidf147is;0pu`M#%5EE_16FUv?9~Qm@Raih4hZIA(H< z=XkeV{TqH&uI+v4F??{+X5X2=*!@fYh?XFTga<$CmESjz8Hx{_ybP|dxqM)fxDa$A;DQ5TW6*^d2v6ec^KJpZgSa$93#N`o;w#8R4?u7bw7|;?cvw*jkZ5VM)Qlk zSCAW+HT3~d2N2z4n)Br+!nF;j33`+cIO|jPr;rpN4f!?{MJoqbFN!n4()kAe3x~^4 zF*2%RL|hN`k8AXSI{T}us9;&{{Onkz#YrhKV?Vj?(YuMzsJoR?qAy3RZ(7{I?P^uS zyAt!c|4cj%DlIR6a;!+PsdD0J2ld7UTxNhGa`Q^{?UV4tPAWTFB>;vqcT|Azc%hmC zuHys1zm@G=g(SUgQlIxvFIR7_hgFV(EL1%FKWcj{P0Qs)B3#pLn%wKT_J>%%Hi&7g zNIfeWbq)&;GiAnc!VUSDF$!8{Pg&NCb$12ui-Jf@)Ig zBNbo2&M*g#Wr_EEV^z%rHv)x2p?Bp1tq`nZ8fC&w>K z@6Xq#(`$JD1m>$O^7Y3(c2DYu{W=D)T~I`lbqj;uUgm9ssl9&ynaSFI(+%INx7ZPIj=V+mkpO`C0!o@f>~ISGQCB@|>=bDBAgCx=94h0?xKs`6JdH);`$LUnglN zP{S^sex1@X7Oj~j_FiRocbAHu{;jbw13No=)i=9T*Cr;w`aw(&&s1fl$AfS@^N&f@ zWdrO3kb(T5Mn(XDfv^K{UM?UTx+F0csArpum*Ie>7Qx~_St1Xv$ zIa%8c6`wu7U^KM%Rs9<2p)qQ!1pars7&a_g=BL?!^-QLc?lug!J!)wes!+>0KTtxG zj~j~7U)v(0VLjawYXMZj#SUSDAAefT!_~h*Rc!Rb8R$P2E6--b=0+@fUf~l1ngG|W zU3c@s6;wVl2nN@CD2pGHSP)X^)2FhNrA9~fwDRb(L0YXc_CB zr{!J_!3a>|*|9X02|5;yz=&XaPzKb@;?3#Fd!m107UERz6IVfGD< z%Ki22YCAI5Df~p2^Q}>j*z)hy0sKO)88wfHE-h*c;NZso4k`C!QFqwi-Dx+YtVKfZ z>DdLO1Lvp1?iTRp&5W_V(?KKB?=pB5c*HARoyGbgZ6;D8h(e~uz{{$~bnjj6no^uq zq=;`?O-0jFc3hcpa{TbVWyd2cEnQF<=ZTpQ`xBQnGMieqcYO0wRs#G#U5u)wrpa`T zu8DFVGR(!WqnC#iAUY&hzB?{>rZ1NpM$cJhWWQz;jCawLVhjVM$VRFBX?d%QTB&t#x5eC z?-i$7txyjY-Kwe|f;$-;jG4i_Sy@5sKQtPAPMcy-9}@rrZT87l)twNR7LNiOC%30q0c4kt>JQgN0e8nw9cGgY1eSoG{-^&-uwjB?zaYcQA@h=QsNy`SYwgIW<@j|xj z(rQSXD(gE?>9#X~4bp~1=?N#)oSdv90qo1g=1AuUUO`ZNugqN>*=^@o{i)M4R@RV% z0|#1kzIbycALRJ{wz<6`*n7rzZ7#ib8yZ%PiH@!_%t_5v*Y$+xugyw` zV0T?xkW#EkmDA5q$zOWX3I?kb#y=V*wUov7wJ^mNa{W%F{n{=k;qiBQbzwA+&U}dAXfma zl0Hkj`v*0g$AWTbD*We&DL$EbMR6+gi)}gGOBT#C#r5d~d_#)+!AG@L!?b`ML1k)J zzem#A^T}1Wj^#*{`YGgSfwu%^(lh6jr}69FQAqv1A&aEJ$V|FsT4h^g#PNQq++@@u za~Hz%9ivW04?F$H_vp7Dbd9+te5z)|%X?7r;|%;`8Q^;WClmKNp#FExf^M(2XMX8q zNqEI}2Hm0I=WV-l`;VfcBGOFPu&eRBD>$Fw z&tI0LgjDWA=6t& zI%x|H9p#3#)CcQ?;?kX zqqP5M^4{MsDmd;y))RhHTQ}FBOJdC0t|{kzSSgZLfdkT+gXu?v(GI)uB6gGczecYU z&!`Swu#^jxHX^T@CihAanLD?lvj^#9M0NtV#Y=a05ycIQBDD4#Fq6%>8p@npD?h94 zBb`gkXMK+f`L&;=xH+adYIGvLb7W2xk~wW`ClM`lx`i%5WQ;1csX?&j-ovY4lNYc? zm#4N17iv{?0w%)9Ag)o+Qr%c9xzn&<%g}&(WYTu515zEdB;fOddwX$uXkTR++xSET zWLJd<4;TfVM74x%ee`->LXQ*`*?CJmMweCc~OWpk^yHZKjCRG9SdjFgy^o$e>?sKAKfZXXe2q8(?so;d9u~NK(2g z%_I!Hs=6|poVlOg5m9dh*|r8%yv&V*GTds<0F4YrtSMGDbceX>XGGhfJio#FNnD{1+r;PQ+ROF93ATQX zl7f4_DX9uOGXL&=zOr#MN<=kg0Z_pgVQey7U;eL8Og$f7%`_NxzBZG5M#V zz^+`6r8x_`6z`vio)&B5j&G~!NyRoeis$mdbt4wa3jz7j!nhM#wDnQL7#CP6xi=y` zo+cxNM%kE`jos7=6TMj;quSp8k^zzAZv@y>WIgWg=}}MBm5h6`15HOV_1;A}orvvM zw7FK8U>A~=`g!z-TAVsurg}0X6JdYX9$z=LtulUwx*_zsnvAiqLwKmp(-6zus}LCz zJD!k)G<3@vmX>?!wy|2GCp*(i^w^9{>Ps@59l5SYm*-e+L8BH^h=o?%I^mO6qP-Oo z4<&7F%BLLV1~-2*;@ZbV{{@V9t>z498*8n+)J8(QAnp}`2*GMhXQ~s4!fvo zTr7i;%hWd#VQslEFKNr5q*TcrL;&R??$e|9NYgnfMVM(7yz*Tdzt!wzU)4>Myvs;IaXHi{;@*3)>~5#XQzz$vzk>8 zWc4wsDzGS}8ypPdDyj3`=PC&69erGH?`;{6da?Lj#w-%mK9untzwMIEK{45E9~E=m^{S* zuNrJh_n3|~6>Gq~7X=r1%*KMc%>wv)bO*gtN&Er?%!Xu_R!$|?xI}Nllcav6>SfO zrlYq;zZ`us8}?-2jCDXI?6pnZjdReJ@OtkPbB5SbG$kC3fF)-I(N+r>+lLomdU=``db^rl!UM zg5ojL{F9LS`6b8?3&2hLFb(qR_g@-?rvL&x?5GGFe$N;9u#;62skbYNr)wRUT}(yp zehvPNEgR%aBOM$Hpw1D0V|N`qDtSp%RIyI|o7l4;?J9qEB>UywKK8{qQPJ6m9DwZuUvXzsY+0RY zm`|clD{dY}$Hy`pF_`20{JdDY@#e<2t@_WgQ;=gP0qXUN_cA4a*Hvt48vn-oCRfm4 z!`dqgJw2sQpI$C=r<8J29Wjy_8r^A>KQOhhNKDi`ghyV@IgSva70S22BDK+1jF}Ja zr44h#>JbSC;HIkj1n4S~)N4I;Cs%0p?#Tx}eIhLrC41D{!29q=i$9k?^#zXO-j@$o z>r3B}Q&3Oi^8{KIr~bRJ%a*&%Q1x1ZSz3&}rP3n%U=zkaQ4Xt-AwIG!Vg z*>P7L85tSqkLrptcL`7@3#1J$8OR-tSu1Av(&xiJE7pJPYnq&>U<8_loOYWDlr({6 z{QFvLY%J&V=YM+&$?|_zUK*rYtX5dt9<%Ug-zD;8kXTCiWsN#=&8pC~i-kh;9J*<;Bfw`32^AqEBFY}iOdZ$hhZ?UXZTf&a6-2`?|5UP? z`bpX-kAUmp%U0HdL;Axad`>xU58qm6?7ac_w(U8;+$|nfLpZn9r->D}%$;pSWv_Vm zEa+bzLL|E4=Sji7=y4ge8fK+~Lqi3&<2frdpA5>aYk#_;P|_U%-*b{C9fHsDUQA%kjJWa%qIofyut)4DMD{04i;I(P#9?>As0y z6d|%7f^bX|l}luj?5hz2>2wy`>fH9^8eTPZ@v1s61VxMnXX^lYu@TwYSQeVTXESuX*-qPKa&1P^j`_M3v*e@ z7!p&2EbHFQC3{iu{G4lIGCQ~CQ+D>G^z^}WLEAJsk!r}3+a$Ap9WgHUIWp2eDJ$#f z+xfs(SC?17JSkmh3(0Oec8eF-Yj|OfN4J@PV($ zxl!9~XHoF(fvSXE=XX)Tx_+;eeWTn<_EDMO#63~_j7^vORM&_Dk*iJ8`zxWrCf-+=`hI!?|^0%Xfi4_>S zd9h((vGc=c*yveWF!!5#571E;8{p%|k2OKJ-e7!dTifqRNx+y&*C%jE1GFi=>@KA| zKD83hNq9?_v~f|gDK2$A?7SFuI4{0>y8QlrzB+t96M9N;A2S?c-4s7&hIF=XRfU?X z8yo~+#Q`STd|YRr{>PXvoAJRVH6iubU;A2SaM>d^mENkVdfaqibQRO{5RjuDs84{8 zzkY1M%)!dq1+&fefmL^~3OWLZKx$8*}M#NUMTiU^yT?g zU;pwln`=jB50XkaRjEkhCB&MP3qs98s?uEirHNTa7XwrqR zJft%4gCvLNKPzqBXdG;NdCUZPJ+@d+i#RBIj=Vlp#yD3%Z&0YX9=5;5rqX@ z9obXho2I*}f<7HsQBYA$TOlx~5)d69FTCB@;I-zTExx$8$m9TQw&FKs#PQr>7Se_s z9)KgcO#rmO_2U9?Z&oI+;5PVp%<6C2j`8wmMsN3Jk`E@M)#w9&sJUeO>~%GA%l0I; zxqOyP{=la*SYJP7u!gVgNFW%6u+{0*JY6fY{n(Jf^2&}}If2<3elHbp<)i}|# zXRz(Q>eF3pmo_HYx?H$gV`D|d3xD{5bQcXZ z_fF%ue+T=0j`-OZespcK1eE!|`&8A}ecUFvY%ffV_@RmO{Xg}IK(@61(|X1K8g5Ua zs9r5uV$80Z&&ch05{p#u&!5Fm`X$O`YSVYDfP&y?_gfz}2q@-{coreR2O0!cNPO%; z)9(?y`>tb5Bn#uqQZZZ0pFZd^@7J*2ye$0mn@6NQQAuO75`4!xGy4Loq%Fia;HEEf z;C!%OT)O2_&Gz-lC!4LD<>Kq<=JyZLLM8QakCRNb)J(+GiJPqffSu~5FnMJ+F@PQT zDXuWSAv9}Xb&thQ?`#UX9{bzDcxvA%P>pYA&oV(nz0KtC1cYlYQ+T7x(!pVy<%xppDL@|cYyvEI@&ygp16bJSPzrT>vdeA@ z*k7bH|5H=-0Aq-hh;%WX0U``ttUD&c8gKMhyWm=lssa!v6TY2W9xi(n^wMhXXc3SG z@fX0i+kx1OGB`B?068}|1fRo06g~i&nBR~yG7b+3a%+nDn@lBGmfgGFXqipS5Do;L zqdZz&@8p#P(VZ4W@_(`Rs(9zay1wk1-FmWDUV+NmepgCVzGQE)w!9Tsgf9)=emAoc z8hrAN?+dgyu)O_ukah+F)b7pGWd3h~w&vr~r!od5c%f~C#Y<>Wb)wfH!4UH;((5l9 zc8%ywYX@^j+*iozF_2SsBf_z`V#D6UnpwB7?ERaT!;bP45h0jS|+@>gGyF>Fa-shc7i&7}evM@Bl()9p@<} zm+$2)FY88!8jKvc^Mp|^4_Qdb@P;w4Zs9kkd{bk6$E7?Y6y%c?z zRlY+?FYu>9(*Oqu9X8jP!QDHd6f)n}Gh+xkSTH(G?Bs@xa#y}ZA4iw{%$It@yPH#c|hzg9$7-`DqEdbaYEJEzXkh>0T!Wj_}>vzLhz&-t03yskP5f%=Ulu zT4*;H{d-<#>YGOheZ5ua4!xaV=jxtF<-bA(_;bdb8cT-7XzKkf-fmb|L1kQoM#+=M zkAdO8*FA~W&o+9#Fp835E&|CPwtbX0v)_PRCQ!$BtCG)2;RKDlF=yfGwa|yFs5++3 ziN>CHF=^1WlKh~-`*VlWC|SxS@*EGl<+@p8bL4PQ<;ba#W`Y4ck`s?P5>E6T_4Of- z2mvxDs9(@NuiUV2_-wNbFeX}|=$-lkRWvR0I( zen4jY(q*=Or+hyJ*}h|R-(>h{{zHum(<^ThH}yF9eQHZn1!Hx_?=Bw3w}w|h@M>qo z=Wr6ItXJXmyn40qHZaRYtciuxzc-zY84!I(A9jT(;`bPUM2Z`FfQp05y?Z>4oTFQ9 z-MUwhTfUkaX$gx??g*qZqd2Wzc91p zKLcHFJ^vDAPqZpHDNBUqT z{?&WY=l0)iYd(!L*O~ie337PzUv0Cby5-6u_KHwD|?r1r zipdnmH29E4<@&;{#KM8BHZ+)Q?NJ;t0-2NGWic}_1L;Epr-7;@M-spaSQ6J z!|GG)vjv^RHZ$(Sfw(O3T7}W}`sHK)T`C3ioh`9R6ZzR;waDek`i3PoUoyv8{xbFY z8gt7Krtnkiql2X;dYA|n2#T+)j-te*^aBDs)%sWN$XKM0C@<&niHWx`O8IX&GmRhl zl=8_EZV`tgOn0jCA6L_7GSJNysT%UuhH zBEE{%k*I>*hqo7G*#)Z9#ON_p@cKussFQO&U`jMpXsvh0;jnvE0 z&z-AYGeUdhzzv*8?@hArSVj_}X}@1eXN_DJj;Sh}1xao9NvL!bi0ROUY3y#V{T3(F zGBs86^=;m76r4~4LFUZ^J31Cm8|T^Z#bOoAWHA;l*d0#>zG+i`>aAbVZvzavn#EuL zR3&=ojyx)-XzF7zQyKrAIH5D_Dep6n2(v+*SoMJ!7sdQudqB`z^an5U9M?SK%rW`? z9gZ$S?Dr-r>ia*HySWJLhg=2Dx|N}ImYufGpXB86gP$4;&2UPb3gCUdoz${=+EIZI z0)YYpJAQHT_81zgWlu&IaISC0|J_zlHxh<2U2Ysszgu~!D?ZgZ)uN1X8S>@Fjyu)w z<|jg`!C+-Roaxqp*Fp((_;}eOcxPw1%o6s&?EGDr7%}U)n(~d)MaifE7WR7Q<&oh1 zYa2rnWNL&v8W^SeQAWz*N_C{t3;pN`Y$4*}88~*@FDO$I+F{}%r+`6MK6YE6Q*BJI!4cThq2$rO->uj* znI+xoBt7h3!Rq7LuRdTWgmn;d{PnSdsRX&Ho?b7erFJ{ru=GI<>gtg2dJXB-8(ROt zqs~#@p(k*kDPPN|dVTX)*~l83(0m4g)Z)fTP9}Ni$O@^;35k+;Sqz@vn9$0d<`s|D zV3T-0^bv`vsL}EOHLcd}!|5<<(3zi@h^Y^G`c41F?Znh2;Iw0mH%fIftSdl$6aAm; zyA2R-xG_`7N{ok1KtOQpx`)HmQ72aHdPHjB3OTsT>i#-(@f_(%1tZqC%L|=~ef_1; z9KV;00cWBjiCsbsHet6ZBlet6?iC$&^h=8)2+%nv@Vl6Rg2956+ zcu!5CJ_rL?Mr}xKGfRn0V!fk_jCF=A4$%SeoC8J|un^|60PGBn0$k z0W}~k-H#<7UcgNhms~cb?ZB7^#6%DWrIo)*YO8YkG8_~`SOs2?2j1<|9+??H4Z$RL z4%rfbr4!Von}Mj74hW*OHeCt0bjfK73weS`S$~S9hq@GXWb!wAgf!K=^{>j95Mhn2 ze?eg1e{wkPV2bh!yOJ;Wsune_s~JBQ!@buK z0aT(|;l5D1+UEcu5xQ_|72yX?^fNy6Ki`tA@ymtG9dDK$0x@JHvC(0us}tNMZyg0( zBBHl#izq8A%i>iCGP~D|C%H3^jv|NV0osFt>?+E8hv(^Ja`8Po9Y|UzB46j{X&Ibu zp5A&n2W2~QjDjZ#-TD1%;K2T2&;&Y#Wg2kRdk2pkTV2Z)H^NBoUEyDG`= z3`H(UFue0Q-2SgKR4clG_M>Vlor_QGJ27nb2lOE&shkl1FqRet)>Auns! zhgI3kRA+t4WJRE%C$2UgXczwBVG*tfMP;q~ay-aY%L zB@on|K~hf6$yAU8a;+u{l1d$M$KEK%`Gm179vJqzy`ARZi?D9;k7+}T&xwg$%l)~1 zuR{~Z_{iR65(*V~s3U|wxE{w^_&kI}A!aly+1Cf>Lh8waU5VH+^@+BtAi4MV58r4? z5x?$1zWln|-D4@V6ad?d{5WQo?1YvfEiJF`&2L%~E3D0*e317}R-q#VDM1bwnh_0S zn+lW1&OKnc7*x(Sv$3t&WtOGuruzLKBAWN7f&+c@!9^@Lxm6V1P-)+5c3sXj-vHsc z=qTj(Mqw`t?zN$vqz-V_@ll=1k-|TE8V2rVUHf1s|6{m)_$# z(^qgD_yW;wO`?? z&+Z$|%^-=jk9H)V`d=gr-^DmF%#rQeAKuduf>DL30M4>s?A=hZki?vUhFe2xfZgYR zUuX;Wt`9W1CEGFNpX^E-dMSYKN#X4YeGKT^P4rp5X6jH5diLV-c)>Rk>HZi8cshOF zZ9w;NXr7)M*u1l<4OsL0*xq~9mtVT*s>ad{Q{cO6&BOBYFbdG4F7RJD(dV^ab_JdOe`x1;yE5;wM<1gE?2slaJ`Dc zAS%;K7p~J+0y)7xl|P$VzyH-_u`+bM5ymd7HX25<2rPCSJ+AWed9X}tES-*-7f#7$ zFX9o7(B`<4|JYUb=1hOJUGXWt0AOM84u@4(Z}h3LRB)v|f{-I;l&e-9{=;FiM3bfD zYGdd@d5Ck5PXPHFJBe%Br`;F&Q&)Jgm(da**prjpdX}`AbIazCaYO}@tHSfJS-zV{44T@%H5`(LA*IH-g){u{Yn$($@ zls@R3d(5<*FvymqT{Bmjmk6tp{{H6fJa#!e#O8)b;yO^rMH?sNMzML@knwKB%5f8z_|H z!xuIJzMMBQt#~`AsP4pka^I6UCJg7pFa2PinyEAkyyF_*GU?do+Ud013 zer{v?m?TynxpK(F+mENjm%{g1++!!N5ex84Bg;-8*kd|Z(3W&K726v{jDeT6*S*mg zlzx$DgkFzH%w1=xN6BF#vThx@JRJ-l(0mvy!nM6?Jj3S}bHa)J8M9H%bBx$JD|xlqBWB-u{hQt?s{g zTJA_O4$!T%uNhWpadoEof8t_H1V;MIzu1Wc9>2al`aAX`?~;E_FS32xkM#5wFR9!K z!}7Dk$#zMwZ^01L1WWw<1|{G(u4#5q6cZr;ljP91vhBxjUr$-A|2X%l{$rm52zo<5npRv2(V;_Up~B) z{hGFSe*REv6#AhOPo;ofO6tefgt%ds?2jiK9rz!VIlRf-UOC;+ zeJ>pJ1RL68<9lfPhcF#CcV6jjt?RT@M%-&fr&9 zdk?!R7VFg!M)kIBLB#8oK>^Je;b@$Mi)F;i@B$fLC+uMEtpt#0u$3)_|J>)8a+&|C zT2pcbI*7Rnj|jJmT1yY_n(*g=K9T#qa?~ih{`fLcBkP$V01n3s4AebG`eRF9Qq8#J z>0Wzd2c>6~V~E{x{Ur&ur%ixp*H+4#-Uo}S9ugmVh`%MGlUF2q!dvysV%8S?IIx-0j=eu)W7KwWqdgWGzyMB0lJhD8l zs==rdt%|=nbhbk)Tb;yAdHrKiQhvbjJEE=i)^@#1uIML|p2aA!xrs{>xOPQP*V&Ye zr~ihtWbv+?*PJXh-nAu(yT%%2R*IX43+&XoT#9_3r*W^lIQch6wn|ZG<+*%!AQzv7 z^;D_gToatOWY8?7d~dgO9xD)Xn$|19lba~PXon#OF9eVPn%5-&mFyEVzK&4llg>jG zhLDEhE9>gEnQi8tkvqDF+V927fG<8HPTFM$#xgqEY=A~Mq2A`B;0JJHfWayrTmGO^ z<%iliG0DJMZe8R2?>2Xe93mtrk@stafSKQxD^NnfFk@#rlzeQqxLPKUt`S61*xt(5 zrh&$0VPWapzK^S;HP10B)uHrU(kcWQ5 zcf#cE+P2*B>4wDJ)hp<@M~J9223P%cO?R1$nDEPYmDJBnAJTEw9vhr_|!k>Noa{)R;CGiAEc4vE=&Ip^yATwItI~ zS1|9<0W%+i*1eM1B+9$0&b z4Mh2XK8*UE3+{;#E@1$QG>=0 zLGMBjVg>iYT1Am~5q?asnEKXx!pF-`W!DJ1HO3-MUODcNMo*9CSC?8|tp&*jx-Es_oua)p4k}pB zb6$^XLMjVspE&(B;A>x$#E`0L2OD<5*|n?Rhb9jugksI*LmqrU@w_V-1Wi{upiIjI zxt%?Xi|c;6%a&T5jGYpps~y9XF4@QydSsSr&;N*Bi;jwj=_tk?8)V&`+tL zu6_CP3$t)6GnBUgi2sE+uV7_h@ZI>-!a{U)H6IWNJbJ6n&cT=H_x^Hh_|yz9L^kdWw#tQIaAny7yGu<7S`$M7HGm1wvl z(Z9Y$|Ip=s2vOqrFaDpzsQ=4=y)9JbDdnK}8+e{%Z&TyJC5VU^D&RYzmGDUFPmkm2 zlS7N;Jw$5ED+xG_`HdBY5qhZ))G67OTlI+4QU$b3-ZQf?Y|^0+vTA@eAOD8J4_65X z9?QYc+O;F1H#@6q!~8_zITrN(?L`v~Wh%w}G9S+S-&*dELZV*5+u@`Rt+=jQ4rJesT-|J({1ihuCeAl#hhJUW5si?S}UijDl%{2bk( z2Caz~8SnSTmR*geey98X4(;`OG*PxJ!FXE?I*zPfOl z6D~<#NP}t=cEcXtl%7e}ljX`$IWfqT?m(9$070f~y)vCj&PQ*4G|=&;dAziokx|rB z;zBknMrXWnIfyIv!Zc%js)2b`A1jp;#gVN)3ksq2g}&;1G)m&OCT1*?n`{iCk>1TO z%JoUf!HW9nUr=fI?B-m;9askvmheG$mljXXTh)z$NrhtG0ux@Qp#!rfi%JtLk^hK` zV!{I;f8NONw{aXfHlLW$>QCK!u@IrYX1*1=aruHus5kpAXu88ydY|* zj<76&S$;1-!H)BXF+-I!Z`8{4BF_~jY*sJj{8N2R?j^St+-8E^89GlG5D%GU)$$_@ zLzY>q1xEbUJaw~o?E1c&i`l{6Y`aE%vUgPZmW(YWIy|ji&lBnSnU~}&S$1<1&5nc8 z_dNE0l26jbYP_RmN}P1$wYt_hz{~F>m%t11P1%=fDXGtIAO)~H#!OqEWtcw)RFKFN z^eX}OzjBYLFlb;cP zgd-n?Hu%BRT)282NsO+Z==J?%If|aa?cmrrsA4_-Y~WTJWifpq_QQO9LRy-baZhzd z3j}@;wzo)x^WH~(@Rr=Wq;=x(8E0!~dt)WpRdZM?^QICwKT-C#v3!Sy*3tq?*lTj* z&Trb)lM!?9O|^6Vk^~uy)?mpB5nlM5YR5x~iF#a-N!Vo+3k%OC(lpQ3H;TQEXUTiJ zlp}2p=60AD)bD`~X41!vfEUBrZ%+1gOH8nKcA*zhY~Drm^q52})+s(X3zQxJV?$Lv zcp*(zx#Q}Lveh{1PWzPg%}nOgI;*Kq$tBRzr`P#!E2{tTc@yp7#odVuDNYC9=P$Wx z)q1xwtejJR_X;%E(Q(hDi{|zi8P6^*Fu4B}c=6FF=a9H+U^foutJw`ejl(wJlPbjW zI|4f}`JHp^Xk*9h`MmGXAG496TY58s`)o{*l-W$R&dT{p+xS;^CDX<3jcIrc5>5pU zs5MM2MfKwse;XXH_8fqiU{;^yhqGTuecMSQ?G0 z3Z~B*%H2C;FG9Qw5wIG;g%1!4#(M8V88n{A=6{7nAr%lh3>Us68x43A_8KFjT&-%V zh?Hua8GTuML;lq$>Ax%I46z|5a2Ce& zx>9qxC^Ap(c*rCZVuLj9?AfvSmGFH#M3F zC>um2qwcYfnCGKS=(rb<&D_a7zeg`Xc7i%VyBrC0p*{_cFg{W#CI3*-qTmH9GtXm_ zJ!RN4)_j@1Y(BYCKE2%gBp8cK-l>A4S%J*s1M23Qo3s5$m7c(k7qIWSMV^?^p~q8U@|PxVwWYpKbg|TCpgn4{D9#*+01KOpMWTiE+AJgkprY94K5e zdI%^}jpJ%~IZ^&DEr>8%W8SKzwyygJE&L#{vCqz_zQ$QQb?Brrw;=Akppo?}Mm&2~ z8DzHC`E~<>?Tm6jRR)bH!a_G-l zkjVVXLj~}j^gmIOW<6q0DdzJ+_U{P~t15DgP&{>cM@PLn@d&5gMPRwc-slgWDFx0* zqKrr&C3VHm8AqXzU$|Na!b>nZ<4#J#IZ8(9!ShWrMoX2~H=LfASIRLUZ8J;fn>nD| zaV_g#*Ws(MdpSTRyzfZPuG?Z9U7uduaRJ1H~$oDv##vn-) z5>2Ai0s)7>ISq!fr2Zu%7lchXKbavK9_QG<`}+c2oft~p%;yfb%`kgwX`a+zCpVS&-M%2 zjYz&l?)dEAP8jocuuP$EIY|T=Obb9>Gv;_Z9X;cWYx!c;Ep3yADa%fG>W#r{xAGfY ze~QzE#+;6tgG+NThi;pr{jH3Ce}imeoiqid$o-9?s( zF@#A}zL}-j#@5JNr*Rw#sB)!y`~8ahnao&PzMliR+t;7_s=di1r!TiISpOZy)NDTh zHI2NkTHYWG?GFjnD;GehYvU6@Vm1!p2Lw|*tzqF{U>V!&?KXZfoYeuA zF!{#fYOni`<9Z|(CU_3UCf;?id*#mvs*TJ^?K4?G;M(%vXvgOlQ;+R%bWaT0KqCYU za=+&7ycqMA7iNiDUX^b4qlb;7^&C;=Yv!2vi?z%jSML3)6Bytx+~5TK=ubsG7r&R) z>q$i9VxEeyZoBAhn@NEyM`X}3 zxy9*YkRYYk&wQ0L)IevKP=1VJ(2^x=hvuA*I3nY{;!b)x5VlOxXa-x6*r6d6jT~V2 zXZiET$oSZ>#2qW&jo=?yRCjk{pqs1sT(v&3(H*GRrC@t|duc_*9}22D*u3+2XqO=X zY3k2KaPqNeDl*c|-i?^F`*v z;{p6r0o?Y>GWo3B9ld=`Bj)AD%Y>xHbnoQ!CDH>xAB(Q_Gb8O1!xl30?D+B+?#{T2 zbsD5Y3yyvM{VeCUGWi?4pFs!|gQ5p-KpNa0Z^+h<7I%QT2(rjYsj{f*`EubqX>0|A ze~`%Ap7(YvEZ?GfYQyzR1w=AF=dk?#)_oK5^#W*0tQFzk%jibo{UI* zj8f3y#oL+ZrdIJLW~e*eJWa51DzVz-0We9UU}kNy=@odudf5q{7Y{M!+Y{2v@z{X( zv8AkQ`-g(TQCQ#bGUI8Q9jqscJcmDeZ=*wRGm-zW;ETHM^(yHt1PXjdr8k}Eco61L z246b3s-4y5r|*Gd16A*!G#6^9z#m^(%QvBk+Ha_Lf0$HBb2H;_gmx5AKlQkU$bFNO1SyBm`#{_XL8wJHg#u zLvVL@Seylx-MjCv>i^}|t-5vV&WE!$XZM`x?wRhVpXu$etqQ&tvS$+~e^O@`{-YxT z{K>W}me!qm64%vgjuP^4VJirKGGLaL+68d%);l8YeOVIqG}Lo(xWc0o`(STN~JSrbW7+S%m0g1xpW;vJ-)hMSYu}i@r}c zKRvLMLI%R^=B93n79 zOQ`e45l|4CGmCrM+PW|)v~`DrSUgY$M&Tvt@bF$lFGV}MSL-CSlCUTRKF!}LY7>zv zm=P{j=SmNZhws?P!c7W=fsE@xuV~-Gp1z*6{)R1JHnQfT1r@s?eGZnB-PV*pIgPk} z&~%M340GWBDamScx;F-XoX_O^nxB*Kb5sn=z=Qez^cIO>LvgChbVw(<)I zT@*o@0rIwqKPE1^Dd^JWL?a?5B%)oq;2CN>Ffg#SyQ}d2J(`@H9R62_r~gL6sQvdC zbGxb>gJ2^0P)=7X{pxI!8`BX%@%Ig~Cq_obvm+0&%q1%WX~wZX%IZQeRiVf2&*T_E zE&^%YLQjEF^np@7gjG0&T?=+TXqW`G{)|;&jib$E4BW^)RX@QB8zz{)_APcxv_+{} zL?KAII19n19KQu#xMA*$K0jzraDT0w*hhVv&`k4>ivF2XJ}u-@U2cw%ex<9EsHLMb zcIoYs9t4nmWJG!04rG)lS-Z`)+;p;hz!x!qXX+^aTT-9CpPpuji;I)>@DMe$plgOO z(!t8&5%WpfIA2MAc9(y}e}l&r@24u$G3fyMo18j4Ix)e<$e71G13++i!*g>Po^Fp7 z%w`-QCMi*QxBi;alBnkT#X3mK?As7~2uz)3lKUXMI!GX~OMUA{^?wPYprD|odRz7I zyVbWa=iZ-$l8RC=k~HnTq6`(#LwAXUAJkV`%TU}upE~!9!?8sV4|V%N1OvGuz>J9l zmz9&6sX)~`O0D;PG4HIjO`ytPf2QJ6qmn z;dh#-fB1lj5$@jyTUWw-;AH5Q&cd!YPsx>7Ao6rQirC!JzlEi z`lL&i*sull(HMz(WbMz>G}n33`I-!TQJyD)VyA}I>PmBIT@SMj3H$u7rmNjA@mVHf zg4OWNl`Ogjc_~|M1x>svw#I?gt|b2Yn(n{% z@ZK!E*qTSxloP?604Rjxvm&-n*V|5B`|eAf6!6Gk~g=mw*PeZ0{Je)w6LTV@J)o?>M)g%X_sw&bVktZ9@!CE(|9%e272{;0vx}um067Lm+Q9F0X-iSd)_~Kx*uu$ z2h-)s1@lw?LFD^G3E{1}pjc1U%Z3nH|(J}fh+ zIu^)GKzj^X6eC_LzyN1KewPfH4%8Aen_6o(^FunKe4?!n9{+pznv39~j~Cev^b^R8 zH-E>OLz$b(rz^E_?i}~as&qn9bKEI^$oD!fN{Lt}TfM-j>(-5;^gp&nkm#E*kuh{O z`X|3ybEki`LWB@NHLl(HFAvDB@Jum-RFJG0p|8iwc!bI@?>iwlBl5sNscxpdOw;A1 zYgBYJPx{IP^zsj4GwA)+pDV-NvfWAg1V*~&m#mJq(lBWSCI+tn`y<9+l_9n1*R${C z$nE|zJ&9sqpLgyLf0QvAc&UcmK- z1a{O>VDtUrwGyE&%+%f|VYRMINtR4=!px;S{bK4Ul^B3s?E(&N?mfhw;DfU1Zo%!a z_P3fao#n1=Cs>m$C12+)F@lnJ)HSty*Lwy|VuHT>zXC}~AO4u3!~2QAl1wm3Y54GYzJ`ufM3yUn2zvE4xXMh@PQ!`jWwQCm=j zrUQ84z=dEzE;l#gGzWX{(Q}hsvRp#i6m^NapcoDTgZDZ&>Au`KrOKEQVLEoDV*~~< z9aK>bd_O;0Rj|zlr4v0tAbN8Ukr>4S<)6(W{)QxK6P_<(-!=#v8ynyGJ<}_`FI_h> zAiO-;h^BQp&)+OcskLej1WiQj=|%oVL^|-o=SF_7Q!_I)H+_*>PuA})vA$$AZmh1+ z47nnnG}{AgP4M{BxW^1jI?NTOQkyqPFdTr9Gn9BTH|?@h$hPL>I3Sq^$+xEbanidu zT}*o2F6Ghw>0z=hvZN%-eBkneP_(pFbn_hot52PW#@4|Rb&wo??a#-`xUE20DR^D> zIv4>v*Y_G`kOd~pJ?)=pTUq@wZZ}7mv)2ghgGS15<07}_QM|Y1)Md;4c4Pr1U?@#_ zGJ-?~IB}Zew@8B-^sj0U@67x$tUU9;-8*>{0&YM4^c34ZQRSR-kDzJGe$M@Or_q%| zG|QYye@~Dy1jYop8POFKAnFc7Y*71CcnocGYy=Z zW)Tj_i>Fr*)?At1-d+d<5|@?rPb)=o-UASDu+S4pFN3l5PLZ4hLl_Hn(7@TK?Eb|? zf=(8`VV`>>bMZFZ;e~ep^KH(%oDH{uTTJKLD#uyB$6X16Y5QG7NYXPb6G1YpHYH=y z3E&Z|>$6zxlfT3wu#e(BcC!iuVYC0da`k4uG4Id0cRmREOCJ42Y*zFti3mYIPZd@Mg8ExjO1cvh77_EE{QY>JUl*~NZv9vl{#*fIq z;J!VN>*;?jS6dSOlYNMjkaQ^|w%<4x$46mYnO{ zPvMj6`Op5tx_Up=6|_RiZ4+b}l`gTuY8k_@SmdN)7<* z|611UbNCOA|C&(}2YN1|O(|*M$|79Gyx4ro0EFWsPyb#3fQE(^Djj9R@Y4l&x_=4iamdq0bw_*w|Hf=<-z;Ep@BZQvts z{$^96N^V;7)f$=Ndj(v?TRZriff6pku`*JBlI{)20(Dxz({NC>_K@6Lx zq`UZSXZBRuY!x+0&277W1g&&{k0lZ;@TFa6=q3GWO?R)Zd?d_ennHK*ij(6uvH13} zZ&*nX(DEJXDlHw~3y=|6-2DBR1qGj?(37d1N#OOQzAg~21q-A6u&2f-bf<U5rxa*DMUD@Q3!uYaUk#OY2H zWE9kbyEW3r=G-BX9dAjEklM)W{8!*#ho=wqD?Ht&*#W?7#k`&V$&b}df=mP9xAt5c z50V5uxwFB*xIVjM&w4`Q=^$RK8t#kY6P#;zPa*^Aufi!)KKBCz*Is0#ZNc?RDA&)v zs|8K9^XF_^-1iLF(uWgG?N!q&pB6Tsh@KZfE0w{~NJkia6h;OwPJ`X7Dn=T{SaJfH zlKQH^#-vn2dPOC#?{y8+jQ6yvo--tn%Zt}R-z&N+AsL?r|G5((BNTu}fAO6H7UaEr zw?p0$Y2A{ius^FWvS#`)Gk5Cs3(kP2^T8&wcyzb+MQrwHusH#23spnrW-+LKNqL7a zPt*6ot{X2|XRgU_5S6rwdIkF>0^l|>r#uVmzVtQyB1A5Z58Y?CuM3ft^$Q2{U9?Y~ z!=IbvWtct$FN*ZPucd!`7JnTKKV!e2zS`^b2x%WGlZ!H)R_WF_7xOd5&4u(in%^D~ zhC@&?)aS?kmJrP3-cW3IMzzH!w8Hju4bx;KKa+ZX+>>}MW=r{zy1Qh3>_0JeFEPRZ zhoY@rkuFC(_#`7sxOl9DGD`pJ$yMLftMuF2nS$~4zk;Ywh4zPZ@`@0xEEB$F$g54? zC?ZB_$2X~c0U<15u^X4cBz?*QG8XuEMXP{XGJ<%dQbL12#-hRK%3Q!Mx+p9TBauHK z&zdRyzp!!LdEVK#J?dOA!<6**{|qiGu&j*5H4g5X+X}Y^(UZO>mIfURzef+nT8e$TWau#5!Oar!rvh552qohx2;8TNKlv522zT zfj@>Rh_kqz9GlN@50gPF)R-foZr`_;bZVhC39@}WoGL|}VUrZ%PddZToNwoW$IgAk z3z%f|7q!io=hknHQk!X9%pNY*38fM;jk&1e;@+tpFowlm0BK%OgJo~6#^CL>>-1XP zw~0Mv`ib-xX}$Z_dxRNYIEcG98lZpc@`%GjuFZ+(W#rQ*tY>g_bCa7VM+y&Xv-4YB zRBqKuiSToy{7_k}3$$64JV1GY=F|67_=!9Ov7 za1JBsB}2~J)lG>Dgw*^bG*YET78#*w;Q_MJA1c`pdNeQ;LgZj7Cdx*f#T)XQSsoKt z9lb~Ici&!rnFWE_5&sw;-Eh;{p}ghb;9UKv4^?HDFG?yfnLl@- zD2V_+FJ(q1phJ>vpky|f;^tX3(+9(kH!7dNwLc38P@$jhxllz`IA;R{DRa@&6eYrt zhQD=>Omsu5w*20!>-ACRA(U%H_2z5?uct>H79uk6D(6J;n;^lqmcKW%W9)UmHK!E1 z9DEin$O?JJ_GLy3`OD)DDl`lci0v52}K@f3cKa(i>m-?QXB0@irn6n zsP2hipM)ipQqCy0^Jw&;*mGcKRqG=IFPmBG94ZU+PD{X(Z@~Jh{XwdC_&fT-fw6ld zsvYD(N_Q^e_9wmZz4hJxhRo>~+S|X_s2<6`^V6e|I8f>WiX@t_$Au#VGT)hqMrB!N zW{ISj_X*^Qv3;)j^Kr^8-Ba@*Unrmqm$QDW`fn39n<7#b6CYOhui1|89=x8sT!d{7 z$g4LzgtJ|cW=bZFl%$cq&E%*|i@LBdLK!bieTs>Pqts^82L6otT*06%ZrJa41V*yv z_lo%#ya*XF;dH;d-;}mi@yb=6%qtK8P@qssv184s2N`50575W`U83BAymv$UQPdHA zZ}1Qg@oebe5!;|uKUlswVjB4R5sCtRxtxJ$>KlFx=%$}ySa{uc)xBwQYC;VEmHdEu zD7RkbIgoN- zVld#LdWJ&nxio0GpPyd1pJF}d++-aozkDI@5bhFQ<_1We$QavL21! zQWcTQNJhg-FnxM-I_VXz@y9f6h*s2%)GftAXVLhD^hx2|PHb}SGCbN#g{)7mwBC+L zt|CFaO#9G^D98IZ`49@xAEr>G{Lb;M>LgVFL&IiKmM-W;8?*IQ`6fp31BZ?w^uk}g zv_eRshxg=U9M!#GF8ug)HFwI2*7^={Z%PR8(yV2RGO?r>Jt$a$S3Ns~hI^>p(zQx}n*Cfo3dT6uq~Cv9zemt}V?fW{l%Ub% zw@B3G_IXlQ;eXe#)^wmn*BQ~G2d1l69!_|966lQE+c-e!--HJ8Uy?$nKAV=8zhj^G z*kkZmp_cc=?Mtf(5kY1!ZQi{9rZ$Rtuhfj}Iw9TDzHf#-p|tv?H)Tqq@uI$5=xX9a zu4xFzZF=13=es}LFn~AJ^YJ2qjT(?v?O$JUXdp|jep|un*E~DEdPn3?RRbtKNVY!& zu(Ck_FcaC|DTx05+E7?Pufni)hBLaWL)~}TxX|fpQL}zh@x8y0#%#ysV!1VQoFQx; z9L=`HhLFyYf(yCfU7k>z5yI30)l+4jrZQ?h>M3$%U@<)%-uOf*aRc4O==Khb93QxE zt{M1ic4zF)uC8RFIUv&!LC$?&psYe8-&TfNQvm#uH|kOsNaub!q|jVDjj30vRXcoX zaz$EbnZ8&6&{#*k;T8PaJ?$h^cNf)`M0~rtsAD5Y$p}!EBudVR@1ts~QU1DvrfsJb49;Oue9~RApW}MpLxY3-1t=8u_|*{(?Aj~W;>x85ZD@tZ zg*n39teNc)o(sav5YB2~4m7gVn9KMZ)L8YVLFo}BRz5a!Uw`xWWgwgz>D^U{t4!0$ z%bxWa##V+xZlrJ45`cpf&G3SGZ`trwyvFC2oR#Colz$}34PoDhGgFN95!I^bjfv+!<+7qDM@BjzL(1`=#umLS&F}IA!t{r+f4(ElC_V4Kus#_lMZ^iGxg(jvEamx#`b_98uka zCV>XNXqlni(|dX))2IY26g6)SWn(R34ZD6lOG{la?FDdOAf(zg));T_H36QPf?`FU z(E^^`&6L@EaSLdB1To(qSMti^kL&>R$A|7Khu>(}{I6f;KQW@`+Xc1VcFKV76WN?X zAMf@Zfp&rYsAv01;ameh4Ep#(&`g;wALkd;N+kN;*j7gqUUsdI9T?kUVMg>Q?<(7s z@*x?7r)PZnVpqUR1__IwDB)9D4P5V}cTq|L#cuge-XOfY%*=6xZ{_TrD=W^wHcQ%m zQxQD)$u2DMB`g)HTnpYOB;k-=gxl3(Oz|NL+oV1wj3%CgQ1jVIB#ey6CHw>d65VSA zq0gf;HXdBghF7|V_Fu2?>_OJ^`vldMShtBycTx9(Bp2Y1R=HkU3@g)S(yyCf|JZ$L zhSS>K3O%{{!gPL6YI|?h%4H^hO8P!qj>eJFOxAp?I6Im4@;pcmbgkilDgA1R0{L2O z{yI_yNtMZ)nBcv6lcCQ^!%V2LghDiE%Bgz)gLPYs>7E>DO9ASpjlGA^l#X&)exE?f zHZlls$>lif3e1NnTNiX9$6p%8Sh$!!g5O<%+?Bq??x2Gl!{CzT8tAT2WyuxgG$&Yq?O~2D~zMba^RZ8H4 zDPno6YmrDn*c?$SO65)4e!j)atr(=8{rr&8)gNeUD31sY?IpyJwy$Y%8jBW+FluC0NBRQSAKBhk=?XWJQui`Mb|)f# z+hwR}6djpZLzxIj)z{pjKpuT#9e$M1!>6!B*yX_9+Pl5kh``=>I<1 zn*+yXR*dMQqveT`bl1DrzFZYV%%J7CFs2?GAUjQPmNnFI!KkX=99=V3HXXgB1H`8( z!%*xD>l^N~!LNaOq8*9<%aX}ZhM&^dFx+7lesvvt_7u9CCI2Y?Abd`Qpb9|Ff8B$d z(8RA2sI>P;g?wa5$lMc*24(31XOJ0jeelWkCj_NMztF97BZ(lfY<1hdS0;&>PKp$a z8yHhMTdN1~ECGss)fXKj;>~^K+Re^WgpuNITyr1K>mWh^0S3m%_+Z~Xa_K3DJa9}F zOacu-IFFByx3jY&oRveEVMXu~pyunK@YJ{lA~y4&feQiL+}ylU*j)eYX#LUQT72k! zwOMamama3}PRvr<=}3?p{ekVX-s%XXw%zyEzfrfkkB#Sdpa~^8y97F@vEcP4|2j|i z$G<^hXkQt0>7Db67jm|8pYX?U=H~F(#E+2o$$oKtzukV5sEaGxd6jpuiADWG&+Kn9 zZ{;cPG&mwmzZ%QiTZDz3FZu9AUu2@l*6f`MmOl&4_ti!?arM7XME2KXdYOJ1lHgI9 z2hU?Fy%>v6M_IAhZT{yV-6awx?AloM=by$E^PjY|NSfGz!6GG;IY=7gUVZ*zQXV3( zKZOa2NlBLcM_-}WwNL_ADjOzRJUKmw~3(kg;AaW#-Y??Hb zqD_TFDlLB~w$?btV>~wC#HCGll6lyLFh96s-3FO;2oVT?b^}fPP0!~mYCirwVuy2- zfW|g)JXc+2>b6voXqYw<1cihWx8efmsCo!~|2L!z#o;VMUUDM83L^RlZr|R`QvElS zvMK~0Z7$DnUS5lHV#`cb%&F@xKgG$luz3>;$ULhwI?Pk{rfYGR^!H&z1nsF^c`9~8 z5*du2mLdC=bRy0N zRfg7GLSn4hv~JBxaFhoIB--h5)is1UeO=wTc#Rl2Kt4KfKN&pHYQif85Nm>F{Z`3k zX8EoDp)_9kkPdKJKm>1UI43JC{Db1-Ij`<%x5}lL!X!=C)m)a79S@&&>U-=k+8T@O z4gp@h&huMu!5(SjntGF zE?0t4wo&D0=*52~H(w=&8zh18qgpuG9KH9!F>Oq6oI!Rnw3|nMo<}~iHgZIkFH^Zk z8nF5yQe%Gm+m|D@W{_=;pVY^QMF*<+$yj1bl7bxQE*TLhw2G0c*OL|M^gCwjnHWZo z{WMrIpyVP>)xU4|;18IPKf~u`hi-a8qYHSkN!Zo)szEPY0nkJ>TM`IkG|2Q_Y1?~o z<2hNK*4D)`RMJpu#oOUl*y zAIAL|a<$|3_~k$Nn-m!Hf5*H3KLF+}QD3oJb*K31JszD*{{!MDIM7|m^1Dyrs4uGD zLnA_rKCIh_1x=DM|A(xTOZkrc>U#(RrhVan?lDd|A@9=KQFnz!J`iPL7Dh=SSD%2m zCI#E%X_V<10hIFY*B!9m;fY|w?eh2DaAU|8T8 z1_l1Km?#0NRb$k*`EVpRdB7YXOkK2GzLc%5-n*2VY!Qpz=nztsgf`9W2antu!C#xp7^h#SVG>!)fVp=20-gP z*hw{XG?O~u>OR^^=&e{MURsgvU1aNF!>12wVPu|v04)Qk_nA6a zvx->GQbVy_9|@ha5mdHb6ViF%)&>}o->pKK_|@xG0#h?+gm}=42=5Nq5&1$eAeZPn z8bE91)K60;f|bP9@{?~?m}(kiJwD(fT?tUCy6H0r0v|q1kksAa04OPEbLL2fks!CV zJ6y!iVimaZGCV4n!DZ2ji}h{M9(Y?5IOyiLmDE8>OQjz@6E$&67bk!CH>!G$N}t%I zmwsI2w-|7R-7L=fNw#>(tYng*=Sgi#xljDq*v&DeB7sQnfb?#0wx5o~t5jFQZ4$|2 zR2wL7KI_hDxZLzOy15fKbaBqf(RqpD%LyTzZJ75Q*^k1yMA)!STaonBhhW)p;xPi5 z%?sG=gEfw0#s}}n=PtM{y^oGwtvT8<>$b{NZ-Fu$Yba@#_sy%M1{wxyalf0>{qh+p zjL?x)HjV3Lq>U$6rC1+axfR1uvF7akyw-lJs}ut`pq#OpDHEPK=2J`5@N$VJ-#~{; zN7x^SN#C3y+j^|XC_VaWKEPD7*}H`sl9!NOcoML5jY$jVsOmYwG*R;d zE?O3QYI|tPs z8>b>Gv;8^`dU?b7;=hbc<kZmU1;capQjXhkuK{E)Boh?=I4JaSrCr!s8+qyCSDBxPReb4 z?j!sTpMJ^b;N~oD(NTG95DCoI6k{;1$p*$iSX>t9)+YKI5XI1p(Igq8yRFb61E1?( zZ0MdwHEnp;h8O0wM&7y?YzduMBY#tD*%$K$f+fu-do6Flwz;{bF{8DgFLndfPJ>4s z2RC8*2Gz}q2z+=Ey}x-s&VV(lo8^9{VPaMQ&lPsBfjiCE(vNw21KccdcYI6+LAUTq zjZyf&$jyDwC84~nK{sxNOwyQ7X&SI49Vma=rF3gPKBmfqu7#ChQ=VmGOW;(pbWGf+ z(S1{=iA)h9$MTF_`w4Ve+~NBbpwH}ib4~S-8sHN2GZ_kCAP~7SD)o)(Sc|qZd?2ah zDFk)&qmEUGly(dguRyrB-YYwCCFf>up0YPWs9+5HV0>+T+jO*(WLcQOElHd@_Nhv} z?9gglH~HzfZAj{orq3!#+yE#@jT8vjRLF>X2d`Yzt#O>@W=a^Go2q+X|6w8^F@~%V z@Vc;O=XW9q3#QzX&!3SCA(J!I0j zEjAXIq}X4qvV|pIQnmAsPi8wWhdZgH;$E7OZ?p9Re!l92X%xF;31#LYHAA^JIcF=%57AnQ$agoj5;PWQg@i-7HykSP)pjtp(K`;%<) zK@d1`u94IS07fcOD z9~a+?&gm3b?id?qEQ3Ypi)>&@#!L}o@wq3MQhstK9+bVt^rPA$B_*+J#1x0hr6A`r zkx;8S9+xis4F)5K2S6pMrn3HNsU|rlRhZ>!l0FS3;wz*7UQzIYvH78mRJbZX|F;ls zSaqfU&(siCfa1T7&_q&=Ggiz0tm~lzN)1?qOaRQDxF$U$fbm@c{)5wqHGt><%&$>~ z!C;Kc$rFuzoxifinJ()@q9JE8H@CW%E$cb@kEpx55u>^O#~rC8I`osuvx@QHcqq93 zwgg^i4<@;GKbrfpbM0pOS*tM^u~49F8S8U`E8546oCy#9L=n~r3e|)><}H**s8g!x z*r2o3C-o4D_@J!u@4gL#EOpcKxwWw<^~|!3ye_EH6fILhu;;kbq@#wzBEQnxUcny$ zx>wyMe8r(GSFx7}EanqQlEHT8`vOF_x>_UrmyS)GvwGJ(+tb&Eb=h^EGS+_llpVb_ zTjcKW%oy`o8*c+x$5){+v}S&3%CU`?#5&f~H`n!dHIp;DCLsf_=c9vw8(=j5zN{c% zg&fq-Pj8A(nj4~S%y6X7If+C6)JO<)D3^4?Za38fSy;4RNzkBn-2{2foG{Vam~jSb z;LPpOIGXniC=aq0H-thl-CA!%`Cg!?8sPbmUd0H2_Y|kqoGK^FL4S1WkE{ zsICFA*Qc1!a_YYRM~_{_9ox=nu0#JfmcK8DmB8L*uSp0dbj7SVh>wD{%*lr8; z?>z#ENEi|9fQP5IKC388^AHC{=@-inemDUR39v|;#N_M5T~aG7uW;|NQ&AmJlt{`S zSlUT@f=*|0_}ORS%a(#d9j3=RQnw_C$VC4dB|ERHDm!9+k+81eXYJrRYO85v(ZEKi z)j%N~ca0yN~biX9-cV9jg86fe@V8p?}bhifUT8K;U%17|nVHQ#4 zEq++B=6>HDz;%gQPZOF4I4Ag7qI2C zuddqpllizc#7=4oT>>Uo{d0N!93ISfZAxNcX%YF)JASAJb0=Zo6<`rDhi5H9Ll!c1 zX)TeobgvFlD)a^2M4QYVrZbJ@7xEN4xRgg8= zL6@Pz8~zkmf;7bTly^06UZ2XrP3ns>Jq^4*%$oG*Waprgz0lHvG#O`!^`+NCCpLg8Doc-BBMmD-|wME^*Z$rnJOHIVj76vb>pKh(p8 z(s7+-!mwGQwGhvf80Q!A;+p4B zxsScy)UEvZ6Gfs9n1_*mjb~0m%-k~i2_y$0J-@AVfg^_!LXg4K;PaugDZqWm8Bta1 z0X3b8kP7*?mN~*qL&z+8Pd3ePTQR2>Jk}ObIoi_Tu7NHx4>tZOu#jaM)h30+*AI2b zjYmb@guD7?*(TzjPfkbe@cbZy1AEAFia2fQLC?L$>7b>k8wCSVkF!53iIShhzW{epgz`|gIrF24P z=GP-}E&9m({c^eN{2T4e?ri9BZ7jbku5<5L;Coki99P z{z1wu)5n2}#|EiUXRt>n5SCEQd^g}0GjH+dl}*I##Oa$9gd!zsXY5acrBm07AevlK ze0;IC;Lfyx&(9C$^hf6$c(*r5mx{>>&}zIeEs^{;-0%mAfuSK}+LAyYrn-0{8gCHE zF1QPge3K7H`g>NBVRKmB&kX)GPYIQ){hd5&_auils7(CkTO~>{5X)Kp=lhEi%8tR8 zdI<21bPps8pQNqjhX~-kcPsAQ>b&_MH89E&NuAQ=^)(Zs0Bptl7)o`F9K{N(?S?Hf zxIg1ps@3-7_;_JiS=sOo-|xm<^X;eCS`3mjoScZmZVNebY}si0fw9HxMZzJd-HjO} z-j$)MZqvqd=<#=xIOP3~FZkeH$z6a2UkowO|)PDS-0QftHxF z`A*JQxUiTQs37jrkt7*KOh)6GrW1&X zC*nrhXkf*H>z$XDv zrikOqfZ)pGvhw!l!+4ak&T9DHkKTZFVo+q-U%Wm%p(@LVs)B%}8TyQ)aD?xtw=VDA z0BPM=8AC*IBV!1Sw+~hZ=kgezqdDHJv#DfDQq?bWXY|A&7Au!k5<3ZWewmeNp|}Cl ziupPa9C)C2&|nyw9r5RTbWUZ4xF!m-uKL0F%nN=(s&8~biff7;U|2MVaj4)F&U~t_ zLaJ@O481q)4zR%c<3|CwDIc}Nkd#~IxiLQRbvw0>y8iYi-TI36#- zPg8WLG~`3eLWBZq7GhnmOng!`fIl;xFS`oYULdakj^*Dbi*nI+r71LZtCM{J#9!Zk z3Bfoih3-~In$#r{%YYCv)i4)ED)R#RM;$o6O3n$XE8Tpeo8Jv#{6d+L7%}Kr+)(q* z@ov=+62N_V-C%`!|ELs%Pe?=?S*`Q;N}(*~wes0FDV=Qn*J~j7%iP@D=T>+L3;R3b z?4?id%Q0T3ybNp<9aCCXY6u1J3b%0@;;R(GT@8M2wSYWj;9Ks+3i z^c{9M*~D*^nvSsZ-;4%+T(4?E-e^iqbOHk6X#z)(%AHN|8vc1^{I{*g!h*@BK8iM^)89`$i8A7(+2g`tj7*m|XuN6+AQ6ZRNd6IxX}dm-v$c z)S4Zt4w^a_o_Zo7K{GTLRqxn0kg?_E&0e(LPB~gAU|?asyt?}8**b4uR8|(rbWt*B zA%9-6TXlltED$hAL@2=a8wC7b+kXcX@+T}}*VNZN+3-cm+|7}QU)lCi7-nx10UpoU zZ%@g9*`!?s+a$n@aC!1z#h=>))u3SB@r;!L7RSTySQT7FCp}0(bkV~y_UJ{gJf~{ZCj&?r$$z zcJb})?ZrLLDBXTe)?f0Xkd@J~RDTGIA)N_*X7I&BybNJ)>g#!C^!>>VeI@GHVPJzR%3k9F*vV0rel^Or51XVl%P0J6d#jCV<)(E6@3vrt|^~dWI ziL|7AITxMBUQ{<8ZW zHzGq;)q)s7gEV{N88#L>5cryygi(NKzUikO8*bm>llT~y!{yIk3brB^FQO@}LZT0C zyc3EHM8E;rL5N_=SBvD&L|1;*A>BL^ic_>c%+LwcuP$U`H2Prq0bj>cv{m` z?k|dMk|>x}<9a<0|Fm4FLo|OpS3=`ykUD#7tAwlBD`69HF|vrb=0~bcee2&oaEui) z7z(RWe(#ZkhHuqd=vC`T@O8P+Ygm+dcl59L_{yT^Rga7hFO2xV8K)|mqC31yt16h| z)hoF7FB+{c&4cu7Q0ah##YrMTL0-TG83^mp_R<{zN_t*#M1VQF=1?yGOcM$^aL-Hp zA}JNk&7LNxZ>0`^jEcpz`G~X;?ffK{d-6&@;Tru%;rprc7^&gCV9;?B6%E!~*U{@R zpXgP@J;xKFVqkc-nW(D%G(=eCFBO2@!xh1yawR~w6KM_hEs+858viQrTP3ySk7!3^ zO+=~fa9nwH1Bi?^HHjzI8(%m@z!1Lu~38yXzn*}j~jvAX4g6cFB}%D}DJ z!42%0gCBdWlrU$i0*-XXN_ce7am+IZA?<#IYY#*q-Q8+5g_iX4cq0I`z~=MizfZXR z`LAbTsG3@g0>8JOgdj@)7`S%%w@j|UrwD+7*pLR$oxZ(X1)*3Jy*s*|q~~nzreUS5 zFl_tr@o+w7n5N*fermAosB**3$B#hXBv$ECk&Te|+W9)|Ks+8EiwZDYR?>DL<)%V zZm=EmXH0|37fOv|Al8<%42wEY*-MM!mT9MvjKuqxM`g@ddc| zc!e?sPgT+<_~FYY%4fo>RLiqzRig{?7p_1HfG*O1zar1PdwCUIa3qf{stRgYAsj!j zM;uGx$bkA`D?s5!5TYabC@#ybKtE9Um_D>C@LCg65zTN<@`S&e-rN$!4{`Hk;i|;@R{x1Tm<qBvboB3s)=*?oE~lD<| z9W0`H{dQYyh+n)h5%GK+a;{yj{P*&aQ^~~kQv`cJG}Wyls#=)|sm%n>L00H%+^gBo z^DHB^&KWYHM(}Uge|ci4$%d;a9@^$yvU@WugSDX+QnNjmGNh zkgEt2X4V!#HoLX!)%uQVxVyQ|i(L1Jdy8?+$W7B=@IhjqpCMLnDl@<8>K_*={3E3} zWj+$vb;>U9KCwSQjan{2$#^$Kmkqd+uqA`2tZj!mjKZU%_6C<@5fjgQ&bUMHDhcw8)cRz8OlSq;q%iL zU%2L5JiUvI!wyBP{ng`>K}b;SR}%>AeF8Qu)uF z0a;LlMj$WX`deOUkGX6N#@(As$xm7PLSn<989ER@%RmqtV7%3g*OhY0P1YDUo1(Oy z#?=M-&esp#+kif_BL`63vnW8E`aYnD@`Uem3U~uDPOx&?R9~yXznTC zhm$}y8AVO@xq+WIZqNUuq)DpZnSzl`GW31wqm|5RM=V0(WOqENTFM_UbxC&0Y=&Ie zXQ4U$nVj_kQgaDA4*8`Jh6DjmRx{v3oFfAo=%3BjEe9J9EGpWZ9ZG zv2-Gd=J<^NeHHrJ?>>klge17LC5{rw^pNDFXva(yhk%D3M^?kc`F~QEAYS$b>!Y?r zogpmyvd5tszz+;cefqtS(3BG5efQiR_$oDS>1H>FP(KRr4QJC_{&|lykp*i0@2iz= z@sDT7>sT_w7xmPvcRCnlpninpRvG~0(v!1S`6ImE7R=nZfo^QsRdappY;(KhTlGy; z2b~iuQB>UK%pJ+t@b6MD%)SrL-&HWgyleKB6c>IO%Kr6Lq=OnWoSF*7%iMeyC-1{3 zwkpPR-U+KWhQCP2pLu{og)#56wrNrAv#>3H_JlG8rgJJ4j}v2Li^}*pYIrG5$p8H( z@AAHf{o2NSGT;SrAn#flg$bHEk*uA^)Qj@7tGZ5Jl)^tkl?gH|z{JcrZ-OXkKU3j& zg_U1k>uy)x1f;WZ{9lEAby!s=lcG7-}n4+&XwI+IlHs-JF}VDIg2g}?*fA*SsSOq zoZUzgmzR*Ltvpbd5J$2Dl6z<#JR-|g=FnXcu%$c{Z7QT_$<)FZf&mOhC9Hh=DT8PY zJAkCgmLq@H=m8a4X5-g`EHGBXutx%#lM1+QpEn;43Zp3_C;~7gA%SY(0$Rxjn}r=s zI`H4+VSOpO-zSXo=7j53Y-Pr~v$$&=zs`|{JrSYChy-iRguF8)yc$#xmcxlQ>)ZY3 zDi5hYZdC8|;bk&byx45IHva7VhdXb{kaXAF#(t8IL*)L|V+=I@xD9m%dsWV$DrhjXwOeKlY zkJ@5lzH7=3g9i~ZXls(I_4=65&a3?FsDR!1-+!fjD9h4-e6?`K)!OV9&qx$Mnv#xQ zkRc)Uo8{fT2OYhxx)a+{8p|aT32Ym}T~=EdSrMUQP7*%b-XziDVJXHQayMQYdxfUC<4+o zq7_mxuI03Bthc6ke`&t!(^Yj+{40xw?x!{wf7_(_lkIHWB!D_yriPfTKiAFDPLoKr z=^4VKE!h@hSNuSSQBpk&WUXdsD^NVqWJFQ2DKiv`Ay!xR!8h;yXN?9%!E>TSRD&Dy zm}S;NYNv~=Ol&B0Fx&^sHnqXB(}Wx(AMaNcZ30yOJeOS|3@-?SpFyN>6W%{l*T~#} zBIoIj#G;hJshHgKhlR>5C_n<9I##WDWQa#R=@yd`xZvlxp;=LZ6fXIb_ozYd4Z%%P zR^lV0AlV0VnEh1bcJ&+hO6VO{oRmB2PWp3)CH%8k4CN(FuyseyQ7@jXiBrn?J&)qh zwq-;VMpkTR-=>low4Zz(+MoTQt0~~1W5E#$kzn}d-i{na2nO9mcoYK{azA5y0qO%b zg*5IY`NQQ5fG<<^?2zP?*|v7z7KlXEy36ya@2*APoUB&enpQ zxpf}$gxv(xW{BGHxcNBA4d4;W+n2{SOKf!izO+U$gnK*=xo;;|ux$?4I^?2oO=_9torJYfNusn|!>=hu4sTuPD3Ietxd(ly#~jrq}c=CNZP)K60}9@wD5ZVwuYE%1&*8k z7PYx=qT9AV!zk2<6d$aSh#?r*o5nJS&t(^l6wrOu05Owv#ETT(t9)lB130f- z1ReSJVI}6tM$h-YAK+j(cibGs-4Gk(HRn%)cgMBKQCqxBiC*OZAU#Xdcs)r2OBnF3#bCE}s7<@Vqy^IE)!CKct4BC~S8z(}FfaRuW!)=PL-1yv zy1BqVV=pKLG-972|32d_`+@d=P^n4A635@1aDEbJ_?ug}bYNGmZPa}8w zL`T?JaNvh}Ha%vgE7M0cl zEXZ9LU`t_)33Y=awSyUb8|>kTO$BG{1HB+;>`z*h)wt(wd^B4`X{-QjD}sv2rp0l4 za7X;9C@TTXx_0hu47|f+6E3X|wu^rZO#veKF*mJ*#thfMAksjTAh?)jOP=A0=cYWv z2UYw_Z!6Nk(lTI|swgHO(}*B+l(mNQ?;e0K?Z>YT=Hub7g&MMj)E^7RrPudwr#VqF zu=z=RpPUg#)bIv;(K_E6`v1EEA!j-jN@9jB!nW-=ZU?D{tRn*$Z+DKtr}Kv?ogG^| zEnSXGzupBCcjaJxdP^|VFmjoHsPA?ISsR2Mu@%{lIM|;Pd{$ByoIHyBXxvXyI5|^y z?ZCL=-()K_NV-XYoaHN+a&0`*qWgg4e0|4w$oRk)k%qKX{dMJ0fyX)kwKld&7$AJz zU%Z_{+A0iqxg~)f)*PSaLL7 zr>v?q^KuY97EZ&G{3<0(5tmbp=1JgldEz1F&MByZd2kkukc&Vw1QgPi5f0)$p?Gz9 zF9Jy8f^ypA5`dp}HEt5#N32u_-#q}t9qI$U_EvCu*o6SZpKp}bPA=cPug3>;oSZeQ z{i_Qa(XJNq0C0#~2_)|&-^TWodz8Fd(s!U9ZG8quezmflx}yTGAZ;ByRWNZ#8f+5| zVcgK*&x}5oX|WKwOK$p(J9sIr$kCKki)%DJy!jHU0w)>}?%8D0vJesqk&<=e@} z9Fh!61joATx4A6g-#L{sMkrY3=skPb`3=i$uI6XhpIFeV$5(!=(G>V7=IuYF>$AP} zUX66mq`dm^Uxlpwu=&#UL$yTe)@j>d=frLp85zBSjY;|_3M1d%ya?pmB&}5`Ew()dglxwt2KgM2IIiE|PV#P=f{`T#R06Yx|a}4_HNZ;E1+oQt!3R9ukCS(}-U!VF^+MfU2x&Hsu|NmRl zf4%cvpr?eq)=YaD`-pLDJiq-PY*Ge{uWrwuq$0IZrxN$c)W0pjgkLvC{dW+p51^u7rmk@$#`o>c3!?sTq@y zXPE4duSbr1iVsbC4)p$`u>US182)GK&)KNO++uGoS|NMc(qQuXTtcC~e&01-@9#+F z51?xcE&x<=oc<=CHe_GSlpN-c`Oowy{->Sx^$f5Q#MHCeXI+6qRLcLLYf+( z7$d7L{uoyFx70xi5*rK}513kbw;X(ZFM9T5zSWcU0S~Mnyryg4+IuDIGi?Po6zVOf z-kzt4p5b{g1A4JsRK2~bq(8x?H4EBzcv2tgR_ix8v9v3%B?D`|QcV8-LH^sHim0wM zQuD$|P~Yp7=sXR;&GwIudv?8**yN~-M8dn!0%-rtz9Lc%sHsI@Yye$4wy{0*d;R)T z#+%QdKZ~Apm?^rXd}_s=Bci-fK@09%MXzxRWlH?Q z-0|yKbud0Z;9}UPP-K_-gO^~!Pu>7|P_$}rISvKq_Y-H8ZtE8%x=(Ty%x=UhKTx&d zI#dYSH)}~QjONeI6h^lv)_CGs&_(mRZd?|c%DV#7MYFe$BFgh>0 zcSCC}N*+ee@z#^)BJv)9(1|l3cZ=DCNACXFS-4A}v&Y)#(Pfye(r5QP_N6z-RduV} zhB`hdyUs9M0`OMX!I3?Zar_J|F7G4n@O-x~Ygal9T_Ce=g9i3x@cg`_yD)4p2>m)? zhciK+jhtlKMJ9~W3plkSqi1sY@;ePFlz{)21pUVQsGoEs)4%LW)4Vl%I$Kx6k7gd1AMZb3FVoXtT;GZzZhR?=t)Hxpw zpNEK<5&F`dm??2MC`3OzKCQ*u)AI0mczvy=f*ve{{qTLkI!*v-_CSFzDtkRXt*;%} z-Al@}&Q8RTbDv~AEdthLd8YZs_SP~k8T9l$LZQ+VZFe9xYkk$86|?P)(l&C|7NZRb z1VJQo%w@zbFzO(Z(Dk#lpYEV%4i0T;a$ogrP9rjM&s>XfdN7Q9hpPz&<{9J&9A{qP zOh2Ve%6UG~tw}|lje7vRw#)d&*f98hTJl6(H^SweHnOW3Ou><2EcPuQizmS^ALj{C zac#dQ-GGfAiuI6oOaPD#;2b;@Rd+3M_nKB@WK_S3qx|GjS2RubW@Y0rSr{izg84fg z$uD&hsWf5zcl6+-k9;n2gJjbow;OvrT;WTCkXIR)m2%*!(Tojqxlj^JP9*7de>muF zy8G<5P${r!^{~83u_8(QW(M}7K4z)j2QV}V6S=^vIt9UEfsKK?Og)R043fe9NJzjR zWlT6Bz~{$-AnA5Lc>s&>wZ!%HHQ;EaIXU__!Uscmm~kI#Bp<)i=hLuBwNM3`M=3*Z zid{xI`2v64xg3tPAyA>g4qtIMs1z`BSY8D+*D2PG*N~S;@_B-0NDw?V}FIp8Le|$~vj&oOX4!5-3buFs)4^turHp-QTb-(vl>!Zx^N)ku1Mf4bZ(CML;l`aJieA=@o=1LVfmUVqHD!SZ=7O zx>EU`CO@K1y)S8Af49~K#H|vMSl@Z&J+pt*sP{=*&vluEn)Dfq6<1~fYeo%ehk%@0oeesOV^8GQD5I>hqpFNJZQ0~qP! zl-Oc;XKPtvX;DD;SDf_<7@H6-FD@mR(@uPv+&kN=jLv|ODf`;MvkbTl#G7(?((L_a z#qmy@O%3)GJ7qHM4TyqLigB0Igp(pV!u9ptaM;A1NQK*<3m#x#sj`85ZT3H0#ijW` zO2auH!VdtF>AAc?6&%nr4w43vPa%@?4eUVfglruy!#UM9(ZUxcgR^AN2l{|UU$ui9 z#C_VYt2bYh7;Rc`nQUYPM#WTBe)REIJ8uS1 zllHs%>PPE|O4uHF4?CI+ZA^)O?yPIv9%W)L;yr7$T(_?KjyZ@8(hMYxgjNF~fxo3( z#w$x2l%wRq&xM%m>fjDHeMW>goZvOPkt*_=$2F;Sju=P9kLho5| zi&|*v_3Ss9SM6n!J^)ynS=r9%S+uJX-GphnT*fr0B`OKcn{t)vC&0QW@ zMVIxyY6-}K7B5x9qF|yweId}rOIw?H+>Pcd(hw}W`jBYf-E3=1D=RGpe*qi%fD>8f zNrc~M!8kn2W6dq8r}DMckl%ZGzw<-KNuMkNPpRPcUN_2E+9G#=qi!Qoa!53Uvh8B z%4&zWr%oDu*4A!eD~iz5LBZ%aFdqv`b63x|nk4t@Mt{5Az>v3mC#{O_q84a8Q2j;? zuYW&fEZc}kCM1whwNqTwofz^z5IlpMn;H*huj&B3Waxi3RtvM95K%vkPXzX zd=;rPSoUdYEGz4zdH2+6q2u{hbNPhsie8pjQvaL#RK3xw>-nqO*rui?3MQsR#~z5L zf=t?4mP(zL5hU4}&_zJ`aJ|Ts8Mk2upN?QQIG!oyLKJQHXKr_6-1h~cqh92OYKYa^%Vqds=IuZj~vU+CU{UAgp{640>@2X6>>v(^+027G* zFuaA(;>&YuDgl1?#tU2Tke6}oCe*9En>A4IBi0F0kSkB~D-g@e>Es5bw>%)K+4)_H z#|SXJR;nwl(%&PxV|lOGwdpo0r9of)=}hs(M&fI;^Zr4IsN*It;4gz=c&_CM1aCFJv;IjT-DKj{bnzQ+we*yf-+EKM*EkT65DXLU3C=N7c?Bz2 zc&x8Dx0@m{Mi6Z`ESg9D3Y8|(yOVXdPjRZ zXiW^@yS!z4OofhhPcu;Wzf@pD@{vLAYK8{Aeo(|tGkq|dGYxD!WTgmeVw;gxQv`f^ z)X=tiL!v0O1#oe_dlqwn#{N#H>76Vt7j&`qHL7SK_-+A$v~0rpWAF3cEO_?Mua2hK ztZ|pkt&jBdUQ!@G`3;YleZXG*71w{*M>PNwdM@gt;r^Ke^Zmv8vlAc4%|8AqtHfOp z;^9U?5>1nP*$!f{YI85=F39zf4jhJFs@71Z!k~Ogb=CtDwGUYZ=>wbr{9Pe+rcwdm zO0$~W3dhOfmD_fayg{)vKDMvTN=y5;pNiRNzCZwZv%%CYr~MlrPmD5s23{&GJ=&+r zNJliWDDO)nyyFL-9A5Q*IAme5yo=5BUVZWmQFdEX&HR)UFI#2dV*lv8<(n#ICQr+u zDyyZWlBXxSDMb=d)NX5&NbfJ`5+d~-~V--0E%3tzC z33{A%l*1F6SC+!ULPRZB0vD6e`<}(RLQMZ$qHNy#9#~2C3KQOJ3}-2>xdlL!F~{17 z12C5YR9=jTWu{sO2ZV)C7^y{p_s&b~(+c2yS zB6GISZQ+5zblKw6z`9ai^=&KuzCl&s)YQ=*@$ztMT)vCRBxq+uP4NtiSnQc>fz#-4 z2vd*>WG`1Q7^3ixUH>v+jtzG%>E0_XnYL_H$Uh{~lXHf!pWPX^z8JrZu(uR{X2H}F zXUAzb>2dIj#f$g%R~nGa{+GT8txv6ig;M68@9+ zpVu1%!TF&eL})?`fD9k!9hn-6w;jw%_MUfBI{csP?|7eXY_(X)P`uGC~q0jT+Mr@Si)B z#+uS6_P8N74WU5y+Z)SH7-l@k{AZ4N*r>NM;VBS5iIv9$1RWmkNpovk0+RIFtD(8L zRqI}LW)emTq5C$AIL|M`YtGVyz;?=cbZ9Buc3o&;;e&|ouxS@!-8m-Q_U80ttL-xI zJMcA1=qmS8{I(&=3M&MywjCg3)^1CHB*lV9h+--4ZBhduZj0L52C&?va(&8K_)Rn<#m?lnN&jNi8U=#uF#r>M|Y^W~i;nUwA15-?`v?Y@h6S=QYKb+wxtP&@kB66q8FrF8SL zYn_AU17Z2*%(!QCjo#$c@#pPh=!aU*=2PB?9k;K)DLO-Tw(E+BqxF}=G{IQ&sOmO< zEY74}Q6HdCuBXW%Wc5zk^8SXZGB4_#{k>9q(_~Be+qvped9}4Q9h2EmKfSs|jHUMB zaJ#6bjj-&LwzV}~uQA75YrnzU+ctXqX2F7;{^H@J!#jyTl4vFYil@DJKS3`Deb`4d zLtElyPt)OlzVogAX!@M3;Q+wTh4sK#hi5MM9M$1D}2Colf6e%O7+S7jB=SWNO95-*p&g1Dhb8R)dL(%C?H+n<4-7O&Grx9 zirK>X0RU_@Emh^Gl^Wa3=y)Z^-_`dcuW1cfox2~M5nTn7jjLu0)HQGDj@iRb8co}?Bdx@r4@3mr5||OtFh2Hla`UBOqrWB_aus2@$08= z-@*_QKJC?0OZUky#}bK9+Sz|wq*)awPvm1LEu~B3lP@{7J4>*z9qkCl!-&*(Q~jQR zFa>I{fC0hzu+*8<&sgA;!v6reOWj=EZv62b6lWTOfARF@lY(xJi<0*UeZ#c?k|;b! z8}e=ZjNoEn;3jVz()};V<~0+7y6fM13kLyV66ez?b>qNCA3Z%^=Pl+6>|#6Z*ls%B z)E5!&_VEb}_ioP3q)--D9K_hON=NeTVvGB{YS)E{?ig7z9L9opN(y-@6A}N(E!}kp zdMD#|fv^Rx8Y5L;uy70nV3`zt9j!mu`ORalcF=;8*!yf|kvG5P+)?^Rfp8UIVb@)UrN%Ywln lTN3Z{ zLbcR|RY?H=8r)Au-$UNY-SVTItB0M7GXVJH$GUJRP%;cYB_ALW7^ppp7H1aahv?eoFLKKHZT5lk!+q(n@I*hNAX8p^a_xFNv zBo&0n4}M(oCv}|Xz2#Z?0Urww(Us%NWiUTg=J;Atm&Q60L;DDza1dgxk=Uycuj)p-$iNE{ur=t>$Vq@u*y&76WuCE7y@f zmP5iIgqMI?aaNf}%&?qh+y!OHs-?{dLG>L7K`Q*zW+iDXh;YIS(3bOS89QvD;Ds9B ztzZ^EmRB#7R~Dx5{-oCKbgt7OJuThqr(k0syQdZQx~gl*5N}iAAMSHJT%G7 zaSme*j4&oC|H)5KDL==C}YtHESSh?bp0-x9Z`PH0zPjcYU8cQsS*kEoRXm~DPFp;yv z@5&dJ>FMIrzZ6j!&we{BvdH$p9pFQ@A!ESgzt({RBXluwvy2=3;@o0gYh14*hgSjr zius#~%6;p1=g0SEi$RYlAznJg)hu)za?_ag!#kq)W~Wx?rva9Mfd)5)vTFgBEUMuVo+yA9A&0A33i{U? zEl2q8e{vM|00mwISy4D<8yW?k)o%TVbFw<;_2--mm*V*gll6H%hF5FdVLt0WGTM=M z+UTe*gKGWCKB)*i?l!wdrXvo{g5TJq1^>C>Ivc6bJG2mAlGa&7y|>(Io1!=PqTz0$ z&xqW7H^Q7^WX*bI>HKw2ko3st==$;fxxX}VDNdE?5B9G>4i@+m+2K+XvDP)lc8AnN zl@-J81Rn>z-(2eBR4&WIa9k$l>E)U5TuCpVzvKl{05dnY=AS@NQ@SnM6()f$LV~B# ztx1NodEy{ZcHZGO);P-KJWxHKQtGO`X(t6;2-_7b0T`n(fRFA7?XX>Y2?19C+hXA? zgzS|X0%T4Bp61}dkykgr*q!p(Oi|)Jn2@^8(J5r8YjqQ)mGt8M@#BY}*P*`gQeY)} z{?Gjdp^`hY)KrC-^>onT%IBSDT%PY#$4<^f|Ima`gHc~PEts==x3)K-1sMtQ$DB^6v)5nQ8W%!m%izo?`YQ==!8KTd%!yNS&3@5P>2Li zdNFicAm=#$Y?!d~kb5ZgsTk;Xmz$-~R{xd7i_j6m?x zTYSb6+enLmLb%>xeW$o-%kVQya-74yVE@8PtM91k%2&=`P_}HYyoFBvT{=L_PRIS* zW)TH;Dvp}ihw-=tYG4eZKT^sY0K*3N(MX6~C)5b&YlUilReV3Z%@Op#ho_wOVJy9g zRalrD5DdKa(0Os4^Ggz#nVo%)YK}$TZD?P7`m~(oNrupydK+?&M8AUO8*6V(`!3T# zj-7nvrN^RCyU8Yz!}8?mva|2NB~1Kr6Vv(l0PMqc z|9W~2T~m=&RyNPS0)Y)=YNde3q_Gcqxi%p2XCV@Rh8F8S__R#Bgtz*~6WvpkGVv~X zJkQlHWY9tl-Z%%uZRu!6ZNpN)x%L_n$cPQIC4ekE8O*D01q2~rCQq|H%uzrb-BuI? zSQ|4Zp*F~1W%cHH68sCD7Rd2{d2X)Lb@4kdgzi<=Wyh&1$D&{UwMp-6f^wbt;~Hl| zAa7SS%bC)&lcvf6gNpa^S!^?m_}S;8;fZE<-6z9;+a03>XN7IPeQLKb-Sz{8yvF>6 z5?x9+3?D|vahcrOviY=hg0clQu!NDO+c|Y6t3}73Rx7G*mxIQ}TsWtofXuIB@mlT> zr_ta!^-mFXy(#dCOe>Qe71C;MNnN`F+E>I2CT0c6hUL}t3f9teOG84ZAFz$l9(es7(?4J8JehFsoDqvmIdxF$ku ziRqyOYI6*bOdgk?X%aV#4j6=@km(c0{-YBqu#xqfX~y5GX2(8*-)%Tz1_!g?t8Rmg z{5AwFJ!Su_sgjykGs(ky-EJG9_bRM+ugv}N=e!ed9CnOa-xwXQK+o{&vNXwl(m`Gh z-p$rrVo?H=O@%6_$FBmU1(-+s!}6Of2OVTL+tqfZ)giONyA6k{FvCzQ|Kq_owiUaw zJG|->$C(Z4)Z~Ee?X2IxG@LZ$8xnJ?_8yn;pAalNQTe{FdN?NVl7xH@M-wG!M?Kgm zO`kZbj<#$6csC_>_V1{7eri0Ir23> zG=s|s&AE<;eV-d-fR@iKvqt>_*Z=XxCmpSnEd;A(qyv*Vu;~)p-y~U z)s&&O=iR^0m@Pj{ECx?KWxqUr&u@5Mx9m<2)OH#2)X0P3=w&6hMl+UEeWih zxCDTOZN}GD2F(VCQrO(K$7pjT+_Bh{68ruM5$@gd$;b{!K&=Dmi(;~1hypQ0pFU#K zHM9}*Y<{)L5^PeHP`7y(VfD!~#g^XO@wc?g0e}C+-gF0*8RfOiId4Ansrxwdi*@R> z_0NTk-vggHJ%J>M`7!6KcU7U2ro;f?&?s8q@N9INTnB_D%C`Z8(Gt6N7%t8}2 z`Pgk>AxIctS^pdyN{_D6dPLjcg5dh(?2pBBoru025QSWE>9H7blTy`|o3z1j; z_>#sv`wTY|o~_ww=Yj^XQwKw?uDwyqQSmU32S94~Vlr#0(FebCLG2Kf8Q!Y$^jERB zcN=VXzWARX{@zF%Uw_{f`bH59>E>l|?(C|kl>wH1c8o`>zu6KT&J&rUu{8f3w zN@+ZScgEH!?ELl+QjghaRxyC*71+~B#Jidq9a#U|)u>3^tg}eMop)3_$#IZJJGR!r zPAGddzt`fp`~@(K+;Y4oxN z<4l)iBtcp0X&fVZ4ehDuNt3S&nyXF@emAo9y86RRsperoP`C82K(=HWHYHtUAK5c!o}E-JXtvBLDAW}b&MPl%YW zZsi2&(KEZeqz%OGn@7=~&5pQge?G{1nQd<+9rJ+rc|Lq%x_VMaAX9zPpioz03kYpX!|k7Iva@2(SE) zHt?B0nmfyif+@wI{BuvzNcz9-{PS_}wop%j2)V*=?im1e z%OPL*|HTvfuTCQV>s7UUToqcwVxert6{(sSUV@?f(BH8R41)rUFHiL33kkGJK?E;z zVmey&oeXr-{k(|X@}ZKXcTYK2>x|_`?qds$_iv{PR*GO}R0G|K>V+6+_P{FwHN=gD zKsb4@D45h@P%KWy>@dO=>cW}|YPg|Ls#omg&Uo_X&6^nYL3~aAcVsT|;tR0HX|ik6 ze`OzR+J9}#O>GOPo6oj~UBsPmA#`Q9koIYdX_|#Y-?s#;Z=+WCclx>vH8|-T`GSRh z%Zz+eKHJJLyY;6#TR}}H65W{h7rrmWDC1mz!og1aI z0u;fLIsjs{M}I@o_7cC}3>B<7?k_r3fa=I%d{@n;`VD(bq2yx)e0x_veBYIQ^bY)1 zKuu|O&w5JLTwRVfD>DPV!!+rKwo~Smn;wKRD2fss5w%5_tG$PFcJ*&kj1%KTIbv>;kV4V;XU30zKprdZX0(%3in=qMhT$(9Xe$G8g4TV`oEmb)9 zi$uqqI@L^3f7;j_dTn9l>ZptHDc!Q>CL2#DZZl90_F$ZRJPc%??5xFg(Lr!h`tyYu z)!>)r=l2W&FtLrZp$Hq%?A(2KL7Q2?;+z*2`Ay7Y=$DIIccp1oIYJCcz23iG|s z{=n3ter77G_zA7j1dDqb{KL?kS528LD)n;W*U7mChUf@G?7vafC6l_(O}O~4U;{76 z{kecSpC9Y`2-Ocy4M+aanAzM%4;(~5xVE=eT?p;pU7f5l&%o0P2V>7DKWvX>LG!)m z@t{K(^7&XJu@7v3K8!0a-DkhXXJ_@{?{nk8E!22wYhkvf_n1Qz0-t#z`=h!G&<)!N zWGkC@oLTW{gOK^;L2U*y?Kxd|vZ=4bI#s{1(fp@z9a8NyZiaZdip>MgotEO>mA}Xm zb3WxkF1NU^Pl#yLeorRiG^}!TTY9c~!>>@Mm{|_5zW8fZkJP!Ddn5`&>D*(#coeYk zuth7P1GB+`k6U*72tw8uQz!rajoI9!$Uaj2Mfmy+J%>H7UV|5{Ag?q*FZ5eSTByvD z*%tSzi|K{f&PlxYugYM^pR=8kfM$@H&_|>k&LeZ0s|I3wKnLQSH6;l28cExkT#22G zC!OH$7_D?|jZmE(HLbStiTPhSvPR%G7%$3Qb?)`doG@6QhxxwfN{+TebC8^C742#x zKe>`H_4E|=I{LG9u+DF1Yb%SoV`&ah61n`yiEJ|Uq@kB~bFZOZ7Cn5(%vY;^B!@13 zd;Vy-m^)<|W@dONN`P({b$1My%TuNVOX{ZimGYg;eeU{8*=fJ$d<}__>Dm%tIK1Cr z7Rb2pA`XY=5mo;9L3akj#^=*(OrDUw8~a+9A9zKJ(sV^mrhM){*G2!vf6qf*Fod`l z;L-hBs$+FdbSVgcl`A6+zoE@QGXX9{Zf@@JXei%79O(xen|fA0(#6F^uO)dQzy@j- zu!GU?E-v#y=zJsO)exfu)o`yC2q3%^Ep^xhX)QBwqeX)FdV0QsfJ#ppwnwvn4sh_3 z6!k`F``%ZS3gtE;I4FXp#|@EMaa}ykpIc<>&kbMJv@AZDu@+NJ&@BXn(iqd%(&kS0LC$0I?JgBBNe7yneq98SXdoQ@3_ig zcT*>rD$&hMkeV_4DZ}e}t3`teh#tergc3B3m|5xie7z*#i}JUs5cg0HM0d2AMByhA zISn(tlSW=zb(~(oBKnv9{*r+1^54Q)d%msycp2~G4KQ8vX5uAy|Iy)}OEmr#^o5`J znG)xZyxIgilRCgZ869E-dIWges2pNSIBOd389y$142GFvg@N9`AK&`(H|QAQ&2_KV zE(A7@mKnVNIwwqHp0N}E`9%(4?ynL)zK8c&)M)0ah4nWg6r@5>EOH-Nmhk+f(<1)I zAMZo{*|?V-gkb_OqbkQos;a7!mwS_Q+lz-kZg2hAxwtlV;a}PL_*5G}iwCuI5+JxM;b#TBL$<0k&(K%y?PLaHX~hs=)M2I${kPEoo!oy^(=?s@2YUOq`WNKH?V= zd&L2OSP_66aD}Gp{<`wBr&N7F0lty7-V!A_EfmzV+GWG{!bJUuAY=G{k9YqcDDVFV zK>XidjqO#EtKv3WztrwphM~*|lMHG6Knct)fKEnd1DmXkE3}f^?4|X1&SSphhG!BFmOqwQzdiW}H6NQVijXqgvhbynG32P*^KdINd^_lWL9 z0o}mj+iPO40QCd%iW8ZpV}2y+w3oL>C%Xb13Cx}DB-Mfg{$q%UxCnh4@;8o)S0(P* zCgI&l!Go&Pd7)aW21n6zRUvb@4XZ{)qRshk35dO zg9G0|ZzSO>2ZwUo0|NsCejX*%(1QL+aED&`rGH>)Fw%UGx?WlfafdD0DRzlFaGl@f z%vvSc)D1^28RHCK274@40_GB#l9Q{R$SC*ldbq``QU$zoPU#0cZ*DLZ?sD(XrKPP6 zo9pr}`uTJA#53p~?eZqK^6u;=jL~fD_BHH;`4GM`!$q?ijBG7g4X(YIOI__!#oIk< zY#N4|nOGaF`W8^hAWqTi>gqI%jN)<*9dpX7yjrE-BYYSngO=-pP-4BvkdIPs|4%1w ze=t8%1kZ8k&fl7!BMSz*0@p=KE^!qDkhkBf6EUQas`Kg}{Sde6!T*tnRfT|K@BQ6t zo(SY0js&;~mGg759R{h64*vOUBSXizh(Z5QK_q4i>F3LClKieep;z)Q^;(vr~ zRcbt_OKUe@m3S?NO`XKs_i1oxWo7@!8=lX#t+3+9f4#O70c7O5YEh?o&+w;NNx~Qs(e_<8}hifN?z#eh)Wo_U(yhE7Z zoI3CFkV+tQ;`=%o% zKP!v&^f@E967`Avr_CBnnq)69*63w@_1}o3qTRXNESsfo4lt~Jpl(A9 zbz#kW+l_wY$f^Wbr3D7FT5d8c&6`?;LtX}pX`nj1IU5zYm!3f0-)U-TLABqe4G{l@ zC$2ShO6>3Nlax|5e}#uspm$xmthZSv*HJ^n00yj3J0SfCV*V6RLns9q5N%R#sQma- zcVZ;9Hi98%O}E=%H@!?G+3Rl5qK?52H51NT|%Q=rL5{>27lvPJA}W? zMuYzIeEu0C4Q^K9QbO4loj0a=XewDm2s?6D@5qg@AyBD{XA|o$>w{ zaxOvVW%1z+ccGitjH{X|WgBgAj}-!3EMiGlDFxbZq1?#Z__zGTyJ;%#5wi2|Z?cp^ zhUYGAy0kH#h$zToRf2ptI^7#Bly3MZj zf1*RipIaLbe;l)eM?*Ee&AgjR-IfPz&OlnuzQj6=&h1D+DuEy@>h`Ck8t5A6Vk_;k zzcWWyjh*X}ym{#&dCAq=ivxoPAqgk3b^f2xnS%*Zl?1u9RO)m>f`iH z4bRKMoK<7j?rY!}>NK3jJD2d~#%DXB+NtsW<9Wa^6u0b)FtZU6ll;*SB~9;re--~N z$+3L$W_Z=YQ-A3^llBFxtgUxS>lKY*ekAa2JYxJ#Q(F_{z3ymHSBqsn^c+V&fNK)I z16v3wxFqJ3;hu$WWn7<*3Y=iF>mJqa)IP*TEIjo0fcxl`RS@U-Q{LT}YV)~5rT#!T zi6DVw*xpM*pq}M4gO(6ou-)ps-*1dw44!*^`5Z|v2Ds=a5z8YC9DoWpUJtE)Z%S>H zQ5>KUmhP8A`4m$*XrH8Y=fa~>`YV@tO_F-;5LOfV8^jiz$eRhK3{P8tXGAYrx_@sE zQ4;t?>}~YPyRsiY&TjNk(!orYd{z*Czm>t`+Kp)i{&L{^T43nsV4l+7vXjMhZ=%;s z6a3Nwm?D{_RaFD>zz+#`pdMb{mmDO&N>?B;IQ(&xl^KAOu#ek&2KvtN)1#uB@$QWVdgI+CWgH=J4 zA1F!-`P!T^kN0p`KAbqftiZ7#1uhI#KuAFb0CAW)v-I+JjX+B_fF%&_%J9O6M7XNC zr*7hJ>nXw_OSUFF3S|O8YlSk%t%g(OHS+;t4@T+ibF(F$5I2=p{Sm%Q0h)_@l@?4$ z_NV?$VXr$XuSxIzw}+9da1qoG!{V=~rW5 zfqO#|9x^tJc=gcGWv$G6+lnhIe>oe7+7QjS??B;^g#TH?sywDPIdng%CrQjo*4CU_ z)4zE~O{Ao}4m>?QKU)Qp@687t?ON@CsX=QA+S9vQu<(x{=Z zu)A)Y4}U)5?r{91-%+&I+7*7gfx;n@(h*N7O3TW+-RF(bjok^&)$sA=bKhG6D0fdy zRhFQxzFvx-{*ak3f%y+AY*h$BxHOr^VO!-S=q=F5`uK=j|N6qAHG5cAS($#g{12qX zw%7T`O}B-hL7Mmzf3}eMppYR|N)_tFiY8@qoU^pFK>X=Kp}#*rzUENR%*?QGaA2Yg z?8_wPwC9dUVCeM+v$RKXz1Tf3+%|E0s2ytOQJ)?EllZd)e$eg1UhHZFVa6SPbr#iK z3|e#cC0~o`d2y}BG5i+o6WhXNBeMHkgXY*5=-o=Zo~JjFp|GAr!8Q~Tu^?JV{EiI?uyB5w_tISx0~H^I%N>-OjapoIPBhy7 zF^{ExfMnLv3JLXooLrnrY3_QVam65^${6WY{h zhrz`Hqhub8YGmR{;OS_7#aqStmjxOxtWgQ((exxeN*%0r80jIL0(SG*fiTtDqEl90 z?xk`o?$n4-v}&Rf&2(5=Cbx(8$*YY;Ymq%mx2j9t9|uOsBs@wh@RVKKdDd56G@J&A ze#%N;YW2>G2}@6zP7m!GnN+SEF-st#KY~agYQ?ZM9Vt7(=H)WVmIcGhzLbr1t=Z7- z<7!`%nX2X5dWf-k4HBZ6ntcvl|9VTJNC95K7@~Mhn-Z4B%fVViHZ}PtZfp!gK0NBZ z$_hqoX{PE*8CYTO#6Rr^;vEO=o-XPOLY>c(SC4E6(IlsP=mcC`()#=!|A2*Qp!H%#)JU z&+=S3ay(Bwr%LQI1^1i`>EXm~{G)mFwZ43TD>-qPUU_Z?ZTzV=en8ce(hoUD=afpJ zl!x#tSI$l#nYKE)or4Lr4|_DWi}kYex)IZSSc05VoMz9+BBiB7X1ipmD*I%E#mG{h zl4O$*Tl@wST)bM60h~5~KTBB2BCIH%_h^#%;*q2zRY$9}U_5RV&zBS-3wc}>aTHNv z^%fhvi074^)&T^Sud*WT)14lr|6xS}1&=enOJj0ed9N<%Ld|&9%p+K}=f8P3S697t z(N0_%T+O4ct})ulPZiMbPCUUyu`t?hF+Z6P5{oJmWkmnp<<2sOp80=2D1DivmUxJ} z@hC&7XXxUU&0)yn7lbjjQ|1&`@f|w$KYEHt~7&~AtuU% zwD-M}U+JT^Bk_zyg+VI%k)XjoIK^*4c0Yi~=w1#+U9&mMA=})1xfcHLEuwL$L>=H4 zJ~?}F_aXdJ7h%+jQZKI>r)E7o7bNf4cIkxa> zP<2O@_`_nN)g~%grRd?&V74=5|5G33{u`iN{hcQHM4Cjns}zm4OwR`s!Al+z@{HJB zxV$VACheY*d?uQrCGYK>>ZFMMq)oh{jtcK@C1MB(Q^>}?@N4yaEKX6Tl0-&%efbw; z!k^41uaD0T&|i-gJOiTs6H*TqNsg^q%4lzuzi35qRbtrISH0r{-R@8%lD^dyFo~Ih zHg|Jp9@hfwX7J?4F*cBWowZ2%Z0GY6M)G)g9!^)yp@vwfmE>oG;On68Zs%ubygMG& zXzQA=-MtE>QCvc;dMy%iNwB`4;85zLq->1TE0GJS%hKmCVOCb~5Du+czBra@2WaoB zmgee{R}(-O%EQ|zlEz{*Iid;H#Jlj@;3PSt?~(=s{Z`eRN{R|AugqH&=jOA#w&gnl zHXaNqRdermf}{-YKFSqC?<=Aou6+EY^9jw7zp{X*l?SV>{vx&B;!c+tWuVi>^g0*B z3^BlqXU6^~=^qd1b8-D>&Mx|#H?lEFDZO48+rFl+UWE7L*)`d=S#KJvx?kGMi+E=Db<45p1 zI!>;-k&#V__|1hilkiP`kq^uO7N*1NA+g~b?y*3{J1_m*fNhc`5Bf%rNO z&(^LaP5WNC**j(lGoJ@aWT7ASb!9GDnhI!vp4|P*_*yK`@&6sm4{Q%$>cWO-)~e@- z2f(&42D27U-98VjZzRC|S-rISc3jz!Qb0`$VJ$GgtD?BH{p|2dI(H0C8yU(6p5bI? zzk)`A`U-Y5P~P`+>~(V9tBED2dE^8}A9B8WV&o^HMYk<;b8BmTvhWp=YC&aoL8TpV z|D9caK=CDMZfq%Bo@R@br9;ZrZeKxZ5U~I9{L!@6`^{l%_L3+zvFx=HGpuA$YqUtN z%k?ijmad3p0M9xR>ud6R`94|W5**JH`VKkTRI-PLo=LBzxD&>NMc-!TuH1}xOg(}E zqzALtiGz|QwuZRq^P-lrje)MC)+>S4JneR!Yj}pUe^SslFv>($E`ook%UtZ}Bx<_# zI8)te)pP*Z&}!Xs4%!QozoqQ>pV1EHfVG&rv_0MRoj7ExqItL0ss*k#rzM${_~QG} z0C#%8`~`TU-jTUS%JT=-Z8^WUk97ZW$Fn<%w(BBin>sz%jq7E~lTH$~0QJt2ZXdw7 z>)Gd~<)#)wCo~v!UauZ0)i{C_DJ8DvmB}7MoEbqWdm-9b>rW(=v=GPaWs6Zkb4NEN z<*3p~WYO(%Z48Tn@9XF78YeZ02bLxA}X}MnAlT5aV`^uZqe*AKMI={$VWLJpI29ON0fOeI! z@*ur@4_4SH$%Ar4wlarjTkcyKFHj=bK6&IPI7fZBeVh^Mbcv4@Bmpx!+b65|)24jk z2SD!kD#{pcjUzl0YTBP%8JHoCBu(E!Mh8E3B=*K&$V9NNE=TV1ImR_DBA_JWJ&RYH zLfl>_KMkmlAI2i!&tp&UYB%uL<76Os(q_}Q=At2Y4=E=w-;M-gakU6o3Tr3H(SwRt z^>=Ed-O5tjLY$sqBR1YRPG9se^~1=BvSwdC+wFMc{_CGbsbfV+q8y1uj3ZUtcP@(BC%rZCcCsnp+^4ES=u^xDM!<#x z+uLS#1-(;7M+$z$7T|MKvhbnjA4!1x&YFtR`#@ZgF0?s*-9&nP@4@zyjz4*%G{N`2L$##Sq3c>dl@U z$wp~svs&J5P%)}(_Q_F@R+syOaxp>1`euycm_RdLDpw?%bQN}S6ZW9d2X51kj|WVX zFGl|hp(_26x4sxB`@z(ljht5~6?r|&^v^Gx$)+2vuO&D^J_`l} zU5v59ASAfPw)AM{4jMiUux;@h1;_h{M7x$=nh1CJs0#5X7GgIVRZI&{V4ckxA`p? ze!`$MkJvQpU+&v6gpp^MVgOzn%vuB3kk}ta?>$)%Ad(G~+|1GJguv0kDr$N2_ShPp z-$`3Lsb~@iHqV~PEAUMIsp?O|{|GBrpnfGY85fy4D{eR&QiY`PaJVxU5%L}(>iWrl zIo9=NWRI}O7&7-`?{&G$uGQ`HFG7#X&<7Hq=SZ4HTtzBgT+&Ydo{4SUNVhGo4tqI| zZ`nl@4&0jr!dC^*;e*7FCo`eONO-_8$nmCl{3C}T5O8o1W6a`sgx>f#U*TIEd-Q(h zZ-f?L#m%p0R3+o%yfMhlKY~3nGsMj^2>*7&ZK54+kp|Mfj~k?xbQw68UdoCOEq9zp zkI97DR7?r}BT;7~r9r@H&rAmmro#cVt24hvLwifwfUqY~ zPE2aFB^`ThwT9%pNuB3mxE?BxCG;du1B!d#ALK$AIs!j7c+;e0(j*+JV7+k@V*Hi+ z-RQeYY*?Xol2GkEI37Yl8|SKUB0G335X|KjXu-k?U2M3pZ31_us$WEZ`oT!9*4GQ%$jc>9|?5!6Le7WuN3s^fr}Mzve@xGIF-r z738s4CvE%)RkmJA_1$dkQtf|*EfA$iP3T)prD)P%l4la@G5QWOJzmor8w8eV7Z+NC zy~4~@!v-_f{2Co4_hiv8pJf#gnD{8o|2et5_u(%#_$4)%-(9PXT5uMm3Dkigh~^AV zpv8RjWs!}&$P=g3wT`-11ue5C;n(| zu3`BMW$l3>H0GOUD{@o$S&XC*klN>RyeC=J55r%8DA%=j%CIAux{#Pm4{V|RicpFn zcwwkvWu!6(vO?~Ce4+fn(AWv(*=gtYz#M$VneU?oZXJ|{=Doa45^gJq7KfaO2KN>V zi-Zq5QUQI>O_N>vC9G1j`oPN*i5grOX=n4f3l7&+C3E;WZ2CkCT5>JYyvuJT+m{h{ zQrbjn3)|s_-(k@B5{d;0u#rGVf8K^sJ_Ojz&X#AQ@I2`_M&CZ>snLV|PrB#1L{-Q5 zA`8*c>MvgKavjR+$f+2*I7ogyI_v|J3d#|oh&v%c=qi5bD))gbni#!gUqfne`UZwC zu~LJ$NTk>H5i>x5yyMi)+SxeDRT~1)P;-8*dYhyZ&DMF`7t3sh7eM(IbqYs!MpC}- zB*9ijZNf@%HC0PFaRs@ZS+tCY0VG6tlyl+41sxLCPF0D7uQWal{1?(;t^ zHWuB21e+;tEa1nipCrCbjwU9m-SlkD+Rgx2kEk>suQ~C$8teXshs7*BJO%vg>yd2q zndNBkYZ?mJD~e!kIm60(QMy-zVJkKBANpKyg$8&midgi*yNj8@DuuE>`cGLYKLTJ} z0+nzOddDMPIoKum6S5++o>tCoPsK9g@W9V2ENln%&{eIjcWZ{2^E28}{1uQKgN97T1dpaSPHeri){ zROV##57l2ekkwm?Jt{(1dqp@Z$-}g}p7)bp9=#tX*?8k+nW#XiF)X}K+i^b>Fo1DW zswR%kg+m_yi>cAju?EQ~t}dM~%jP?G4%_0P1LUB1EHs)6KnP+h2qGwpeG`qm+l8x3 zwGv|fr#OffE$8 z|5ZQK<&3S03P`0D;{T8JMgK<@=)&5SA~uSGpRd7xW_3>Vx6G$BxfHxVDE{7y0$007 zwDq^NPw-S=|Cg$Q|q)j{Tilj5au8bS7Axpc4dyjt|jjcnxK zq|)PrNN~`2&$o!pT6Lyg8D}K+054rwDsx_ge~DDcIk{Tj+tIi=ik%ETOmGPUV*Gck zSoQW5zMD=^jVvJq{~xXIxu5nP&hSIXG!Ye9TFc|&=Upl+=OF|i&nugtsY%kIr&1c6 zkeG*H9Fo2c42TwD)M-WEI3IgV{`hs&CZ3Fn>SVbLusTdHB_|5<7sL9=||ZKl0u0tc(|iVLSR0hEe`O zKLrM%!Qo9W2xWh6N`W#uz%T#Y%G`eWw0YWTv3i!rSSw{MnKdmrST&wS{2`fG=61-b z+<&UF39Fb3a*3An(&*uL;c_YaH%Y1BT^$&&s7O=Hxg(h#^w{oTWmWN=h zMyscUpyFj@H~Y71y5snbRf{7OD~AEHNwHlQ6lFkKMm^8XO{3(mrBRx0FH&wk0mEq> z`>tGvd&#Af;eVh04OA2n6jSQG{Tx)=h{#3dsYKFEM{1z?eBvwiI2N-hkF~=n$`(A5 zB{2I+XD64r1{OO84g75WlT%N-^*;8k5~}qXs0I}1cGRG{qerpK6aT6P-a}g;dZL64TFkEmhYOB z<+DEf(u84Uvg=w_lNiws>pR>FmnfSM?t$Px4Oh?&|lB@PCRV;CP@f8CdU z*)JWvxntCycYur2lt0+VZ_9y>y{fn>gyx&c(E1!}K!*`Gb#%()>no1{v{p4nd7S}V zIl9mOh$R{=EC^v^>z4$!6|f^#MNb!V1+9+*#@(-zX+(7*crc6`#YjgeJ*z+Hxge71 zpGGYU;Nv;_WX#__OV5n~x8rMBVMswv8e9HwlRq(5PuI%=LLqM04fMoT;`IYnNWt~m zod&lBDLpeG8rs*X@F5IZ6-9E2TCBd};@%-{bDGJQLLUi*at-#Ux}rW%hdvg25_1;a zz?!Z*MuI{`YXW!PE6hi~C3L@MU7wH6i*t7|tA5LP>eyOJEc;{HuJ}~~-)JTD0eO4r z6MXL%M|x`K;-Z8iP9d8ev$nSQP*O~?{x&>mjXdlPLI$zRrt-{$;8-d-IHRCXK%mKK z&mAhT%+I!zQrz0v7tBD#3XHCK+LeuP=442G&F-xvFd!tz2o zA)zS%jBGSan&2@YMwOpMYN86$ws<+F8e)W>O#D1t{4AZ}UXAr&vJ3-`ms2s8N*+}< zCjmM85?`1`(n*Q`Wq-B0t#3o`tQfpV)?eXB2H^ZWIg~w; zlqB(jlMKA;iumL0wYKtDnkG2&dipU$^D4Vqexj(1ZQ$(dxa z%ps%QNHZ5n5{%y_wf5fF)`bCr&~z*`a066C_X87-8Ulr=FkdjDN)i+5X%ZZ&q%Z;as@T_*a^-L#pq4qf zK6y=*c;uAC0U7Ld=1w32ImG~o`2SjnB*7^L+0b8)3a}$6jC>^~b&la-Zhx&VdEN7% zAi$|phfjQA90}{gfTK+?UsPgEn&+|ZKR_D3UJys=+p(~-EMcy}*b&A|uCF$$esAOSr7ya?W9aM9{torPOvW!i-T47* zq?P%ULkpH9zrpbyV$F!WH_#maDCLypYeDD!BXMUR3)(3(GSXkYvwyInR!h>BDZolZ z%fyLJe;{U8{gx8yi_F0-?s) zj{PMLba9cqhVL;CRrJu0F@fdyi470U-E{wk7{6n!dQ*1=D5|7L^9Rc=Of>^dzrN6Y z>Qu8>`;E%a?il78&8ma?D{za2BG|h!j|kI#VE9hn%LXx^$A2!JBV%nJ8g2c1d7%vk znrDt*yi!0gZe4-qwZ#HePvFXeXAj3%;4o2=G13YqO+nO*S&ln)=x9JXA-`^tnxp-81r=cMU@JR#!SZ)gnRQN zn!Y~>l#fYKZ~%xj+0k&M6|*MI>S9wTZiKvDjGW(Zo-O)|&8_2V4}1}&i_HIH_flAk z;g`?4{2R=6txoFeE%nI#$CN8Qk`QfRF51K@mID51DFZJkv8|)yFDGW-H&e8%>+Kyx zOM`k%H8##wt_C`-8Om&BU0=OuLLdL)Ukdk+8)X6>H(db@y9#jyD)?VuB^Hgd56XL{ zvX~4#?@NDGv23?{;4N5prkaAgydzC1I=Ks40@c^l?-&TQWiR_`;n?RzH5xC+?hx7) z&4(Z$0>gf-6FLm&lLNrPGcTzx89Rkg0cq3>6zw`MUy+`SH{0j!m-|}XCs6M$cS?po zW&uEN(Va}{(}!)&aDi-*nek$y#7l?sa&fluM)4uT zB~Ss%-1hmoN2Li(aiX)+XedV}^5kNLj{d&{V{ny76!xVyVUaVt{Xr8txVEe^%qJy?O_R@|Kyr?>pYfZ9d&6(L}&)GBA-us#ZBXXC`+=@Bzwg99aGW;R#8VFg8 zTZJ>A3L}p{0pK!_uA398 zygU7!Gp&YHb0<=ohvDyz4=|yqDO@s%)8c5XDwZeuUU_=@JO$y*DKH~GzaZhMR72%G zZIpMHZQ85pJH`^G2J1uHqsh!1%Qy%;#}Gw@b5lL)J#SHcQPTeYKEylmzirHi-2O18 z{>*jc4+m#~?o!(StpDnjULjd<0*7~%Q=*j5$L`KTP%Bg7FQ$Y+RzG4_MlODg*EGHp z+{TjrY{Pq9;TPhPgdKV!6?cDu{wB?GW=^(fg0FaOCG<9hY{%hhYAr_>iG38(&U*CuiWY3t*2B9!@V7P^w zQMVuQiW3G&Nz!yt(~<=)mXd!F4&z8jh0J4VXP%>&llc4O_FN&|_aOVSGr)UtEJm=Q zgT=%&@-qF+U1p$ntd`2c|pO)?EUw|*&{t-(0YVF zj_7v%IRpEdps9(^H5DpEje3b}{58vm@BSJt2$;SbXeCd4~@<|li-;xK%-tgNU&!Q)1|^%bHv`B1%;mX`+vp!@3X(m`mGROhj_ zk+)JX-0bNIcH)537q+3Q9~+ObKyGUqm9;jr&Ce8oQJ*i8UrGF)p`eDv%R1X_4wii| zJ>UEWa*qTi=vVn~w_7p=g)-TKyx2GXn3mDy^t!S$-=u2Ryl9L(=9f)@2xFXw1pJX( z6zd)1pd95O{;-^Kr}3@wzMnPCb7hRqPp-xs>hrxoypw`x!S*E(eAi@X)&BC8OyLp* z@NvhW+E@gE>p(#mvF>hb*BbOAUFg5K@jTAtRx*4tUyRN!Ji`nG!zGrlL;=0qYV@zv z>qQsKAe1_B^g-6CUu8k<86i%)>bX_{KGG5MG)@=rX+=>=xE7>|R6TzG>C+>8uI_Se z{Jx}USHr*nuK+MBT&$#E9;Bl=Z&54U+e#lGA~721%9;Gsc4E=!U#XdfO=6--#d{v( z<->Ez4>N%80AxMtLLziVjB^#RDEg3`HG$Wh(DswU;-nmlngKIYT=*U#6Cv08yT8#S zUrBCg^Af1kyLu;*4m}xyhHtT1=(zFVb=HLbs!{p(LGrY)5nU1x2ho~Bz%8^I+A_GV zup{@*?z!@O28=}XL0>Me{>e4?d-^u9ouecR(E+rHno}d&?2D;|P%D4pG6?vFi&Xwf zmOk)|Qkz$qCDI1o<+CJevB77*v){4?5Dg8;BJcu}c2)yGD2XWFW6fNAbs{UuxJ5j{Cv`CQOSkOBeO_B2pDg1U* zK;{#HPqRKCcJLg-tt7-+jh%I}ZLP!utktp zgcgV|x*|#h3(Z0_JA22J?ADi1IM(06%WY4K>mpg<88PWoH*^^X5r6;S)*MEijRcJE znLpEnC;Hn>DQ@uCH1#2$N7v|58;XdQ6+qTc=8x66b`vHx< zF9s@l2+F&>vUuh-y1zfzr!({P!&`#w^17mid_5^(_cg%+RQX*}RUY~Lx!Wl_0I|JJZ_LGD&01dHf7y~2|WuTvD0ZSWyMWOw}& z9iB&5lOk)*85=z}NhnkBEK7u`BRLg@X$`$L0sAjskrgkf3|wishQq6|6dpf&GENl| zFyBpXK;+JAhVZTeQKu?_nA1o9q0*s?$f2lRdA*$N{ifA}AaxXceW|g9GlPPv>;A0F za&qJfDL zAI|`HxWSI^Tvvj;vl&s?EA08iKA<-t`aS}g@rBt z3F(EP-M-((AJ9?TT+9R38EjAH%Y-pl10rxVAz!O*Zla+H+i!@Kjp5e#Mv`{#PNFWt z&1kMGEK0O)PGYknM6?RQPc`M;tWiyCBFa_quGYK4VnjNLAQFFr8D+TubYDSHgLp&v zp+dQ0Y?}Ws2#@jq$@@Tq!=Yoz3+sw=JA&?`f5$YUV~!tN{}q)YQAlD8Gf8rp9K21|Lrq5Ur`~CA34@kUg%O3{)^BB9 zXOI8`#F&4q1?*Zr?I%87CJT`N2Yg16e;rziBW%lf9|$hizA8=COHR%?XmGOick>e!uW5e$O z2sN!oV?e%c;PdkKVc_DzjszefA(8X{o0oM)hc9i@85Ats8FVs@T)S&HbX6@8^RBuG zgM6=W`o9xIP8-Wx$1;x&6>6Eyi;%ChEZFD&o8EkHEr2>Zt7ATqgm6%RI#x%-7mtk$ zU|X4mq7=h(z7Dgw&Jl8$=X~fN6ewyVaCW&FrvfXdJA71h)Kx^8`Wj7caBt4 zCgtQDNX2p;xsSYUki&?926jJy^6^SYmX;+9Y5d8f?P}%defXyWhC6LuN$3bj0Bl=) zY>*ga^P0@zbpL`;$qd&Nr_2Ju{lwc&6;W}#V#54DcMu%SrS5VX@* z9071C5%g8#5vwW8e%w$G^3;X_0PKJh)%!|6%YOLyM)gx;&mQ_XyfiwoSdf<@u%K#% ziSdBxV=_39((bWFU2Y0-le_$pH}f_~skSLtM9eT#SXp5L_B@CgkSpN0r4TOBoDGkRsk zuo+|hjD&A8kMIvRW1Q0ykegM-8Z`O{k(YA{<*qV_nSO4Ofx)|=WxS86c&KFI_jEu zR!apfO>K|M^yMtQ+u2ZH<7voRG(OVVygej|-P0QImc=Wi{~O4|0~sLW*-n@9D_dKb zB$bsg>xh95WSQ2uugB;t(Go%0HP#p-u7>cJ#%1$T<7p%nCbF!I($eDKK=Qo1IG!73 zaUM^^%;FtisZWrQzGF4>ZV&le%})hsL}~O16Y8akjx;!@Ls*tNUzR$3B)tR|c4w~? z`M$@^0v#DpN#vs=AG!Hka(ogBl!$&nk11ZZdQ{mU^DmK2)zrE3dR4x|0&_PX>J#sh zt;)npq&`ZSMc&r6G?X<_qL^>)61dw^q$c3QoOo?VmDp3{-^OTX<09z-Z>p)aY4e{LDf^Byg%DQl@0&0tlIG0%O&AE1U_W z&23{=7#BEXhH^jZ#UTXv-r<7#kLAAa?h%~<8MU;(28=9_js5cS5|j7{yq^;9O?Y~R zO{ZCZ&WM&^5%)P$7kB?tfKQK0g~%Lr&e_VXKUrQh$dh|zQL z34N$lR8)4)L>mRE*?gSF167t@p|7GFMyUtq$ubv@e#hWhoQ>xT<{s0+X?U1#mngFd zFGi|Vo(WuE*?Dj?*GR~9n3G7apSrIbW?i%gR}b;Iw45z=&aX0sPTw_E6*zMl|aU5~m@xY|Dqw^iu^Hr|>LOar$??1=-J(^O0#roa zq8zw!vOts;g|I32xpiT6?jh(wl?Bh=M8NA&hCG~2#;OlHRD(Tvut z965KldON&L_DU=5ny1ZrFd;$z!Y4mfN00HMo22@Q%M*lQBw2#iOSV@^K$}_tECSoVvxBAy zbM8@R!_~jU`2H|A&4sp!IE)b14Sd0h`FI3`H68)@)U#0g>VN$73q4@tdgX^*Qb>-W zYx;+nOqc+yKOe9bOWoUNWa7Snf%7_10jNp8*p-CCDj93&Tu8s_nK=2CkxzHndTRnn zJM*f8wLFpGA!uH5Ut#Rqt$ojjxv8qF8%G+2IYElmMdo0%8P$;W3tYIZx_avNLq7IK zeU#%VW(G3*6Td0?@Lb+EWGc&v^6y^ulI3xL?*LOEX*o_4jh|nq-9(c)KseO=KRFx< z;tp8Zq$&HP3w2y{pKvVOOi5_YqP1{*C5wm zP9eWGoQMg^&3%2vW`YW#xfW34P#8g_G({)~=Qzl%L4f!wp6{93MKiT02NCE>fFRJH+WE9{^3M+BkU{ z(~|~dIA>y1Af311yM8?}XYW;Csld_Lk}m_ldQ29gd&4v_D?8yU+voWcC%=8HMPk$e zy|A&D+rALM4~Cb!3M{}36^)71@-l()*!NB|?-8f6HKpU695kqv^n3_8 zs1n0OPcP=|DM$(`MJHFO%r?qS=?zR*1OE1q>{puccMc`aV)LcsykYq!^Fx{bgxP!b z=w|ok`KcSWCoGhf{svZ`%PaQhci^Y(x((Zb)St&i z2U@04{Br)W$-|0IC4(W3E>WW9Ay?< zgbbHxoRFP2+4*ir4!DG{foh%#-}z3_*#}HYuBqS$mHHRUZo}(M?@%X1u`~p{=-HvN z(xms~3-`eV!q7S~uXE>ZJKZBtgE`7FG`KL*wec!22*N@q)`QSf_M4X&yySg&65;TC zT}vxhkNGhdSym{-pK6So5&5Yv2(%oxb&6!R)$GY*E4VI9Q^3J`@|*PT<@a-%y(YGL zJ;z~~ft1CGv*1(r22U^`CCYm>WAXi7<)8Z9%3f_{6j@ugh9={`npfUPW5Unf2C`X` zHu^KKe4jTN)HulX4oqC@ZhoH7tNk#R@|rxoZaTD?u(^>LP>Kg$b`=6VCV_{dM$pem zwED|;bnG}ru2p-v*99p1Ilu-8=Lh|Exh1Mt$j%?u2Hb5b?$`IWoL;f6WgoQ7j_bb8 z5dF-o&8R>t2ZpPCE!&{Ob4!vtv8$;puk%o8T_g*4gbjlqVj>6}20HJBv1!Am=cCHB zWaik+`3wU$TKmoQmmmE1osU=7I%^)jjwHB4CFR(dp{8_FZDi08e_~Kj1f7`U>vbSQ zm<&BLaK=#U!-hd8x*S>p;sBkYK4KwV;abGj>1hidL*5s`jK;I-wGUvl{SSD3dPCNm z&EJiHFpA4`sJ_W26$5G!I?%6Enc&i#z`)_Pe;Ga0iFEAy?=icgZOz@+hTvx(bylK| zjt;2BeVW5Rw7w039O<~kMFN_izc+S9LVhKpVP>Y}=EjX$TRz{Pza-Mo!Zv-ScVdcf z29l$$OBqfpOhpS9u#WT|?l}MjGb6b6L3*3bqT*tb3kTS@7taU5V>JAE>jb~6MLn=X z!DPXr$B+#RqMzksLU_g9y_j&auy*wZ?CvezDDhgi&)Y9eeN7A%S=&=vGsNmz$ZhD1 z8V}Kn^A0Q-8b|$W(RhiBUX7qvC1idV5VY(2(vp7OD}M=yglQyi5hr39J`s8h z&^(duN-d1=U^TQ3DWa?oXIF+k$TY}QM5-PQ8iE~V_cZqWu<#x>mL+>V$>PKt`z3Jm zuhX=6E?nG3f1XQS%|<2BfU3@Pur!7TM1jf9_X_V1kdw|39y>#~zwFo-T}VkMhlCZ@ zynN%MOi(YBqKW=3tEi}0U#JsV-`-AMIX_x@Lr2pflYar$BH%~)-gYYVM@VsWmP4y8W6yU1;p*8R&mAu4_WN#h88v^##5tUQ z=XrNJI@ecPs%(`WUY$igGH%iJaz(kKDvvBJ#M@-_P_9lwozU016T5C7UAq8WMh zpIlgDArV|p0My^N_=4mdMCiRIpUP6c56z`7KhxROZ3!GuxHDfE zi&36_6CNF)q;ZrZBa;81POUQ=aeDU9ZsKR`1LYyR!1V`hBnn&V&5>Kc;y)VL{*>nr z;}??@se7sJ=A~#x{Q|hinFQ2;wlSoxMCAwR`p5#`X(&$bIR8LUm76=6J-Jf}kUaKM z5qq?3NRHHo^n^tUd{n6_&%?N8f=XRI6G+j8faV796@n0oxaDkulOTj-SHCxb$qt=pEAYHUn56FqKYA zMW6TRzB)+@AC1xC6zv_4B^#ac`i09&;YnBdkpZT6lEC5)`(KUrz`{0rmv-fMH<@6u zReY7>+W;?A`95rHj{s%eFOt^nwzi}uk(8lucP;q28y$oPT8`K{Qj|02V@dX#@;+7v z`^6mj>1{{PKAHk zb-i#A6KT&$N6;LUk^{VQWOf^<;g7RI!T-Zoo=;QyR9+s{N#E8vt~#vsu2G-Lp)MU> zzl4k8z7^j=X7Rz%b*S{2C&z;OvZRj6+&1w%vA5at)oZ%y!_jT`eiA}tlC{0k#}9mP z=H=_&#j_9dGX1FA4J=jy*>=vqELOTQqO1-S6qT*stMr{;oAW8`-9N>|Cie60r^tpN z=*-Ugb(_jCzIRP_1=EM&OL?WPUw;!mz6#iYgEc#LjzfFyX<|Xly%X8%I}cYFq_F#Q6US#gm*o7lmQzs9ilbc~ApK*XHf&@-13*7!$H>8oD>+w$-51@r z*R8nft4RW-7ig&>YK2`6h3&p9pEh%RM;W& z2v9-CV4vYFS{`S*3NocjWyTLFl$hGORAdX=I#rs(kZ>U*G$)tJsKW4Uw6@XK(Se&5 zN3G6}_m5$Gu?W9hr8zB~%}&r}T%Z-j?z=JBx03FR97Y-J)99A-Me-N;ALIM1HStst z9*yg0ab)O-h*A+fe*G!=i3y~SVtmEyXT^5{@V(9NqoWkm!+sU)%<(_Z|EBX=fM#C%O%WvBwnXSbvR z*^33E4+aLaOG|Q}P8KU8HSbTqndkh0%i35SK9>?Fg9A%G0ChC_vXC{G-4j3dr49@e{vNdNq#FvjVlhPek!~o%Kx4eGRVA& z1IDJyhEtSq;@YBNtYK+Uye!aSR2LT)msCWgj>s4be<1zJB~9q7nN&z;0h91j@?luv z)R#Zegp$OQ)!+j5#@tu zQTO-&x2dY6j|JF$S)p2gz&%rYerx0ViaqE+(N{s=*f*-l4jM@L$fhELgW4^=y!`z9 z*UjN~MMNRc5NSB~OXj%ZQY6OqbtnTRln|%o&M%U7WB6NT`W2@gYEg0VEO$T6U?|rW z*d&@BY3AbC690wd)s2`*J4OvuGjezCT`VGVT7MP2S9ssSx7~m45qib%bm(;z*nfZ- z54elCl2zwA_M+Zu!YO-GQo08w{OYn+t-pt-EC|5CNsyW!!XF^7*?v%JXNVLu?7vLN zvgcG(j?ORJAMCTDc_FtdwRdq~5f;WZ09Vg;tQovTnt@-U8YlDeJ3??8owvRI|I^K4 z_nZ=n(5R@WVf)zs5glbEdk%sf{K~8Ne=6))U-oHx%x-)H@AR-8DtQ--=0?``rnK+) zXIWY?)$JW0_l4A8t9`=M5kCs5zECFE8X0os0xoirF z?x9guMyu<5ue+PTHiYglf%h#wL%c;gbhxN-qT7h?`cp&Z{bhvvqxLIDEB83sop`)} z3D^4LvPDTn+_8M+)iUkhA5+a!5R{hZEtXC%6xtEARag;PZw9J)k4Z209hBPWips>r z`>%F(sO>c?gKkt>`a4Pk$9>NQ3s(ai2G&_h_a59paoxSf`UP|@G7z&*&kdSD{PQn5 z&~Ru2m!F~e8b-z_I;d}JXV|@l*wz^JRf!Fd+Dr+sm{9Qe$P}Lq7(8Gl$|O%JOVe(( z2)wj?dE$<31QE{ai}USI$Gw5l#{qrE0X0lEGrx8y){XR%aV4%29(e~fUz**1wVBiK zBh6t}Z#?;WXL}D~=d^ZXhE_hdm?k|sen-@egsn7M0oM6^-_Ec<$$y29fFM^Al|gaV zI9P?mzj)aqK6dy3%&1Dp>e=)}k=cWAi;5h=Tv$k6N{~6Ps(Wa+UO_Il!rY5V)L;zN zO?r4w!689m8`o)5FP2|mP5;B@MdVOxiKrmHS+SeNAYb^oO-H}*DdAnn_(U#>x>A|O zz~*{X=`Uo9NrY2!J9~s?C^MJERKFNw+A7l`x@Y2(f1sy0jWbP_BGT-;v_~IV!n<-mfl7N&lmpcsSj~AW@6nTmP)_5`WqO^u&Fd6o1pyhaSs$-KK!f{$-p zQ8|!mIF!LlHZ?gk3mMBrnMs9Sg4RFfYDUN3O@=#cP?a}!$z=KAsRLfZw5munsqf{Q z{*yheT^XKE7ZUs}t_Mvb{evI-A0a*qCt`aPeztXVu4OI~<_*B)wEP^-wfcsoopI!O z%NMo}p^|X9LBh>sUL3Q$qwT;+QSGByYZ>z;xlw-wV}De%u-!u7RUYiFA`+a9t{MRN zA+j48lTBA>#pqH1?t&>41U+=Kk^LGbi*;siBUf$&{(A#Cf;%^Nk)d3Kg>)@f?$DW+ z0@?GF+6Wg6WY}xwBc&0rZ}hKK0@q??Uh)>K(fMPF@3@xylrntFdBnir%%vYKyeAQm zd^l;=;E2c7Ui|PnQ$O^E{`CAK7|sO@XgcPErwU&~qvV4=?d(3{L@#8{>5`)#Vtj3a zoZ^_rFbe5~aHPziD4-KCzK#iyFyPB=JJk+d-fchl_0hX>iV26USp3C~Y{H}xI*eA> zEhBplG3G}@BmOB4S0XH};lI1p(K&y+{wDDYCZu9^pnlNZ8Oq953e-c?l3ZB-se(g1 ze#-*C7inn@Jdj>Pr4wPimMZcfr+mO;a*iRXJ_hvno+>6+Jr4NRW`kkEc^sjGWF|FT zCa9lR^ADKwNSf1M3Y@X-Vm20lgiD->99ot(qmfO}Su-SmK2@4O;F>rf_Kr;fy68R8 zWZ0#o+2@Roof9*DDHH@Z{3Z4351*mu9?~Xok>YO!LNBzZ9CyUg49#|jv$BVukUTh? zUJxpuo_T|g`jSInrAMU ze2Mz1D!V_H-oM_?;un`16c=|=m(H$y>7C!K>m@UNoZj^iL+fQKsC6=W#vN9t*~pej zcx14cID?9{r5hIApM;Gd)7JSJo{355zhO_hzBbg=E$&_I$Ks{78cp4S-Zh?Z842W( znTjfbZ5NIG^eZ?Nx^T5f@C+m*j-?|m9P%5~%^0)5#S*3NI+Ym5q-eF|S((?u@)n5w zBZc23=>D0NDvIF9I3xTzuBhhqT=S>`Ce-Xd%6mX}j-)qJ)zlU&CJJ;+Ofli2?H|&j zEbZ0cR~bCDO1=)^okk~vy2)!VQCvi1kd}3CS)IAzpPwIlLLz@PGVIdo-sFR^9Fm-d z#4MG_JdZQlQ+{CFW~zW-?CeTQkCg2;=RBsl(%)V{y`js8TDv(dU4CUv@ds(FIDap< zKr_4mB@GRx&I`WpoUb&DuR6oXPF-ycPrSZYqw`c%^=R{aZvG71I60WPkxdB~uYMLeH|veTyrx%jdF{%Mr{v?t3IiE`&YYqb-l+YO?ky0AfwEtV)s^{zc7SH0 zE_USM6Wkk{?mt~ME)AJ454x=Q%y0A0@1A!&%g7wbnyB4!wG$yfI+~M~^yu;RH>7#j z?_aSEPxt$a?dRiKhwCZ66!E1AEMBjQ{i*ykl?y{bx*q+>{D*P>t>}=RG|xi?aP_NF zNX8mSQzrQ<9leIHqiv_M>dQheQZ_8b5w>$e56f*hH%tDY8ayWkb%i|Bh(jQIw)K6+ z?n3%PsJqIh829-m()c12XX5s4`pMrV3NyOb>|xhp_rVr)Ghnol>GuVAGWzqM(tFVq zZ$FpdMh9trtFPJGf@BB+IkNn4K6oeo06#-TSI<^BbHog=vqFVtRh=ERS>BkVx_68Y zKA$qMRDEAJOmyC3lDts%bT%4)=>%eF1e;$DyP5^|GQ{0DY zD`L56;D2*UN>$TpquY^8T4UPsy$#25%|>}03^qJ^tEJ{-NZKze$8 z!Fm~RX`6>G^T&%_8ryLo&>Ll{xx4fKKFa@{p(S1EfJPoIA1_N9l038px-z-GxtTrj z8XOub4pb)Ne@*s6eC`gJIr%#ug7+pHdWgQHKTJ&yof;#_C1|eKO ztoFh_)@3bSx&f%AL#S)6pVuzbOL``U)U-sR$ounDXI3rgXV1!=k|M_I>Ba~DlF~li zX}WX?euLNB?OQ_=rXo{1UnbLraQ#f5n~=Z6sd!6|qKif4QB70%8BaCNPR< zGYJEsFji0M(u#^k`@5qL=b1xvov}bT!IYTEB}M^*Jwi7qIPcARj>6Q^Z)#qN2tmRN z)cnZli@}YZlHI7VHUQu{&L)m&E7g(i|GF{KZfmD_J0HE9#ejpSqYGzt6$iHEFNr7J z3+z#s-*dYHf}g@Lq97DBns-V12P?PPBAq=Mag_!#xbdOBJ8~kt6cF^P zi&%k@l$Og0yLoa1NYVfUa}(qL`p%hN`|A5S;?gil^=m=TNE{}Cd?QL(EN$h5hb2(M|>~!>W`J3TrJ~6m8b)a^3o1eRW=Lt zbS*n$<6}>qbDu}qg{h@ak!IWf8usiQ^&MZCt^14hyJvm4kCZl+PJ26ez0m^$sQ|UL z*ZdcsLL6f--VRr$<_gLQg*R!%tu*zAe6!2aPOAsN}oQ6X?D{hIwnv;Wo$8avb0cJg6| zW^C{B^pS21k{g^9`)!stE%z|u7jczqq>gPAWtc~cYdgarOBg>Nbyt4{rgXH(kF_6F z%gt*qG&UzdLU*&)*pW#4hr%qUy9gE>r@LgJOBKNzgJ-2q!WHI``j*A&0j(3;f2}@C z|J>A}z=`CG<2&QqJLt6E1>iGii~T9$9jrf{G(8qh&$#O)rcZR$bHj~!*~<#zHrV)dv1x zLupJUaLLf>q=4G+-QNa>QiYGRgs_Pn%VX)M9G+j-eNd)#ND}k#a>pCjErhYfjH#kW=L!x@>^V1Q@zvqd*kw#B^x{8Ch9` z#>PgIS8UAp&bBKJ7H}((_s_wfd|M_2iuvDjR4Pr$7PR%@M;xi3^VIyEd9{Hk1)~ou zoir1;Anfp|LWgB=e|8hge<6kG9Y8?;AiS5))rMZfHh%#{^T+_3AhN`6yl;;lrqa)C zP3)ovq+~e4c3ja*y5#N{@Ru^W5Mfb?>GWEl4LBd1@{F)4>QzbZ3N#W19KS{A3%=J- z$gBtxv@%=wZ4bDW557PX z&E5jq%T~uECbGh_!QlRgFeEfYR=zwYn^@+yLj@}fWnJh z<|!)BX=Fn1$EYw;Qc{nLbP4a*Ymp_lo5f7T242ai&Lkhb4<80oS=3Oi0s7592B(3q zo>Co+rY8+rpA9XEFYgP2@5JilzN&rl zTg?k7c9|4hu0$rjGpVCWp7qj#XLXJInlB46m-HOO(Th%5I6YA z!Dt9y|*}$>bSey3PYQ>O%Y)6z;RNQyqnIBzgFtQH+i5%5q zq6`b~c`5`it}W8_U+PXLJAqOilMX0a{S@#?d>t+=RVKLm_TOD zLvZ0SWK&ICK`)pF)O&)u*)z?sy!m?w#2c9_6U=0={$=+SD6Qr3Ni0gJG36P62nKr2 z<3NvAb>D>`gVE&T=`AUo5bqM!Ar4Z&6P6G&xNd&m$_rbdQ3l5n&yzpxM-5dx`5@LFJ+06%$W~g*QVFtdXp{N|M zm~e$C5&9)GLx)>yxpA?I@D0cZ_t_J<*L_*B%0R^KxN^*+eZvTMx*J>%Y&4pDMhs@C zIRx!*;uZwiekmL@_y!zVjO%!A;$YQ!A6*8WS`7-l7^Fl0@tE1Z((Nups zh??7Pt|(3TpQ;z*T!II43wXPKPXTQDgW>GXBHd0cus{D!spIDT?JQSiY9v9|ofnd{EE zWHSUZpTF*LGZdfy&=XQ=@}E|gI~LkLVmW3@Ut(AIn|-++OvfjRQPIN?_Z4ZHbmMkh zKHoWHxfv}4%7gX_c_PXCz<);+H8gP8Gfl_b=wIBhqu%h|aZZ)Al;$tBeu$h-VEHSb zDn$F-u~k{xgK1^lDa|3Q+IFNuxOboMJe+4&F63tSI}kuE_DOXotM6*My=Lb7xyJ?Q z*qp1>)4G&g(zid<@#Up_@LHPDPeGfn_GbW{cUdt(qArzm!v%=ka#!?&Pt2_UH4eF+ z-kSW9vt6=lN=eP0_g@O}%fN^q-ke}OS3eq)^c18oXcU5CX!)Bmx*k-WeSefdW;5&Q zp<71>+r_2vlT;B~d)5ou>}d%Awldt!;p3vOL^KIemlh;YyLTk!JCOpL;yR46wJYK z%U)XHHj;XE$B_;3`!k4wB+JzOT^*pa;RslHfPHDyzK#kf756$As zR%ad_f0TrWOl|O(ogaF2fuCP;t{maOa*)R3ssz50Jp8hk3Y_nWP%4F4$Lr>p(>Q4h;}C>rH8seiqjbr& ztD-f`i~-bnt3zveL&O35I4CW>F$BvK!H@}tedA42W8Xx=A=ju3 z3wAMjVGYdLvK?qgyuaYJ_%~;k;sA_`YX4~noJPtEPLg<;+8Q&20I!+Ezds25R04x0 zVY4n|CB^QTB^#I}RQKJ2rcSQ6ZW}dyNN;eRQJP6UIT+2F>uLb38}Wq0RHE=DExv#h zW_CZl@uBtc@9NyF5352HJdyvC2guGv>v5 z0xt>drj^>edgwI~E+Wg2KARK8Sfg+GgKyFt5HmVlF@eEEcjZWe@;C{uj5!Dj=96{h zyFtO;F~`xFu^7Z_Qmi-rNOb;!@633mi34o0xFA*xmoIfOC_t|Le#ZiHxWomg|K(z+ zWKYN5wwE%L(3x_uZtvKaNU4@i703sy>-Zzx^?4ig$F^;E{#*eAL6&3j?^bf2Z4hB9 zojTUWA)*Smztx723tR&eVT&w!%?`vAnd3?OKQ|rd12#$8mwVK1yE#{S&k$JSIk%@? z9JOL0pALK3gSw7wsAdys2#H}7Z1JN4MFkkJd4Gc!P$Ii zY%NtR^t?zPsa^IujZn^85{8XTqAVZj^epym zzWmp0_~{J%U;csf2Rh_^ABADOS%~qE2`B!i+YPNwyv|( znZOIsO@0rhU888XKuE%WmlJsy}st(8wrNO2qkH zd&rQ_WsffM@)O+bs%IfsGx2>ka&J%Q6vjKj&{0=;+t9Z7Gd9?FUa|$5%j$xZq2<*L z{7^p1`R|m0J(@xA#Sfp7|C(fLVks)~_p%>d5$4JOl$DCan1c<*aQ>2cIIh-K=FxxR zfqp|L4OE1ZFb7YBwmM#3l|Iles>?7%nkpll+f!gfi;NMmGpXJNG_)7?i@ig$KMZb~ zp?e8mt#ESir7dq|r}`uz>htQWG6*Vr`PfoXXx*5a${%mxuctanT~Rl$2(6r^(yk%N zRg)W}+b$%T4RZS>&yC=36i2P6lFD&GM2N#+NoW7mylb*Cyaj%(&<3M@bP;UuuodKN zqp)+tlZal-WUVKXA$f?;(r!%R>$(12;<5*XT2?`joQzPPw+I|CW zvX&c^n!7!0VR?ame2PjvM5qdUbk-#bVI~GAb?or|fYh(Pp@S{UK?Qk=dkzedXEX7o z3<}%eBPSyJ`P=r7tVoChh_<#0JXx`Q*hLi!-c_b&RQJh8@4 z+Ck9^W9rM-tWKXS?`6l8S3w9(UgpQC5tcOs@(hvhiHDT>R}qe{u~(H8Xzv=>s}5ne zvNSDUXn6!xYkbgo66V3h_{QmuCF)rnJS|^=t;)V#)jhSFF<+997oi3&g2@3IQXTKI zKTy|Ju&|}I;E}o?>@#1L^M6s0RHo{Z-lP$#i}|93ybSe~#`>mgK8(2XRA5{etegze zE~!;2*?#|*ytCB7cHg5)bsYF{p{JXN{yNNqm%1D3Vi~F>{X*QtTLw*&<`V$o9+c<4 z$(n~(pJdTVvXdy6F%iZ$07;Ve#-b46S!n( z_a=HFWkx&EumvABfQK>zg4l5SbGLAbmmL{q=Z>piEAvvNVD#;m3QHx6wTrR|&%8g@ zc6`{8t1klrygOKW$s#a+0m6r*85q7AzdP6ZC-nHsSzJLbD5&WB%(~GU9#H_x3sQb< zWFE0q(#`?2H#dJe6r2o?X*x0?L+gWL_(%mS^YNG?(l4wAx6g2%&>b7oX8yg|dHA|b zAZhYs=WVZC4v}VBL&ayZw^m@}{ zO;h%F4-zRbbmMY0On-l>C+(goiIGAE0+7aU(kHM)Pn8NU!)g$J8Du-Qb4~jUz|sGE z7P355WB;;M|INUOc@SBwGbdE8`@op`1#6bmT||;MUgv1cJG;U zj2k1pIhQ?;_;SMEuiQeciq(MFB17S}7JZ4qlm5&Up=c@;o8<7;KHe&1Vf+NF6AE`aEjahvN33%(_?WwZlR72k$=QAY?ZZgtoBxFp@ zH58$Z*5)z7yR{OCOX@`!$GZbDvSlt?k@m6616eXMHwCM`da0$ zF`oj`>-lugO$lHZ8PT5ocmC-Y;xckk@H#-tAnMsD!+*J_s_{uk`!_$lFy;4Gdl+9g zxarXQ^E;1BmD_fu8HQB6W#E0n<9R0L)ZSyeb8*tr$jCVo!BQJDcJOuW3%Ikq+txe$ zjDm9w&3K$-bag^Ovd6Gy8^VA1!bu{baB({>{uzLjjMt?{`f@Maak!=ZU1L47)|xH* zsi*d=4DNFEN>;AK0GPZ_9-^BEQ>v;AQ3|a|8Fe7bX+lCn9J9Y z{Xd)1UH={igwOGiR?)`itSk%P%9FfU(j)vqx;Ob1`l;yZ_d^3$xhD*9pgzbZ2ygAO z1<(Aj))4~TI2im~V%O#$GhH}Dap*Co#!+SX;;OXyNZEV=psYtIdikTZvfmRvI5-$a z?MilwWftAa;m^o`rDT@)Zj>hH2oD{^@wz*QFoZ|y6uO_MlfQfEWBG>`K}OF}+YDgt zcq#9|CZlzViY5G~#8orHilf{TIdoOa?bqzzBZy=z71s)Y$#eb#*f&sIMJ;vj9bz!} zy>wVl=k(5Vi;L(EQ-IWGFams4!gLq~a=W_jTBL?W5;M_(9uNRnb>bWd47>Fcr#New zErj2xigrx740uWX*|$d4+7TRgq8BbUL)&yhC=e?ePRZZwn%QuCe|T)o9}rkuJ?aiD zUt`Xd0dr8o7d5uVbC)+|`%w4-N0jPio6rrhUZhDi%tW z*p`RIz8qmS61uCvcu{er==c+<@`%Xkt~KO)##^k~S|rCfL*x3GZ89e1F-zdi*Q!h9 z#K`|s*Hr+;5j5+=9fDheTX1&^?h*(D2^u^|f&~ulaCZm}hm(*HEQFwkTOdGicXvPF zxO+Lm4dvmem8ldFMfA{bH|4TwKdo-)(ksOniLLJMm5ENA{aX1t!pv&VoC` z%h4y`V5daJBD-s@q=ew4vNE<2CHWateYI~UZs24YHV`US>F^HCiSb?t1(c>dU>VbG z-P%nn%_Ilr_x2tdlz|1$bzh2BBoKc7QarTJH1Aw8v=7i^k*eF}t*S<)cPE!$HXRva zb#{^dTW$#){QW7t6`3zA{JC|%qbNR7(w?KtWO97`g{vzs5mEhlPSiEr%;Bwp|70*b zAJPo%^X5%Yv^O_LE%PEtCn8ZbVFc1sm8goz=x&W=-9={HD&WS;Ucm^um`Emva^D|_V>o~f<+a;lE5_QV8i6$80=Xa43#WMR{Htf+^wt@= zHZjibzBZceO5dj|3s-ml&Ybc0|MC zHZ5(dz65<_=j3;0CK@BMeJ~7?$cu0v?A9wX9%1@*K((X=;Np6G(=@Q+PO#P)ib0d8 z_6=3SdT5BkNp>JNYn63{Y|k0L>KyFn^-TQ|sr&LJ86b^qpuxNvMM?ZravWlRLZ%=j zlzLst;DmyG{C;AGxxyh?#@M|IKW0#_!Gl-O&ZE?cwmMIRA=(+ebDY0+b}p{ROaen1 zg;OOcYCP(PjyP!Gw1C%kK+oLO0rv>)tiMp`T`5tDD|)b8NLZt zkY|tR*|{5CM!Z}WlU-e=`SmcI%_WgF$*$hztG1w(GJzK(C(Xt)1R1fh94P0oIa=Hx zkJz1AgHj)~yu86!MZWFZw}^INaeZ27S;+8j(~Gz{EpdZbUPRm{uJDuaNGP9kfq0R@ zyYjXmhh(7^u@HD#kjw4KvazvoN?x9}l@-HzR{KCWI9=j35XQl6l5E%D&Ft79r4m$a z!h;H^MA6j(Z#^!wFCK!=*3So$p2dUK55GOA{E3eX*8kmzP;7DH+Q6v{xhSLJhj73? zJ5mqPn#3e?&O4`BV4)31q?(Dn8aj{`dt=Z_cCVpxXI1vq1yc^E)y^!t@ z{pK?C22);kbaIx$&piDrr{|JE zH}(j5*Nm0&2@M;^^5eXvs{|akemBj6N#HkMHbJNQR|&;!Y%$6y)9ya&)rkZF@#h!A zFHfVXJOB(L;(u;Y&WDT)&WFsskymxxdg0--0gTA-`YyB#zSBJ#F}{( z0mW)=Ji82m4FtnB8SHOgi@l2QZUQ!;plrvD-dG*D6XoGbU>qj$DM#=jqY9mYfw_6y z;xR+Y*)0_$wmb-a0u_qe*Rh0Ya}e7GS+r8WESa(`3eZ%e!Q;OX=5|Mq{`qc0?1A~j zT-2gN7qcK3usnSco^|brsgBwy(s~@Vo$)-6=7Gv!6~g6r80FQqN8{T92O5?F5rdt+ zfd54wXTZ~=D1tH*iP0o&z+WF>v`0(r(XSY%FAKn1@7ul*miyONQs|%6BWOaGhJZpS z(JDIpTo^J4hOgk{BYVuh*xt2iqDUiKia6CtTi@bAOi_@M2czsqT|@ zQm8tkdiX3wsuY|`9v+7)a)zmDxi@OcLZWKP=k~SwXo&RuW%{!_eRNcvX^%Vi#j!rs z<1q!tPKu%3OK}XL78GeHdxb?W-Whz`^~S#|0}!>$#NzJCEN>N3(WcHOdXBq zu6Yihar)voo=PxXPsG3+b6C`8=Mkv&$aQsS@}wNAoCTFhy;P`vPO{(+GbtjS6qN~= zGjj2mV>=xzET*dG{oE9O@He^vku#c*>&rpn{(Ps#wBqH=5u3j2I%=!_@~|M0j6lMhrr z)-J+YKOjcV%!*Cn9C4NlCeLgRw(w-{vf4*L!np^*3}nJvhk*ZPN!XOM%$>f5h2wRE zxQ$c+QSwvP=0nbUxogn=zQDW(2b=Fo?%WWr-t8*an+KdD$f>2*eqLR zD1ScY+p+B)_lxOsR<#7C3JyrMZ_TEUv=k6_-FtGl2=l( z%ok3zl`+m^=T z^lSGrAs4-V{!Qlvo8onqcaKlVC7ayQ0buY)flbfjeCv9$gE-(R1@Q@IHW7>hLanItn zMc2#hIw@{0AdYu;+;?M-%Ceb7LJz2#EH9yJ@h=K$G#*~fS%)D%y_2NR|!?u>OctIxNaOJ>D!$Rzs@ReSsT!>uvkGQD-xCU^#pyxX2P z+;@YakxC&bvv)!r>)KF|uV{WioFHl}ZSJOQj|Gt`9f@)j;}!Ce2PV|S$VcEqMcAWg zT5*Q9ky@Bg&J3!q=~8H4^iPr&UQahSBR9Ai?S}y`Yd6Gt#OyB|E#LT{-$}NmGlWCU z1S>Tt1@UAC9&V^pBtwxpHs)#YdyNWkmPm^9>bAfd_8RLb15t=#;BIs*-{OULDFy~g z&kr=ctk*-NOEmgL;0Cj$ni}+i>;{I7G21^)t zuToX4UXVUm7vv3NK*R_oK@Zv2LCyLnUj9!>s<+k20S)U=X~ye&z;ccU48soYuTdsc8f7|;}%2h z?586powdwA#D9-9vs`aouURwYjC$O`zLqh3Um`ttl!YtP0+SQSC?38yT#Cw5 z)xqZ+kZ=?qlK9-qk=2Xu$0N4qohxCq+mQUFr6BUvoYj4~pR!D14VF29qH-zqR_^2I zxHz4;-BynJSXd(DMLLeMmVABy|63@&gQ~f<;-*`VL_c5&SVJMe%gAc=T3(IobQYS6 z{Pal5x5F4;^=3B)b>VIY>jbQuQh~R9spA;usyA@_z8b6`JziIEsD$^{i<-T)ehF}g zreZ1V63~Fq*v5MDJj;&|>Rk}lc<^?kU@+@^!(naEZOuaStmO8c`3mtu`>j@;op-Es zwJcPEY?NQY$=X7?O!q_l-GJT0ZmaYrLg3EaS^#uMf|N>leI}v?kzaOaMTLpx zu;J&zat_^ugJWlJK3sNzkfc2*nzYcpSgiWFWct`4$ z@K(4<3jgMmJ_QZl=|L$seKfk*&OC`1JIIOV{59?O(IID@zvoa2Z3s&n@->At_>ZLI zCFt%kRy3?e8X^7gYU87~?5fl$>o})voJSW;UUEYzMfBp5!{gcZfX=L7+p!B*_1!`| z*p_+8`&bTu@)R%gYmVfxVf!THqUBrOPvdyK`(l9!y>9`5{SUgpNl#E3c`)4^Fm-V! zmUv_~sqxstA*_>juf-@uxH)JG`<8<`%aWh=Z~VUc2PUm#*Uc@o%S9e`-&{KlZzy=Q z$(H(%0|Y1~>TUnfaC4S_v4fyqSxE`sNhe$J=5ycMWOKsKC4uQkz>JCP4uR1uE6=1teIUtcdfSkAMC!ywDn!0}-d~k5+~# zb@z2L0Ny-+mJNOgB5iBiiv?yQ_uA2m9GBIY%QZ?+xA&*Vx2}&&m6E~2A@; z=Q*b5C7bJ@hIHpjX=Fe0 zz=>oP*^-aIbCtSkBC#1*w9361<{1AmTU6msRFa&mTJ)slqS~Yt1~~^st-q&c z*7oCe8t~gjKjB?FOA8Z$C#;R!7Ckv5NPXGL^So!4k+3QF)Chk^F5335yz_gEaj#!Q z7J2YjxpwS2bp_UL7LCcH>fcL#eU!e>uk-1p&;DbiT*m{Lt8!ycl2@FB#iSGdLisfk5dT z(}F&tWZ5J~^h)t|y3V?Ck2aUw*{)YSaN-iNe_U4 z`A<76;2w2B&|Abwdkx$AYL&ItqtKX)L*0U5?c{w%E^iC+eBj+8zEV_M*F*?EeGX80nwIO1;Yr@CNL6uqCr-^`vk-1-Rl8XFmD zZ_DHSBu-vIyh&A|_FxFrHZHud;(gKwpT81j!)P&uPYa#B3(T3-VRDWO@2U{QZly1l z35lP9c*F8!i6IG_@Ok>Hg+9S{KQyCC1$j`8$}I%bruGo~W;~U#F;xv-wJSgX2)+bj zkzJ(fD3T#N?%L5Ck!ZS+SEHwtZ9?QJz2HnG3Q$Oq(Zijy|MQk>3z)M%%Ct+5gKHyE zjT6&x*3f*UaEt6S-QCgB{jibXweR49G?+Haif1?=k_&OHR`-1w*TO7LiAa3+LzogD zooWdB%In1u{$L^K+j8}1BG;0Z9ExGi=x^1fCtnch**klG^36(jK5Z&R7(xz#Pv4Ox z_M(uzA2h26UOAmgy*Zs_CH5N$fVE`Kz7E{=hzB23)CR6@AVb^3fdO2*B-O_!wDe9a zSdEJ-#@lCaXC3?UAEM6`aW1xd5T~_8;*mYzE$m>J`&2Ta56{FK zf82e35@{($fW|X*!TlxPDgvW{nc2GSCzYZhb7R1(GCkKwj0P928qV52DG^CQpo&Pi zGCTKc$Bp7SQS&%tYO-HeeYIEK?bAXiTrNIiYeZ#xZ7Se8l=8Yv$%l>2sOCk)E!YQGU_C6?No@XR?etO?#4& zruruL#!n%9zw$!3d1=z8|8zrfOG`$(d>R3{yn-|6w$2@rp`_z5eB&Qdme_Xn(i(iQ z?oycbi0h?UfZ;#34W8OY$?Ste^~a$XX-)(_Q+J^?uM3~f>V+YhB=T>|XBW(E2C&Cg zpb>RG1!r?{lwRXH@9}u8cl<7?CbA?;R#jn0pR`{}L+9;Q!l8TbHvTgCUuw3<9N;E{ zvh@j~sJ6W&6ppG$VsnTl<`sKB_ngSUM00cXamP87cyP_g4fn%xbfrf7p{zFDk~#$& zPy_HolNVJBW&A#@CG=<{-O@EzWBQZ&5Z)Q@cVJxQ^KXR=ZX`mBA~EK9`rH=9R2qZP zWqoDh?;^|kYF&iB%{1PLsV3Tz?8WWjlV|tE2gdXQj6Le!#Jc_YS7o)HFG-LScmFm;?41G=fz$_FU9k_9deJezJi3czl`N7y$`CNJF1Y=5Ueh}_E zAG1*dF;h`f!#?zrKO+0k$$oOeB9NLQYfR!*O$UOyygg-9Y*yQfDt)|Gz z(cslD1@<#}`+j|M9H-4R0Rz&BxZx^n&L+O31qGd2wTWRAZE~qNk)ubHwWB>#A6g#K zEfJU|FW}3xQZ%~6!~W6RBuXa4n$9DKz&!jd@G2k;?cK$>LCtVwDUNdRf~?fc;{;ks;!CVxi|%cYIFzj-7yhCK}A2Oo0xkqH~7M+c1#i~{oPjL<#^fd`?EgC z_=E%J<*b8MGP3(&(oki!<2c>BS9Sfd(tS=^Wu4JI2oI&!*6RisamvX?91Xbl3xzab zvrmfJzAM1Q#uyHe{wCum^h=OFWDv$Sdq~FNHrEj>^W^~Bn4Dz@ z@8jxb$JHqHtuW`2MnwZb2^DkFJ$o*G>I{ZQRTdX_1h2DJ4NfOH#%GjZ0KCa(?ZsjB z?E2C2l%J;?%8MfT^6bq%**hYH$?xbVds~*jas|22M{B91GrfxbPWAH*_ohZ^c5CZ0 zq2da*^v|Wsry;F)T(GE53RYThYtSra8QIz>MEVlJPysrLXnnF08^QE*V+}bV4E@yiJ}^(F{&~=F-q4_2lX!WpET3NPf0?eIX3Ee`slIVFXW5 zHJ)Wm!gk!>3{0hfI+_{I3hIxhNzmq2*9$HIqartWQOAq1$rc*D2|A|1)6>Km>-Y;2 z?lvzG=H^ODu?hO!OYRti2@jKI9qmV*9c;O;$Q2k26}YFcnMJhY+ncgxc=$FxuS#{} zSfZb{WF~Z)fu%Pvh0^Wt@QEwn8KL{`3%0kVMJnGnhL1w?W$zf*e!3yjFcABl&O6qsy!ht9~w;H?ERHC7w`MCHH92`tYNVo=@=ee4; zW)+l5%7?uAcxp2)xG6ALRaQM3VP0K=j8D9kL%f<1bZ%OwE?djd8`D=@jr&0)>e!OG z`n1_+z^`URx45yp^Sj9@!{CQx@X3$$q+^h%(cv_#THgo15_HL%d!}yqEhwoXUhQRt zUZq_R4;KgKc=>4e`{Gc%853!}d?vfnsPSJ<&2KX=+{-Xp1GlgNC3p#pjEaGd(l;ws zWZ$rqU5dU-Dep5?lIH*H0IZQA4lZ1=vG3)`z_DQm=r4*5QnIq5`|Q?7azxm!p~@#B zuBgHDvG6hYTB-Jtf&aAk-I?l_b~KXe(BCp|x~+|kBSsxtt6|~q0QQLkoS{vq0Rx;k z{?iAdU_N{W!GozWFW4#Mb0p#NQ!&5?~NQdfjd4&S(Z~S!(AGK=C z>hyO3GXuU)K#c?KufUx0#4ibG7xr~zK%Kh^r5ps|e)QtI9+kL_zwmd7&a+ZfKAO)I zEE*SfA8sgQo?}oKlFBb$k+5-&c9)E@oLP$9cu)U0eNIa6+*mZd;cX*;Xn2Vm#EWOt z8d;>N$#vhdFSFA5H$Tnrwr?4iEu(Te+v(@BkFJvZPPV@qJG^Pb1GCUeU_C2^$mSjG zbSaZZ0p-zOYK+3u`*SK?U?u@I9ev2DKAinu?+k{0DZR1rC}MXe0%(4E zs;7$6hTwjR3N7@b%k9ni>+A?Z$F#Sl_$e zMvqyPrexkQkyyO;>W|hd+Fh_Mu}|N-C8h4i30&AeKJHze(DBo#dk45x6c4FWMQCWy z=GZ=YmZxH)!DcE@*tgE8?nAj3SUYD z0tAga5{HYnwN%+RgY))IuI<+XCI2x+v60fCTSKIJ`X&4UHVZkk63>DJ%=GpPMz+08odfs-DVs IC7ZDS0*&aZ7XSbN diff --git a/tgstation.dme b/tgstation.dme index 80899402df4..4bef2290fbb 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -77,6 +77,7 @@ #define FILE_DIR "code/modules" #define FILE_DIR "code/modules/admin" #define FILE_DIR "code/modules/admin/verbs" +#define FILE_DIR "code/modules/food" #define FILE_DIR "code/modules/mob" #define FILE_DIR "code/modules/mob/dead" #define FILE_DIR "code/modules/mob/dead/observer" @@ -176,6 +177,7 @@ #include "code\datums\mixed.dm" #include "code\datums\modules.dm" #include "code\datums\organs.dm" +#include "code\datums\recipe.dm" #include "code\datums\shuttle_controller.dm" #include "code\datums\spell.dm" #include "code\datums\sun.dm" @@ -621,6 +623,8 @@ #include "code\modules\admin\verbs\striketeam.dm" #include "code\modules\admin\verbs\ticklag.dm" #include "code\modules\admin\verbs\tripAI.dm" +#include "code\modules\food\food.dm" +#include "code\modules\food\recipes_microwave.dm" #include "code\modules\mob\login.dm" #include "code\modules\mob\logout.dm" #include "code\modules\mob\mob.dm"