From 0c8488b0ae2676f239f7ea082d0fe104f369bec3 Mon Sep 17 00:00:00 2001 From: Will <7099514+Willburd@users.noreply.github.com> Date: Fri, 20 Mar 2026 19:38:00 -0400 Subject: [PATCH] Move autolathe design datums to techweb datums (#19202) * testing makes me feel good * invalid lists * get rid of those boards * show expected mats * oop * error * wip techweb porting * more techweb entries * ported too * disable those for now * okay nevermind i guess * already exists * assemblies * moar * welding helmet * many entries * lol tg * fix test * again * fixagain * more moved * update techweb test * catch that too * screeee * more fixes * missing announcement * orphaned sleevecard * some more fixing * test * more * oops * glasses * illegal icons * non starting * it's starting * messed up * cleanup * more generic stuff * morrrreee * the plastic set * oops * correct value * barbed wires * more cleaning * many more * gone * cleanup * no longer * do not allow duped designs * it's own node * proper order no dupes * last of the broken nodes * fix bad path * cleanup * more test more limits * gone * almost done * these are gone * syringe gun * bioregenerator design * all moved * organized and webbed * more fixes * oops * cleaning up * organization * clean up * organize * organized * didn't save * wrong mat * adds many missing ammo types * svd doesn't exist * 10mm pistol added * magazines not casings * these are pistols * this is used by like, one weapon * m1 is ancient * this is hunting * extremely botched untested lathe * disk junk * rough foundations * slowly converting * slowly building this * local materials * almost * big reorganization * more cleanup * more cleaning * lathe stuff * small fixes * oops * many fixes * mat fix * more fixes * actually isolate the hacked designs * protolathe hacking * imprinter hacking * missing ammos * sheet printing for autolathe * fixs * again * fixed test * test test * fix * fix * WHY * fix it... * here we go * material print * on turf * body disk * consistant name * Many weapons to hacked lathe * missing node * wrong section * fixes * this list should be unified * ammo boxes * don't do single shells anymore * wat * specifics * snowflake * not needed * already available * pickaxe too * tweak * removed unneeded node * missing surgery items * Apply suggestion from @Cameron-The-Raven * Adds RMS * typo * illegal needs hacked * disabled material weapons * circuit testing * STRING TEST * test * fixing some things * huh? * hidden circuits * some flakey boards * grammar * fixes * more hidden * wrong board * security cams * alert consoles * spaceheater is simple enough to not have one * pcus * cargo vendors * tcomms stuff * solar tracker circuit * artifact stuff * SM stuff * illegal machines * med machines * no longer needed * more stuff * these are not standard * moreeee * doppler and more * organized * finishing * oop * use the define * inheret * dopper fixes * space heater * doing some organization * explain the var * some tweaks * wrong one * fixed test * material test too * simple roto gens * use the define * emergency power node * tgui fixes for icons * not needed * color blended material designs * icons for large research * oops * unshit that * use stack here * center math * . * . * . * . * . * unifi * fix these * NO COPYPASTA * ILLEEGGALLL * mandate descriptions * agony * actually lets do this * use macros * description * desc * desc * desc * desc * desc * desc * gps desc * telecomms component desc --------- Co-authored-by: Cameron Lennox Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> --- .../binary_devices/algae_generator_vr.dm | 4 - code/__defines/materials.dm | 1 + code/__defines/research.dm | 5 + .../__defines/research/research_categories.dm | 9 +- code/__defines/research/techweb_nodes.dm | 10 +- code/__defines/wires.dm | 4 +- code/datums/autolathe/arms.dm | 457 -------- code/datums/autolathe/arms_vr.dm | 52 - code/datums/autolathe/autolathe.dm | 130 --- code/datums/autolathe/devices.dm | 38 - code/datums/autolathe/devices_vr.dm | 3 - code/datums/autolathe/engineering.dm | 112 -- code/datums/autolathe/engineering_vr.dm | 79 -- code/datums/autolathe/general.dm | 136 --- code/datums/autolathe/general_vr.dm | 11 - code/datums/autolathe/materials.dm | 23 - code/datums/autolathe/medical.dm | 43 - code/datums/autolathe/medical_vr.dm | 9 - code/datums/autolathe/tools.dm | 70 -- code/datums/autolathe/tools_vr.dm | 3 - code/datums/wires/autolathe.dm | 42 +- code/datums/wires/circuit_imprinter.dm | 58 + code/datums/wires/protolathe.dm | 58 + code/defines/obj/weapon.dm | 2 +- code/game/machinery/autolathe.dm | 574 +++++++--- code/game/machinery/cryopod.dm | 31 +- code/game/machinery/doppler_array.dm | 20 +- .../embedded_controller/construction.dm | 1 - code/game/machinery/fire_alarm.dm | 2 +- code/game/machinery/frame.dm | 6 +- code/game/machinery/vitals_monitor.dm | 2 +- .../weapons/circuitboards/circuitboard.dm | 3 + .../weapons/circuitboards/circuitboards_vr.dm | 5 +- .../circuitboards/computer/camera_monitor.dm | 1 + .../circuitboards/computer/computer.dm | 14 +- .../weapons/circuitboards/computer/shuttle.dm | 1 + .../items/weapons/circuitboards/frame.dm | 17 - .../circuitboards/machinery/engineering.dm | 1 - .../machinery/kitchen_appliances.dm | 2 - .../circuitboards/machinery/papershredder.dm | 1 - .../circuitboards/machinery/reagents.dm | 1 - .../circuitboards/machinery/recycling.dm | 3 - .../circuitboards/machinery/research.dm | 21 +- .../asset_cache/assets/research_designs.dm | 9 +- .../asset_cache/assets/spritesheets/stacks.dm | 2 +- code/modules/economy/vending_machines.dm | 23 +- .../food/drinkingglass/serving_glasses.dm | 2 + .../materials/materials/organic/wood.dm | 2 +- code/modules/materials/sheets/metals/rods.dm | 2 +- .../overmap/disperser/disperser_circuit.dm | 4 + code/modules/power/fusion/fusion_circuits.dm | 10 +- code/modules/power/port_gen_vr.dm | 2 + .../modules/power/tesla/telsa_construction.dm | 5 - code/modules/power/turbine.dm | 2 + .../research/tg/design_disks/security.dm | 23 + .../modules/research/tg/designs/ai_designs.dm | 3 +- .../research/tg/designs/ammunition_designs.dm | 1014 +++++++++++++++++ .../research/tg/designs/boards/atmos.dm | 32 +- .../research/tg/designs/boards/cargo.dm | 47 +- .../research/tg/designs/boards/engineering.dm | 161 ++- .../research/tg/designs/boards/kitchen.dm | 28 +- .../research/tg/designs/boards/medical.dm | 78 +- .../research/tg/designs/boards/misc.dm | 211 +++- .../research/tg/designs/boards/refinery.dm | 52 +- .../research/tg/designs/boards/science.dm | 109 +- .../research/tg/designs/boards/security.dm | 8 + .../research/tg/designs/boards/telecomms.dm | 86 +- .../tg/designs/construction_designs.dm | 125 ++ .../research/tg/designs/equipment_designs.dm | 77 ++ .../research/tg/designs/firework_designs.dm | 2 +- .../research/tg/designs/illegal_designs.dm | 16 + code/modules/research/tg/designs/materials.dm | 726 ++++++++++++ .../research/tg/designs/mechfab_designs.dm | 12 +- .../tg/designs/mechfab_equipment_designs.dm | 1 + .../research/tg/designs/medical_designs.dm | 294 ++++- .../research/tg/designs/mining_designs.dm | 10 + .../research/tg/designs/misc_designs.dm | 111 +- .../research/tg/designs/modsuit_designs.dm | 30 +- .../tg/designs/modular_computer_designs.dm | 1 + .../tg/designs/multi-department_designs.dm | 3 + .../research/tg/designs/prosfab_designs.dm | 3 + .../research/tg/designs/service_designs.dm | 305 +++++ .../research/tg/designs/stock_part_designs.dm | 61 +- .../research/tg/designs/tool_designs.dm | 674 +++++++---- .../research/tg/designs/weapon_designs.dm | 176 ++- .../experiment/instances/destructive.dm | 38 + .../research/tg/machinery/_production.dm | 14 +- .../tg/machinery/circuit_imprinter.dm | 4 + .../research/tg/machinery/mech_fabricator.dm | 5 +- .../research/tg/machinery/protolathe.dm | 4 + code/modules/research/tg/rdconsole.dm | 5 +- code/modules/research/tg/rdmachines.dm | 20 + .../research/tg/techwebs/nodes/atmos_nodes.dm | 10 +- .../tg/techwebs/nodes/biology_nodes.dm | 6 +- .../tg/techwebs/nodes/circuit_nodes.dm | 6 +- .../tg/techwebs/nodes/cyborg_nodes.dm | 4 +- .../research/tg/techwebs/nodes/engi_nodes.dm | 101 +- .../tg/techwebs/nodes/material_nodes.dm | 72 ++ .../research/tg/techwebs/nodes/mech_nodes.dm | 4 +- .../tg/techwebs/nodes/medbay_nodes.dm | 14 +- .../tg/techwebs/nodes/mining_nodes.dm | 28 +- .../tg/techwebs/nodes/modsuit_nodes.dm | 5 +- .../tg/techwebs/nodes/research_nodes.dm | 9 +- .../research/tg/techwebs/nodes/scene_nodes.dm | 4 +- .../tg/techwebs/nodes/security_nodes.dm | 193 +++- .../tg/techwebs/nodes/service_nodes.dm | 93 +- .../research/tg/techwebs/techweb_types.dm | 39 + code/modules/rogueminer_vr/zone_console.dm | 1 + code/modules/unit_tests/construction_tests.dm | 39 + code/modules/unit_tests/material_tests.dm | 40 + code/modules/unit_tests/techwebs.dm | 60 +- maps/submaps/admin_use_vr/ert.dm | 2 +- maps/submaps/admin_use_vr/mercship.dm | 2 +- tgui/packages/common/css_sanity.ts | 3 + tgui/packages/tgui/interfaces/Autolathe.tsx | 414 +++---- .../tgui/interfaces/ExosuitFabricatorTg.tsx | 48 +- .../interfaces/Fabrication/MaterialIcon.tsx | 3 +- tgui/packages/tgui/interfaces/Fabricator.tsx | 26 +- tgui/packages/tgui/interfaces/OreSilo.tsx | 27 +- .../interfaces/Techweb/disks/DiskMenu.tsx | 12 +- .../tgui/interfaces/Techweb/disks/disks.tsx | 9 +- .../tgui/interfaces/Techweb/helpers.ts | 9 + .../interfaces/Techweb/nodes/TechNode.tsx | 32 +- .../interfaces/common/TechWebRecipeIcon.tsx | 64 ++ .../tgui/styles/interfaces/Techweb.scss | 4 - vorestation.dme | 23 +- 126 files changed, 5731 insertions(+), 2372 deletions(-) delete mode 100644 code/datums/autolathe/arms.dm delete mode 100644 code/datums/autolathe/arms_vr.dm delete mode 100644 code/datums/autolathe/autolathe.dm delete mode 100644 code/datums/autolathe/devices.dm delete mode 100644 code/datums/autolathe/devices_vr.dm delete mode 100644 code/datums/autolathe/engineering.dm delete mode 100644 code/datums/autolathe/engineering_vr.dm delete mode 100644 code/datums/autolathe/general.dm delete mode 100644 code/datums/autolathe/general_vr.dm delete mode 100644 code/datums/autolathe/materials.dm delete mode 100644 code/datums/autolathe/medical.dm delete mode 100644 code/datums/autolathe/medical_vr.dm delete mode 100644 code/datums/autolathe/tools.dm delete mode 100644 code/datums/autolathe/tools_vr.dm create mode 100644 code/datums/wires/circuit_imprinter.dm create mode 100644 code/datums/wires/protolathe.dm create mode 100644 code/modules/research/tg/design_disks/security.dm create mode 100644 code/modules/research/tg/designs/ammunition_designs.dm create mode 100644 code/modules/research/tg/designs/boards/security.dm create mode 100644 code/modules/research/tg/designs/materials.dm create mode 100644 code/modules/research/tg/designs/mining_designs.dm create mode 100644 code/modules/research/tg/designs/service_designs.dm create mode 100644 code/modules/research/tg/techwebs/nodes/material_nodes.dm create mode 100644 tgui/packages/common/css_sanity.ts create mode 100644 tgui/packages/tgui/interfaces/common/TechWebRecipeIcon.tsx diff --git a/code/ATMOSPHERICS/components/binary_devices/algae_generator_vr.dm b/code/ATMOSPHERICS/components/binary_devices/algae_generator_vr.dm index c14e4db523..7189ee8f1f 100644 --- a/code/ATMOSPHERICS/components/binary_devices/algae_generator_vr.dm +++ b/code/ATMOSPHERICS/components/binary_devices/algae_generator_vr.dm @@ -1,5 +1,3 @@ -#define MAT_ALGAE "algae" - /obj/machinery/atmospherics/binary/algae_farm name = "algae oxygen generator" desc = "An oxygen generator using algae to convert carbon dioxide to oxygen." @@ -303,5 +301,3 @@ /obj/item/stack/material/algae/ten amount = 10 - -#undef MAT_ALGAE diff --git a/code/__defines/materials.dm b/code/__defines/materials.dm index 88bdcd1b8d..afd26e9510 100644 --- a/code/__defines/materials.dm +++ b/code/__defines/materials.dm @@ -81,6 +81,7 @@ #define MAT_SMOLEBRICKS "smolebricks" #define MAT_WAX "wax" #define MAT_EAGATE "energized agate" +#define MAT_ALGAE "algae" #define MAT_CULT "cult" #define MAT_CULT2 "cult2" diff --git a/code/__defines/research.dm b/code/__defines/research.dm index 5bceb27453..25c91fa966 100644 --- a/code/__defines/research.dm +++ b/code/__defines/research.dm @@ -108,3 +108,8 @@ server_var = station_fallback_web; \ }; \ } while (FALSE) + +// Macro for techweb design consistency +#define SET_CIRCUIT_DESIGN_NAMEDESC(dispname) name = (dispname) + " circuit";desc = "The circuit board for a " + (dispname) + "."; +#define SET_MATERIAL_DESIGN_NAMEDESC(dispname) name = (dispname);desc = "A material printed and used in construction."; +#define SET_AMMO_DESIGN_NAMEDESC(dispname) name = (dispname);desc = "Printable ammunition for a gun, ensure compatibility with your weapon before printing!"; diff --git a/code/__defines/research/research_categories.dm b/code/__defines/research/research_categories.dm index 55eda51003..20b9d60c0d 100644 --- a/code/__defines/research/research_categories.dm +++ b/code/__defines/research/research_categories.dm @@ -1,12 +1,18 @@ // Weapon Categories #define RND_CATEGORY_WEAPONS "/Weaponry" #define RND_SUBCATEGORY_WEAPONS_FIRING_PINS "/Firing Pins" -#define RND_SUBCATEGORY_WEAPONS_AMMO "/Ammunition" #define RND_SUBCATEGORY_WEAPONS_PARTS "/Weapon Parts" #define RND_SUBCATEGORY_WEAPONS_RANGED "/Ranged Weapons" #define RND_SUBCATEGORY_WEAPONS_MELEE "/Melee Weapons" #define RND_SUBCATEGORY_WEAPONS_KITS "/Weapon Fabrication Kits" +// Ammo +#define RND_SUBCATEGORY_WEAPONS_AMMO "/Ammunition" +#define RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL "/Pistol" +#define RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE "/Rifle" +#define RND_SUBCATEGORY_WEAPONS_AMMO_SHOTGUN "/Shotgun" +#define RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS "/Loaders" + // Wiremod Categories #define RND_CATEGORY_CIRCUITRY "/Circuitry" #define RND_CATEGORY_CIRCUITRY_CORE "/Core" @@ -71,6 +77,7 @@ #define RND_SUBCATEGORY_MACHINE_FAB "/Fabricators" #define RND_SUBCATEGORY_MACHINE_SERVICE "/Service Machines" #define RND_SUBCATEGORY_MACHINE_TELECOMMS "/Telecommunications Machines" +#define RND_SUBCATEGORY_MACHINE_REFINERY "/Refinery Machines" #define RND_CATEGORY_EQUIPMENT "/Equipment" #define RND_SUBCATEGORY_EQUIPMENT_SERVICE "/Service Equipment" diff --git a/code/__defines/research/techweb_nodes.dm b/code/__defines/research/techweb_nodes.dm index b316518dbd..7988bc3926 100644 --- a/code/__defines/research/techweb_nodes.dm +++ b/code/__defines/research/techweb_nodes.dm @@ -13,6 +13,12 @@ #define TECHWEB_NODE_AUGMENTATION "augmentation" #define TECHWEB_NODE_AUS_SECURITY "aus_security" #define TECHWEB_NODE_BASIC_ARMS "basic_arms" +#define TECHWEB_NODE_PISTOL_AMMO "pistol_ammo" +#define TECHWEB_NODE_PISTOL_SPECIAL "pistol_special" +#define TECHWEB_NODE_RIFLE_AMMO "rifle_ammo" +#define TECHWEB_NODE_RIFLE_SPECIAL "rifle_special" +#define TECHWEB_NODE_SHOTGUN_AMMO "shotgun_ammo" +#define TECHWEB_NODE_SPEEDLOADERS "speedloaders" #define TECHWEB_NODE_BCI "bci" #define TECHWEB_NODE_BEAM_WEAPONS "beam_weapons" #define TECHWEB_NODE_BIO_SCAN "bio_scan" @@ -34,6 +40,7 @@ #define TECHWEB_NODE_COMBAT_IMPLANTS "combat_implants" #define TECHWEB_NODE_CONSOLES "consoles" #define TECHWEB_NODE_CONSTRUCTION "construction" +#define TECHWEB_NODE_EMERGPOWER "emergency_power" #define TECHWEB_NODE_CRYOGUN "cryogun" #define TECHWEB_NODE_CRYOSTASIS "cryostasis" #define TECHWEB_NODE_CYBER_IMPLANTS "cyber_implants" @@ -93,7 +100,6 @@ #define TECHWEB_NODE_MINING "mining" #define TECHWEB_NODE_MINING_ADV "mining_adv" #define TECHWEB_NODE_MINELIGHTS "mine_lighting" -#define TECHWEB_NODE_DEBRISREMOVAL "debris_removal" #define TECHWEB_NODE_MOD_ANOMALY "mod_anomaly" #define TECHWEB_NODE_MOD_SUPPLY "mod_supply" #define TECHWEB_NODE_MOD_ENGI "mod_engi" @@ -153,3 +159,5 @@ #define TECHWEB_NODE_XENOBIOLOGY "xenobiology" #define TECHWEB_NODE_TELEPORTER "teleporter" #define TECHWEB_NODE_CONFETTI "confetti" +#define TECHWEB_NODE_RSF "rapid_service_fab" +#define TECHWEB_NODE_MATERIALSHEETS "material_sheets" diff --git a/code/__defines/wires.dm b/code/__defines/wires.dm index fa2c270d7b..7462fc5d42 100644 --- a/code/__defines/wires.dm +++ b/code/__defines/wires.dm @@ -81,8 +81,8 @@ #define WIRE_PARTICLE_POWER_LIMIT "Maximum Power" // Determines how strong the PA can be. // Autolathe -#define WIRE_AUTOLATHE_HACK "Hack" -#define WIRE_AUTOLATHE_DISABLE "Disable" +#define WIRE_LATHE_HACK "Hack" +#define WIRE_LATHE_DISABLE "Disable" // Radio #define WIRE_RADIO_SIGNAL "Signal" diff --git a/code/datums/autolathe/arms.dm b/code/datums/autolathe/arms.dm deleted file mode 100644 index 41caf5a74d..0000000000 --- a/code/datums/autolathe/arms.dm +++ /dev/null @@ -1,457 +0,0 @@ -/datum/category_item/autolathe/arms/syringegun_ammo - name = "syringe gun cartridge" - path =/obj/item/syringe_cartridge - -//////////////// -/*Ammo casings*/ -//////////////// - -/datum/category_item/autolathe/arms/shotgun_blanks - name = "ammunition (12g, blank)" - path =/obj/item/ammo_casing/a12g/blank - -/datum/category_item/autolathe/arms/shotgun_beanbag - name = "ammunition (12g, beanbag)" - path =/obj/item/ammo_casing/a12g/beanbag - -/datum/category_item/autolathe/arms/shotgun_flash - name = "ammunition (12g, flash)" - path =/obj/item/ammo_casing/a12g/flash - -/datum/category_item/autolathe/arms/shotgun - name = "ammunition (12g, slug)" - path =/obj/item/ammo_casing/a12g - hidden = 1 - -/datum/category_item/autolathe/arms/shotgun_pellet - name = "ammunition (12g, pellet)" - path =/obj/item/ammo_casing/a12g/pellet - hidden = 1 - -/datum/category_item/autolathe/arms/stunshell - name = "ammunition (stun cartridge, shotgun)" - path =/obj/item/ammo_casing/a12g/stunshell - hidden = 1 - -/datum/category_item/autolathe/arms/flechetteshell - name = "ammunition (flechette cartridge, shotgun)" - path =/obj/item/ammo_casing/a12g/flechette - hidden = 1 - man_rating = 2 - -////////////////// -/*Ammo magazines*/ -////////////////// - -/////// 5mm -/* -/datum/category_item/autolathe/arms/pistol_5mm - name = "pistol magazine (5mm)" - path =/obj/item/ammo_magazine/c5mm - category = list("Arms and Ammunition") - hidden = 1 -*/ - -/////// .45 -/datum/category_item/autolathe/arms/pistol_45 - name = "pistol magazine (.45)" - path =/obj/item/ammo_magazine/m45 - hidden = 1 - -/datum/category_item/autolathe/arms/pistol_45p - name = "pistol magazine (.45 practice)" - path =/obj/item/ammo_magazine/m45/practice - -/datum/category_item/autolathe/arms/pistol_45r - name = "pistol magazine (.45 rubber)" - path =/obj/item/ammo_magazine/m45/rubber - -/datum/category_item/autolathe/arms/pistol_45f - name = "pistol magazine (.45 flash)" - path =/obj/item/ammo_magazine/m45/flash - -/datum/category_item/autolathe/arms/pistol_45ap - name = "pistol magazine (.45 armor piercing)" - path =/obj/item/ammo_magazine/m45/ap - hidden = 1 - resources = list(MAT_STEEL = 500, MAT_PLASTEEL = 300) - -/datum/category_item/autolathe/arms/pistol_45hp - name = "pistol magazine (.45 hollowpoint)" - path =/obj/item/ammo_magazine/m45/hp - hidden = 1 - resources = list(MAT_STEEL = 500, MAT_PLASTIC = 200) - -/datum/category_item/autolathe/arms/pistol_45uzi - name = "uzi magazine (.45)" - path =/obj/item/ammo_magazine/m45uzi - hidden = 1 - -/datum/category_item/autolathe/arms/tommymag - name = "Tommy Gun magazine (.45)" - path =/obj/item/ammo_magazine/m45tommy - hidden = 1 - -/datum/category_item/autolathe/arms/tommydrum - name = "Tommy Gun drum magazine (.45)" - path =/obj/item/ammo_magazine/m45tommydrum - hidden = 1 - -/////// 9mm - -// Full size pistol mags. -/datum/category_item/autolathe/arms/pistol_9mm - name = "pistol magazine (9mm)" - path =/obj/item/ammo_magazine/m9mm - hidden = 1 - -/datum/category_item/autolathe/arms/pistol_9mmr - name = "pistol magazine (9mm rubber)" - path =/obj/item/ammo_magazine/m9mm/rubber - -/datum/category_item/autolathe/arms/pistol_9mmp - name = "pistol magazine (9mm practice)" - path =/obj/item/ammo_magazine/m9mm/practice - -/datum/category_item/autolathe/arms/pistol_9mmf - name = "pistol magazine (9mm flash)" - path =/obj/item/ammo_magazine/m9mm/flash - -// Small mags for small or old guns. -/datum/category_item/autolathe/arms/pistol_9mm_compact - name = "compact pistol magazine (9mm)" - path =/obj/item/ammo_magazine/m9mm/compact - hidden = 1 - -/datum/category_item/autolathe/arms/pistol_9mmr_compact - name = "compact pistol magazine (9mm rubber)" - path =/obj/item/ammo_magazine/m9mm/compact/rubber - hidden = 1 // These are all hidden because they are traitor mags and will otherwise just clutter the Autolathe. - -/datum/category_item/autolathe/arms/pistol_9mmp_compact - name = "compact pistol magazine (9mm practice)" - path =/obj/item/ammo_magazine/m9mm/compact/practice - hidden = 1 - -/datum/category_item/autolathe/arms/pistol_9mmf_compact - name = "compact pistol magazine (9mm flash)" - path =/obj/item/ammo_magazine/m9mm/compact/flash - hidden = 1 - -// SMG mags -/datum/category_item/autolathe/arms/smg_9mm - name = "top-mounted SMG magazine (9mm)" - path =/obj/item/ammo_magazine/m9mmt - hidden = 1 - -/datum/category_item/autolathe/arms/smg_9mmr - name = "top-mounted SMG magazine (9mm rubber)" - path =/obj/item/ammo_magazine/m9mmt/rubber - -/datum/category_item/autolathe/arms/smg_9mmp - name = "top-mounted SMG magazine (9mm practice)" - path =/obj/item/ammo_magazine/m9mmt/practice - -/datum/category_item/autolathe/arms/smg_9mmf - name = "top-mounted SMG magazine (9mm flash)" - path =/obj/item/ammo_magazine/m9mmt/flash - -/datum/category_item/autolathe/arms/smg_9mmap - name = "top-mounted SMG magazine (9mm armor piercing)" - path =/obj/item/ammo_magazine/m9mmt/ap - hidden = 1 - man_rating = 2 - -/////// 10mm -/datum/category_item/autolathe/arms/smg_10mm - name = "SMG magazine (10mm)" - path =/obj/item/ammo_magazine/m10mm - hidden = 1 - -/datum/category_item/autolathe/arms/pistol_44 - name = "pistol magazine (.44)" - path =/obj/item/ammo_magazine/m44 - hidden = 1 - -/////// 5.45mm -/datum/category_item/autolathe/arms/rifle_545 - name = "rifle magazine (5.45mm)" - path =/obj/item/ammo_magazine/m545 - hidden = 1 - -/datum/category_item/autolathe/arms/rifle_545p - name = "rifle magazine (5.45mm practice)" - path =/obj/item/ammo_magazine/m545/practice - -/*/datum/category_item/autolathe/arms/rifle_545_hunter //VOREStation Edit Start. By request of Ace - name = "rifle magazine (5.45mm hunting)" - path =/obj/item/ammo_magazine/m545/hunter*/ //VOREStation Edit End. - -/datum/category_item/autolathe/arms/machinegun_545 - name = "machinegun box magazine (5.45)" - path =/obj/item/ammo_magazine/m545saw - hidden = 1 - -/*/datum/category_item/autolathe/arms/machinegun_545_hunter //VOREStation Edit Start. By request of Ace - name = "machinegun box magazine (5.45 hunting)" - path =/obj/item/ammo_magazine/m545saw/hunter - hidden = 1*/ //VOREStation Edit End. - -/////// 7.62 - -/datum/category_item/autolathe/arms/rifle_762 - name = "rifle magazine (7.62mm)" - path =/obj/item/ammo_magazine/m762 - hidden = 1 - -/* -/datum/category_item/autolathe/arms/rifle_small_762 - name = "rifle magazine (7.62mm)" - path =/obj/item/ammo_magazine/s762 - hidden = 1 -*/ - -/////// Shotgun - -/datum/category_item/autolathe/arms/shotgun_clip_beanbag - name = "2-round 12g speedloader (beanbag)" - path =/obj/item/ammo_magazine/clip/c12g/beanbag - -/datum/category_item/autolathe/arms/shotgun_clip_slug - name = "2-round 12g speedloader (slug)" - path =/obj/item/ammo_magazine/clip/c12g - hidden = 1 - -/datum/category_item/autolathe/arms/shotgun_clip_pellet - name = "2-round 12g speedloader (buckshot)" - path =/obj/item/ammo_magazine/clip/c12g/pellet - hidden = 1 - -/datum/category_item/autolathe/arms/shotgun_clip_beanbag - name = "2-round 12g speedloader (beanbag)" - path =/obj/item/ammo_magazine/clip/c12g/beanbag - -/* Commented out until autolathe stuff is decided/fixed. Will probably remove these entirely. -Spades -// These should always be/empty! The idea is to fill them up manually with ammo clips. - -/datum/category_item/autolathe/arms/pistol_5mm - name = "pistol magazine (5mm)" - path =/obj/item/ammo_magazine/c5mm/empty - category = list("Arms and Ammunition") - hidden = 1 - -/datum/category_item/autolathe/arms/smg_5mm - name = "top-mounted SMG magazine (5mm)" - path =/obj/item/ammo_magazine/c5mmt/empty - category = list("Arms and Ammunition") - hidden = 1 - -/datum/category_item/autolathe/arms/pistol_45 - name = "pistol magazine (.45)" - path =/obj/item/ammo_magazine/m45/empty - category = list("Arms and Ammunition") - -/datum/category_item/autolathe/arms/pistol_45uzi - name = "uzi magazine (.45)" - path =/obj/item/ammo_magazine/m45uzi/empty - category = list("Arms and Ammunition") - hidden = 1 - -/datum/category_item/autolathe/arms/tommymag - name = "Tommy Gun magazine (.45)" - path =/obj/item/ammo_magazine/m45tommy/empty - category = list("Arms and Ammunition") - hidden = 1 - -/datum/category_item/autolathe/arms/tommydrum - name = "Tommy Gun drum magazine (.45)" - path =/obj/item/ammo_magazine/m45tommydrum/empty - category = list("Arms and Ammunition") - hidden = 1 - -/datum/category_item/autolathe/arms/pistol_9mm - name = "pistol magazine (9mm)" - path =/obj/item/ammo_magazine/m9mm/empty - category = list("Arms and Ammunition") - -/datum/category_item/autolathe/arms/smg_9mm - name = "top-mounted SMG magazine (9mm)" - path =/obj/item/ammo_magazine/m9mmt/empty - category = list("Arms and Ammunition") - -/datum/category_item/autolathe/arms/smg_10mm - name = "SMG magazine (10mm)" - path =/obj/item/ammo_magazine/m10mm/empty - category = list("Arms and Ammunition") - hidden = 1 - -/datum/category_item/autolathe/arms/pistol_44 - name = "pistol magazine (.44)" - path =/obj/item/ammo_magazine/m44/empty - category = list("Arms and Ammunition") - hidden = 1 - -/datum/category_item/autolathe/arms/rifle_545 - name = "10rnd rifle magazine (5.45mm)" - path =/obj/item/ammo_magazine/m545saw/empty - category = list("Arms and Ammunition") - -/datum/category_item/autolathe/arms/rifle_545m - name = "20rnd rifle magazine (5.45mm)" - path =/obj/item/ammo_magazine/m545sawm/empty - category = list("Arms and Ammunition") - hidden = 1 - -/datum/category_item/autolathe/arms/rifle_SVD - name = "10rnd rifle magazine (7.62mm)" - path =/obj/item/ammo_magazine/m762svd/empty - category = list("Arms and Ammunition") - hidden = 1 - -/datum/category_item/autolathe/arms/rifle_762 - name = "20rnd rifle magazine (7.62mm)" - path =/obj/item/ammo_magazine/m762/empty - category = list("Arms and Ammunition") - hidden = 1 - -/datum/category_item/autolathe/arms/machinegun_762 - name = "machinegun box magazine (7.62)" - path =/obj/item/ammo_magazine/a762/empty - category = list("Arms and Ammunition") - hidden = 1 - -/datum/category_item/autolathe/arms/shotgun_magazine - name = "24rnd shotgun magazine (12g)" - path =/obj/item/ammo_magazine/m12gdrum/empty - category = list("Arms and Ammunition") - hidden = 1*/ - -/* - * High Caliber - */ - -/datum/category_item/autolathe/arms/rifle_145 - name = "14.5mm round (sabot)" - path = /obj/item/ammo_casing/a145/highvel - hidden = 1 - -/////////////////////////////// -/*Ammo clips and Speedloaders*/ -/////////////////////////////// - -/datum/category_item/autolathe/arms/speedloader_357 - name = "speedloader (.357)" - path =/obj/item/ammo_magazine/s357 - hidden = 1 - -/datum/category_item/autolathe/arms/speedloader_38 - name = "speedloader (.38)" - path =/obj/item/ammo_magazine/s38 - hidden = 1 - -/datum/category_item/autolathe/arms/speedloader_38r - name = "speedloader (.38 rubber)" - path =/obj/item/ammo_magazine/s38/rubber - -/datum/category_item/autolathe/arms/speedloader_45 - name = "speedloader (.45)" - path = /obj/item/ammo_magazine/s45 - hidden = 1 - -/datum/category_item/autolathe/arms/speedloader_45r - name = "speedloader (.45 rubber)" - path = /obj/item/ammo_magazine/s45/rubber - -// Commented out until metal exploits with autolathe is fixed. -/*/datum/category_item/autolathe/arms/pistol_clip_45 - name = "ammo clip (.45)" - path =/obj/item/ammo_magazine/clip/c45 - category = list("Arms and Ammunition") - hidden = 1 - -/datum/category_item/autolathe/arms/pistol_clip_45r - name = "ammo clip (.45 rubber)" - path =/obj/item/ammo_magazine/clip/c45/rubber - category = list("Arms and Ammunition") - -/datum/category_item/autolathe/arms/pistol_clip_45f - name = "ammo clip (.45 flash)" - path =/obj/item/ammo_magazine/clip/c45/flash - category = list("Arms and Ammunition") - -/datum/category_item/autolathe/arms/pistol_clip_45p - name = "ammo clip (.45 practice)" - path =/obj/item/ammo_magazine/clip/c45/practice - category = list("Arms and Ammunition") - -/datum/category_item/autolathe/arms/pistol_clip_9mm - name = "ammo clip (9mm)" - path =/obj/item/ammo_magazine/clip/c9mm - category = list("Arms and Ammunition") - hidden = 1 - -/datum/category_item/autolathe/arms/pistol_clip_9mmr - name = "ammo clip (9mm rubber)" - path =/obj/item/ammo_magazine/clip/c9mm/rubber - category = list("Arms and Ammunition") - -/datum/category_item/autolathe/arms/pistol_clip_9mmp - name = "ammo clip (9mm practice)" - path =/obj/item/ammo_magazine/clip/c9mm/practice - category = list("Arms and Ammunition") - -/datum/category_item/autolathe/arms/pistol_clip_9mmf - name = "ammo clip (9mm flash)" - path =/obj/item/ammo_magazine/clip/c9mm/flash - category = list("Arms and Ammunition") - -/datum/category_item/autolathe/arms/pistol_clip_5mm - name = "ammo clip (5mm)" - path =/obj/item/ammo_magazine/clip/c5mm - category = list("Arms and Ammunition") - hidden = 1 - -/datum/category_item/autolathe/arms/pistol_clip_50 - name = "ammo clip (.44)" - path =/obj/item/ammo_magazine/clip/c50 - category = list("Arms and Ammunition") - hidden = 1 -*/ -/datum/category_item/autolathe/arms/rifle_clip_545 - name = "ammo clip (5.45mm)" - path =/obj/item/ammo_magazine/clip/c545 - category = list("Arms and Ammunition") - hidden = 1 - -/datum/category_item/autolathe/arms/rifle_clip_545_practice - name = "ammo clip (5.45mm practice)" - path =/obj/item/ammo_magazine/clip/c545/practice - category = list("Arms and Ammunition") - -/datum/category_item/autolathe/arms/rifle_clip_762 - name = "ammo clip (7.62mm)" - path =/obj/item/ammo_magazine/clip/c762 - hidden = 1 - -/*/datum/category_item/autolathe/arms/rifle_clip_762_hunter //VOREStation Edit Start. By request of Ace - name = "ammo clip (7.62mm hunting)" - path =/obj/item/ammo_magazine/clip/c762/hunter*/ //VOREStation Edit End. - -/datum/category_item/autolathe/arms/rifle_clip_762_practice - name = "ammo clip (7.62mm practice)" - path =/obj/item/ammo_magazine/clip/c762/practice - -/datum/category_item/autolathe/arms/knuckledusters - name = "knuckle dusters" - path =/obj/item/clothing/accessory/knuckledusters - hidden = 1 - -/datum/category_item/autolathe/arms/tacknife - name = "tactical knife" - path =/obj/item/material/knife/tacknife - hidden = 1 - -/datum/category_item/autolathe/arms/flamethrower - name = "flamethrower" - path =/obj/item/flamethrower/full - hidden = 1 diff --git a/code/datums/autolathe/arms_vr.dm b/code/datums/autolathe/arms_vr.dm deleted file mode 100644 index f02c9add65..0000000000 --- a/code/datums/autolathe/arms_vr.dm +++ /dev/null @@ -1,52 +0,0 @@ -/datum/category_item/autolathe/arms/speedloader_357_flash - name = "speedloader (.357 flash)" - path =/obj/item/ammo_magazine/s357/flash - hidden = 1 - -/datum/category_item/autolathe/arms/speedloader_357_stun - name = "speedloader (.357 stun)" - path =/obj/item/ammo_magazine/s357/stun - hidden = 1 - -/datum/category_item/autolathe/arms/speedloader_357_rubber - name = "speedloader (.357 rubber)" - path =/obj/item/ammo_magazine/s357/rubber - hidden = 1 - -/datum/category_item/autolathe/arms/speedloader_44 - name = "speedloader (.44)" - path =/obj/item/ammo_magazine/s44 - hidden = 1 - -/datum/category_item/autolathe/arms/speedloader_44_rubber - name = "speedloader (.44 rubber)" - path =/obj/item/ammo_magazine/s44/rubber - hidden = 1 - -/datum/category_item/autolathe/arms/mag_44 - name = "magazine (.44)" - path =/obj/item/ammo_magazine/m44 - hidden = 1 - -/datum/category_item/autolathe/arms/mag_44_rubber - name = "magazine (.44 rubber)" - path =/obj/item/ammo_magazine/m44/rubber - hidden = 1 - -/datum/category_item/autolathe/arms/classic_smg_9mm - name = "SMG magazine (9mm)" - path = /obj/item/ammo_magazine/m9mml - hidden = 1 -/* De-coded? -/datum/category_item/autolathe/arms/classic_smg_9mmr - name = "SMG magazine (9mm rubber)" - path = /obj/item/ammo_magazine/m9mml/rubber - -/datum/category_item/autolathe/arms/classic_smg_9mmp - name = "SMG magazine (9mm practice)" - path = /obj/item/ammo_magazine/m9mml/practice - -/datum/category_item/autolathe/arms/classic_smg_9mmf - name = "SMG magazine (9mm flash)" - path = /obj/item/ammo_magazine/m9mml/flash -*/ diff --git a/code/datums/autolathe/autolathe.dm b/code/datums/autolathe/autolathe.dm deleted file mode 100644 index 2bad2075fc..0000000000 --- a/code/datums/autolathe/autolathe.dm +++ /dev/null @@ -1,130 +0,0 @@ -/datum/category_item/autolathe/New() - ..() - var/obj/item/I - if(path) - I = new path() - - if(!isitem(I)) // Something has gone horribly wrong, or right. - log_runtime("[name] created an Autolathe design without an assigned path or illegal item. Item = [I]") - return - - if(I.matter && !resources) - resources = list() - for(var/material in I.matter) - var/coeff = (no_scale ? 1 : 1.25) //most objects are more expensive to produce than to recycle - resources[material] = I.matter[material]*coeff // but if it's a sheet or RCD cartridge, it's 1:1 - if(is_stack) - if(istype(I, /obj/item/stack)) - var/obj/item/stack/IS = I - max_stack = IS.max_amount - else - max_stack = 10 - qdel(I) - -/**************************** -* Category Collection Setup * -****************************/ - -/datum/category_collection/autolathe - category_group_type = /datum/category_group/autolathe - -/************* -* Categories * -*************/ - -/datum/category_group/autolathe - -/datum/category_group/autolathe/all - name = "All" - category_item_type = /datum/category_item/autolathe - -// Copypasted from materials, they should show in All -/datum/category_group/autolathe/all/New() - ..() - - for(var/mame, value in GLOB.name_to_material) - var/datum/material/M = value - - if(!M.stack_type) // Shouldn't happen, but might. Never know. - continue - - if(istype(M, /datum/material/alienalloy)) - continue - - var/obj/item/stack/material/S = M.stack_type - if(initial(S.name) in items_by_name) - continue - - var/datum/category_item/autolathe/materials/WorkDat = new(src, M) - - items |= WorkDat - items_by_name[WorkDat.name] = WorkDat - -///datum/category_group/autolathe/all/New() - -/datum/category_group/autolathe/arms - name = "Arms and Ammunition" - category_item_type = /datum/category_item/autolathe/arms - -/datum/category_group/autolathe/devices - name = "Devices and Components" - category_item_type = /datum/category_item/autolathe/devices - -/datum/category_group/autolathe/engineering - name = "Engineering" - category_item_type = /datum/category_item/autolathe/engineering - -/datum/category_group/autolathe/general - name = "General" - category_item_type = /datum/category_item/autolathe/general - -/datum/category_group/autolathe/medical - name = "Medical" - category_item_type = /datum/category_item/autolathe/medical - -/datum/category_group/autolathe/tools - name = "Tools" - category_item_type = /datum/category_item/autolathe/tools - -/datum/category_group/autolathe/materials - name = "Materials" - category_item_type = /datum/category_item/autolathe/materials - -/datum/category_group/autolathe/materials/New() - ..() - - for(var/name, value in GLOB.name_to_material) - var/datum/material/M = value - - if(!M.stack_type) // Shouldn't happen, but might. Never know. - continue - - if(istype(M, /datum/material/alienalloy)) - continue - - var/obj/item/stack/material/S = M.stack_type - if(initial(S.name) in items_by_name) - continue - - var/datum/category_item/autolathe/materials/WorkDat = new(src, M) - - - items |= WorkDat - items_by_name[WorkDat.name] = WorkDat - -/******************* -* Category entries * -*******************/ - -/datum/category_item/autolathe - var/path - var/list/resources - var/hidden - var/power_use = 0 - var/is_stack // Creates multiple of an item if applied to non-stack items - var/max_stack - var/no_scale - var/man_rating = 0 - -/datum/category_item/autolathe/dd_SortValue() - return name diff --git a/code/datums/autolathe/devices.dm b/code/datums/autolathe/devices.dm deleted file mode 100644 index 437ba75f29..0000000000 --- a/code/datums/autolathe/devices.dm +++ /dev/null @@ -1,38 +0,0 @@ -/datum/category_item/autolathe/devices/consolescreen - name = "console screen" - path =/obj/item/stock_parts/console_screen - -/datum/category_item/autolathe/devices/igniter - name = "igniter" - path =/obj/item/assembly/igniter - -/datum/category_item/autolathe/devices/signaler - name = "signaler" - path =/obj/item/assembly/signaler - -/datum/category_item/autolathe/devices/sensor_infra - name = "infrared sensor" - path =/obj/item/assembly/infra - -/datum/category_item/autolathe/devices/timer - name = "timer" - path =/obj/item/assembly/timer - -/datum/category_item/autolathe/devices/sensor_prox - name = "proximity sensor" - path =/obj/item/assembly/prox_sensor - -/datum/category_item/autolathe/devices/beartrap - name = "mechanical trap" - path =/obj/item/beartrap - -/datum/category_item/autolathe/devices/barbedwire - name = "barbed wire" - path = /obj/item/material/barbedwire - hidden = 1 - resources = list(MAT_STEEL = 10000) - -/datum/category_item/autolathe/devices/electropack - name = "electropack" - path =/obj/item/radio/electropack - hidden = 1 diff --git a/code/datums/autolathe/devices_vr.dm b/code/datums/autolathe/devices_vr.dm deleted file mode 100644 index 658382a091..0000000000 --- a/code/datums/autolathe/devices_vr.dm +++ /dev/null @@ -1,3 +0,0 @@ -/datum/category_item/autolathe/devices/sleevecard - name = "sleevecard" - path =/obj/item/paicard/sleevecard diff --git a/code/datums/autolathe/engineering.dm b/code/datums/autolathe/engineering.dm deleted file mode 100644 index c93d7622a2..0000000000 --- a/code/datums/autolathe/engineering.dm +++ /dev/null @@ -1,112 +0,0 @@ -/datum/category_item/autolathe/engineering/airlockmodule - name = "airlock electronics" - path =/obj/item/airlock_electronics - -/datum/category_item/autolathe/engineering/airalarm - name = "air alarm electronics" - path =/obj/item/circuitboard/airalarm - -/datum/category_item/autolathe/engineering/firealarm - name = "fire alarm electronics" - path =/obj/item/circuitboard/firealarm - -/datum/category_item/autolathe/engineering/powermodule - name = "power control module" - path =/obj/item/module/power_control - -/datum/category_item/autolathe/engineering/statusdisplay - name = "status display electronics" - path =/obj/item/circuitboard/status_display - -/datum/category_item/autolathe/engineering/aistatusdisplay - name = "ai status display electronics" - path =/obj/item/circuitboard/ai_status_display - -/datum/category_item/autolathe/engineering/newscaster - name = "newscaster electronics" - path =/obj/item/circuitboard/newscaster - -/datum/category_item/autolathe/engineering/atm - name = "atm electronics" - path =/obj/item/circuitboard/atm - -/datum/category_item/autolathe/engineering/intercom - name = "intercom electronics" - path =/obj/item/circuitboard/intercom - -/datum/category_item/autolathe/engineering/holopad - name = "holopad electronics" - path =/obj/item/circuitboard/holopad - -/datum/category_item/autolathe/engineering/guestpass - name = "guestpass console electronics" - path =/obj/item/circuitboard/guestpass - -/datum/category_item/autolathe/engineering/entertainment - name = "entertainment camera electronics" - path =/obj/item/circuitboard/security/telescreen/entertainment - -/datum/category_item/autolathe/engineering/keycard - name = "keycard authenticator electronics" - path =/obj/item/circuitboard/keycard_auth - -/datum/category_item/autolathe/engineering/geiger_wall - name = "wall-mounted geiger counter electronics" - path =/obj/item/circuitboard/geiger - -/datum/category_item/autolathe/engineering/photocopier - name = "photocopier electronics" - path =/obj/item/circuitboard/photocopier - -/datum/category_item/autolathe/engineering/fax - name = "fax machine electronics" - path =/obj/item/circuitboard/fax - -/datum/category_item/autolathe/engineering/papershredder - name = "paper shredder electronics" - path =/obj/item/circuitboard/papershredder - -/datum/category_item/autolathe/engineering/microwave - name = "microwave electronics" - path =/obj/item/circuitboard/microwave - -/datum/category_item/autolathe/engineering/washing - name = "washing machine electronics" - path =/obj/item/circuitboard/washing - -/datum/category_item/autolathe/engineering/request - name = "request console electronics" - path =/obj/item/circuitboard/request - -/datum/category_item/autolathe/engineering/electrochromic - name = "electrochromic window control electronics" - path =/obj/item/circuitboard/electrochromic - -/datum/category_item/autolathe/engineering/pipelayer - name = "pipe layer electronics" - path =/obj/item/circuitboard/pipelayer - -/datum/category_item/autolathe/engineering/motor - name = "motor" - path =/obj/item/stock_parts/motor - -/datum/category_item/autolathe/engineering/gear - name = "gear" - path =/obj/item/stock_parts/gear - -/datum/category_item/autolathe/engineering/spring - name = "spring" - path =/obj/item/stock_parts/spring - -/datum/category_item/autolathe/engineering/rcd_ammo - name = "matter cartridge" - path =/obj/item/rcd_ammo - no_scale = TRUE //prevents material duplication exploits - -/datum/category_item/autolathe/engineering/rcd - name = "rapid construction device" - path =/obj/item/rcd - -/datum/category_item/autolathe/engineering/camera_assembly - name = "camera assembly" - path =/obj/item/camera_assembly diff --git a/code/datums/autolathe/engineering_vr.dm b/code/datums/autolathe/engineering_vr.dm deleted file mode 100644 index 1ceefcae72..0000000000 --- a/code/datums/autolathe/engineering_vr.dm +++ /dev/null @@ -1,79 +0,0 @@ -/datum/category_item/autolathe/engineering/timeclock - name = "timeclock electronics" - path =/obj/item/circuitboard/timeclock - -/datum/category_item/autolathe/engineering/id_restorer - name = "ID restoration console electronics" - path =/obj/item/circuitboard/id_restorer - -/datum/category_item/autolathe/engineering/oven - name = "oven electronics" - path =/obj/item/circuitboard/oven - -/datum/category_item/autolathe/engineering/fryer - name = "fryer electronics" - path =/obj/item/circuitboard/fryer - -/datum/category_item/autolathe/engineering/grill - name = "grill electronics" - path =/obj/item/circuitboard/grill - -/datum/category_item/autolathe/engineering/cerealmaker - name = "cereal maker electronics" - path =/obj/item/circuitboard/cerealmaker - -/datum/category_item/autolathe/engineering/candymachine - name = "candy machine electronics" - path =/obj/item/circuitboard/candymachine - -/datum/category_item/autolathe/engineering/battle_arcade - name = "battle arcade machine electronics" - path =/obj/item/circuitboard/arcade/battle - -/datum/category_item/autolathe/engineering/orion_trail - name = "orion trail aracade machine electronics" - path =/obj/item/circuitboard/arcade/orion_trail - -/datum/category_item/autolathe/engineering/clawmachine - name = "claw machine electronics" - path =/obj/item/circuitboard/arcade/clawmachine - -/datum/category_item/autolathe/engineering/jukebox - name = "jukebox electronics" - path =/obj/item/circuitboard/jukebox - -/datum/category_item/autolathe/engineering/mech_recharger - name = "mech recharging station electronics" - path =/obj/item/circuitboard/mech_recharger - -/datum/category_item/autolathe/engineering/recharge_station - name = "cyborg recharging station electronics" - path =/obj/item/circuitboard/recharge_station - -/datum/category_item/autolathe/engineering/batteryrack - name = "battery rack electronics" - path =/obj/item/circuitboard/batteryrack - -/datum/category_item/autolathe/engineering/grid_checker - name = "grid checker electronics" - path =/obj/item/circuitboard/grid_checker - -/datum/category_item/autolathe/engineering/breakerbox - name = "breaker box electronics" - path =/obj/item/circuitboard/breakerbox - -/datum/category_item/autolathe/engineering/gas_heater - name = "gas heater electronics" - path =/obj/item/circuitboard/unary_atmos/heater - -/datum/category_item/autolathe/engineering/gas_cooler - name = "gas cooler electronics" - path =/obj/item/circuitboard/unary_atmos/cooler - -/datum/category_item/autolathe/engineering/arf_generator - name = "atmospheric field generator electronics" - path =/obj/item/circuitboard/arf_generator - -/datum/category_item/autolathe/engineering/honey_extractor - name = "honey extractor electronics" - path =/obj/item/circuitboard/honey_extractor diff --git a/code/datums/autolathe/general.dm b/code/datums/autolathe/general.dm deleted file mode 100644 index 68240f10b0..0000000000 --- a/code/datums/autolathe/general.dm +++ /dev/null @@ -1,136 +0,0 @@ -/datum/category_item/autolathe/general/bucket - name = "bucket" - path =/obj/item/reagent_containers/glass/bucket - -/datum/category_item/autolathe/general/cooler_bottle - name = "water-cooler bottle" - path =/obj/item/reagent_containers/glass/cooler_bottle - -/datum/category_item/autolathe/general/drinkingglass - is_stack = TRUE - -/datum/category_item/autolathe/general/drinkingglass/square - name = "half-pint glass" - path =/obj/item/reagent_containers/food/drinks/glass2/square - -/datum/category_item/autolathe/general/drinkingglass/rocks - name = "rocks glass" - path =/obj/item/reagent_containers/food/drinks/glass2/rocks - -/datum/category_item/autolathe/general/drinkingglass/shake - name = "milkshake glass" - path =/obj/item/reagent_containers/food/drinks/glass2/shake - -/datum/category_item/autolathe/general/drinkingglass/cocktail - name = "cocktail glass" - path =/obj/item/reagent_containers/food/drinks/glass2/cocktail - -/datum/category_item/autolathe/general/drinkingglass/shot - name = "shot glass" - path =/obj/item/reagent_containers/food/drinks/glass2/shot - -/datum/category_item/autolathe/general/drinkingglass/pint - name = "pint glass" - path =/obj/item/reagent_containers/food/drinks/glass2/pint - -/datum/category_item/autolathe/general/drinkingglass/mug - name = "glass mug" - path =/obj/item/reagent_containers/food/drinks/glass2/mug - -/datum/category_item/autolathe/general/drinkingglass/wine - name = "wine glass" - path =/obj/item/reagent_containers/food/drinks/glass2/wine - -/datum/category_item/autolathe/general/drinkingglass/metaglass - name = "metamorphic glass" - path =/obj/item/reagent_containers/food/drinks/metaglass - -/datum/category_item/autolathe/general/drinkingglass/metaglass/metapint - name = "metamorphic pint glass" - path =/obj/item/reagent_containers/food/drinks/metaglass/metapint - -/datum/category_item/autolathe/general/flashlight - name = "flashlight" - path =/obj/item/flashlight - -/datum/category_item/autolathe/general/floor_light - name = "floor light" - path =/obj/item/floor_light - -/datum/category_item/autolathe/general/extinguisher - name = "extinguisher" - path =/obj/item/extinguisher - -/datum/category_item/autolathe/general/jar - name = "jar" - path =/obj/item/glass_jar - -/datum/category_item/autolathe/general/fishtank - name = "fish tank" - path =/obj/item/glass_jar - -/datum/category_item/autolathe/general/radio_headset - name = "radio headset" - path =/obj/item/radio/headset - -/datum/category_item/autolathe/general/radio_bounced - name = "station bounced radio" - path =/obj/item/radio/off - -/datum/category_item/autolathe/general/suit_cooler - name = "suit cooling unit" - path =/obj/item/suit_cooling_unit - -/datum/category_item/autolathe/general/weldermask - name = "welding mask" - path =/obj/item/clothing/head/welding - -/datum/category_item/autolathe/general/spraybottle - name = "spray bottle" - path = /obj/item/reagent_containers/spray - -/datum/category_item/autolathe/general/knife - name = "kitchen knife" - path =/obj/item/material/knife - -/datum/category_item/autolathe/general/taperecorder - name = "tape recorder" - path =/obj/item/taperecorder - -/datum/category_item/autolathe/general/tube - name = "light tube" - path =/obj/item/light/tube - is_stack = TRUE - -/datum/category_item/autolathe/general/bulb - name = "light bulb" - path =/obj/item/light/bulb - is_stack = TRUE - -/datum/category_item/autolathe/general/ashtray_glass - name = "glass ashtray" - path =/obj/item/material/ashtray/glass - -/datum/category_item/autolathe/general/weldinggoggles - name = "welding goggles" - path =/obj/item/clothing/glasses/welding - -/datum/category_item/autolathe/general/maglight - name = "maglight" - path =/obj/item/flashlight/maglight - -/datum/category_item/autolathe/general/idcard - name = "ID Card" - path = /obj/item/card/id - resources = list(MAT_STEEL = 100, MAT_GLASS = 100, MAT_PLASTIC = 300) - man_rating = 2 - -/datum/category_item/autolathe/general/handcuffs - name = "handcuffs" - path =/obj/item/handcuffs - hidden = 1 - -/datum/category_item/autolathe/general/legcuffs - name = "legcuffs" - path =/obj/item/handcuffs/legcuffs - hidden = 1 diff --git a/code/datums/autolathe/general_vr.dm b/code/datums/autolathe/general_vr.dm deleted file mode 100644 index e767d36afd..0000000000 --- a/code/datums/autolathe/general_vr.dm +++ /dev/null @@ -1,11 +0,0 @@ -/datum/category_item/autolathe/general/holocollar - name = "Holo-collar" - path =/obj/item/clothing/accessory/collar/holo - -/datum/category_item/autolathe/general/drinkingglass/carafe - name = "glass carafe" - path =/obj/item/reagent_containers/food/drinks/glass2/carafe - -/datum/category_item/autolathe/general/drinkingglass/pitcher - name = "plastic pitcher" - path =/obj/item/reagent_containers/food/drinks/glass2/pitcher diff --git a/code/datums/autolathe/materials.dm b/code/datums/autolathe/materials.dm deleted file mode 100644 index 3ecc9ed32f..0000000000 --- a/code/datums/autolathe/materials.dm +++ /dev/null @@ -1,23 +0,0 @@ -/datum/category_item/autolathe/materials - is_stack = TRUE - no_scale = TRUE // Prevents material duplaction exploits - -/datum/category_item/autolathe/materials/New(var/loc, var/mat) - if(istype(mat, /obj/item/stack/material)) - var/obj/item/stack/material/M = mat - name = M.name - resources = M.matter.Copy() - max_stack = M.max_amount - path = M.type - else if(istype(mat, /datum/material)) - var/datum/material/M = mat - var/obj/item/stack/material/S = M.stack_type - name = initial(S.name) - resources = M.get_matter() - max_stack = initial(S.max_amount) - path = S - . = ..() - -/datum/category_item/autolathe/materials/rods // Not strictly a material, so they need their own define - name = "metal rods" - path =/obj/item/stack/rods diff --git a/code/datums/autolathe/medical.dm b/code/datums/autolathe/medical.dm deleted file mode 100644 index 6e457bf448..0000000000 --- a/code/datums/autolathe/medical.dm +++ /dev/null @@ -1,43 +0,0 @@ -/datum/category_item/autolathe/medical/scalpel - name = "scalpel" - path =/obj/item/surgical/scalpel - -/datum/category_item/autolathe/medical/circularsaw - name = "circular saw" - path =/obj/item/surgical/circular_saw - -/datum/category_item/autolathe/medical/surgicaldrill - name = "surgical drill" - path =/obj/item/surgical/surgicaldrill - -/datum/category_item/autolathe/medical/retractor - name = "retractor" - path =/obj/item/surgical/retractor - -/datum/category_item/autolathe/medical/cautery - name = "cautery" - path =/obj/item/surgical/cautery - -/datum/category_item/autolathe/medical/hemostat - name = "hemostat" - path =/obj/item/surgical/hemostat - -/datum/category_item/autolathe/medical/beaker - name = "glass beaker" - path =/obj/item/reagent_containers/glass/beaker - -/datum/category_item/autolathe/medical/beaker_large - name = "large glass beaker" - path =/obj/item/reagent_containers/glass/beaker/large - -/datum/category_item/autolathe/medical/vial - name = "glass vial" - path =/obj/item/reagent_containers/glass/beaker/vial - -/datum/category_item/autolathe/medical/syringe - name = "syringe" - path =/obj/item/reagent_containers/syringe - -/datum/category_item/autolathe/medical/implanter - name = "implanter" - path =/obj/item/implanter diff --git a/code/datums/autolathe/medical_vr.dm b/code/datums/autolathe/medical_vr.dm deleted file mode 100644 index cfc893a542..0000000000 --- a/code/datums/autolathe/medical_vr.dm +++ /dev/null @@ -1,9 +0,0 @@ -/datum/category_item/autolathe/medical/autoinjector - name = "empty autoinjector" - path =/obj/item/reagent_containers/hypospray/autoinjector/empty - resources = list(MAT_PLASTIC = 10) //for recycling purposes mostly - -/datum/category_item/autolathe/medical/autoinjector/biginjector - name = "empty large autoinjector" - path =/obj/item/reagent_containers/hypospray/autoinjector/biginjector/empty - resources = list(MAT_PLASTIC = 500) diff --git a/code/datums/autolathe/tools.dm b/code/datums/autolathe/tools.dm deleted file mode 100644 index f3166f445d..0000000000 --- a/code/datums/autolathe/tools.dm +++ /dev/null @@ -1,70 +0,0 @@ -/datum/category_item/autolathe/tools/crowbar - name = "crowbar" - path =/obj/item/tool/crowbar - -/datum/category_item/autolathe/tools/multitool - name = "multitool" - path =/obj/item/multitool - -/datum/category_item/autolathe/tools/t_scanner - name = "T-ray scanner" - path =/obj/item/t_scanner - -/datum/category_item/autolathe/tools/weldertool - name = "welding tool" - path =/obj/item/weldingtool - -/datum/category_item/autolathe/tools/electric_welder - name = "electric welding tool" - path =/obj/item/weldingtool/electric/unloaded - hidden = 1 - -/datum/category_item/autolathe/tools/screwdriver - name = "screwdriver" - path =/obj/item/tool/screwdriver - -/datum/category_item/autolathe/tools/wirecutters - name = "wirecutters" - path =/obj/item/tool/wirecutters - -/datum/category_item/autolathe/tools/wrench - name = "wrench" - path =/obj/item/tool/wrench - -/datum/category_item/autolathe/tools/hatchet - name = "hatchet" - path =/obj/item/material/knife/machete/hatchet - -/datum/category_item/autolathe/tools/minihoe - name = "mini hoe" - path =/obj/item/material/minihoe - -/datum/category_item/autolathe/tools/welder_industrial - name = "industrial welding tool" - path =/obj/item/weldingtool/largetank - -/datum/category_item/autolathe/tools/spraybottle - name = "spray bottle" - path = /obj/item/reagent_containers/spray - resources = list(MAT_PLASTIC = 2000) - -/datum/category_item/autolathe/devices/slowwire - name = "snare wire" - path = /obj/item/material/barbedwire/plastic - resources = list(MAT_PLASTIC = 10000) - -/datum/category_item/autolathe/tools/spraynozzle - name = "spray nozzle" - path = /obj/item/reagent_containers/spray - resources = list(MAT_PLASTIC = 5000, MAT_STEEL = 2000) - hidden = 1 - man_rating = 2 - -/datum/category_item/autolathe/tools/rsf - name = "rapid service fabricator" - path = /obj/item/rsf - -/datum/category_item/autolathe/tools/dest_tagger - name = "destination tagger" - path = /obj/item/destTagger - resources = list(MAT_STEEL = 250, MAT_GLASS = 125) diff --git a/code/datums/autolathe/tools_vr.dm b/code/datums/autolathe/tools_vr.dm deleted file mode 100644 index 900bcd9095..0000000000 --- a/code/datums/autolathe/tools_vr.dm +++ /dev/null @@ -1,3 +0,0 @@ -/datum/category_item/autolathe/tools/prybar - name = "prybar" - path =/obj/item/tool/prybar diff --git a/code/datums/wires/autolathe.dm b/code/datums/wires/autolathe.dm index 0b488eb6e0..3a8e1920dc 100644 --- a/code/datums/wires/autolathe.dm +++ b/code/datums/wires/autolathe.dm @@ -4,7 +4,10 @@ proper_name = "Autolathe" /datum/wires/autolathe/New(atom/_holder) - wires = list(WIRE_AUTOLATHE_HACK, WIRE_ELECTRIFY, WIRE_AUTOLATHE_DISABLE) + wires = list(WIRE_LATHE_HACK, WIRE_ELECTRIFY, WIRE_LATHE_DISABLE) + var/obj/machinery/autolathe/A = _holder + if(A.hacked) + cut_wires += WIRE_LATHE_HACK return ..() /datum/wires/autolathe/get_status() @@ -23,12 +26,12 @@ /datum/wires/autolathe/on_cut(wire, mend) var/obj/machinery/autolathe/A = holder switch(wire) - if(WIRE_AUTOLATHE_HACK) + if(WIRE_LATHE_HACK) A.hacked = !mend A.update_tgui_static_data(usr) if(WIRE_ELECTRIFY) A.shocked = !mend - if(WIRE_AUTOLATHE_DISABLE) + if(WIRE_LATHE_DISABLE) A.disabled = !mend ..() @@ -37,21 +40,30 @@ return var/obj/machinery/autolathe/A = holder switch(wire) - if(WIRE_AUTOLATHE_HACK) + if(WIRE_LATHE_HACK) A.hacked = !A.hacked A.update_tgui_static_data(usr) - spawn(50) - if(A && !is_cut(wire)) - A.hacked = 0 - A.update_tgui_static_data(usr) + addtimer(CALLBACK(src, PROC_REF(reset_hacked), WIRE_LATHE_HACK, usr), 5 SECONDS) if(WIRE_ELECTRIFY) A.shocked = !A.shocked - spawn(50) - if(A && !is_cut(wire)) - A.shocked = 0 - if(WIRE_AUTOLATHE_DISABLE) + addtimer(CALLBACK(src, PROC_REF(reset_electrify), WIRE_ELECTRIFY), 5 SECONDS) + if(WIRE_LATHE_DISABLE) A.disabled = !A.disabled - spawn(50) - if(A && !is_cut(wire)) - A.disabled = 0 + addtimer(CALLBACK(src, PROC_REF(reset_disable), WIRE_LATHE_DISABLE), 5 SECONDS) ..() + +/datum/wires/autolathe/proc/reset_hacked(wire, mob/user) + var/obj/machinery/autolathe/A = holder + if(A && !is_cut(wire)) + A.hacked = FALSE + A.update_tgui_static_data(user) + +/datum/wires/autolathe/proc/reset_electrify(wire) + var/obj/machinery/autolathe/A = holder + if(A && !is_cut(wire)) + A.shocked = FALSE + +/datum/wires/autolathe/proc/reset_disable(wire) + var/obj/machinery/autolathe/A = holder + if(A && !is_cut(wire)) + A.disabled = FALSE diff --git a/code/datums/wires/circuit_imprinter.dm b/code/datums/wires/circuit_imprinter.dm new file mode 100644 index 0000000000..68048e7309 --- /dev/null +++ b/code/datums/wires/circuit_imprinter.dm @@ -0,0 +1,58 @@ +/datum/wires/circuit_imprinter + holder_type = /obj/machinery/rnd/production/circuit_imprinter + wire_count = 6 + proper_name = "Circuit Imprinter" + +/datum/wires/circuit_imprinter/New(atom/_holder) + wires = list(WIRE_LATHE_HACK, WIRE_LATHE_DISABLE) + var/obj/machinery/rnd/production/circuit_imprinter/A = _holder + if(A.hacked) + cut_wires += WIRE_LATHE_HACK + return ..() + +/datum/wires/circuit_imprinter/get_status() + . = ..() + var/obj/machinery/rnd/production/circuit_imprinter/A = holder + . += "The red light is [A.disabled ? "off" : "on"]." + . += "The blue light is [A.hacked ? "off" : "on"]." + +/datum/wires/circuit_imprinter/interactable(mob/user) + var/obj/machinery/rnd/production/circuit_imprinter/A = holder + if(A.panel_open) + return TRUE + return FALSE + +/datum/wires/circuit_imprinter/on_cut(wire, mend) + var/obj/machinery/rnd/production/circuit_imprinter/A = holder + switch(wire) + if(WIRE_LATHE_HACK) + A.hacked = !mend + A.update_tgui_static_data(usr) + if(WIRE_LATHE_DISABLE) + A.disabled = !mend + ..() + +/datum/wires/circuit_imprinter/on_pulse(wire) + if(is_cut(wire)) + return + var/obj/machinery/rnd/production/circuit_imprinter/A = holder + switch(wire) + if(WIRE_LATHE_HACK) + A.hacked = !A.hacked + A.update_tgui_static_data(usr) + addtimer(CALLBACK(src, PROC_REF(reset_hacked), WIRE_LATHE_HACK, usr), 5 SECONDS) + if(WIRE_LATHE_DISABLE) + A.disabled = !A.disabled + addtimer(CALLBACK(src, PROC_REF(reset_disable), WIRE_LATHE_DISABLE), 5 SECONDS) + ..() + +/datum/wires/circuit_imprinter/proc/reset_hacked(wire, mob/user) + var/obj/machinery/rnd/production/circuit_imprinter/A = holder + if(A && !is_cut(wire)) + A.hacked = FALSE + A.update_tgui_static_data(user) + +/datum/wires/circuit_imprinter/proc/reset_disable(wire) + var/obj/machinery/rnd/production/circuit_imprinter/A = holder + if(A && !is_cut(wire)) + A.disabled = FALSE diff --git a/code/datums/wires/protolathe.dm b/code/datums/wires/protolathe.dm new file mode 100644 index 0000000000..d19952e515 --- /dev/null +++ b/code/datums/wires/protolathe.dm @@ -0,0 +1,58 @@ +/datum/wires/protolathe + holder_type = /obj/machinery/rnd/production/protolathe + wire_count = 6 + proper_name = "Protolathe" + +/datum/wires/protolathe/New(atom/_holder) + wires = list(WIRE_LATHE_HACK, WIRE_LATHE_DISABLE) + var/obj/machinery/rnd/production/protolathe/A = _holder + if(A.hacked) + cut_wires += WIRE_LATHE_HACK + return ..() + +/datum/wires/protolathe/get_status() + . = ..() + var/obj/machinery/rnd/production/protolathe/A = holder + . += "The red light is [A.disabled ? "off" : "on"]." + . += "The blue light is [A.hacked ? "off" : "on"]." + +/datum/wires/protolathe/interactable(mob/user) + var/obj/machinery/rnd/production/protolathe/A = holder + if(A.panel_open) + return TRUE + return FALSE + +/datum/wires/protolathe/on_cut(wire, mend) + var/obj/machinery/rnd/production/protolathe/A = holder + switch(wire) + if(WIRE_LATHE_HACK) + A.hacked = !mend + A.update_tgui_static_data(usr) + if(WIRE_LATHE_DISABLE) + A.disabled = !mend + ..() + +/datum/wires/protolathe/on_pulse(wire) + if(is_cut(wire)) + return + var/obj/machinery/rnd/production/protolathe/A = holder + switch(wire) + if(WIRE_LATHE_HACK) + A.hacked = !A.hacked + A.update_tgui_static_data(usr) + addtimer(CALLBACK(src, PROC_REF(reset_hacked), WIRE_LATHE_HACK, usr), 5 SECONDS) + if(WIRE_LATHE_DISABLE) + A.disabled = !A.disabled + addtimer(CALLBACK(src, PROC_REF(reset_disable), WIRE_LATHE_DISABLE), 5 SECONDS) + ..() + +/datum/wires/protolathe/proc/reset_hacked(wire, mob/user) + var/obj/machinery/rnd/production/protolathe/A = holder + if(A && !is_cut(wire)) + A.hacked = FALSE + A.update_tgui_static_data(user) + +/datum/wires/protolathe/proc/reset_disable(wire) + var/obj/machinery/rnd/production/protolathe/A = holder + if(A && !is_cut(wire)) + A.disabled = FALSE diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index bfc0c87285..ffe3274ee7 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -210,7 +210,7 @@ icon_state = "power_mod" item_state = "std_mod" desc = "Heavy-duty switching circuits for power control." - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) + matter = RECYCLE_CIRCUIT_MATERIALS /obj/item/module/id_auth name = "\improper ID authentication module" diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index adb3d9b1c9..bae83f189e 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -1,6 +1,6 @@ /obj/machinery/autolathe name = "autolathe" - desc = "It produces items using metal and glass." + desc = "It produces items using steel, glass, plastic and maybe some more." icon_state = "autolathe" density = TRUE anchored = TRUE @@ -14,114 +14,393 @@ var/static/datum/category_collection/autolathe/autolathe_recipes - var/hacked = 0 - var/disabled = 0 - var/shocked = 0 - var/busy = 0 - - var/mat_efficiency = 1 - var/build_time = 50 + ///Is the autolathe hacked via wiring + var/hacked = FALSE + ///Is the autolathe disabled via wiring + var/disabled = FALSE + ///Did we recently shock a mob who medled with the wiring + var/shocked = FALSE + ///Are we currently printing something + var/busy = FALSE var/datum/wires/autolathe/wires = null - var/mb_rating = 0 - var/man_rating = 0 - - var/filtertext - - /// Reference to a remote material inventory, such as an ore silo. - var/datum/component/remote_materials/rmat + ///Coefficient applied to consumed materials. Lower values result in lower material consumption. + var/creation_efficiency = 1.6 + ///Designs related to the autolathe + var/datum/techweb/autounlocking/stored_research + ///Designs imported from technology disks that we can print. + var/list/imported_designs = list() + ///The container to hold materials + var/datum/component/material_container/materials + ///direction we output onto (if 0, on top of us) + var/drop_direction = 0 + //looping sound for printing items + var/datum/looping_sound/lathe_print/print_sound /obj/machinery/autolathe/Initialize(mapload) - rmat = AddComponent( \ - /datum/component/remote_materials, \ - mapload, \ - mat_container_signals = list( \ - COMSIG_MATCONTAINER_ITEM_CONSUMED = TYPE_PROC_REF(/obj/machinery/autolathe, AfterMaterialInsert) \ - )) + print_sound = new(list(src), FALSE, TRUE) + materials = AddComponent( \ + /datum/component/material_container, \ + subtypesof(/datum/material), \ + 0, \ + MATCONTAINER_EXAMINE, \ + container_signals = list(COMSIG_MATCONTAINER_ITEM_CONSUMED = TYPE_PROC_REF(/obj/machinery/autolathe, AfterMaterialInsert)) \ + ) . = ..() - if(!autolathe_recipes) - autolathe_recipes = new() + wires = new(src) + if(!GLOB.autounlock_techwebs[/datum/techweb/autounlocking/autolathe]) + GLOB.autounlock_techwebs[/datum/techweb/autounlocking/autolathe] = new /datum/techweb/autounlocking/autolathe + stored_research = GLOB.autounlock_techwebs[/datum/techweb/autounlocking/autolathe] + default_apply_parts() RefreshParts() /obj/machinery/autolathe/Destroy() - qdel(wires) - wires = null + QDEL_NULL(wires) + QDEL_NULL(print_sound) return ..() +/obj/machinery/autolathe/examine(mob/user) + . = ..() + if(!in_range(user, src) && !isobserver(user)) + return + . += span_notice("Material usage cost at [creation_efficiency * 100]%.") + if(drop_direction) + . += span_notice("Currently configured to drop printed objects [dir2text(drop_direction)].") + . += span_notice("Alt-click to reset.") + else + . += span_notice("Drag towards a direction (while next to it) to change drop direction.") + . += span_notice("Its maintenance panel is [!panel_open ? "closed" : "open"].") + +/* +/obj/machinery/autolathe/add_context(atom/source, list/context, obj/item/held_item, mob/user) + if(drop_direction) + context[SCREENTIP_CONTEXT_ALT_LMB] = "Reset Drop" + return CONTEXTUAL_SCREENTIP_SET + + if(isnull(held_item)) + return NONE + + if(held_item.tool_behaviour == TOOL_SCREWDRIVER) + context[SCREENTIP_CONTEXT_LMB] = "[panel_open ? "Close" : "Open"] Panel" + return CONTEXTUAL_SCREENTIP_SET + + if(panel_open && held_item.tool_behaviour == TOOL_CROWBAR) + context[SCREENTIP_CONTEXT_LMB] = "Deconstruct" + return CONTEXTUAL_SCREENTIP_SET + +/obj/machinery/autolathe/crowbar_act(mob/living/user, obj/item/tool) + . = NONE + if(default_deconstruction_crowbar(tool)) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/autolathe/screwdriver_act(mob/living/user, obj/item/tool) + . = ITEM_INTERACT_BLOCKING + if(default_deconstruction_screwdriver(user, "autolathe_t", "autolathe", tool)) + return ITEM_INTERACT_SUCCESS +*/ + +/obj/machinery/autolathe/tgui_status(mob/user) + if(disabled) + return STATUS_CLOSE + return ..() + +/obj/machinery/autolathe/attack_hand(mob/user as mob) + interact(user) + +/obj/machinery/autolathe/interact(mob/user) + if(panel_open) + return wires.Interact(user) + + if(stat & (NOPOWER | EMPED)) + return + + if(shocked && !(stat & NOPOWER)) + shock(user, 50) + return + + tgui_interact(user) + +/obj/machinery/autolathe/proc/AfterMaterialInsert(datum/source, obj/item/item_inserted, id_inserted, amount_inserted) + SIGNAL_HANDLER + flick("autolathe_loading", src)//plays metal insertion animation + // use_power(min(1000, amount_inserted / 100)) + SStgui.update_uis(src) + /obj/machinery/autolathe/tgui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "Autolathe", name) ui.open() -/obj/machinery/autolathe/tgui_status(mob/user) - if(disabled) - return STATUS_CLOSE - return ..() +/** + * Converts all the designs supported by this autolathe into UI data + * Arguments + * + * * list/designs - the list of techweb designs we are trying to send to the UI + */ +/obj/machinery/autolathe/proc/handle_designs(list/designs) + PRIVATE_PROC(TRUE) + + if(!length(designs)) + return list() + + var/list/output = list() + + var/datum/asset/spritesheet_batched/research_designs/spritesheet = get_asset_datum(/datum/asset/spritesheet_batched/research_designs) + var/size32x32 = "[spritesheet.name]32x32" + + for(var/design_id in designs) + var/datum/design_techweb/design = SSresearch.techweb_design_by_id(design_id) + if(design.make_reagent) + continue + if(!hacked && (RND_CATEGORY_HACKED in design.category)) + continue + + //compute cost & maximum number of printable items + var/coeff = (ispath(design.build_path, /obj/item/stack) ? 1 : creation_efficiency) + var/list/cost = list() + for(var/id in design.materials) + var/datum/material/mat = get_material_by_name(id) + cost[mat.name] = OPTIMAL_COST(design.materials[id] * coeff) + + //create & send ui data + var/css_id = sanitize_css_class_name(design.id) + var/size = spritesheet.icon_size_id(css_id) + var/list/design_data = list( + "name" = design.name, + "desc" = design.get_description(), + "cost" = cost, + "id" = design.id, + "categories" = design.category, + "icon" = "[size == size32x32 ? "" : "[size] "][css_id]" + ) + + output += list(design_data) + + return output /obj/machinery/autolathe/tgui_static_data(mob/user) - var/list/data = ..() + var/list/data = materials.tgui_static_data() - var/list/categories = list() - var/list/recipes = list() - for(var/datum/category_group/autolathe/A in autolathe_recipes.categories) - categories += A.name - for(var/datum/category_item/autolathe/M in A.items) - if(M.hidden && !hacked) - continue - if(M.man_rating > man_rating) - continue - recipes.Add(list(list( - "category" = A.name, - "name" = M.name, - "ref" = REF(M), - "requirements" = M.resources, - "hidden" = M.hidden, - "coeff_applies" = !M.no_scale, - "is_stack" = M.is_stack, - ))) - data["recipes"] = recipes - data["categories"] = categories - - var/list/material_data = rmat.mat_container?.tgui_static_data(user) - if(material_data) - data += material_data + data["designs"] = handle_designs(stored_research.researched_designs) + data["designs"] += handle_designs(imported_designs) return data /obj/machinery/autolathe/ui_assets(mob/user) return list( - get_asset_datum(/datum/asset/spritesheet_batched/sheetmaterials) + get_asset_datum(/datum/asset/spritesheet_batched/sheetmaterials), + get_asset_datum(/datum/asset/spritesheet_batched/research_designs), ) /obj/machinery/autolathe/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state) - var/list/data = ..() - data["busy"] = busy + var/list/data = list() + + data["materialtotal"] = materials.total_amount() + data["materialsmax"] = materials.max_amount + data["active"] = busy + data["materials"] = materials.tgui_data() - var/list/material_data = rmat.mat_container?.tgui_data(user, TRUE) - if(material_data) - data["materials"] = material_data - data["mat_efficiency"] = mat_efficiency return data -/obj/machinery/autolathe/interact(mob/user) - if(panel_open) - return wires.Interact(user) +/obj/machinery/autolathe/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) + if(..()) + return TRUE - if(disabled) - to_chat(user, span_danger("\The [src] is disabled!")) + add_fingerprint(ui.user) + + //sanity checks to start printing + if(action != "make") + stack_trace("unknown autolathe ui_act: [action]") return - if(shocked) - shock(user, 50) + if(disabled) + atom_say("Unable to print, voltage mismatch in internal wiring.") + return - tgui_interact(user) + if(busy) + atom_say("The autolathe is busy. Please wait for completion of previous operation.") + return + + //validate design + var/design_id = params["id"] + if(!design_id) + return + var/valid_design = stored_research.researched_designs[design_id] + valid_design ||= imported_designs[design_id] + if(!valid_design) + return + var/datum/design_techweb/design = SSresearch.techweb_design_by_id(design_id) + if(isnull(design)) + stack_trace("got passed an invalid design id: [design_id] and somehow made it past all checks") + return + if(!(design.build_type & AUTOLATHE)) + atom_say("This fabricator does not have the necessary keys to decrypt this design.") + return + + //validate print quantity + var/build_count = params["multiplier"] + if(isnull(build_count)) + return + build_count = text2num(build_count) + if(isnull(build_count)) + return + build_count = clamp(build_count, 1, 50) + + // Check for materials required. For custom material items decode their required materials + var/list/materials_needed = list() + for(var/id, amount_needed in design.materials) + var/datum/material = get_material_by_name(id) + if(!istype(material, /datum/material)) + CRASH("Autolathe ui_act got passed an invalid material id: [material]") + materials_needed[material] += amount_needed + + //checks for available materials + var/material_cost_coefficient = ispath(design.build_path, /obj/item/stack) ? 1 : creation_efficiency + if(!materials.has_materials(materials_needed, material_cost_coefficient, build_count)) + atom_say("Not enough materials to begin production.") + return + + //compute power & time to print 1 item + var/charge_per_item = 0 + for(var/material, amount in design.materials) + charge_per_item += amount + + charge_per_item = ROUND_UP((charge_per_item / (MAX_STACK_SIZE * SHEET_MATERIAL_AMOUNT)) * material_cost_coefficient * active_power_usage) + var/build_time_per_item = (design.construction_time * design.lathe_time_factor) ** 0.8 + + //do the printing sequentially + busy = TRUE + icon_state = "autolathe_n" + SStgui.update_uis(src) + // play this after all checks passed individually for each item. + print_sound.start() + var/turf/target_location + if(drop_direction) + target_location = get_step(src, drop_direction) + if(target_location.density) + target_location = get_turf(src) + else + target_location = get_turf(src) + + + addtimer(CALLBACK(src, PROC_REF(do_make_item), design, build_count, build_time_per_item, material_cost_coefficient, charge_per_item, materials_needed, target_location), build_time_per_item) + return TRUE + +/** + * Callback for start_making, actually makes the item + * Arguments + * + * * datum/design/design - the design we are trying to print + * * items_remaining - the number of designs left out to print + * * build_time_per_item - the time taken to print 1 item + * * material_cost_coefficient - the cost efficiency to print 1 design + * * charge_per_item - the amount of power to print 1 item + * * list/materials_needed - the list of materials to print 1 item + * * turf/target - the location to drop the printed item on +*/ +/obj/machinery/autolathe/proc/do_make_item(datum/design_techweb/design, items_remaining, build_time_per_item, material_cost_coefficient, charge_per_item, list/materials_needed, turf/target) + PROTECTED_PROC(TRUE) + + if(items_remaining <= 0) // how + finalize_build() + return + + if(stat & (NOPOWER|EMPED)) + atom_say("Unable to continue production, power failure.") + finalize_build() + return + + if(!use_power_oneoff(charge_per_item)) // provide the wait time until lathe is ready + var/area/my_area = get_area(src) + var/obj/machinery/power/apc/my_apc = my_area.apc + if(!QDELETED(my_apc)) + atom_say("Unable to continue production, power grid overload.") + else + atom_say("Unable to continue production, no APC in area.") + finalize_build() + return + + var/is_stack = ispath(design.build_path, /obj/item/stack) + if(!materials.has_materials(materials_needed, material_cost_coefficient, is_stack ? items_remaining : 1)) + atom_say("Unable to continue production, missing materials.") + finalize_build() + return + materials.use_materials(materials_needed, material_cost_coefficient, is_stack ? items_remaining : 1) + + var/atom/movable/created + if(is_stack) + var/obj/item/stack/stack_item = initial(design.build_path) + var/max_stack_amount = initial(stack_item.max_amount) + var/number_to_make = (initial(stack_item.amount) * items_remaining) + while(number_to_make > max_stack_amount) + created = new stack_item(null, max_stack_amount) //it's imporant to spawn things in nullspace, since obj's like stacks qdel when they enter a tile/merge with other stacks of the same type, resulting in runtimes. + if(isitem(created)) + created.pixel_x = rand(-6, 6) + created.pixel_y = rand(-6, 6) + created.forceMove(target) + number_to_make -= max_stack_amount + + created = new stack_item(target, number_to_make) + else + created = design.create_item(target) + split_materials_uniformly(materials_needed, material_cost_coefficient, created) + + if(isitem(created)) + created.pixel_x = rand(-6, 6) + created.pixel_y = rand(-6, 6) + + if(is_stack) + items_remaining = 0 + else + items_remaining -= 1 + + if(items_remaining <= 0) + finalize_build() + return + addtimer(CALLBACK(src, PROC_REF(do_make_item), design, items_remaining, build_time_per_item, material_cost_coefficient, charge_per_item, materials_needed, target), build_time_per_item) + +/** + * Resets the icon state and busy flag + * Called at the end of do_make_item's timer loop +*/ +/obj/machinery/autolathe/proc/finalize_build() + PROTECTED_PROC(TRUE) + print_sound.stop() + icon_state = initial(icon_state) + busy = FALSE + SStgui.update_uis(src) + +/obj/machinery/autolathe/MouseDrop(over_object, src_location, over_location) + if(isobserver(usr) || !Adjacent(usr)) + return + if(busy) + balloon_alert(usr, "printing started!") + return + var/direction = get_dir(src, over_location) + if(!direction) + return + drop_direction = direction + balloon_alert(usr, "dropping [dir2text(drop_direction)]") + +/obj/machinery/autolathe/click_alt(mob/user) + if(!drop_direction) + return CLICK_ACTION_BLOCKING + if(busy) + balloon_alert(user, "busy printing!") + return CLICK_ACTION_SUCCESS + balloon_alert(user, "drop direction reset") + drop_direction = 0 + return CLICK_ACTION_SUCCESS /obj/machinery/autolathe/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(is_robot_module(O)) + return + if(busy) to_chat(user, span_notice("\The [src] is busy. Please wait for completion of previous operation.")) return @@ -141,110 +420,53 @@ //Don't eat multitools or wirecutters used on an open lathe. if(O.has_tool_quality(TOOL_MULTITOOL) || O.has_tool_quality(TOOL_WIRECUTTER)) wires.Interact(user) - return - - if(is_robot_module(O)) - return 0 - - if(istype(O,/obj/item/ammo_magazine/clip) || istype(O,/obj/item/ammo_magazine/s357) || istype(O,/obj/item/ammo_magazine/s38) || istype (O,/obj/item/ammo_magazine/s44)/* VOREstation Edit*/) // Prevents ammo recycling exploit with speedloaders. - to_chat(user, "\The [O] is too hazardous to recycle with the autolathe!") + else + to_chat(user, "close the panel first!") return - return ..() + if(!istype(O, /obj/item/disk/design_disk)) + return ..() -/obj/machinery/autolathe/attack_hand(mob/user as mob) - interact(user) + // The rest has to do with loading from design disks + user.visible_message(span_notice("[user] begins to load \the [O] in \the [src]..."), + balloon_alert(user, "uploading design..."), + span_hear("You hear the chatter of a floppy drive.")) + busy = TRUE -/obj/machinery/autolathe/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) - if(..()) - return TRUE - - add_fingerprint(ui.user) - - if(busy) - to_chat(ui.user, span_notice("The autolathe is busy. Please wait for completion of previous operation.")) + if(!do_after(user, 1.5 SECONDS, target = src)) + busy = FALSE + update_static_data_for_all_viewers() + balloon_alert(user, "interrupted!") return - switch(action) - if("make") - var/datum/category_item/autolathe/making = locate(params["make"]) - if(!istype(making)) - return - if(making.hidden && !hacked) - return - var/multiplier = (params["multiplier"] || 1) + var/obj/item/disk/design_disk/disky = O + var/list/not_imported + for(var/datum/design_techweb/blueprint as anything in disky.blueprints) + if(!blueprint) + continue + if(blueprint.build_type & AUTOLATHE) + imported_designs[blueprint.id] = TRUE + else + LAZYADD(not_imported, blueprint.name) - if(making.is_stack) - var/max_sheets - for(var/material in making.resources) - var/coeff = (making.no_scale ? 1 : mat_efficiency) //stacks are unaffected by production coefficient - var/sheets = round(rmat.mat_container.get_material_amount(material) / round(making.resources[material] * coeff)) - if(isnull(max_sheets) || max_sheets > sheets) - max_sheets = sheets - if(!isnull(rmat.mat_container.get_material_amount(material)) && rmat.mat_container.get_material_amount(material) < round(making.resources[material] * coeff)) - max_sheets = 0 - //Build list of multipliers for sheets. - multiplier = tgui_input_number(ui.user, "How many do you want to print? (0-[max_sheets])", null, null, max_sheets, 0) - if(!multiplier || multiplier <= 0 || (multiplier != round(multiplier)) || multiplier > max_sheets || tgui_status(ui.user, state) != STATUS_INTERACTIVE) - return FALSE + if(not_imported) + to_chat(user, span_warning("The following design[length(not_imported) > 1 ? "s" : ""] couldn't be imported: [english_list(not_imported)]")) - //Check if we still have the materials. - var/coeff = (making.no_scale ? 1 : mat_efficiency) //stacks are unaffected by production coefficient + busy = FALSE + update_static_data_for_all_viewers() + return TRUE - if(!rmat.can_use_resource()) - return +/obj/machinery/autolathe/RefreshParts() + . = ..() + var/mat_capacity = 0 + for(var/obj/item/stock_parts/matter_bin/new_matter_bin in component_parts) + mat_capacity += new_matter_bin.rating * (37.5*SHEET_MATERIAL_AMOUNT) + materials.max_amount = mat_capacity - if(LAZYLEN(making.resources)) - if(!rmat.mat_container.has_materials(making.resources, coeff, multiplier)) - return - - rmat.use_materials(making.resources, coeff, multiplier) - - busy = making.name - update_use_power(USE_POWER_ACTIVE) - - update_icon() // So lid closes - - sleep(build_time) - - busy = 0 - update_use_power(USE_POWER_IDLE) - update_icon() // So lid opens - - //Sanity check. - if(!making || !src) - return - - //Create the desired item. - var/obj/item/I = new making.path(src.loc) - - if(LAZYLEN(I.matter)) // Sadly we must obey the laws of equivalent exchange. - I.matter.Cut() - else - I.matter = list() - - for(var/material in making.resources) // Handle the datum's autoscaling for waste, so we're properly wasting material, but not so much if we have efficiency. - I.matter[material] = round(making.resources[material] / (making.no_scale ? 1 : 1.25)) * (making.no_scale ? 1 : mat_efficiency) - - flick("[initial(icon_state)]_finish", src) - if(multiplier > 1) - if(istype(I, /obj/item/stack)) - var/obj/item/stack/S = I - S.set_amount(multiplier) - else - for(multiplier; multiplier > 1; --multiplier) // Create multiple items if it's not a stack. - I = new making.path(src.loc) - // We've already deducted the cost of multiple items. Process the matter the same. - if(LAZYLEN(I.matter)) - I.matter.Cut() - - else - I.matter = list() - - for(var/material in making.resources) - I.matter[material] = round(making.resources[material] / (making.no_scale ? 1 : 1.25)) * (making.no_scale ? 1 : mat_efficiency) - return TRUE - return FALSE + var/efficiency = 1.8 + for(var/obj/item/stock_parts/motor/new_servo in component_parts) + efficiency -= new_servo.rating * 0.2 + creation_efficiency = max(1, round(efficiency, 0.1)) // creation_efficiency goes 1.6 -> 1.4 -> 1.2 -> 1 per level of servo efficiency /obj/machinery/autolathe/update_icon() cut_overlays() @@ -257,29 +479,3 @@ return if(busy) icon_state = "[icon_state]_work" - -//Updates overall lathe storage size. -/obj/machinery/autolathe/RefreshParts() - ..() - mb_rating = 0 - man_rating = 0 - for(var/obj/item/stock_parts/matter_bin/MB in component_parts) - mb_rating += MB.rating - for(var/obj/item/stock_parts/manipulator/M in component_parts) - man_rating += M.rating - - rmat.set_local_size(mb_rating * 75000) - - build_time = 50 / man_rating - mat_efficiency = 1.1 - man_rating * 0.1// Normally, price is 1.25 the amount of material, so this shouldn't go higher than 0.6. Maximum rating of parts is 5 - update_tgui_static_data(usr) - -/obj/machinery/autolathe/proc/AfterMaterialInsert(obj/item/item_inserted, id_inserted, amount_inserted) - flick("autolathe_loading", src)//plays metal insertion animation - // use_power(min(1000, amount_inserted / 100)) - SStgui.update_uis(src) - -/obj/machinery/autolathe/examine(mob/user) - . = ..() - if(in_range(user, src) || isobserver(user)) - . += span_notice("The status display reads: Storing up to [rmat.local_size] material units.
Material consumption at [mat_efficiency*100]%.") diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 5c44746385..d1ac644d0d 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -50,7 +50,7 @@ /obj/machinery/computer/cryopod/dorms name = "residential oversight console" desc = "An interface between visitors and the residential oversight systems tasked with keeping track of all visitors in the deeper section of the colony." - circuit = "/obj/item/circuitboard/robotstoragecontrol" + circuit = /obj/item/circuitboard/robotstoragecontrol storage_type = "visitors" storage_name = "Residential Oversight Control" @@ -59,7 +59,7 @@ /obj/machinery/computer/cryopod/travel name = "docking oversight console" desc = "An interface between visitors and the docking oversight systems tasked with keeping track of all visitors who enter or exit from the docks." - circuit = "/obj/item/circuitboard/robotstoragecontrol" + circuit = /obj/item/circuitboard/robotstoragecontrol storage_type = "visitors" storage_name = "Travel Oversight Control" @@ -68,7 +68,7 @@ /obj/machinery/computer/cryopod/gateway name = "gateway oversight console" desc = "An interface between visitors and the gateway oversight systems tasked with keeping track of all visitors who enter or exit from the gateway." - circuit = "/obj/item/circuitboard/robotstoragecontrol" + circuit = /obj/item/circuitboard/robotstoragecontrol storage_type = "visitors" storage_name = "Travel Oversight Control" @@ -152,29 +152,34 @@ */ /obj/item/circuitboard/cryopodcontrol - name = "Circuit board (Cryogenic Oversight Console)" - build_path = "/obj/machinery/computer/cryopod" + name = T_BOARD("Cryogenic Oversight Console") + build_path = /obj/machinery/computer/cryopod origin_tech = list(TECH_DATA = 3) + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/robotstoragecontrol - name = "Circuit board (Robotic Storage Console)" - build_path = "/obj/machinery/computer/cryopod/robot" + name = T_BOARD("Robotic Storage Console") + build_path = /obj/machinery/computer/cryopod/robot origin_tech = list(TECH_DATA = 3) + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/dormscontrol - name = "Circuit board (Residential Oversight Console)" - build_path = "/obj/machinery/computer/cryopod/door/dorms" + name = T_BOARD("Residential Oversight Console") + build_path = /obj/machinery/computer/cryopod/dorms origin_tech = list(TECH_DATA = 3) + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/travelcontrol - name = "Circuit board (Travel Oversight Console - Docks)" - build_path = "/obj/machinery/computer/cryopod/door/travel" + name = T_BOARD("Travel Oversight Console - Docks") + build_path = /obj/machinery/computer/cryopod/travel origin_tech = list(TECH_DATA = 3) + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/gatewaycontrol - name = "Circuit board (Travel Oversight Console - Gateway)" - build_path = "/obj/machinery/computer/cryopod/door/gateway" + name = T_BOARD("Travel Oversight Console - Gateway") + build_path = /obj/machinery/computer/cryopod/gateway origin_tech = list(TECH_DATA = 3) + hidden = TRUE // todo - Make properly constructable in round //Decorative structures to go alongside cryopods. /obj/structure/cryofeed diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index 1169201120..b95ff4aac5 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -6,6 +6,7 @@ dir = NORTH icon_state = "doppler" + circuit = /obj/item/circuitboard/doppler_array /obj/machinery/doppler_array/Initialize(mapload) . = ..() @@ -29,15 +30,7 @@ var/turf/our_turf = get_turf(src) if(our_turf.Distance(epicenter) > 100) return - - /* There is no way to rotate these... Why? - var/direct = get_dir(our_turf,epicenter) - if(!(direct & dir)) - return - */ - - var/message = "Explosive disturbance detected - Epicenter at: grid ([x0],[y0],[z0]). Epicenter radius: [devastation_range]. Outer radius: [heavy_impact_range]. Shockwave radius: [light_impact_range]. Temporal displacement of tachyons: [seconds_taken] seconds." - audible_message(span_npc_say(span_name("[src]") + " states coldly, \"[message]\"")) + atom_say("Explosive disturbance detected - Epicenter at: grid ([x0],[y0],[z0]). Epicenter radius: [devastation_range]. Outer radius: [heavy_impact_range]. Shockwave radius: [light_impact_range]. Temporal displacement of tachyons: [seconds_taken] seconds.") /obj/machinery/doppler_array/power_change() ..() @@ -45,3 +38,12 @@ icon_state = initial(icon_state) else icon_state = "[initial(icon_state)]_off" + +/obj/machinery/doppler_array/attackby(obj/item/W, mob/user, attack_modifier, click_parameters) + add_fingerprint(user) + if(default_deconstruction_screwdriver(user, W)) + return + if(default_deconstruction_crowbar(user, W)) + return + if(default_part_replacement(user, W)) + return diff --git a/code/game/machinery/embedded_controller/construction.dm b/code/game/machinery/embedded_controller/construction.dm index aa6d24018d..91a0c14b2c 100644 --- a/code/game/machinery/embedded_controller/construction.dm +++ b/code/game/machinery/embedded_controller/construction.dm @@ -2,7 +2,6 @@ name = T_BOARD("cycling airlock button") build_path = /obj/machinery/access_button board_type = new /datum/frame/frame_types/button - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) /obj/item/circuitboard/airlock_cycling/attackby(obj/item/I as obj, mob/user as mob) if(I.has_tool_quality(TOOL_MULTITOOL)) diff --git a/code/game/machinery/fire_alarm.dm b/code/game/machinery/fire_alarm.dm index e9729b20fc..74f3caebb7 100644 --- a/code/game/machinery/fire_alarm.dm +++ b/code/game/machinery/fire_alarm.dm @@ -207,7 +207,7 @@ Just a object used in constructing fire alarms icon_state = "door_electronics" desc = "A circuit. It has a label on it, it says \"Can handle heat levels up to 40 degrees celsius!\"" w_class = ITEMSIZE_SMALL - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) + matter = RECYCLE_CIRCUIT_MATERIALS */ /obj/machinery/partyalarm name = "\improper PARTY BUTTON" diff --git a/code/game/machinery/frame.dm b/code/game/machinery/frame.dm index b6a540e892..ecd9690923 100644 --- a/code/game/machinery/frame.dm +++ b/code/game/machinery/frame.dm @@ -41,12 +41,12 @@ GLOBAL_LIST(construction_frame_floor) /datum/frame/frame_types/computer name = "Computer" - icon_override = 'icons/obj/stock_parts_vr.dmi' //VOREStation Edit + icon_override = 'icons/obj/stock_parts_vr.dmi' frame_class = FRAME_CLASS_COMPUTER /datum/frame/frame_types/machine name = "Machine" - icon_override = 'icons/obj/stock_parts_vr.dmi' //VOREStation Edit + icon_override = 'icons/obj/stock_parts_vr.dmi' frame_class = FRAME_CLASS_MACHINE /datum/frame/frame_types/conveyor @@ -213,7 +213,7 @@ GLOBAL_LIST(construction_frame_floor) /datum/frame/frame_types/injector_maker name = "Ready-to-Use Medicine 3000" frame_class = FRAME_CLASS_MACHINE - circuit = /obj/machinery/atmospheric_field_generator + circuit = /obj/item/circuitboard/injector_maker frame_size = 3 // Refinery machines diff --git a/code/game/machinery/vitals_monitor.dm b/code/game/machinery/vitals_monitor.dm index edf76814de..9694e65289 100644 --- a/code/game/machinery/vitals_monitor.dm +++ b/code/game/machinery/vitals_monitor.dm @@ -1,5 +1,5 @@ /obj/item/circuitboard/machine/vitals_monitor - name = "circuit board (vitals monitor)" + name = T_BOARD("vitals monitor") build_path = /obj/machinery/vitals_monitor board_type = new /datum/frame/frame_types/machine origin_tech = list(TECH_DATA = 3, TECH_BIO = 4, TECH_ENGINEERING = 2) diff --git a/code/game/objects/items/weapons/circuitboards/circuitboard.dm b/code/game/objects/items/weapons/circuitboards/circuitboard.dm index fedd757df2..8e2ea7d44d 100644 --- a/code/game/objects/items/weapons/circuitboards/circuitboard.dm +++ b/code/game/objects/items/weapons/circuitboards/circuitboard.dm @@ -18,6 +18,9 @@ drop_sound = 'sound/items/drop/device.ogg' pickup_sound = 'sound/items/pickup/device.ogg' + /// If true, this board should be ignored during the circuitboard printing unit test, and give an examine hint that the board may be hard to get if so. + var/hidden = FALSE + /obj/item/circuitboard/Destroy() if(isobject(board_type)) // Some boards use text instead of an instance... QDEL_NULL(board_type) diff --git a/code/game/objects/items/weapons/circuitboards/circuitboards_vr.dm b/code/game/objects/items/weapons/circuitboards/circuitboards_vr.dm index 9d1b449f70..ce35c21540 100644 --- a/code/game/objects/items/weapons/circuitboards/circuitboards_vr.dm +++ b/code/game/objects/items/weapons/circuitboards/circuitboards_vr.dm @@ -12,6 +12,8 @@ continue nice_list += list("[req_components[A]] [initial(A.name)]") . += "Required components: [english_list(nice_list)]." + if(hidden) // Notify the player that this board cannot be printed easily, so don't lose it! + . += span_danger("It might be hard to find a replacement for a circuit this unique.") // VOREStation specific circuit boards! @@ -63,21 +65,18 @@ name = T_BOARD("timeclock") build_path = /obj/machinery/computer/timeclock board_type = new /datum/frame/frame_types/timeclock_terminal - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) // Board for the ID restorer in id_restorer_vr.dm /obj/item/circuitboard/id_restorer name = T_BOARD("ID restoration console") build_path = /obj/machinery/computer/id_restorer board_type = new /datum/frame/frame_types/id_restorer - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) /obj/item/circuitboard/security/xenobio name = T_BOARD("xenobiology camera monitor") build_path = /obj/machinery/computer/security/xenobio network = list(NETWORK_XENOBIO) req_access = list() - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) /obj/item/circuitboard/machine/rdserver name = T_BOARD("R&D Server") diff --git a/code/game/objects/items/weapons/circuitboards/computer/camera_monitor.dm b/code/game/objects/items/weapons/circuitboards/computer/camera_monitor.dm index 8499a09015..04d56c9745 100644 --- a/code/game/objects/items/weapons/circuitboards/computer/camera_monitor.dm +++ b/code/game/objects/items/weapons/circuitboards/computer/camera_monitor.dm @@ -17,6 +17,7 @@ /obj/item/circuitboard/security/tv name = T_BOARD("security camera monitor - television") build_path = /obj/machinery/computer/security/wooden_tv + hidden = TRUE /obj/item/circuitboard/security/engineering name = T_BOARD("engineering camera monitor") diff --git a/code/game/objects/items/weapons/circuitboards/computer/computer.dm b/code/game/objects/items/weapons/circuitboards/computer/computer.dm index 09535b45f5..3f528a1db8 100644 --- a/code/game/objects/items/weapons/circuitboards/computer/computer.dm +++ b/code/game/objects/items/weapons/circuitboards/computer/computer.dm @@ -42,6 +42,7 @@ /obj/item/circuitboard/card/centcom name = T_BOARD("CentCom ID card modification console") build_path = /obj/machinery/computer/card/centcom + hidden = TRUE // Mapper only centcom machine /obj/item/circuitboard/teleporter name = T_BOARD("teleporter control console") @@ -54,7 +55,7 @@ /obj/item/circuitboard/skills/pcu name = T_BOARD("employment records PCU") - build_path = /obj/machinery/computer/skills + build_path = /obj/machinery/computer/skills // this needs to be fixed someday, a pcu subtype needs to be made, but it affects all maps... /obj/item/circuitboard/stationalert_engineering name = T_BOARD("station alert console (engineering)") @@ -75,6 +76,7 @@ /obj/item/circuitboard/pod name = T_BOARD("massdriver control") build_path = /obj/machinery/computer/pod + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/robotics name = T_BOARD("robotics control console") @@ -110,6 +112,7 @@ name = T_BOARD("turbine control console") build_path = /obj/machinery/computer/turbine_computer origin_tech = list(TECH_DATA = 2, TECH_POWER = 2) + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/solar_control name = T_BOARD("solar control console") @@ -158,16 +161,19 @@ name = T_BOARD("mining shuttle console") build_path = /obj/machinery/computer/shuttle_control/mining origin_tech = list(TECH_DATA = 2) + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/engineering_shuttle name = T_BOARD("engineering shuttle console") build_path = /obj/machinery/computer/shuttle_control/engineering origin_tech = list(TECH_DATA = 2) + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/research_shuttle name = T_BOARD("research shuttle console") build_path = /obj/machinery/computer/shuttle_control/research origin_tech = list(TECH_DATA = 2) + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/aifixer name = T_BOARD("AI integrity restorer") @@ -178,22 +184,27 @@ /obj/item/circuitboard/helm name = T_BOARD("helm control console") build_path = /obj/machinery/computer/ship/helm + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/engine name = T_BOARD("engine control console") build_path = /obj/machinery/computer/ship/engines + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/nav name = T_BOARD("navigation console") build_path = /obj/machinery/computer/ship/navigation + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/nav/tele name = T_BOARD("navigation telescreen") build_path = /obj/machinery/computer/ship/navigation/telescreen + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/sensors name = T_BOARD("sensors console") build_path = /obj/machinery/computer/ship/sensors + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/area_atmos name = T_BOARD("area air control console") @@ -204,6 +215,7 @@ name = T_BOARD("prison shuttle control console") build_path = /obj/machinery/computer/prison_shuttle origin_tech = list(TECH_DATA = 2) + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/rcon_console name = T_BOARD("RCON remote control console") diff --git a/code/game/objects/items/weapons/circuitboards/computer/shuttle.dm b/code/game/objects/items/weapons/circuitboards/computer/shuttle.dm index 0cdd905ca4..40221f995d 100644 --- a/code/game/objects/items/weapons/circuitboards/computer/shuttle.dm +++ b/code/game/objects/items/weapons/circuitboards/computer/shuttle.dm @@ -9,6 +9,7 @@ origin_tech = list(TECH_DATA = 3) var/shuttle_category = null // Shuttle datum's category must exactly equal this to auto-detect var/shuttle_tag = null // If set, link constructed console to this shuttle. If null, auto-detect. + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/shuttle_console/deconstruct(obj/machinery/computer/shuttle_control/M) shuttle_tag = M.shuttle_tag diff --git a/code/game/objects/items/weapons/circuitboards/frame.dm b/code/game/objects/items/weapons/circuitboards/frame.dm index 7708220838..111db54b8d 100644 --- a/code/game/objects/items/weapons/circuitboards/frame.dm +++ b/code/game/objects/items/weapons/circuitboards/frame.dm @@ -10,37 +10,31 @@ name = T_BOARD("guestpass console") build_path = /obj/machinery/computer/guestpass board_type = new /datum/frame/frame_types/guest_pass_console - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) /obj/item/circuitboard/status_display name = T_BOARD("status display") build_path = /obj/machinery/status_display board_type = new /datum/frame/frame_types/display - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) /obj/item/circuitboard/ai_status_display name = T_BOARD("ai status display") build_path = /obj/machinery/ai_status_display board_type = new /datum/frame/frame_types/display - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) /obj/item/circuitboard/newscaster name = T_BOARD("newscaster") build_path = /obj/machinery/newscaster board_type = new /datum/frame/frame_types/newscaster - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) /obj/item/circuitboard/atm name = T_BOARD("atm") build_path = /obj/machinery/atm board_type = new /datum/frame/frame_types/atm - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) /obj/item/circuitboard/request name = T_BOARD("request console") build_path = /obj/machinery/requests_console board_type = new /datum/frame/frame_types/supply_request_console - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) //Alarm @@ -48,20 +42,16 @@ name = T_BOARD("fire alarm") build_path = /obj/machinery/firealarm board_type = new /datum/frame/frame_types/fire_alarm - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) /obj/item/circuitboard/airalarm name = T_BOARD("air alarm") build_path = /obj/machinery/alarm board_type = new /datum/frame/frame_types/air_alarm - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) /obj/item/circuitboard/intercom name = T_BOARD("intercom") build_path = /obj/item/radio/intercom board_type = new /datum/frame/frame_types/intercom - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) - /obj/item/circuitboard/intercom/Destroy() if(istype(loc, /obj/item/radio/intercom)) @@ -73,19 +63,16 @@ name = T_BOARD("keycard authenticator") build_path = /obj/machinery/keycard_auth board_type = new /datum/frame/frame_types/keycard_authenticator - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) /obj/item/circuitboard/geiger name = T_BOARD("geiger counter") build_path = /obj/item/geiger/wall board_type = new /datum/frame/frame_types/geiger - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) /obj/item/circuitboard/electrochromic name = T_BOARD("electrochromic button") build_path = /obj/machinery/button/windowtint board_type = new /datum/frame/frame_types/button - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) //Computer @@ -93,7 +80,6 @@ name = T_BOARD("holopad") build_path = /obj/machinery/hologram/holopad board_type = new /datum/frame/frame_types/holopad - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) /obj/item/circuitboard/scanner_console name = T_BOARD("body scanner console") @@ -113,7 +99,6 @@ name = T_BOARD("photocopier") build_path = /obj/machinery/photocopier board_type = new /datum/frame/frame_types/photocopier - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) req_components = list( /obj/item/stock_parts/scanning_module = 1, /obj/item/stock_parts/motor = 1, @@ -124,7 +109,6 @@ name = T_BOARD("fax") build_path = /obj/machinery/photocopier/faxmachine board_type = new /datum/frame/frame_types/fax - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) req_components = list( /obj/item/stock_parts/scanning_module = 1, /obj/item/stock_parts/motor = 1, @@ -165,7 +149,6 @@ name = T_BOARD("washing machine") build_path = /obj/machinery/washing_machine board_type = new /datum/frame/frame_types/washing_machine - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) req_components = list( /obj/item/stock_parts/motor = 1, /obj/item/stock_parts/gear = 2) diff --git a/code/game/objects/items/weapons/circuitboards/machinery/engineering.dm b/code/game/objects/items/weapons/circuitboards/machinery/engineering.dm index 26ff0b84e9..d8fc8f3e43 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/engineering.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/engineering.dm @@ -16,7 +16,6 @@ name = T_BOARD("space heater") build_path = /obj/machinery/space_heater board_type = new /datum/frame/frame_types/machine - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) req_components = list( /obj/item/stock_parts/micro_laser = 4, /obj/item/stock_parts/capacitor = 4, diff --git a/code/game/objects/items/weapons/circuitboards/machinery/kitchen_appliances.dm b/code/game/objects/items/weapons/circuitboards/machinery/kitchen_appliances.dm index 29019bcf85..c7be48ffec 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/kitchen_appliances.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/kitchen_appliances.dm @@ -4,7 +4,6 @@ build_path = /obj/machinery/microwave board_type = new /datum/frame/frame_types/microwave contain_parts = 0 - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) req_components = list( /obj/item/stock_parts/console_screen = 1, /obj/item/stock_parts/capacitor = 1, @@ -17,7 +16,6 @@ desc = "The circuitboard for an oven." build_path = /obj/machinery/appliance/cooker/oven board_type = new /datum/frame/frame_types/machine - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) req_components = list( /obj/item/stock_parts/capacitor = 3, /obj/item/stock_parts/scanning_module = 1, diff --git a/code/game/objects/items/weapons/circuitboards/machinery/papershredder.dm b/code/game/objects/items/weapons/circuitboards/machinery/papershredder.dm index ddb45b0247..2614554897 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/papershredder.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/papershredder.dm @@ -6,7 +6,6 @@ name = T_BOARD("papershredder") build_path = /obj/machinery/papershredder board_type = new /datum/frame/frame_types/machine - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) req_components = list( /obj/item/stock_parts/motor = 1, /obj/item/stock_parts/gear = 2, diff --git a/code/game/objects/items/weapons/circuitboards/machinery/reagents.dm b/code/game/objects/items/weapons/circuitboards/machinery/reagents.dm index 91be14db56..34c9869a48 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/reagents.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/reagents.dm @@ -15,7 +15,6 @@ name = T_BOARD("smart centrifuge") build_path = /obj/machinery/smart_centrifuge board_type = new /datum/frame/frame_types/machine - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) origin_tech = list(TECH_MAGNET = 3, TECH_DATA = 2, TECH_MATERIAL = 3) req_components = list( /obj/item/stock_parts/scanning_module = 1, diff --git a/code/game/objects/items/weapons/circuitboards/machinery/recycling.dm b/code/game/objects/items/weapons/circuitboards/machinery/recycling.dm index 8ef62efa76..ebb767757e 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/recycling.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/recycling.dm @@ -7,7 +7,6 @@ build_path = /obj/machinery/recycling/crusher board_type = new /datum/frame/frame_types/machine origin_tech = list(TECH_MATERIAL = 2) - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) req_components = list( /obj/item/stack/cable_coil = 2, /obj/item/stock_parts/motor = 1, @@ -21,7 +20,6 @@ build_path = /obj/machinery/recycling/sorter board_type = new /datum/frame/frame_types/machine origin_tech = list(TECH_MATERIAL = 2) - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) req_components = list( /obj/item/stack/cable_coil = 2, /obj/item/stock_parts/motor = 1, @@ -33,7 +31,6 @@ build_path = /obj/machinery/recycling/stamper board_type = new /datum/frame/frame_types/machine origin_tech = list(TECH_MATERIAL = 2) - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) req_components = list( /obj/item/stack/cable_coil = 2, /obj/item/stock_parts/gear = 2, diff --git a/code/game/objects/items/weapons/circuitboards/machinery/research.dm b/code/game/objects/items/weapons/circuitboards/machinery/research.dm index 26a08f6962..69f08e7af8 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/research.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/research.dm @@ -20,6 +20,7 @@ /obj/item/stock_parts/matter_bin = 2, /obj/item/stock_parts/manipulator = 2, /obj/item/reagent_containers/glass/beaker = 2) + hidden = TRUE // Base types aren't cared for, a fully unlocked lathe shouldn't be easy to make /obj/item/circuitboard/machine/protolathe/department name = T_BOARD("departmental protolathe") @@ -27,21 +28,27 @@ /obj/item/circuitboard/machine/protolathe/department/engineering name = T_BOARD("departmental protolathe (engineering)") build_path = /obj/machinery/rnd/production/protolathe/department/engineering + hidden = FALSE /obj/item/circuitboard/machine/protolathe/department/service name = T_BOARD("departmental protolathe (service)") build_path = /obj/machinery/rnd/production/protolathe/department/service + hidden = FALSE /obj/item/circuitboard/machine/protolathe/department/medical name = T_BOARD("departmental protolathe (medical)") build_path = /obj/machinery/rnd/production/protolathe/department/medical + hidden = FALSE /obj/item/circuitboard/machine/protolathe/department/cargo name = T_BOARD("departmental protolathe (cargo)") build_path = /obj/machinery/rnd/production/protolathe/department/cargo + hidden = FALSE /obj/item/circuitboard/machine/protolathe/department/science name = T_BOARD("departmental protolathe (science)") build_path = /obj/machinery/rnd/production/protolathe/department/science + hidden = FALSE /obj/item/circuitboard/machine/protolathe/department/security name = T_BOARD("departmental protolathe (security)") build_path = /obj/machinery/rnd/production/protolathe/department/security + hidden = FALSE /obj/item/circuitboard/circuit_imprinter name = T_BOARD("circuit imprinter") @@ -54,7 +61,7 @@ /obj/item/reagent_containers/glass/beaker = 2) /obj/item/circuitboard/mechfab - name = "Circuit board (Exosuit Fabricator)" + name = T_BOARD("Exosuit Fabricator") build_path = /obj/machinery/mecha_part_fabricator_tg board_type = new /datum/frame/frame_types/machine origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) @@ -65,7 +72,7 @@ /obj/item/stock_parts/console_screen = 1) /obj/item/circuitboard/prosthetics - name = "Circuit board (Prosthetics Fabricator)" + name = T_BOARD("Prosthetics Fabricator") build_path = /obj/machinery/mecha_part_fabricator_tg/prosthetics board_type = new /datum/frame/frame_types/machine origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) @@ -76,7 +83,7 @@ /obj/item/stock_parts/console_screen = 1) /obj/item/circuitboard/ntnet_relay - name = "Circuit board (NTNet Quantum Relay)" + name = T_BOARD("NTNet Quantum Relay") build_path = /obj/machinery/ntnet_relay board_type = new /datum/frame/frame_types/machine origin_tech = list(TECH_DATA = 4) @@ -121,3 +128,11 @@ /obj/item/stock_parts/scanning_module = 1, /obj/item/stock_parts/manipulator = 1, /obj/item/stock_parts/micro_laser = 1) + +/obj/item/circuitboard/doppler_array + name = T_BOARD("doppler array") + build_path = /obj/machinery/doppler_array + board_type = new /datum/frame/frame_types/machine + origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 1, TECH_DATA = 3) + req_components = list( + /obj/item/stock_parts/scanning_module = 4) diff --git a/code/modules/asset_cache/assets/research_designs.dm b/code/modules/asset_cache/assets/research_designs.dm index dcb8d7d0df..81f0858bb9 100644 --- a/code/modules/asset_cache/assets/research_designs.dm +++ b/code/modules/asset_cache/assets/research_designs.dm @@ -64,4 +64,11 @@ if (keyboard && (keyboard in all_states)) transform.blend_icon(uni_icon(icon_file, keyboard), ICON_OVERLAY) - insert_icon(initial(path.id), uni_icon(icon_file, icon_state, transform=transform)) + // Materials are snowflakes that use blended colors for some stacks + if(ispath(item, /obj/item/stack/material)) + var/obj/item/stack/material/mat = item + if(mat::apply_colour) + var/datum/material/material = GET_MATERIAL_REF(mat::default_type) + transform = color_transform(material::icon_colour) + + insert_icon(sanitize_css_class_name(initial(path.id)), uni_icon(icon_file, icon_state, transform=transform)) diff --git a/code/modules/asset_cache/assets/spritesheets/stacks.dm b/code/modules/asset_cache/assets/spritesheets/stacks.dm index b253942f28..07d7013057 100644 --- a/code/modules/asset_cache/assets/spritesheets/stacks.dm +++ b/code/modules/asset_cache/assets/spritesheets/stacks.dm @@ -21,4 +21,4 @@ var/datum/material/material = GET_MATERIAL_REF(M::default_type) UI.blend_color(material.icon_colour, ICON_MULTIPLY) - insert_icon(M::default_type, UI) + insert_icon(sanitize_css_class_name(M::default_type), UI) diff --git a/code/modules/economy/vending_machines.dm b/code/modules/economy/vending_machines.dm index 5817d0deb2..8d731d5a4d 100644 --- a/code/modules/economy/vending_machines.dm +++ b/code/modules/economy/vending_machines.dm @@ -743,34 +743,15 @@ /obj/item/multitool = 4, /obj/item/cell/high = 10, /obj/item/airlock_electronics = 10, + /obj/item/circuitboard/autolathe = 3, + /obj/item/circuitboard/circuit_imprinter = 3, /obj/item/circuitboard/airlock_cycling = 20, /obj/item/module/power_control = 10, /obj/item/circuitboard/airalarm = 10, /obj/item/circuitboard/firealarm = 10, - /obj/item/circuitboard/status_display = 2, - /obj/item/circuitboard/ai_status_display = 2, - /obj/item/circuitboard/newscaster = 2, - /obj/item/circuitboard/holopad = 2, - /obj/item/circuitboard/intercom = 4, - /obj/item/circuitboard/security/telescreen/entertainment = 4, /obj/item/stock_parts/motor = 2, /obj/item/stock_parts/spring = 2, /obj/item/stock_parts/gear = 2, - /obj/item/circuitboard/atm, - /obj/item/circuitboard/guestpass, - /obj/item/circuitboard/keycard_auth, - /obj/item/circuitboard/geiger, - /obj/item/circuitboard/photocopier, - /obj/item/circuitboard/fax, - /obj/item/circuitboard/request, - /obj/item/circuitboard/microwave, - /obj/item/circuitboard/washing, - /obj/item/circuitboard/scanner_console, - /obj/item/circuitboard/sleeper_console, - /obj/item/circuitboard/body_scanner, - /obj/item/circuitboard/medical_kiosk, - /obj/item/circuitboard/sleeper, - /obj/item/circuitboard/dna_analyzer, /obj/item/clothing/glasses/omnihud/eng = 6) contraband = list(/obj/item/cell/potato = 3, /obj/item/rms = 5) diff --git a/code/modules/food/drinkingglass/serving_glasses.dm b/code/modules/food/drinkingglass/serving_glasses.dm index 5ecb22d582..5b1e79fe81 100644 --- a/code/modules/food/drinkingglass/serving_glasses.dm +++ b/code/modules/food/drinkingglass/serving_glasses.dm @@ -2,6 +2,7 @@ name = "glass carafe" base_name = "carafe" base_icon = "carafe" + icon_state = "carafe" icon = 'icons/obj/drinks.dmi' filling_states = list(10, 20, 30, 40, 50, 60, 70, 80, 90, 100) volume = 120 @@ -12,6 +13,7 @@ name = "plastic pitcher" base_name = "pitcher" base_icon = "pitcher" + icon_state = "pitcher" icon = 'icons/obj/drinks.dmi' filling_states = list(15, 30, 50, 70, 85, 100) volume = 120 diff --git a/code/modules/materials/materials/organic/wood.dm b/code/modules/materials/materials/organic/wood.dm index 7188873761..654603d214 100644 --- a/code/modules/materials/materials/organic/wood.dm +++ b/code/modules/materials/materials/organic/wood.dm @@ -167,7 +167,7 @@ stack_type = /obj/item/stack/material/log/hard /datum/material/wood/stick - name = "wooden stick" + name = MAT_WOODEN_STICK icon_colour = "#824B28" display_name = MAT_WOOD icon_base = "stick" diff --git a/code/modules/materials/sheets/metals/rods.dm b/code/modules/materials/sheets/metals/rods.dm index da6e4c8827..47077f93e8 100644 --- a/code/modules/materials/sheets/metals/rods.dm +++ b/code/modules/materials/sheets/metals/rods.dm @@ -10,7 +10,7 @@ throw_range = 20 drop_sound = 'sound/items/drop/metalweapon.ogg' pickup_sound = 'sound/items/pickup/metalweapon.ogg' - matter = list(MAT_STEEL = SHEET_MATERIAL_AMOUNT / 2) + matter = list(MAT_STEEL = REAGENTS_PER_ROD) max_amount = 60 attack_verb = list("hit", "bludgeoned", "whacked") diff --git a/code/modules/overmap/disperser/disperser_circuit.dm b/code/modules/overmap/disperser/disperser_circuit.dm index 382cce1ad6..05be8c8264 100644 --- a/code/modules/overmap/disperser/disperser_circuit.dm +++ b/code/modules/overmap/disperser/disperser_circuit.dm @@ -6,6 +6,7 @@ name = T_BOARD("obstruction removal ballista control") build_path = /obj/machinery/computer/ship/disperser origin_tech = list(TECH_ENGINEERING = 2, TECH_COMBAT = 2, TECH_BLUESPACE = 2) + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/disperserfront name = T_BOARD("obstruction removal ballista beam generator") @@ -15,6 +16,7 @@ req_components = list ( /obj/item/stock_parts/manipulator/pico = 5 ) + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/dispersermiddle name = T_BOARD("obstruction removal ballista fusor") @@ -24,6 +26,7 @@ req_components = list ( /obj/item/stock_parts/subspace/crystal = 10 ) + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/disperserback name = T_BOARD("obstruction removal ballista material deconstructor") @@ -33,3 +36,4 @@ req_components = list ( /obj/item/stock_parts/capacitor/super = 5 ) + hidden = TRUE // todo - Make properly constructable in round diff --git a/code/modules/power/fusion/fusion_circuits.dm b/code/modules/power/fusion/fusion_circuits.dm index 7eff9123a5..6317801ce7 100644 --- a/code/modules/power/fusion/fusion_circuits.dm +++ b/code/modules/power/fusion/fusion_circuits.dm @@ -1,10 +1,10 @@ /obj/item/circuitboard/fusion_core_control - name = "circuit board (fusion core controller)" + name = T_BOARD("fusion core controller") build_path = /obj/machinery/computer/fusion_core_control origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4) /obj/item/circuitboard/fusion_fuel_compressor - name = "circuit board (fusion fuel compressor)" + name = T_BOARD("fusion fuel compressor") build_path = /obj/machinery/fusion_fuel_compressor board_type = new /datum/frame/frame_types/machine origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 4, TECH_MATERIAL = 4) @@ -16,12 +16,12 @@ ) /obj/item/circuitboard/fusion_fuel_control - name = "circuit board (fusion fuel controller)" + name = T_BOARD("fusion fuel controller") build_path = /obj/machinery/computer/fusion_fuel_control origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4) /obj/item/circuitboard/gyrotron_control - name = "circuit board (gyrotron controller)" + name = T_BOARD("gyrotron controller") build_path = /obj/machinery/computer/gyrotron_control origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4) @@ -51,7 +51,7 @@ ) /obj/item/circuitboard/gyrotron - name = "circuit board (gyrotron)" + name = T_BOARD("gyrotron") build_path = /obj/machinery/power/emitter/gyrotron board_type = new /datum/frame/frame_types/machine origin_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 4, TECH_MATERIAL = 5, TECH_MAGNET = 3) diff --git a/code/modules/power/port_gen_vr.dm b/code/modules/power/port_gen_vr.dm index 3420722aae..4df4693bb3 100644 --- a/code/modules/power/port_gen_vr.dm +++ b/code/modules/power/port_gen_vr.dm @@ -64,6 +64,7 @@ req_components = list( /obj/item/stack/cable_coil = 5, /obj/item/stock_parts/capacitor/hyper = 1) + hidden = TRUE /obj/item/circuitboard/machine/abductor/core/hybrid name = T_BOARD("void generator (hybrid)") @@ -74,6 +75,7 @@ /obj/item/stack/cable_coil = 5, /obj/item/stock_parts/capacitor/hyper = 1, /obj/item/stock_parts/micro_laser/hyper = 1) + hidden = TRUE // Radioisotope Thermoelectric Generator (RTG) // Simple power generator that would replace "magic SMES" on various derelicts. diff --git a/code/modules/power/tesla/telsa_construction.dm b/code/modules/power/tesla/telsa_construction.dm index d7f9d81a12..3f2693397f 100644 --- a/code/modules/power/tesla/telsa_construction.dm +++ b/code/modules/power/tesla/telsa_construction.dm @@ -15,14 +15,9 @@ name = T_BOARD("grounding rod") build_path = /obj/machinery/power/grounding_rod board_type = new /datum/frame/frame_types/machine - matter = list(MAT_STEEL = 50, MAT_GLASS = 50) origin_tech = list(TECH_MAGNET = 1, TECH_POWER = 2) req_components = list() -/datum/category_item/autolathe/engineering/grounding_rod - name = "grounding rod electronics" - path = /obj/item/circuitboard/grounding_rod - // SPECIAL BOARDS BELOW /obj/item/circuitboard/tesla_coil/attackby(obj/item/I as obj, mob/user as mob) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 40e5bfd0b2..ffd2303f31 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -70,6 +70,7 @@ board_type = new /datum/frame/frame_types/machine origin_tech = list(TECH_MATERIAL = 4, TECH_POWER = 2) req_components = list(/obj/item/stack/cable_coil = 5, /obj/item/stock_parts/manipulator = 6) + hidden = TRUE // todo - Make properly constructable in round /obj/item/circuitboard/machine/power_turbine name = T_BOARD("power turbine") @@ -77,6 +78,7 @@ board_type = new /datum/frame/frame_types/machine origin_tech = list(TECH_ENGINEERING = 2, TECH_POWER = 4) req_components = list(/obj/item/stack/cable_coil = 5, /obj/item/stock_parts/capacitor = 6) + hidden = TRUE // todo - Make properly constructable in round ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Compressor diff --git a/code/modules/research/tg/design_disks/security.dm b/code/modules/research/tg/design_disks/security.dm new file mode 100644 index 0000000000..3f1654f708 --- /dev/null +++ b/code/modules/research/tg/design_disks/security.dm @@ -0,0 +1,23 @@ +// Design disk containing all ammunitions +/obj/item/disk/design_disk/security + name = "security armory design disk" + desc = "A disk containing many, many, many bullets." + +/obj/item/disk/design_disk/security/Initialize(mapload) + . = ..() + + // Lets get all security nodes and put them on a disk. + // This way if bullets are disabled by default we can get a disk mapped instead. + var/list/process_nodes = list( + /datum/techweb_node/pistol_ammo::id, + /datum/techweb_node/pistol_special::id, + /datum/techweb_node/rifle_ammo::id, + /datum/techweb_node/rifle_ammo_special::id, + /datum/techweb_node/shotgun_ammo::id, + /datum/techweb_node/speedloaders::id + ) + for(var/node_id in process_nodes) + var/datum/techweb_node/node = SSresearch.techweb_node_by_id(node_id) + for(var/id in node.design_ids) + var/datum/design_techweb/design = SSresearch.techweb_design_by_id(id) + blueprints += design diff --git a/code/modules/research/tg/designs/ai_designs.dm b/code/modules/research/tg/designs/ai_designs.dm index 8426918a27..5ee5a424ae 100644 --- a/code/modules/research/tg/designs/ai_designs.dm +++ b/code/modules/research/tg/designs/ai_designs.dm @@ -1,5 +1,5 @@ /datum/design_techweb/board/aicore - name = "AI core circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("AI core") id = "aicore" // req_tech = list(TECH_DATA = 4, TECH_BIO = 3) build_path = /obj/item/circuitboard/aicore @@ -70,6 +70,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/aimodule + desc = "A circuit used to change a silicon's configured laws." build_type = IMPRINTER materials = list(MAT_GLASS = 2000, MAT_GOLD = 100) category = list( diff --git a/code/modules/research/tg/designs/ammunition_designs.dm b/code/modules/research/tg/designs/ammunition_designs.dm new file mode 100644 index 0000000000..2f9f134b66 --- /dev/null +++ b/code/modules/research/tg/designs/ammunition_designs.dm @@ -0,0 +1,1014 @@ +////////////////// +/*Shotgun rounds*/ +////////////////// + +/datum/design_techweb/ammobox_12g_slug + SET_AMMO_DESIGN_NAMEDESC("ammo box (12 gauge slug)") + id = "ammobox_12g_slug" + materials = list(MAT_STEEL = 3600) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/ammo_box/b12g + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_SHOTGUN + ) + +/datum/design_techweb/ammobox_12g_blank + SET_AMMO_DESIGN_NAMEDESC("ammo box (12 gauge blank)") + id = "ammobox_12g_blank" + materials = list(MAT_STEEL = 3600) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/ammo_box/b12g/blank + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_SHOTGUN + ) + +/datum/design_techweb/ammobox_12g_beanbag + SET_AMMO_DESIGN_NAMEDESC("ammo box (12 gauge beanbag)") + id = "ammobox_12g_beanbag" + materials = list(MAT_STEEL = 3600) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/ammo_box/b12g/beanbag + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_SHOTGUN + ) + +/datum/design_techweb/ammobox_12g_flash + SET_AMMO_DESIGN_NAMEDESC("ammo box (12 gauge flash)") + id = "ammobox_12g_flash" + materials = list(MAT_STEEL = 920, MAT_GLASS = 920) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/ammo_box/b12g/flash + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_SHOTGUN + ) + +/datum/design_techweb/ammobox_12g_pellet + SET_AMMO_DESIGN_NAMEDESC("ammo box (12 gauge buckshot)") + id = "ammobox_12g_pellet" + materials = list(MAT_STEEL = 3600) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/ammo_box/b12g/pellet + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_SHOTGUN + ) + +/datum/design_techweb/ammobox_12g_stunshell + SET_AMMO_DESIGN_NAMEDESC("ammo box (12 gauge stun)") + id = "ammobox_12g_stunshell" + materials = list(MAT_STEEL = 3600, MAT_GLASS = 7200) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/ammo_box/b12g/stunshell + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_SHOTGUN + ) + +/datum/design_techweb/ammobox_12g_emp + SET_AMMO_DESIGN_NAMEDESC("ammo box (12 gauge EMP)") + id = "ammobox_12g_emp" + materials = list(MAT_STEEL = 3600, MAT_URANIUM = 7200) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/ammo_box/b12g/emp + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_SHOTGUN + ) + +/datum/design_techweb/ammobox_12g_flechette + SET_AMMO_DESIGN_NAMEDESC("ammo box (12 gauge flechette)") + id = "ammobox_12g_flechette" + materials = list(MAT_STEEL = 3600, MAT_PLASTEEL = 7200) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/ammo_box/b12g/flechette + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_SHOTGUN + ) + +/datum/design_techweb/ammobox_12g_practice + SET_AMMO_DESIGN_NAMEDESC("ammo box (12 gauge practice)") + id = "ammobox_12g_practice" + materials = list(MAT_STEEL = 3600) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/ammo_box/b12g/practice + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_SHOTGUN + ) + +////////////////// +/* High velocity*/ +////////////////// + +/datum/design_techweb/rifle_145_sabot + SET_AMMO_DESIGN_NAMEDESC("14.5mm round (sabot)") + id = "rifle_145_sabot" + materials = list(MAT_STEEL = 1560) + build_type = AUTOLATHE + build_path = /obj/item/ammo_casing/a145/highvel + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +////////////////// +/*Ammo magazines*/ +////////////////// + +/////// .44 + +/datum/design_techweb/pistol_mag_44 + SET_AMMO_DESIGN_NAMEDESC("pistol magazine (.44)") + id = "pistol_mag_44" + materials = list(MAT_STEEL = 1500) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m44 + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/datum/design_techweb/pistol_mag_44_rubber + SET_AMMO_DESIGN_NAMEDESC("pistol magazine (.44 rubber)") + id = "pistol_mag_44_rubber" + materials = list(MAT_STEEL = 2200) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m44/rubber + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/////// .45 + +/datum/design_techweb/pistol_mag_45 + SET_AMMO_DESIGN_NAMEDESC("pistol magazine (.45)") + id = "pistol_mag_45" + materials = list(MAT_STEEL = 650) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m45 + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/datum/design_techweb/pistol_mag_45_practice + SET_AMMO_DESIGN_NAMEDESC("pistol magazine (.45 practice)") + id = "pistol_mag_45_practice" + materials = list(MAT_STEEL = 650) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m45/practice + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/datum/design_techweb/pistol_mag_45_rubber + SET_AMMO_DESIGN_NAMEDESC("pistol magazine (.45 rubber)") + id = "pistol_mag_45_rubber" + materials = list(MAT_STEEL = 650) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m45/rubber + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/datum/design_techweb/pistol_mag_45_flash + SET_AMMO_DESIGN_NAMEDESC("pistol magazine (.45 flash)") + id = "pistol_mag_45_flash" + materials = list(MAT_STEEL = 650) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m45/flash + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/datum/design_techweb/pistol_mag_45_piercing + SET_AMMO_DESIGN_NAMEDESC("pistol magazine (.45 armor piercing)") + id = "pistol_mag_45_piercing" + materials = list(MAT_STEEL = 500, MAT_PLASTEEL = 300) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m45/ap + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/datum/design_techweb/pistol_mag_45_hollow + SET_AMMO_DESIGN_NAMEDESC("pistol magazine (.45 hollowpoint)") + id = "pistol_mag_45_hollow" + materials = list(MAT_STEEL = 500, MAT_PLASTEEL = 200) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m45/hp + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/////// specialty 45 + +/datum/design_techweb/uzi_mag_45 + SET_AMMO_DESIGN_NAMEDESC("uzi magazine (.45)") + id = "uzi_mag_45" + materials = list(MAT_STEEL = 1500) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m45uzi + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/tommy_mag_45 + SET_AMMO_DESIGN_NAMEDESC("Tommy Gun magazine (.45)") + id = "tommy_mag_45" + materials = list(MAT_STEEL = 1875) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m45tommy + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/tommy_mag_45_pierce + SET_AMMO_DESIGN_NAMEDESC("Tommy Gun magazine (.45 armor piercing)") + id = "tommy_mag_45_pierce" + materials = list(MAT_STEEL = 1875, MAT_PLASTEEL = 1600) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m45tommy/ap + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/tommy_drum_45 + SET_AMMO_DESIGN_NAMEDESC("Tommy Gun drum magazine (.45)") + id = "tommy_drum_45" + materials = list(MAT_STEEL = 4680) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m45tommydrum + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/tommy_drum_45_pierce + SET_AMMO_DESIGN_NAMEDESC("Tommy Gun drum magazine (.45 piercing)") + id = "tommy_drum_45_pierce" + materials = list(MAT_STEEL = 4680, MAT_PLASTEEL = 3200) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m45tommydrum/ap + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/////// 9mm + +// Full size pistol mags. + +/datum/design_techweb/pistol_mag_9mm + SET_AMMO_DESIGN_NAMEDESC("pistol magazine (9mm)") + id = "pistol_mag_9mm" + materials = list(MAT_STEEL = 750) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m9mm + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/datum/design_techweb/pistol_mag_9mm_rubber + SET_AMMO_DESIGN_NAMEDESC("pistol magazine (9mm rubber)") + id = "pistol_mag_9mm_rubber" + materials = list(MAT_STEEL = 750) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m9mm/rubber + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/datum/design_techweb/pistol_mag_9mm_practice + SET_AMMO_DESIGN_NAMEDESC("pistol magazine (9mm practice)") + id = "pistol_mag_9mm_practice" + materials = list(MAT_STEEL = 750) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m9mm/practice + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/datum/design_techweb/pistol_mag_9mm_flash + SET_AMMO_DESIGN_NAMEDESC("pistol magazine (9mm flash)") + id = "pistol_mag_9mm_flash" + materials = list(MAT_STEEL = 750) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m9mm/flash + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +// Small mags for small or old guns. These are all hidden because they are traitor mags and will otherwise just clutter the Autolathe. + +/datum/design_techweb/pistol_mag_compact_9mm + SET_AMMO_DESIGN_NAMEDESC("compact pistol magazine (9mm)") + id = "pistol_mag_compact_9mm" + materials = list(MAT_STEEL = 600) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m9mm/compact + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/datum/design_techweb/pistol_mag_compact_9mm_rubber + SET_AMMO_DESIGN_NAMEDESC("compact pistol magazine (9mm rubber)") + id = "pistol_mag_compact_9mm_rubber" + materials = list(MAT_STEEL = 600) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m9mm/compact/rubber + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/datum/design_techweb/pistol_mag_compact_9mm_practice + SET_AMMO_DESIGN_NAMEDESC("compact pistol magazine (9mm practice)") + id = "pistol_mag_compact_9mm_practice" + materials = list(MAT_STEEL = 600) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m9mm/compact/practice + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/datum/design_techweb/pistol_mag_compact_9mm_flash + SET_AMMO_DESIGN_NAMEDESC("compact pistol magazine (9mm flash)") + id = "pistol_mag_compact_9mm_flash" + materials = list(MAT_STEEL = 600) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m9mm/compact/flash + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +// SMG mags + +/datum/design_techweb/smg_mag_9mm + SET_AMMO_DESIGN_NAMEDESC("SMG magazine (9mm)") + id = "smg_mag_9mm" + materials = list(MAT_STEEL = 1500) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m9mml + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/pistol_mag_topmount_9mm + SET_AMMO_DESIGN_NAMEDESC("top-mounted SMG magazine (9mm)") + id = "pistol_mag_topmount_9mm" + materials = list(MAT_STEEL = 1500) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m9mmt + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/pistol_mag_topmount_9mm_rubber + SET_AMMO_DESIGN_NAMEDESC("top-mounted SMG magazine (9mm rubber)") + id = "pistol_mag_topmount_9mm_rubber" + materials = list(MAT_STEEL = 1500) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m9mmt/rubber + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/pistol_mag_topmount_9mm_practice + SET_AMMO_DESIGN_NAMEDESC("top-mounted SMG magazine (9mm practice)") + id = "pistol_mag_topmount_9mm_practice" + materials = list(MAT_STEEL = 1500) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m9mmt/practice + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/pistol_mag_topmount_9mm_flash + SET_AMMO_DESIGN_NAMEDESC("top-mounted SMG magazine (9mm flash)") + id = "pistol_mag_topmount_9mm_flash" + materials = list(MAT_STEEL = 1500) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m9mmt/flash + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/pistol_mag_topmount_9mm_piercing + SET_AMMO_DESIGN_NAMEDESC("top-mounted SMG magazine (9mm armor piercing)") + id = "pistol_mag_topmount_9mm_piercing" + materials = list(MAT_STEEL = 1500) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m9mmt/ap + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/pistol_mag_ext_topmount_9mm_piercing + SET_AMMO_DESIGN_NAMEDESC("top-mounted extended SMG magazine (9mm AP)") + id = "pistol_mag_ext_topmount_9mm_piercing" + materials = list(MAT_STEEL = 3000, MAT_PLASTEEL = 1500) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m9mmp90 + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/ammo_9mmAdvanced // Special PDW ammo + SET_AMMO_DESIGN_NAMEDESC("advanced 9mm magazine") + id = "ammo_9mm" + // req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3) + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 3750, MAT_SILVER = 100) // Requires silver for proprietary magazines! Or something. + build_path = /obj/item/ammo_magazine/m9mmAdvanced + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE + +/////// 10mm + +/datum/design_techweb/smg_mag_10m + SET_AMMO_DESIGN_NAMEDESC("SMG magazine (10mm)") + id = "smg_mag_10m" + materials = list(MAT_STEEL = 1800) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m10mm + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/smg_mag_10m_practice + SET_AMMO_DESIGN_NAMEDESC("SMG magazine (10mm practice)") + id = "smg_mag_10m_practice" + materials = list(MAT_STEEL = 1800) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m10mm/practice + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/smg_mag_10m_rubber + SET_AMMO_DESIGN_NAMEDESC("SMG magazine (10mm rubber)") + id = "smg_mag_10m_rubber" + materials = list(MAT_STEEL = 1800) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m10mm/rubber + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/smg_mag_10m_emp + SET_AMMO_DESIGN_NAMEDESC("SMG magazine (10mm haywire)") + id = "smg_mag_10m_emp" + materials = list(MAT_STEEL = 1800, MAT_URANIUM = 2400) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m10mm/emp + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/pistol_mag_10m + SET_AMMO_DESIGN_NAMEDESC("pistol magazine (10mm)") + id = "pistol_mag_10m" + materials = list(MAT_STEEL = 1800) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m10mm/pistol + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/datum/design_techweb/pistol_mag_10m_rubber + SET_AMMO_DESIGN_NAMEDESC("pistol magazine (10mm rubber)") + id = "pistol_mag_10m_rubber" + materials = list(MAT_STEEL = 1800) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m10mm/pistol/rubber + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/datum/design_techweb/pistol_mag_10m_emp + SET_AMMO_DESIGN_NAMEDESC("pistol magazine (10mm haywire)") + id = "pistol_mag_10m_emp" + materials = list(MAT_STEEL = 1800, MAT_URANIUM = 2400) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m10mm/pistol/emp + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/datum/design_techweb/pistol_mag_10m_practice + SET_AMMO_DESIGN_NAMEDESC("pistol magazine (10mm practice)") + id = "pistol_mag_10m_practice" + materials = list(MAT_STEEL = 1800) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m10mm/pistol/practice + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_PISTOL + ) + +/////// 5.45mm + +/datum/design_techweb/rifle_mag_545 + SET_AMMO_DESIGN_NAMEDESC("rifle magazine (5.45mm)") + id = "rifle_mag_545" + materials = list(MAT_STEEL = 2250) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m545 + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/rifle_mag_545_practice + SET_AMMO_DESIGN_NAMEDESC("rifle magazine (5.45mm practice)") + id = "rifle_mag_545_practice" + materials = list(MAT_STEEL = 2250) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m545/practice + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/rifle_mag_545_pierce + SET_AMMO_DESIGN_NAMEDESC("Rifle Magazine (5.45mm AP)") + id = "rifle_mag_545_pierce" + materials = list(MAT_STEEL = 2250, MAT_PLASTEEL = 1200) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m545/ap + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/machinegun_box_545 + SET_AMMO_DESIGN_NAMEDESC("machinegun box magazine (5.45)") + id = "machinegun_box_545" + materials = list(MAT_STEEL = 12500) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m545saw + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/machinegun_box_545_pierce + SET_AMMO_DESIGN_NAMEDESC("machinegun box magazine (5.45mm armor-piercing)") + id = "machinegun_box_545_pierce" + materials = list(MAT_STEEL = 12500) + build_type = AUTOLATHE + build_path = /obj/item/ammo_casing/a545/ap + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/machinegun_box_545_hunting + SET_AMMO_DESIGN_NAMEDESC("machinegun box magazine (5.45mm hunting)") + id = "machinegun_box_545_hunting" + materials = list(MAT_STEEL = 12500) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m545saw/hunter + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/machinegun_box_545_pierce + SET_AMMO_DESIGN_NAMEDESC("Machinegun box magazine (5.45mm AP)") + id = "machinegun_box_545_pierce" + materials = list(MAT_STEEL = 12500, MAT_PLASTEEL = 15000) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m545saw/ap + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/rifle_mag_545_hunting + SET_AMMO_DESIGN_NAMEDESC("Rifle Magazine (5.45mm Hunting)") + id = "rifle_mag_545_hunting" + materials = list(MAT_STEEL = 3375) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m545/hunter + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/////// 7.62 + +/datum/design_techweb/rifle_mag_762 + SET_AMMO_DESIGN_NAMEDESC("rifle magazine (7.62mm)") + id = "rifle_mag_762" + materials = list(MAT_STEEL = 2500) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m762 + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/rifle_mag_762_pierce + SET_AMMO_DESIGN_NAMEDESC("rifle magazine (7.62mm AP)") + id = "rifle_mag_762_pierce" + materials = list(MAT_STEEL = 2500, MAT_PLASTEEL = 1200) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m762/ap + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/rifle_mag_762_ext + SET_AMMO_DESIGN_NAMEDESC("rifle magazine (7.62mm) extended") + id = "rifle_mag_762_ext" + materials = list(MAT_STEEL = 5000) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m762/ext + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/rifle_mag_762_ap_ext + SET_AMMO_DESIGN_NAMEDESC("rifle magazine (7.62mm AP) extended") + id = "rifle_mag_762_ext_pierce" + materials = list(MAT_STEEL = 5000, MAT_PLASTEEL = 2400) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m762/ext/ap + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/rifle_enblock_762 + SET_AMMO_DESIGN_NAMEDESC("enbloc (7.62mm)") + id = "rifle_enblock_762" + materials = list(MAT_STEEL = 2500) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m762enbloc + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +/datum/design_techweb/rifle_enblock_762_pierce + SET_AMMO_DESIGN_NAMEDESC("enbloc (7.62mm AP)") + id = "rifle_enblock_762_pierce" + materials = list(MAT_STEEL = 2500, MAT_PLASTEEL = 1800) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m762enbloc/ap + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_RIFLE + ) + +// 12guage auto-shotgun + +/datum/design_techweb/shotgun_mag_12g_drum + SET_AMMO_DESIGN_NAMEDESC("drum magazine (12 gauge)") + id = "shotgun_mag_12g_drum" + materials = list(MAT_STEEL = 18000) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m12gdrum + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_SHOTGUN + ) + +/datum/design_techweb/shotgun_mag_12g_drum_beanbag + SET_AMMO_DESIGN_NAMEDESC("drum magazine (12 gauge beanbag)") + id = "shotgun_mag_12g_drum_beanbag" + materials = list(MAT_STEEL = 18000) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m12gdrum/beanbag + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_SHOTGUN + ) + +/datum/design_techweb/shotgun_mag_12g_drum_pellet + SET_AMMO_DESIGN_NAMEDESC("drum magazine (12 gauge pellet)") + id = "shotgun_mag_12g_drum_pellet" + materials = list(MAT_STEEL = 18000) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m12gdrum/pellet + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_SHOTGUN + ) + +/datum/design_techweb/shotgun_mag_12g_drum_flash + SET_AMMO_DESIGN_NAMEDESC("drum magazine (12 gauge flash)") + id = "shotgun_mag_12g_drum_flash" + materials = list(MAT_STEEL = 18000) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/m12gdrum/flash + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_SHOTGUN + ) + +/////////////////////////////// +/*Ammo clips and Speedloaders*/ +/////////////////////////////// + +/////// Shotgun + +/datum/design_techweb/loader_12g_beanbag + SET_AMMO_DESIGN_NAMEDESC("2-round 12g speedloader (beanbag)") + id = "loader_12g_beanbag" + materials = list(MAT_STEEL = 900) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/clip/c12g/beanbag + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) + +/datum/design_techweb/loader_12g_slug + SET_AMMO_DESIGN_NAMEDESC("2-round 12g speedloader (slug)") + id = "loader_12g_slug" + materials = list(MAT_STEEL = 1350) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/clip/c12g + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) + +/datum/design_techweb/loader_12g_buck + SET_AMMO_DESIGN_NAMEDESC("2-round 12g speedloader (buckshot)") + id = "loader_12g_buck" + materials = list(MAT_STEEL = 1350) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/clip/c12g/pellet + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) + +/////// 38 + +/datum/design_techweb/loader_38 + SET_AMMO_DESIGN_NAMEDESC("speedloader (.38)") + id = "loader_38" + materials = list(MAT_STEEL = 450) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/s38 + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) + +/datum/design_techweb/loader_38_rubber + SET_AMMO_DESIGN_NAMEDESC("speedloader (.38 rubber)") + id = "loader_38_rubber" + materials = list(MAT_STEEL = 450) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/s38/rubber + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) + +/////// 45 + +/datum/design_techweb/loader_45 + SET_AMMO_DESIGN_NAMEDESC("speedloader (.45)") + id = "loader_45" + materials = list(MAT_STEEL = 660) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/s45 + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) + +/datum/design_techweb/loader_45_rubber + SET_AMMO_DESIGN_NAMEDESC("speedloader (.45 rubber)") + id = "loader_45_rubber" + materials = list(MAT_STEEL = 660) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/s45/rubber + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) + +/////// 5.48 + +/datum/design_techweb/loader_545 + SET_AMMO_DESIGN_NAMEDESC("ammo clip (5.45mm)") + id = "loader_545" + materials = list(MAT_STEEL = 560) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/clip/c545 + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) + +/datum/design_techweb/loader_545_practice + SET_AMMO_DESIGN_NAMEDESC("ammo clip (5.45mm practice)") + id = "loader_545_practice" + materials = list(MAT_STEEL = 560) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/clip/c545/practice + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) + +/////// 762 + +/datum/design_techweb/loader_762 + SET_AMMO_DESIGN_NAMEDESC("ammo clip (7.62mm)") + id = "loader_762" + materials = list(MAT_STEEL = 1250) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/clip/c762 + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) + +/datum/design_techweb/loader_762_practice + SET_AMMO_DESIGN_NAMEDESC("ammo clip (7.62mm practice)") + id = "loader_762_practice" + materials = list(MAT_STEEL = 1250) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/clip/c762/practice + category = list( + RND_CATEGORY_INITIAL, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) + + +/////// 357 + +/datum/design_techweb/loader_357 + SET_AMMO_DESIGN_NAMEDESC("speedloader (.357)") + id = "loader_357" + materials = list(MAT_STEEL = 1500) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/s357 + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) + +/datum/design_techweb/loader_357_flash + SET_AMMO_DESIGN_NAMEDESC("speedloader (.357 flash)") + id = "loader_357_flash" + materials = list(MAT_STEEL = 1575) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/s357/flash + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) + +/datum/design_techweb/loader_357_stun + SET_AMMO_DESIGN_NAMEDESC("speedloader (.357 stun)") + id = "loader_357_stun" + materials = list(MAT_STEEL = 1575) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/s357/stun + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) + +/datum/design_techweb/loader_357_rubber + SET_AMMO_DESIGN_NAMEDESC("speedloader (.357 rubber)") + id = "loader_357_rubber" + materials = list(MAT_STEEL = 1575) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/s357/rubber + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) + +/////// 44 + +/datum/design_techweb/loader_44 + SET_AMMO_DESIGN_NAMEDESC("speedloader (.44)") + id = "loader_44" + materials = list(MAT_STEEL = 1575) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/s44 + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) + +/datum/design_techweb/loader_44_rubber + SET_AMMO_DESIGN_NAMEDESC("speedloader (.44 rubber)") + id = "loader_44_rubber" + materials = list(MAT_STEEL = 1575) + build_type = AUTOLATHE + build_path = /obj/item/ammo_magazine/s44/rubber + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_HACKED, + RND_SUBCATEGORY_WEAPONS_AMMO + RND_SUBCATEGORY_WEAPONS_AMMO_LOADERS + ) diff --git a/code/modules/research/tg/designs/boards/atmos.dm b/code/modules/research/tg/designs/boards/atmos.dm index c13dfba9aa..b1290a0e54 100644 --- a/code/modules/research/tg/designs/boards/atmos.dm +++ b/code/modules/research/tg/designs/boards/atmos.dm @@ -1,5 +1,5 @@ /datum/design_techweb/board/atmosalerts - name = "atmosphere alert console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("atmosphere alert console") id = "atmosalerts" build_path = /obj/item/circuitboard/atmos_alert category = list( @@ -8,7 +8,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/air_management - name = "atmosphere monitoring console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("atmosphere monitoring console") id = "air_management" build_path = /obj/item/circuitboard/air_management category = list( @@ -17,7 +17,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/tank_management - name = "tank monitoring console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("tank monitoring console") id = "tank_management" build_path = /obj/item/circuitboard/air_management/tank_control category = list( @@ -26,7 +26,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/shutoff_monitor - name = "Automatic shutoff valve monitor circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("Automatic shutoff valve monitor") id = "shutoff_monitor" // req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/shutoff_monitor @@ -36,7 +36,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/gas_heater - name = "gas heating system circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("gas heating system") id = "gasheater" // req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 1) build_path = /obj/item/circuitboard/unary_atmos/heater @@ -46,7 +46,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/gas_cooler - name = "gas cooling system circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("gas cooling system") id = "gascooler" // req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/unary_atmos/cooler @@ -56,7 +56,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/arf_generator - name = "atmospheric field generator circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("atmospheric field generator") id = "arf_generator" // req_tech = list(TECH_MAGNET = 4, TECH_POWER = 4, TECH_BIO = 3) build_path = /obj/item/circuitboard/arf_generator @@ -64,3 +64,21 @@ RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/atmoscontrol + SET_CIRCUIT_DESIGN_NAMEDESC("central atmospherics computer") + id = "atmoscontrol" + build_path = /obj/item/circuitboard/atmoscontrol + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ATMOS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/area_atmos + SET_CIRCUIT_DESIGN_NAMEDESC("area air control console") + id = "area_atmos" + build_path = /obj/item/circuitboard/area_atmos + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/tg/designs/boards/cargo.dm b/code/modules/research/tg/designs/boards/cargo.dm index 26cf0ca77f..03f83fd4dd 100644 --- a/code/modules/research/tg/designs/boards/cargo.dm +++ b/code/modules/research/tg/designs/boards/cargo.dm @@ -1,5 +1,5 @@ /datum/design_techweb/board/ordercomp - name = "supply ordering console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("supply ordering console") id = "ordercomp" build_path = /obj/item/circuitboard/supplycomp category = list( @@ -8,7 +8,7 @@ departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/supplycomp - name = "supply control console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("supply control console") id = "supplycomp" // req_tech = list(TECH_DATA = 3) build_path = /obj/item/circuitboard/supplycomp/control @@ -18,7 +18,7 @@ departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/miningdrill - name = "mining drill head circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("mining drill head") id = "mining drill head" // req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) build_path = /obj/item/circuitboard/miningdrill @@ -28,7 +28,7 @@ departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/miningdrillbrace - name = "mining drill brace circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("mining drill brace") id = "mining drill brace" // req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) build_path = /obj/item/circuitboard/miningdrillbrace @@ -38,11 +38,46 @@ departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/ore_silo - name = "Ore Silo Board" - desc = "The circuit board for an ore silo." + SET_CIRCUIT_DESIGN_NAMEDESC("Ore Silo") id = "ore_silo" build_path = /obj/item/circuitboard/machine/ore_silo category = list( RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO ) departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/request_console + SET_CIRCUIT_DESIGN_NAMEDESC("request console") + id = "request" + build_path = /obj/item/circuitboard/request + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_COMPUTER_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/mining_equipment_vendor + SET_CIRCUIT_DESIGN_NAMEDESC("mining equipment vendor") + id = "mining_equipment_vendor" + build_path = /obj/item/circuitboard/mining_equipment_vendor + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/survey_equipment_vendor + SET_CIRCUIT_DESIGN_NAMEDESC("exploration equipment vendor") + id = "survey_equipment_vendor" + build_path = /obj/item/circuitboard/exploration_equipment_vendor + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/stockexchange + SET_CIRCUIT_DESIGN_NAMEDESC("stock exchange console") + id = "stockexchange" + build_path = /obj/item/circuitboard/stockexchange + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/tg/designs/boards/engineering.dm b/code/modules/research/tg/designs/boards/engineering.dm index 042fb986c2..8a70f92bcd 100644 --- a/code/modules/research/tg/designs/boards/engineering.dm +++ b/code/modules/research/tg/designs/boards/engineering.dm @@ -1,5 +1,5 @@ /datum/design_techweb/board/rcon_console - name = "RCON remote control console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("RCON remote control console") id = "rcon_console" // req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_POWER = 5) build_path = /obj/item/circuitboard/rcon_console @@ -9,7 +9,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/dronecontrol - name = "drone control console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("drone control console") id = "dronecontrol" // req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/drone_control @@ -19,7 +19,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/powermonitor - name = "power monitoring console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("power monitoring console") id = "powermonitor" build_path = /obj/item/circuitboard/powermonitor category = list( @@ -28,7 +28,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/solarcontrol - name = "solar control console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("solar control console") id = "solarcontrol" build_path = /obj/item/circuitboard/solar_control category = list( @@ -36,8 +36,17 @@ ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE +/datum/design_techweb/board/solar_tracker + SET_CIRCUIT_DESIGN_NAMEDESC("solar tracker") + id = "solar_tracker" + build_path = /obj/item/tracker_electronics + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + /datum/design_techweb/board/pacman - name = "PACMAN-type generator circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("PACMAN-type generator") id = "pacman" // req_tech = list(TECH_DATA = 3, TECH_PHORON = 3, TECH_POWER = 3, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/pacman @@ -47,7 +56,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/superpacman - name = "SUPERPACMAN-type generator circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("SUPERPACMAN-type generator") id = "superpacman" // req_tech = list(TECH_DATA = 3, TECH_POWER = 4, TECH_ENGINEERING = 4) build_path = /obj/item/circuitboard/pacman/super @@ -57,7 +66,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/mrspacman - name = "MRSPACMAN-type generator circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("MRSPACMAN-type generator") id = "mrspacman" // req_tech = list(TECH_DATA = 3, TECH_POWER = 5, TECH_ENGINEERING = 5) build_path = /obj/item/circuitboard/pacman/mrs @@ -67,7 +76,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/batteryrack - name = "cell rack PSU circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("cell rack PSU") id = "batteryrack" // req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/batteryrack @@ -88,8 +97,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/grid_checker - name = "power grid checker circuit" - desc = "Allows for the construction of circuit boards used to build a grid checker." + SET_CIRCUIT_DESIGN_NAMEDESC("power grid checker") id = "grid_checker" // req_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/grid_checker @@ -99,8 +107,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/breakerbox - name = "breaker box circuit" - desc = "Allows for the construction of circuit boards used to build a breaker box." + SET_CIRCUIT_DESIGN_NAMEDESC("breaker box") id = "breakerbox" // req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/breakerbox @@ -121,7 +128,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/shield_generator - name = "shield generator circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("shield generator") id = "shield_generator" // req_tech = list(TECH_MAGNET = 3, TECH_POWER = 4, TECH_BLUESPACE = 2, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/shield_generator @@ -131,7 +138,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/shield_diffuser - name = "shield diffuser circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("shield diffuser") id = "shield_diffuser" // req_tech = list(TECH_MAGNET = 4, TECH_POWER = 2, TECH_ENGINEERING = 5) build_path = /obj/item/circuitboard/shield_diffuser @@ -141,7 +148,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/pointdefense - name = "point defense battery circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("point defense battery") id = "pointdefense" // req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 3, TECH_COMBAT = 4) build_path = /obj/item/circuitboard/pointdefense @@ -151,7 +158,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/pointdefense_control - name = "point defense control circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("point defense control") id = "pointdefense_control" // req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_COMBAT = 2) build_path = /obj/item/circuitboard/pointdefense_control @@ -161,7 +168,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/recycler_crusher - name = "recycler - crusher circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("recycling crusher") id = "recycler_crusher" // req_tech = list(TECH_MATERIAL = 2) build_path = /obj/item/circuitboard/recycler_crusher @@ -171,7 +178,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/recycler_sorter - name = "recycler - sorter circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("recycling sorter") id = "recycler_sorter" // req_tech = list(TECH_MATERIAL = 2) build_path = /obj/item/circuitboard/recycler_sorter @@ -181,7 +188,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/recycler_stamper - name = "recycler - stamper circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("recycling stamper") id = "recycler_stamper" // req_tech = list(TECH_MATERIAL = 2) build_path = /obj/item/circuitboard/recycler_stamper @@ -191,7 +198,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/algae_farm - name = "Algae Oxygen Generator circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("Algae Oxygen Generator") id = "algae_farm" // req_tech = list(TECH_ENGINEERING = 3, TECH_BIO = 2) build_path = /obj/item/circuitboard/algae_farm @@ -201,7 +208,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/thermoregulator - name = "thermal regulator circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("thermal regulator") id = "thermoregulator" // req_tech = list(TECH_ENGINEERING = 4, TECH_POWER = 3) build_path = /obj/item/circuitboard/thermoregulator @@ -211,7 +218,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/partslathe - name = "Parts lathe circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("Parts lathe") id = "partslathe" // req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/partslathe @@ -221,7 +228,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/rtg - name = "radioisotope TEG circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("radioisotope TEG") id = "rtg" // req_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_PHORON = 3, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/machine/rtg @@ -231,7 +238,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/rtg_advanced - name = "advanced radioisotope TEG circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("advanced radioisotope TEG") id = "adv_rtg" // req_tech = list(TECH_DATA = 5, TECH_POWER = 5, TECH_PHORON = 5, TECH_ENGINEERING = 5) build_path = /obj/item/circuitboard/machine/rtg/advanced @@ -240,8 +247,30 @@ ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE +/datum/design_techweb/board/dtype_rtg + SET_CIRCUIT_DESIGN_NAMEDESC("d-type rotary electric generator") + id = "dtype_rtg" + build_type = AUTOLATHE | IMPRINTER // Simple circuit + build_path = /obj/item/circuitboard/machine/reg_d + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/ctype_rtg + SET_CIRCUIT_DESIGN_NAMEDESC("c-type rotary electric generator") + id = "ctype_rtg" + build_type = AUTOLATHE | IMPRINTER // Simple circuit + build_path = /obj/item/circuitboard/machine/reg_c + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + /datum/design_techweb/board/pointdefense - name = "point defense battery circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("point defense battery") id = "pointdefense" // req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 3, TECH_COMBAT = 4) build_path = /obj/item/circuitboard/pointdefense @@ -251,7 +280,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/pointdefense_control - name = "point defense control circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("point defense control") id = "pointdefense_control" // req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_COMBAT = 2) build_path = /obj/item/circuitboard/pointdefense_control @@ -261,7 +290,7 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/fusion - name = "Fusion Core Control Console" + SET_CIRCUIT_DESIGN_NAMEDESC("Fusion Core Control Console") id = "fusion_core_control" build_path = /obj/item/circuitboard/fusion_core_control category = list( @@ -270,32 +299,32 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/fusion/fuel_compressor - name = "Fusion Fuel Compressor" + SET_CIRCUIT_DESIGN_NAMEDESC("Fusion Fuel Compressor") id = "fusion_fuel_compressor" build_path = /obj/item/circuitboard/fusion_fuel_compressor /datum/design_techweb/board/fusion/fuel_control - name = "Fusion Fuel Control Console" + SET_CIRCUIT_DESIGN_NAMEDESC("Fusion Fuel Control Console") id = "fusion_fuel_control" build_path = /obj/item/circuitboard/fusion_fuel_control /datum/design_techweb/board/fusion/gyrotron_control - name = "Gyrotron Control Console" + SET_CIRCUIT_DESIGN_NAMEDESC("Gyrotron Control Console") id = "gyrotron_control" build_path = /obj/item/circuitboard/gyrotron_control /datum/design_techweb/board/fusion/core - name = "Fusion Core" + SET_CIRCUIT_DESIGN_NAMEDESC("Fusion Core") id = "fusion_core" build_path = /obj/item/circuitboard/fusion_core /datum/design_techweb/board/fusion/injector - name = "Fusion Fuel Injector" + SET_CIRCUIT_DESIGN_NAMEDESC("Fusion Fuel Injector") id = "fusion_injector" build_path = /obj/item/circuitboard/fusion_injector /datum/design_techweb/board/airlock_cycling - name = "Machine Design (Cycling Airlock Board)" + name = "airlock cycling control circuit" desc = "The circuit board for cycling airlock parts." id = "airlock_cycling" build_path = /obj/item/circuitboard/airlock_cycling @@ -305,11 +334,73 @@ departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/tesla_coil - name = "Machine Design (Tesla Coil Board)" - desc = "The circuit board for a tesla coil." + SET_CIRCUIT_DESIGN_NAMEDESC("tesla coil") id = "tesla_coil" build_path = /obj/item/circuitboard/tesla_coil category = list( RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/grounding_rod + SET_CIRCUIT_DESIGN_NAMEDESC("grounding rod") + id = "grounding_rod" + build_path = /obj/item/circuitboard/grounding_rod + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/electrochromic + SET_CIRCUIT_DESIGN_NAMEDESC("electrochromic button") + id = "electrochromic" + build_path = /obj/item/circuitboard/electrochromic + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/automatic_pipe_layer + SET_CIRCUIT_DESIGN_NAMEDESC("automatic pipe layer") + id = "automatic_pipe_layer" + build_path = /obj/item/circuitboard/pipelayer + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/geiger + SET_CIRCUIT_DESIGN_NAMEDESC("wall-mounted geiger counter") + id = "geiger" + build_path = /obj/item/circuitboard/geiger + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/gyrotron + SET_CIRCUIT_DESIGN_NAMEDESC("gyrotron") + id = "gyrotron" + build_path = /obj/item/circuitboard/gyrotron + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/board/supermatter_core_manager + SET_CIRCUIT_DESIGN_NAMEDESC("supermatter core control") + id = "supermatter_core_manager" + build_path = /obj/item/circuitboard/air_management/supermatter_core + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/board/supermatter_injector_control + SET_CIRCUIT_DESIGN_NAMEDESC("supermatter injector control") + id = "supermatter_injector_control" + build_path = /obj/item/circuitboard/air_management/injector_control + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING diff --git a/code/modules/research/tg/designs/boards/kitchen.dm b/code/modules/research/tg/designs/boards/kitchen.dm index d86a1e4577..59f53a834c 100644 --- a/code/modules/research/tg/designs/boards/kitchen.dm +++ b/code/modules/research/tg/designs/boards/kitchen.dm @@ -1,6 +1,6 @@ // Cooking Appliances /datum/design_techweb/board/microwave - name = "microwave board circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("microwave") id = "microwave_board" // req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/microwave @@ -10,7 +10,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/oven - name = "oven board circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("oven") id = "oven_board" // req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/oven @@ -20,7 +20,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/fryer - name = "deep fryer board circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("deep fryer") id = "fryer_board" // req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/fryer @@ -29,8 +29,17 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE +/datum/design_techweb/board/range + SET_CIRCUIT_DESIGN_NAMEDESC("grill") + id = "range" + build_path = /obj/item/circuitboard/grill + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE + /datum/design_techweb/board/cerealmaker - name = "cereal maker board circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("cereal maker") id = "cerealmaker_board" // req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/cerealmaker @@ -40,7 +49,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/candymaker - name = "candy machine board circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("candy machine") id = "candymachine_board" // req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/candymachine @@ -48,3 +57,12 @@ RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/honey_extractor + SET_CIRCUIT_DESIGN_NAMEDESC("honey extractor") + id = "honey_extractor" + build_path = /obj/item/circuitboard/honey_extractor + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_BOTANY + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/tg/designs/boards/medical.dm b/code/modules/research/tg/designs/boards/medical.dm index 45ff914eb5..9afee2aacc 100644 --- a/code/modules/research/tg/designs/boards/medical.dm +++ b/code/modules/research/tg/designs/boards/medical.dm @@ -1,6 +1,6 @@ /datum/design_techweb/board/clonepod - name = "clone pod circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("clone pod") id = "clonepod" // req_tech = list(TECH_DATA = 3, TECH_BIO = 3) build_path = /obj/item/circuitboard/clonepod @@ -10,7 +10,7 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/clonescanner - name = "cloning scanner circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("cloning scanner") id = "clonescanner" // req_tech = list(TECH_DATA = 3, TECH_BIO = 3) build_path = /obj/item/circuitboard/clonescanner @@ -20,7 +20,7 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/chem_master - name = "ChemMaster 3000 circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("ChemMaster 3000") id = "chemmaster" // req_tech = list(TECH_DATA = 3, TECH_MAGNET = 2) build_path = /obj/item/circuitboard/chem_master @@ -30,7 +30,7 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/crewconsole - name = "crew monitoring console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("crew monitoring console") id = "crewconsole" // req_tech = list(TECH_DATA = 3, TECH_MAGNET = 2, TECH_BIO = 2) build_path = /obj/item/circuitboard/crew @@ -40,7 +40,7 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/pandemic - name = "PanD.E.M.I.C 2200 circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("PanD.E.M.I.C 2200") id = "pandemic" // req_tech = list(TECH_DATA = 2, TECH_BIO = 2) build_path = /obj/item/circuitboard/pandemic @@ -50,7 +50,7 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/transhuman_clonepod - name = "grower pod circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("grower pod") id = "transhuman_clonepod" // req_tech = list(TECH_DATA = 3, TECH_BIO = 3) build_path = /obj/item/circuitboard/transhuman_clonepod @@ -60,7 +60,7 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/transhuman_resleever - name = "Resleeving pod circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("Resleeving pod") id = "transhuman_resleever" // req_tech = list(TECH_ENGINEERING = 4, TECH_BIO = 4) build_path = /obj/item/circuitboard/transhuman_resleever @@ -70,7 +70,7 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/resleeving_control - name = "Resleeving control console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("Resleeving control console") id = "resleeving_control" // req_tech = list(TECH_DATA = 5) build_path = /obj/item/circuitboard/resleeving_control @@ -80,7 +80,7 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/body_designer - name = "Body design console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("Body design console") id = "body_designer" // req_tech = list(TECH_DATA = 5) build_path = /obj/item/circuitboard/body_designer @@ -90,7 +90,7 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/vitals_monitor - name = "vitals monitor circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("vitals monitor") id = "vitals" // req_tech = list(TECH_DATA = 3, TECH_BIO = 4, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/machine/vitals_monitor @@ -100,7 +100,7 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/smart_centrifuge - name = "smart centrifuge circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("smart centrifuge") id = "smart_centrifuge" // req_tech = list(TECH_MAGNET = 2, TECH_DATA = 1, TECH_MATERIAL = 2) build_path = /obj/item/circuitboard/smart_centrifuge @@ -110,7 +110,7 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/chem_analyzer - name = "chem analyzer PRO circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("chem analyzer PRO") id = "chem_analyzer" // req_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1) build_path = /obj/item/circuitboard/chemical_analyzer @@ -118,3 +118,57 @@ RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/medical_kiosk + SET_CIRCUIT_DESIGN_NAMEDESC("Medical Kiosk") + id = "medical_kiosk" + build_path = /obj/item/circuitboard/medical_kiosk + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_MEDICAL + +/datum/design_techweb/board/scanner_console + SET_CIRCUIT_DESIGN_NAMEDESC("body scanner console") + id = "scanner_console" + build_path = /obj/item/circuitboard/scanner_console + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/body_scanner + SET_CIRCUIT_DESIGN_NAMEDESC("body scanner") + id = "body_scanner" + build_path = /obj/item/circuitboard/body_scanner + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/sleeper_console + SET_CIRCUIT_DESIGN_NAMEDESC("sleeper console") + id = "sleeper_console" + build_path = /obj/item/circuitboard/sleeper_console + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/sleeper + SET_CIRCUIT_DESIGN_NAMEDESC("sleeper") + id = "sleeper" + build_path = /obj/item/circuitboard/sleeper + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/bioprinter + SET_CIRCUIT_DESIGN_NAMEDESC("bioprinter") + id = "bioprinter" + build_path = /obj/item/circuitboard/bioprinter + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/tg/designs/boards/misc.dm b/code/modules/research/tg/designs/boards/misc.dm index 60fb79dd83..1ac2da3260 100644 --- a/code/modules/research/tg/designs/boards/misc.dm +++ b/code/modules/research/tg/designs/boards/misc.dm @@ -8,8 +8,7 @@ ) /datum/design_techweb/board/arcademachine - name = "battle arcade machine" - desc = "Allows for the construction of circuit boards used to build a new arcade machine." + SET_CIRCUIT_DESIGN_NAMEDESC("battle arcade machine") id = "arcademachine" // req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/arcade/battle @@ -19,8 +18,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/oriontrail - name = "orion trail arcade machine" - desc = "Allows for the construction of circuit boards used to build a new arcade machine." + SET_CIRCUIT_DESIGN_NAMEDESC("orion trail arcade machine") id = "oriontrail" // req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/arcade/orion_trail @@ -30,8 +28,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/clawmachine - name = "grab-a-gift arcade machine" - desc = "Allows for the construction of circuit boards used to build a new arcade machine." + SET_CIRCUIT_DESIGN_NAMEDESC("grab-a-gift arcade machine") id = "clawmachine" // req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/arcade/clawmachine @@ -41,18 +38,43 @@ departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/seccamera - name = "security camera monitor" - desc = "Allows for the construction of circuit boards used to build a security camera monitor." + SET_CIRCUIT_DESIGN_NAMEDESC("security camera monitor") id = "seccamera" build_path = /obj/item/circuitboard/security category = list( RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_SECURITY ) - departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY + +/datum/design_techweb/board/engcamera + SET_CIRCUIT_DESIGN_NAMEDESC("engineering camera monitor") + id = "engcamera" + build_path = /obj/item/circuitboard/security/engineering + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_SECURITY + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/board/crgcamera + SET_CIRCUIT_DESIGN_NAMEDESC("mining camera monitor") + id = "crgcamera" + build_path = /obj/item/circuitboard/security/mining + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_SECURITY + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO + +/datum/design_techweb/board/xenobiocamera + SET_CIRCUIT_DESIGN_NAMEDESC("xenobiology camera monitor") + id = "xenobiocamera" + build_path = /obj/item/circuitboard/security/xenobio + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_SECURITY + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/secdata - name = "security records console" - desc = "Allows for the construction of circuit boards used to build a security records console." + SET_CIRCUIT_DESIGN_NAMEDESC("security records console") id = "sec_data" build_path = /obj/item/circuitboard/secure_data category = list( @@ -61,8 +83,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/prisonmanage - name = "prisoner management console" - desc = "Allows for the construction of circuit boards used to build a prisoner management console." + SET_CIRCUIT_DESIGN_NAMEDESC("prisoner management console") id = "prisonmanage" build_path = /obj/item/circuitboard/prisoner category = list( @@ -71,8 +92,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/med_data - name = "medical records console" - desc = "Allows for the construction of circuit boards used to build a medical records console." + SET_CIRCUIT_DESIGN_NAMEDESC("medical records console") id = "med_data" build_path = /obj/item/circuitboard/med_data category = list( @@ -80,9 +100,28 @@ ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE +/datum/design_techweb/board/med_pcu + SET_CIRCUIT_DESIGN_NAMEDESC("medical records PCU") + id = "med_pcu" + build_path = /obj/item/circuitboard/med_data/pcu + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +// TODO - non-pcu skill console, id = "skill_data" + +/datum/design_techweb/board/skill_pcu + SET_CIRCUIT_DESIGN_NAMEDESC("employment records PCU") + id = "skill_pcu" + build_path = /obj/item/circuitboard/skills/pcu + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_COMMAND + ) + departmental_flags = DEPARTMENT_BITFLAG_COMMAND | DEPARTMENT_BITFLAG_SCIENCE + /datum/design_techweb/board/operating - name = "patient monitoring console" - desc = "Allows for the construction of circuit boards used to build a patient monitoring console." + SET_CIRCUIT_DESIGN_NAMEDESC("patient monitoring console") id = "operating" build_path = /obj/item/circuitboard/operating category = list( @@ -91,8 +130,7 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/scan_console - name = "DNA console" - desc = "Allows for the construction of circuit boards used to build a DNA console." + SET_CIRCUIT_DESIGN_NAMEDESC("DNA console") id = "scan_console" build_path = /obj/item/circuitboard/scan_consolenew category = list( @@ -101,7 +139,7 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/clonecontrol - name = "cloning control console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("cloning control console") id = "clonecontrol" // req_tech = list(TECH_DATA = 3, TECH_BIO = 3) build_path = /obj/item/circuitboard/cloning @@ -111,9 +149,10 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/jukebox - name = "jukebox circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("jukebox") id = "jukebox" // req_tech = list(TECH_MAGNET = 2, TECH_DATA = 1) + build_type = AUTOLATHE | IMPRINTER // Simple circuit build_path = /obj/item/circuitboard/jukebox category = list( RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_BAR @@ -121,7 +160,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/teleconsole - name = "teleporter control console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("teleporter control console") id = "teleconsole" // req_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 2) build_path = /obj/item/circuitboard/teleporter @@ -131,7 +170,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/biogenerator - name = "biogenerator circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("biogenerator") id = "biogenerator" // req_tech = list(TECH_DATA = 2) build_path = /obj/item/circuitboard/biogenerator @@ -141,7 +180,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/comconsole - name = "communications console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("communications console") id = "comconsole" build_path = /obj/item/circuitboard/communications category = list( @@ -150,7 +189,7 @@ departmental_flags = DEPARTMENT_BITFLAG_COMMAND | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/idcardconsole - name = "ID card modification console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("ID card modification console") id = "idcardconsole" build_path = /obj/item/circuitboard/card category = list( @@ -159,10 +198,130 @@ departmental_flags = DEPARTMENT_BITFLAG_COMMAND | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/emp_data - name = "employment records console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("employment records console") id = "emp_data" build_path = /obj/item/circuitboard/skills category = list( RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_COMMAND ) departmental_flags = DEPARTMENT_BITFLAG_COMMAND | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/id_restorer + SET_CIRCUIT_DESIGN_NAMEDESC("ID restoration console") + id = "idrestore_console" + build_path = /obj/item/circuitboard/id_restorer + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_COMPUTER_COMMAND + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/keycard_auth + SET_CIRCUIT_DESIGN_NAMEDESC("keycard authenticator") + id = "keycard_auth" + build_path = /obj/item/circuitboard/keycard_auth + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_COMPUTER_COMMAND + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/status_display + SET_CIRCUIT_DESIGN_NAMEDESC("status display") + id = "status_display" + build_path = /obj/item/circuitboard/status_display + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/ai_status_display + SET_CIRCUIT_DESIGN_NAMEDESC("AI status display") + id = "ai_status_display" + build_path = /obj/item/circuitboard/ai_status_display + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/newscaster + SET_CIRCUIT_DESIGN_NAMEDESC("newscaster") + id = "newscaster" + build_type = AUTOLATHE | IMPRINTER // Simple circuit + build_path = /obj/item/circuitboard/newscaster + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/telescreen_entertainment + SET_CIRCUIT_DESIGN_NAMEDESC("entertainment camera monitor") + id = "telescreen_entertainment" + build_path = /obj/item/circuitboard/security/telescreen/entertainment + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/washing + SET_CIRCUIT_DESIGN_NAMEDESC("washing machine") + id = "washing" + build_path = /obj/item/circuitboard/washing + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/timeclock + SET_CIRCUIT_DESIGN_NAMEDESC("timeclock") + id = "timeclock" + build_type = AUTOLATHE | IMPRINTER // Simple circuit + build_path = /obj/item/circuitboard/timeclock + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/stationalert_engineering + SET_CIRCUIT_DESIGN_NAMEDESC("station alert console (engineering)") + id = "stationalert_engineering" + build_path = /obj/item/circuitboard/stationalert_engineering + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/stationalert_security + SET_CIRCUIT_DESIGN_NAMEDESC("station alert console (security)") + id = "stationalert_security" + build_path = /obj/item/circuitboard/stationalert_security + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_SECURITY + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/stationalert_all + SET_CIRCUIT_DESIGN_NAMEDESC("station alert console (all)") + id = "stationalert_all" + build_path = /obj/item/circuitboard/stationalert_all + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_COMMAND + ) + departmental_flags = DEPARTMENT_BITFLAG_COMMAND | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/vr_sleeper + SET_CIRCUIT_DESIGN_NAMEDESC("virtual reality sleeper") + id = "vr_sleeper" + build_path = /obj/item/circuitboard/vr_sleeper + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_RESEARCH + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/space_heater + SET_CIRCUIT_DESIGN_NAMEDESC("space heater") + id = "space_heater" + build_type = AUTOLATHE | IMPRINTER // Simple circuit + build_path = /obj/item/circuitboard/space_heater + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE diff --git a/code/modules/research/tg/designs/boards/refinery.dm b/code/modules/research/tg/designs/boards/refinery.dm index 5f1c11a31b..18b6d353d8 100644 --- a/code/modules/research/tg/designs/boards/refinery.dm +++ b/code/modules/research/tg/designs/boards/refinery.dm @@ -1,129 +1,129 @@ /datum/design_techweb/board/industrial_reagent_filter - name = "Industrial Reagent Filter" + SET_CIRCUIT_DESIGN_NAMEDESC("Industrial Reagent Filter") id = "industrial_reagent_filter" // req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/industrial_reagent_filter category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_REFINERY ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/industrial_reagent_furnace - name = "Industrial Reagent Furnace" + SET_CIRCUIT_DESIGN_NAMEDESC("Industrial Reagent Furnace") id = "industrial_reagent_furnace" // req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/industrial_reagent_furnace category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_REFINERY ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/industrial_reagent_grinder - name = "Industrial Reagent Grinder" + SET_CIRCUIT_DESIGN_NAMEDESC("Industrial Reagent Grinder") id = "industrial_reagent_grinder" // req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/industrial_reagent_grinder category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_REFINERY ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/industrial_reagent_hub - name = "Industrial Reagent Hub" + SET_CIRCUIT_DESIGN_NAMEDESC("Industrial Reagent Hub") id = "industrial_reagent_hub" // req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/industrial_reagent_hub category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_REFINERY ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/industrial_reagent_pipe - name = "Industrial Reagent Pipe" + SET_CIRCUIT_DESIGN_NAMEDESC("Industrial Reagent Pipe") id = "industrial_reagent_pipe" // req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/industrial_reagent_pipe category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_REFINERY ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/industrial_reagent_pump - name = "Industrial Reagent Pump" + SET_CIRCUIT_DESIGN_NAMEDESC("Industrial Reagent Pump") id = "industrial_reagent_pump" // req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/industrial_reagent_pump category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_REFINERY ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/industrial_reagent_reactor - name = "Industrial Reagent Reactor" + SET_CIRCUIT_DESIGN_NAMEDESC("Industrial Reagent Reactor") id = "industrial_reagent_reactor" // req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/industrial_reagent_reactor category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_REFINERY ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/industrial_reagent_vat - name = "Industrial Reagent Vat" + SET_CIRCUIT_DESIGN_NAMEDESC("Industrial Reagent Vat") id = "industrial_reagent_vat" // req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/industrial_reagent_vat category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_REFINERY ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/industrial_reagent_mixer - name = "Industrial Reagent Mixer" + SET_CIRCUIT_DESIGN_NAMEDESC("Industrial Reagent Mixer") id = "industrial_reagent_mixer" // req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/industrial_reagent_mixer category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_REFINERY ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/industrial_reagent_waste_processor - name = "Industrial Reagent Waste Processor" + SET_CIRCUIT_DESIGN_NAMEDESC("Industrial Reagent Waste Processor") id = "industrial_reagent_waste_processor" // req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/industrial_reagent_waste_processor category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_REFINERY ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/industrial_reagent_splitter - name = "Industrial Reagent Splitter" + SET_CIRCUIT_DESIGN_NAMEDESC("Industrial Reagent Splitter") id = "industrial_reagent_splitter" // req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/industrial_reagent_splitter category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_REFINERY ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/pump_relay - name = "Pump Relay" + SET_CIRCUIT_DESIGN_NAMEDESC("Pump Relay") id = "pump_relay" // req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/pump_relay category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_REFINERY ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/fluid_pump - name = "Fluid Pump" + SET_CIRCUIT_DESIGN_NAMEDESC("Fluid Pump") id = "fluid_pump" // req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/fluidpump category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_REFINERY ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/tg/designs/boards/science.dm b/code/modules/research/tg/designs/boards/science.dm index 9e924ddc43..026ca626b5 100644 --- a/code/modules/research/tg/designs/boards/science.dm +++ b/code/modules/research/tg/designs/boards/science.dm @@ -1,5 +1,5 @@ /datum/design_techweb/board/robocontrol - name = "robotics control console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("robotics control console") id = "robocontrol" // req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/robotics @@ -9,7 +9,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/mechacontrol - name = "exosuit control console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("exosuit control console") id = "mechacontrol" // req_tech = list(TECH_DATA = 3) build_path = /obj/item/circuitboard/mecha_control @@ -19,7 +19,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/rdconsole - name = "R&D control console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("R&D control console") id = "rdconsole" // req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/rdconsole @@ -29,7 +29,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/aifixer - name = "AI integrity restorer circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("AI integrity restorer") id = "aifixer" // req_tech = list(TECH_DATA = 3, TECH_BIO = 2) build_path = /obj/item/circuitboard/aifixer @@ -39,7 +39,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/aiupload - name = "AI upload console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("AI upload console") id = "aiupload" // req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/aiupload @@ -49,7 +49,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/borgupload - name = "cyborg upload console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("cyborg upload console") id = "borgupload" // req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/borgupload @@ -59,7 +59,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/circuit_imprinter - name = "circuit imprinter circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("circuit imprinter") id = "circuit_imprinter" // req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/circuit_imprinter @@ -69,7 +69,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/autolathe - name = "autolathe board circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("autolathe") id = "autolathe" // req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/autolathe @@ -79,7 +79,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/rdserver - name = "R&D server circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("R&D server") id = "rdserver" // req_tech = list(TECH_DATA = 3) build_path = /obj/item/circuitboard/machine/rdserver @@ -89,7 +89,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/mechfab - name = "exosuit fabricator circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("exosuit fabricator") id = "mechfab" // req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/mechfab @@ -99,7 +99,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/prosfab - name = "prosthetics fabricator circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("prosthetics fabricator") id = "prosfab" // req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/prosthetics @@ -109,7 +109,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/mech_recharger - name = "mech recharger circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("mech recharger") id = "mech_recharger" // req_tech = list(TECH_DATA = 2, TECH_POWER = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/mech_recharger @@ -119,7 +119,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/recharge_station - name = "cyborg recharge station circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("cyborg recharge station") id = "recharge_station" // req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/recharge_station @@ -129,7 +129,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/transhuman_synthprinter - name = "SynthFab 3000 circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("SynthFab 3000") id = "transhuman_synthprinter" // req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/transhuman_synthprinter @@ -140,7 +140,7 @@ // Telesci stuff /datum/design_techweb/board/telesci_console - name = "Telepad Control Console circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("Telepad Control Console") id = "telesci_console" // req_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 3, TECH_PHORON = 4) build_path = /obj/item/circuitboard/telesci_console @@ -150,7 +150,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/telesci_pad - name = "Telepad circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("Telepad") id = "telesci_pad" // req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_PHORON = 4, TECH_BLUESPACE = 5) build_path = /obj/item/circuitboard/telesci_pad @@ -160,7 +160,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/quantum_pad - name = "Quantum Pad circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("Quantum Pad") id = "quantum_pad" // req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_PHORON = 4, TECH_BLUESPACE = 5) build_path = /obj/item/circuitboard/quantumpad @@ -170,7 +170,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/bomb_tester - name = "Explosive Effect Simulator circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("Explosive Effect Simulator") id = "bomb_tester" // req_tech = list(TECH_PHORON = 3, TECH_DATA = 2, TECH_MAGNET = 2) build_path = /obj/item/circuitboard/bomb_tester @@ -180,7 +180,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/teleporter_hub - name = "teleporter hub" + SET_CIRCUIT_DESIGN_NAMEDESC("teleporter hub") id = "teleporter_hub" build_path = /obj/item/circuitboard/teleporter_hub category = list( @@ -189,7 +189,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design_techweb/board/teleporter_station - name = "teleporter station" + SET_CIRCUIT_DESIGN_NAMEDESC("teleporter station") id = "teleporter_station" build_path = /obj/item/circuitboard/teleporter_station category = list( @@ -198,7 +198,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING /datum/design_techweb/board/destructive_analyzer - name = "destructive analyzer" + SET_CIRCUIT_DESIGN_NAMEDESC("destructive analyzer") id = "destructive_analyzer" build_path = /obj/item/circuitboard/destructive_analyzer category = list( @@ -207,7 +207,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/board/anomaly_harvester - name = "Anomaly Harvester" + SET_CIRCUIT_DESIGN_NAMEDESC("Anomaly Harvester") id = "anomaly_harvester" build_path = /obj/item/circuitboard/anomaly_harvester category = list( @@ -215,35 +215,88 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE +/datum/design_techweb/board/rdservercontrol + SET_CIRCUIT_DESIGN_NAMEDESC("R&D server") + desc = "Manages access to research databases and consoles." + id = "rdservercontrol" + build_path = /obj/item/circuitboard/rdservercontrol + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_RESEARCH + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/doppler_array + SET_CIRCUIT_DESIGN_NAMEDESC("doppler array") + id = "doppler_array" + build_path = /obj/item/circuitboard/doppler_array + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_RESEARCH + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/protean_reconstitutor + SET_CIRCUIT_DESIGN_NAMEDESC("protean reconstitutor") + id = "protean_reconstitutor" + build_path = /obj/item/circuitboard/protean_reconstitutor + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_RESEARCH + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/artifact_harvester + SET_CIRCUIT_DESIGN_NAMEDESC("exotic particle harvester") + id = "artifact_harvester" + build_path = /obj/item/circuitboard/artifact_harvester + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_RESEARCH + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/artifact_scanpad + SET_CIRCUIT_DESIGN_NAMEDESC("anomaly scanner pad") + id = "artifact_scanpad" + build_path = /obj/item/circuitboard/artifact_scanpad + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_RESEARCH + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + ///Protolathe boards +/* Optional /datum/design_techweb/board/protolathe - name = "Protolathe Board - Science" + SET_CIRCUIT_DESIGN_NAMEDESC("Protolathe - Omni") + id = "protolathe_omni" + build_path = /obj/item/circuitboard/machine/protolathe +*/ + +/datum/design_techweb/board/protolathe/science + SET_CIRCUIT_DESIGN_NAMEDESC("Protolathe - Science") id = "protolathe_science" build_path = /obj/item/circuitboard/machine/protolathe/department/science /datum/design_techweb/board/protolathe/service - name = "Protolathe Board - Service" + SET_CIRCUIT_DESIGN_NAMEDESC("Protolathe - Service") id = "protolathe_service" build_path = /obj/item/circuitboard/machine/protolathe/department/service /datum/design_techweb/board/protolathe/medical - name = "Protolathe Board - Medical" + SET_CIRCUIT_DESIGN_NAMEDESC("Protolathe - Medical") id = "protolathe_medical" build_path = /obj/item/circuitboard/machine/protolathe/department/medical /datum/design_techweb/board/protolathe/cargo - name = "Protolathe Board - Cargo" + SET_CIRCUIT_DESIGN_NAMEDESC("Protolathe - Cargo") id = "protolathe_cargo" build_path = /obj/item/circuitboard/machine/protolathe/department/cargo /datum/design_techweb/board/protolathe/engineering - name = "Protolathe Board - Engineering" + SET_CIRCUIT_DESIGN_NAMEDESC("Protolathe - Engineering") id = "protolathe_engineering" build_path = /obj/item/circuitboard/machine/protolathe/department/engineering departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING //Engineering gets an exception in that they can produce their own, since engineering often expands operations. /datum/design_techweb/board/protolathe/security - name = "Protolathe Board - Security" + SET_CIRCUIT_DESIGN_NAMEDESC("Protolathe - Security") id = "protolathe_security" build_path = /obj/item/circuitboard/machine/protolathe/department/security diff --git a/code/modules/research/tg/designs/boards/security.dm b/code/modules/research/tg/designs/boards/security.dm new file mode 100644 index 0000000000..b747e77190 --- /dev/null +++ b/code/modules/research/tg/designs/boards/security.dm @@ -0,0 +1,8 @@ +/datum/design_techweb/board/dna_analyzer + SET_CIRCUIT_DESIGN_NAMEDESC("DNA analyzer") + id = "dna_analyzer" + build_path = /obj/item/circuitboard/dna_analyzer + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_SECURITY + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/tg/designs/boards/telecomms.dm b/code/modules/research/tg/designs/boards/telecomms.dm index 47efa9626b..738fb6b59e 100644 --- a/code/modules/research/tg/designs/boards/telecomms.dm +++ b/code/modules/research/tg/designs/boards/telecomms.dm @@ -1,96 +1,82 @@ - -/datum/design_techweb/board/comm_monitor - name = "telecommunications monitoring console circuit" - id = "comm_monitor" - // req_tech = list(TECH_DATA = 3) - build_path = /obj/item/circuitboard/comm_monitor - category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/board/comm_server - name = "telecommunications server monitoring console circuit" - id = "comm_server" - // req_tech = list(TECH_DATA = 3) - build_path = /obj/item/circuitboard/comm_server - category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/board/message_monitor - name = "messaging monitor console circuit" - id = "message_monitor" - // req_tech = list(TECH_DATA = 5) - build_path = /obj/item/circuitboard/message_monitor - category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE - /datum/design_techweb/board/tcom category = list( RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE +/datum/design_techweb/board/tcom/comm_monitor + SET_CIRCUIT_DESIGN_NAMEDESC("telecommunications monitoring console") + id = "comm_monitor" + build_path = /obj/item/circuitboard/comm_monitor + +/datum/design_techweb/board/tcom/comm_server + SET_CIRCUIT_DESIGN_NAMEDESC("telecommunications server monitoring console") + id = "comm_server" + build_path = /obj/item/circuitboard/comm_server + +/datum/design_techweb/board/tcom/message_monitor + SET_CIRCUIT_DESIGN_NAMEDESC("messaging monitor console") + id = "message_monitor" + build_path = /obj/item/circuitboard/message_monitor + /datum/design_techweb/board/tcom/server - name = "server mainframe circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("server mainframe") id = "tcom-server" build_path = /obj/item/circuitboard/telecomms/server /datum/design_techweb/board/tcom/processor - name = "processor unit circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("processor unit") id = "tcom-processor" build_path = /obj/item/circuitboard/telecomms/processor /datum/design_techweb/board/tcom/bus - name = "bus mainframe circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("bus mainframe") id = "tcom-bus" build_path = /obj/item/circuitboard/telecomms/bus /datum/design_techweb/board/tcom/hub - name = "hub mainframe circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("hub mainframe") id = "tcom-hub" build_path = /obj/item/circuitboard/telecomms/hub /datum/design_techweb/board/tcom/relay - name = "relay mainframe circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("relay mainframe") id = "tcom-relay" - // req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 3) build_path = /obj/item/circuitboard/telecomms/relay /datum/design_techweb/board/tcom/broadcaster - name = "subspace broadcaster circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("subspace broadcaster") id = "tcom-broadcaster" - // req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_BLUESPACE = 2) build_path = /obj/item/circuitboard/telecomms/broadcaster /datum/design_techweb/board/tcom/receiver - name = "subspace receiver circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("subspace receiver") id = "tcom-receiver" - // req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_BLUESPACE = 2) build_path = /obj/item/circuitboard/telecomms/receiver /datum/design_techweb/board/tcom/exonet_node - name = "exonet node circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("exonet node") id = "tcom-exonet_node" - // req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4) build_path = /obj/item/circuitboard/telecomms/exonet_node -/datum/design_techweb/board/ntnet_relay - name = "NTNet Quantum Relay circuit" +/datum/design_techweb/board/tcom/ntnet_relay + SET_CIRCUIT_DESIGN_NAMEDESC("NTNet Quantum Relay") id = "ntnet_relay" - // req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/ntnet_relay - category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/tcom/pda_multicaster + SET_CIRCUIT_DESIGN_NAMEDESC("PDA multicaster") + id = "pda_multicaster" + build_path = /obj/item/circuitboard/telecomms/pda_multicaster + +/datum/design_techweb/board/tcom/comm_traffic + SET_CIRCUIT_DESIGN_NAMEDESC("telecommunications traffic control console") + id = "comm_traffic" + build_path = /obj/item/circuitboard/comm_traffic // Telecomm parts /datum/design_techweb/subspace + desc = "Complex components used to construct and repair telecomms machinery." build_type = PROTOLATHE category = list( RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS diff --git a/code/modules/research/tg/designs/construction_designs.dm b/code/modules/research/tg/designs/construction_designs.dm index e69de29bb2..9a186649c3 100644 --- a/code/modules/research/tg/designs/construction_designs.dm +++ b/code/modules/research/tg/designs/construction_designs.dm @@ -0,0 +1,125 @@ +/datum/design_techweb/board/airlock_electronics + SET_CIRCUIT_DESIGN_NAMEDESC("airlock") + id = "airlock_board" + build_type = AUTOLATHE | IMPRINTER // Simple circuit + build_path = /obj/item/airlock_electronics + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/airalarm + SET_CIRCUIT_DESIGN_NAMEDESC("air alarm") + id = "airalarm_electronics" + build_type = AUTOLATHE | IMPRINTER // Simple circuit + build_path = /obj/item/circuitboard/airalarm + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/firealarm + SET_CIRCUIT_DESIGN_NAMEDESC("fire alarm") + id = "firealarm_electronics" + build_type = AUTOLATHE | IMPRINTER // Simple circuit + build_path = /obj/item/circuitboard/firealarm + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/power_control + name = "power control module" + desc = "The circuit board for an area power controller(APC)." + id = "power_control" + build_type = AUTOLATHE | IMPRINTER // Simple circuit + build_path = /obj/item/module/power_control + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/holopad + SET_CIRCUIT_DESIGN_NAMEDESC("AI holopad") + id = "holopad" + build_path = /obj/item/circuitboard/holopad + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/board/intercom + SET_CIRCUIT_DESIGN_NAMEDESC("intercom") + id = "intercom" + build_type = AUTOLATHE | IMPRINTER // Simple circuit + build_path = /obj/item/circuitboard/intercom + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/light_bulb + name = "light bulb" + id = "light_bulb" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 125) + build_path = /obj/item/light/bulb + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/large_light_bulb + name = "large light bulb" + id = "large_light_bulb" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 200) + build_path = /obj/item/light/bulb/large + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/light_tube + name = "light tube" + id = "light_tube" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 125) + build_path = /obj/item/light/tube + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/large_light_tube + name = "large light tube" + id = "large_light_tube" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 200) + build_path = /obj/item/light/tube/large + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/floor_light + name = "floor light kit" + desc = "A backlit floor panel, ready for installation!" + id = "floor_light" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 3000, MAT_GLASS = 3000) + build_path = /obj/item/floor_light + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING diff --git a/code/modules/research/tg/designs/equipment_designs.dm b/code/modules/research/tg/designs/equipment_designs.dm index ac2244e72a..7a1bfaafde 100644 --- a/code/modules/research/tg/designs/equipment_designs.dm +++ b/code/modules/research/tg/designs/equipment_designs.dm @@ -241,6 +241,7 @@ // GPS /datum/design_techweb/gps + desc = "A global positioning system reciever, used to safely navigate when far away from the station." // req_tech = list(TECH_MATERIAL = 2, TECH_DATA = 2, TECH_BLUESPACE = 2) build_type = PROTOLATHE materials = list(MAT_STEEL = 500) @@ -388,3 +389,79 @@ RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/radio_headset + name = "radio headset" + desc = "An updated, modular intercom that fits over the head. Takes encryption keys" + id = "radio_headset" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 120) + build_path = /obj/item/radio/headset + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC + ) + departmental_flags = ALL + +/datum/design_techweb/welding_helmet + name = "welding helmet" + desc = "A head-mounted face cover designed to protect the wearer completely from space-arc eye." + id = "welding_helmet" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 3750, MAT_GLASS = 1250) + build_path = /obj/item/clothing/head/welding + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/welding_goggles + name = "welding goggles" + desc = "Protects the eyes from welders, approved by the mad scientist association." + id = "welding_goggles" + build_type = PROTOLATHE + materials = list(MAT_STEEL = 2000, MAT_GLASS = 1500) + build_path = /obj/item/clothing/glasses/welding + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/suit_cooling_unit + name = "portable suit cooling unit" + desc = "A portable heat sink and liquid cooled radiator that can be hooked up to a space suit's existing temperature controls to provide industrial levels of cooling." + id = "suit_cooling_unit" + build_type = PROTOLATHE + materials = list(MAT_STEEL = 18000, MAT_GLASS = 4400) + build_path = /obj/item/suit_cooling_unit + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC + ) + departmental_flags = ALL + +/datum/design_techweb/holocollar + name = "Holo-collar" + desc = "An expensive holo-collar for the modern day pet." + id = "holocollar" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 60) + build_path = /obj/item/clothing/accessory/collar/holo + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC + ) + departmental_flags = ALL + +/datum/design_techweb/leash + name = "leash" + desc = "A simple tether that can easily be hooked onto a collar. Usually used to keep pets nearby." + id = "leash" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 50) + build_path = /obj/item/leash + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC + ) + departmental_flags = ALL diff --git a/code/modules/research/tg/designs/firework_designs.dm b/code/modules/research/tg/designs/firework_designs.dm index f8e88be936..0a97021e2a 100644 --- a/code/modules/research/tg/designs/firework_designs.dm +++ b/code/modules/research/tg/designs/firework_designs.dm @@ -10,7 +10,7 @@ name = "Firework Star ([name])" /datum/design_techweb/board/firework_launcher - name = "firework launcher circuit" + SET_CIRCUIT_DESIGN_NAMEDESC("firework launcher") id = "fireworklauncher" // req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/firework_launcher diff --git a/code/modules/research/tg/designs/illegal_designs.dm b/code/modules/research/tg/designs/illegal_designs.dm index 4e846347ae..547144f38a 100644 --- a/code/modules/research/tg/designs/illegal_designs.dm +++ b/code/modules/research/tg/designs/illegal_designs.dm @@ -7,6 +7,7 @@ materials = list(MAT_STEEL = 300, MAT_GLASS = 300) build_path = /obj/item/encryptionkey/binary category = list( + RND_CATEGORY_HACKED, RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE @@ -20,6 +21,7 @@ materials = list(MAT_STEEL = 500) build_path = /obj/item/storage/box/syndie_kit/chameleon category = list( + RND_CATEGORY_HACKED, RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE @@ -32,6 +34,20 @@ materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000, MAT_URANIUM = 2000) build_path = /obj/item/bodysnatcher category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/electropack + name = "electropack" + desc = "Dance my monkeys! DANCE!!!" + id = "electropack" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 12500, MAT_GLASS = 3125) + build_path = /obj/item/radio/electropack + category = list( + RND_CATEGORY_HACKED, RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/tg/designs/materials.dm b/code/modules/research/tg/designs/materials.dm new file mode 100644 index 0000000000..09f2b1a737 --- /dev/null +++ b/code/modules/research/tg/designs/materials.dm @@ -0,0 +1,726 @@ +// Mining mats + +/datum/design_techweb/iron + SET_MATERIAL_DESIGN_NAMEDESC(MAT_IRON) + id = MAT_IRON + build_type = AUTOLATHE + materials = list(MAT_IRON = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/iron + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/steel + SET_MATERIAL_DESIGN_NAMEDESC(MAT_STEEL) + id = MAT_STEEL + build_type = AUTOLATHE + materials = list(MAT_STEEL = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/steel + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/rods + SET_MATERIAL_DESIGN_NAMEDESC("metal rods") + id = "rods" + build_type = AUTOLATHE + materials = list(MAT_STEEL = REAGENTS_PER_ROD) + build_path = /obj/item/stack/rods + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/silver + SET_MATERIAL_DESIGN_NAMEDESC(MAT_SILVER) + id = MAT_SILVER + build_type = AUTOLATHE + materials = list(MAT_SILVER = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/silver + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/gold + SET_MATERIAL_DESIGN_NAMEDESC(MAT_GOLD) + id = MAT_GOLD + build_type = AUTOLATHE + materials = list(MAT_GOLD = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/gold + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/tin + SET_MATERIAL_DESIGN_NAMEDESC(MAT_TIN) + id = MAT_TIN + build_type = AUTOLATHE + materials = list(MAT_TIN = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/tin + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/copper + SET_MATERIAL_DESIGN_NAMEDESC(MAT_COPPER) + id = MAT_COPPER + build_type = AUTOLATHE + materials = list(MAT_COPPER = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/copper + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/diamond + SET_MATERIAL_DESIGN_NAMEDESC(MAT_DIAMOND) + id = MAT_DIAMOND + build_type = AUTOLATHE + materials = list(MAT_DIAMOND = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/diamond + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/phoron + SET_MATERIAL_DESIGN_NAMEDESC(MAT_PHORON) + id = MAT_PHORON + build_type = AUTOLATHE + materials = list(MAT_PHORON = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/phoron + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/uranium + SET_MATERIAL_DESIGN_NAMEDESC(MAT_URANIUM) + id = MAT_URANIUM + build_type = AUTOLATHE + materials = list(MAT_URANIUM = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/uranium + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/titanium + SET_MATERIAL_DESIGN_NAMEDESC(MAT_TITANIUM) + id = MAT_TITANIUM + build_type = AUTOLATHE + materials = list(MAT_TITANIUM = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/titanium + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/plastic + SET_MATERIAL_DESIGN_NAMEDESC(MAT_PLASTIC) + id = MAT_PLASTIC + build_type = AUTOLATHE + materials = list(MAT_PLASTIC = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/plastic + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/painite + SET_MATERIAL_DESIGN_NAMEDESC(MAT_PAINITE) + id = MAT_PAINITE + build_type = AUTOLATHE + materials = list(MAT_PAINITE = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/painite + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/void_opal + SET_MATERIAL_DESIGN_NAMEDESC(MAT_VOPAL) + id = MAT_VOPAL + build_type = AUTOLATHE + materials = list(MAT_VOPAL = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/void_opal + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/quartz + SET_MATERIAL_DESIGN_NAMEDESC(MAT_QUARTZ) + id = MAT_QUARTZ + build_type = AUTOLATHE + materials = list(MAT_QUARTZ = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/quartz + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/valhollide + SET_MATERIAL_DESIGN_NAMEDESC(MAT_VALHOLLIDE) + id = MAT_VALHOLLIDE + build_type = AUTOLATHE + materials = list(MAT_VALHOLLIDE = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/valhollide + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/verdantium + SET_MATERIAL_DESIGN_NAMEDESC(MAT_VERDANTIUM) + id = MAT_VERDANTIUM + build_type = AUTOLATHE + materials = list(MAT_VERDANTIUM = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/verdantium + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/morphium + SET_MATERIAL_DESIGN_NAMEDESC(MAT_MORPHIUM) + id = MAT_MORPHIUM + build_type = AUTOLATHE + materials = list(MAT_MORPHIUM = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/morphium + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/glamour + SET_MATERIAL_DESIGN_NAMEDESC(MAT_GLAMOUR) + id = MAT_GLAMOUR + build_type = AUTOLATHE + materials = list(MAT_GLAMOUR = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/glamour + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/weathered_agate + SET_MATERIAL_DESIGN_NAMEDESC(MAT_EAGATE) + id = MAT_EAGATE + build_type = AUTOLATHE + materials = list(MAT_EAGATE = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/weathered_agate + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/sandstone + SET_MATERIAL_DESIGN_NAMEDESC(MAT_SANDSTONE) + id = MAT_SANDSTONE + build_type = AUTOLATHE + materials = list(MAT_SANDSTONE = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/sandstone + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/marble + SET_MATERIAL_DESIGN_NAMEDESC(MAT_MARBLE) + id = MAT_MARBLE + build_type = AUTOLATHE + materials = list(MAT_MARBLE = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/marble + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/supermatter + SET_MATERIAL_DESIGN_NAMEDESC(MAT_SUPERMATTER) + id = MAT_SUPERMATTER + build_type = AUTOLATHE + materials = list(MAT_SUPERMATTER = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/supermatter + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/plasteel + SET_MATERIAL_DESIGN_NAMEDESC(MAT_PLASTEEL) + id = MAT_PLASTEEL + build_type = AUTOLATHE + materials = list(MAT_PLASTEEL = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/plasteel + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/durasteel + SET_MATERIAL_DESIGN_NAMEDESC(MAT_DURASTEEL) + id = MAT_DURASTEEL + build_type = AUTOLATHE + materials = list(MAT_DURASTEEL = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/durasteel + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/plastitanium + SET_MATERIAL_DESIGN_NAMEDESC(MAT_PLASTITANIUM) + id = MAT_PLASTITANIUM + build_type = AUTOLATHE + materials = list(MAT_PLASTITANIUM = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/plastitanium + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/lead + SET_MATERIAL_DESIGN_NAMEDESC(MAT_LEAD) + id = MAT_LEAD + build_type = AUTOLATHE + materials = list(MAT_LEAD = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/lead + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/platinum + SET_MATERIAL_DESIGN_NAMEDESC(MAT_PLATINUM) + id = MAT_PLATINUM + build_type = AUTOLATHE + materials = list(MAT_PLATINUM = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/platinum + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/mhydrogen + SET_MATERIAL_DESIGN_NAMEDESC(MAT_METALHYDROGEN) + id = MAT_METALHYDROGEN + build_type = AUTOLATHE + materials = list(MAT_METALHYDROGEN = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/mhydrogen + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/deuterium + SET_MATERIAL_DESIGN_NAMEDESC(MAT_DEUTERIUM) + id = MAT_DEUTERIUM + build_type = AUTOLATHE + materials = list(MAT_DEUTERIUM = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/deuterium + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/tritium + SET_MATERIAL_DESIGN_NAMEDESC(MAT_TRITIUM) + id = MAT_TRITIUM + build_type = AUTOLATHE + materials = list(MAT_TRITIUM = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/tritium + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/osmium + SET_MATERIAL_DESIGN_NAMEDESC(MAT_OSMIUM) + id = MAT_OSMIUM + build_type = AUTOLATHE + materials = list(MAT_OSMIUM = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/osmium + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/graphite + SET_MATERIAL_DESIGN_NAMEDESC(MAT_GRAPHITE) + id = MAT_GRAPHITE + build_type = AUTOLATHE + materials = list(MAT_GRAPHITE = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/graphite + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/bronze + SET_MATERIAL_DESIGN_NAMEDESC(MAT_BRONZE) + id = MAT_BRONZE + build_type = AUTOLATHE + materials = list(MAT_BRONZE = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/bronze + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/aluminium + SET_MATERIAL_DESIGN_NAMEDESC(MAT_ALUMINIUM) + id = MAT_ALUMINIUM + build_type = AUTOLATHE + materials = list(MAT_ALUMINIUM = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/aluminium + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +// Glass + +/datum/design_techweb/glass + SET_MATERIAL_DESIGN_NAMEDESC(MAT_GLASS) + id = MAT_GLASS + build_type = AUTOLATHE + materials = list(MAT_GLASS = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/glass + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/phoronglass + SET_MATERIAL_DESIGN_NAMEDESC(MAT_PGLASS) + id = MAT_PGLASS + build_type = AUTOLATHE + materials = list(MAT_PGLASS = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/glass/phoronglass + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/glass_titanium + SET_MATERIAL_DESIGN_NAMEDESC(MAT_TITANIUMGLASS) + id = MAT_TITANIUMGLASS + build_type = AUTOLATHE + materials = list(MAT_TITANIUMGLASS = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/glass/titanium + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/glass_plastitanium + SET_MATERIAL_DESIGN_NAMEDESC(MAT_PLASTITANIUMGLASS) + id = MAT_PLASTITANIUMGLASS + build_type = AUTOLATHE + materials = list(MAT_PLASTITANIUMGLASS = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/glass/plastitanium + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + + + +// Wood + +/datum/design_techweb/wood + SET_MATERIAL_DESIGN_NAMEDESC(MAT_WOOD) + id = MAT_WOOD + build_type = AUTOLATHE + materials = list(MAT_WOOD = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/wood + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/sif_wood + SET_MATERIAL_DESIGN_NAMEDESC(MAT_SIFWOOD) + id = MAT_SIFWOOD + build_type = AUTOLATHE + materials = list(MAT_SIFWOOD = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/wood/sif + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/hard_wood + SET_MATERIAL_DESIGN_NAMEDESC(MAT_HARDWOOD) + id = MAT_HARDWOOD + build_type = AUTOLATHE + materials = list(MAT_HARDWOOD = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/wood/hard + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/birch_wood + SET_MATERIAL_DESIGN_NAMEDESC(MAT_BIRCHWOOD) + id = MAT_BIRCHWOOD + build_type = AUTOLATHE + materials = list(MAT_BIRCHWOOD = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/wood/birch + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/pine_wood + SET_MATERIAL_DESIGN_NAMEDESC(MAT_PINEWOOD) + id = MAT_PINEWOOD + build_type = AUTOLATHE + materials = list(MAT_PINEWOOD = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/wood/pine + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/oak_wood + SET_MATERIAL_DESIGN_NAMEDESC(MAT_OAKWOOD) + id = MAT_OAKWOOD + build_type = AUTOLATHE + materials = list(MAT_OAKWOOD = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/wood/oak + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/acacia_wood + SET_MATERIAL_DESIGN_NAMEDESC(MAT_ACACIAWOOD) + id = MAT_ACACIAWOOD + build_type = AUTOLATHE + materials = list(MAT_ACACIAWOOD = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/wood/acacia + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/redwood_wood + SET_MATERIAL_DESIGN_NAMEDESC(MAT_REDWOOD) + id = MAT_REDWOOD + build_type = AUTOLATHE + materials = list(MAT_REDWOOD = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/wood/redwood + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +// Misc mats + +/datum/design_techweb/algae + SET_MATERIAL_DESIGN_NAMEDESC(MAT_ALGAE) + id = MAT_ALGAE + build_type = AUTOLATHE + materials = list(MAT_ALGAE = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/algae + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/wax + SET_MATERIAL_DESIGN_NAMEDESC(MAT_WAX) + id = MAT_WAX + build_type = AUTOLATHE + materials = list(MAT_WAX = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/wax + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/cardboard + SET_MATERIAL_DESIGN_NAMEDESC(MAT_CARDBOARD) + id = MAT_CARDBOARD + build_type = AUTOLATHE + materials = list(MAT_CARDBOARD = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/cardboard + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/snow + SET_MATERIAL_DESIGN_NAMEDESC(MAT_SNOW) + id = MAT_SNOW + build_type = AUTOLATHE + materials = list(MAT_SNOW = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/snow + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/snowbrick + SET_MATERIAL_DESIGN_NAMEDESC(MAT_SNOWBRICK) + id = MAT_SNOWBRICK + build_type = AUTOLATHE + materials = list(MAT_SNOWBRICK = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/snowbrick + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/flint + SET_MATERIAL_DESIGN_NAMEDESC(MAT_FLINT) + id = MAT_FLINT + build_type = AUTOLATHE + materials = list(MAT_FLINT = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/flint + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/concrete + SET_MATERIAL_DESIGN_NAMEDESC(MAT_CONCRETE) + id = MAT_CONCRETE + build_type = AUTOLATHE + materials = list(MAT_CONCRETE = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/concrete + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/chitin + SET_MATERIAL_DESIGN_NAMEDESC(MAT_CHITIN) + id = MAT_CHITIN + build_type = AUTOLATHE + materials = list(MAT_CHITIN = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/chitin + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/fur + SET_MATERIAL_DESIGN_NAMEDESC(MAT_FUR) + id = MAT_FUR + build_type = AUTOLATHE + materials = list(MAT_FUR = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/fur + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/wool + SET_MATERIAL_DESIGN_NAMEDESC(MAT_WOOL) + id = MAT_WOOL + build_type = AUTOLATHE + materials = list(MAT_WOOL = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/fur/wool + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/resin + SET_MATERIAL_DESIGN_NAMEDESC(MAT_RESIN) + id = MAT_RESIN + build_type = AUTOLATHE + materials = list(MAT_RESIN = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/resin + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/leather + SET_MATERIAL_DESIGN_NAMEDESC(MAT_LEATHER) + id = MAT_LEATHER + build_type = AUTOLATHE + materials = list(MAT_LEATHER = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/leather + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/cotton + SET_MATERIAL_DESIGN_NAMEDESC(MAT_COTTON) + id = MAT_COTTON + build_type = AUTOLATHE + materials = list(MAT_COTTON = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/cotton + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/smolebricks + SET_MATERIAL_DESIGN_NAMEDESC(MAT_SMOLEBRICKS) + id = MAT_SMOLEBRICKS + build_type = AUTOLATHE + materials = list(MAT_SMOLEBRICKS = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/material/smolebricks + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +// TODO - Remove a lot of these by giving sheets a flag or something to prevent the autolathe/silo from using them for mats + +/datum/design_techweb/log + SET_MATERIAL_DESIGN_NAMEDESC(MAT_LOG) + id = MAT_LOG + build_type = AUTOLATHE + materials = list(MAT_LOG = REAGENTS_PER_LOG) + build_path = /obj/item/stack/material/log + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/siflog + SET_MATERIAL_DESIGN_NAMEDESC(MAT_SIFLOG) + id = MAT_SIFLOG + build_type = AUTOLATHE + materials = list(MAT_SIFLOG = REAGENTS_PER_LOG) + build_path = /obj/item/stack/material/log/sif + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/hardlog + SET_MATERIAL_DESIGN_NAMEDESC(MAT_HARDLOG) + id = MAT_HARDLOG + build_type = AUTOLATHE + materials = list(MAT_HARDLOG = REAGENTS_PER_LOG) + build_path = /obj/item/stack/material/log/hard + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) + +/datum/design_techweb/stick + SET_MATERIAL_DESIGN_NAMEDESC(MAT_WOODEN_STICK) + id = MAT_WOODEN_STICK + build_type = AUTOLATHE + materials = list(MAT_WOODEN_STICK = REAGENTS_PER_ROD) + build_path = /obj/item/stack/material/stick + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, + ) diff --git a/code/modules/research/tg/designs/mechfab_designs.dm b/code/modules/research/tg/designs/mechfab_designs.dm index 773b8d02e6..20a3a3d4db 100644 --- a/code/modules/research/tg/designs/mechfab_designs.dm +++ b/code/modules/research/tg/designs/mechfab_designs.dm @@ -382,21 +382,21 @@ ) /datum/design_techweb/mechfab/pinnace/pinnace_main - name = "Pinnace central control board circuit" + name = "Pinnace central control circuit" id = "pinnace_main" // req_tech = list(TECH_DATA = 3, TECH_POWER = 4) build_path = /obj/item/circuitboard/mecha/fighter/pinnace/main materials = DEFAULT_CIRCUIT_MATERIALS /datum/design_techweb/mechfab/pinnace/pinnace_flight - name = "Pinnace flight control board circuit" + name = "Pinnace flight control circuit" id = "pinnace_flight" // req_tech = list(TECH_DATA = 3, TECH_POWER = 4) build_path = /obj/item/circuitboard/mecha/fighter/pinnace/flight materials = DEFAULT_CIRCUIT_MATERIALS /datum/design_techweb/mechfab/pinnace/pinnace_targeting - name = "Pinnace weapon control and targeting board circuit" + name = "Pinnace weapon control and targeting circuit" id = "pinnace_targeting" // req_tech = list(TECH_DATA = 3, TECH_POWER = 4) build_path = /obj/item/circuitboard/mecha/fighter/pinnace/targeting @@ -466,21 +466,21 @@ ) /datum/design_techweb/mechfab/baron/baron_main - name = "Baron central control board circuit" + name = "Baron central control circuit" id = "baron_main" // req_tech = list(TECH_DATA = 5, TECH_POWER = 4) build_path = /obj/item/circuitboard/mecha/fighter/baron/main materials = DEFAULT_CIRCUIT_MATERIALS /datum/design_techweb/mechfab/baron/baron_flight - name = "Baron flight control board circuit" + name = "Baron flight control circuit" id = "baron_flight" // req_tech = list(TECH_DATA = 5, TECH_POWER = 4) build_path = /obj/item/circuitboard/mecha/fighter/baron/flight materials = DEFAULT_CIRCUIT_MATERIALS /datum/design_techweb/mechfab/baron/baron_targeting - name = "Baron weapon control and targeting board circuit" + name = "Baron weapon control and targeting circuit" id = "baron_targeting" // req_tech = list(TECH_DATA = 5, TECH_POWER = 4, TECH_COMBAT = 3) build_path = /obj/item/circuitboard/mecha/fighter/baron/targeting diff --git a/code/modules/research/tg/designs/mechfab_equipment_designs.dm b/code/modules/research/tg/designs/mechfab_equipment_designs.dm index bd7607df16..16534e39a9 100644 --- a/code/modules/research/tg/designs/mechfab_equipment_designs.dm +++ b/code/modules/research/tg/designs/mechfab_equipment_designs.dm @@ -1,4 +1,5 @@ /datum/design_techweb/mechfab/equipment + desc = "Heavy-duty equipment installed on an exosuit or fighter craft. The vehicle must have the correct hardpoints to mount this equipment." category = list( RND_CATEGORY_MECHFAB_EQUIPMENT ) diff --git a/code/modules/research/tg/designs/medical_designs.dm b/code/modules/research/tg/designs/medical_designs.dm index 3ded86eaa2..bfb7db8ac9 100644 --- a/code/modules/research/tg/designs/medical_designs.dm +++ b/code/modules/research/tg/designs/medical_designs.dm @@ -6,6 +6,7 @@ materials = list(MAT_PLASTIC = 100, MAT_GLASS = 100) build_path = /obj/item/storage/pill_bottle category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY, ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE @@ -14,9 +15,10 @@ name = "Syringe" id = "syringe" build_type = AUTOLATHE | PROTOLATHE - materials = list(MAT_STEEL = 100, MAT_GLASS = 500) + materials = list(MAT_GLASS = 190) build_path = /obj/item/reagent_containers/syringe category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY, ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE @@ -28,6 +30,7 @@ materials = list(MAT_GLASS = 100, MAT_PLASTIC = 500) build_path = /obj/item/reagent_containers/dropper category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY, ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE @@ -39,6 +42,7 @@ materials = list(MAT_STEEL = 500, MAT_GLASS = 500) build_path = /obj/item/surgical/scalpel category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL, ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE @@ -50,6 +54,7 @@ materials = list(MAT_STEEL = 1000, MAT_GLASS = 1000) build_path = /obj/item/surgical/circular_saw category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL, ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE @@ -61,6 +66,7 @@ materials = list(MAT_STEEL = 1000, MAT_GLASS = 1000) build_path = /obj/item/surgical/bonesetter category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL, ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE @@ -72,6 +78,7 @@ materials = list(MAT_STEEL = 500, MAT_GLASS = 500) build_path = /obj/item/surgical/surgicaldrill category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL, ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE @@ -83,6 +90,7 @@ materials = list(MAT_STEEL = 500, MAT_GLASS = 500) build_path = /obj/item/surgical/retractor category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL, ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE @@ -94,6 +102,7 @@ materials = list(MAT_STEEL = 500, MAT_GLASS = 500) build_path = /obj/item/surgical/cautery category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL, ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE @@ -105,10 +114,47 @@ materials = list(MAT_STEEL = 500, MAT_GLASS = 500) build_path = /obj/item/surgical/hemostat category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL, ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE +/datum/design_techweb/fixovein + name = "FixOVein" + id = "fixovein" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 500, MAT_GLASS = 500) + build_path = /obj/item/surgical/FixOVein + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL, + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/bonegel + name = "bone gel" + id = "bonegel" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 500, MAT_GLASS = 500) + build_path = /obj/item/surgical/bonegel + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL, + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/bioregen + name="bioregenerator" + desc="A special tool used in surgeries which can pull toxins from and restore oxygen to organic tissue as well as recreate missing biological structures to allow otherwise irreperable flesh to be mended." + id = "bioregen" + build_type = PROTOLATHE + materials = list(MAT_STEEL = 1500, MAT_GLASS = 1000, MAT_SILVER = 500) + build_path = /obj/item/surgical/bioregen + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL_ADVANCED, + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + /datum/design_techweb/defibrillator name = "Defibrillator" desc = "A portable defibrillator, used for resuscitating recently deceased crew." @@ -124,10 +170,11 @@ /datum/design_techweb/penlight name = "Penlight" id = "penlight" - build_type = PROTOLATHE + build_type = AUTOLATHE | PROTOLATHE materials = list(MAT_STEEL = 100, MAT_GLASS = 100) build_path = /obj/item/flashlight/pen category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE @@ -139,6 +186,249 @@ materials = list(MAT_STEEL = 500, MAT_GLASS = 500) build_path = /obj/item/implanter category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL, ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +// Surgical devices +/datum/design_techweb/scalpel_laser1 + name = "Basic Laser Scalpel" + desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks basic and could be improved." + id = "scalpel_laser1" + build_type = PROTOLATHE + // req_tech = list(TECH_BIO = 2, TECH_MATERIAL = 2, TECH_MAGNET = 2) + materials = list(MAT_STEEL = 12500, MAT_GLASS = 7500) + build_path = /obj/item/surgical/scalpel/laser1 + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/scalpel_laser2 + name = "Improved Laser Scalpel" + desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks somewhat advanced." + id = "scalpel_laser2" + build_type = PROTOLATHE + // req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 4, TECH_MAGNET = 4) + materials = list(MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 2500) + build_path = /obj/item/surgical/scalpel/laser2 + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/scalpel_laser3 + name = "Advanced Laser Scalpel" + desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks to be the pinnacle of precision energy cutlery!" + id = "scalpel_laser3" + build_type = PROTOLATHE + // req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 6, TECH_MAGNET = 5) + materials = list(MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 2000, MAT_GOLD = 1500) + build_path = /obj/item/surgical/scalpel/laser3 + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/scalpel_manager + name = "Incision Management System" + desc = "A true extension of the surgeon's body, this marvel instantly and completely prepares an incision allowing for the immediate commencement of therapeutic steps." + id = "scalpel_manager" + build_type = PROTOLATHE + // req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 7, TECH_MAGNET = 5, TECH_DATA = 4) + materials = list (MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_DIAMOND = 750) + build_path = /obj/item/surgical/scalpel/manager + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/saw_manager + name = "Energetic Bone Diverter" + desc = "A strange development following the I.M.S., this heavy tool can split and open, or close and shut, intentional holes in bones." + id = "advanced_saw" + build_type = PROTOLATHE + // req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_DATA = 5) + materials = list (MAT_STEEL = 12500, MAT_PLASTIC = 800, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_OSMIUM = 1000) + build_path = /obj/item/surgical/circular_saw/manager + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/organ_ripper + name = "Organ Ripper" + desc = "A modern and horrifying take on an ancient practice, this tool is capable of rapidly removing an organ from a hopefully willing patient, without damaging it." + id = "organ_ripper" + build_type = PROTOLATHE + // req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 5, TECH_MAGNET = 4, TECH_ILLEGAL = 3) + materials = list (MAT_STEEL = 12500, MAT_PLASTIC = 8000, MAT_OSMIUM = 2500) + build_path = /obj/item/surgical/scalpel/ripper + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/bone_clamp + name = "Bone Clamp" + desc = "A miracle of modern science, this tool rapidly knits together bone, without the need for bone gel." + id = "bone_clamp" + build_type = PROTOLATHE + // req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 5, TECH_MAGNET = 4, TECH_DATA = 4) + materials = list (MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 2500) + build_path = /obj/item/surgical/bone_clamp + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/medical_analyzer + name = "health analyzer" + desc = "A hand-held body scanner able to distinguish vital signs of the subject." + id = "medical_analyzer" + build_type = PROTOLATHE + // req_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) + materials = list(MAT_STEEL = 500, MAT_GLASS = 500) + build_path = /obj/item/healthanalyzer + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/improved_analyzer + name = "improved health analyzer" + desc = "A prototype version of the regular health analyzer, able to distinguish the location of more serious injuries as well as accurately determine radiation levels." + id = "improved_analyzer" + build_type = PROTOLATHE + // req_tech = list(TECH_MAGNET = 5, TECH_BIO = 6) + materials = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_SILVER = 1000, MAT_GOLD = 1500) + build_path = /obj/item/healthanalyzer/improved + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/advanced_analyzer + name = "advanced health analyzer" + desc = "An even more advanced handheld health scanner, complete with a full biosign monitor and on-board radiation and neurological analysis suites." + id = "advanced_analyzer" + build_type = PROTOLATHE + // req_tech = list(TECH_MAGNET = 7, TECH_BIO = 7, TECH_DATA = 5) + materials = list(MAT_STEEL = 2000, MAT_GLASS = 4000, MAT_SILVER = 3500, MAT_GOLD = 2500, MAT_DIAMOND = 1250) + build_path = /obj/item/healthanalyzer/advanced + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/phasic_analyzer + name = "phasic health analyzer" + desc = "State of the art handheld health scanner, containing not only a full biosign monitor, on-board radiation, and neurological analysis suites, but also a chemical-analysis suite." + id = "phasic_analyzer" + build_type = PROTOLATHE + materials = list(MAT_STEEL = 2000, MAT_GLASS = 4000, MAT_SILVER = 3500, MAT_GOLD = 2500, MAT_DIAMOND = 2500, MAT_PHORON = 1250) + build_path = /obj/item/healthanalyzer/phasic + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/gene_scanner + name = "Gene Scanner" + id = "gene_scanner" + build_type = PROTOLATHE + // req_tech = list(TECH_DATA = 1, TECH_BIO = 2) + materials = list(MAT_STEEL = 30, MAT_GLASS = 20) + build_path = /obj/item/gene_scanner + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/roller + name = "roller bed" + desc = "A collapsed roller bed that can be carried around." + id = "medicalbed" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000) + build_path = /obj/item/roller + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/advanced_roller + name = "advanced roller bed" + desc = "A more advanced version of the regular roller bed, with inbuilt surgical stabilisers and an improved folding system." + id = "roller_bed" + build_type = PROTOLATHE + // req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 3, TECH_MAGNET = 3) + materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_PHORON = 2000) + build_path = /obj/item/roller/adv + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/sleevemate + name = "SleeveMate 3700" + id = "sleevemate" + build_type = PROTOLATHE + // req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_BIO = 2) + materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000) + build_path = /obj/item/sleevemate + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/protohypospray + name = "prototype hypospray" + desc = "This prototype hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients." + id = "protohypospray" + build_type = PROTOLATHE + // req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_POWER = 2, TECH_BIO = 4, TECH_ILLEGAL = 2) + materials = list(MAT_STEEL = 500, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 1500, MAT_URANIUM = 1000) + build_path = /obj/item/reagent_containers/hypospray/science + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/syringe_gun + name = "syringe gun" + desc = "A spring loaded rifle designed to fit syringes, designed to incapacitate unruly patients from a distance." + id = "syringe_gun" + build_type = PROTOLATHE + materials = list(MAT_STEEL = 2000) + build_path = /obj/item/gun/launcher/syringe + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL_ADVANCED + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/syringe_cartridge + name = "syringe gun cartridge" + desc = "An impact-triggered compressed gas cartridge that can be fitted to a syringe for rapid injection." + id = "syringe_cartridge" + build_type = PROTOLATHE + materials = list(MAT_STEEL = 150, MAT_GLASS = 500) + build_path = /obj/item/syringe_cartridge + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL_ADVANCED + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/body_record_disk + name = "Body Design Disk" + desc = "Portable Body Record Storage Disk." + id = "body_record_disk" + materials = list(MAT_STEEL = 2500) + build_path = /obj/item/disk/body_record + build_type = PROTOLATHE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_MEDICAL diff --git a/code/modules/research/tg/designs/mining_designs.dm b/code/modules/research/tg/designs/mining_designs.dm new file mode 100644 index 0000000000..6b7f972380 --- /dev/null +++ b/code/modules/research/tg/designs/mining_designs.dm @@ -0,0 +1,10 @@ +/datum/design_techweb/pickaxe + name = "pickaxe" + id = "pickaxe" + build_type = AUTOLATHE + materials = list(MAT_STEEL = 2500) + build_path = /obj/item/pickaxe + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_CARGO + ) diff --git a/code/modules/research/tg/designs/misc_designs.dm b/code/modules/research/tg/designs/misc_designs.dm index bd53173d1b..5818c26006 100644 --- a/code/modules/research/tg/designs/misc_designs.dm +++ b/code/modules/research/tg/designs/misc_designs.dm @@ -15,6 +15,7 @@ // Cartridges /datum/design_techweb/pda_cartridge + desc = "A cartridge containing PDA software." // req_tech = list(TECH_ENGINEERING = 2, TECH_POWER = 3) build_type = PROTOLATHE materials = list(MAT_STEEL = 50, MAT_GLASS = 50) @@ -57,11 +58,6 @@ build_path = /obj/item/cartridge/security departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE -/datum/design_techweb/pda_cartridge/janitor - id = "cart_janitor" - build_path = /obj/item/cartridge/janitor - departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE - /datum/design_techweb/pda_cartridge/science id = "cart_science" build_path = /obj/item/cartridge/signal/science @@ -330,3 +326,108 @@ RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/sticky_tape + name = "tape role" + desc = "A roll of sticky tape. Possibly for taping ducks... or was that ducts?" + id = "sticky_tape" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_PLASTIC = 500) + build_path = /obj/item/tape_roll + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC + ) + departmental_flags = ALL + +// Assemblies +/datum/design_techweb/assembly_igniter + name = "igniter" + desc = "A small electronic device able to ignite combustable substances." + build_type = AUTOLATHE | PROTOLATHE + id = "igniter" + materials = list(MAT_STEEL = 625, MAT_GLASS = 60) + build_path = /obj/item/assembly/igniter + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ASSEMBLIES + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/assembly_infrared_emitter + name = "infrared emitter" + desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted." + build_type = AUTOLATHE | PROTOLATHE + id = "infrared_emitter" + materials = list(MAT_STEEL = 1250, MAT_GLASS = 625) + build_path = /obj/item/assembly/infra + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ASSEMBLIES + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/assembly_prox_sensor + name = "proximity sensor" + desc = "Used for scanning and alerting when someone enters a certain proximity." + build_type = AUTOLATHE | PROTOLATHE + id = "prox_sensor" + materials = list(MAT_STEEL = 1000, MAT_GLASS = 250) + build_path = /obj/item/assembly/prox_sensor + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ASSEMBLIES + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/assembly_signaler + name = "remote signaling device" + desc = "Used to remotely activate devices. Tap against another secured signaler to transfer configuration." + build_type = AUTOLATHE | PROTOLATHE + id = "signaler" + materials = list(MAT_STEEL = 1250, MAT_GLASS = 250) + build_path = /obj/item/assembly/signaler + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ASSEMBLIES + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/assembly_timer + name = "timer" + desc = "Used to time things. Works well with contraptions which has to count down. Tick tock." + build_type = AUTOLATHE | PROTOLATHE + id = "timer" + materials = list(MAT_STEEL = 625, MAT_GLASS = 60) + build_path = /obj/item/assembly/timer + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ASSEMBLIES + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +// Pai card +/datum/design_techweb/sleevecard + name = "sleevecard" + desc = "This upgraded pAI module has enough capacity to run a whole mind of human-level intelligence." + build_type = AUTOLATHE | PROTOLATHE + id = "sleevecard" + materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000) + build_path = /obj/item/paicard/sleevecard + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_MEDICAL + +/datum/design_techweb/camera_assembly + name = "camera assembly" + desc = "A pre-fabricated security camera kit, ready to be assembled and mounted to a surface." + build_type = AUTOLATHE | PROTOLATHE + id = "camera_assembly" + materials = list(MAT_STEEL = 875, MAT_GLASS = 375) + build_path = /obj/item/camera_assembly + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING diff --git a/code/modules/research/tg/designs/modsuit_designs.dm b/code/modules/research/tg/designs/modsuit_designs.dm index ec81a7b97d..7e73901e76 100644 --- a/code/modules/research/tg/designs/modsuit_designs.dm +++ b/code/modules/research/tg/designs/modsuit_designs.dm @@ -16,6 +16,10 @@ id = "rigmodule_belt_basic" materials = list(MAT_PLASTEEL = 12000, MAT_GOLD = 3000, MAT_GRAPHITE = 3000, MAT_OSMIUM = 1000, MAT_PLASTIC = 5000) build_path = /obj/item/rig/robotics + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MODSUIT_MODULES + ) // Station Suits /datum/design_techweb/mechfab/modsuit/eva_controller @@ -24,6 +28,9 @@ id = "eva_rig_module" materials = list(MAT_PLASTEEL = 16000, MAT_GOLD = 3000, MAT_GRAPHITE = 4500, MAT_OSMIUM = 1000, MAT_PLASTIC = 4500, MAT_LEAD = 2000, MAT_STEEL = 2000) build_path = /obj/item/rig/eva + category = list( + RND_CATEGORY_MODSUIT_MODULES + ) /datum/design_techweb/mechfab/modsuit/eva_ce_controller name = "Advanced EVA Suit Control Module" @@ -31,6 +38,9 @@ id = "advanced_eva_rig_module" materials = list(MAT_PLASTEEL = 16000, MAT_GOLD = 6000, MAT_GRAPHITE = 4500, MAT_OSMIUM = 4000, MAT_PLASTIC = 8000, MAT_LEAD = 2000, MAT_PHORON = 6000, MAT_STEEL = 3000, MAT_TITANIUM = 2000) build_path = /obj/item/rig/ce + category = list( + RND_CATEGORY_MODSUIT_MODULES + ) /datum/design_techweb/mechfab/modsuit/ami_controller name = "AMI Suit Control Module" @@ -38,6 +48,9 @@ id = "ami_rig_module" materials = list(MAT_PLASTEEL = 12000, MAT_GOLD = 3000, MAT_GRAPHITE = 3000, MAT_OSMIUM = 2000, MAT_PLASTIC = 6000, MAT_LEAD = 2000, MAT_PHORON = 12000) build_path = /obj/item/rig/hazmat + category = list( + RND_CATEGORY_MODSUIT_MODULES + ) /datum/design_techweb/mechfab/modsuit/industrial_controller name = "Industrial Suit Control Module" @@ -45,6 +58,9 @@ id = "industrial_rig_module" materials = list(MAT_PLASTEEL = 14000, MAT_GOLD = 4000, MAT_GRAPHITE = 5000, MAT_OSMIUM = 1000, MAT_PLASTIC = 5000, MAT_STEEL = 10000, MAT_TITANIUM = 2000) build_path = /obj/item/rig/industrial + category = list( + RND_CATEGORY_MODSUIT_MODULES + ) /datum/design_techweb/mechfab/modsuit/hazard_controller name = "Hazard Suit Control Module" @@ -52,6 +68,9 @@ id = "hazard_rig_module" materials = list(MAT_PLASTEEL = 14000, MAT_GOLD = 4000, MAT_GRAPHITE = 5000, MAT_OSMIUM = 1000, MAT_PLASTIC = 5000, MAT_STEEL = 10000, MAT_TITANIUM = 2000) build_path = /obj/item/rig/hazard + category = list( + RND_CATEGORY_MODSUIT_MODULES + ) /datum/design_techweb/mechfab/modsuit/rescue_controller name = "Rescue Suit Control Module" @@ -59,13 +78,20 @@ id = "medical_rig_module" materials = list(MAT_PLASTEEL = 12000, MAT_GOLD = 6000, MAT_GRAPHITE = 3000, MAT_OSMIUM = 4000, MAT_PLASTIC = 10000, MAT_LEAD = 2000) build_path = /obj/item/rig/medical + category = list( + RND_CATEGORY_MODSUIT_MODULES + ) /datum/design_techweb/mechfab/modsuit/zero_controller name = "Zero Suit Control Module" desc = "A very bare bones and stylish suit designed for pilots with advanced holographic interfaces for the task." id = "zero_rig_module" materials = list(MAT_PLASTEEL = 12000, MAT_GOLD = 3000, MAT_GRAPHITE = 3000, MAT_OSMIUM = 1000, MAT_PLASTIC = 5000) - build_path =/obj/item/rig/zero + build_path = /obj/item/rig/zero + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MODSUIT_MODULES + ) ///Modsuit Modules /datum/design_techweb/mechfab/modsuit/modules @@ -231,6 +257,7 @@ materials = list(MAT_PLASTEEL = 1000, MAT_PLASTIC = 500, MAT_PHORON = 500, MAT_GRAPHITE = 100) build_path = /obj/item/rig_module/device/paperdispenser category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SERVICE ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE @@ -243,6 +270,7 @@ materials = list(MAT_PLASTEEL = 1000, MAT_PLASTIC = 500, MAT_PHORON = 500, MAT_GRAPHITE = 100) build_path = /obj/item/rig_module/device/pen category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SERVICE ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE diff --git a/code/modules/research/tg/designs/modular_computer_designs.dm b/code/modules/research/tg/designs/modular_computer_designs.dm index da2561fa9d..53794cbc91 100644 --- a/code/modules/research/tg/designs/modular_computer_designs.dm +++ b/code/modules/research/tg/designs/modular_computer_designs.dm @@ -1,6 +1,7 @@ // Hard drives /datum/design_techweb/modularcomponent + desc = "A component for a modular computer. Used to upgrade and extend the computer's features." build_type = PROTOLATHE category = list( RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS diff --git a/code/modules/research/tg/designs/multi-department_designs.dm b/code/modules/research/tg/designs/multi-department_designs.dm index 7200b1c785..1959799d2e 100644 --- a/code/modules/research/tg/designs/multi-department_designs.dm +++ b/code/modules/research/tg/designs/multi-department_designs.dm @@ -4,6 +4,7 @@ build_type = AUTOLATHE | PROTOLATHE materials = list(MAT_GLASS = 500) category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY, ) build_path = /obj/item/reagent_containers/glass/beaker @@ -15,6 +16,7 @@ build_type = AUTOLATHE | PROTOLATHE materials = list(MAT_GLASS = 1000) category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY, ) build_path = /obj/item/reagent_containers/glass/beaker/large @@ -26,6 +28,7 @@ build_type = AUTOLATHE | PROTOLATHE materials = list(MAT_GLASS = 100) category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_CHEMISTRY, ) build_path = /obj/item/reagent_containers/glass/beaker/vial diff --git a/code/modules/research/tg/designs/prosfab_designs.dm b/code/modules/research/tg/designs/prosfab_designs.dm index dc80674309..4cc31b4d28 100644 --- a/code/modules/research/tg/designs/prosfab_designs.dm +++ b/code/modules/research/tg/designs/prosfab_designs.dm @@ -6,6 +6,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design_techweb/prosfab/pros + desc = "A prosthetic bodypart, requires surgical attachment to a body to function." category = list( RND_CATEGORY_PROSFAB + RND_SUBCATEGORY_PROSFAB_EXTERNAL ) @@ -190,6 +191,7 @@ //////////////////// Cyborg Parts //////////////////// /datum/design_techweb/prosfab/cyborg + desc = "An internal component used to assemble or repair cyborg units. Requires installation in a cyborg to function." category = list( RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_COMPONENTS ) @@ -619,6 +621,7 @@ //////////////////// Cyborg Parts //////////////////// /datum/design_techweb/prosfab/paiparts + desc = "Component parts for a pAI card. Used to repair a broken pAI companion." category = list( RND_CATEGORY_PROSFAB_PAI ) diff --git a/code/modules/research/tg/designs/service_designs.dm b/code/modules/research/tg/designs/service_designs.dm new file mode 100644 index 0000000000..467e8ce42d --- /dev/null +++ b/code/modules/research/tg/designs/service_designs.dm @@ -0,0 +1,305 @@ +/datum/design_techweb/board/atm + SET_CIRCUIT_DESIGN_NAMEDESC("atm") + id = "bankmachine" + build_path = /obj/item/circuitboard/atm + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_CARGO + +/datum/design_techweb/board/fax + SET_CIRCUIT_DESIGN_NAMEDESC("fax machine") + id = "fax" + build_path = /obj/item/circuitboard/fax + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_CARGO + +/datum/design_techweb/board/photocopier + SET_CIRCUIT_DESIGN_NAMEDESC("photocopier") + id = "photocopier" + build_path = /obj/item/circuitboard/photocopier + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_CARGO + +/datum/design_techweb/board/papershredder + SET_CIRCUIT_DESIGN_NAMEDESC("papershredder") + id = "papershredder" + build_path = /obj/item/circuitboard/papershredder + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_CARGO + +/datum/design_techweb/board/guest_pass + SET_CIRCUIT_DESIGN_NAMEDESC("guestpass console") + id = "guestpass" + build_path = /obj/item/circuitboard/guestpass + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/pda_cartridge/janitor + id = "cart_janitor" + build_path = /obj/item/cartridge/janitor + departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE + +/datum/design_techweb/ashtray + name = "ashtray" + desc = "An ashtray." + id = "ashtray" + build_type = PROTOLATHE + materials = list(MAT_STEEL = 250) + build_path = /obj/item/material/ashtray + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/glasstray + name = "glass ashtray" + desc = "An shinier ashtray." + id = "glasstray" + build_type = PROTOLATHE + materials = list(MAT_GLASS = 250) + build_path = /obj/item/material/ashtray/glass + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + + +// glasses +/datum/design_techweb/watercooler_bottle + name = "water-cooler bottle" + desc = "A bottle for a water-cooler." + id = "watercooler_bottle" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_PLASTIC = 2500) + build_path = /obj/item/reagent_containers/glass/cooler_bottle + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/barglass_square + name = "half-pint glass" + desc = "Your standard drinking glass." + id = "barglass_square" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 75) + build_path = /obj/item/reagent_containers/food/drinks/glass2/square + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/barglass_rocks + name = "rocks glass" + desc = "Your standard drinking glass." + id = "barglass_rocks" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 50) + build_path = /obj/item/reagent_containers/food/drinks/glass2/rocks + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/barglass_milkshake + name = "milkshake glass" + desc = "Your standard drinking glass." + id = "barglass_milkshake" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 40) + build_path = /obj/item/reagent_containers/food/drinks/glass2/shake + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/barglass_cocktail + name = "cocktail glass" + desc = "Your standard drinking glass." + id = "barglass_cocktail" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 40) + build_path = /obj/item/reagent_containers/food/drinks/glass2/cocktail + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/barglass_shot + name = "shot glass" + desc = "Your standard drinking glass." + id = "barglass_shot" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 15) + build_path = /obj/item/reagent_containers/food/drinks/glass2/shot + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/barglass_pint + name = "pint glass" + desc = "Your standard drinking glass." + id = "barglass_pint" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 150) + build_path = /obj/item/reagent_containers/food/drinks/glass2/pint + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/barglass_mug + name = "glass mug" + desc = "Your standard drinking glass." + id = "barglass_mug" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 100) + build_path = /obj/item/reagent_containers/food/drinks/glass2/mug + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/barglass_wine + name = "wine glass" + desc = "Your standard drinking glass." + id = "barglass_wine" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 60) + build_path = /obj/item/reagent_containers/food/drinks/glass2/wine + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/barglass_metaglass + name = "metamorphic glass" + desc = "This glass changes shape and form depending on the drink inside... fancy!" + id = "barglass_metaglass" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 625) + build_path = /obj/item/reagent_containers/food/drinks/metaglass + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/barglass_metapint + name = "metamorphic pint glass" + desc = "This glass changes shape and form depending on the drink inside... fancy!" + id = "barglass_metapint" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 625) + build_path = /obj/item/reagent_containers/food/drinks/metaglass/metapint + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/barglass_carafe + name = "glass carafe" + desc = "Your standard drinking glass." + id = "barglass_carafe" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 60) + build_path = /obj/item/reagent_containers/food/drinks/glass2/carafe + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/barglass_pitcher + name = "plastic pitcher" + id = "barglass_pitcher" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_PLASTIC = 60) + build_path = /obj/item/reagent_containers/food/drinks/glass2/pitcher + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/barglass_coffeemug + name = "coffee mug" + id = "barglass_coffeemug" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 50) + build_path = /obj/item/reagent_containers/food/drinks/glass2/coffeemug + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/barglass_jar + name = "glass jar" + desc = "A small empty jar." + id = "barglass_jar" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_GLASS = 250) + build_path = /obj/item/glass_jar + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/idcard + name = "ID Card" + id = "idcard" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 100, MAT_GLASS = 100, MAT_PLASTIC = 300) + build_path = /obj/item/card/id + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_COMMAND + +/datum/design_techweb/cleaver + name = "butcher's cleaver" + desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products." + id = "cleaver" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 800) + build_path = /obj/item/material/knife/butch + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/rollingpin + name = "rolling pin" + desc = "A simple tool for rolling dough flat." + id = "rollingpin" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_WOOD = 1000) + build_path = /obj/item/material/kitchen/rollingpin + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE diff --git a/code/modules/research/tg/designs/stock_part_designs.dm b/code/modules/research/tg/designs/stock_part_designs.dm index 36a961b265..c4b9d5b3d9 100644 --- a/code/modules/research/tg/designs/stock_part_designs.dm +++ b/code/modules/research/tg/designs/stock_part_designs.dm @@ -7,6 +7,7 @@ materials = list(MAT_STEEL = 80) build_path = /obj/item/stock_parts/matter_bin category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 ) lathe_time_factor = 0.2 @@ -76,6 +77,7 @@ materials = list(MAT_STEEL = 30) build_path = /obj/item/stock_parts/manipulator category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 ) lathe_time_factor = 0.2 @@ -145,6 +147,7 @@ materials = list(MAT_STEEL = 50, MAT_GLASS = 50) build_path = /obj/item/stock_parts/capacitor category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 ) lathe_time_factor = 0.2 @@ -214,6 +217,7 @@ materials = list(MAT_STEEL = 50, MAT_GLASS = 20) build_path = /obj/item/stock_parts/scanning_module category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 ) lathe_time_factor = 0.2 @@ -284,6 +288,7 @@ materials = list(MAT_STEEL = 10, MAT_GLASS = 20) build_path = /obj/item/stock_parts/micro_laser category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 ) lathe_time_factor = 0.2 @@ -353,6 +358,7 @@ materials = list(MAT_STEEL = 700, MAT_GLASS = 50) build_path = /obj/item/cell/empty category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 ) departmental_flags = ALL @@ -398,10 +404,11 @@ /datum/design_techweb/device_cell name = "Device Cell" id = "device_cell" - build_type = PROTOLATHE + build_type = PROTOLATHE | AUTOLATHE materials = list(MAT_STEEL = 350, MAT_GLASS = 25) build_path = /obj/item/cell/device/empty category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 ) departmental_flags = ALL @@ -409,10 +416,11 @@ /datum/design_techweb/weapon_cell name = "Weapon Cell" id = "weapon_cell" - build_type = PROTOLATHE + build_type = PROTOLATHE | AUTOLATHE materials = list(MAT_STEEL = 700, MAT_GLASS = 50) build_path = /obj/item/cell/device/weapon/empty category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO @@ -656,3 +664,52 @@ RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_5 ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +//Misc parts +/datum/design_techweb/console_screen + name = "console screen" + build_type = PROTOLATHE | AUTOLATHE + id = "console_screen" + materials = list(MAT_GLASS = 250) + build_path = /obj/item/stock_parts/console_screen + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/motor + name = "motor" + build_type = PROTOLATHE | AUTOLATHE + id = "motor" + materials = list(MAT_STEEL = 75, MAT_GLASS = 15) + build_path = /obj/item/stock_parts/motor + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/gear + name = "gear" + build_type = PROTOLATHE | AUTOLATHE + id = "gear" + materials = list(MAT_STEEL = 65) + build_path = /obj/item/stock_parts/gear + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/spring + name = "spring" + build_type = PROTOLATHE | AUTOLATHE + id = "spring" + materials = list(MAT_STEEL = 50) + build_path = /obj/item/stock_parts/spring + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING diff --git a/code/modules/research/tg/designs/tool_designs.dm b/code/modules/research/tg/designs/tool_designs.dm index 5c9dbf780e..312239cb1b 100644 --- a/code/modules/research/tg/designs/tool_designs.dm +++ b/code/modules/research/tg/designs/tool_designs.dm @@ -1,3 +1,262 @@ +/datum/design_techweb/prybar + name = "prybar" + desc = "A steel bar with a wedge, designed specifically for opening unpowered doors in an emergency." + id = "prybar" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 40) + build_path = /obj/item/tool/prybar + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC + ) + departmental_flags = ALL + +/datum/design_techweb/crowbar + name = "crowbar" + desc = "A steel bar with a wedge, designed specifically for opening unpowered doors in an emergency." + id = "crowbar" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 60) + build_path = /obj/item/tool/crowbar + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/multitool + name = "multitool" + desc = "Used for pulsing wires to test which to cut." + id = "multitool" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 60, MAT_GLASS = 25) + build_path = /obj/item/multitool + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/mini_welding_tool + name = "emergency welding tool" + desc = "A miniature welder used during emergencies." + id = "mini_welding_tool" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 50, MAT_GLASS = 30) + build_path = /obj/item/weldingtool/mini + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/welding_tool + name = "welding tool" + desc = "Used to repair machinery, or cut through plating." + id = "welding_tool" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 90, MAT_GLASS = 40) + build_path = /obj/item/weldingtool + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/large_welding_tool + name = "industrial welding tool" + desc = "A slightly larger welder with a larger tank." + id = "large_welding_tool" + build_type = PROTOLATHE + materials = list(MAT_STEEL = 500, MAT_GLASS = 250) + build_path = /obj/item/weldingtool/largetank + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/screwdriver + name = "screwdriver" + desc = "You can be totally screwwy with this." + id = "screwdriver" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 90) + build_path = /obj/item/tool/screwdriver + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/wirecutters + name = "wirecutters" + desc = "This cuts wires." + id = "wirecutters" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 100) + build_path = /obj/item/tool/wirecutters + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/wrench + name = "wrench" + desc = "A wrench with many common uses." + id = "wrench" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 200) + build_path = /obj/item/tool/wrench + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/minihoe + name = "mini hoe" + desc = "It's used for removing weeds or scratching your back." + id = "spade" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 625) + build_path = /obj/item/material/minihoe + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_BOTANY + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/extinguisher + name = "fire extinguisher" + desc = "A traditional red fire extinguisher." + id = "fire_extinguisher" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 120) + build_path = /obj/item/extinguisher + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC + ) + departmental_flags = ALL + +/datum/design_techweb/bounced_radio + name = "station bounced radio" + desc = "Used to talk to people when headsets don't function. Range is limited." + id = "bounced_radio" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 90, MAT_GLASS = 30) + build_path = /obj/item/radio/off + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC + ) + departmental_flags = ALL + +/datum/design_techweb/destination_tagger + name = "destination tagger" + desc = "Used to set the destination of properly wrapped packages." + id = "desttagger" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 250, MAT_GLASS = 125) + build_path = /obj/item/destTagger + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO + +/datum/design_techweb/flashlight + name = "flashlight" + desc = "A hand-held emergency light." + id = "flashlight" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 60, MAT_GLASS = 25) + build_path = /obj/item/flashlight + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC + ) + departmental_flags = ALL + +/datum/design_techweb/maglight + name = "maglight" + desc = "A very, very heavy duty flashlight." + id = "maglight" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 250, MAT_GLASS = 60) + build_path = /obj/item/flashlight/maglight + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC + ) + departmental_flags = ALL + +/datum/design_techweb/taperecorder + name = "tape recorder" + desc = "A device that can record to cassette tapes, and play them. It automatically translates the content in playback." + id = "taperecorder" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 75, MAT_GLASS = 40) + build_path = /obj/item/taperecorder + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC + ) + departmental_flags = ALL + +/datum/design_techweb/recordingtape + name = "recorder cassette tape" + desc = "A magnetic tape that can hold up to ten minutes of content." + id = "recordingcassette" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 25, MAT_GLASS = 15) + build_path = /obj/item/rectape/random + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC + ) + departmental_flags = ALL + +/datum/design_techweb/hatchet + name = "hatchet" + desc = "A very sharp axe blade upon a short fibremetal handle. It has a long history of chopping things, but now it is used for chopping wood." + id = "hatchet" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_PLASTEEL = 500) + build_path = /obj/item/material/knife/machete/hatchet + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_BOTANY + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/bucket + name = "bucket" + desc = "It's a bucket." + id = "bucket" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 200) + build_path = /obj/item/reagent_containers/glass/bucket + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/mop + name = "mop" + desc = "The world of janitalia wouldn't be complete without a mop." + id = "mop" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 250) + build_path = /obj/item/mop + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + /datum/design_techweb/advmop name = "advanced mop" desc = "An advanced mop with pressured water jets that break away the toughest stains." @@ -26,8 +285,8 @@ name = "spray bottle" desc = "A spray bottle, with an unscrewable top." id = "spraybottle" - build_type = PROTOLATHE - materials = list(MAT_STEEL = 300, MAT_GLASS = 300) + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_PLASTIC = 2000) build_path = /obj/item/reagent_containers/spray category = list( RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL @@ -38,7 +297,7 @@ name = "mechanical trap" desc = "A mechanically activated leg trap. Low-tech, but reliable. Looks like it could really hurt if you set it off." id = "beartrap" - build_type = PROTOLATHE + build_type = AUTOLATHE | PROTOLATHE materials = list(MAT_STEEL = 18750) build_path = /obj/item/beartrap category = list( @@ -88,7 +347,7 @@ name = "Rapid Pipe Dispenser" desc = "A counterpart to the rapid construction device that allows creating and placing atmospheric and disposal pipes." id = "rapidpipedispenser" - build_type = PROTOLATHE + build_type = AUTOLATHE | PROTOLATHE // req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 2) materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000) build_path = /obj/item/pipe_dispenser @@ -328,198 +587,6 @@ RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE -// Surgical devices -/datum/design_techweb/scalpel_laser1 - name = "Basic Laser Scalpel" - desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks basic and could be improved." - id = "scalpel_laser1" - build_type = PROTOLATHE - // req_tech = list(TECH_BIO = 2, TECH_MATERIAL = 2, TECH_MAGNET = 2) - materials = list(MAT_STEEL = 12500, MAT_GLASS = 7500) - build_path = /obj/item/surgical/scalpel/laser1 - category = list( - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL - ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/scalpel_laser2 - name = "Improved Laser Scalpel" - desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks somewhat advanced." - id = "scalpel_laser2" - build_type = PROTOLATHE - // req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 4, TECH_MAGNET = 4) - materials = list(MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 2500) - build_path = /obj/item/surgical/scalpel/laser2 - category = list( - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL - ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/scalpel_laser3 - name = "Advanced Laser Scalpel" - desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks to be the pinnacle of precision energy cutlery!" - id = "scalpel_laser3" - build_type = PROTOLATHE - // req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 6, TECH_MAGNET = 5) - materials = list(MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 2000, MAT_GOLD = 1500) - build_path = /obj/item/surgical/scalpel/laser3 - category = list( - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL - ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/scalpel_manager - name = "Incision Management System" - desc = "A true extension of the surgeon's body, this marvel instantly and completely prepares an incision allowing for the immediate commencement of therapeutic steps." - id = "scalpel_manager" - build_type = PROTOLATHE - // req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 7, TECH_MAGNET = 5, TECH_DATA = 4) - materials = list (MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_DIAMOND = 750) - build_path = /obj/item/surgical/scalpel/manager - category = list( - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL - ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/saw_manager - name = "Energetic Bone Diverter" - desc = "A strange development following the I.M.S., this heavy tool can split and open, or close and shut, intentional holes in bones." - id = "advanced_saw" - build_type = PROTOLATHE - // req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_DATA = 5) - materials = list (MAT_STEEL = 12500, MAT_PLASTIC = 800, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_OSMIUM = 1000) - build_path = /obj/item/surgical/circular_saw/manager - category = list( - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL - ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/organ_ripper - name = "Organ Ripper" - desc = "A modern and horrifying take on an ancient practice, this tool is capable of rapidly removing an organ from a hopefully willing patient, without damaging it." - id = "organ_ripper" - build_type = PROTOLATHE - // req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 5, TECH_MAGNET = 4, TECH_ILLEGAL = 3) - materials = list (MAT_STEEL = 12500, MAT_PLASTIC = 8000, MAT_OSMIUM = 2500) - build_path = /obj/item/surgical/scalpel/ripper - category = list( - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL - ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/bone_clamp - name = "Bone Clamp" - desc = "A miracle of modern science, this tool rapidly knits together bone, without the need for bone gel." - id = "bone_clamp" - build_type = PROTOLATHE - // req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 5, TECH_MAGNET = 4, TECH_DATA = 4) - materials = list (MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 2500) - build_path = /obj/item/surgical/bone_clamp - category = list( - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL - ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/medical_analyzer - name = "health analyzer" - desc = "A hand-held body scanner able to distinguish vital signs of the subject." - id = "medical_analyzer" - build_type = PROTOLATHE - // req_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) - materials = list(MAT_STEEL = 500, MAT_GLASS = 500) - build_path = /obj/item/healthanalyzer - category = list( - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL - ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/improved_analyzer - name = "improved health analyzer" - desc = "A prototype version of the regular health analyzer, able to distinguish the location of more serious injuries as well as accurately determine radiation levels." - id = "improved_analyzer" - build_type = PROTOLATHE - // req_tech = list(TECH_MAGNET = 5, TECH_BIO = 6) - materials = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_SILVER = 1000, MAT_GOLD = 1500) - build_path = /obj/item/healthanalyzer/improved - category = list( - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL - ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/advanced_analyzer - name = "advanced health analyzer" - desc = "An even more advanced handheld health scanner, complete with a full biosign monitor and on-board radiation and neurological analysis suites." - id = "advanced_analyzer" - build_type = PROTOLATHE - // req_tech = list(TECH_MAGNET = 7, TECH_BIO = 7, TECH_DATA = 5) - materials = list(MAT_STEEL = 2000, MAT_GLASS = 4000, MAT_SILVER = 3500, MAT_GOLD = 2500, MAT_DIAMOND = 1250) - build_path = /obj/item/healthanalyzer/advanced - category = list( - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL - ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/phasic_analyzer - name = "phasic health analyzer" - desc = "State of the art handheld health scanner, containing not only a full biosign monitor, on-board radiation, and neurological analysis suites, but also a chemical-analysis suite." - id = "phasic_analyzer" - build_type = PROTOLATHE - materials = list(MAT_STEEL = 2000, MAT_GLASS = 4000, MAT_SILVER = 3500, MAT_GOLD = 2500, MAT_DIAMOND = 2500, MAT_PHORON = 1250) - build_path = /obj/item/healthanalyzer/phasic - category = list( - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL - ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/gene_scanner - name = "Gene Scanner" - id = "gene_scanner" - build_type = PROTOLATHE - // req_tech = list(TECH_DATA = 1, TECH_BIO = 2) - materials = list(MAT_STEEL = 30, MAT_GLASS = 20) - build_path = /obj/item/gene_scanner - category = list( - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL - ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/advanced_roller - name = "advanced roller bed" - desc = "A more advanced version of the regular roller bed, with inbuilt surgical stabilisers and an improved folding system." - id = "roller_bed" - build_type = PROTOLATHE - // req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 3, TECH_MAGNET = 3) - materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_PHORON = 2000) - build_path = /obj/item/roller/adv - category = list( - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL - ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/sleevemate - name = "SleeveMate 3700" - id = "sleevemate" - build_type = PROTOLATHE - // req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_BIO = 2) - materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000) - build_path = /obj/item/sleevemate - category = list( - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL - ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/protohypospray - name = "prototype hypospray" - desc = "This prototype hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients." - id = "protohypospray" - build_type = PROTOLATHE - // req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_POWER = 2, TECH_BIO = 4, TECH_ILLEGAL = 2) - materials = list(MAT_STEEL = 500, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 1500, MAT_URANIUM = 1000) - build_path = /obj/item/reagent_containers/hypospray/science - category = list( - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL - ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE // Mining digging devices /datum/design_techweb/drill @@ -896,7 +963,7 @@ build_path = /obj/item/mail_scanner build_type = PROTOLATHE category = list( - RND_CATEGORY_TOOLS + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_CARGO ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO @@ -907,7 +974,7 @@ build_path = /obj/item/holosign_creator/combifan build_type = PROTOLATHE category = list( - RND_CATEGORY_TOOLS + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ATMOSPHERICS ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING @@ -942,10 +1009,211 @@ build_path = /obj/item/holosign_creator/medical build_type = PROTOLATHE category = list( - RND_CATEGORY_TOOLS + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_MEDICAL +/datum/design_techweb/handcuffs + name = "handcuffs" + desc = "Use this to keep prisoners in line." + id = "handcuffs" + materials = list(MAT_STEEL = 625) + build_path = /obj/item/handcuffs + build_type = AUTOLATHE | PROTOLATHE + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SECURITY + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY + +/datum/design_techweb/legcuffs + name = "legcuffs" + desc = "Use this to keep prisoners in line." + id = "legcuffs" + materials = list(MAT_STEEL = 625) + build_path = /obj/item/handcuffs/legcuffs + build_type = AUTOLATHE | PROTOLATHE + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SECURITY + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY + +/datum/design_techweb/legcuffs_fuzzy + name = "fuzzy legcuffs" + desc = "Use this to keep... 'prisoners' in line." + id = "legcuffs_fuzzy" + materials = list(MAT_STEEL = 625) + build_path = /obj/item/handcuffs/legcuffs/fuzzy + build_type = AUTOLATHE | PROTOLATHE + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SECURITY + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY + +/datum/design_techweb/kitchen_knife + name = "kitchen knife" + desc = "A general purpose " + JOB_CHEF + "'s knife." + id = "kitchen_knife" + materials = list(MAT_STEEL = 375) + build_path = /obj/item/material/knife + build_type = AUTOLATHE | PROTOLATHE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/fork + name = "fork" + desc = "It's a fork. Sure is pointy." + id = "fork" + materials = list(MAT_STEEL = 75) + build_path = /obj/item/material/kitchen/utensil/fork + build_type = AUTOLATHE | PROTOLATHE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/spoon + name = "spoon" + desc = "It's a spoon." + id = "spoon" + materials = list(MAT_STEEL = 75) + build_path = /obj/item/material/kitchen/utensil/spoon + build_type = AUTOLATHE | PROTOLATHE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/plastic_knife + name = "plastic knife" + desc = "A simple plastic knife." + id = "plastic_knife" + materials = list(MAT_PLASTIC = 75) + build_path = /obj/item/material/knife/plastic + build_type = AUTOLATHE | PROTOLATHE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/plastic_fork + name = "plastic fork" + desc = "It's a plastic fork. Sure is pointy." + id = "plastic_fork" + materials = list(MAT_PLASTIC = 75) + build_path = /obj/item/material/kitchen/utensil/fork/plastic + build_type = AUTOLATHE | PROTOLATHE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/plastic_spoon + name = "plastic spoon" + desc = "It's a plastic spoon." + id = "plastic_spoon" + materials = list(MAT_PLASTIC = 75) + build_path = /obj/item/material/kitchen/utensil/spoon/plastic + build_type = AUTOLATHE | PROTOLATHE + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/barbedwire + name = "barbedwire" + desc = "A coil of wire." + id = "barbedwire" + materials = list(MAT_STEEL = 10000) + build_path = /obj/item/material/barbedwire + build_type = AUTOLATHE | PROTOLATHE + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/snarewire + name = "snare wire" + desc = "A coil of plastic snares." + id = "snarewire" + materials = list(MAT_PLASTIC = 10000) + build_path = /obj/item/material/barbedwire/plastic + build_type = AUTOLATHE | PROTOLATHE + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/rcd_loaded + name = "rapid construction device" + desc = "A device used to rapidly build and deconstruct. Reload with compressed matter cartridges." + id = "rcd_loaded" + materials = list(MAT_STEEL = 62500) + build_path = /obj/item/rcd + build_type = AUTOLATHE | PROTOLATHE + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/rcd_ammo + name = "compressed matter cartridge" + desc = "Highly compressed matter for the RCD." + id = "rcd_ammo" + materials = list(MAT_STEEL = 30000, MAT_GLASS = 15000) + build_path = /obj/item/rcd_ammo + build_type = AUTOLATHE | PROTOLATHE + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/rsf + name = "Rapid-Service-Fabricator" + desc = "A device used to rapidly deploy service items." + id = "rsf" + materials = list(MAT_STEEL = 31250) + build_path = /obj/item/rsf + build_type = AUTOLATHE | PROTOLATHE + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + +/datum/design_techweb/rms + name = "Rapid Material Synthesizer" + desc = "A device used to rapidly synthesize materials." + id = "rms" + materials = list(MAT_STEEL = 62500, MAT_GLASS = 15000) + build_path = /obj/item/rms + build_type = AUTOLATHE | PROTOLATHE + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/electric_welding_tool + name = "electric welding tool" + desc = "A welder which runs off of electricity." + id = "electric_welding_tool" + build_type = AUTOLATHE | PROTOLATHE + materials = list(MAT_STEEL = 90, MAT_GLASS = 40) + build_path = /obj/item/weldingtool/electric/unloaded + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + /datum/design_techweb/marker_beacon name = "Marker Beacons" desc = "Prismatic path illumination devices. Used by explorers and miners to mark paths and warn of danger." @@ -997,11 +1265,12 @@ /datum/design_techweb/shovel name = "Shovel" id = "shovel" - materials = list(MAT_STEEL = 50) + materials = list(MAT_STEEL = 4000) build_path = /obj/item/shovel build_type = PROTOLATHE | AUTOLATHE category = list( - RND_CATEGORY_TOOLS + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO @@ -1012,7 +1281,8 @@ build_path = /obj/item/ice_pick build_type = PROTOLATHE | AUTOLATHE category = list( - RND_CATEGORY_TOOLS + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO diff --git a/code/modules/research/tg/designs/weapon_designs.dm b/code/modules/research/tg/designs/weapon_designs.dm index 0ce0a98c5c..b1dfaa69e6 100644 --- a/code/modules/research/tg/designs/weapon_designs.dm +++ b/code/modules/research/tg/designs/weapon_designs.dm @@ -179,46 +179,6 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE -// Ballistic ammo -/datum/design_techweb/ammo_9mmAdvanced - name = "9mm magazine" - id = "ammo_9mm" - desc = "A 21 round magazine for an advanced 9mm SMG." - // req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3) - build_type = PROTOLATHE - materials = list(MAT_STEEL = 3750, MAT_SILVER = 100) // Requires silver for proprietary magazines! Or something. - build_path = /obj/item/ammo_magazine/m9mmAdvanced - category = list( - RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO - ) - departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/stunshell - name = "stun shells" - desc = "A stunning shell for a shotgun." - id = "stunshell" - // req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3) - build_type = PROTOLATHE - materials = list(MAT_STEEL = 4000) - build_path = /obj/item/ammo_magazine/ammo_box/b12g/stunshell - category = list( - RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO - ) - departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design_techweb/empshell - name = "emp shells" - desc = "An electromagnetic shell for a shotgun." - id = "empshell" - // req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 3) - build_type = PROTOLATHE - materials = list(MAT_STEEL = 4000, MAT_URANIUM = 1000) - build_path = /obj/item/ammo_magazine/ammo_box/b12g/emp - category = list( - RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO - ) - departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE - // Other weapons /datum/design_techweb/rapidsyringe name = "Rapid Syringe Gun" @@ -251,9 +211,10 @@ id = "chemsprayer" // req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_BIO = 2) build_type = PROTOLATHE - materials = list(MAT_STEEL = 5000, MAT_GLASS = 1000) + materials = list(MAT_STEEL = 5000, MAT_STEEL = 2000) build_path = /obj/item/reagent_containers/spray/chemsprayer category = list( + RND_CATEGORY_HACKED, RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE @@ -960,7 +921,6 @@ id = "riflescope" // req_tech = list(TECH_ILLEGAL = 2, TECH_MATERIAL = 2) build_type = PROTOLATHE - build_type = PROTOLATHE materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000) build_path = /obj/item/binoculars/scope category = list( @@ -973,7 +933,6 @@ id = "slimebaton" // req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2, TECH_POWER = 3, TECH_COMBAT = 3) build_type = PROTOLATHE - build_type = PROTOLATHE materials = list(MAT_STEEL = 5000) build_path = /obj/item/melee/baton/slime category = list( @@ -986,7 +945,6 @@ id = "slimetaser" // req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 3, TECH_POWER = 4, TECH_COMBAT = 4) build_type = PROTOLATHE - build_type = PROTOLATHE materials = list(MAT_STEEL = 5000) build_path = /obj/item/gun/energy/taser/xeno category = list( @@ -1000,7 +958,6 @@ id = "monkey_gun" // req_tech = list(TECH_BIO = 6, TECH_BLUESPACE = 5) build_type = PROTOLATHE - build_type = PROTOLATHE materials = list(MAT_STEEL = 3500, MAT_GLASS = 3500, MAT_PHORON = 1500, MAT_DIAMOND = 1500) build_path = /obj/item/xenobio/monkey_gun category = list( @@ -1008,6 +965,135 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE +/datum/design_techweb/knuckledusters + name = "knuckle dusters" + desc = "A pair of brass knuckles. Generally used to enhance the user's punches." + id = "knuckledusters" + build_type = AUTOLATHE + materials = list(MAT_STEEL = 625) + build_path = /obj/item/clothing/accessory/knuckledusters + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_INITIAL, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_MELEE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY + +/datum/design_techweb/tacknife + name = "tactical knife" + desc = "A steel knife made for combat." + id = "tacknife" + build_type = AUTOLATHE + materials = list(MAT_STEEL = 800) + build_path = /obj/item/material/knife/tacknife + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_INITIAL, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_MELEE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY + +/* Unbalanced material weapons +/datum/design_techweb/claymore + name = "claymore" + desc = "A very large sword." + id = "claymore" + build_type = AUTOLATHE + materials = list(MAT_STEEL = 10000) + build_path = /obj/item/material/sword + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_INITIAL, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_MELEE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY + +/datum/design_techweb/gladius + name = "gladius" + desc = "An ancient short sword, designed to stab and cut." + id = "gladius" + build_type = AUTOLATHE + materials = list(MAT_STEEL = 5000) + build_path = /obj/item/material/sword/gladius + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_INITIAL, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_MELEE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY + +/datum/design_techweb/katana + name = "katana" + desc = "An ancient short sword, designed to slice and dice." + id = "katana" + build_type = AUTOLATHE + materials = list(MAT_STEEL = 6000) + build_path = /obj/item/material/sword/katana + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_INITIAL, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_MELEE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY + +/datum/design_techweb/rapier + name = "rapier" + desc = "A slender, fancy and sharply pointed sword." + id = "rapier" + build_type = AUTOLATHE + materials = list(MAT_STEEL = 6000) + build_path = /obj/item/material/sword/rapier + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_INITIAL, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_MELEE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY + +/datum/design_techweb/sabre + name = "sabre" + desc = "A sharp curved sword, a favored weapon of pirates far in the past." + id = "sabre" + build_type = AUTOLATHE + materials = list(MAT_STEEL = 7400) + build_path = /obj/item/material/sword/sabre + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_INITIAL, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_MELEE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY + +/datum/design_techweb/longsword + name = "longsword" + desc = "a more elegant weapon from a more civilised age" + id = "longsword" + build_type = AUTOLATHE + materials = list(MAT_STEEL = 8000) + build_path = /obj/item/material/twohanded/longsword + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_INITIAL, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_MELEE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY + +// has no wielded sprite +/datum/design_techweb/battleaxe + name = "battleaxe" + desc = "A one handed battle axe, still a deadly weapon." + id = "battleaxe" + build_type = AUTOLATHE + materials = list(MAT_STEEL = 7000) + build_path = /obj/item/material/sword/battleaxe + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_INITIAL, + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_MELEE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY +*/ + /datum/design_techweb/anomaly_gun name = "Handheld Anomalous Particle Releaser" id = "anom_gun" diff --git a/code/modules/research/tg/experisci/experiment/instances/destructive.dm b/code/modules/research/tg/experisci/experiment/instances/destructive.dm index af08ca9e1b..8fa77962d6 100644 --- a/code/modules/research/tg/experisci/experiment/instances/destructive.dm +++ b/code/modules/research/tg/experisci/experiment/instances/destructive.dm @@ -27,4 +27,42 @@ return EXPERIMENT_PROG_INT("Destroy bluespace crystal.", \ traits & EXPERIMENT_TRAIT_DESTRUCTIVE ? scanned[target] : seen_instances.len, required_atoms[target]) +/// Mech parts to start off robotics +/datum/experiment/scanning/random/destruct_ripley_parts + name = "Mechatronics Part Analysis" + description = "Destructively analyze one of several basic mechatronics parts." + possible_types = list( + /obj/item/circuitboard/mecha/ripley/main = 1, + /obj/item/circuitboard/mecha/ripley/peripherals = 1, + /obj/item/mecha_parts/chassis/ripley = 1, + /obj/item/mecha_parts/part/ripley_torso = 1, + /obj/item/mecha_parts/part/ripley_left_arm = 1, + /obj/item/mecha_parts/part/ripley_right_arm = 1, + /obj/item/mecha_parts/part/ripley_left_leg = 1, + /obj/item/mecha_parts/part/ripley_right_leg = 1 + ) + total_requirement = 2 + allowed_experimentors = DESTRUCTIVE_DEVICES + traits = EXPERIMENT_TRAIT_DESTRUCTIVE + exp_tag = EXPERIMENT_TAG_PHYSICAL + +/datum/experiment/scanning/random/destruct_ripley_parts/serialize_progress_stage(atom/target, list/seen_instances) + return EXPERIMENT_PROG_INT("Destroy basic mechatronics components.", \ + traits & EXPERIMENT_TRAIT_DESTRUCTIVE ? scanned[target] : seen_instances.len, required_atoms[target]) + +/// Basic circuitboard +/datum/experiment/scanning/destruct_circuitboard + name = "Circuitboard Analysis" + description = "Destructively analyze some basic circuitry to assist in planning your own complex assemblies." + required_atoms = list( + /obj/item/circuitboard = 1 + ) + allowed_experimentors = DESTRUCTIVE_DEVICES + traits = EXPERIMENT_TRAIT_DESTRUCTIVE + exp_tag = EXPERIMENT_TAG_PHYSICAL + +/datum/experiment/scanning/destruct_circuitboard/serialize_progress_stage(atom/target, list/seen_instances) + return EXPERIMENT_PROG_INT("Destroy a circuitboard.", \ + traits & EXPERIMENT_TRAIT_DESTRUCTIVE ? scanned[target] : seen_instances.len, required_atoms[target]) + #undef DESTRUCTIVE_DEVICES diff --git a/code/modules/research/tg/machinery/_production.dm b/code/modules/research/tg/machinery/_production.dm index f927be85c3..9f74967d2e 100644 --- a/code/modules/research/tg/machinery/_production.dm +++ b/code/modules/research/tg/machinery/_production.dm @@ -210,13 +210,6 @@ get_asset_datum(/datum/asset/spritesheet_batched/research_designs) ) -/obj/machinery/rnd/production/attack_hand(mob/user) - . = ..() - if(.) - return - - tgui_interact(user) - /obj/machinery/rnd/production/tgui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) @@ -235,6 +228,8 @@ for(var/datum/design_techweb/design in cached_designs) if(!(isnull(allowed_department_flags) || (design.departmental_flags & allowed_department_flags))) continue + if(!hacked && (RND_CATEGORY_HACKED in design.category)) + continue var/cost = list() @@ -242,14 +237,15 @@ for(var/mat_id in design.materials) cost[mat_id] = OPTIMAL_COST(design.materials[mat_id] * coefficient) - var/icon_size = spritesheet.icon_size_id(design.id) + var/css_id = sanitize_css_class_name(design.id) + var/size = spritesheet.icon_size_id(css_id) designs[design.id] = list( "name" = design.name, "desc" = design.get_description(), "cost" = cost, "id" = design.id, "categories" = design.category, - "icon" = "[icon_size == size32x32 ? "" : "[icon_size] "][design.id]" + "icon" = "[size == size32x32 ? "" : "[size] "][css_id]" ) data["designs"] = designs diff --git a/code/modules/research/tg/machinery/circuit_imprinter.dm b/code/modules/research/tg/machinery/circuit_imprinter.dm index d6c455fbef..0b86f1e941 100644 --- a/code/modules/research/tg/machinery/circuit_imprinter.dm +++ b/code/modules/research/tg/machinery/circuit_imprinter.dm @@ -6,6 +6,10 @@ circuit = /obj/item/circuitboard/circuit_imprinter allowed_buildtypes = IMPRINTER +/obj/machinery/rnd/production/circuit_imprinter/Initialize(mapload) + . = ..() + wires = new /datum/wires/circuit_imprinter(src) + /obj/machinery/rnd/production/circuit_imprinter/compute_efficiency() var/rating = 0 for(var/obj/item/stock_parts/manipulator/manip in component_parts) diff --git a/code/modules/research/tg/machinery/mech_fabricator.dm b/code/modules/research/tg/machinery/mech_fabricator.dm index 6cae6bbfb9..c264643e6d 100644 --- a/code/modules/research/tg/machinery/mech_fabricator.dm +++ b/code/modules/research/tg/machinery/mech_fabricator.dm @@ -406,14 +406,15 @@ for(var/mat_id in materials) cost[mat_id] = OPTIMAL_COST(materials[mat_id] * component_coeff) - var/icon_size = spritesheet.icon_size_id(design.id) + var/css_id = sanitize_css_class_name(design.id) + var/size = spritesheet.icon_size_id(css_id) designs[design.id] = list( "name" = design.name, "desc" = design.get_description(), "cost" = cost, "id" = design.id, "categories" = design.category, - "icon" = "[icon_size == size32x32 ? "" : "[icon_size] "][design.id]", + "icon" = "[size == size32x32 ? "" : "[size] "][css_id]", "constructionTime" = get_construction_time_w_coeff(design.construction_time) ) diff --git a/code/modules/research/tg/machinery/protolathe.dm b/code/modules/research/tg/machinery/protolathe.dm index 18dc10fcf6..0a2312573e 100644 --- a/code/modules/research/tg/machinery/protolathe.dm +++ b/code/modules/research/tg/machinery/protolathe.dm @@ -5,3 +5,7 @@ circuit = /obj/item/circuitboard/machine/protolathe production_animation = "protolathe_n" allowed_buildtypes = PROTOLATHE + +/obj/machinery/rnd/production/protolathe/Initialize(mapload) + . = ..() + wires = new /datum/wires/protolathe(src) diff --git a/code/modules/research/tg/rdconsole.dm b/code/modules/research/tg/rdconsole.dm index f6072a9846..51e6180fd8 100644 --- a/code/modules/research/tg/rdconsole.dm +++ b/code/modules/research/tg/rdconsole.dm @@ -283,10 +283,11 @@ Nothing else in the console has ID requirements. for (var/design_id in SSresearch.techweb_designs) var/datum/design_techweb/design = SSresearch.techweb_designs[design_id] || SSresearch.error_design var/compressed_id = "[compress_id(design.id)]" - var/size = spritesheet.icon_size_id(design.id) + var/css_id = sanitize_css_class_name(design.id) + var/size = spritesheet.icon_size_id(css_id) design_cache[compressed_id] = list( design.name, - "[size == size32x32 ? "" : "[size] "][design.id]" + "[size == size32x32 ? "" : "[size] "][css_id]" ) // Ensure id cache is included for decompression diff --git a/code/modules/research/tg/rdmachines.dm b/code/modules/research/tg/rdmachines.dm index 433c69d31b..01a54f9cfb 100644 --- a/code/modules/research/tg/rdmachines.dm +++ b/code/modules/research/tg/rdmachines.dm @@ -15,6 +15,8 @@ var/datum/techweb/stored_research ///The item loaded inside the machine, used by experimentors and destructive analyzers only. var/datum/weakref/loaded_item + /// Wires for hacking, not every rnd machine has this set + var/datum/wires/protolathe/wires = null /obj/machinery/rnd/Initialize(mapload) . = ..() @@ -27,6 +29,12 @@ if(stored_research) log_research("[src] disconnected from techweb [stored_research] (destroyed).") stored_research = null + QDEL_NULL(wires) + return ..() + +/obj/machinery/rnd/tgui_status(mob/user) + if(disabled) + return STATUS_CLOSE return ..() ///Called when attempting to connect the machine to a techweb, forgetting the old. @@ -45,10 +53,22 @@ /obj/machinery/rnd/proc/reset_busy() busy = FALSE +/obj/machinery/rnd/attack_hand(mob/user) + . = ..() + if(.) + return + if(wires && panel_open) + return wires.Interact(user) + if(disabled) + return + tgui_interact(user) + /obj/machinery/rnd/attackby(obj/item/W, mob/user, attack_modifier, click_parameters) add_fingerprint(user) if(default_deconstruction_screwdriver(user, W)) + if(wires && panel_open) + wires.Interact(user) return if(default_deconstruction_crowbar(user, W)) return diff --git a/code/modules/research/tg/techwebs/nodes/atmos_nodes.dm b/code/modules/research/tg/techwebs/nodes/atmos_nodes.dm index ee4d5c8663..0722c2a901 100644 --- a/code/modules/research/tg/techwebs/nodes/atmos_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/atmos_nodes.dm @@ -11,18 +11,20 @@ "tank_management", "shutoff_monitor", // "thermomachine", - // "space_heater", + "space_heater", // "scrubber", // "generic_tank", // "oxygen_tank", // "plasma_tank", // "plasmaman_tank_belt", // "plasmarefiller", - // "extinguisher", + "fire_extinguisher", // "pocketfireextinguisher", // "gas_filter", // "plasmaman_gas_filter", // "pipe_painter", + "atmoscontrol", + "area_atmos", ) /datum/techweb_node/gas_compression @@ -48,7 +50,7 @@ // "turbine_stator", // "atmos_thermal", // "pneumatic_seal", - // "large_welding_tool", + "large_welding_tool", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) announce_channels = list(CHANNEL_ENGINEERING) @@ -83,10 +85,8 @@ "gyrotron_control", "fusion_core", "fusion_injector", - "rapidpipedispenser", // "adv_fire_extinguisher", // "bolter_wrench", - // "rpd_loaded", // "engine_goggles", // "crystallizer", ) diff --git a/code/modules/research/tg/techwebs/nodes/biology_nodes.dm b/code/modules/research/tg/techwebs/nodes/biology_nodes.dm index d445e296cf..7ef4dcbd97 100644 --- a/code/modules/research/tg/techwebs/nodes/biology_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/biology_nodes.dm @@ -8,7 +8,7 @@ // "healthanalyzer", // "autopsyscanner", // "genescanner", - // "medical_kiosk", + "medical_kiosk", // "chem_master", // "ph_meter", // "scigoggles", @@ -88,10 +88,10 @@ "plant_analyzer", // "seed_extractor", // "watering_can", - // "spade", + "spade", // "cultivator", // "secateurs", - // "hatchet", + "hatchet", ) /datum/techweb_node/hydroponics diff --git a/code/modules/research/tg/techwebs/nodes/circuit_nodes.dm b/code/modules/research/tg/techwebs/nodes/circuit_nodes.dm index 928c8acba1..db33fc96eb 100644 --- a/code/modules/research/tg/techwebs/nodes/circuit_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/circuit_nodes.dm @@ -1,6 +1,5 @@ /datum/techweb_node/programming id = TECHWEB_NODE_PROGRAMMING - starting_node = TRUE display_name = "Programming" description = "Dedicate an entire shift to program a fridge to greet you when opened." prereq_ids = list(TECHWEB_NODE_ROBOTICS) @@ -14,6 +13,9 @@ "assembly-device", "circuit-bug", ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) + discount_experiments = list(/datum/experiment/scanning/destruct_circuitboard = TECHWEB_TIER_1_POINTS) + announce_channels = list(CHANNEL_SCIENCE) /datum/techweb_node/circuit_shells id = TECHWEB_NODE_CIRCUIT_SHELLS @@ -23,7 +25,7 @@ design_ids = list( "assembly-implant", "ic_printer_upgrade_adv", - "ic_printer_upgrade_clone", + "ic_printer_upgrade_clone" ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) announce_channels = list(CHANNEL_SCIENCE) diff --git a/code/modules/research/tg/techwebs/nodes/cyborg_nodes.dm b/code/modules/research/tg/techwebs/nodes/cyborg_nodes.dm index 31566a684d..fb7c9aef3b 100644 --- a/code/modules/research/tg/techwebs/nodes/cyborg_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/cyborg_nodes.dm @@ -1,7 +1,6 @@ /datum/techweb_node/augmentation id = TECHWEB_NODE_AUGMENTATION - starting_node = TRUE display_name = "Augmentation" description = "For those who prefer shiny metal over squishy flesh." prereq_ids = list(TECHWEB_NODE_ROBOTICS) @@ -50,6 +49,7 @@ "platform_armour", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) + announce_channels = list(CHANNEL_SCIENCE) /datum/techweb_node/cybernetics id = TECHWEB_NODE_CYBERNETICS @@ -90,7 +90,6 @@ "borg_language_module", "borg_taser_module", "sflash", - // "cyborgrecharger", // "advanced_l_arm", // "advanced_r_arm", // "advanced_l_leg", @@ -247,6 +246,7 @@ design_ids = list( "prot_orch", "prot_refact", + "protean_reconstitutor", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_5_POINTS) announce_channels = list(CHANNEL_SCIENCE, CHANNEL_MEDICAL) diff --git a/code/modules/research/tg/techwebs/nodes/engi_nodes.dm b/code/modules/research/tg/techwebs/nodes/engi_nodes.dm index 41ef001392..956223d976 100644 --- a/code/modules/research/tg/techwebs/nodes/engi_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/engi_nodes.dm @@ -11,22 +11,24 @@ "basic_micro_laser", "micro_manipulator", "basic_cell", - "high_cell", "device_cell", "weapon_cell", - "high_mech_cell", "potato_cell", "smes_magnetic_coil", // "basic_scanning", // "condenser", - // "igniter", - // "infrared_emitter", - // "prox_sensor", - // "signaler", - // "timer", + "igniter", + "infrared_emitter", + "prox_sensor", + "signaler", + "timer", // "voice_analyzer", // "health_sensor", // "sflash", + "console_screen", + "motor", + "gear", + "spring" ) /datum/techweb_node/parts_upg @@ -40,8 +42,8 @@ "adv_capacitor", "adv_sensor", "high_micro_laser", - "super_cell", - "super_mech_cell", + "high_cell", + "high_mech_cell", "rped", "smes_cap_basic", "smes_trans_basic", @@ -60,9 +62,9 @@ "super_capacitor", "phasic_sensor", "ultra_micro_laser", - "hyper_cell", + "super_cell", + "super_mech_cell", "super_device", - "hyper_device", "arped", "smes_cap_ultra", "smes_trans_ultra", @@ -80,7 +82,6 @@ "pbrped", "hyper_mani", "hyper_matter_bin", - "hyper_mani", "hyper_capacitor", "hyper_sensor", "hyper_micro_laser", @@ -109,6 +110,8 @@ "comm_monitor", "comm_server", "ntnet_relay", + "pda_multicaster", + "comm_traffic", "s-ansible", "s-filter", "s-amplifier", @@ -152,19 +155,26 @@ "tscanner", "rcon_console", "powermonitor", - "solarcontrol", "circuit_imprinter", "airlock_cycling", "partslathe", "securedoor", // "circuit_imprinter_offstation", - // "solarcontrol", + "solarcontrol", + "solar_tracker", // "solar_panel", - // "solar_tracker", - // "power_control", - // "airalarm_electronics", - // "airlock_board", - // "firealarm_electronics", + "power_control", + "intercom", + "airalarm_electronics", + "airlock_board", + "geiger", + "firealarm_electronics", + "camera_assembly", + "status_display", + "ai_status_display", + "newscaster", + "timeclock", + "keycard_auth", // "firelock_board", // "trapdoor_electronics", // "blast", @@ -175,16 +185,21 @@ // "decal_painter", // "rwd", // "cable_coil", - // "welding_helmet", - // "welding_tool", - // "mini_welding_tool", - // "multitool", - // "wrench", - // "crowbar", - // "screwdriver", - // "wirecutters", - // "light_bulb", - // "light_tube", + "welding_helmet", + "welding_tool", + "mini_welding_tool", + "multitool", + "wrench", + "prybar", + "crowbar", + "screwdriver", + "wirecutters", + "light_bulb", + "light_tube", + "large_light_bulb", + "large_light_tube", + "floor_light", + "electrochromic", // "crossing_signal", // "guideway_sensor", // "manuunloader", @@ -195,6 +210,17 @@ // "manusorter", // "manurouter", // "mailsorter", + "automatic_pipe_layer", + ) + +/datum/techweb_node/emerge_power + id = TECHWEB_NODE_EMERGPOWER + starting_node = TRUE + display_name = "Emergency Power" + description = "Restarting the station power grid one step at a time." + design_ids = list( + "dtype_rtg", + "ctype_rtg", ) /datum/techweb_node/energy_manipulation @@ -218,10 +244,12 @@ // "portable_smes", // "power_connector", // "emitter", - // "grounding_rod", - // "cell_charger", - // "recharger", - // "welding_goggles", + "grounding_rod", + "gyrotron", + "supermatter_core_manager", + "supermatter_injector_control", + "welding_goggles", + "electric_welding_tool", // "tray_goggles", // "geigercounter", ) @@ -246,7 +274,7 @@ // "holosignbar", // "holobarrier_jani", // "holobarrier_med", - // "holopad", + "holopad", // "vendatray", // "holodisk", // "modular_shield_generator", @@ -277,8 +305,9 @@ // "rangedanalyzer", // "rtd_loaded", // "mech_rcd", - // "rcd_loaded", - // "rcd_ammo", + "rcd_loaded", + "rcd_ammo", + "rms", // "weldingmask", // "magboots", ) diff --git a/code/modules/research/tg/techwebs/nodes/material_nodes.dm b/code/modules/research/tg/techwebs/nodes/material_nodes.dm new file mode 100644 index 0000000000..efcc64f940 --- /dev/null +++ b/code/modules/research/tg/techwebs/nodes/material_nodes.dm @@ -0,0 +1,72 @@ +/datum/techweb_node/material_sheets + id = TECHWEB_NODE_MATERIALSHEETS + starting_node = TRUE + display_name = "Material Printing" + description = "Autolathe material printing framework." + design_ids = list( + MAT_IRON, + MAT_STEEL, + "rods", + MAT_SILVER, + MAT_GOLD, + MAT_TIN, + MAT_COPPER, + MAT_DIAMOND, + MAT_PHORON, + MAT_URANIUM, + MAT_TITANIUM, + MAT_PLASTIC, + MAT_PAINITE, + MAT_VOPAL, + MAT_QUARTZ, + MAT_VALHOLLIDE, + MAT_VERDANTIUM, + MAT_MORPHIUM, + MAT_GLAMOUR, + MAT_EAGATE, + MAT_SANDSTONE, + MAT_MARBLE, + MAT_SUPERMATTER, + MAT_PLASTEEL, + MAT_DURASTEEL, + MAT_PLASTITANIUM, + MAT_LEAD, + MAT_PLATINUM, + MAT_METALHYDROGEN, + MAT_DEUTERIUM, + MAT_TRITIUM, + MAT_OSMIUM, + MAT_GRAPHITE, + MAT_BRONZE, + MAT_ALUMINIUM, + MAT_GLASS, + MAT_PGLASS, + MAT_TITANIUMGLASS, + MAT_PLASTITANIUMGLASS, + MAT_WOOD, + MAT_SIFWOOD, + MAT_HARDWOOD, + MAT_BIRCHWOOD, + MAT_PINEWOOD, + MAT_OAKWOOD, + MAT_ACACIAWOOD, + MAT_REDWOOD, + MAT_ALGAE, + MAT_WAX, + MAT_CARDBOARD, + MAT_SNOW, + MAT_SNOWBRICK, + MAT_FLINT, + MAT_CONCRETE, + MAT_CHITIN, + MAT_FUR, + MAT_WOOL, + MAT_RESIN, + MAT_LEATHER, + MAT_COTTON, + MAT_SMOLEBRICKS, + MAT_LOG, + MAT_SIFLOG, + MAT_HARDLOG, + MAT_WOODEN_STICK + ) diff --git a/code/modules/research/tg/techwebs/nodes/mech_nodes.dm b/code/modules/research/tg/techwebs/nodes/mech_nodes.dm index de3c5171ba..4e54a68175 100644 --- a/code/modules/research/tg/techwebs/nodes/mech_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/mech_nodes.dm @@ -1,7 +1,6 @@ // Main Mecha Tree /datum/techweb_node/mech_assembly id = TECHWEB_NODE_MECH_ASSEMBLY - starting_node = TRUE display_name = "Exosuit Assembly" description = "Development of mechanical exosuits designed to contend with artificial gravity while transporting cargo." prereq_ids = list(TECHWEB_NODE_ROBOTICS) @@ -61,6 +60,9 @@ "weasel_right_leg", "weasel_head", ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) + discount_experiments = list(/datum/experiment/scanning/random/destruct_ripley_parts = TECHWEB_TIER_1_POINTS) + announce_channels = list(CHANNEL_SCIENCE) /datum/techweb_node/mech_equipment id = TECHWEB_NODE_MECH_EQUIPMENT diff --git a/code/modules/research/tg/techwebs/nodes/medbay_nodes.dm b/code/modules/research/tg/techwebs/nodes/medbay_nodes.dm index 6b0cb7a109..c7b865ff07 100644 --- a/code/modules/research/tg/techwebs/nodes/medbay_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/medbay_nodes.dm @@ -6,7 +6,7 @@ design_ids = list( "operating", "scan_console", - // "medicalbed", + "medicalbed", // "defibmountdefault", "defibrillator", // "surgical_drapes", @@ -14,6 +14,8 @@ "retractor", "hemostat", "cautery", + "fixovein", + "bonegel", "circular_saw", "surgicaldrill", "bonesetter", @@ -36,6 +38,13 @@ // "jerrycan", // "reflex_hammer", // "blood_scanner", + "sleevecard", + "body_record_disk", + "scanner_console", + "body_scanner", + "sleeper_console", + "sleeper", + "bioprinter", ) /datum/techweb_node/chem_synthesis @@ -107,6 +116,9 @@ // "defibmount", // "medicalbed_emergency", // "piercesyringe", + "syringe_gun", + "syringe_cartridge", + "bioregen" ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) required_experiments = list(/datum/experiment/scanning/points/easy_cytology) diff --git a/code/modules/research/tg/techwebs/nodes/mining_nodes.dm b/code/modules/research/tg/techwebs/nodes/mining_nodes.dm index eb23b895d6..b327fe72e4 100644 --- a/code/modules/research/tg/techwebs/nodes/mining_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/mining_nodes.dm @@ -5,21 +5,15 @@ description = "Refinement and processing of alloys and ores to enhance their utility and value." design_ids = list( "autolathe", - // "pickaxe", - // "shovel", + "pickaxe", + "shovel", + "iceaxe", // "conveyor_switch", // "conveyor_belt", // "mass_driver", // "recycler", // "stack_machine", // "stack_console", - // "rglass", - // "plasmaglass", - // "plasmareinforcedglass", - // "plasteel", - // "titaniumglass", - // "plastitanium", - // "plastitaniumglass", ) /datum/techweb_node/mining @@ -42,7 +36,8 @@ // "b_smelter", // "b_refinery", // "ore_redemption", - // "mining_equipment_vendor", + "mining_equipment_vendor", + "survey_equipment_vendor", // "mech_mscanner", // "superresonator", // "mech_drill", @@ -51,7 +46,6 @@ // "beacon", // "telesci_gps", // "mod_visor_meson", - // "mesons", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) announce_channels = list(CHANNEL_SUPPLY) @@ -121,15 +115,3 @@ ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) announce_channels = list(CHANNEL_SUPPLY) - -/datum/techweb_node/snow_clearing - id = TECHWEB_NODE_DEBRISREMOVAL - display_name = "Debris Removal" - description = "Development of tools for removing rocks, snow, ice, and many other forms of loose debris." - prereq_ids = list(TECHWEB_NODE_MATERIAL_PROC) - design_ids = list( - "shovel", - "iceaxe", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) - announce_channels = list(CHANNEL_SUPPLY) diff --git a/code/modules/research/tg/techwebs/nodes/modsuit_nodes.dm b/code/modules/research/tg/techwebs/nodes/modsuit_nodes.dm index 079f9b0985..ae81359b1c 100644 --- a/code/modules/research/tg/techwebs/nodes/modsuit_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/modsuit_nodes.dm @@ -1,14 +1,14 @@ /datum/techweb_node/mod_suit id = TECHWEB_NODE_MOD_SUIT - starting_node = TRUE display_name = "RIG Suit" description = "Specialized back mounted power suits with various different modules." - prereq_ids = list(TECHWEB_NODE_ROBOTICS) + starting_node = TRUE design_ids = list( "rigmodule_belt_basic", "zero_rig_module", "rig_device_pen", "rig_device_paperdispenser", + "suit_cooling_unit", // "suit_storage_unit", // "mod_shell", // "mod_chestplate", @@ -34,7 +34,6 @@ "rig_device_plasmacutter", "rig_device_healthanalyzer", "rig_gun_sizegun", - "rig_siphon", "rig_component_datajack", // "modlink_scryer", // "mod_clamp", diff --git a/code/modules/research/tg/techwebs/nodes/research_nodes.dm b/code/modules/research/tg/techwebs/nodes/research_nodes.dm index fa837deee0..ff5d36c3a5 100644 --- a/code/modules/research/tg/techwebs/nodes/research_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/research_nodes.dm @@ -9,15 +9,18 @@ "rdconsole", "bomb_tester", "tech_disk", - // "rdservercontrol", - // "doppler_array", + "rdservercontrol", + "doppler_array", // "experimentor", "destructive_analyzer", // "destructive_scanner", + "artifact_harvester", + "artifact_scanpad", // "laptop", // "portadrive_basic", // "portadrive_advanced", // "portadrive_super", + "electropack", ) /datum/techweb_node/protolathe_boards @@ -62,7 +65,6 @@ "belt_holding_utility", "bluespacebeaker", "bsflare", - "bluespace_crystal", "beacon", "beacon_locator", "chameleon", @@ -77,7 +79,6 @@ "shelter_capsule_kitchen", "shelter_capsule_pocketdorm", "shelter_capsule_luxuryrecroom", - // "ore_silo", // "plumbing_receiver", // "adv_watering_can", // "bluespace_coffeepot", diff --git a/code/modules/research/tg/techwebs/nodes/scene_nodes.dm b/code/modules/research/tg/techwebs/nodes/scene_nodes.dm index a812f89c17..bc609f63ea 100644 --- a/code/modules/research/tg/techwebs/nodes/scene_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/scene_nodes.dm @@ -4,7 +4,9 @@ display_name = "Potential Recreational Applications" description = "Devices made for rest and recreation purposes." design_ids = list( - // TODO: Leash & Collar + "holocollar", + "leash", + "vr_sleeper", // Compliance // Mouse Ray ) diff --git a/code/modules/research/tg/techwebs/nodes/security_nodes.dm b/code/modules/research/tg/techwebs/nodes/security_nodes.dm index e75ea1e27f..0759ea0d99 100644 --- a/code/modules/research/tg/techwebs/nodes/security_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/security_nodes.dm @@ -11,16 +11,181 @@ "dartgun_ammo_m", // "toy_armblade", // "toygun", - // "c38_rubber", - // "c38_rubber_mag", - // "c38_sec", - // "c38_mag", // "capbox", // "foam_dart", - // "sec_beanbag_slug", - // "sec_dart", - // "sec_Islug", - // "sec_rshot", + "knuckledusters", + "tacknife", + /* Unbalanced material weapons + "claymore", + "gladius", + "katana", + "rapier", + "sabre", + "longsword", + // "battleaxe", // No wielded sprite + */ + ) + +// Basic pistol rounds +/datum/techweb_node/pistol_ammo + id = TECHWEB_NODE_PISTOL_AMMO + starting_node = TRUE + display_name = "Pistol Ammunition" + description = "The smallest of small arms come in a variety of flavors!" + design_ids = list( + // 44 + "pistol_mag_44", + "pistol_mag_44_rubber", + // 45 + "pistol_mag_45", + "pistol_mag_45_practice", + "pistol_mag_45_rubber", + "pistol_mag_45_flash", + "pistol_mag_45_piercing", + "pistol_mag_45_hollow", + // 9mm + "pistol_mag_9mm", + "pistol_mag_9mm_rubber", + "pistol_mag_9mm_practice", + "pistol_mag_9mm_flash", + ) + +// Only works with a few pistols +/datum/techweb_node/pistol_special + id = TECHWEB_NODE_PISTOL_SPECIAL + starting_node = TRUE + display_name = "Specialty Pistol Ammunition" + description = "Special bangs for those special bucks." + design_ids = list( + // concealable + "pistol_mag_compact_9mm", + "pistol_mag_compact_9mm_rubber", + "pistol_mag_compact_9mm_practice", + "pistol_mag_compact_9mm_flash", + // 10mm + "pistol_mag_10m", + "pistol_mag_10m_rubber", + "pistol_mag_10m_emp", + "pistol_mag_10m_practice", + ) + +// Basic rifles +/datum/techweb_node/rifle_ammo + id = TECHWEB_NODE_RIFLE_AMMO + starting_node = TRUE + display_name = "Rifle Ammunition" + description = "Shoot for the moon, even if you miss you'll probably hit the intern anyway." + design_ids = list( + // military + "rifle_mag_545", + "rifle_mag_545_pierce", + "rifle_mag_545_practice", + "rifle_mag_545_hunting", + "rifle_mag_762", + "rifle_mag_762_pierce", + // SMG + "smg_mag_9mm", + "smg_mag_10m", + "smg_mag_10m_practice", + "smg_mag_10m_rubber", + "smg_mag_10m_emp", + ) + +// Only works with a few specific guns +/datum/techweb_node/rifle_ammo_special + id = TECHWEB_NODE_RIFLE_SPECIAL + starting_node = TRUE + display_name = "Specialty Rifle Ammunition" + description = "Sometimes you just need more gun." + design_ids = list( + // Extended + "rifle_mag_762_ext", + "rifle_mag_762_ext_pierce", + // Rattle em boys! + "uzi_mag_45", + "tommy_mag_45", + "tommy_mag_45_pierce", + "tommy_drum_45", + "tommy_drum_45_pierce", + // big guns + "machinegun_box_545", + "machinegun_box_545_pierce", + "machinegun_box_545_hunting", + "rifle_145_sabot", + // P90 + "pistol_mag_topmount_9mm", + "pistol_mag_topmount_9mm_rubber", + "pistol_mag_topmount_9mm_practice", + "pistol_mag_topmount_9mm_flash", + "pistol_mag_topmount_9mm_piercing", + "pistol_mag_ext_topmount_9mm_piercing", + // M1 + "rifle_enblock_762", + "rifle_enblock_762_pierce", + ) + +// Shotgun shells +/datum/techweb_node/shotgun_ammo + id = TECHWEB_NODE_SHOTGUN_AMMO + starting_node = TRUE + display_name = "Shotgun Ammunition" + description = "Why aim when you can just shoot more bullet per bullet?" + design_ids = list( + // Ammoboxes + "ammobox_12g_slug", + "ammobox_12g_blank", + "ammobox_12g_beanbag", + "ammobox_12g_flash", + "ammobox_12g_pellet", + "ammobox_12g_stunshell", + "ammobox_12g_emp", + "ammobox_12g_flechette", + "ammobox_12g_practice", + /* Single shells available, but probably not needed + "ammo_12g_slug", + "ammo_12g_blank", + "ammo_12g_beanbag", + "ammo_12g_flash", + "ammo_12g_pellet", + "ammo_12g_stun", + "ammo_12g_emp", + "ammo_12g_flechette", + "ammo_12g_practice", + */ + // Auto shotgun drums + "shotgun_mag_12g_drum", + "shotgun_mag_12g_drum_beanbag", + "shotgun_mag_12g_drum_pellet", + "shotgun_mag_12g_drum_flash", + ) + +// Faster reloading +/datum/techweb_node/speedloaders + id = TECHWEB_NODE_SPEEDLOADERS + starting_node = TRUE + display_name = "Speedloaders" + description = "Trying to reload bullet by bullet in the middle of a gunfight is probably a bad idea." + design_ids = list( + // Revolvers + "loader_357", + "loader_357_flash", + "loader_357_stun", + "loader_357_rubber", + "loader_45", + "loader_45_rubber", + "loader_38", + "loader_38_rubber", + "loader_44", + "loader_44_rubber", + // Shotty + "loader_12g_beanbag", + "loader_12g_slug", + "loader_12g_buck", + // Stripperclips + "loader_545", + "loader_545_practice", + "loader_762", + "loader_762_practice", ) /datum/techweb_node/sec_equip @@ -30,12 +195,17 @@ prereq_ids = list(TECHWEB_NODE_BASIC_ARMS) design_ids = list( "seccamera", + "engcamera", + "crgcamera", + "xenobiocamera", "sec_data", "prisonmanage", "pointdefense", "pointdefense_control", - // "mining", - // "rdcamera", + "handcuffs", + "legcuffs", + "legcuffs_fuzzy", + "dna_analyzer", // "security_photobooth", // "photobooth", // "scanner_gate", @@ -101,8 +271,6 @@ "smg", "ammo_9mm", "magnetic_ammo", - "stunshell", - "empshell", "ptrshell", "monkey_gun", // "c38_hotshot", @@ -114,7 +282,6 @@ // "c38_true_strike", // "c38_true_strike_mag", // "techshotshell", - // "flechetteshell", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) // discount_experiments = list(/datum/experiment/ordnance/explosive/highyieldbomb = TECHWEB_TIER_4_POINTS) diff --git a/code/modules/research/tg/techwebs/nodes/service_nodes.dm b/code/modules/research/tg/techwebs/nodes/service_nodes.dm index 589488fff8..3f58240b39 100644 --- a/code/modules/research/tg/techwebs/nodes/service_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/service_nodes.dm @@ -12,22 +12,22 @@ "juke_remote", "mail_scanner", "floor_painter", - // "fax", + "fax", // "sec_pen", // "handlabel", // "roll", // "universal_scanner", - // "desttagger", + "desttagger", // "packagewrap", - // "sticky_tape", + "sticky_tape", // "toner_large", // "toner", // "boxcutter", - // "bounced_radio", - // "radio_headset", + "bounced_radio", + "radio_headset", // "earmuffs", - // "recorder", - // "tape", + "taperecorder", + "recordingcassette", // "toy_balloon", // "pet_carrier", // "chisel", @@ -35,16 +35,20 @@ // "camera_film", // "camera", // "razor", - // "bucket", - // "mop", + "bucket", + "mop", // "pushbroom", // "normtrash", // "wirebrush", - // "flashlight", + "flashlight", + "maglight", // "water_balloon", // "ticket_machine", // "radio_entertainment", - // "photocopier", + "photocopier", + "papershredder", + "ashtray", + "glasstray" ) /datum/techweb_node/sanitation @@ -57,8 +61,10 @@ "light_replacer", "spraybottle", "beartrap", + "barbedwire", + "snarewire", // "buffer", - // "vacuum", + "washing" ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) discount_experiments = list(/datum/experiment/scanning/random/janitor_trash = TECHWEB_TIER_2_POINTS) @@ -71,6 +77,9 @@ prereq_ids = list(TECHWEB_NODE_OFFICE_EQUIP) design_ids = list( "med_data", + "med_pcu", + // "skill_data", + "skill_pcu", "ordercomp", "supplycomp", "crewconsole", @@ -78,6 +87,7 @@ "comconsole", "idcardconsole", "jukebox", + "request", // PDAs "pda", "cart_basic", @@ -105,9 +115,15 @@ "gps_sci", "gps_exp", // "automated_announcement", - // "bankmachine", + "bankmachine", // "account_console", - // "idcard", + "idcard", + "idrestore_console", + "guestpass", + "stockexchange", + "stationalert_engineering", + "stationalert_security", + "stationalert_all", // "c-reader", // "libraryconsole", // "libraryscanner", @@ -123,7 +139,7 @@ // "telescreen_interrogation", // "telescreen_prison", // "telescreen_bar", - // "telescreen_entertainment", + "telescreen_entertainment", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) announce_channels = list(CHANNEL_SERVICE) @@ -217,21 +233,36 @@ // "oven_tray", // "servingtray", // "tongs", - // "spoon", - // "fork", - // "kitchen_knife", - // "plastic_spoon", - // "plastic_fork", - // "plastic_knife", + "rollingpin", + "spoon", + "fork", + "kitchen_knife", + "plastic_spoon", + "plastic_fork", + "plastic_knife", + "cleaver", // "shaker", - // "drinking_glass", - // "shot_glass", // "coffee_cartridge", // "coffeemaker", // "coffeepot", // "syrup_bottle", // "foodtray", // "restaurant_portal", + "watercooler_bottle", + "barglass_square", + "barglass_rocks", + "barglass_milkshake", + "barglass_cocktail", + "barglass_shot", + "barglass_pint", + "barglass_mug", + "barglass_wine", + "barglass_metaglass", + "barglass_metapint", + "barglass_carafe", + "barglass_pitcher", + "barglass_coffeemug", + "barglass_jar" ) /datum/techweb_node/food_proc @@ -244,9 +275,10 @@ "fryer_board", "cerealmaker_board", "candymachine_board", + "honey_extractor", // "food_replicator", "borgos1", - // "range", + "range", // "souppot", // "processor", // "gibber", @@ -258,7 +290,7 @@ // "sheetifier", // "fat_sucker", // "dish_drive", - // "roastingstick", + // "roastingstick" ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) announce_channels = list(CHANNEL_SERVICE) @@ -273,3 +305,14 @@ ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) announce_channels = list(CHANNEL_SERVICE) + +/datum/techweb_node/rapid_service_fabricator + id = TECHWEB_NODE_RSF + display_name = "rapid service fabricator" + description = "A device used to rapidly deploy service items." + prereq_ids = list(TECHWEB_NODE_CAFETERIA_EQUIP) + design_ids = list( + "rsf", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) + announce_channels = list(CHANNEL_SERVICE) diff --git a/code/modules/research/tg/techwebs/techweb_types.dm b/code/modules/research/tg/techwebs/techweb_types.dm index ca1a8fd230..f0acebdbb6 100644 --- a/code/modules/research/tg/techwebs/techweb_types.dm +++ b/code/modules/research/tg/techwebs/techweb_types.dm @@ -33,3 +33,42 @@ */ /datum/techweb/disk id = "D1SK" + +GLOBAL_LIST_EMPTY(autounlock_techwebs) + +/** + * Techweb node that automatically unlocks a given buildtype. + * Saved in GLOB.autounlock_techwebs and used to prevent + * creating new ones each time it's needed. + */ +/datum/techweb/autounlocking + ///The buildtype we will automatically unlock. + var/allowed_buildtypes = ALL + +/datum/techweb/autounlocking/New() + . = ..() + for(var/id in SSresearch.techweb_designs) + var/datum/design_techweb/design = SSresearch.techweb_designs[id] + if(!(design.build_type & allowed_buildtypes)) + continue + if(RND_CATEGORY_INITIAL in design.category) + add_design_by_id(id) + +/datum/techweb/autounlocking/add_design(datum/design_techweb/design, custom = FALSE, list/add_to) + if(!(design.build_type & allowed_buildtypes)) + return FALSE + return ..() + +/datum/techweb/autounlocking/autolathe + allowed_buildtypes = AUTOLATHE + +/* +/datum/techweb/autounlocking/limbgrower + allowed_buildtypes = LIMBGROWER + +/datum/techweb/autounlocking/biogenerator + allowed_buildtypes = BIOGENERATOR + +/datum/techweb/autounlocking/smelter + allowed_buildtypes = SMELTER +*/ diff --git a/code/modules/rogueminer_vr/zone_console.dm b/code/modules/rogueminer_vr/zone_console.dm index c3a3fca4f0..a97227f81a 100644 --- a/code/modules/rogueminer_vr/zone_console.dm +++ b/code/modules/rogueminer_vr/zone_console.dm @@ -147,6 +147,7 @@ name = T_BOARD("asteroid belt scanning computer") build_path = /obj/machinery/computer/roguezones origin_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 1) + hidden = TRUE // Might have issues on maps without belters? /obj/item/paper/rogueminer name = "R-38 Scanner Console Guide" diff --git a/code/modules/unit_tests/construction_tests.dm b/code/modules/unit_tests/construction_tests.dm index d848041583..a993a99a3f 100644 --- a/code/modules/unit_tests/construction_tests.dm +++ b/code/modules/unit_tests/construction_tests.dm @@ -9,3 +9,42 @@ failed = TRUE if(failed) TEST_FAIL("Mech Construction - A construction datum had incorrect data.") + +/datum/unit_test/all_machine_circuits_must_be_printable/Run() + // get a list of all construction frames that automatically populate their circuitboard, we don't need to test for these + var/list/prepopulated_circuits = list() + for(var/datum/frame/frame_types/path as anything in subtypesof(/datum/frame/frame_types)) + var/obj/item/circuitboard/circuit = initial(path.circuit) + if(!circuit) + continue + prepopulated_circuits |= circuit + + // Get all machines with circuitboards + var/list/all_circuitboard_machines = list() + for(var/obj/machinery/path as anything in subtypesof(/obj/machinery)) + var/obj/item/circuitboard/circuit = initial(path.circuit) + if(!circuit) + continue + all_circuitboard_machines |= circuit + + // Check all circuits that are need has a techweb design + all_circuitboard_machines -= prepopulated_circuits + for(var/id in SSresearch.techweb_designs) + var/datum/design_techweb/design = SSresearch.techweb_designs[id] + if(!(design.build_path in subtypesof(/obj/item/circuitboard))) + continue + all_circuitboard_machines -= design.build_path + + var/failed = FALSE + if(length(all_circuitboard_machines)) + for(var/obj/item/circuitboard/circuit as anything in all_circuitboard_machines) + if(ispath(circuit)) + if(initial(circuit.hidden)) // Intentionally not meant to show up on station + continue + TEST_NOTICE(src, "[circuit] - Missing a circuit from techweb. Ensure a techweb entry exists, or [circuit.build_path] will not be constructable in round.") + else + TEST_NOTICE(src, "[circuit] - is a LEGACY STRING and must be converted to a path!!!") + failed = TRUE + + if(failed) + TEST_FAIL("missing circuitboard print recipies.") diff --git a/code/modules/unit_tests/material_tests.dm b/code/modules/unit_tests/material_tests.dm index 15c3f98619..e50b7640c5 100644 --- a/code/modules/unit_tests/material_tests.dm +++ b/code/modules/unit_tests/material_tests.dm @@ -14,3 +14,43 @@ if(length(failures)) TEST_FAIL("[length(failures)] material\s had missing name strings: [english_list(failures)].") + +/datum/unit_test/all_sheets_must_be_printable_from_autolathe + +/datum/unit_test/all_sheets_must_be_printable_from_autolathe/Run() + // Get the materials all the sheets can be broken down into + var/list/needed_materials = list() + for(var/path in subtypesof(/obj/item/stack)) + var/obj/item/stack/material/sheet = new path() + var/list/get_mats = sheet.get_material_composition() + for(var/mat in get_mats) + needed_materials |= mat + qdel(sheet) + + // Then get the sheets those materials are represented by + var/list/required_sheets = list() + for(var/datum/material/mat in needed_materials) + if(!mat || !mat.stack_type) + continue + required_sheets |= mat.stack_type + + // Get all material sheet printing recipies in the autolathe + var/list/sheet_print_designs = list() + for(var/id in SSresearch.techweb_designs) + var/datum/design_techweb/design = SSresearch.techweb_designs[id] + if(!(design.build_type & AUTOLATHE)) + continue + if(!(design.build_path in subtypesof(/obj/item/stack/material))) + continue + sheet_print_designs |= design.build_path + + // Check all sheets for EXISTANCE + var/failed = FALSE + for(var/sheet in required_sheets) + if(sheet in sheet_print_designs) + continue + failed = TRUE + TEST_NOTICE(src, "[sheet] - Missing an autolathe design, all material sheets must be printable, or materials can get stuck in the lathe forever") + + if(failed) + TEST_FAIL("materials missing autolathe print recipies.") diff --git a/code/modules/unit_tests/techwebs.dm b/code/modules/unit_tests/techwebs.dm index a6b38d5759..24d6b7002f 100644 --- a/code/modules/unit_tests/techwebs.dm +++ b/code/modules/unit_tests/techwebs.dm @@ -35,21 +35,30 @@ TEST_NOTICE(src, "TECHWEB NODE - [node.type] did not have any research_costs set.") failed = TRUE + // Must have category set + if(!length(node.category)) + TEST_NOTICE(src, "TECHWEB NODE - [node.type] did not have a category set.") + failed = TRUE + // Must have valid designs - if(!node.design_ids) + if(!length(node.design_ids)) TEST_NOTICE(src, "TECHWEB NODE - [node.type] does not have any design_ids.") failed = TRUE else for(var/design in node.design_ids) + if(design in used_designs) + TEST_NOTICE(src, "TECHWEB NODE - [node.type] has an already in use design_id: \"[design]\"") + failed = TRUE + used_designs += design - if(!SSresearch.techweb_designs[design]) + if(!(design in SSresearch.techweb_designs)) TEST_NOTICE(src, "TECHWEB NODE - [node.type] has a non-existant design_id: \"[design]\"") failed = TRUE // Must have valid prereqs if(node.prereq_ids.len) for(var/req in node.prereq_ids) - if(!SSresearch.techweb_nodes[req]) + if(!(req in SSresearch.techweb_nodes)) TEST_NOTICE(src, "TECHWEB NODE - [node.type] has a non-existant prereq_id: \"[req]\"") failed = TRUE @@ -82,6 +91,25 @@ TEST_NOTICE(src, "TECHWEB NODE - [node.type] costs less to make then the previous node, must always be at least the same or more expensive. ours lowest is \[[current_cost]\], prereq lowest is \[[prereq_currentcost]\]. Lesser costs than the previous node is only allowed if the node has a required experiment.") failed = TRUE + // forbid designs with RND_CATEGORY_INITIAL in non-starting nodes + for(var/design_id in node.design_ids) + var/datum/design_techweb/design = SSresearch.techweb_designs[design_id] + if((RND_CATEGORY_INITIAL in design.category)) + TEST_NOTICE(src, "TECHWEB NODE - [node.type]'s [design_id] is flagged as RND_CATEGORY_INITIAL in a non-starting techweb node.") + failed = TRUE + else + // if we have prereqs we did something wrong + if(length(node.prereq_ids)) + TEST_NOTICE(src, "TECHWEB NODE - [node.type] is a starting node, but has prereq_ids assigned.") + failed = TRUE + + // starting nodes need to have all design inside it flagged with RND_CATEGORY_INITIAL + for(var/design_id in node.design_ids) + var/datum/design_techweb/design = SSresearch.techweb_designs[design_id] + if(!(RND_CATEGORY_INITIAL in design.category)) + TEST_NOTICE(src, "TECHWEB NODE - [node.type]'s [design_id] was part of a starting node, but is not category tagged RND_CATEGORY_INITIAL.") + failed = TRUE + // Each design var/used_design_paths = list() for(var/design_id in SSresearch.techweb_designs) @@ -89,6 +117,13 @@ if(design.id == DESIGN_ID_IGNORE) continue + /* Later + // Must have desc + if(!design.desc) + TEST_NOTICE(src, "TECHWEB DESIGN - [design.type] did not have a description.") + failed = TRUE + */ + // Must all be accessible by science if(!(design.departmental_flags & DEPARTMENT_BITFLAG_SCIENCE)) TEST_NOTICE(src, "TECHWEB DESIGN - [design.type] was not flagged for science department, all designs must be accessible by science.") @@ -98,10 +133,29 @@ if(!(design.id in used_designs)) TEST_NOTICE(src, "TECHWEB DESIGN - WARNING [design.type] is orphaned and not accessible from any techweb node. Is this intended?") + // Design must have materials + if(!length(design.materials)) + TEST_NOTICE(src, "TECHWEB DESIGN - [design.type] has no materials assigned.") + failed = TRUE + else + for(var/mat in design.materials) + var/datum/material/mat_datum = get_material_by_name(mat) + if(!mat_datum) + TEST_NOTICE(src, "TECHWEB DESIGN - [design.type] had a non-existant material assigned \"[mat]\".") + failed = TRUE + else + var/amount = design.materials[mat] + if(!amount) + TEST_NOTICE(src, "TECHWEB DESIGN - [design.type] assigned material \"[mat]\" had no amount specified, or a negative amount.") + failed = TRUE + // Design must produce something if(!design.build_path) TEST_NOTICE(src, "TECHWEB DESIGN - [design.type] did not have a build_path.") failed = TRUE + else if(design.build_path in subtypesof(/obj/machinery)) + TEST_NOTICE(src, "TECHWEB DESIGN - [design.type] had a buildpath that directly prints a machine: \"[design.build_path]\"") + failed = TRUE // Design must be a unique path produced if(design.build_path in used_design_paths) diff --git a/maps/submaps/admin_use_vr/ert.dm b/maps/submaps/admin_use_vr/ert.dm index 70db305bc4..5c6167c300 100644 --- a/maps/submaps/admin_use_vr/ert.dm +++ b/maps/submaps/admin_use_vr/ert.dm @@ -232,7 +232,7 @@ P.S. Before any of you ask, no, you cannot fire yourself or your teammates out o /obj/machinery/computer/cryopod/ert name = "responder oversight console" desc = "An interface between responders and the cryo oversight systems tasked with keeping track of all responders who enter or exit cryostasis." - circuit = "/obj/item/circuitboard/robotstoragecontrol" + circuit = /obj/item/circuitboard/robotstoragecontrol storage_type = "responders" storage_name = "ERT Oversight Control" diff --git a/maps/submaps/admin_use_vr/mercship.dm b/maps/submaps/admin_use_vr/mercship.dm index 8706c9883a..9e030dcda4 100644 --- a/maps/submaps/admin_use_vr/mercship.dm +++ b/maps/submaps/admin_use_vr/mercship.dm @@ -292,7 +292,7 @@ In the meantime, happy hunting. Go bag me some carp. The mech bay can be found i /obj/machinery/computer/cryopod/merc name = "mercenary oversight console" desc = "An interface between mercenaries and the cryo oversight systems tasked with keeping track of all mercenaries who enter or exit cryostasis." - circuit = "/obj/item/circuitboard/robotstoragecontrol" + circuit = /obj/item/circuitboard/robotstoragecontrol storage_type = "mercenaries" storage_name = "Merc Oversight Control" diff --git a/tgui/packages/common/css_sanity.ts b/tgui/packages/common/css_sanity.ts new file mode 100644 index 0000000000..52e9ba0895 --- /dev/null +++ b/tgui/packages/common/css_sanity.ts @@ -0,0 +1,3 @@ +export function sanitizeCssClassName(name: string) { + return name.replace(/[^a-zA-Z0-9]/g, ''); +} diff --git a/tgui/packages/tgui/interfaces/Autolathe.tsx b/tgui/packages/tgui/interfaces/Autolathe.tsx index 52aaf55880..6a24e59cfa 100644 --- a/tgui/packages/tgui/interfaces/Autolathe.tsx +++ b/tgui/packages/tgui/interfaces/Autolathe.tsx @@ -1,224 +1,256 @@ -import { useCallback, useMemo } from 'react'; -import { useBackend, useSharedState } from 'tgui/backend'; -import { Window } from 'tgui/layouts'; import { - Box, Button, + Collapsible, Icon, - Input, + LabeledList, + ProgressBar, Section, Stack, - Tabs, - VirtualList, + Tooltip, } from 'tgui-core/components'; -import { formatSiUnit } from 'tgui-core/format'; -import type { BooleanLike } from 'tgui-core/react'; -import { toTitleCase } from 'tgui-core/string'; -import { MaterialAccessBar } from './common/MaterialAccessBar'; -import type { Material } from './Fabrication/Types'; +import { type BooleanLike, classes } from 'tgui-core/react'; +import { capitalize } from 'tgui-core/string'; -type MaterialData = { - name: string; - ref: string; - amount: number; - sheets: number; - removable: BooleanLike; -}; +import { useBackend } from '../backend'; +import { Window } from '../layouts'; +import { TechWebRecipeIcon } from './common/TechWebRecipeIcon'; +import { DesignBrowser } from './Fabrication/DesignBrowser'; +import { MaterialCostSequence } from './Fabrication/MaterialCostSequence'; +import type { Design, Material, MaterialMap } from './Fabrication/Types'; -type RecipeData = { - category: string; - name: string; - ref: string; - requirements: Record; - hidden: BooleanLike; - coeff_applies: number; - is_stack: BooleanLike; -}; - -type Data = { - busy: string; - materials?: Material[]; - mat_efficiency: number; - recipes: RecipeData[]; - SHEET_MATERIAL_AMOUNT?: number; +type AutolatheData = { + materials: Material[]; + materialtotal: number; + materialsmax: number; + SHEET_MATERIAL_AMOUNT: number; + designs: Design[]; + active: BooleanLike; }; export const Autolathe = (props) => { - const { act, data } = useBackend(); - const { materials = [], SHEET_MATERIAL_AMOUNT = 0 } = data; + const { data } = useBackend(); + const { + materialtotal, + materialsmax, + materials, + designs, + active, + SHEET_MATERIAL_AMOUNT, + } = data; + + const filteredMaterials = materials.filter((material) => material.amount > 0); + + const availableMaterials: MaterialMap = {}; + + for (const material of filteredMaterials) { + availableMaterials[material.name] = material.amount; + } return ( - + - - - -
- - act('remove_mat', { - id: mat.name, - amount: qty, - }) - } - /> +
+ + + + {materialtotal / SHEET_MATERIAL_AMOUNT + + '/' + + materialsmax / SHEET_MATERIAL_AMOUNT + + ' sheets'} + + + + {filteredMaterials.length > 0 && ( + + + {filteredMaterials.map((material) => ( + + +
+ {material.amount / SHEET_MATERIAL_AMOUNT + + ' sheets'} +
+
+
+ ))} +
+
+ )} +
+
+ + ( + + )} + /> + ); }; -const Designs = (props) => { - const { act, data } = useBackend(); - const { materials = [] } = data; +type PrintButtonProps = { + design: Design; + quantity: number; + availableMaterials: MaterialMap; + SHEET_MATERIAL_AMOUNT: number; + maxmult: number; +}; - const [selectedCategory, setSelectedCategory] = useSharedState( - 'selected_category', - 'No Category Selected', +const PrintButton = (props: PrintButtonProps) => { + const { act } = useBackend(); + const { design, quantity, availableMaterials, maxmult } = props; + + const canPrint = maxmult >= quantity; + return ( + + } + > +
+ canPrint && act('make', { id: design.id, multiplier: quantity }) + } + > + ×{quantity} +
+
); - const [searchText, setSearchText] = useSharedState('search_text', ''); +}; - const materialRecord = useMemo(() => { - const materialRecord = {}; - for (const material of materials) { - materialRecord[material.name] = material.amount; - } - return materialRecord; - }, [materials]); +type AutolatheRecipeProps = { + design: Design; + availableMaterials: MaterialMap; + SHEET_MATERIAL_AMOUNT: number; +}; - const categories = {}; +const AutolatheRecipe = (props: AutolatheRecipeProps) => { + const { act } = useBackend(); + const { design, availableMaterials, SHEET_MATERIAL_AMOUNT } = props; - for (const recipe of data.recipes) { - if (categories[recipe.category]) { - categories[recipe.category] += 1; - } else { - categories[recipe.category] = 1; - } - } - - let recipes: RecipeData[]; - - if (searchText.length > 0) { - recipes = data.recipes.filter( - (recipe) => - recipe.category !== 'All' && - recipe.name.toLowerCase().includes(searchText.toLowerCase()), - ); - } else { - recipes = data.recipes.filter( - (recipe) => recipe.category === selectedCategory, - ); - } + let maxmult = 0; + maxmult = Object.entries(design.cost).reduce( + (accumulator: number, [material, required]) => { + return Math.min( + accumulator, + (availableMaterials[material] || 0) / required, + ); + }, + Infinity, + ); + maxmult = Math.min(Math.floor(maxmult), 50); + const canPrint = maxmult > 0; return ( - - -
- - {Object.entries(categories).map(([category, amount]) => ( - setSelectedCategory(category)} - > - {category} - - ))} - -
-
- -
- - - - - - setSearchText(val)} - /> - - -
- - {recipes.map((recipe) => ( - - ))} - -
-
-
-
- ); -}; - -const canBeMade = ( - required: Record, - available: Record, - multiplier: number = 1, -): boolean => { - for (const [id, amt] of Object.entries(required)) { - if ((available[id] || 0) < amt * multiplier) { - return false; - } - } - return true; -}; - -const Recipe = (props: { - recipe: RecipeData; - materials: Record; - busy: string; -}) => { - const { act } = useBackend(); - const { recipe, materials, busy } = props; - - const canBeMadeCb = useCallback(canBeMade, [recipe, materials]); - - const requirementString = Object.entries(recipe.requirements) - .map(([name, number]) => `${toTitleCase(name)}: ${formatSiUnit(number, 0)}`) - .join(', '); - - return ( - - - - - +
+ +
+ +
+
+ + } + > + act('make', { id: design.id, multiplier: 1 })} + /> + + + + + + +
+ + act('make', { + id: design.id, + multiplier: value, + }) + } + /> +
+
); }; diff --git a/tgui/packages/tgui/interfaces/ExosuitFabricatorTg.tsx b/tgui/packages/tgui/interfaces/ExosuitFabricatorTg.tsx index 574bde0dc1..0b9c657f13 100644 --- a/tgui/packages/tgui/interfaces/ExosuitFabricatorTg.tsx +++ b/tgui/packages/tgui/interfaces/ExosuitFabricatorTg.tsx @@ -1,7 +1,6 @@ import { useBackend } from 'tgui/backend'; import { Window } from 'tgui/layouts'; import { - Box, Button, Icon, LabeledList, @@ -11,6 +10,7 @@ import { } from 'tgui-core/components'; import { type BooleanLike, classes } from 'tgui-core/react'; import { MaterialAccessBar } from './common/MaterialAccessBar'; +import { TechWebRecipeIcon } from './common/TechWebRecipeIcon'; import { DesignBrowser } from './Fabrication/DesignBrowser'; import { MaterialCostSequence } from './Fabrication/MaterialCostSequence'; import type { @@ -145,24 +145,12 @@ const Recipe = (props: RecipeProps) => { /> } > -
- canPrint && act('build', { designs: [design.id], now: true }) - } - > -
- -
-
{design.name}
-
+ act('build', { designs: [design.id], now: true })} + /> @@ -372,23 +360,11 @@ const QueueList = (props: QueueListProps) => { /> } > -
-
- -
-
- {entry.design?.name} -
-
+
{!entry.job.processing && ( diff --git a/tgui/packages/tgui/interfaces/Fabrication/MaterialIcon.tsx b/tgui/packages/tgui/interfaces/Fabrication/MaterialIcon.tsx index 0938b7b38f..179765288e 100644 --- a/tgui/packages/tgui/interfaces/Fabrication/MaterialIcon.tsx +++ b/tgui/packages/tgui/interfaces/Fabrication/MaterialIcon.tsx @@ -1,3 +1,4 @@ +import { sanitizeCssClassName } from 'common/css_sanity'; import { Icon } from 'tgui-core/components'; import { classes } from 'tgui-core/react'; @@ -32,7 +33,7 @@ export const MaterialIcon = (props: MaterialIconProps) => { 'FabricatorMaterialIcon__Icon', 'FabricatorMaterialIcon__Icon--active', 'sheetmaterials_batched32x32', - icon_name, + sanitizeCssClassName(icon_name), ])} /> diff --git a/tgui/packages/tgui/interfaces/Fabricator.tsx b/tgui/packages/tgui/interfaces/Fabricator.tsx index 9c681aa37c..a6910524a9 100644 --- a/tgui/packages/tgui/interfaces/Fabricator.tsx +++ b/tgui/packages/tgui/interfaces/Fabricator.tsx @@ -1,7 +1,6 @@ import { useBackend } from 'tgui/backend'; import { Window } from 'tgui/layouts'; import { - Box, Button, Dimmer, Icon, @@ -11,6 +10,7 @@ import { } from 'tgui-core/components'; import { classes } from 'tgui-core/react'; import { MaterialAccessBar } from './common/MaterialAccessBar'; +import { TechWebRecipeIcon } from './common/TechWebRecipeIcon'; import { DesignBrowser } from './Fabrication/DesignBrowser'; import { MaterialCostSequence } from './Fabrication/MaterialCostSequence'; import type { @@ -196,24 +196,12 @@ const Recipe = (props: RecipeProps) => { /> } > -
- canPrint && act('build', { ref: design.id, amount: 1 }) - } - > -
- -
-
{design.name}
-
+ act('build', { ref: design.id, amount: 1 })} + /> { return ( - - - - - {machineName} - - + - {diskType === 'tech' && ( - - )} + {diskType === 'tech' && ( + + + + )} + ))} + {required_experiments.length > 0 && ( void; +}) => { + const { icon, name, canPrint, action } = props; + + const { transformValue, offset } = buildIconData(icon); + + return ( + { + if (canPrint && action) { + action(); + } + }} + > + + 0 ? offset : 0}px ${offset < 0 ? -offset : 0}px`, + }} + /> + + {name} + + ); +}; diff --git a/tgui/packages/tgui/styles/interfaces/Techweb.scss b/tgui/packages/tgui/styles/interfaces/Techweb.scss index 1b46e6d7c1..a6a8887db9 100644 --- a/tgui/packages/tgui/styles/interfaces/Techweb.scss +++ b/tgui/packages/tgui/styles/interfaces/Techweb.scss @@ -2,10 +2,6 @@ margin-bottom: var(--space-xl); } -.Techweb__DesignIcon { - margin: 0 var(--space-s); -} - .Techweb__OverviewNodes { padding-top: var(--space-m); } diff --git a/vorestation.dme b/vorestation.dme index 05e735a565..775587edf9 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -672,20 +672,6 @@ #include "code\datums\tgs_event_handler.dm" #include "code\datums\verb_callbacks.dm" #include "code\datums\weakrefs.dm" -#include "code\datums\autolathe\arms.dm" -#include "code\datums\autolathe\arms_vr.dm" -#include "code\datums\autolathe\autolathe.dm" -#include "code\datums\autolathe\devices.dm" -#include "code\datums\autolathe\devices_vr.dm" -#include "code\datums\autolathe\engineering.dm" -#include "code\datums\autolathe\engineering_vr.dm" -#include "code\datums\autolathe\general.dm" -#include "code\datums\autolathe\general_vr.dm" -#include "code\datums\autolathe\materials.dm" -#include "code\datums\autolathe\medical.dm" -#include "code\datums\autolathe\medical_vr.dm" -#include "code\datums\autolathe\tools.dm" -#include "code\datums\autolathe\tools_vr.dm" #include "code\datums\changelog\changelog.dm" #include "code\datums\cinematics\_cinematic.dm" #include "code\datums\cinematics\malf_doomsday.dm" @@ -1006,12 +992,14 @@ #include "code\datums\wires\apc.dm" #include "code\datums\wires\autolathe.dm" #include "code\datums\wires\camera.dm" +#include "code\datums\wires\circuit_imprinter.dm" #include "code\datums\wires\disposals.dm" #include "code\datums\wires\explosive.dm" #include "code\datums\wires\grid_checker.dm" #include "code\datums\wires\jukebox.dm" #include "code\datums\wires\mines.dm" #include "code\datums\wires\particle_accelerator.dm" +#include "code\datums\wires\protolathe.dm" #include "code\datums\wires\radio.dm" #include "code\datums\wires\robot.dm" #include "code\datums\wires\seedstorage.dm" @@ -4499,7 +4487,9 @@ #include "code\modules\research\tg\rdmachines.dm" #include "code\modules\research\tg\server.dm" #include "code\modules\research\tg\server_control.dm" +#include "code\modules\research\tg\design_disks\security.dm" #include "code\modules\research\tg\designs\ai_designs.dm" +#include "code\modules\research\tg\designs\ammunition_designs.dm" #include "code\modules\research\tg\designs\circuitry_designs.dm" #include "code\modules\research\tg\designs\construction_designs.dm" #include "code\modules\research\tg\designs\cybernetic_designs.dm" @@ -4509,15 +4499,18 @@ #include "code\modules\research\tg\designs\firework_designs.dm" #include "code\modules\research\tg\designs\illegal_designs.dm" #include "code\modules\research\tg\designs\implant_designs.dm" +#include "code\modules\research\tg\designs\materials.dm" #include "code\modules\research\tg\designs\mecha_designs.dm" #include "code\modules\research\tg\designs\mechfab_designs.dm" #include "code\modules\research\tg\designs\mechfab_equipment_designs.dm" #include "code\modules\research\tg\designs\medical_designs.dm" +#include "code\modules\research\tg\designs\mining_designs.dm" #include "code\modules\research\tg\designs\misc_designs.dm" #include "code\modules\research\tg\designs\modsuit_designs.dm" #include "code\modules\research\tg\designs\modular_computer_designs.dm" #include "code\modules\research\tg\designs\multi-department_designs.dm" #include "code\modules\research\tg\designs\prosfab_designs.dm" +#include "code\modules\research\tg\designs\service_designs.dm" #include "code\modules\research\tg\designs\stock_part_designs.dm" #include "code\modules\research\tg\designs\tool_designs.dm" #include "code\modules\research\tg\designs\weapon_designs.dm" @@ -4529,6 +4522,7 @@ #include "code\modules\research\tg\designs\boards\misc.dm" #include "code\modules\research\tg\designs\boards\refinery.dm" #include "code\modules\research\tg\designs\boards\science.dm" +#include "code\modules\research\tg\designs\boards\security.dm" #include "code\modules\research\tg\designs\boards\telecomms.dm" #include "code\modules\research\tg\experisci\handheld_scanner.dm" #include "code\modules\research\tg\experisci\experiment\handlers\experiment_handler.dm" @@ -4562,6 +4556,7 @@ #include "code\modules\research\tg\techwebs\nodes\circuit_nodes.dm" #include "code\modules\research\tg\techwebs\nodes\cyborg_nodes.dm" #include "code\modules\research\tg\techwebs\nodes\engi_nodes.dm" +#include "code\modules\research\tg\techwebs\nodes\material_nodes.dm" #include "code\modules\research\tg\techwebs\nodes\mech_nodes.dm" #include "code\modules\research\tg\techwebs\nodes\medbay_nodes.dm" #include "code\modules\research\tg\techwebs\nodes\mining_nodes.dm"