//Used by engineering cyborgs in place of generic circuits. /obj/item/electroadaptive_pseudocircuit name = "electroadaptive pseudocircuit" desc = "An all-in-one circuit imprinter, designer, synthesizer, outfitter, creator, and chef. It can be used in place of any generic circuit board during construction." icon = 'icons/obj/module.dmi' icon_state = "boris" w_class = WEIGHT_CLASS_TINY custom_materials = list(/datum/material/iron = 50, /datum/material/glass = 300) var/recharging = FALSE var/circuits = 5 //How many circuits the pseudocircuit has left var/static/recycleable_circuits = typecacheof(list(/obj/item/electronics/firelock, /obj/item/electronics/airalarm, /obj/item/electronics/firealarm, \ /obj/item/electronics/apc))//A typecache of circuits consumable for material /obj/item/electroadaptive_pseudocircuit/Initialize() . = ..() maptext = "[circuits]" /obj/item/electroadaptive_pseudocircuit/examine(mob/user) . = ..() if(iscyborg(user)) . += "It has material for [circuits] circuit[circuits == 1 ? "" : "s"]. Use the pseudocircuit on existing circuits to gain material." . += "Serves as a substitute for fire/air alarm, firelock, and APC electronics." . += "It can also be used on an APC with no power cell to fabricate a low-capacity cell at a high power cost." /obj/item/electroadaptive_pseudocircuit/proc/adapt_circuit(mob/living/silicon/robot/R, circuit_cost = 0) if(QDELETED(R) || !istype(R)) return if(!R.cell) to_chat(R, "You need a power cell installed for that.") return if(!R.cell.use(circuit_cost)) to_chat(R, "You don't have the energy for that (you need [DisplayEnergy(circuit_cost)].)") return if(recharging) to_chat(R, "[src] needs some time to recharge first.") return if(!circuits) to_chat(R, "You need more material. Use [src] on existing simple circuits to break them down.") return playsound(R, 'sound/items/rped.ogg', 50, TRUE) recharging = TRUE circuits-- maptext = "[circuits]" icon_state = "[initial(icon_state)]_recharging" var/recharge_time = min(600, circuit_cost * 5) //40W of cost for one fabrication = 20 seconds of recharge time; this is to prevent spamming addtimer(CALLBACK(src, .proc/recharge), recharge_time) return TRUE //The actual circuit magic itself is done on a per-object basis /obj/item/electroadaptive_pseudocircuit/afterattack(atom/target, mob/living/user, proximity) . = ..() if(!proximity) return if(!is_type_in_typecache(target, recycleable_circuits)) return circuits++ maptext = "[circuits]" user.visible_message("User breaks down [target] with [src].", \ "You recycle [target] into [src]. It now has material for [circuits] circuits.") playsound(user, 'sound/items/deconstruct.ogg', 50, TRUE) qdel(target) /obj/item/electroadaptive_pseudocircuit/proc/recharge() playsound(src, 'sound/machines/chime.ogg', 25, TRUE) recharging = FALSE icon_state = initial(icon_state)