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 00000000000..98ead8bd6bc
Binary files /dev/null and b/modular_skyrat/modules/food_replicator/icons/biogenerator.dmi differ
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 00000000000..87b63178b5d
Binary files /dev/null and b/modular_skyrat/modules/food_replicator/icons/clothing.dmi differ
diff --git a/modular_skyrat/modules/food_replicator/icons/clothing_digi.dmi b/modular_skyrat/modules/food_replicator/icons/clothing_digi.dmi
new file mode 100644
index 00000000000..baec8fc7b5d
Binary files /dev/null and b/modular_skyrat/modules/food_replicator/icons/clothing_digi.dmi differ
diff --git a/modular_skyrat/modules/food_replicator/icons/clothing_worn.dmi b/modular_skyrat/modules/food_replicator/icons/clothing_worn.dmi
new file mode 100644
index 00000000000..35b4f4b497c
Binary files /dev/null and b/modular_skyrat/modules/food_replicator/icons/clothing_worn.dmi differ
diff --git a/modular_skyrat/modules/food_replicator/icons/medicine.dmi b/modular_skyrat/modules/food_replicator/icons/medicine.dmi
new file mode 100644
index 00000000000..38cbffbcf13
Binary files /dev/null and b/modular_skyrat/modules/food_replicator/icons/medicine.dmi differ
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 00000000000..9756206d0df
Binary files /dev/null and b/modular_skyrat/modules/food_replicator/icons/pouch.dmi differ
diff --git a/modular_skyrat/modules/food_replicator/icons/rationpack.dmi b/modular_skyrat/modules/food_replicator/icons/rationpack.dmi
new file mode 100644
index 00000000000..c0422ef3ca0
Binary files /dev/null and b/modular_skyrat/modules/food_replicator/icons/rationpack.dmi differ
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 81b22e76748..00000000000
Binary files a/modular_skyrat/modules/novaya_ert/icons/rationpack.dmi and /dev/null differ
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"