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 <killer65311@gmail.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
Will
2026-03-20 19:38:00 -04:00
committed by GitHub
parent 4c61dc7932
commit 0c8488b0ae
126 changed files with 5731 additions and 2372 deletions
-457
View File
@@ -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
-52
View File
@@ -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
*/
-130
View File
@@ -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
-38
View File
@@ -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
-3
View File
@@ -1,3 +0,0 @@
/datum/category_item/autolathe/devices/sleevecard
name = "sleevecard"
path =/obj/item/paicard/sleevecard
-112
View File
@@ -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
-79
View File
@@ -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
-136
View File
@@ -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
-11
View File
@@ -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
-23
View File
@@ -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
-43
View File
@@ -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
-9
View File
@@ -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)
-70
View File
@@ -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)
-3
View File
@@ -1,3 +0,0 @@
/datum/category_item/autolathe/tools/prybar
name = "prybar"
path =/obj/item/tool/prybar
+27 -15
View File
@@ -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
+58
View File
@@ -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
+58
View File
@@ -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