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>
This commit is contained in:
Stalkeros2
2023-08-27 17:42:52 -04:00
committed by GitHub
co-authored by GoldenAlpharex
parent afcf75230b
commit cb8a94d769
24 changed files with 880 additions and 94 deletions
+25 -25
View File
@@ -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" = (
+1 -1
View File
@@ -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,
@@ -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
@@ -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 ..()
@@ -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 ..()
@@ -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.\
<br> Looks good <i>enough</i> 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.\
<br> 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.\
<br> 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. \
<br> This particular one comes prefilled with a single serving of coffee powder."
special_desc = "A small instruction on the side reads: <i>\"For use in food replicators; mix water and powdered solutions in one-to-one proportions. \
<br> For cocoa, mix milk and powdered solution in one-to-one proportion.\"</i>"
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: <i>\"Foreign colonization ration, model J: mixed origin, adult. Bubblegum package, medicinal, recreational. <br>\
Do not overconsume. Certain strips contain nicotine.\"</i>"
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 <i>human</i> 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 <i>combined</i> 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. <br>\
The lack of any imprinted dates, as well as its origin, <i>the food replicator</i>, 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)
@@ -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 ..()
@@ -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
@@ -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,
)
@@ -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,
)
@@ -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
@@ -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))
Binary file not shown.

After

Width:  |  Height:  |  Size: 758 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 965 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 968 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

@@ -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
@@ -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"
@@ -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)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 694 B

+9 -1
View File
@@ -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"