diff --git a/code/datums/supplypacks/hardsuits.dm b/code/datums/supplypacks/hardsuits.dm new file mode 100644 index 0000000000..fe815c7ce4 --- /dev/null +++ b/code/datums/supplypacks/hardsuits.dm @@ -0,0 +1,112 @@ +/* +* Here is where any supply packs +* related to hardsuits live. +*/ + + +/datum/supply_pack/hardsuits + group = "Hardsuits" + +/datum/supply_pack/hardsuits/eva_rig + name = "eva hardsuit (empty)" + contains = list( + /obj/item/weapon/rig/eva = 1 + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure/gear + containername = "eva hardsuit crate" + access = list(access_mining, + access_eva, + access_pilot) + one_access = TRUE + +/datum/supply_pack/hardsuits/mining_rig + name = "industrial hardsuit (empty)" + contains = list( + /obj/item/weapon/rig/industrial = 1 + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure/gear + containername = "industrial hardsuit crate" + access = list(access_mining, + access_eva) + one_access = TRUE + +/datum/supply_pack/hardsuits/medical_rig + name = "medical hardsuit (empty)" + contains = list( + /obj/item/weapon/rig/medical = 1 + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure/gear + containername = "medical hardsuit crate" + access = access_medical + +/datum/supply_pack/hardsuits/security_rig + name = "hazard hardsuit (empty)" + contains = list( + /obj/item/weapon/rig/hazard = 1 + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure/gear + containername = "hazard hardsuit crate" + access = access_armory + +/datum/supply_pack/hardsuits/science_rig + name = "ami hardsuit (empty)" + contains = list( + /obj/item/weapon/rig/hazmat = 1 + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure/gear + containername = "ami hardsuit crate" + access = access_rd + +/datum/supply_pack/hardsuits/ce_rig + name = "advanced hardsuit (empty)" + contains = list( + /obj/item/weapon/rig/ce = 1 + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure/gear + containername = "advanced hardsuit crate" + access = access_ce + +/datum/supply_pack/hardsuits/com_medical_rig + name = "commonwealth medical hardsuit (loaded)" + contains = list( + /obj/item/weapon/rig/baymed/equipped = 1 + ) + cost = 250 + containertype = /obj/structure/closet/crate/secure/gear + containername = "Commonwealth medical hardsuit crate" + access = access_medical + +/datum/supply_pack/hardsuits/com_engineering_rig + name = "commonwealth engineering hardsuit (loaded)" + contains = list( + /obj/item/weapon/rig/bayeng/equipped = 1 + ) + cost = 250 + containertype = /obj/structure/closet/crate/secure/gear + containername = "Commonwealth engineering hardsuit crate" + access = access_engine + +/datum/supply_pack/hardsuits/breacher_rig + name = "unathi breacher hardsuit (empty)" + contains = list( + /obj/item/weapon/rig/breacher = 1 + ) + cost = 250 + containertype = /obj/structure/closet/crate/secure/gear + containername = "unathi breacher hardsuit crate" + access = access_armory + +/datum/supply_pack/hardsuits/zero_rig + name = "null hardsuit (jets)" + contains = list( + /obj/item/weapon/rig/zero = 1 + ) + cost = 75 + containertype = /obj/structure/closet/crate/secure/gear + containername = "null hardsuit crate" \ No newline at end of file diff --git a/code/datums/supplypacks/misc_vr.dm b/code/datums/supplypacks/misc_vr.dm index 0c03987132..e493233db8 100644 --- a/code/datums/supplypacks/misc_vr.dm +++ b/code/datums/supplypacks/misc_vr.dm @@ -16,110 +16,6 @@ access_xenoarch) one_access = TRUE -/datum/supply_pack/misc/eva_rig - name = "eva hardsuit (empty)" - contains = list( - /obj/item/weapon/rig/eva = 1 - ) - cost = 150 - containertype = /obj/structure/closet/crate/secure/gear - containername = "eva hardsuit crate" - access = list(access_mining, - access_eva, - access_pilot) - one_access = TRUE - -/datum/supply_pack/misc/mining_rig - name = "industrial hardsuit (empty)" - contains = list( - /obj/item/weapon/rig/industrial = 1 - ) - cost = 150 - containertype = /obj/structure/closet/crate/secure/gear - containername = "industrial hardsuit crate" - access = list(access_mining, - access_eva) - one_access = TRUE - -/datum/supply_pack/misc/medical_rig - name = "medical hardsuit (empty)" - contains = list( - /obj/item/weapon/rig/medical = 1 - ) - cost = 150 - containertype = /obj/structure/closet/crate/secure/gear - containername = "medical hardsuit crate" - access = access_medical - -/datum/supply_pack/misc/security_rig - name = "hazard hardsuit (empty)" - contains = list( - /obj/item/weapon/rig/hazard = 1 - ) - cost = 150 - containertype = /obj/structure/closet/crate/secure/gear - containername = "hazard hardsuit crate" - access = access_armory - -/datum/supply_pack/misc/science_rig - name = "ami hardsuit (empty)" - contains = list( - /obj/item/weapon/rig/hazmat = 1 - ) - cost = 150 - containertype = /obj/structure/closet/crate/secure/gear - containername = "ami hardsuit crate" - access = access_rd - -/datum/supply_pack/misc/ce_rig - name = "advanced hardsuit (empty)" - contains = list( - /obj/item/weapon/rig/ce = 1 - ) - cost = 150 - containertype = /obj/structure/closet/crate/secure/gear - containername = "advanced hardsuit crate" - access = access_ce - -/datum/supply_pack/misc/com_medical_rig - name = "commonwealth medical hardsuit (loaded)" - contains = list( - /obj/item/weapon/rig/baymed/equipped = 1 - ) - cost = 250 - containertype = /obj/structure/closet/crate/secure/gear - containername = "Commonwealth medical hardsuit crate" - access = access_medical - -/datum/supply_pack/misc/com_engineering_rig - name = "commonwealth engineering hardsuit (loaded)" - contains = list( - /obj/item/weapon/rig/bayeng/equipped = 1 - ) - cost = 250 - containertype = /obj/structure/closet/crate/secure/gear - containername = "Commonwealth engineering hardsuit crate" - access = access_engine - -/datum/supply_pack/misc/breacher_rig - name = "unathi breacher hardsuit (empty)" - contains = list( - /obj/item/weapon/rig/breacher = 1 - ) - cost = 250 - containertype = /obj/structure/closet/crate/secure/gear - containername = "unathi breacher hardsuit crate" - access = access_armory - -/datum/supply_pack/misc/zero_rig - name = "null hardsuit (jets)" - contains = list( - /obj/item/weapon/rig/zero = 1 - ) - cost = 75 - containertype = /obj/structure/closet/crate/secure/gear - containername = "null hardsuit crate" - /datum/supply_pack/misc/jetpack name = "jetpack (empty)" contains = list( diff --git a/code/datums/supplypacks/supplypacks.dm b/code/datums/supplypacks/supplypacks.dm index 14e97cce7a..19afa61980 100644 --- a/code/datums/supplypacks/supplypacks.dm +++ b/code/datums/supplypacks/supplypacks.dm @@ -24,6 +24,7 @@ var/list/all_supply_groups = list("Atmospherics", "Security", "Supplies", "Vendor Refills", + "Hardsuits", "Voidsuits") /datum/supply_pack diff --git a/code/game/machinery/protean_reconstitutor.dm b/code/game/machinery/protean_reconstitutor.dm index 9ae0261d07..287e3e0c1a 100644 --- a/code/game/machinery/protean_reconstitutor.dm +++ b/code/game/machinery/protean_reconstitutor.dm @@ -1,7 +1,7 @@ /obj/machinery/protean_reconstitutor name = "protean reconstitutor" desc = "A complex machine that is most definitely not just a large tub into which one pours a large amount of untethered nanites, then adds a protean positronic brain and orchestrator, in order to reconstitute a disintegrated protean... it's complicated, really!" - description_info = "Use a protean positronic brain, orchestrator, optionally a refactory, and nanopaste to \'fill\' the machine, then interact with it once it's ready. Protean components can be retrieved using a wrench, but any nanopaste inserted will be converted, cannot be reclaimed, and will be lost if the machine is disassembled!" + description_info = "Use a protean positronic brain, orchestrator, refactory, and nanopaste to \'fill\' the machine, then interact with it once it's ready. Protean components can be retrieved using a wrench, but any nanopaste inserted will be converted, cannot be reclaimed, and will be lost if the machine is disassembled!" icon = 'icons/obj/protean_recon.dmi' icon_state = "recon-nopower" var/state_base = "recon" @@ -160,7 +160,7 @@ ..() /obj/machinery/protean_reconstitutor/attack_hand(mob/user as mob) - if(!protean_brain || !protean_orchestrator || (nanomass_reserve < nanomass_required)) + if(!protean_brain || !protean_orchestrator || !protean_refactory || (nanomass_reserve < nanomass_required)) //no brain, no orchestrator, and/or not enough goo to_chat(user,"Essential components missing, or insufficient materials available!") playsound(src, buzzsound, 100, 1, -1) @@ -174,7 +174,7 @@ if(!protean_brain.brainmob.client) src.visible_message("\The [src] chirps, \"Warning, no positronic neural network activity detected! Recommend removing inactive core.\"") return - else if(!processing_revive && protean_brain && protean_orchestrator && (nanomass_reserve >= nanomass_required)) + else if(!processing_revive && protean_brain && protean_orchestrator && protean_refactory && (nanomass_reserve >= nanomass_required)) //we're good, let's get recombobulating! src.visible_message("[user] initializes \the [src]. It chirps, \"Please stand by, synchronizing components... estimated time to completion: five minutes.\"") processing_revive = TRUE @@ -195,20 +195,16 @@ sleep(per_organ_delay) var/obj/item/O = P.internal_organs_by_name[organ] if(istype(O,/obj/item/organ/internal/nano/refactory)) - if(protean_refactory) //if we have a refactory present, install it, otherwise they get a free replacement (for now; perhaps no free replacement but they can be made printable at the prosfab?) - src.visible_message("\The [src] chirps, \"Reinitializing refactory...\"") - P.internal_organs_by_name.Remove(O) - P.contents.Remove(O) - qdel(O) - P.internal_organs_by_name.Add(list(O_FACT = protean_refactory)) - P.internal_organs.Add(protean_refactory) - //cache our mats otherwise they get wiped by the revive - materials_cache = protean_refactory.materials.Copy() - mats_cached = TRUE - protean_refactory.loc = P - else - src.visible_message("\The [src] chirps, \"No refactory detected in storage, fabricating replacement...\"") - continue + src.visible_message("\The [src] chirps, \"Initializing refactory...\"") + P.internal_organs_by_name.Remove(O) + P.contents.Remove(O) + qdel(O) + P.internal_organs_by_name.Add(list(O_FACT = protean_refactory)) + P.internal_organs.Add(protean_refactory) + //cache our mats otherwise they get wiped by the revive + materials_cache = protean_refactory.materials.Copy() + mats_cached = TRUE + protean_refactory.loc = P if(istype(O,/obj/item/organ/internal/nano/orchestrator)) src.visible_message("\The [src] chirps, \"Linking nanoswarm to orchestrator...\"") P.internal_organs_by_name.Remove(O) diff --git a/code/modules/research/prosfab_designs.dm b/code/modules/research/prosfab_designs.dm index d4ab887d98..5d7c690009 100644 --- a/code/modules/research/prosfab_designs.dm +++ b/code/modules/research/prosfab_designs.dm @@ -528,3 +528,21 @@ id = "misc_synth_bag_tag_bishop" materials = list(MAT_STEEL = 500, MAT_GLASS = 2000, MAT_PLASTIC = 500) build_path = /obj/item/clothing/accessory/badge/corporate_tag/bishop + +// Replacement protean bits + +/datum/design/item/prosfab/orchestrator + name = "Protean Orchestrator" + id = "prot_orch" + build_path = /obj/item/organ/internal/nano/orchestrator + time = 30 + materials = list(MAT_STEEL = 8000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_GOLD = 2000) + //req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5) + +/datum/design/item/prosfab/refactory + name = "Protean Refactory" + id = "prot_refact" + build_path = /obj/item/organ/internal/nano/refactory + time = 30 + materials = list(MAT_STEEL = 8000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_GOLD = 2000) + //req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5) diff --git a/vorestation.dme b/vorestation.dme index c8a4e4428c..7320cfdfca 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -463,6 +463,7 @@ #include "code\datums\supplypacks\costumes_vr.dm" #include "code\datums\supplypacks\engineering.dm" #include "code\datums\supplypacks\engineering_vr.dm" +#include "code\datums\supplypacks\hardsuits.dm" #include "code\datums\supplypacks\hospitality.dm" #include "code\datums\supplypacks\hospitality_vr.dm" #include "code\datums\supplypacks\hydroponics.dm"