From 9f889925cf34a4e3c7648b15283f29ab7925543c Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 24 Jun 2024 19:58:07 -0400 Subject: [PATCH] Keg based brewing system (#5421) * untested but for show * craftable bottler + storge ui fixes also a few mix fixes with the system itself * whisky and balancing * distillation -> fermentation also more repices and deeper level fermentation * fixes * complie * more fixes:tm: * Update brewing.dm * lots of fixes * Apply suggestions from code review Co-authored-by: benj8560 * K5's rework done before health scanners how quaint! * fixes * fixes * real fixes * more brewing tweaks * more framework more repices more more more * salt * 36 repices in total --------- Co-authored-by: benj8560 --- code/datums/craft/recipes/misc.dm | 11 +- code/datums/craft/recipes/storage.dm | 11 + code/game/machinery/biogenerator.dm | 2 + code/game/machinery/kitchen/smartfridge.dm | 3 +- code/modules/hydroponics/grown.dm | 66 +-- code/modules/hydroponics/grown_predefined.dm | 74 ++- code/modules/hydroponics/seed_datums.dm | 4 + .../reagent_containers/food/drinks/bottle.dm | 10 +- icons/obj/drinks.dmi | Bin 142825 -> 145613 bytes icons/obj/objects.dmi | Bin 275886 -> 277169 bytes modular_sojourn/bottler.dm | 54 +++ modular_sojourn/brewing.dm | 246 ++++++++++ modular_sojourn/brewing_datums.dm | 434 ++++++++++++++++++ modular_sojourn/fencer.dmi | Bin 1005 -> 2309 bytes modular_sojourn/guild_rep.dmi | Bin 0 -> 6803 bytes sojourn-station.dme | 3 + 16 files changed, 860 insertions(+), 58 deletions(-) create mode 100644 modular_sojourn/bottler.dm create mode 100644 modular_sojourn/brewing.dm create mode 100644 modular_sojourn/brewing_datums.dm create mode 100644 modular_sojourn/guild_rep.dmi diff --git a/code/datums/craft/recipes/misc.dm b/code/datums/craft/recipes/misc.dm index bae70b6e7eb..f64c586af48 100644 --- a/code/datums/craft/recipes/misc.dm +++ b/code/datums/craft/recipes/misc.dm @@ -102,7 +102,7 @@ category = "Consumer" time = 200 related_stats = list(STAT_MEC) - icon_state = "device" + icon_state = "electronic" /datum/craft_recipe/consumer/toaster @@ -115,3 +115,12 @@ list(QUALITY_SCREW_DRIVING, 35, "time" = 170), list(QUALITY_PRYING, 35, "time" = 170) ) + +/datum/craft_recipe/consumer/bottling_kit + name = "bottling kit" + result = /obj/item/bottle_kit + steps = list( + list(CRAFT_MATERIAL, 10, MATERIAL_WOOD), + list(CRAFT_MATERIAL, 10, MATERIAL_GLASS), + list(/obj/item/circuitboard/autolathe, 1) + ) \ No newline at end of file diff --git a/code/datums/craft/recipes/storage.dm b/code/datums/craft/recipes/storage.dm index 43ee41041db..72652a4d646 100644 --- a/code/datums/craft/recipes/storage.dm +++ b/code/datums/craft/recipes/storage.dm @@ -303,3 +303,14 @@ list(CRAFT_MATERIAL, 25, MATERIAL_STEEL), list(QUALITY_WELDING, 10, 20) ) + +//Techinally it stores produce +/datum/craft_recipe/storage/fermentation_keg + name = "fermentation keg" + result = /obj/structure/fermentation_keg + related_stats = list(STAT_MEC) + icon_state = "woodworking" + steps = list( + list(CRAFT_MATERIAL, 10, MATERIAL_WOOD), + list(/obj/item/stack/rods, 2) + ) diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm index 6416001e3b8..9738c924898 100644 --- a/code/game/machinery/biogenerator.dm +++ b/code/game/machinery/biogenerator.dm @@ -122,6 +122,7 @@ else if(processing) to_chat(user, SPAN_NOTICE("\The [src] is currently processing.")) else if(istype(I, /obj/item/storage/bag/produce)) + var/obj/item/storage/bag/produce/produce_bag = I var/i = 0 for(var/obj/item/reagent_containers/food/snacks/grown/G in contents) i++ @@ -136,6 +137,7 @@ break if(i < 10) to_chat(user, SPAN_NOTICE("You empty \the [I] into \the [src].")) + produce_bag.refresh_all() else if(!istype(I, /obj/item/reagent_containers/food/snacks/grown)) diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index de16ee34808..73f05d4fbf0 100755 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -352,6 +352,7 @@ else P.remove_from_storage(G,src) plants_loaded++ + P.refresh_all() if(plants_loaded) update_icon() user.visible_message(SPAN_NOTICE("[user] loads \the [src] with \the [P]."), SPAN_NOTICE("You load \the [src] with \the [P].")) @@ -391,7 +392,7 @@ data["emagged"] = emagged data["secure"] = is_secure data["allowed"] = allowed(user) - + var/list/items = list() for(var/obj/item/I in src) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 0c3400d9f48..77ebf6640d5 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -324,60 +324,18 @@ qdel(src) /obj/item/reagent_containers/food/snacks/grown/pre_pickup(mob/user) - if(!seed) - return FALSE - if(seed.get_trait(TRAIT_STINGS)) - var/mob/living/carbon/human/H = user - if(istype(H) && H.gloves) - return ..() - if(!reagents || reagents.total_volume <= 0) - return ..() - reagents.remove_any(rand(1,3)) //Todo, make it actually remove the reagents the seed uses. - seed.do_thorns(H,src) - seed.do_sting(H,src,pick(BP_R_ARM, BP_L_ARM)) - return ..() - -// Predefined types for placing on the map. -/obj/plant_spawner - name = "plant spawner" - var/seedtype = "ambrosia" //default to ambrosia for roach taming -/* -/obj/plant_spawner/Initialize(mapload) - var/datum/seed/S = plant_controller.seeds[seedtype] - S.harvest(loc,0,0,1) - spawn(1) if(src) qdel(src) -*/ -/obj/plant_spawner/New() - addtimer(CALLBACK(src, /obj/plant_spawner/proc/spawn_growth), 2) - -/obj/plant_spawner/proc/spawn_growth() - var/datum/seed/S = plant_controller.seeds[seedtype] - S.harvest(loc,force_amount = 1, harvest_sample = FALSE) - spawn(5) if(src) qdel(src) - -/obj/plant_spawner/libertycap - seedtype = "libertycap" - -/obj/plant_spawner/ambrosiavulgaris - seedtype = "ambrosia" - -/obj/plant_spawner/grass - seedtype = "grass" - -/obj/plant_spawner/wheat - seedtype = "wheat" - -/obj/plant_spawner/poppy - seedtype = "poppies" - -/obj/plant_spawner/sunflower - seedtype = "sunflowers" - -/obj/plant_spawner/harebells - seedtype = "harebells" - -/obj/plant_spawner/towercaps - seedtype = "towercap" + if(!seed) + return FALSE + if(seed.get_trait(TRAIT_STINGS)) + var/mob/living/carbon/human/H = user + if(istype(H) && H.gloves) + return ..() + if(!reagents || reagents.total_volume <= 0) + return ..() + reagents.remove_any(rand(1,3)) //Todo, make it actually remove the reagents the seed uses. + seed.do_thorns(H,src) + seed.do_sting(H,src,pick(BP_R_ARM, BP_L_ARM)) + return ..() /obj/item/reagent_containers/food/snacks/fruit_slice name = "fruit slice" diff --git a/code/modules/hydroponics/grown_predefined.dm b/code/modules/hydroponics/grown_predefined.dm index f2d1417711d..47c8f78c368 100644 --- a/code/modules/hydroponics/grown_predefined.dm +++ b/code/modules/hydroponics/grown_predefined.dm @@ -2,4 +2,76 @@ plantname = "ambrosia" /obj/item/reagent_containers/food/snacks/grown/ambrosiadeus - plantname = "ambrosiadeus" \ No newline at end of file + plantname = "ambrosiadeus" + +// Predefined types for placing on the map. +/obj/plant_spawner + name = "plant spawner" + var/seedtype = "ambrosia" //default to ambrosia for roach taming + var/spawn_growth_auto = TRUE + +/obj/plant_spawner/non_auto_spawn + spawn_growth_auto = FALSE + +/* +/obj/plant_spawner/Initialize(mapload) + var/datum/seed/S = plant_controller.seeds[seedtype] + S.harvest(loc,0,0,1) + spawn(1) if(src) qdel(src) +*/ +/obj/plant_spawner/New() + if(spawn_growth_auto) + addtimer(CALLBACK(src, /obj/plant_spawner/proc/spawn_growth), 2) + +/obj/plant_spawner/proc/spawn_growth() + var/datum/seed/S = plant_controller.seeds[seedtype] + S.harvest(loc,force_amount = 1, harvest_sample = FALSE) + spawn(5) if(src) qdel(src) + +/obj/plant_spawner/libertycap + seedtype = "libertycap" + +/obj/plant_spawner/ambrosiavulgaris + seedtype = "ambrosia" + +/obj/plant_spawner/grass + seedtype = "grass" + +/obj/plant_spawner/wheat + seedtype = "wheat" + +/obj/plant_spawner/poppy + seedtype = "poppies" + +/obj/plant_spawner/sunflower + seedtype = "sunflowers" + +/obj/plant_spawner/harebells + seedtype = "harebells" + +/obj/plant_spawner/towercaps + seedtype = "towercap" + +/obj/plant_spawner/grapes + seedtype = "grapes" + +/obj/plant_spawner/green_grapes + seedtype = "greengrapes" + +/obj/plant_spawner/sugarcane + seedtype = "sugarcane" + +/obj/plant_spawner/potato + seedtype = "potato" + +/obj/plant_spawner/corn + seedtype = "corn" + +/obj/plant_spawner/plumphelmet + seedtype = "plumphelmet" + +/obj/plant_spawner/soybeans + seedtype = "soybean" + +/obj/plant_spawner/pineapple + seedtype = "pineapple" \ No newline at end of file diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index 0005df2cd7c..6f4fbf0bc4d 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -597,6 +597,7 @@ display_name = "tower caps" chems = list("woodpulp" = list(10,1)) mutants = list("metalcap") + kitchen_tag = "towercap" /datum/seed/mushroom/towercap/New() ..() @@ -777,6 +778,7 @@ display_name = "harebells" mutants = list("silverbells") chems = list("nutriment" = list(1,20)) + kitchen_tag = "harebell" /datum/seed/flower/New() ..() @@ -868,6 +870,7 @@ display_name = "green grapevines" mutants = null chems = list("nutriment" = list(1,10), "kelotane" = list(3,5), "grapejuice" = list(10,10)) + kitchen_tag = "greengrape" /datum/seed/grapes/green/New() ..() @@ -1108,6 +1111,7 @@ seed_name = "sugarcane" display_name = "sugarcanes" chems = list("sugar" = list(4,5)) + kitchen_tag = "sugarcane" /datum/seed/sugarcane/New() ..() diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm index 650e48740e2..5cc0438c66c 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm @@ -423,7 +423,7 @@ desc = "A bottle of what looks like a beer but is a mix of sleeping agents, malt and hops." icon_state = "beer" center_of_mass = list("x"=16, "y"=12) - preloaded_reagents = list("beer" = 30) + preloaded_reagents = list("beer2" = 30) /obj/item/reagent_containers/food/drinks/bottle/small/ale name = "\improper Magm-Ale" @@ -440,3 +440,11 @@ isGlass = 0 center_of_mass = list("x"=16, "y"=12) preloaded_reagents = list("Kvass" = 30) + +//glassess bottle +/obj/item/reagent_containers/food/drinks/bottle/small/brewing_bottle + name = "Flash Bottle" + desc = "A quickly printed bottle using a non-recycleable glass." + icon_state = "brew_bottle" + matter = null + isGlass = FALSE \ No newline at end of file diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 55267fc136e0730e54a84d86f5a679c3ca7c6934..3a2a818a8ca1c34bd5b11b1b1d5312314287e5f0 100644 GIT binary patch delta 9148 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 CeDdM| delta 6338 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 diff --git a/modular_sojourn/bottler.dm b/modular_sojourn/bottler.dm new file mode 100644 index 00000000000..d9f608935bd --- /dev/null +++ b/modular_sojourn/bottler.dm @@ -0,0 +1,54 @@ +/obj/item/bottle_kit + name = "Bottling Kit" + desc = "A box that holds glasses fabricators, lables, caps and quarks ready for home brewing and bottling." + icon = 'icons/obj/objects.dmi' + icon_state = "bottler_box" + w_class = ITEM_SIZE_NORMAL + matter = list(MATTER_STEEL = 10, MATTER_GLASS = 10) + var/glass_colour = "brew_bottle" + var/fake_glass_name = "Kinda Blue" + +/obj/item/bottle_kit/examine(mob/user) + ..() + to_chat(user, "Current Glass Bottle Printing Type: [fake_glass_name].") + + +/obj/item/bottle_kit/attack_self(mob/user as mob) + ..() + glass_picker(user) + +/obj/item/bottle_kit/proc/glass_picker(mob/user as mob) + var/list/options = list() + options["Kinda Blue"] = "brew_bottle" + options["Redish"] = "brew_red_bottle" + options["Green-Adjcent"] = "brew_green_bottle" + options["Scuffed Platium"] = "brew_white_bottle" + options["Sorta Coal"] = "brew_coal_bottle" + options["Maybe Bronze"] = "brew_fancy_bottle" + options["Off-Amethyst"] = "brew_funky_bottle" + options["Odd Sky Shade"] = "brew_sky_bottle" + options["Washed Out Brass"] = "brew_saint_po_bottle" + options["Faded Caramel"] = "brew_gold_bottle" + options["Approximate Sea Shore"] = "brew_pianowoman_bottle" + options["Faded Dust"] = "brew_noir_bottle" + options["Close Honeycomb"] = "brew_bees_bottle" + + + if(!options.len) + to_chat(user, "The bottle kit is limited to only normal blue bottles. Oh no!") + glass_colour = "brew_bottle" + fake_glass_name = "Blue" + return + + var/choice = input(user,"What colour do you pick?") as null|anything in options + + var/printing_choice = options[choice] + + if(!printing_choice) + glass_colour = "brew_bottle" + fake_glass_name = "Kinda Blue" + return + + fake_glass_name = choice + glass_colour = printing_choice + diff --git a/modular_sojourn/brewing.dm b/modular_sojourn/brewing.dm new file mode 100644 index 00000000000..dd0430b2c06 --- /dev/null +++ b/modular_sojourn/brewing.dm @@ -0,0 +1,246 @@ +/obj/structure/fermentation_keg + name = "Fermentation Keg" + desc = "A simple keg that is meant for making booze." + icon = 'icons/obj/objects.dmi' + icon_state = "barrel_tapless_open" + density = TRUE + throwpass = TRUE + climbable = TRUE + reagent_flags = OPENCONTAINER | NO_REACT //Lids open, we dont react to prevent some conflicting requrements + var/ready_for_bottleing = FALSE //After brewing we can sell or bottle, this is for the latter + var/brewing = FALSE //If we currently brewing a booze or not + //Needed crops + var/list/recipe_crop_stocks //crop by kitch tag needed + price_tag = 150 + + var/datum/brewing_product/selected_recipe = null //The repice we have seleceted to brew! woo + +/obj/structure/fermentation_keg/Initialize() + . = ..() + create_reagents(240) //on agv it should be 120u for water then rest can be other needed chemicals + recipe_crop_stocks = list() + +/obj/structure/fermentation_keg/attack_hand(mob/user as mob) + if(!brewing && (!selected_recipe || ready_for_bottleing)) + shopping_run(user) + return + + if(try_n_brew(user)) + start_brew() + ..() + +/obj/structure/fermentation_keg/attackby(obj/item/I, mob/user) + var/produce_list + var/obj/item/storage/bag/produce/POUCH + + if(istype(I, /obj/item/bottle_kit)) + var/obj/item/bottle_kit/BK = I + bottle(BK.glass_colour) + + if(istype(I, /obj/item/reagent_containers/food/snacks/grown)) + produce_list = list(I) + + if(istype(I, /obj/item/storage/bag/produce)) + POUCH = I + produce_list = POUCH.contents + + for(var/obj/item/reagent_containers/food/snacks/grown/G in produce_list) + if(G.seed.name in selected_recipe?.needed_crops) + var/amount = recipe_crop_stocks[G.seed.name] || 0 + recipe_crop_stocks[G.seed.name] = amount + 1 + qdel(G) + + POUCH?.refresh_all() + + ..() + +/obj/structure/fermentation_keg/examine(mob/user) + ..() + + if(selected_recipe) + var/message = "Currently making: [selected_recipe.display_name].\n" + + for(var/required_chem in selected_recipe.needed_chems) + message += "Reagent Needed: [get_reagent_name_by_id(required_chem)] [selected_recipe.needed_chems[required_chem]].\n" + + for(var/required_crop in selected_recipe.needed_crops) + message += "Crop Needed: [required_crop] [selected_recipe.needed_crops[required_crop]], Current Amount: [recipe_crop_stocks[required_crop]].\n" + + //time + if(selected_recipe.brew_timer) + if(selected_recipe.brew_timer >= 600) + message += "Once set, will take [selected_recipe.brew_timer/600] Minutes.\n" + else + message += "Once set, will take [selected_recipe.brew_timer] Seconds.\n" + + //How many are brewed + if(selected_recipe.brewed_amount) + message += "Will produce [selected_recipe.brewed_amount] bottles when finished.\n" + + if(selected_recipe.alt_brew_item && selected_recipe.alt_brew_item_amount) + var/name_to_use = selected_recipe.other_name + if(!name_to_use) + name_to_use = selected_recipe.display_name + message += "Will produce [name_to_use] x [selected_recipe.alt_brew_item_amount] when finished.\n" + + if(selected_recipe.info_helper) + message += "[selected_recipe.info_helper].\n" + + to_chat(user, "[message]") + +/obj/structure/fermentation_keg/proc/shopping_run(mob/user as mob) + if(brewing) + return + + var/list/options = list() + for(var/path in typesof(/datum/brewing_product) - /datum/brewing_product) + var/datum/brewing_product/recipe = path + var/prereq = initial(recipe.prerequisite) + if((!ready_for_bottleing && prereq == null) || (selected_recipe?.reagent_to_brew == prereq && ready_for_bottleing)) + options[initial(recipe.display_name)] = recipe + + if(options.len == 0) + to_chat(user, "Their is no further brewing to be done, clear this barrel out or sell it.") + return + + var/choice = input(user,"What brew do you want to make?") as null|anything in options + + if(!choice) + return + + var/choice_to_spawn = options[choice] + + selected_recipe = new choice_to_spawn + + //Second stage brewing gives no refunds! - This is intented design to help make it so folks dont quit halfway through and still get a rebate + //Grind core maxing! + ready_for_bottleing = FALSE + price_tag = 150 + icon_state = "barrel_tapless_open" + +//Remove only chemicals +/obj/structure/fermentation_keg/proc/clear_out_chemicals() + if(reagents) + //consume consume consume consume + reagents.clear_reagents() + +//Remove and reset +/obj/structure/fermentation_keg/proc/clear_out(forceful = FALSE) + if(brewing) + return FALSE + + if(!forceful && ready_for_bottleing) + return FALSE + + if(reagents) + reagents.clear_reagents() + + ready_for_bottleing = FALSE + icon_state = "barrel_tapless_open" + + for(var/crop in recipe_crop_stocks) + pitty_system(crop, recipe_crop_stocks[crop]) + + recipe_crop_stocks.Cut() + + price_tag = 150 + + if(forceful) + selected_recipe = null + + return TRUE + +//For returning plants that are leftover +/obj/structure/fermentation_keg/proc/pitty_system(pitty_crop, sack_of_potatos) + if(!pitty_crop) + return //fast return + var/tickets + for(tickets=0, ticketsreagents.get_reagent_amount(required_chem)) + if(user) + to_chat(user, SPAN_NOTICE("The keg's unable to brew well lacking [required_chem]!")) + ready = FALSE + + return ready + +/obj/structure/fermentation_keg/proc/bottle(glass_colour) + if(ready_for_bottleing) + + ready_for_bottleing = FALSE + brewing = FALSE + price_tag = 150 + icon_state = "barrel_tapless_open" + + if(selected_recipe.reagent_to_brew) + if(!glass_colour) + glass_colour = "brew_bottle" + + var/bottlecaps + for(bottlecaps=0, bottlecaps:T +/datum/brewing_product/ntcahors + reagent_to_brew = "ntcahors" + display_name = "#Blessed Wine" + prerequisite = "wine" // (string, so that we can make multiple recipes for the 'same' drink if needed) + brewed_amount = 1 + needed_crops = list("green grape" = 30, "sugarcane" = 25, "harebell" = 5) + needed_chems = list("carbon" = 120, "holywater" = 120) + + price_tag_setter = 6000 + brew_timer = 3600 //1 hour + +//Coded out do to not sure how to accually make this, and the copoilet quarries are able to help me +/datum/brewing_product/fernet + reagent_to_brew = "fernet" + display_name = "Fernet" + needed_crops = list("mint" = 20, "thaadra" = 20, "harebell" = 5) + needed_chems = list("water" = 60) + brew_timer = 15 MINUTES + brewed_amount = 1 + price_tag_setter = 1500 + + +*/ \ No newline at end of file diff --git a/modular_sojourn/fencer.dmi b/modular_sojourn/fencer.dmi index 6c939a77d28e96fc037f8615cb5000885fdf311e..b3fd7f51359e24921c6bdd746f875d0374b2bd73 100644 GIT binary patch delta 2186 zcmV;52zB@E2Za)7iBL{Q4GJ0x0000DNk~Le0002M0002M1Oos70HE@5GynhqDo{*R zMZmzo^Yion05bppnG9ZS44s(&|Nm%cXaE2J|Nk=?04g^CT)@Dl+0004W zQchC9fGpXQD%tjiv~l7CKN!NRJ_xvVyCh z3pk1aS51OShSH4D000NUNkle~C?;0X04CrTA32<# z_($X?v_kxd<>=^<9b8)c5=DMM*1@HZ#+R2PAK=mW>W@*QW(lLKtHyTzfZ}(W(9$fS zh@!{~Xm@z5W)I|@pwFhj6>oKLXQJlqVjOj-RYeqas5`h1 z9(!DSAMc$5#Awv5J^&7YJpi71aefc@b+4#%eIGc=Z(&F)dSOTwf!pn)F*^;PKd*hl zRV*?d!O3UZoEh+DfY%4cK-@AvFD6Wj zrcbDe{0-UT^=LZliktep2LmX0+aQOSzfB(Eds~Syz$7CDz!WWCMLA(8ZbP=76NIL_B z=V62P_WKdrraijvE$uw6`_ZUR0fNT!^V&MUUG`f7C{WOLeqLMW_hSL!&;f8cvpze| zM}oHZ$ayWxkm&>90N4ZIsTc2maPTgc!QW%y{(k=e=I{3o$clA-KRJMXem|`;5yap_ zj2nr6kc~if05Pwy0mR?~1^`e27!at|fCmIDKo0>Ke28Ub7Me#OAseCSr!)jSAYcJ{ z2*}_ofDY9WL}UQdFUSEjAYcJHD>C>phmHW%B@T!v=rUoDu>xQL0Sm~IVuP;%D$1-V z76u@6fAtH11q3WW1CYVj03i?n{bIeW0R`ZHfPe+)tjOSZ13(7969D$}9RW%|-xVP2 z6o8NGZUE@G?g%jKcm!hD>vja+6#zw-00Yc%Qv%F+29AIRKnw^F1MM##odW6t8UTO+ z!21IO)CE`oJ-GaSGJssVZJ}?Obm=zPpblEE5 zS>73IsBF)wW@a>P0kd+CC^;{0MA^R1FYqjWZFWmrfLZer5bG)e!~pOG#5H>o0g2Xo zB-bqf<|#2iZ9=LkPBtbqwj-%vTS6=Bt`lz zg*&6U|91eb_$(-aG~Fa$D|PJj`_1iH!gncb6DR>2IUqonnC1U#{k~~mTRT&}&t*cX zw<#Xw!~MTWxLK$2p}&?Ih<=3sHwi($zUiiT;uAGtNV^kq|8D^{32g4D{sQ$KoL4-L z|4+UL_!`)3foS=5kqq2_?_0aZy7ED$BzjFwBzQ~j2%tb~TiVW;Bke~xltZCK|Ht-! zx=H>_re58v(iPx7FC79_yN&_NLpNbfc!~ROMt`Q6D>!u)Fbc!7(ahkZFjjLAIIN1EindZobv~ z`@;X{QzQXix4zurSpFXQe{)oLj=<^fOKlD#UqJh^^t>=1Lg>^Pn*Lzre~tUb9uu@Q2><{9 M07*qoM6N<$f>P}lng9R* delta 871 zcmV-t1DO1U672_HiBL{Q4GJ0x0000DNk~Le0001h0001h1Oos705K4J_y7O^Ay7mUw*cYT9;KqP~+_naYu0Hk)0_1Neb?YFKnKedTlYvf48n{VYHCINc0K^VT`0ET~QfYurlP=^$Y15#Q<>ImUCw#;23 z0s}N8MJcwFxJXhA&{~I%z>qn|_scQtTkMcxFbA#gBQT_<&G!-5K9ve@5Mt|?8y$h& zdr|2K>>OH0;5RrAr0pDi9`N&_EaUJwG_*{~xaO24+sj8KA8Or0qt*p!*dTk9i~CO;BT10?3pZQ91iP&p6CH+;`G7Gc*ZFV z&i|h4fm)&uYz63gT8s2S&(>cEqV$1oBlUr0jMN96j?@SBs1HVcFcSPHf*ZGU@*yNC zuzgVqI})XE5$^8(dWBPW+MRaC-Jie2elvga|IUk7g5B|mK4%H?9JiM}aVnfKx(ABw z6(3e>ACq4&?EV7nXO5H{QF^oT36e8KBpFZwdSnG{=qHZGehP2V>4!u@p1FJW85({I zwmV+GbiY#Y*BVmw3>PtTDSEfy81SK)DN^;VLX261i`cOux_~8R^z}reQA9^3&-8yY zA$Zzi0?3?z@CJT|1;o^B@qTl_gfOjJM6mC2q(GL3#j^1BCuaNM2@#n3(GM_{F~(b0 zYK{ri0u#XfkB`QynrGv`hd1002ovPDHLkV1hm$g<1dr diff --git a/modular_sojourn/guild_rep.dmi b/modular_sojourn/guild_rep.dmi new file mode 100644 index 0000000000000000000000000000000000000000..a263fc6d8ed6b02c175a7afa85e0f06b9aed5876 GIT binary patch literal 6803 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 literal 0 HcmV?d00001 diff --git a/sojourn-station.dme b/sojourn-station.dme index 847dcb84f82..8ad18b8797c 100644 --- a/sojourn-station.dme +++ b/sojourn-station.dme @@ -3457,6 +3457,9 @@ #include "maps\submaps\junk_field\j5_5\neutral\neutral.dm" #include "maps\submaps\map_clearers\map_clearers.dm" #include "modular_sojourn\area_blurbs.dm" +#include "modular_sojourn\bottler.dm" +#include "modular_sojourn\brewing.dm" +#include "modular_sojourn\brewing_datums.dm" #include "modular_sojourn\fencer.dm" #include "modular_sojourn\lamp.dm" #include "modular_sojourn\pixelshift.dm"