protean components and hardsuit supply category

This commit is contained in:
Killian
2023-12-12 09:12:58 +00:00
parent 552deaedf1
commit b61550661d
6 changed files with 145 additions and 121 deletions
+112
View File
@@ -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"
-104
View File
@@ -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(
+1
View File
@@ -24,6 +24,7 @@ var/list/all_supply_groups = list("Atmospherics",
"Security",
"Supplies",
"Vendor Refills",
"Hardsuits",
"Voidsuits")
/datum/supply_pack
+13 -17
View File
@@ -1,7 +1,7 @@
/obj/machinery/protean_reconstitutor
name = "protean reconstitutor"
desc = "A complex machine that is most definitely <i>not</i> 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,"<span class='warning'>Essential components missing, or insufficient materials available!</span>")
playsound(src, buzzsound, 100, 1, -1)
@@ -174,7 +174,7 @@
if(!protean_brain.brainmob.client)
src.visible_message("<span class='warning'>\The [src] chirps, \"Warning, no positronic neural network activity detected! Recommend removing inactive core.\"</span>")
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("<span class='notice'>[user] initializes \the [src]. It chirps, \"Please stand by, synchronizing components... estimated time to completion: five minutes.\"</span>")
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("<span class='notice'>\The [src] chirps, \"Reinitializing refactory...\"</span>")
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("<span class='notice'>\The [src] chirps, \"No refactory detected in storage, fabricating replacement...\"</span>")
continue
src.visible_message("<span class='notice'>\The [src] chirps, \"Initializing refactory...\"</span>")
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("<span class='notice'>\The [src] chirps, \"Linking nanoswarm to orchestrator...\"</span>")
P.internal_organs_by_name.Remove(O)
+18
View File
@@ -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)
+1
View File
@@ -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"