From cb8a94d76901dea74471eea2acfb0af0cf2f4e60 Mon Sep 17 00:00:00 2001 From: Stalkeros2 <42087567+Stalkeros2@users.noreply.github.com> Date: Mon, 28 Aug 2023 02:42:52 +0500 Subject: [PATCH] NRI/CIN Precursor Food Replicator (#22679) * it was meant to be pushed two weeks ago * it's done woooo * oops * Update replicator.dm * it's done * hoping the commit appears * Update tgstation.dme * Adding replicator to the nri cops shuttle also fixes compile maps * This is better * Apply suggestions from code review Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> * requested changes * Apply suggestions from code review Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> * should be it * And now it works PROPERLY * Apply suggestions from code review Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> * Better formatting and convermol nerf * new medical stuff and sprites * minor buff * Update medical.dm * minor touches * too much effort * Update clothing.dm * i forgot * i forgot x2 * unused var cleanup * infinite opening fix * Update replicator_medical.dm * Update clothing.dm * Apply suggestions from code review Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> * Update clothing.dm * Update modular_skyrat/modules/food_replicator/code/reagents.dm --------- Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> --- _maps/shuttles/skyrat/pirate_nri_raider.dmm | 50 ++--- modular_skyrat/modules/cargo/code/packs.dm | 2 +- .../armament_datums/nri_military_surplus.dm | 12 +- .../modules/food_replicator/code/clothing.dm | 63 ++++++ .../modules/food_replicator/code/medical.dm | 66 ++++++ .../food_replicator/code/rationpacks.dm | 188 ++++++++++++++++++ .../modules/food_replicator/code/reagents.dm | 116 +++++++++++ .../food_replicator/code/replicator.dm | 23 +++ .../replicator_designs/replicator_clothing.dm | 54 +++++ .../replicator_designs/replicator_food.dm | 165 +++++++++++++++ .../replicator_designs/replicator_medical.dm | 113 +++++++++++ .../modules/food_replicator/code/storage.dm | 40 ++++ .../food_replicator/icons/biogenerator.dmi | Bin 0 -> 758 bytes .../food_replicator/icons/clothing.dmi | Bin 0 -> 965 bytes .../food_replicator/icons/clothing_digi.dmi | Bin 0 -> 1975 bytes .../food_replicator/icons/clothing_worn.dmi | Bin 0 -> 2075 bytes .../food_replicator/icons/medicine.dmi | Bin 0 -> 2746 bytes .../modules/food_replicator/icons/pouch.dmi | Bin 0 -> 968 bytes .../food_replicator/icons/rationpack.dmi | Bin 0 -> 6459 bytes .../lewd_items/code/lewd_items/serviette.dm | 15 +- .../modules/novaya_ert/code/rationpacks.dm | 55 ----- .../modules/novaya_ert/code/survival_pack.dm | 2 +- .../modules/novaya_ert/icons/rationpack.dmi | Bin 694 -> 0 bytes tgstation.dme | 10 +- 24 files changed, 880 insertions(+), 94 deletions(-) create mode 100644 modular_skyrat/modules/food_replicator/code/clothing.dm create mode 100644 modular_skyrat/modules/food_replicator/code/medical.dm create mode 100644 modular_skyrat/modules/food_replicator/code/rationpacks.dm create mode 100644 modular_skyrat/modules/food_replicator/code/reagents.dm create mode 100644 modular_skyrat/modules/food_replicator/code/replicator.dm create mode 100644 modular_skyrat/modules/food_replicator/code/replicator_designs/replicator_clothing.dm create mode 100644 modular_skyrat/modules/food_replicator/code/replicator_designs/replicator_food.dm create mode 100644 modular_skyrat/modules/food_replicator/code/replicator_designs/replicator_medical.dm create mode 100644 modular_skyrat/modules/food_replicator/code/storage.dm create mode 100644 modular_skyrat/modules/food_replicator/icons/biogenerator.dmi create mode 100644 modular_skyrat/modules/food_replicator/icons/clothing.dmi create mode 100644 modular_skyrat/modules/food_replicator/icons/clothing_digi.dmi create mode 100644 modular_skyrat/modules/food_replicator/icons/clothing_worn.dmi create mode 100644 modular_skyrat/modules/food_replicator/icons/medicine.dmi create mode 100644 modular_skyrat/modules/food_replicator/icons/pouch.dmi create mode 100644 modular_skyrat/modules/food_replicator/icons/rationpack.dmi delete mode 100644 modular_skyrat/modules/novaya_ert/code/rationpacks.dm delete mode 100644 modular_skyrat/modules/novaya_ert/icons/rationpack.dmi diff --git a/_maps/shuttles/skyrat/pirate_nri_raider.dmm b/_maps/shuttles/skyrat/pirate_nri_raider.dmm index c52cdd03b58..3008861bb1d 100644 --- a/_maps/shuttles/skyrat/pirate_nri_raider.dmm +++ b/_maps/shuttles/skyrat/pirate_nri_raider.dmm @@ -424,29 +424,13 @@ /area/shuttle/pirate/nri) "qE" = ( /obj/structure/table/reinforced, -/obj/item/storage/box/nri_rations{ - pixel_x = -3 +/obj/item/storage/box/colonial_rations{ + pixel_y = 12 }, -/obj/item/storage/box/nri_rations{ - pixel_x = 7; - pixel_y = -5 - }, -/obj/item/storage/box/nri_rations{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/storage/box/nri_rations{ - pixel_x = 7; - pixel_y = -2 - }, -/obj/item/storage/box/nri_rations{ - pixel_x = -3; +/obj/item/storage/box/colonial_rations{ pixel_y = 6 }, -/obj/item/storage/box/nri_rations{ - pixel_x = 7; - pixel_y = 1 - }, +/obj/item/storage/box/colonial_rations, /turf/open/floor/pod/light, /area/shuttle/pirate/nri) "qJ" = ( @@ -1345,7 +1329,7 @@ /turf/open/floor/pod, /area/shuttle/pirate/nri) "Wa" = ( -/obj/machinery/vending/imported/mothic, +/obj/machinery/biogenerator/food_replicator, /turf/open/floor/pod/light, /area/shuttle/pirate/nri) "Wr" = ( @@ -1390,10 +1374,26 @@ /turf/open/floor/engine/hull/reinforced, /area/shuttle/pirate/nri) "Yd" = ( -/obj/structure/table/reinforced, -/obj/item/coffee_cartridge, -/obj/item/coffee_cartridge, -/obj/machinery/coffeemaker, +/obj/structure/closet/crate/freezer, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, +/obj/item/food/meat/slab/meatproduct, /turf/open/floor/pod, /area/shuttle/pirate/nri) "Yy" = ( diff --git a/modular_skyrat/modules/cargo/code/packs.dm b/modular_skyrat/modules/cargo/code/packs.dm index b8246c4c3d3..f292e5ce2c4 100644 --- a/modular_skyrat/modules/cargo/code/packs.dm +++ b/modular_skyrat/modules/cargo/code/packs.dm @@ -714,7 +714,7 @@ contraband = TRUE cost = CARGO_CRATE_VALUE * 9 contains = list( - /obj/item/storage/box/nri_rations = 1, + /obj/item/storage/box/colonial_rations = 1, /obj/item/storage/toolbox/ammobox/strilka310 = 1, /obj/item/storage/toolbox/ammobox/strilka310/surplus = 1, /obj/item/storage/toolbox/maint_kit = 1, diff --git a/modular_skyrat/modules/company_imports/code/armament_datums/nri_military_surplus.dm b/modular_skyrat/modules/company_imports/code/armament_datums/nri_military_surplus.dm index 2037ba7efec..9af064d68cc 100644 --- a/modular_skyrat/modules/company_imports/code/armament_datums/nri_military_surplus.dm +++ b/modular_skyrat/modules/company_imports/code/armament_datums/nri_military_surplus.dm @@ -82,11 +82,15 @@ lower_cost = CARGO_CRATE_VALUE * 0.5 upper_cost = CARGO_CRATE_VALUE -/datum/armament_entry/company_import/nri_surplus/misc/rations - item_type = /obj/item/storage/box/nri_rations - lower_cost = CARGO_CRATE_VALUE * 0.75 - upper_cost = CARGO_CRATE_VALUE * 1.5 +/datum/armament_entry/company_import/nri_surplus/misc/food_replicator + description = "Once widespread technology used by numerous fringe colonies of NRI origin and even in some SolFed territories, that ultimately went out of fashion due to \ + SolFed propaganda deeming it unprofitable and imposing severe trading fees on anyone trying to sell them. A small portion of government-backed manufacturers still produce \ + 'food replicators' for private and government use; a few of them is selling this via us." + item_type = /obj/item/circuitboard/machine/biogenerator/food_replicator + lower_cost = CARGO_CRATE_VALUE * 7.5 + upper_cost = CARGO_CRATE_VALUE * 11 interest_required = COMPANY_SOME_INTEREST + interest_addition = COMPANY_INTEREST_GAIN_BIG /datum/armament_entry/company_import/nri_surplus/misc/nri_flag item_type = /obj/item/sign/flag/nri diff --git a/modular_skyrat/modules/food_replicator/code/clothing.dm b/modular_skyrat/modules/food_replicator/code/clothing.dm new file mode 100644 index 00000000000..8d1b6238ed6 --- /dev/null +++ b/modular_skyrat/modules/food_replicator/code/clothing.dm @@ -0,0 +1,63 @@ +/obj/item/clothing/under/colonial + name = "colonial outfit" + desc = "Fancy white satin shirt and a pair of cotton-blend pants with a black synthleather belt." + icon = 'modular_skyrat/modules/food_replicator/icons/clothing.dmi' + worn_icon = 'modular_skyrat/modules/food_replicator/icons/clothing_worn.dmi' + worn_icon_digi = 'modular_skyrat/modules/food_replicator/icons/clothing_digi.dmi' + icon_state = "under_colonial" + +/obj/item/clothing/under/colonial/mob_can_equip(mob/living/equipper, slot, disable_warning, bypass_equip_delay_self, ignore_equipped, indirect_action) + if(is_species(equipper, /datum/species/teshari)) + to_chat(equipper, span_warning("[src] is far too big for you!")) + return FALSE + + return ..() + +/obj/item/clothing/shoes/jackboots/colonial + name = "colonial half-boots" + desc = "Good old laceless boots, with a sturdy plastic toe to, theoretically, keep your toes uncrushed." + icon = 'modular_skyrat/modules/food_replicator/icons/clothing.dmi' + worn_icon = 'modular_skyrat/modules/food_replicator/icons/clothing_worn.dmi' + worn_icon_digi = 'modular_skyrat/modules/food_replicator/icons/clothing_digi.dmi' + icon_state = "boots_colonial" + +/obj/item/clothing/shoes/jackboots/colonial/mob_can_equip(mob/living/equipper, slot, disable_warning, bypass_equip_delay_self, ignore_equipped, indirect_action) + if(is_species(equipper, /datum/species/teshari)) + to_chat(equipper, span_warning("[src] is far too big for you!")) + return FALSE + + return ..() + +/obj/item/clothing/neck/cloak/colonial + name = "colonial cloak" + desc = "A cloak made from heavy tarpaulin. Nigh wind- and waterproof thanks to its design." + slot_flags = ITEM_SLOT_OCLOTHING|ITEM_SLOT_NECK + w_class = WEIGHT_CLASS_NORMAL + icon = 'modular_skyrat/modules/food_replicator/icons/clothing.dmi' + worn_icon = 'modular_skyrat/modules/food_replicator/icons/clothing_worn.dmi' + worn_icon_digi = 'modular_skyrat/modules/food_replicator/icons/clothing_digi.dmi' + icon_state = "cloak_colonial" + +/obj/item/clothing/neck/cloak/colonial/mob_can_equip(mob/living/equipper, slot, disable_warning, bypass_equip_delay_self, ignore_equipped, indirect_action) + if(is_species(equipper, /datum/species/teshari)) + to_chat(equipper, span_warning("[src] is far too big for you!")) + return FALSE + + return ..() + +/obj/item/clothing/head/hats/colonial + name = "colonial cap" + desc = "A puffy cap made out of tarpaulin covered by some textile. It is sturdy and comfortable, and seems to retain its form very well." + icon = 'modular_skyrat/modules/food_replicator/icons/clothing.dmi' + worn_icon = 'modular_skyrat/modules/food_replicator/icons/clothing_worn.dmi' + worn_icon_digi = 'modular_skyrat/modules/food_replicator/icons/clothing_digi.dmi' + icon_state = "cap_colonial" + inhand_icon_state = null + supports_variations_flags = CLOTHING_SNOUTED_VARIATION_NO_NEW_ICON + +/obj/item/clothing/head/hats/colonial/mob_can_equip(mob/living/equipper, slot, disable_warning, bypass_equip_delay_self, ignore_equipped, indirect_action) + if(is_species(equipper, /datum/species/teshari)) + to_chat(equipper, span_warning("[src] is far too big for you!")) + return FALSE + + return ..() diff --git a/modular_skyrat/modules/food_replicator/code/medical.dm b/modular_skyrat/modules/food_replicator/code/medical.dm new file mode 100644 index 00000000000..1b55cae5991 --- /dev/null +++ b/modular_skyrat/modules/food_replicator/code/medical.dm @@ -0,0 +1,66 @@ +/obj/item/stack/medical/suture/bloody + name = "hemostatic suture" + desc = "Bloodclotting agent-infused sterile sutures used to seal up cuts and lacerations and reverse critical bleedings." + icon = 'modular_skyrat/modules/food_replicator/icons/medicine.dmi' + icon_state = "hemo_suture" + heal_brute = 7 + stop_bleeding = 1 + grind_results = list(/datum/reagent/medicine/coagulant = 2) + merge_type = /obj/item/stack/medical/suture/bloody + +/obj/item/stack/medical/suture/bloody/post_heal_effects(amount_healed, mob/living/carbon/healed_mob, mob/user) + . = ..() + if(healed_mob.blood_volume <= BLOOD_VOLUME_SAFE) + healed_mob.reagents.add_reagent(/datum/reagent/medicine/salglu_solution, 2) + healed_mob.adjustOxyLoss(-amount_healed) + +/obj/item/stack/medical/mesh/bloody + name = "hemostatic mesh" + desc = "A hemostatic mesh used to dress burns and stimulate hemopoiesis. Due to its blood-related purpose, it is worse at sanitizing infections." + icon = 'modular_skyrat/modules/food_replicator/icons/medicine.dmi' + icon_state = "hemo_mesh" + heal_burn = 7 + sanitization = 0.5 + flesh_regeneration = 1.75 + stop_bleeding = 0.25 + grind_results = list(/datum/reagent/medicine/coagulant = 2) + merge_type = /obj/item/stack/medical/mesh/bloody + +/obj/item/stack/medical/mesh/bloody/update_icon_state() + if(is_open) + return ..() + + icon_state = "hemo_mesh_closed" + +/obj/item/stack/medical/mesh/bloody/post_heal_effects(amount_healed, mob/living/carbon/healed_mob, mob/user) + . = ..() + if(healed_mob.blood_volume <= BLOOD_VOLUME_SAFE) + healed_mob.reagents.add_reagent(/datum/reagent/medicine/salglu_solution, 2) + healed_mob.adjustOxyLoss(-amount_healed) + +/obj/item/reagent_containers/hypospray/medipen/glucose + name = "pressurised glucose medipen" + desc = "A medipen for keeping yourself going during prolonged EVA shifts, injects a dose of glucose into your bloodstream. Recommended for use in low-pressure environments." + icon = 'modular_skyrat/modules/food_replicator/icons/medicine.dmi' + icon_state = "glupen" + inhand_icon_state = "stimpen" + base_icon_state = "glupen" + volume = 15 + amount_per_transfer_from_this = 15 + list_reagents = list(/datum/reagent/consumable/nutriment/glucose = 15) + +/obj/item/reagent_containers/hypospray/medipen/glucose/inject(mob/living/affected_mob, mob/user) + if(lavaland_equipment_pressure_check(get_turf(user))) + amount_per_transfer_from_this = initial(amount_per_transfer_from_this) + return ..() + + if(DOING_INTERACTION(user, DOAFTER_SOURCE_SURVIVALPEN)) + to_chat(user,span_notice("You are too busy to use \the [src]!")) + return + + to_chat(user,span_notice("You start manually releasing the low-pressure gauge...")) + if(!do_after(user, 10 SECONDS, affected_mob, interaction_key = DOAFTER_SOURCE_SURVIVALPEN)) + return + + amount_per_transfer_from_this = initial(amount_per_transfer_from_this) * 0.5 + return ..() diff --git a/modular_skyrat/modules/food_replicator/code/rationpacks.dm b/modular_skyrat/modules/food_replicator/code/rationpacks.dm new file mode 100644 index 00000000000..c22d588d49a --- /dev/null +++ b/modular_skyrat/modules/food_replicator/code/rationpacks.dm @@ -0,0 +1,188 @@ +/obj/item/food/colonial_course + name = "undefined colonial course" + desc = "Something you shouldn't see. But it's edible." + icon = 'modular_skyrat/modules/food_replicator/icons/rationpack.dmi' + icon_state = "borgir" + base_icon_state = "borgir" + food_reagents = list(/datum/reagent/consumable/nutriment = 20) + tastes = list("crayon powder" = 1) + foodtypes = VEGETABLES | GRAIN + w_class = WEIGHT_CLASS_SMALL + preserved_food = TRUE + +/obj/item/food/colonial_course/attack_self(mob/user, modifiers) + if(preserved_food) + preserved_food = FALSE + icon_state = "[base_icon_state]_unwrapped" + to_chat(user, span_notice("You unpackage \the [src].")) + playsound(user.loc, 'sound/items/foodcanopen.ogg', 50) + +/obj/item/food/colonial_course/attack(mob/living/target, mob/user, def_zone) + if(preserved_food) + to_chat(user, span_warning("[src] is still packaged!")) + return FALSE + + return ..() + +/obj/item/food/colonial_course/pljeskavica + name = "pljeskavica" + desc = "Freshly-printed steaming hot burger consisting of a biogenerator-produced handcraft-imitating buns, with a minced meat patty inbetween, among various vegetables and sauces.\ +
Looks good enough for something as replicated as this. Its packaging is covered in copious amounts of information on its nutritional facts, contents and the expiry date. Sadly, it's all written in Pan-Slavic." + trash_type = /obj/item/trash/pljeskavica + food_reagents = list( + /datum/reagent/consumable/nutriment = 3, + /datum/reagent/consumable/nutriment/protein = 9, + /datum/reagent/consumable/nutriment/vitamin = 4, + ) + tastes = list("bun" = 2, "spiced meat" = 10, "death of veganism" = 3) + foodtypes = VEGETABLES | GRAIN | MEAT + +/obj/item/food/colonial_course/nachos + name = "plain nachos tray" + desc = "A vacuum-sealed package with what seems to be a generous serving of triangular corn chips, with three sections reserved for a salsa, cheese and guacamole sauces.\ +
Probably the best-looking food you can find in these rations, perhaps due to its simplicity." + food_reagents = list( + /datum/reagent/consumable/nutriment = 5, + /datum/reagent/consumable/nutriment/vitamin = 2, + ) + trash_type = /obj/item/trash/nachos + icon_state = "nacho" + base_icon_state = "nacho" + tastes = list("corn chips" = 5, "'artificial' organic sauces" = 5) + foodtypes = GRAIN | FRIED | DAIRY + +/obj/item/food/colonial_course/blins + name = "condensed milk crepes" + desc = "A vacuum-sealed four-pack of stuffed crepes with a minimal amount of markings. There is nothing else to it, to be frank.\ +
Surprisingly tasty for its looks, as long as you're not lactose intolerant, on diet, or vegan. The back of the packaging is covered in a mass of information detailing the product." + food_reagents = list( + /datum/reagent/consumable/nutriment = 2, + /datum/reagent/consumable/caramel = 3, + /datum/reagent/consumable/milk = 4, + ) + trash_type = /obj/item/trash/blins + icon_state = "blin" + base_icon_state = "blin" + tastes = list("insane amount of sweetness" = 10, "crepes" = 3) + foodtypes = SUGAR | GRAIN | DAIRY | BREAKFAST + +/obj/item/reagent_containers/cup/glass/coffee/colonial + name = "colonial thermocup" + desc = "Technically, used to drink hot beverages. But since it's the only cup design that was available, you gotta make do. It has an instruction written on its side. \ +
This particular one comes prefilled with a single serving of coffee powder." + special_desc = "A small instruction on the side reads: \"For use in food replicators; mix water and powdered solutions in one-to-one proportions. \ +
For cocoa, mix milk and powdered solution in one-to-one proportion.\"
" + icon = 'modular_skyrat/modules/food_replicator/icons/rationpack.dmi' + list_reagents = list(/datum/reagent/consumable/powdered_coffee = 25) + +/obj/item/reagent_containers/cup/glass/coffee/colonial/empty + desc = "Technically, used to drink hot beverages. But since it's the only cup design that was available, you gotta make do. It has an instruction written on its side." + list_reagents = null + +/obj/item/trash/pljeskavica + name = "pljeskavica wrapping paper" + desc = "Covered in sauce smearings and smaller pieces of the dish on the inside, crumpled into a ball. It's probably best to dispose of it." + icon = 'modular_skyrat/modules/food_replicator/icons/rationpack.dmi' + icon_state = "borgir_trash" + +/obj/item/trash/nachos + name = "empty nachos tray" + desc = "Covered in sauce smearings and smaller pieces of the dish on the inside, a plastic food tray with not much use anymore. It's probably best to dispose of it or recycle it." + icon = 'modular_skyrat/modules/food_replicator/icons/rationpack.dmi' + custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) + icon_state = "nacho_trash" + +/obj/item/trash/blins + name = "empty crepes wrapper" + desc = "Empty torn wrapper that used to hold something ridiculously sweet. It's probably best to recycle it." + icon = 'modular_skyrat/modules/food_replicator/icons/rationpack.dmi' + custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 0.5) + icon_state = "blin_trash" + +/obj/item/storage/box/gum/colonial + name = "mixed bubblegum packet" + desc = "The packaging is entirely written in Pan-Slavic, with a small blurb of Sol Common. You would need to take a better look to read it, though, as it is written quite small." + special_desc = "Examining the small text reveals the following: \"Foreign colonization ration, model J: mixed origin, adult. Bubblegum package, medicinal, recreational.
\ + Do not overconsume. Certain strips contain nicotine.\"
" + icon = 'modular_skyrat/modules/food_replicator/icons/rationpack.dmi' + icon_state = "bubblegum" + +/obj/item/storage/box/gum/colonial/PopulateContents() + new /obj/item/food/bubblegum(src) + new /obj/item/food/bubblegum(src) + new /obj/item/food/bubblegum/nicotine(src) + new /obj/item/food/bubblegum/nicotine(src) + +/obj/item/storage/box/utensils + name = "utensils package" + desc = "A small package containing various utensils required for human consumption of various foods. \ + In a normal situation contains a plastic fork, a plastic spoon, and two serviettes." + icon = 'modular_skyrat/modules/food_replicator/icons/rationpack.dmi' + icon_state = "utensil_box" + w_class = WEIGHT_CLASS_TINY + illustration = null + foldable_result = null + +/obj/item/storage/box/utensils/Initialize(mapload) + . = ..() + atom_storage.set_holdable(list( + /obj/item/kitchen/spoon/plastic, + /obj/item/kitchen/fork/plastic, + /obj/item/serviette, + )) + atom_storage.max_slots = 4 + +/obj/item/storage/box/utensils/PopulateContents() + new /obj/item/kitchen/spoon/plastic(src) + new /obj/item/kitchen/fork/plastic(src) + new /obj/item/serviette/colonial(src) + new /obj/item/serviette/colonial(src) + +/obj/item/serviette/colonial + name = "colonial napkin" + desc = "To clean all the mess. Comes with a custom combined design of red and blue." + icon_state = "napkin_unused" + icon = 'modular_skyrat/modules/food_replicator/icons/rationpack.dmi' + used_serviette = /obj/item/serviette_used/colonial + +/obj/item/serviette_used/colonial + name = "dirty colonial napkin" + desc = "No longer useful, super dirty, or soaked, or otherwise unrecognisable." + icon_state = "napkin_used" + icon = 'modular_skyrat/modules/food_replicator/icons/rationpack.dmi' + +/obj/item/storage/box/colonial_rations + name = "foreign colonization ration" + desc = "A freshly printed civilian MRE, or more specifically a lunchtime food package, for use in the early colonization times by the first settlers of what is now known as the NRI.
\ + The lack of any imprinted dates, as well as its origin, the food replicator, should probably give you a good enough hint at its short, if reasonable, expiry time." + icon = 'modular_skyrat/modules/food_replicator/icons/rationpack.dmi' + icon_state = "mre_package" + foldable_result = null + illustration = null + +/obj/item/storage/box/colonial_rations/Initialize(mapload) + . = ..() + atom_storage.max_slots = 6 + atom_storage.locked = TRUE + +/obj/item/storage/box/colonial_rations/attack_self(mob/user, modifiers) + if(user) + if(atom_storage.locked == TRUE) + atom_storage.locked = FALSE + icon_state = "mre_package_open" + balloon_alert(user, "unsealed!") + return ..() + else + atom_storage.locked = TRUE + atom_storage.close_all() + icon_state = "mre_package" + balloon_alert(user, "resealed!") + return + +/obj/item/storage/box/colonial_rations/PopulateContents() + new /obj/item/food/colonial_course/pljeskavica(src) + new /obj/item/food/colonial_course/nachos(src) + new /obj/item/food/colonial_course/blins(src) + new /obj/item/reagent_containers/cup/glass/coffee/colonial(src) + new /obj/item/storage/box/gum/colonial(src) + new /obj/item/storage/box/utensils(src) diff --git a/modular_skyrat/modules/food_replicator/code/reagents.dm b/modular_skyrat/modules/food_replicator/code/reagents.dm new file mode 100644 index 00000000000..ef25e49efd3 --- /dev/null +++ b/modular_skyrat/modules/food_replicator/code/reagents.dm @@ -0,0 +1,116 @@ +/datum/reagent/consumable/powdered_tea + name = "Powdered Tea" + description = "Tea in its powdered form. Tastes horribly." + color = "#3a3a03" + nutriment_factor = 0 + taste_description = "bitter powder" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + default_container = /obj/item/reagent_containers/cup/glass/mug/tea + +/datum/chemical_reaction/food/unpowdered_tea + required_reagents = list( + /datum/reagent/water = 1, + /datum/reagent/consumable/powdered_tea = 1, + ) + results = list(/datum/reagent/consumable/tea = 2) + mix_message = "The mixture instantly heats up." + reaction_flags = REACTION_INSTANT + +/datum/reagent/consumable/powdered_coffee + name = "Powdered Coffee" + description = "Americano in its powdered form. Quite an ordinary thing to be honest." + color = "#101000" + nutriment_factor = 0 + taste_description = "very bitter powder" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + default_container = /obj/item/reagent_containers/cup/glass/coffee + +/datum/chemical_reaction/food/unpowdered_coffee + required_reagents = list( + /datum/reagent/water = 1, + /datum/reagent/consumable/powdered_coffee = 1, + ) + results = list(/datum/reagent/consumable/coffee = 2) + mix_message = "The mixture instantly heats up." + reaction_flags = REACTION_INSTANT + +/datum/reagent/consumable/powdered_coco + name = "Powdered Coco" + description = "Made with love (citation needed), and reclaimed biomass." + nutriment_factor = 0 + color = "#403010" + taste_description = "dry chocolate" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + default_container = /obj/item/reagent_containers/cup/glass/mug/coco + +/datum/chemical_reaction/food/unpowdered_coco + required_reagents = list( + /datum/reagent/consumable/milk = 1, + /datum/reagent/consumable/powdered_coco = 1, + ) + results = list(/datum/reagent/consumable/hot_coco = 2) + mix_message = "The mixture instantly heats up." + reaction_flags = REACTION_INSTANT + +/datum/reagent/consumable/powdered_lemonade + name = "Powdered Lemonade" + description = "Sweet, tangy base of a lemonade. Would be good if you'd mix it with water." + nutriment_factor = 0 + color = "#FFE978" + taste_description = "intensely sour and sweet lemon powder" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + default_container = /obj/item/reagent_containers/cup/soda_cans/lemon_lime + +/datum/chemical_reaction/food/unpowdered_lemonade + required_reagents = list( + /datum/reagent/water = 1, + /datum/reagent/consumable/powdered_lemonade = 1, + ) + results = list(/datum/reagent/consumable/lemonade = 2) + mix_message = "The mixture instantly cools down." + reaction_flags = REACTION_INSTANT + +/datum/reagent/consumable/powdered_milk + name = "Powdered Milk" + description = "An opaque white powder produced by the biomass restructurizers of certain machines." + nutriment_factor = 0 + color = "#DFDFDF" + taste_description = "sweet dry milk" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + default_container = /obj/item/reagent_containers/condiment/milk + +/datum/chemical_reaction/food/unpowdered_milk + required_reagents = list( + /datum/reagent/water = 1, + /datum/reagent/consumable/powdered_milk = 1, + ) + results = list(/datum/reagent/consumable/milk = 2) + mix_message = "The mixture cools down." + reaction_flags = REACTION_INSTANT + +/obj/item/reagent_containers/pill/convermol + name = "convermol pill" + desc = "Used to treat oxygen deprivation. Intoxicates the body." + icon_state = "pill16" + list_reagents = list(/datum/reagent/medicine/c2/convermol = 15) + rename_with_volume = TRUE + +/datum/reagent/consumable/nutriment/glucose + name = "Synthetic Glucose" + description = "A sticky yellow liquid, simple carbohydrate, allotrope of organic glucose. Gives your body a short-term energy boost." + nutriment_factor = 1 + color = "#f3d00d" + taste_description = "strong sweetness" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + var/delayed_satiety_drain = 30 + +/datum/reagent/consumable/nutriment/glucose/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + if(affected_mob.satiety < MAX_SATIETY) + affected_mob.adjust_nutrition(15) + delayed_satiety_drain += 15 + + return ..() + +/datum/reagent/consumable/nutriment/glucose/on_mob_delete(mob/living/carbon/detoxed_mob) + detoxed_mob.adjust_nutrition(-delayed_satiety_drain) + return ..() diff --git a/modular_skyrat/modules/food_replicator/code/replicator.dm b/modular_skyrat/modules/food_replicator/code/replicator.dm new file mode 100644 index 00000000000..9fcef963545 --- /dev/null +++ b/modular_skyrat/modules/food_replicator/code/replicator.dm @@ -0,0 +1,23 @@ +#define RND_CATEGORY_NRI_FOOD "Provision" +#define RND_CATEGORY_NRI_MEDICAL "Medicine" +#define RND_CATEGORY_NRI_CLOTHING "Apparel" + +/obj/machinery/biogenerator/food_replicator + name = "\improper Type 34 'Colonial Supply Core'" + desc = "The Type 34 'Colonial Supply Core,' colloquially known as the 'Gencrate/CSC' is an ancient, boxy design first put in use by the pioneer colonists of what's now known \ + as the NRI. The Gencrate is at its core a matter resequencer, a highly specialized subtype of biogenerator which performs a sort of transmutation using organic \ + compounds; normally from large-scale crops or waste product. With sufficient supply, the machine is capable of making a wide variety of provisions, \ + from clothes to food to first-aid medical supplies." + icon = 'modular_skyrat/modules/food_replicator/icons/biogenerator.dmi' + circuit = /obj/item/circuitboard/machine/biogenerator/food_replicator + efficiency = 0.75 + productivity = 0.75 + show_categories = list( + RND_CATEGORY_NRI_FOOD, + RND_CATEGORY_NRI_MEDICAL, + RND_CATEGORY_NRI_CLOTHING, + ) + +/obj/item/circuitboard/machine/biogenerator/food_replicator + name = "Colonial Supply Core" + build_path = /obj/machinery/biogenerator/food_replicator diff --git a/modular_skyrat/modules/food_replicator/code/replicator_designs/replicator_clothing.dm b/modular_skyrat/modules/food_replicator/code/replicator_designs/replicator_clothing.dm new file mode 100644 index 00000000000..b7973d2fb3a --- /dev/null +++ b/modular_skyrat/modules/food_replicator/code/replicator_designs/replicator_clothing.dm @@ -0,0 +1,54 @@ +/datum/design/colonial_under + name = "Colonial Uniform" + id = "slavic_under" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 200) + build_path = /obj/item/clothing/under/colonial + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_CLOTHING, + ) + +/datum/design/colonial_boots + name = "Colonial Half-Boots" + id = "slavic_boots" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 150) + build_path = /obj/item/clothing/shoes/jackboots/colonial + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_CLOTHING, + ) + +/datum/design/colonial_cloak + name = "Colonial Cloak" + id = "slavic_cloak" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 250) + build_path = /obj/item/clothing/neck/cloak/colonial + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_CLOTHING, + ) + +/datum/design/cool_hat + name = "Colonial Cap" + id = "slavic_cap" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 150) + build_path = /obj/item/clothing/head/hats/colonial + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_CLOTHING, + ) + +/datum/design/cool_gloves + name = "Black Gloves" + id = "slavic_gloves" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 100) + build_path = /obj/item/clothing/gloves/color/black + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_CLOTHING, + ) diff --git a/modular_skyrat/modules/food_replicator/code/replicator_designs/replicator_food.dm b/modular_skyrat/modules/food_replicator/code/replicator_designs/replicator_food.dm new file mode 100644 index 00000000000..389ca245089 --- /dev/null +++ b/modular_skyrat/modules/food_replicator/code/replicator_designs/replicator_food.dm @@ -0,0 +1,165 @@ +/datum/design/ration + name = "Foreign Colonization Ration" + id = "slavic_mre" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 550) + build_path = /obj/item/storage/box/colonial_rations + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_FOOD, + ) + +/datum/design/pljeskavica + name = "Foreign Colonization Ration, Main Course" + id = "slavic_burger" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 200) + build_path = /obj/item/food/colonial_course/pljeskavica + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_FOOD, + ) + +/datum/design/nachos + name = "Foreign Colonization Ration, Side Dish" + id = "mexican_chips" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 150) + build_path = /obj/item/food/colonial_course/nachos + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_FOOD, + ) + +/datum/design/blins + name = "Foreign Colonization Ration, Dessert" + id = "slavic_crepes" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 100) + build_path = /obj/item/food/colonial_course/blins + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_FOOD, + ) + +///Despite being in the medical.dm file, it's still used to fill your hunger up, as such, technically, is food. +/datum/design/glucose + name = "EVA Glucose Injector" + id = "slavic_glupen" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 150) + build_path = /obj/item/reagent_containers/hypospray/medipen/glucose + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_FOOD, + ) + +/datum/design/spork + name = "Foreign Colonization Ration, Utensils" + id = "slavic_utens" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 75) + build_path = /obj/item/storage/box/utensils + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_FOOD, + ) + +/datum/design/bubblegum + name = "Foreign Colonization Ration, Bubblegum Pack" + id = "slavic_gum" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 100) + build_path = /obj/item/storage/box/gum/colonial + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_FOOD, + ) + +/datum/design/cup + name = "Empty Paper Cup" + id = "slavic_cup" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 10) + build_path = /obj/item/reagent_containers/cup/glass/coffee/colonial/empty + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_FOOD, + ) + +/datum/design/tea + name = "Powdered Black Tea" + id = "slavic_tea" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 4) + make_reagent = /datum/reagent/consumable/powdered_tea + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_FOOD, + ) + +/datum/design/coffee + name = "Powdered Coffee" + id = "slavic_coffee" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 4) + make_reagent = /datum/reagent/consumable/powdered_coffee + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_FOOD, + ) + +/datum/design/cocoa + name = "Powdered Hot Chocolate" + id = "slavic_coco" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 4) + make_reagent = /datum/reagent/consumable/powdered_coco + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_FOOD, + ) + +/datum/design/lemonade + name = "Powdered Lemonade" + id = "slavic_lemon" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 4) + make_reagent = /datum/reagent/consumable/powdered_lemonade + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_FOOD, + ) + +/datum/design/replicator_sugar + name = "Sugar" + id = "slavic_sugar" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 5) + make_reagent = /datum/reagent/consumable/sugar + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_FOOD, + ) + +/datum/design/powdered_milk + name = "Powdered Milk" + id = "slavic_milk" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 4) + make_reagent = /datum/reagent/consumable/powdered_milk + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_FOOD, + ) + +/datum/design/water + name = "Water" + id = "slavic_water" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 1) + make_reagent = /datum/reagent/water + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_FOOD, + ) diff --git a/modular_skyrat/modules/food_replicator/code/replicator_designs/replicator_medical.dm b/modular_skyrat/modules/food_replicator/code/replicator_designs/replicator_medical.dm new file mode 100644 index 00000000000..31b14284387 --- /dev/null +++ b/modular_skyrat/modules/food_replicator/code/replicator_designs/replicator_medical.dm @@ -0,0 +1,113 @@ +/datum/design/pocket_medkit + name = "Empty Pocket First Aid Kit" + id = "slavic_cfap" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 250) + build_path = /obj/item/storage/bag/pocket_medkit + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_MEDICAL, + ) + +/datum/design/medipouch + name = "Empty Medipen Pouch" + id = "slavic_medipouch" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 250) + build_path = /obj/item/storage/bag/medipen + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_MEDICAL, + ) + +/datum/design/sutures + name = "Hemostatic Sutures" + id = "slavic_suture" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 150) + build_path = /obj/item/stack/medical/suture/bloody + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_MEDICAL, + ) + +/datum/design/mesh + name = "Hemostatic Mesh" + id = "slavic_mesh" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 150) + build_path = /obj/item/stack/medical/mesh/bloody + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_MEDICAL, + ) + +/datum/design/bruise_patch + name = "Bruise Patch" + id = "slavic_bruise" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 250) + build_path = /obj/item/reagent_containers/pill/patch/libital + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_MEDICAL, + ) + +/datum/design/burn_patch + name = "Burn Patch" + id = "slavic_burn" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 250) + build_path = /obj/item/reagent_containers/pill/patch/aiuri + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_MEDICAL, + ) + +/datum/design/gauze + name = "Medical Gauze" + id = "slavic_gauze" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 100) + build_path = /obj/item/stack/medical/gauze + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_MEDICAL, + ) + +/datum/design/epi_pill + name = "Epinephrine Pill" + id = "slavic_epi" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 75) + build_path = /obj/item/reagent_containers/pill/epinephrine + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_MEDICAL, + ) + +/datum/design/conv_pill + name = "Convermol Pill" + id = "slavic_conv" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 75) + build_path = /obj/item/reagent_containers/pill/convermol + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_MEDICAL, + ) + +/datum/design/multiver_pill + name = "Multiver Pill" + id = "slavic_multiver" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass = 75) + build_path = /obj/item/reagent_containers/pill/multiver + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_NRI_MEDICAL, + ) + +#undef RND_CATEGORY_NRI_FOOD +#undef RND_CATEGORY_NRI_MEDICAL +#undef RND_CATEGORY_NRI_CLOTHING diff --git a/modular_skyrat/modules/food_replicator/code/storage.dm b/modular_skyrat/modules/food_replicator/code/storage.dm new file mode 100644 index 00000000000..09ae7bece12 --- /dev/null +++ b/modular_skyrat/modules/food_replicator/code/storage.dm @@ -0,0 +1,40 @@ +/obj/item/storage/bag/medipen + name = "colonial medipen pouch" + desc = "A pouch for your (medi-)pens that goes in your pocket." + icon = 'modular_skyrat/modules/food_replicator/icons/pouch.dmi' + icon_state = "medipen_pouch" + slot_flags = ITEM_SLOT_POCKETS + w_class = WEIGHT_CLASS_BULKY + resistance_flags = FLAMMABLE + +/obj/item/storage/bag/medipen/update_icon_state() + icon_state = "[initial(icon_state)]_[contents.len]" + return ..() + +/obj/item/storage/bag/medipen/Initialize(mapload) + . = ..() + update_appearance() + +/obj/item/storage/bag/medipen/Initialize(mapload) + . = ..() + atom_storage.max_specific_storage = WEIGHT_CLASS_TINY + atom_storage.max_total_storage = 4 + atom_storage.max_slots = 4 + atom_storage.numerical_stacking = FALSE + atom_storage.can_hold = typecacheof(list(/obj/item/reagent_containers/hypospray/medipen, /obj/item/pen, /obj/item/flashlight/pen)) + +/obj/item/storage/bag/pocket_medkit + name = "colonial first aid kit" + desc = "A medical pouch that goes in your pocket. Can be used to store things unrelated to medicine, except for guns, ammo and raw materials." + icon = 'modular_skyrat/modules/food_replicator/icons/pouch.dmi' + icon_state = "cfak" + slot_flags = ITEM_SLOT_POCKETS + w_class = WEIGHT_CLASS_BULKY + resistance_flags = FLAMMABLE + +/obj/item/storage/bag/pocket_medkit/Initialize(mapload) + . = ..() + atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL + atom_storage.max_total_storage = 4 + atom_storage.max_slots = 4 + atom_storage.cant_hold = typecacheof(list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/stack/sheet)) diff --git a/modular_skyrat/modules/food_replicator/icons/biogenerator.dmi b/modular_skyrat/modules/food_replicator/icons/biogenerator.dmi new file mode 100644 index 0000000000000000000000000000000000000000..98ead8bd6bcf4f33e808d391d44d4874f97aca7b GIT binary patch literal 758 zcmVC00012P)t-sz`(#6 z88JOSStTVtiZe5BE;dP0cAG&w2MQB0GEPh$D2$AZ=jH8DQBl6b%kJ*(U*8bH*B8>I z8p(PcsUs-Jv^WP72r(uJCmIHgkBwt#WNdYSz`(#wwC0Hb0004WQchCV=-0C=38(!CCXFcbygxqXTTRzu`ZCl>=T4Dt%3!WEi8Ywm3{ zzP(iz2N>wk9TwbbL6xWJB0ZADxP9lr;oV`?M2N%+WvjJ2;*g24u7Tg%z zl<7eON^3CStW!v?jyb!doM4_8H#eqvNDbpwL@fg7%~zpmfoPd!u7y#)zjc)F{?_Vw zt7I{(n z6$n5;f&g(PEyjT2P#oN=`bJb0SAfz3c|$P;l*&&UrU0#uJ}UwqeAWb(Q!=yW@O_MPDF&Wnc_(x!Q zz%LnrXF7mq1YYO>{|GFfgv&dRS91}(+4yW1N!}-v0I>dz_=r-T|pCb1p0v7NM#3M+@IPxIBm%;byHtr z-QNcElOQj(nau%Hvh4{eTmdwm0000009cGV-?O34_q(Ca?|WSjqR#JoT@Rwp?|WSb z7_}d5;(#`BK-YC?0{{R300924yMMkA6#e-@?B@e`egFUf0001gU-WO+LpRtQu=NI; o148Hbt=EI_{{uMx0|2D(2^{<;79!>fcK`qY07*qoM6N<$f{dR+!2kdN literal 0 HcmV?d00001 diff --git a/modular_skyrat/modules/food_replicator/icons/clothing.dmi b/modular_skyrat/modules/food_replicator/icons/clothing.dmi new file mode 100644 index 0000000000000000000000000000000000000000..87b63178b5d329249667d4b0446afec210ab9e40 GIT binary patch literal 965 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 bj_JMJabC^y#A_{_&nSQ~!lKJj&Jq6t-5w@{ literal 0 HcmV?d00001 diff --git a/modular_skyrat/modules/food_replicator/icons/pouch.dmi b/modular_skyrat/modules/food_replicator/icons/pouch.dmi new file mode 100644 index 0000000000000000000000000000000000000000..9756206d0dffbecb2328e5ddad2024b8b6f4b934 GIT binary patch literal 968 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 Zp!5_$M(%RJ8}l~=&{o%1t5da&_%DitQ$_#) literal 0 HcmV?d00001 diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/serviette.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/serviette.dm index fc51887bf76..2a00fd85f26 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/serviette.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/serviette.dm @@ -5,9 +5,10 @@ icon = 'modular_skyrat/modules/modular_items/lewd_items/icons/obj/lewd_items/lewd_items.dmi' /// How much time it takes to clean something using it var/cleanspeed = 5 SECONDS + /// Which item spawns after it's used + var/used_serviette = /obj/item/serviette_used w_class = WEIGHT_CLASS_TINY item_flags = NOBLUDGEON - gender = PLURAL /obj/item/serviette_used name = "dirty serviette" @@ -35,9 +36,9 @@ user.mind?.adjust_experience(/datum/skill/cleaning, max(round(cleanies.beauty/CLEAN_SKILL_BEAUTY_ADJUSTMENT), 0)) //again, intentional that this does NOT round but mops do. qdel(target) qdel(src) - var/obj/item/serviette_used/used_serviette = new /obj/item/serviette_used + var/obj/item/serviette_used/used_cloth = new used_serviette remove_item_from_storage(user) - user.put_in_hands(used_serviette) + user.put_in_hands(used_cloth) else if(istype(target, /obj/structure/window)) user.visible_message(span_notice("[user] begins to clean \the [target.name] with [src]..."), span_notice("You begin to clean \the [target.name] with [src]...")) @@ -47,9 +48,9 @@ target.set_opacity(initial(target.opacity)) user.mind?.adjust_experience(/datum/skill/cleaning, CLEAN_SKILL_GENERIC_WASH_XP) qdel(src) - var/obj/item/serviette_used/used_serviette = new /obj/item/serviette_used + var/obj/item/serviette_used/used_cloth = new used_serviette remove_item_from_storage(user) - user.put_in_hands(used_serviette) + user.put_in_hands(used_cloth) else user.visible_message(span_notice("[user] begins to clean \the [target.name] with [src]..."), span_notice("You begin to clean \the [target.name] with [src]...")) @@ -62,9 +63,9 @@ target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) user.mind?.adjust_experience(/datum/skill/cleaning, CLEAN_SKILL_GENERIC_WASH_XP) qdel(src) - var/obj/item/serviette_used/used_serviette = new /obj/item/serviette_used + var/obj/item/serviette_used/used_cloth = new used_serviette remove_item_from_storage(user) - user.put_in_hands(used_serviette) + user.put_in_hands(used_cloth) /* * SERVIETTE PACK diff --git a/modular_skyrat/modules/novaya_ert/code/rationpacks.dm b/modular_skyrat/modules/novaya_ert/code/rationpacks.dm deleted file mode 100644 index 170411fa008..00000000000 --- a/modular_skyrat/modules/novaya_ert/code/rationpacks.dm +++ /dev/null @@ -1,55 +0,0 @@ -/obj/item/food/nri_course - name = "undefined NRI course" - desc = "Something you shouldn't see. But it's edible." - icon = 'modular_skyrat/modules/novaya_ert/icons/rationpack.dmi' - icon_state = "main_course" - food_reagents = list(/datum/reagent/consumable/nutriment = 20) - tastes = list("crayon powder" = 1) - foodtypes = VEGETABLES | GRAIN - w_class = WEIGHT_CLASS_SMALL - -/obj/item/food/nri_course/entree - name = "combat ration entree" - desc = "A vacuum-sealed weather-resistant spaceproof package written in Pan-Slavic, labelled 'завтрак'. It supposedly contains protein-enriched wholewheat biscuits, liver pate and blueberry jam." - food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 4) - tastes = list("wholewheat biscuits" = 5, "liver pate" = 5, "blueberry jam" = 5) - foodtypes = FRUIT | GRAIN | MEAT | BREAKFAST - -/obj/item/food/nri_course/main - name = "combat ration main course" - desc = "A vacuum-sealed weather-resistant spaceproof package written in Pan-Slavic, labelled 'обед'. It supposedly contains snap-to-heat buckwheat porridge and tushonka and snap-to-heat borscht." - food_reagents = list(/datum/reagent/consumable/nutriment = 17, /datum/reagent/consumable/nutriment/vitamin = 8) - icon_state = "side_dish" - tastes = list("hot buckwheat porridge with canned beef" = 5, "hot imperial borscht" = 5) - foodtypes = VEGETABLES | GRAIN | MEAT - -/obj/item/food/nri_course/side - name = "combat ration side-dish" - desc = "A vacuum-sealed weather-resistant spaceproof package written in Pan-Slavic, labelled 'закуска'. It supposedly contains a large carnitine-enriched pryanik, breadsticks and apple sauce." - food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) - icon_state = "dessert" - tastes = list("pryaniki" = 10, "breadsticks" = 5, "apple sauce" = 3) - foodtypes = SUGAR | GRAIN | FRUIT - -/obj/item/storage/box/nri_rations - name = "NRI combat rations" - desc = "A packaged military MRE for soldiers in extended deployments and people who can deal with the shits after finishing one. Everything on the back and front is written in Pan-Slavic, but you can make out 'Једите пре: Сентябрь 2603'." - icon = 'modular_skyrat/modules/novaya_ert/icons/rationpack.dmi' - icon_state = "mre_package" - illustration = null - -/obj/item/storage/box/nri_rations/Initialize(mapload) - . = ..() - atom_storage.max_slots = 7 - -/obj/item/storage/box/nri_rations/PopulateContents() - new /obj/item/food/nri_course/entree(src) - new /obj/item/food/nri_course/main(src) - new /obj/item/food/nri_course/side(src) - new /obj/item/storage/box/gum(src) - new /obj/item/reagent_containers/cup/glass/waterbottle(src) - new /obj/item/storage/fancy/cigarettes/cigpack_robust(src) - new /obj/item/storage/box/matches(src) - -/obj/item/storage/box/nri_rations/attack_self(mob/user, modifiers) - icon_state = "mre_package_open" diff --git a/modular_skyrat/modules/novaya_ert/code/survival_pack.dm b/modular_skyrat/modules/novaya_ert/code/survival_pack.dm index 7dc3b639166..48bd7c2e5ff 100644 --- a/modular_skyrat/modules/novaya_ert/code/survival_pack.dm +++ b/modular_skyrat/modules/novaya_ert/code/survival_pack.dm @@ -10,7 +10,7 @@ new /obj/item/tank/internals/emergency_oxygen/double(src) new /obj/item/stack/spacecash/c1000(src) new /obj/item/storage/pill_bottle/iron(src) - new /obj/item/storage/box/nri_rations(src) + new /obj/item/storage/box/colonial_rations(src) new /obj/item/storage/box/nri_pens(src) new /obj/item/storage/box/nri_flares(src) new /obj/item/crowbar/red(src) diff --git a/modular_skyrat/modules/novaya_ert/icons/rationpack.dmi b/modular_skyrat/modules/novaya_ert/icons/rationpack.dmi deleted file mode 100644 index 81b22e76748d3c9e438d403997df4e3e3fe127f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 694 zcmV;n0!jUeP)V=-0C=2*kUI{8Fc3s*`xGnaqx{-55eQMh6)X#H@G8PayAHX2tk5QMH&64X znHuhG*N@N)z21<8Vt^Z54@a%upq;)dw$f&c&ks7XXY zR7i>Kl|N6zFc8Jv5XxG+rmWm0WycX>ty`Jl64EjTjL^k36=2`$jBTw9K(|m>qjwLd@l9*$hARi}kS1x$Ld^6v$#KH4KZb5-# z6U^({cPtm&UlO^+%1G4b5}Kg)gw{>uA1*woqN0*>0s13raO>E=1zuyRRAuz>!L6eA zSfh4L>`wuUN@>Kx=+l99t>`s|g5Zx+j_5M}N=CcW3@@I*P|)>$;%9%pYfmFo2O<=7 zJ%FT%881E$L@4O`cT`exUffkgY(qiUk9P>b`6KZf3V!%;t1#jZ#D1Odt&Vw5?34{h&dE`sH+Fv-8U8<)dBhmt$DeJv>@uLxdnHVjJ2UdYoqf?38 z7KVNqmkKCWrYy{)FCcbPP;z;xSj%E+ApQ=K#?rvDFtgyTELTR$-hi-E_J1L@Ru;zT z$KF6LY5%Wf!xLb!=?w_0h<9wt)@s{71Kry5Gk#+0)KelLK03TlByL0%UH-QfA19LM c4f=2T21FBL_zn4+;{X5v07*qoM6N<$f;7@YNB{r; diff --git a/tgstation.dme b/tgstation.dme index 76a71a16a86..0bbc971ec10 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6650,6 +6650,15 @@ #include "modular_skyrat\modules\faction\code\mapping\mapping_helpers.dm" #include "modular_skyrat\modules\faction\code\mapping\ruins.dm" #include "modular_skyrat\modules\fauna_reagent\fauna_reagent.dm" +#include "modular_skyrat\modules\food_replicator\code\clothing.dm" +#include "modular_skyrat\modules\food_replicator\code\medical.dm" +#include "modular_skyrat\modules\food_replicator\code\rationpacks.dm" +#include "modular_skyrat\modules\food_replicator\code\reagents.dm" +#include "modular_skyrat\modules\food_replicator\code\replicator.dm" +#include "modular_skyrat\modules\food_replicator\code\storage.dm" +#include "modular_skyrat\modules\food_replicator\code\replicator_designs\replicator_clothing.dm" +#include "modular_skyrat\modules\food_replicator\code\replicator_designs\replicator_food.dm" +#include "modular_skyrat\modules\food_replicator\code\replicator_designs\replicator_medical.dm" #include "modular_skyrat\modules\GAGS\greyscale_configs.dm" #include "modular_skyrat\modules\GAGS\nsfw\greyscale_configs.dm" #include "modular_skyrat\modules\ghostcafe\code\dusts_on_catatonia.dm" @@ -7158,7 +7167,6 @@ #include "modular_skyrat\modules\novaya_ert\code\id.dm" #include "modular_skyrat\modules\novaya_ert\code\mod_suit.dm" #include "modular_skyrat\modules\novaya_ert\code\outfit.dm" -#include "modular_skyrat\modules\novaya_ert\code\rationpacks.dm" #include "modular_skyrat\modules\novaya_ert\code\shield.dm" #include "modular_skyrat\modules\novaya_ert\code\suit.dm" #include "modular_skyrat\modules\novaya_ert\code\surplus_armor.dm"