//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 /obj/machinery/constructable_frame //Made into a seperate type to make future revisions easier. name = "machine frame" icon = 'icons/obj/stock_parts.dmi' icon_state = "box_0" density = 1 anchored = 1 use_power = 0 var/obj/item/weapon/circuitboard/circuit = null var/list/components = null var/list/req_components = null var/list/req_component_names = null // user-friendly names of components var/state = 1 // For pods var/list/connected_parts = list() var/pattern_idx=0 // unfortunately, we have to instance the objects really quickly to get the names // fortunately, this is only called once when the board is added and the items are immediately GC'd // and none of the parts do much in their constructors /obj/machinery/constructable_frame/proc/update_namelist() if(!req_components) return req_component_names = new() for(var/tname in req_components) var/path = tname var/obj/O = new path() req_component_names[tname] = O.name /obj/machinery/constructable_frame/proc/get_req_components_amt() var/amt = 0 for(var/path in req_components) amt += req_components[path] return amt // update description of required components remaining /obj/machinery/constructable_frame/proc/update_req_desc() if(!req_components || !req_component_names) return var/hasContent = 0 desc = "Requires" for(var/i = 1 to req_components.len) var/tname = req_components[i] var/amt = req_components[tname] if(amt == 0) continue var/use_and = i == req_components.len desc += "[(hasContent ? (use_and ? ", and" : ",") : "")] [amt] [amt == 1 ? req_component_names[tname] : "[req_component_names[tname]]\s"]" hasContent = 1 if(!hasContent) desc = "Does not require any more components." else desc += "." /obj/machinery/constructable_frame/machine_frame/attackby(obj/item/P as obj, mob/user as mob, params) if(P.crit_fail) to_chat(user, "This part is faulty, you cannot add this to the machine!") return switch(state) if(1) if(istype(P, /obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/C = P if(C.amount >= 5) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) to_chat(user, "You start to add cables to the frame.") if(do_after(user, 20, target = src)) if(C.amount >= 5 && state == 1) C.use(5) to_chat(user, "You add cables to the frame.") state = 2 icon_state = "box_1" else to_chat(user, "You need five length of cable to wire the frame.") return else if(istype(P, /obj/item/stack/sheet/glass)) var/obj/item/stack/sheet/glass/G = P if(G.amount<5) to_chat(user, "\red You do not have enough glass to build a display case.") return G.use(5) to_chat(user, "\blue You add the glass to the frame.") playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1) new /obj/structure/displaycase_frame(src.loc) qdel(src) return if(istype(P, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) to_chat(user, "You dismantle the frame.") new /obj/item/stack/sheet/metal(src.loc, 5) qdel(src) if(2) if(istype(P, /obj/item/weapon/circuitboard)) var/obj/item/weapon/circuitboard/B = P if(B.board_type == "machine") playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) to_chat(user, "You add the circuit board to the frame.") circuit = P user.drop_item() P.loc = src icon_state = "box_2" state = 3 components = list() req_components = circuit.req_components.Copy() update_namelist() update_req_desc() else to_chat(user, "This frame does not accept circuit boards of this type!") if(istype(P, /obj/item/weapon/wirecutters)) playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) to_chat(user, "You remove the cables.") state = 1 icon_state = "box_0" var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil(src.loc,5) A.amount = 5 if(3) if(istype(P, /obj/item/weapon/crowbar)) playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) state = 2 circuit.loc = src.loc circuit = null if(components.len == 0) to_chat(user, "You remove the circuit board.") else to_chat(user, "You remove the circuit board and other components.") for(var/obj/item/I in components) I.loc = src.loc desc = initial(desc) req_components = null components = null icon_state = "box_1" if(istype(P, /obj/item/weapon/screwdriver)) var/component_check = 1 for(var/R in req_components) if(req_components[R] > 0) component_check = 0 break if(component_check) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) var/obj/machinery/new_machine = new src.circuit.build_path(src.loc) new_machine.construction() for(var/obj/O in new_machine.component_parts) qdel(O) new_machine.component_parts = list() for(var/obj/O in src) O.loc = null new_machine.component_parts += O circuit.loc = null new_machine.RefreshParts() qdel(src) return if(istype(P, /obj/item/weapon/storage/part_replacer) && P.contents.len && get_req_components_amt()) var/obj/item/weapon/storage/part_replacer/replacer = P var/list/added_components = list() var/list/part_list = list() //Assemble a list of current parts, then sort them by their rating! for(var/obj/item/weapon/stock_parts/co in replacer) part_list += co for(var/path in req_components) while(req_components[path] > 0 && (locate(path) in part_list)) var/obj/item/part = (locate(path) in part_list) if(!part.crit_fail) added_components[part] = path replacer.remove_from_storage(part, src) req_components[path]-- part_list -= part for(var/obj/item/weapon/stock_parts/part in added_components) components += part to_chat(user, "[part.name] applied.") replacer.play_rped_sound() update_req_desc() return if(istype(P, /obj/item)) var/success for(var/I in req_components) if(istype(P, I) && (req_components[I] > 0) && (!(P.flags & NODROP) || istype(P, /obj/item/stack))) success=1 playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) if(istype(P, /obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/CP = P var/camt = min(CP.amount, req_components[I]) var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src) CC.amount = camt CC.update_icon() CP.use(camt) components += CC req_components[I] -= camt update_req_desc() break user.drop_item() P.loc = src components += P req_components[I]-- update_req_desc() return 1 if(!success) to_chat(user, "You cannot add that to the machine!") return 0 //Machine Frame Circuit Boards /*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. Note: Once everything is added to the public areas, will add MAT_METAL and MAT_GLASS to circuit boards since autolathe won't be able to destroy them and players will be able to make replacements. */ /obj/item/weapon/circuitboard/vendor name = "circuit board (Booze-O-Mat Vendor)" build_path = /obj/machinery/vending/boozeomat board_type = "machine" origin_tech = "programming=1" frame_desc = "Requires 3 Resupply Canisters." req_components = list( /obj/item/weapon/vending_refill/boozeomat = 3) var/list/names_paths = list("Booze-O-Mat" = /obj/machinery/vending/boozeomat, "Solar's Best Hot Drinks" = /obj/machinery/vending/coffee, "Getmore Chocolate Corp" = /obj/machinery/vending/snack, "Robust Softdrinks" = /obj/machinery/vending/cola, "ShadyCigs Deluxe" = /obj/machinery/vending/cigarette, "AutoDrobe" = /obj/machinery/vending/autodrobe, "Hatlord 9000" = /obj/machinery/vending/hatdispenser, "Suitlord 9000" = /obj/machinery/vending/suitdispenser, "Shoelord 9000" = /obj/machinery/vending/shoedispenser, "ClothesMate" = /obj/machinery/vending/clothing, "CritterCare" = /obj/machinery/vending/crittercare) /obj/item/weapon/circuitboard/vendor/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/screwdriver)) set_type(null, user) /obj/item/weapon/circuitboard/vendor/proc/set_type(typepath, mob/user) var/new_name = "Booze-O-Mat Vendor" if(!typepath) new_name = input("Circuit Setting", "What would you change the board setting to?") in names_paths typepath = names_paths[new_name] else for(var/name in names_paths) if(names_paths[name] == typepath) new_name = name break build_path = typepath name = "circuit board ([new_name])" req_components = list(text2path("/obj/item/weapon/vending_refill/[copytext("[build_path]", 24)]") = 3) if(user) to_chat(user, "You set the board to [new_name].") /obj/item/weapon/circuitboard/smes name = "circuit board (SMES)" build_path = /obj/machinery/power/smes board_type = "machine" origin_tech = "programming=4;powerstorage=5;engineering=5" frame_desc = "Requires 5 pieces of cable, 5 Power Cells and 1 Capacitor." req_components = list( /obj/item/stack/cable_coil = 5, /obj/item/weapon/stock_parts/cell = 5, /obj/item/weapon/stock_parts/capacitor = 1) /obj/item/weapon/circuitboard/emitter name = "circuit board (Emitter)" build_path = /obj/machinery/power/emitter board_type = "machine" origin_tech = "programming=4;powerstorage=5;engineering=5" req_components = list( /obj/item/weapon/stock_parts/micro_laser = 1, /obj/item/weapon/stock_parts/manipulator = 1) /obj/item/weapon/circuitboard/power_compressor name = "circuit board (Power Compressor)" build_path = /obj/machinery/power/compressor board_type = "machine" origin_tech = "programming=4;powerstorage=5;engineering=4" req_components = list( /obj/item/stack/cable_coil = 5, /obj/item/weapon/stock_parts/manipulator = 6) /obj/item/weapon/circuitboard/power_turbine name = "circuit board (Power Turbine)" build_path = /obj/machinery/power/turbine board_type = "machine" origin_tech = "programming=4;powerstorage=4;engineering=5" req_components = list( /obj/item/stack/cable_coil = 5, /obj/item/weapon/stock_parts/capacitor = 6) /obj/item/weapon/circuitboard/thermomachine name = "circuit board (Freezer)" desc = "Use screwdriver to switch between heating and cooling modes." build_path = /obj/machinery/atmospherics/unary/cold_sink/freezer board_type = "machine" origin_tech = "programming=3;plasmatech=3" frame_desc = "Requires 2 Matter Bins, 2 Micro Lasers, 1 piece of cable and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 2, /obj/item/weapon/stock_parts/micro_laser = 2, /obj/item/stack/cable_coil = 1, /obj/item/weapon/stock_parts/console_screen = 1) /obj/item/weapon/circuitboard/thermomachine/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/screwdriver)) if(build_path == /obj/machinery/atmospherics/unary/cold_sink/freezer) build_path = /obj/machinery/atmospherics/unary/heat_reservoir/heater name = "circuit board (Heater)" to_chat(user, "You set the board to heating.") else build_path = /obj/machinery/atmospherics/unary/cold_sink/freezer name = "circuit board (Freezer)" to_chat(user, "You set the board to cooling.") /obj/item/weapon/circuitboard/biogenerator name = "circuit board (Biogenerator)" build_path = /obj/machinery/biogenerator board_type = "machine" origin_tech = "programming=3;biotech=2;materials=3" frame_desc = "Requires 1 Matter Bin, 1 Manipulator, 1 piece of cable and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1, /obj/item/stack/cable_coil = 1, /obj/item/weapon/stock_parts/console_screen = 1) /obj/item/weapon/circuitboard/hydroponics name = "circuit board (Hydroponics Tray)" build_path = /obj/machinery/portable_atmospherics/hydroponics board_type = "machine" origin_tech = "programming=1;biotech=1" frame_desc = "Requires 2 Matter Bins and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 2, /obj/item/weapon/stock_parts/console_screen = 1) /obj/item/weapon/circuitboard/microwave name = "circuit board (Microwave)" build_path = /obj/machinery/kitchen_machine/microwave board_type = "machine" origin_tech = "programming=1" frame_desc = "Requires 1 Micro Laser, 2 pieces of cable and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/micro_laser = 1, /obj/item/stack/cable_coil = 2, /obj/item/weapon/stock_parts/console_screen = 1) /obj/item/weapon/circuitboard/oven name = "circuit board (Oven)" build_path = /obj/machinery/kitchen_machine/oven board_type = "machine" origin_tech = "programming=1;plasmatech=1" frame_desc = "Requires 2 Micro Lasers, 5 pieces of cable and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/micro_laser = 2, /obj/item/stack/cable_coil = 5, /obj/item/weapon/stock_parts/console_screen = 1) /obj/item/weapon/circuitboard/grill name = "circuit board (Grill)" build_path = /obj/machinery/kitchen_machine/grill board_type = "machine" origin_tech = "programming=1;plasmatech=1" frame_desc = "Requires 2 Micro Lasers, 5 pieces of cable and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/micro_laser = 2, /obj/item/stack/cable_coil = 5, /obj/item/weapon/stock_parts/console_screen = 1) /obj/item/weapon/circuitboard/candy_maker name = "circuit board (Candy Maker)" build_path = /obj/machinery/kitchen_machine/candy_maker board_type = "machine" origin_tech = "programming=2" frame_desc = "Requires 1 Manipulator, 5 pieces of cable and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/manipulator = 1, /obj/item/stack/cable_coil = 5, /obj/item/weapon/stock_parts/console_screen = 1) /obj/item/weapon/circuitboard/deepfryer name = "circuit board (Deep Fryer)" build_path = /obj/machinery/cooker/deepfryer board_type = "machine" origin_tech = "programming=2" frame_desc = "Requires 2 Micro Lasers and 5 pieces of cable." req_components = list( /obj/item/weapon/stock_parts/micro_laser = 2, /obj/item/stack/cable_coil = 5) /obj/item/weapon/circuitboard/gibber name = "circuit board (Gibber)" build_path = /obj/machinery/gibber board_type = "machine" origin_tech = "programming=1" req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1) /obj/item/weapon/circuitboard/tesla_coil name = "circuit board (Tesla Coil)" build_path = /obj/machinery/power/tesla_coil board_type = "machine" origin_tech = "programming=1" req_components = list( /obj/item/weapon/stock_parts/capacitor = 1) /obj/item/weapon/circuitboard/grounding_rod name = "circuit board (Grounding Rod)" build_path = /obj/machinery/power/grounding_rod board_type = "machine" origin_tech = "programming=1" req_components = list( /obj/item/weapon/stock_parts/capacitor = 1) /obj/item/weapon/circuitboard/processor name = "circuit board (Food processor)" build_path = /obj/machinery/processor board_type = "machine" origin_tech = "programming=1" req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1) /obj/item/weapon/circuitboard/recycler name = "circuit board (Recycler)" build_path = /obj/machinery/recycler board_type = "machine" origin_tech = "programming=1" req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1) /obj/item/weapon/circuitboard/seed_extractor name = "circuit board (Seed Extractor)" build_path = /obj/machinery/seed_extractor board_type = "machine" origin_tech = "programming=1" req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1) /obj/item/weapon/circuitboard/smartfridge name = "circuit board (Smartfridge)" build_path = /obj/machinery/smartfridge board_type = "machine" origin_tech = "programming=1" req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1) var/list/fridge_names_paths = list( "\improper SmartFridge" = /obj/machinery/smartfridge, "\improper MegaSeed Servitor" = /obj/machinery/smartfridge/seeds, "\improper Refrigerated Medicine Storage" = /obj/machinery/smartfridge/medbay, "\improper Slime Extract Storage" = /obj/machinery/smartfridge/secure/extract, "\improper Secure Refrigerated Medicine Storage" = /obj/machinery/smartfridge/secure/medbay, "\improper Smart Chemical Storage" = /obj/machinery/smartfridge/secure/chemistry, "smart virus storage" = /obj/machinery/smartfridge/secure/chemistry/virology, "\improper Drink Showcase" = /obj/machinery/smartfridge/drinks ) /obj/item/weapon/circuitboard/smartfridge/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/screwdriver)) set_type(null, user) /obj/item/weapon/circuitboard/smartfridge/proc/set_type(typepath, mob/user) var/new_name = "" if(!typepath) new_name = input("Circuit Setting", "What would you change the board setting to?") in fridge_names_paths typepath = fridge_names_paths[new_name] else for(var/name in fridge_names_paths) if(fridge_names_paths[name] == typepath) new_name = name break build_path = typepath name = new_name if(findtextEx(new_name, "\improper")) new_name = replacetext(new_name, "\improper", "") if(user) to_chat(user, "You set the board to [new_name].") /obj/item/weapon/circuitboard/monkey_recycler name = "circuit board (Monkey Recycler)" build_path = /obj/machinery/monkey_recycler board_type = "machine" origin_tech = "programming=1" req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1) /obj/item/weapon/circuitboard/holopad name = "circuit board (AI Holopad)" build_path = /obj/machinery/hologram/holopad board_type = "machine" origin_tech = "programming=1" req_components = list( /obj/item/weapon/stock_parts/capacitor = 1) /obj/item/weapon/circuitboard/chem_dispenser name = "circuit board (Portable Chem Dispenser)" build_path = /obj/machinery/chem_dispenser/constructable board_type = "machine" origin_tech = "materials=4;engineering=4;programming=4;plasmatech=3;biotech=3" frame_desc = "Requires 2 Matter Bins, 1 Capacitor, 1 Manipulator, 1 Console Screen, and 1 Power Cell." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 2, /obj/item/weapon/stock_parts/capacitor = 1, /obj/item/weapon/stock_parts/manipulator = 1, /obj/item/weapon/stock_parts/console_screen = 1, /obj/item/weapon/stock_parts/cell = 1) /obj/item/weapon/circuitboard/chem_master name = "circuit board (Chem Master 2999)" build_path = /obj/machinery/chem_master/constructable board_type = "machine" origin_tech = "materials=2;programming=2;biotech=1" req_components = list( /obj/item/weapon/reagent_containers/glass/beaker = 2, /obj/item/weapon/stock_parts/manipulator = 1, /obj/item/weapon/stock_parts/console_screen = 1) /obj/item/weapon/circuitboard/chem_heater name = "circuit board (Chemical Heater)" build_path = /obj/machinery/chem_heater board_type = "machine" origin_tech = "materials=2;engineering=2" frame_desc = "Requires 1 Micro Laser and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/micro_laser = 1, /obj/item/weapon/stock_parts/console_screen = 1) //Almost the same recipe as destructive analyzer to give people choices. /obj/item/weapon/circuitboard/experimentor name = "circuit board (E.X.P.E.R.I-MENTOR)" build_path = /obj/machinery/r_n_d/experimentor board_type = "machine" origin_tech = "magnets=1;engineering=1;programming=1;biotech=1;bluespace=2" req_components = list( /obj/item/weapon/stock_parts/scanning_module = 1, /obj/item/weapon/stock_parts/manipulator = 2, /obj/item/weapon/stock_parts/micro_laser = 2) /obj/item/weapon/circuitboard/destructive_analyzer name = "Circuit board (Destructive Analyzer)" build_path = /obj/machinery/r_n_d/destructive_analyzer board_type = "machine" origin_tech = "magnets=2;engineering=2;programming=2" frame_desc = "Requires 1 Scanning Module, 1 Manipulator, and 1 Micro-Laser." req_components = list( /obj/item/weapon/stock_parts/scanning_module = 1, /obj/item/weapon/stock_parts/manipulator = 1, /obj/item/weapon/stock_parts/micro_laser = 1) /obj/item/weapon/circuitboard/autolathe name = "Circuit board (Autolathe)" build_path = /obj/machinery/autolathe board_type = "machine" origin_tech = "engineering=2;programming=2" frame_desc = "Requires 3 Matter Bins, 1 Manipulator, and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 3, /obj/item/weapon/stock_parts/manipulator = 1, /obj/item/weapon/stock_parts/console_screen = 1) /obj/item/weapon/circuitboard/protolathe name = "Circuit board (Protolathe)" build_path = /obj/machinery/r_n_d/protolathe board_type = "machine" origin_tech = "engineering=2;programming=2" frame_desc = "Requires 2 Matter Bins, 2 Manipulators, and 2 Beakers." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 2, /obj/item/weapon/stock_parts/manipulator = 2, /obj/item/weapon/reagent_containers/glass/beaker = 2) /obj/item/weapon/circuitboard/circuit_imprinter name = "Circuit board (Circuit Imprinter)" build_path = /obj/machinery/r_n_d/circuit_imprinter board_type = "machine" origin_tech = "engineering=2;programming=2" frame_desc = "Requires 1 Matter Bin, 1 Manipulator, and 2 Beakers." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1, /obj/item/weapon/reagent_containers/glass/beaker = 2) /obj/item/weapon/circuitboard/pacman name = "Circuit Board (PACMAN-type Generator)" build_path = /obj/machinery/power/port_gen/pacman board_type = "machine" origin_tech = "programming=3:powerstorage=3;plasmatech=3;engineering=3" frame_desc = "Requires 1 Matter Bin, 1 Micro-Laser, 2 Pieces of Cable, and 1 Capacitor." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/micro_laser = 1, /obj/item/stack/cable_coil = 2, /obj/item/weapon/stock_parts/capacitor = 1) /obj/item/weapon/circuitboard/pacman/super name = "Circuit Board (SUPERPACMAN-type Generator)" build_path = /obj/machinery/power/port_gen/pacman/super origin_tech = "programming=3;powerstorage=4;engineering=4" /obj/item/weapon/circuitboard/pacman/mrs name = "Circuit Board (MRSPACMAN-type Generator)" build_path = /obj/machinery/power/port_gen/pacman/mrs origin_tech = "programming=3;powerstorage=5;engineering=5" obj/item/weapon/circuitboard/rdserver name = "Circuit Board (R&D Server)" build_path = /obj/machinery/r_n_d/server board_type = "machine" origin_tech = "programming=3" frame_desc = "Requires 2 pieces of cable, and 1 Scanning Module." req_components = list( /obj/item/stack/cable_coil = 2, /obj/item/weapon/stock_parts/scanning_module = 1) /obj/item/weapon/circuitboard/mechfab name = "Circuit board (Exosuit Fabricator)" build_path = /obj/machinery/mecha_part_fabricator board_type = "machine" origin_tech = "programming=3;engineering=3" frame_desc = "Requires 2 Matter Bins, 1 Manipulator, 1 Micro-Laser and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 2, /obj/item/weapon/stock_parts/manipulator = 1, /obj/item/weapon/stock_parts/micro_laser = 1, /obj/item/weapon/stock_parts/console_screen = 1) /obj/item/weapon/circuitboard/podfab name = "Circuit board (Spacepod Fabricator)" build_path = /obj/machinery/spod_part_fabricator //ah fuck my life board_type = "machine" origin_tech = "programming=3;engineering=3" frame_desc = "Requires 3 Matter Bins, 2 Manipulators, 2 Micro-Lasers, and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 3, /obj/item/weapon/stock_parts/manipulator = 2, /obj/item/weapon/stock_parts/micro_laser = 2, /obj/item/weapon/stock_parts/console_screen = 1) /obj/item/weapon/circuitboard/clonepod name = "Circuit board (Clone Pod)" build_path = /obj/machinery/clonepod board_type = "machine" origin_tech = "programming=3;biotech=3" frame_desc = "Requires 2 Manipulator, 2 Scanning Module, 2 pieces of cable and 1 Console Screen." req_components = list( /obj/item/stack/cable_coil = 2, /obj/item/weapon/stock_parts/scanning_module = 2, /obj/item/weapon/stock_parts/manipulator = 2, /obj/item/weapon/stock_parts/console_screen = 1) /obj/item/weapon/circuitboard/clonescanner name = "Circuit board (Cloning Scanner)" build_path = /obj/machinery/dna_scannernew board_type = "machine" origin_tech = "programming=2;biotech=2" frame_desc = "Requires 1 Scanning Module, 1 Manipulator, 1 Micro-Laser, 2 pieces of cable and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/scanning_module = 1, /obj/item/weapon/stock_parts/manipulator = 1, /obj/item/weapon/stock_parts/micro_laser = 1, /obj/item/weapon/stock_parts/console_screen = 1, /obj/item/stack/cable_coil = 2,) /obj/item/weapon/circuitboard/mech_recharger name = "circuit board (Mech Bay Recharger)" build_path = /obj/machinery/mech_bay_recharge_port board_type = "machine" origin_tech = "programming=3;powerstorage=4;engineering=4" frame_desc = "Requires 1 piece of cable and 5 Capacitors." req_components = list( /obj/item/stack/cable_coil = 1, /obj/item/weapon/stock_parts/capacitor = 5) /obj/item/weapon/circuitboard/teleporter_hub name = "circuit board (Teleporter Hub)" build_path = /obj/machinery/teleport/hub board_type = "machine" origin_tech = "programming=3;engineering=5;bluespace=5;materials=4" frame_desc = "Requires 3 Bluespace Crystals and 1 Matter Bin." req_components = list( /obj/item/weapon/ore/bluespace_crystal = 3, /obj/item/weapon/stock_parts/matter_bin = 1) /obj/item/weapon/circuitboard/teleporter_station name = "circuit board (Teleporter Station)" build_path = /obj/machinery/teleport/station board_type = "machine" origin_tech = "programming=4;engineering=4;bluespace=4" frame_desc = "Requires 2 Bluespace Crystals, 2 Capacitors and 1 Console Screen." req_components = list( /obj/item/weapon/ore/bluespace_crystal = 2, /obj/item/weapon/stock_parts/capacitor = 2, /obj/item/weapon/stock_parts/console_screen = 1) /obj/item/weapon/circuitboard/teleporter_perma name = "circuit board (Permanent Teleporter)" build_path = /obj/machinery/teleport/perma board_type = "machine" origin_tech = "programming=3;engineering=5;bluespace=5;materials=4" frame_desc = "Requires 3 Bluespace Crystals and 1 Matter Bin." req_components = list( /obj/item/weapon/ore/bluespace_crystal = 3, /obj/item/weapon/stock_parts/matter_bin = 1) var/target /obj/item/weapon/circuitboard/telesci_pad name = "Circuit board (Telepad)" build_path = /obj/machinery/telepad board_type = "machine" origin_tech = "programming=4;engineering=3;materials=3;bluespace=4" frame_desc = "Requires 2 Bluespace Crystals, 1 Capacitor, 1 piece of cable and 1 Console Screen." req_components = list( /obj/item/weapon/ore/bluespace_crystal = 2, /obj/item/weapon/stock_parts/capacitor = 1, /obj/item/stack/cable_coil = 1, /obj/item/weapon/stock_parts/console_screen = 1) /obj/item/weapon/circuitboard/sleeper name = "circuit board (Sleeper)" build_path = /obj/machinery/sleeper board_type = "machine" origin_tech = "programming=3;biotech=2;engineering=3;materials=3" frame_desc = "Requires 1 Matter Bin, 1 Manipulator, 1 piece of cable and 2 Console Screens." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1, /obj/item/stack/cable_coil = 1, /obj/item/weapon/stock_parts/console_screen = 2) /obj/item/weapon/circuitboard/bodyscanner name = "circuit board (Body Scanner)" build_path = /obj/machinery/bodyscanner board_type = "machine" origin_tech = "programming=3;biotech=2;engineering=3;materials=3" frame_desc = "Requires 1 Scanning Module, 2 pieces of cable and 2 Console Screens." req_components = list( /obj/item/weapon/stock_parts/scanning_module = 1, /obj/item/stack/cable_coil = 2, /obj/item/weapon/stock_parts/console_screen = 2) /obj/item/weapon/circuitboard/bodyscanner_console name = "circuit board (Body Scanner Console)" build_path = /obj/machinery/body_scanconsole board_type = "machine" origin_tech = "programming=3;biotech=2;engineering=3;materials=3" frame_desc = "Requires 2 pieces of cable and 2 Console Screens." req_components = list( /obj/item/stack/cable_coil = 2, /obj/item/weapon/stock_parts/console_screen = 2) /obj/item/weapon/circuitboard/cryo_tube name = "circuit board (Cryotube)" build_path = /obj/machinery/atmospherics/unary/cryo_cell board_type = "machine" origin_tech = "programming=4;biotech=3;engineering=4" frame_desc = "Requires 1 Matter Bin, 1 piece of cable and 4 Console Screens." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/stack/cable_coil = 1, /obj/item/weapon/stock_parts/console_screen = 4) /obj/item/weapon/circuitboard/cyborgrecharger name = "circuit board (Cyborg Recharger)" build_path = /obj/machinery/recharge_station board_type = "machine" origin_tech = "powerstorage=3;engineering=3" frame_desc = "Requires 2 Capacitors, 1 Power Cell and 1 Manipulator." req_components = list( /obj/item/weapon/stock_parts/capacitor = 2, /obj/item/weapon/stock_parts/cell = 1, /obj/item/weapon/stock_parts/manipulator = 1) // Telecomms circuit boards: /obj/item/weapon/circuitboard/telecomms/receiver name = "Circuit Board (Subspace Receiver)" build_path = /obj/machinery/telecomms/receiver board_type = "machine" origin_tech = "programming=2;engineering=2;bluespace=1" frame_desc = "Requires 1 Subspace Ansible, 1 Hyperwave Filter, 2 Manipulators, and 1 Micro-Laser." req_components = list( /obj/item/weapon/stock_parts/subspace/ansible = 1, /obj/item/weapon/stock_parts/subspace/filter = 1, /obj/item/weapon/stock_parts/manipulator = 2, /obj/item/weapon/stock_parts/micro_laser = 1) /obj/item/weapon/circuitboard/telecomms/hub name = "Circuit Board (Hub Mainframe)" build_path = /obj/machinery/telecomms/hub board_type = "machine" origin_tech = "programming=2;engineering=2" frame_desc = "Requires 2 Manipulators, 2 Cable Coil and 2 Hyperwave Filter." req_components = list( /obj/item/weapon/stock_parts/manipulator = 2, /obj/item/stack/cable_coil = 2, /obj/item/weapon/stock_parts/subspace/filter = 2) /obj/item/weapon/circuitboard/telecomms/relay name = "Circuit Board (Relay Mainframe)" build_path = /obj/machinery/telecomms/relay board_type = "machine" origin_tech = "programming=2;engineering=2;bluespace=2" frame_desc = "Requires 2 Manipulators, 2 Cable Coil and 2 Hyperwave Filters." req_components = list( /obj/item/weapon/stock_parts/manipulator = 2, /obj/item/stack/cable_coil = 2, /obj/item/weapon/stock_parts/subspace/filter = 2) /obj/item/weapon/circuitboard/telecomms/bus name = "Circuit Board (Bus Mainframe)" build_path = /obj/machinery/telecomms/bus board_type = "machine" origin_tech = "programming=2;engineering=2" frame_desc = "Requires 2 Manipulators, 1 Cable Coil and 1 Hyperwave Filter." req_components = list( /obj/item/weapon/stock_parts/manipulator = 2, /obj/item/stack/cable_coil = 1, /obj/item/weapon/stock_parts/subspace/filter = 1) /obj/item/weapon/circuitboard/telecomms/processor name = "Circuit Board (Processor Unit)" build_path = /obj/machinery/telecomms/processor board_type = "machine" origin_tech = "programming=2;engineering=2" frame_desc = "Requires 3 Manipulators, 1 Hyperwave Filter, 2 Treatment Disks, 1 Wavelength Analyzer, 2 Cable Coils and 1 Subspace Amplifier." req_components = list( /obj/item/weapon/stock_parts/manipulator = 3, /obj/item/weapon/stock_parts/subspace/filter = 1, /obj/item/weapon/stock_parts/subspace/treatment = 2, /obj/item/weapon/stock_parts/subspace/analyzer = 1, /obj/item/stack/cable_coil = 2, /obj/item/weapon/stock_parts/subspace/amplifier = 1) /obj/item/weapon/circuitboard/telecomms/server name = "Circuit Board (Telecommunication Server)" build_path = /obj/machinery/telecomms/server board_type = "machine" origin_tech = "programming=2;engineering=2" frame_desc = "Requires 2 Manipulators, 1 Cable Coil and 1 Hyperwave Filter." req_components = list( /obj/item/weapon/stock_parts/manipulator = 2, /obj/item/stack/cable_coil = 1, /obj/item/weapon/stock_parts/subspace/filter = 1) /obj/item/weapon/circuitboard/telecomms/broadcaster name = "Circuit Board (Subspace Broadcaster)" build_path = /obj/machinery/telecomms/broadcaster board_type = "machine" origin_tech = "programming=2;engineering=2;bluespace=1" frame_desc = "Requires 2 Manipulators, 1 Cable Coil, 1 Hyperwave Filter, 1 Ansible Crystal and 2 High-Powered Micro-Lasers. " req_components = list( /obj/item/weapon/stock_parts/manipulator = 2, /obj/item/stack/cable_coil = 1, /obj/item/weapon/stock_parts/subspace/filter = 1, /obj/item/weapon/stock_parts/subspace/crystal = 1, /obj/item/weapon/stock_parts/micro_laser/high = 2) /obj/item/weapon/circuitboard/ore_redemption name = "circuit board (Ore Redemption)" build_path = /obj/machinery/mineral/ore_redemption board_type = "machine" origin_tech = "programming=1;engineering=2" req_components = list( /obj/item/weapon/stock_parts/console_screen = 1, /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/micro_laser = 1, /obj/item/weapon/stock_parts/manipulator = 1, /obj/item/device/assembly/igniter = 1) /obj/item/weapon/circuitboard/mining_equipment_vendor name = "circuit board (Mining Equipment Vendor)" build_path = /obj/machinery/mineral/equipment_vendor board_type = "machine" origin_tech = "programming=1;engineering=2" req_components = list( /obj/item/weapon/stock_parts/console_screen = 1, /obj/item/weapon/stock_parts/matter_bin = 3) /obj/item/weapon/circuitboard/clawgame name = "circuit board (Claw Game)" build_path = /obj/machinery/arcade/claw board_type = "machine" origin_tech = "programming=2" req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1, /obj/item/stack/cable_coil = 5, /obj/item/stack/sheet/glass = 1) /obj/item/weapon/circuitboard/prize_counter name = "circuit board (Prize Counter)" build_path = /obj/machinery/prize_counter board_type = "machine" origin_tech = "programming=2;materials=2" req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1, /obj/item/weapon/stock_parts/console_screen = 1, /obj/item/stack/cable_coil = 1) /obj/item/weapon/circuitboard/botany_extractor name = "circuit board (Lysis-Isolation Centrifuge)" build_path = /obj/machinery/botany/extractor board_type = "machine" origin_tech = "biotech=3;programming=3" req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/scanning_module = 1, /obj/item/weapon/stock_parts/console_screen = 1) /obj/item/weapon/circuitboard/botany_editor name = "circuit board (Bioballistic Delivery System)" build_path = /obj/machinery/botany/editor board_type = "machine" origin_tech = "biotech=3;programming=3" req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1, /obj/item/weapon/stock_parts/console_screen = 1) /obj/item/weapon/circuitboard/gameboard name = "circuit board (Virtual Gameboard)" build_path = /obj/machinery/gameboard board_type = "machine" origin_tech = "programming=2" req_components = list( /obj/item/weapon/stock_parts/micro_laser = 1, /obj/item/stack/cable_coil = 3, /obj/item/stack/sheet/glass = 1) //Selectable mode board, like vending machine boards /obj/item/weapon/circuitboard/logic_gate name = "circuit board (Logic Connector)" build_path = /obj/machinery/logic_gate board_type = "machine" origin_tech = "programming=1" //This stuff is pretty much the absolute basis of programming, so it's mostly useless for research req_components = list(/obj/item/stack/cable_coil = 1) var/list/names_paths = list( "NOT Gate" = /obj/machinery/logic_gate/not, "OR Gate" = /obj/machinery/logic_gate/or, "AND Gate" = /obj/machinery/logic_gate/and, "NAND Gate" = /obj/machinery/logic_gate/nand, "NOR Gate" = /obj/machinery/logic_gate/nor, "XOR Gate" = /obj/machinery/logic_gate/xor, "XNOR Gate" = /obj/machinery/logic_gate/xnor, "STATUS Gate" = /obj/machinery/logic_gate/status, "CONVERT Gate" = /obj/machinery/logic_gate/convert ) /obj/item/weapon/circuitboard/logic_gate/New() ..() if(build_path == /obj/machinery/logic_gate) //If we spawn the base type board (determined by the base type machine as the build path), become a random gate board var/new_path = names_paths[pick(names_paths)] set_type(new_path) /obj/item/weapon/circuitboard/logic_gate/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/screwdriver)) set_type(null, user) /obj/item/weapon/circuitboard/logic_gate/proc/set_type(typepath, mob/user) var/new_name = "Logic Base" if(!typepath) new_name = input("Circuit Setting", "What would you change the board setting to?") in names_paths typepath = names_paths[new_name] else for(var/name in names_paths) if(names_paths[name] == typepath) new_name = name break build_path = typepath name = "circuit board ([new_name])" if(user) to_chat(user, "You set the board to [new_name].")