a394ccdc2b
removes materials list from items, uses custom_materials instead. This might introduce some bugs so we should testmerge this for a while (and Ill test stuff locally as much as I can) this also adds material crafting to sheets. Test case being chairs. In the future we can add stuff like tables, walls, doors etc. also applies materials to everything, with fixes, which can close #46299
68 lines
2.3 KiB
Plaintext
68 lines
2.3 KiB
Plaintext
//File with the circuitboard and circuitboard/machine class definitions and procs
|
|
|
|
|
|
// Circuitboard
|
|
|
|
/obj/item/circuitboard
|
|
name = "circuit board"
|
|
icon = 'icons/obj/module.dmi'
|
|
icon_state = "id_mod"
|
|
item_state = "electronic"
|
|
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
|
|
custom_materials = list(/datum/material/glass=1000)
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
grind_results = list(/datum/reagent/silicon = 20)
|
|
var/build_path = null
|
|
|
|
/obj/item/circuitboard/proc/apply_default_parts(obj/machinery/M)
|
|
return
|
|
|
|
// Circuitboard/machine
|
|
/*Common Parts: Parts List: Ignitor, Timer, Infra-red laser, Infra-red sensor, t_scanner, Capacitor, Valve, sensor unit,
|
|
micro-manipulator, console screen, beaker, Microlaser, matter bin, power cells.
|
|
*/
|
|
|
|
/obj/item/circuitboard/machine
|
|
var/needs_anchored = TRUE // Whether this machine must be anchored to be constructed.
|
|
var/list/req_components // Components required by the machine.
|
|
// Example: list(/obj/item/stock_parts/matter_bin = 5)
|
|
|
|
var/list/def_components // Default replacements for req_components, to be used in apply_default_parts instead of req_components types
|
|
// Example: list(/obj/item/stock_parts/matter_bin = /obj/item/stock_parts/matter_bin/super)
|
|
|
|
// Applies the default parts defined by the circuit board when the machine is created
|
|
/obj/item/circuitboard/machine/apply_default_parts(obj/machinery/M)
|
|
if(!req_components)
|
|
return
|
|
|
|
M.component_parts = list(src) // List of components always contains a board
|
|
moveToNullspace()
|
|
|
|
for(var/comp_path in req_components)
|
|
var/comp_amt = req_components[comp_path]
|
|
if(!comp_amt)
|
|
continue
|
|
|
|
if(def_components && def_components[comp_path])
|
|
comp_path = def_components[comp_path]
|
|
|
|
if(ispath(comp_path, /obj/item/stack))
|
|
M.component_parts += new comp_path(null, comp_amt)
|
|
else
|
|
for(var/i in 1 to comp_amt)
|
|
M.component_parts += new comp_path(null)
|
|
|
|
M.RefreshParts()
|
|
|
|
/obj/item/circuitboard/machine/examine(mob/user)
|
|
. = ..()
|
|
if(LAZYLEN(req_components))
|
|
var/list/nice_list = list()
|
|
for(var/B in req_components)
|
|
var/atom/A = B
|
|
if(!ispath(A))
|
|
continue
|
|
nice_list += list("[req_components[A]] [initial(A.name)]")
|
|
. += "<span class='notice'>Required components: [english_list(nice_list)].</span>"
|