diff --git a/GainStation13/code/modules/research/designs/nutri_designs.dm b/GainStation13/code/modules/research/designs/nutri_designs.dm
index b0f2216a..ba187af0 100644
--- a/GainStation13/code/modules/research/designs/nutri_designs.dm
+++ b/GainStation13/code/modules/research/designs/nutri_designs.dm
@@ -15,7 +15,7 @@
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY
/datum/design/fatoray_cannon_weak
- name = "Cannonshot Fatoray"
+ name = "Basic Cannonshot Fatoray"
id = "fatoray_cannon_weak"
build_type = PROTOLATHE
materials = list(MAT_METAL = 10000, MAT_GLASS = 8000, MAT_CALORITE = 20000)
@@ -24,9 +24,9 @@
category = list("Weapons")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY
-/datum/design/alter_ray
+/datum/design/alter_ray_metabolism
name = "AL-T-Ray: Metabolism"
- id = "alter_ray"
+ id = "alter_ray_metabolism"
build_type = PROTOLATHE
materials = list(MAT_METAL = 10000, MAT_GLASS = 8000, MAT_CALORITE = 26000)
construction_time = 200
@@ -35,7 +35,7 @@
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY
-/datum/design/alter_ray
+/datum/design/alter_ray_reverser
name = "AL-T-Ray: Reverser"
id = "alter_ray_reverser"
build_type = PROTOLATHE
@@ -55,7 +55,7 @@
construction_time = 75
build_path = /obj/item/clothing/neck/petcollar/calorite
category = list("Equipment", "Misc", "Medical Designs")
- departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
+ departmental_flags = DEPARTMENTAL_FLAG_ALL
/datum/design/cyberimp_nutriment_turbo
name = "Nutriment Pump Implant TURBO"
@@ -66,7 +66,7 @@
materials = list(MAT_METAL = 800, MAT_GLASS = 800, MAT_GOLD = 750, MAT_URANIUM = 1000)
build_path = /obj/item/organ/cyberimp/chest/nutriment/turbo
category = list("Misc", "Medical Designs")
- departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
+ departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
/datum/design/bluespace_belt
name = "Bluespace Belt"
@@ -74,7 +74,156 @@
id = "bluespace_belt"
build_type = PROTOLATHE
construction_time = 100
- materials = list(MAT_SILVER = 4000, MAT_GOLD = 4000, MAT_BLUESPACE = 2000)
+ materials = list(MAT_SILVER = 4000, MAT_GOLD = 4000, MAT_BLUESPACE = 2000, )
build_path = /obj/item/bluespace_belt
category = list("Misc", "Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/cookie_synthesizer
+ name = "Cookie Synthesizer"
+ desc = "A self-charging miraculous device that's able to produce cookies."
+ id = "cookie_synthesizer"
+ build_type = PROTOLATHE
+ construction_time = 100
+ materials = list(MAT_SILVER = 4000, MAT_URANIUM = 1000, MAT_BLUESPACE = 1000, MAT_CALORITE = 2000)
+ build_path = /obj/item/cookiesynth
+ category = list("Misc", "Medical Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SERVICE
+
+//these are made in mech fabricator
+/datum/design/borg_cookie_synthesizer
+ name = "Cyborg Upgrade (Cookie Synthesizer)"
+ id = "borg_upgrade_cookiesynthesizer"
+ build_type = MECHFAB
+ build_path = /obj/item/borg/upgrade/cookiesynth
+ materials = list(MAT_METAL=10000, MAT_GOLD=1500, MAT_URANIUM=250, MAT_PLASMA=1500)
+ construction_time = 100
+ category = list("Cyborg Upgrade Modules")
+
+/datum/design/borg_fatoray
+ name = "Cyborg Upgrade (Fatoray)"
+ id = "borg_upgrade_fatoray"
+ build_type = MECHFAB
+ build_path = /obj/item/borg/upgrade/fatoray
+ materials = list(MAT_METAL = 8000, MAT_GLASS = 6000, MAT_CALORITE = 10000)
+ construction_time = 100
+ category = list("Cyborg Upgrade Modules")
+
+/datum/design/borg_feedtube
+ name = "Cyborg Upgrade (Feeding Tube)"
+ id = "borg_upgrade_feedingtube"
+ build_type = MECHFAB
+ build_path = /obj/item/borg/upgrade/feedtube
+ materials = list(MAT_METAL = 8000, MAT_GLASS = 6000, MAT_CALORITE = 10000)
+ construction_time = 100
+ category = list("Cyborg Upgrade Modules")
+
+//todo: make a seperate file for extra borg modules
+
+/obj/item/borg/upgrade/cookiesynth
+ name = "cyborg cookie synthesizer"
+ desc = "An extra module that allows cyborgs to dispense cookies."
+ icon_state = "cyborg_upgrade3"
+
+/obj/item/borg/upgrade/cookiesynth/action(mob/living/silicon/robot/R, user = usr)
+ . = ..()
+ if(.)
+ var/obj/item/cookiesynth/S = new(R.module)
+ R.module.basic_modules += S
+ R.module.add_module(S, FALSE, TRUE)
+
+/obj/item/borg/upgrade/cookiesynth/deactivate(mob/living/silicon/robot/R, user = usr)
+ . = ..()
+ if (.)
+ var/obj/item/cookiesynth/S = locate() in R.module
+ R.module.remove_module(S, TRUE)
+
+
+/obj/item/gun/energy/fatoray/weak/cyborg
+ name = "cyborg fatoray"
+ desc = "An integrated fatoray for cyborg use."
+ icon = 'GainStation13/icons/obj/fatoray.dmi'
+ icon_state = "fatoray_weak"
+ can_charge = FALSE
+ selfcharge = EGUN_SELFCHARGE_BORG
+ cell_type = /obj/item/stock_parts/cell/secborg
+ charge_delay = 5
+
+/obj/item/borg/upgrade/fatoray
+ name = "cyborg fatoray module"
+ desc = "An extra module that allows cyborgs to use fatoray weapons."
+ icon_state = "cyborg_upgrade3"
+
+/obj/item/borg/upgrade/fatoray/action(mob/living/silicon/robot/R, user = usr)
+ . = ..()
+ if(.)
+ var/obj/item/gun/energy/fatoray/weak/cyborg/S = new(R.module)
+ R.module.basic_modules += S
+ R.module.add_module(S, FALSE, TRUE)
+
+/obj/item/borg/upgrade/fatoray/deactivate(mob/living/silicon/robot/R, user = usr)
+ . = ..()
+ if (.)
+ var/obj/item/gun/energy/fatoray/weak/cyborg/S = locate() in R.module
+ R.module.remove_module(S, TRUE)
+
+
+
+//cyborg regen feeding tube
+
+/obj/item/reagent_containers/borghypo/feeding_tube
+ name = "cyborg feeding tube"
+ desc = "A feeding tube module for a cyborg."
+ icon = 'GainStation13/icons/obj/feeding_tube.dmi'
+ icon_state = "borg_tube"
+ possible_transfer_amounts = list(5,10,20)
+ charge_cost = 20
+ recharge_time = 3
+ accepts_reagent_upgrades = FALSE
+ reagent_ids = list(/datum/reagent/consumable/cream, /datum/reagent/consumable/milk, /datum/reagent/consumable/nutriment)
+
+/obj/item/reagent_containers/borghypo/feeding_tube/attack(mob/living/carbon/M, mob/user)
+ var/datum/reagents/R = reagent_list[mode]
+ if(!R.total_volume)
+ to_chat(user, "The injector is empty.")
+ return
+ if(!istype(M))
+ return
+ if(R.total_volume && M.can_inject(user, 1, user.zone_selected,bypass_protection))
+ to_chat(M, "You feel the cyborg's feeding tube pour liquid down your throat!")
+ to_chat(user, "You feed [M] with the integrated feeding tube.")
+ var/fraction = min(amount_per_transfer_from_this/R.total_volume, 1)
+ R.reaction(M, INJECT, fraction)
+ if(M.reagents)
+ var/trans = R.trans_to(M, amount_per_transfer_from_this)
+ to_chat(user, "[trans] unit\s injected. [R.total_volume] unit\s remaining.")
+
+/obj/item/reagent_containers/borghypo/feeding_tube/regenerate_reagents()
+ if(iscyborg(src.loc))
+ var/mob/living/silicon/robot/R = src.loc
+ if(R && R.cell)
+ for(var/i in modes) //Lots of reagents in this one, so it's best to regenrate them all at once to keep it from being tedious.
+ var/valueofi = modes[i]
+ var/datum/reagents/RG = reagent_list[valueofi]
+ if(RG.total_volume < RG.maximum_volume)
+ R.cell.use(charge_cost)
+ RG.add_reagent(reagent_ids[valueofi], 5)
+
+
+/obj/item/borg/upgrade/feedtube
+ name = "cyborg feeding tube module"
+ desc = "An extra module that allows cyborgs to use an integrated feeding tube along with a synthesizer."
+ icon_state = "cyborg_upgrade3"
+
+/obj/item/borg/upgrade/feedtube/action(mob/living/silicon/robot/R, user = usr)
+ . = ..()
+ if(.)
+ var/obj/item/reagent_containers/borghypo/feeding_tube/S = new(R.module)
+ R.module.basic_modules += S
+ R.module.add_module(S, FALSE, TRUE)
+
+/obj/item/borg/upgrade/feedtube/deactivate(mob/living/silicon/robot/R, user = usr)
+ . = ..()
+ if (.)
+ var/obj/item/reagent_containers/borghypo/feeding_tube/S = locate() in R.module
+ R.module.remove_module(S, TRUE)
diff --git a/GainStation13/code/modules/research/techweb/nutritech_nodes.dm b/GainStation13/code/modules/research/techweb/nutritech_nodes.dm
index b7a3f2b4..3abd3cf6 100644
--- a/GainStation13/code/modules/research/techweb/nutritech_nodes.dm
+++ b/GainStation13/code/modules/research/techweb/nutritech_nodes.dm
@@ -4,8 +4,8 @@
id = "nutritech_tools"
display_name = "Nutri-Tech Tools"
description = "Ending world hunger was never made easier!"
- prereq_ids = list("biotech", "adv_engi") // add "engineering" if the designs get complicated later on
- design_ids = list("calorite_collar", "ci-nutrimentturbo", "bluespace_belt", "adipoelectric_transformer")
+ prereq_ids = list("biotech", "adv_engi")
+ design_ids = list("calorite_collar", "ci-nutrimentturbo", "bluespace_belt", "adipoelectric_transformer", "cookie_synthesizer", "borg_upgrade_cookiesynthesizer", "borg_upgrade_feedingtube")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
boost_item_paths = list(/obj/item/gun/energy/fatoray, /obj/item/gun/energy/fatoray/cannon, /obj/item/trash/fatoray_scrap1, /obj/item/trash/fatoray_scrap2)
export_price = 5000
@@ -16,7 +16,7 @@
display_name = "Nutri-Tech Weapons"
description = "Ever wanted to reach your daily caloric intake in just 5 seconds?"
prereq_ids = list("biotech", "adv_engi")
- design_ids = list("fatoray_weak", "fatoray_cannon_weak", "alter_ray", "alter_ray_reverser")
+ design_ids = list("fatoray_weak", "fatoray_cannon_weak", "alter_ray_metabolism", "alter_ray_reverser", "borg_upgrade_fatoray")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
boost_item_paths = list(/obj/item/gun/energy/fatoray, /obj/item/gun/energy/fatoray/cannon, /obj/item/trash/fatoray_scrap1, /obj/item/trash/fatoray_scrap2)
export_price = 10000
diff --git a/GainStation13/icons/obj/feeding_tube.dmi b/GainStation13/icons/obj/feeding_tube.dmi
index 32abee8b..b989e8ca 100644
Binary files a/GainStation13/icons/obj/feeding_tube.dmi and b/GainStation13/icons/obj/feeding_tube.dmi differ
diff --git a/_maps/RandomRuins/SpaceRuins/feeders_den.dmm b/_maps/RandomRuins/SpaceRuins/feeders_den.dmm
index 52efe894..e2b33361 100644
--- a/_maps/RandomRuins/SpaceRuins/feeders_den.dmm
+++ b/_maps/RandomRuins/SpaceRuins/feeders_den.dmm
@@ -105,7 +105,7 @@
"qC" = (/obj/structure/falsewall/plastitanium,/obj/structure/fans/tiny/invisible,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"qD" = (/obj/machinery/computer/security/telescreen/entertainment,/turf/closed/wall/r_wall/syndicate,/area/ruin/space/has_grav/feedersden)
"qF" = (/obj/structure/lattice,/turf/closed/mineral/random,/area/ruin/unpowered/no_grav)
-"qM" = (/obj/structure/closet/crate/secure/weapon,/obj/item/clothing/glasses/hud/health/night,/obj/item/kitchen/knife/combat,/obj/effect/turf_decal/tile/brown{dir = 1},/obj/effect/turf_decal/tile/brown{dir = 8},/obj/effect/turf_decal/tile/brown,/obj/item/gun/energy/fatoray,/obj/item/book/granter/spell/fattening,/obj/item/gun/energy/laser/alter_ray/gainrate,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
+"qM" = (/obj/structure/closet/crate/secure/weapon,/obj/item/clothing/glasses/hud/health/night,/obj/item/kitchen/knife/combat,/obj/effect/turf_decal/tile/brown{dir = 1},/obj/effect/turf_decal/tile/brown{dir = 8},/obj/effect/turf_decal/tile/brown,/obj/item/gun/energy/fatoray,/obj/item/book/granter/spell/fattening,/obj/item/gun/energy/laser/alter_ray/gainrate,/obj/item/cookiesynth,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"rf" = (/obj/effect/turf_decal/stripes/white/line{dir = 8; icon_state = "steel_decals4"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"ri" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/components/unary/tank/air,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"rj" = (/obj/machinery/iv_drip/feeding_tube,/turf/open/floor/mineral/basaltstone_floor,/area/ruin/space/has_grav/feedersden)
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index b7a37158..78d9edf2 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -204,28 +204,6 @@
R.module.basic_modules += S
R.module.add_module(S, FALSE, TRUE)
-// ----------------------- GS13
-
-/obj/item/borg/upgrade/cookiesynth
- name = "cyborg cookie synthesizer"
- desc = "An extra module that allows cyborgs to dispense cookies."
- icon_state = "cyborg_upgrade3"
-
-/obj/item/borg/upgrade/cookiesynth/action(mob/living/silicon/robot/R, user = usr)
- . = ..()
- if(.)
- var/obj/item/cookiesynth/S = new(R.module)
- R.module.basic_modules += S
- R.module.add_module(S, FALSE, TRUE)
-
-/obj/item/borg/upgrade/cookiesynth/deactivate(mob/living/silicon/robot/R, user = usr)
- . = ..()
- if (.)
- var/obj/item/cookiesynth/S = locate() in R.module
- R.module.remove_module(S, TRUE)
-
-// ----------
-
/obj/item/borg/upgrade/tboh
name = "janitor cyborg trash bag of holding"
desc = "A trash bag of holding replacement for the janiborg's standard trash bag."