diff --git a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm index 90ea06fbd5..794b1bfa8e 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm @@ -13,8 +13,8 @@ //TODO : replace with presets or spectrum return rgb(rand(0,255),rand(0,255),rand(0,255)) -/obj/machinery/abductor/gland_dispenser/New() - ..() +/obj/machinery/abductor/gland_dispenser/Initialize() + . = ..() gland_types = subtypesof(/obj/item/organ/heart/gland) gland_types = shuffle(gland_types) gland_colors = new/list(gland_types.len) diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 755f6dd0c9..793313edfd 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -85,9 +85,8 @@ . = ..() var/obj/machinery/nuclearbomb/existing = locate("syndienuke") in GLOB.nuke_list if(existing) - qdel(src) - throw EXCEPTION("Attempted to spawn a syndicate nuke while one already exists at [existing.loc.x],[existing.loc.y],[existing.loc.z]") - return 0 + stack_trace("Attempted to spawn a syndicate nuke while one already exists at [existing.loc.x],[existing.loc.y],[existing.loc.z]") + return INITIALIZE_HINT_QDEL tag = "syndienuke" /obj/machinery/nuclearbomb/attackby(obj/item/I, mob/user, params) diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm index d50af412a4..80400fee05 100644 --- a/code/game/machinery/Beacon.dm +++ b/code/game/machinery/Beacon.dm @@ -11,8 +11,8 @@ idle_power_usage = 0 var/obj/item/device/radio/beacon/Beacon -/obj/machinery/bluespace_beacon/New() - ..() +/obj/machinery/bluespace_beacon/Initialize() + . = ..() var/turf/T = loc Beacon = new /obj/item/device/radio/beacon Beacon.invisibility = INVISIBILITY_MAXIMUM @@ -21,9 +21,7 @@ hide(T.intact) /obj/machinery/bluespace_beacon/Destroy() - if(Beacon) - qdel(Beacon) - Beacon = null + QDEL_NULL(Beacon) return ..() // update the invisibility and icon diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm index 3da8871fc4..59bd4265d5 100644 --- a/code/game/machinery/PDApainter.dm +++ b/code/game/machinery/PDApainter.dm @@ -27,12 +27,16 @@ return -/obj/machinery/pdapainter/New() - ..() - var/blocked = list(/obj/item/device/pda/ai/pai, /obj/item/device/pda/ai, /obj/item/device/pda/heads, - /obj/item/device/pda/clear, /obj/item/device/pda/syndicate) - - for(var/P in typesof(/obj/item/device/pda)-blocked) +/obj/machinery/pdapainter/Initialize() + . = ..() + var/list/blocked = list( + /obj/item/device/pda/ai/pai, + /obj/item/device/pda/ai, + /obj/item/device/pda/heads, + /obj/item/device/pda/clear, + /obj/item/device/pda/syndicate) + + for(var/P in typesof(/obj/item/device/pda) - blocked) var/obj/item/device/pda/D = new P //D.name = "PDA Style [colorlist.len+1]" //Gotta set the name, otherwise it all comes up as "PDA" @@ -41,9 +45,7 @@ src.colorlist += D /obj/machinery/pdapainter/Destroy() - if(storedpda) - qdel(storedpda) - storedpda = null + QDEL_NULL(storedpda) return ..() /obj/machinery/pdapainter/on_deconstruction() diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 7171718dce..a14989c199 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -13,6 +13,7 @@ density = FALSE anchored = TRUE state_open = TRUE + circuit = /obj/item/weapon/circuitboard/machine/sleeper var/efficiency = 1 var/min_health = -25 var/list/available_chems @@ -26,24 +27,11 @@ var/list/chem_buttons //Used when emagged to scramble which chem is used, eg: antitoxin -> morphine var/scrambled_chems = FALSE //Are chem buttons scrambled? used as a warning -/obj/machinery/sleeper/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/sleeper(null) - B.apply_default_parts(src) +/obj/machinery/sleeper/Initialize() + . = ..() update_icon() reset_chem_buttons() -/obj/item/weapon/circuitboard/machine/sleeper - name = "Sleeper (Machine Board)" - build_path = /obj/machinery/sleeper - origin_tech = "programming=3;biotech=2;engineering=3" - 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/stack/sheet/glass = 1) - /obj/machinery/sleeper/RefreshParts() var/E for(var/obj/item/weapon/stock_parts/matter_bin/B in component_parts) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/_machinery.dm similarity index 98% rename from code/game/machinery/machinery.dm rename to code/game/machinery/_machinery.dm index f5958843fc..32e0e60fca 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -123,12 +123,18 @@ Class Procs: var/interact_open = FALSE // Can the machine be interacted with when in maint/when the panel is open. var/interact_offline = 0 // Can the machine be interacted with while de-powered. var/speed_process = 0 // Process as fast as possible? + var/obj/item/weapon/circuitboard/circuit // Circuit to be created and inserted when the machinery is created /obj/machinery/Initialize() if(!armor) armor = list(melee = 25, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 70) . = ..() GLOB.machines += src + + if(ispath(circuit, /obj/item/weapon/circuitboard)) + circuit = new circuit + circuit.apply_default_parts(src) + if(!speed_process) START_PROCESSING(SSmachines, src) else diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index 5b5c9bee34..b1fddc8a76 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -7,7 +7,6 @@ GLOBAL_LIST_EMPTY(announcement_systems) desc = "An automated announcement system that handles minor announcements over the radio." icon = 'icons/obj/machines/telecomms.dmi' icon_state = "AAS_On" - var/obj/item/device/radio/headset/radio verb_say = "coldly states" verb_ask = "queries" @@ -16,6 +15,9 @@ GLOBAL_LIST_EMPTY(announcement_systems) idle_power_usage = 20 active_power_usage = 50 + circuit = /obj/item/weapon/circuitboard/machine/announcement_system + + var/obj/item/device/radio/headset/radio var/arrival = "%PERSON has signed up as %RANK" var/arrivalToggle = 1 var/newhead = "%PERSON, %RANK, is the department head." @@ -25,24 +27,12 @@ GLOBAL_LIST_EMPTY(announcement_systems) var/pinklight = "Light_Pink" var/errorlight = "Error_Red" -/obj/machinery/announcement_system/New() - ..() +/obj/machinery/announcement_system/Initialize() + . = ..() GLOB.announcement_systems += src radio = new /obj/item/device/radio/headset/ai(src) - - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/announcement_system(null) - B.apply_default_parts(src) - update_icon() -/obj/item/weapon/circuitboard/machine/announcement_system - name = "Announcement System (Machine Board)" - build_path = /obj/machinery/announcement_system - origin_tech = "programming=3;bluespace=3;magnets=2" - req_components = list( - /obj/item/stack/cable_coil = 2, - /obj/item/weapon/stock_parts/console_screen = 1) - /obj/machinery/announcement_system/update_icon() if(is_operational()) icon_state = (panel_open ? "AAS_On_Open" : "AAS_On") diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 1164851206..c6606c6ced 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -7,9 +7,13 @@ desc = "It produces items using metal and glass." icon_state = "autolathe" density = TRUE + anchored = TRUE + use_power = IDLE_POWER_USE + idle_power_usage = 10 + active_power_usage = 100 + circuit = /obj/item/weapon/circuitboard/machine/autolathe var/operating = FALSE - anchored = TRUE var/list/L = list() var/list/LL = list() var/hacked = FALSE @@ -18,9 +22,7 @@ var/hack_wire var/disable_wire var/shock_wire - use_power = IDLE_POWER_USE - idle_power_usage = 10 - active_power_usage = 100 + var/busy = FALSE var/prod_coeff = 1 @@ -45,30 +47,16 @@ "Imported" ) -/obj/machinery/autolathe/New() - ..() +/obj/machinery/autolathe/Initialize() materials = new /datum/material_container(src, list(MAT_METAL, MAT_GLASS)) - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/autolathe(null) - B.apply_default_parts(src) - wires = new /datum/wires/autolathe(src) files = new /datum/research/autolathe(src) matching_designs = list() - -/obj/item/weapon/circuitboard/machine/autolathe - name = "Autolathe (Machine Board)" - build_path = /obj/machinery/autolathe - origin_tech = "engineering=2;programming=2" - 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) + return ..() /obj/machinery/autolathe/Destroy() - qdel(wires) - wires = null - qdel(materials) - materials = null + QDEL_NULL(wires) + QDEL_NULL(materials) return ..() /obj/machinery/autolathe/interact(mob/user) diff --git a/code/game/machinery/bank_machine.dm b/code/game/machinery/bank_machine.dm index 0ebae75da6..de07fc9c2d 100644 --- a/code/game/machinery/bank_machine.dm +++ b/code/game/machinery/bank_machine.dm @@ -9,8 +9,8 @@ var/radio_channel = "Common" var/minimum_time_between_warnings = 400 -/obj/machinery/computer/bank_machine/Initialize(mapload) - ..() +/obj/machinery/computer/bank_machine/Initialize() + . = ..() radio = new(src) radio.subspace_transmission = TRUE radio.canhear_range = 0 diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 06c4cce2bc..df64aeb832 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -17,6 +17,8 @@ icon_state = "pod_0" req_access = list(ACCESS_CLONING) //FOR PREMATURE UNLOCKING. verb_say = "states" + circuit = /obj/item/weapon/circuitboard/machine/clonepod + var/heal_level //The clone is released once its health reaches this level. var/obj/machinery/computer/cloning/connected = null //So we remember the connected clone machine. var/mess = FALSE //Need to clean out it if it's full of exploded clone. @@ -46,8 +48,6 @@ /obj/machinery/clonepod/Initialize() . = ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/clonepod(null) - B.apply_default_parts(src) countdown = new(src) @@ -59,16 +59,11 @@ /obj/machinery/clonepod/Destroy() go_out() - qdel(radio) - radio = null - qdel(countdown) - countdown = null + QDEL_NULL(radio) + QDEL_NULL(countdown) if(connected) connected.DetachCloner(src) - for(var/i in unattached_flesh) - qdel(i) - LAZYCLEARLIST(unattached_flesh) - unattached_flesh = null + QDEL_LIST(unattached_flesh) . = ..() /obj/machinery/clonepod/RefreshParts() @@ -84,16 +79,6 @@ if(heal_level > 100) heal_level = 100 -/obj/item/weapon/circuitboard/machine/clonepod - name = "Clone Pod (Machine Board)" - build_path = /obj/machinery/clonepod - origin_tech = "programming=2;biotech=2" - 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/stack/sheet/glass = 1) - //The return of data disks?? Just for transferring between genetics machine/cloning machine. //TO-DO: Make the genetics machine accept them. /obj/item/weapon/disk/data diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm index 02ef157de9..ab4eb941b7 100644 --- a/code/game/machinery/computer/Operating.dm +++ b/code/game/machinery/computer/Operating.dm @@ -4,8 +4,8 @@ icon_screen = "crew" icon_keyboard = "med_key" circuit = /obj/item/weapon/circuitboard/computer/operating - var/mob/living/carbon/human/patient = null - var/obj/structure/table/optable/table = null + var/mob/living/carbon/human/patient + var/obj/structure/table/optable/table light_color = LIGHT_COLOR_BLUE diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/_computer.dm similarity index 84% rename from code/game/machinery/computer/computer.dm rename to code/game/machinery/computer/_computer.dm index d4dc73a2e6..85c02f6d37 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -1,142 +1,129 @@ -/obj/machinery/computer - name = "computer" - icon = 'icons/obj/computer.dmi' - icon_state = "computer" - density = TRUE - anchored = TRUE - use_power = IDLE_POWER_USE - idle_power_usage = 300 - active_power_usage = 300 - max_integrity = 200 - integrity_failure = 100 - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 40, acid = 20) - var/obj/item/weapon/circuitboard/computer/circuit = null // if circuit==null, computer can't disassembly - var/processing = FALSE - var/brightness_on = 2 - var/icon_keyboard = "generic_key" - var/icon_screen = "generic" - var/clockwork = FALSE - -/obj/machinery/computer/New(location, obj/item/weapon/circuitboard/C) - ..(location) - if(C && istype(C)) - circuit = C - //Some machines, oldcode arcades mostly, new themselves, so circuit - //can already be an instance of a type and trying to new that will - //cause a runtime - else if(ispath(circuit)) - circuit = new circuit(null) - -/obj/machinery/computer/Destroy() - if(circuit) - qdel(circuit) - circuit = null - return ..() - -/obj/machinery/computer/Initialize() - . = ..() - power_change() - -/obj/machinery/computer/process() - if(stat & (NOPOWER|BROKEN)) - return 0 - return 1 - -/obj/machinery/computer/ratvar_act() - if(!clockwork) - clockwork = TRUE - icon_screen = "ratvar[rand(1, 4)]" - icon_keyboard = "ratvar_key[rand(1, 6)]" - icon_state = "ratvarcomputer[rand(1, 4)]" - update_icon() - -/obj/machinery/computer/narsie_act() - if(clockwork && clockwork != initial(clockwork)) //if it's clockwork but isn't normally clockwork - clockwork = FALSE - icon_screen = initial(icon_screen) - icon_keyboard = initial(icon_keyboard) - icon_state = initial(icon_state) - update_icon() - -/obj/machinery/computer/update_icon() - cut_overlays() - if(stat & NOPOWER) - add_overlay("[icon_keyboard]_off") - return - add_overlay(icon_keyboard) - if(stat & BROKEN) - add_overlay("[icon_state]_broken") - else - add_overlay(icon_screen) - -/obj/machinery/computer/power_change() - ..() - if(stat & NOPOWER) - set_light(0) - else - set_light(brightness_on) - update_icon() - return - -/obj/machinery/computer/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/screwdriver) && circuit && !(flags&NODECONSTRUCT)) - playsound(src.loc, I.usesound, 50, 1) - to_chat(user, " You start to disconnect the monitor...") - if(do_after(user, 20*I.toolspeed, target = src)) - deconstruct(TRUE, user) - else - return ..() - -/obj/machinery/computer/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) - switch(damage_type) - if(BRUTE) - if(stat & BROKEN) - playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) - else - playsound(src.loc, 'sound/effects/glasshit.ogg', 75, 1) - if(BURN) - playsound(src.loc, 'sound/items/welder.ogg', 100, 1) - -/obj/machinery/computer/obj_break(damage_flag) - if(circuit && !(flags & NODECONSTRUCT)) //no circuit, no breaking - if(!(stat & BROKEN)) - playsound(loc, 'sound/effects/glassbr3.ogg', 100, 1) - stat |= BROKEN - update_icon() - -/obj/machinery/computer/emp_act(severity) - switch(severity) - if(1) - if(prob(50)) - obj_break("energy") - if(2) - if(prob(10)) - obj_break("energy") - ..() - -/obj/machinery/computer/deconstruct(disassembled = TRUE, mob/user) - on_deconstruction() - if(!(flags & NODECONSTRUCT)) - if(circuit) //no circuit, no computer frame - var/obj/structure/frame/computer/A = new /obj/structure/frame/computer(src.loc) - A.circuit = circuit - A.anchored = TRUE - if(stat & BROKEN) - if(user) - to_chat(user, "The broken glass falls out.") - else - playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) - new /obj/item/weapon/shard(src.loc) - new /obj/item/weapon/shard(src.loc) - A.state = 3 - A.icon_state = "3" - else - if(user) - to_chat(user, "You disconnect the monitor.") - A.state = 4 - A.icon_state = "4" - circuit = null - for(var/obj/C in src) - C.forceMove(loc) - - qdel(src) +/obj/machinery/computer + name = "computer" + icon = 'icons/obj/computer.dmi' + icon_state = "computer" + density = TRUE + anchored = TRUE + use_power = IDLE_POWER_USE + idle_power_usage = 300 + active_power_usage = 300 + max_integrity = 200 + integrity_failure = 100 + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 40, acid = 20) + var/processing = FALSE + var/brightness_on = 2 + var/icon_keyboard = "generic_key" + var/icon_screen = "generic" + var/clockwork = FALSE + +/obj/machinery/computer/Initialize(mapload, obj/item/weapon/circuitboard/C) + . = ..() + power_change() + +/obj/machinery/computer/Destroy() + QDEL_NULL(circuit) + return ..() + +/obj/machinery/computer/process() + if(stat & (NOPOWER|BROKEN)) + return 0 + return 1 + +/obj/machinery/computer/ratvar_act() + if(!clockwork) + clockwork = TRUE + icon_screen = "ratvar[rand(1, 4)]" + icon_keyboard = "ratvar_key[rand(1, 6)]" + icon_state = "ratvarcomputer[rand(1, 4)]" + update_icon() + +/obj/machinery/computer/narsie_act() + if(clockwork && clockwork != initial(clockwork)) //if it's clockwork but isn't normally clockwork + clockwork = FALSE + icon_screen = initial(icon_screen) + icon_keyboard = initial(icon_keyboard) + icon_state = initial(icon_state) + update_icon() + +/obj/machinery/computer/update_icon() + cut_overlays() + if(stat & NOPOWER) + add_overlay("[icon_keyboard]_off") + return + add_overlay(icon_keyboard) + if(stat & BROKEN) + add_overlay("[icon_state]_broken") + else + add_overlay(icon_screen) + +/obj/machinery/computer/power_change() + ..() + if(stat & NOPOWER) + set_light(0) + else + set_light(brightness_on) + update_icon() + return + +/obj/machinery/computer/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/screwdriver) && circuit && !(flags&NODECONSTRUCT)) + playsound(src.loc, I.usesound, 50, 1) + to_chat(user, " You start to disconnect the monitor...") + if(do_after(user, 20*I.toolspeed, target = src)) + deconstruct(TRUE, user) + else + return ..() + +/obj/machinery/computer/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + switch(damage_type) + if(BRUTE) + if(stat & BROKEN) + playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) + else + playsound(src.loc, 'sound/effects/glasshit.ogg', 75, 1) + if(BURN) + playsound(src.loc, 'sound/items/welder.ogg', 100, 1) + +/obj/machinery/computer/obj_break(damage_flag) + if(circuit && !(flags & NODECONSTRUCT)) //no circuit, no breaking + if(!(stat & BROKEN)) + playsound(loc, 'sound/effects/glassbr3.ogg', 100, 1) + stat |= BROKEN + update_icon() + +/obj/machinery/computer/emp_act(severity) + switch(severity) + if(1) + if(prob(50)) + obj_break("energy") + if(2) + if(prob(10)) + obj_break("energy") + ..() + +/obj/machinery/computer/deconstruct(disassembled = TRUE, mob/user) + on_deconstruction() + if(!(flags & NODECONSTRUCT)) + if(circuit) //no circuit, no computer frame + var/obj/structure/frame/computer/A = new /obj/structure/frame/computer(src.loc) + A.circuit = circuit + A.anchored = TRUE + if(stat & BROKEN) + if(user) + to_chat(user, "The broken glass falls out.") + else + playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) + new /obj/item/weapon/shard(src.loc) + new /obj/item/weapon/shard(src.loc) + A.state = 3 + A.icon_state = "3" + else + if(user) + to_chat(user, "You disconnect the monitor.") + A.state = 4 + A.icon_state = "4" + circuit = null + for(var/obj/C in src) + C.forceMove(loc) + + qdel(src) diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index bc5c8cbfa7..a288c9d51c 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -16,9 +16,9 @@ var/auth_id = "\[NULL\]" /obj/machinery/computer/apc_control/Initialize() + . = ..() apcs = list() //To avoid BYOND making the list run through a ton of procs filters = list("Name" = null, "Charge Above" = null, "Charge Below" = null, "Responsive" = null) - ..() /obj/machinery/computer/apc_control/process() apcs = list() //Clear the list every tick diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 286de0bcb8..ad48c9a12c 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -51,21 +51,17 @@ /obj/machinery/computer/arcade/proc/Reset() return -/obj/machinery/computer/arcade/New() - ..() +/obj/machinery/computer/arcade/Initialize() + . = ..() // If it's a generic arcade machine, pick a random arcade // circuit board for it and make the new machine if(!circuit) var/choice = pick(subtypesof(/obj/item/weapon/circuitboard/computer/arcade)) var/obj/item/weapon/circuitboard/CB = new choice() new CB.build_path(loc, CB) - qdel(src) - -/obj/machinery/computer/arcade/Initialize() - . = ..() + return INITIALIZE_HINT_QDEL Reset() - #define PULSE_MEDAL "Jackpot" /obj/machinery/computer/arcade/proc/prizevend() @@ -78,11 +74,9 @@ new prizeselect(src) var/atom/movable/prize = pick(contents) - visible_message( - "[src] dispenses a [prize]!", - "You hear a chime and a clunk.") + visible_message("[src] dispenses a [prize]!", "You hear a chime and a clunk.") - prize.loc = loc + prize.forceMove(get_turf(src)) #undef PULSE_MEDAL /obj/machinery/computer/arcade/emp_act(severity) @@ -157,7 +151,6 @@ popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) popup.open() - return /obj/machinery/computer/arcade/battle/Topic(href, href_list) if(..()) diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 889fda3dd8..a53b270130 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -142,320 +142,4 @@ new /obj/item/weapon/shard(loc) if(state >= 3) new /obj/item/stack/cable_coil(loc , 5) - ..() - - -/obj/item/weapon/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' - origin_tech = "programming=2" - materials = list(MAT_GLASS=1000) - w_class = WEIGHT_CLASS_SMALL - var/build_path = null - -/obj/item/weapon/circuitboard/computer/turbine_computer - name = "Turbine Computer (Computer Board)" - build_path = /obj/machinery/computer/turbine_computer - origin_tech = "programming=4;engineering=4;powerstorage=4" -/obj/item/weapon/circuitboard/computer/launchpad_console - name = "Launchpad Control Console (Computer Board)" - build_path = /obj/machinery/computer/launchpad - origin_tech = "programming=3;bluespace=3;plasmatech=2" -/obj/item/weapon/circuitboard/computer/message_monitor - name = "Message Monitor (Computer Board)" - build_path = /obj/machinery/computer/message_monitor - origin_tech = "programming=2" -/obj/item/weapon/circuitboard/computer/security - name = "Security Cameras (Computer Board)" - build_path = /obj/machinery/computer/security - origin_tech = "programming=2;combat=2" -/obj/item/weapon/circuitboard/computer/xenobiology - name = "circuit board (Xenobiology Console)" - build_path = /obj/machinery/computer/camera_advanced/xenobio - origin_tech = "programming=3;biotech=3" -/obj/item/weapon/circuitboard/computer/base_construction - name = "circuit board (Aux Mining Base Construction Console)" - build_path = /obj/machinery/computer/camera_advanced/base_construction - origin_tech = "programming=3;engineering=3" -/obj/item/weapon/circuitboard/computer/aiupload - name = "AI Upload (Computer Board)" - build_path = /obj/machinery/computer/upload/ai - origin_tech = "programming=4;engineering=4" -/obj/item/weapon/circuitboard/computer/borgupload - name = "Cyborg Upload (Computer Board)" - build_path = /obj/machinery/computer/upload/borg - origin_tech = "programming=4;engineering=4" -/obj/item/weapon/circuitboard/computer/med_data - name = "Medical Records Console (Computer Board)" - build_path = /obj/machinery/computer/med_data - origin_tech = "programming=2;biotech=2" -/obj/item/weapon/circuitboard/computer/pandemic - name = "PanD.E.M.I.C. 2200 (Computer Board)" - build_path = /obj/machinery/computer/pandemic - origin_tech = "programming=2;biotech=2" -/obj/item/weapon/circuitboard/computer/scan_consolenew - name = "DNA Machine (Computer Board)" - build_path = /obj/machinery/computer/scan_consolenew - origin_tech = "programming=2;biotech=2" -/obj/item/weapon/circuitboard/computer/communications - name = "Communications (Computer Board)" - build_path = /obj/machinery/computer/communications - origin_tech = "programming=3;magnets=3" - var/lastTimeUsed = 0 - -/obj/item/weapon/circuitboard/computer/card - name = "ID Console (Computer Board)" - build_path = /obj/machinery/computer/card - origin_tech = "programming=3" -/obj/item/weapon/circuitboard/computer/card/centcom - name = "CentCom ID Console (Computer Board)" - build_path = /obj/machinery/computer/card/centcom - -/obj/item/weapon/circuitboard/computer/card/minor - name = "Department Management Console (Computer Board)" - build_path = /obj/machinery/computer/card/minor - var/target_dept = 1 - var/list/dept_list = list("General","Security","Medical","Science","Engineering") - -/obj/item/weapon/circuitboard/computer/card/minor/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/screwdriver)) - target_dept = (target_dept == dept_list.len) ? 1 : (target_dept + 1) - to_chat(user, "You set the board to \"[dept_list[target_dept]]\".") - else - return ..() - -/obj/item/weapon/circuitboard/computer/card/minor/examine(user) - ..() - to_chat(user, "Currently set to \"[dept_list[target_dept]]\".") - -//obj/item/weapon/circuitboard/computer/shield -// name = "Shield Control (Computer Board)" -// build_path = /obj/machinery/computer/stationshield -/obj/item/weapon/circuitboard/computer/teleporter - name = "Teleporter (Computer Board)" - build_path = /obj/machinery/computer/teleporter - origin_tech = "programming=3;bluespace=3;plasmatech=3" -/obj/item/weapon/circuitboard/computer/secure_data - name = "Security Records Console (Computer Board)" - build_path = /obj/machinery/computer/secure_data - origin_tech = "programming=2;combat=2" -/obj/item/weapon/circuitboard/computer/stationalert - name = "Station Alerts (Computer Board)" - build_path = /obj/machinery/computer/station_alert -/*/obj/item/weapon/circuitboard/computer/atmospheresiphonswitch - name = "Atmosphere siphon control (Computer Board)" - build_path = /obj/machinery/computer/atmosphere/siphonswitch*/ -/obj/item/weapon/circuitboard/computer/atmos_control - name = "Atmospheric Monitor (Computer Board)" - build_path = /obj/machinery/computer/atmos_control -/obj/item/weapon/circuitboard/computer/atmos_control/tank - name = "Tank Control (Computer Board)" - build_path = /obj/machinery/computer/atmos_control/tank - origin_tech = "programming=2;engineering=3;materials=2" -/obj/item/weapon/circuitboard/computer/atmos_alert - name = "Atmospheric Alert (Computer Board)" - build_path = /obj/machinery/computer/atmos_alert -/obj/item/weapon/circuitboard/computer/pod - name = "Massdriver control (Computer Board)" - build_path = /obj/machinery/computer/pod -/obj/item/weapon/circuitboard/computer/robotics - name = "Robotics Control (Computer Board)" - build_path = /obj/machinery/computer/robotics - origin_tech = "programming=3" -/obj/item/weapon/circuitboard/computer/cloning - name = "Cloning (Computer Board)" - build_path = /obj/machinery/computer/cloning - origin_tech = "programming=2;biotech=2" -/obj/item/weapon/circuitboard/computer/arcade/battle - name = "Arcade Battle (Computer Board)" - build_path = /obj/machinery/computer/arcade/battle - origin_tech = "programming=1" -/obj/item/weapon/circuitboard/computer/arcade/orion_trail - name = "Orion Trail (Computer Board)" - build_path = /obj/machinery/computer/arcade/orion_trail - origin_tech = "programming=1" -/obj/item/weapon/circuitboard/computer/turbine_control - name = "Turbine control (Computer Board)" - build_path = /obj/machinery/computer/turbine_computer -/obj/item/weapon/circuitboard/computer/solar_control - name = "Solar Control (Computer Board)" //name fixed 250810 - build_path = /obj/machinery/power/solar_control - origin_tech = "programming=2;powerstorage=2" -/obj/item/weapon/circuitboard/computer/powermonitor - name = "Power Monitor (Computer Board)" //name fixed 250810 - build_path = /obj/machinery/computer/monitor - origin_tech = "programming=2;powerstorage=2" -/obj/item/weapon/circuitboard/computer/olddoor - name = "DoorMex (Computer Board)" - build_path = /obj/machinery/computer/pod/old -/obj/item/weapon/circuitboard/computer/syndicatedoor - name = "ProComp Executive (Computer Board)" - build_path = /obj/machinery/computer/pod/old/syndicate -/obj/item/weapon/circuitboard/computer/swfdoor - name = "Magix (Computer Board)" - build_path = /obj/machinery/computer/pod/old/swf -/obj/item/weapon/circuitboard/computer/prisoner - name = "Prisoner Management Console (Computer Board)" - build_path = /obj/machinery/computer/prisoner -/obj/item/weapon/circuitboard/computer/gulag_teleporter_console - name = "Labor Camp teleporter console (Computer Board)" - build_path = /obj/machinery/computer/gulag_teleporter_computer - -/obj/item/weapon/circuitboard/computer/rdconsole - name = "R&D Console (Computer Board)" - build_path = /obj/machinery/computer/rdconsole/core - -/obj/item/weapon/circuitboard/computer/rdconsole/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/screwdriver)) - if(build_path == /obj/machinery/computer/rdconsole/core) - name = "R&D Console - Robotics (Computer Board)" - build_path = /obj/machinery/computer/rdconsole/robotics - to_chat(user, "Access protocols successfully updated.") - else - name = "R&D Console (Computer Board)" - build_path = /obj/machinery/computer/rdconsole/core - to_chat(user, "Defaulting access protocols.") - else - return ..() - -/obj/item/weapon/circuitboard/computer/mecha_control - name = "Exosuit Control Console (Computer Board)" - build_path = /obj/machinery/computer/mecha -/obj/item/weapon/circuitboard/computer/rdservercontrol - name = "R&D Server Control (Computer Board)" - build_path = /obj/machinery/computer/rdservercontrol -/obj/item/weapon/circuitboard/computer/crew - name = "Crew Monitoring Console (Computer Board)" - build_path = /obj/machinery/computer/crew - origin_tech = "programming=2;biotech=2" -/obj/item/weapon/circuitboard/computer/mech_bay_power_console - name = "Mech Bay Power Control Console (Computer Board)" - build_path = /obj/machinery/computer/mech_bay_power_console - origin_tech = "programming=3;powerstorage=3" - -/obj/item/weapon/circuitboard/computer/cargo - name = "Supply Console (Computer Board)" - build_path = /obj/machinery/computer/cargo - origin_tech = "programming=3" - var/contraband = FALSE - var/emagged = FALSE - -/obj/item/weapon/circuitboard/computer/cargo/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/device/multitool)) - if(!emagged) - contraband = !contraband - to_chat(user, "Receiver spectrum set to [contraband ? "Broad" : "Standard"].") - else - to_chat(user, "The spectrum chip is unresponsive.") - else if(istype(I, /obj/item/weapon/card/emag)) - if(!emagged) - contraband = TRUE - emagged = TRUE - to_chat(user, "You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband.") - else - return ..() - - -/obj/item/weapon/circuitboard/computer/cargo/request - name = "Supply Request Console (Computer Board)" - build_path = /obj/machinery/computer/cargo/request -/obj/item/weapon/circuitboard/computer/stockexchange - name = "circuit board (Stock Exchange Console)" - build_path = /obj/machinery/computer/stockexchange - origin_tech = "programming=3" - -/obj/item/weapon/circuitboard/computer/operating - name = "Operating Computer (Computer Board)" - build_path = /obj/machinery/computer/operating - origin_tech = "programming=2;biotech=3" -/obj/item/weapon/circuitboard/computer/mining - name = "Outpost Status Display (Computer Board)" - build_path = /obj/machinery/computer/security/mining -/obj/item/weapon/circuitboard/computer/comm_monitor - name = "Telecommunications Monitor (Computer Board)" - build_path = /obj/machinery/computer/telecomms/monitor - origin_tech = "programming=3;magnets=3;bluespace=2" -/obj/item/weapon/circuitboard/computer/comm_server - name = "Telecommunications Server Monitor (Computer Board)" - build_path = /obj/machinery/computer/telecomms/server - origin_tech = "programming=3;magnets=3;bluespace=2" - -/obj/item/weapon/circuitboard/computer/shuttle - name = "Shuttle (Computer Board)" - build_path = /obj/machinery/computer/shuttle - var/shuttleId - var/possible_destinations = "" - -/obj/item/weapon/circuitboard/computer/shuttle/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/device/multitool)) - var/chosen_id = round(input(usr, "Choose an ID number (-1 for reset):", "Input an Integer", null) as num|null) - if(chosen_id >= 0) - shuttleId = chosen_id - else - shuttleId = initial(shuttleId) - else - return ..() - -/obj/item/weapon/circuitboard/computer/labor_shuttle - name = "Labor Shuttle (Computer Board)" - build_path = /obj/machinery/computer/shuttle/labor -/obj/item/weapon/circuitboard/computer/labor_shuttle/one_way - name = "Prisoner Shuttle Console (Computer Board)" - build_path = /obj/machinery/computer/shuttle/labor/one_way -/obj/item/weapon/circuitboard/computer/ferry - name = "Transport Ferry (Computer Board)" - build_path = /obj/machinery/computer/shuttle/ferry -/obj/item/weapon/circuitboard/computer/ferry/request - name = "Transport Ferry Console (Computer Board)" - build_path = /obj/machinery/computer/shuttle/ferry/request -/obj/item/weapon/circuitboard/computer/mining_shuttle - name = "Mining Shuttle (Computer Board)" - build_path = /obj/machinery/computer/shuttle/mining -/obj/item/weapon/circuitboard/computer/white_ship - name = "White Ship (Computer Board)" - build_path = /obj/machinery/computer/shuttle/white_ship -/obj/item/weapon/circuitboard/computer/auxillary_base - name = "Auxillary Base Management Console (Computer Board)" - build_path = /obj/machinery/computer/auxillary_base -/obj/item/weapon/circuitboard/computer/holodeck// Not going to let people get this, but it's just here for future - name = "Holodeck Control (Computer Board)" - build_path = /obj/machinery/computer/holodeck - origin_tech = "programming=4" -/obj/item/weapon/circuitboard/computer/aifixer - name = "AI Integrity Restorer (Computer Board)" - build_path = /obj/machinery/computer/aifixer - origin_tech = "programming=2;biotech=2" -/*/obj/item/weapon/circuitboard/computer/prison_shuttle - name = "Prison Shuttle (Computer Board)" - build_path = /obj/machinery/computer/prison_shuttle*/ -/obj/item/weapon/circuitboard/computer/slot_machine - name = "Slot Machine (Computer Board)" - build_path = /obj/machinery/computer/slot_machine - origin_tech = "programming=1" - -/obj/item/weapon/circuitboard/computer/libraryconsole - name = "Library Visitor Console (Computer Board)" - build_path = /obj/machinery/computer/libraryconsole - origin_tech = "programming=1" - -/obj/item/weapon/circuitboard/computer/libraryconsole/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/screwdriver)) - if(build_path == /obj/machinery/computer/libraryconsole/bookmanagement) - name = "Library Visitor Console (Computer Board)" - build_path = /obj/machinery/computer/libraryconsole - to_chat(user, "Defaulting access protocols.") - else - name = "Book Inventory Management Console (Computer Board)" - build_path = /obj/machinery/computer/libraryconsole/bookmanagement - to_chat(user, "Access protocols successfully updated.") - else - return ..() - -/obj/item/weapon/circuitboard/computer/apc_control - name = "\improper Power Flow Control Console (Computer Board)" - build_path = /obj/machinery/computer/apc_control - origin_tech = "programming=3;engineering=3;powerstorage=2" + ..() \ No newline at end of file diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index a54ab19907..da8c7c43ca 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -572,8 +572,8 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) icon_screen = "idminor" circuit = /obj/item/weapon/circuitboard/computer/card/minor -/obj/machinery/computer/card/minor/New() - ..() +/obj/machinery/computer/card/minor/Initialize() + . = ..() var/obj/item/weapon/circuitboard/computer/card/minor/typed_circuit = circuit if(target_dept) typed_circuit.target_dept = target_dept diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index a4caa68480..6b76b3c98e 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -20,7 +20,7 @@ light_color = LIGHT_COLOR_BLUE /obj/machinery/computer/cloning/Initialize() - ..() + . = ..() updatemodules(TRUE) /obj/machinery/computer/cloning/Destroy() diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index ce6430d75c..47f38f0d87 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -41,9 +41,9 @@ return FALSE return TRUE -/obj/machinery/computer/communications/New() +/obj/machinery/computer/communications/Initialize() + . = ..() GLOB.shuttle_caller_list += src - ..() /obj/machinery/computer/communications/process() if(..()) diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 27c0f50e7b..de18b51543 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -53,17 +53,13 @@ else return ..() -/obj/machinery/computer/scan_consolenew/New() - ..() - - spawn(5) - for(dir in list(NORTH,EAST,SOUTH,WEST)) - connected = locate(/obj/machinery/dna_scannernew, get_step(src, dir)) - if(!isnull(connected)) - break - injectorready = world.time + INJECTOR_TIMEOUT - return - return +/obj/machinery/computer/scan_consolenew/Initialize() + . = ..() + for(dir in list(NORTH,EAST,SOUTH,WEST)) + connected = locate(/obj/machinery/dna_scannernew, get_step(src, dir)) + if(!isnull(connected)) + break + injectorready = world.time + INJECTOR_TIMEOUT /obj/machinery/computer/scan_consolenew/attack_hand(mob/user) if(..()) diff --git a/code/game/machinery/computer/gulag_teleporter.dm b/code/game/machinery/computer/gulag_teleporter.dm index 07bfb4b6dd..4b7fccc221 100644 --- a/code/game/machinery/computer/gulag_teleporter.dm +++ b/code/game/machinery/computer/gulag_teleporter.dm @@ -15,9 +15,9 @@ light_color = LIGHT_COLOR_RED -/obj/machinery/computer/gulag_teleporter_computer/New() - ..() - addtimer(CALLBACK(src, .proc/scan_machinery), 5) +/obj/machinery/computer/gulag_teleporter_computer/Initialize() + . = ..() + scan_machinery() /obj/machinery/computer/gulag_teleporter_computer/Destroy() if(id) diff --git a/code/game/machinery/computer/monastery_shuttle.dm b/code/game/machinery/computer/monastery_shuttle.dm index e64d784a1f..ac2e9c9e78 100644 --- a/code/game/machinery/computer/monastery_shuttle.dm +++ b/code/game/machinery/computer/monastery_shuttle.dm @@ -5,7 +5,3 @@ shuttleId = "pod1" possible_destinations = "monastery_shuttle_asteroid;monastery_shuttle_station" no_destination_swap = TRUE - -/obj/item/weapon/circuitboard/computer/shuttle/monastery_shuttle - name = "Monastery Shuttle (Computer Board)" - build_path = /obj/machinery/computer/shuttle/monastery_shuttle diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm new file mode 100644 index 0000000000..f184d78a1b --- /dev/null +++ b/code/game/machinery/computer/teleporter.dm @@ -0,0 +1,212 @@ +/obj/machinery/computer/teleporter + name = "teleporter control console" + desc = "Used to control a linked teleportation Hub and Station." + icon_screen = "teleport" + icon_keyboard = "teleport_key" + light_color = LIGHT_COLOR_BLUE + circuit = /obj/item/weapon/circuitboard/computer/teleporter + var/obj/item/device/gps/locked + var/regime_set = "Teleporter" + var/id + var/obj/machinery/teleport/station/power_station + var/calibrating + var/turf/target //Used for one-time-use teleport cards (such as clown planet coordinates.) + //Setting this to 1 will set src.locked to null after a player enters the portal and will not allow hand-teles to open portals to that location. + +/obj/machinery/computer/teleporter/Initialize() + . = ..() + id = "[rand(1000, 9999)]" + link_power_station() + +/obj/machinery/computer/teleporter/Destroy() + if (power_station) + power_station.teleporter_console = null + power_station = null + return ..() + +/obj/machinery/computer/teleporter/proc/link_power_station() + if(power_station) + return + for(dir in GLOB.cardinals) + power_station = locate(/obj/machinery/teleport/station, get_step(src, dir)) + if(power_station) + break + return power_station + +/obj/machinery/computer/teleporter/attackby(obj/I, mob/living/user, params) + if(istype(I, /obj/item/device/gps)) + var/obj/item/device/gps/L = I + if(L.locked_location && !(stat & (NOPOWER|BROKEN))) + if(!user.transferItemToLoc(L, src)) + to_chat(user, "\the [I] is stuck to your hand, you cannot put it in \the [src]!") + return + locked = L + to_chat(user, "You insert the GPS device into the [name]'s slot.") + else + return ..() + +/obj/machinery/computer/teleporter/attack_ai(mob/user) + return attack_hand(user) + +/obj/machinery/computer/teleporter/attack_hand(mob/user) + if(..()) + return + interact(user) + +/obj/machinery/computer/teleporter/interact(mob/user) + var/data = "

Teleporter Status

" + if(!power_station) + data += "
No power station linked.
" + else if(!power_station.teleporter_hub) + data += "
No hub linked.
" + else + data += "
Current regime: [regime_set]
" + data += "Current target: [(!target) ? "None" : "[get_area(target)] [(regime_set != "Gate") ? "" : "Teleporter"]"]
" + if(calibrating) + data += "Calibration: In Progress" + else if(power_station.teleporter_hub.calibrated || power_station.teleporter_hub.accurate >= 3) + data += "Calibration: Optimal" + else + data += "Calibration: Sub-Optimal" + data += "

" + + data += "Change regime
" + data += "Set target
" + if(locked) + data += "
Get target from memory
" + data += "Eject GPS device
" + else + data += "
Get target from memory
" + data += "Eject GPS device
" + + data += "
Calibrate Hub" + + var/datum/browser/popup = new(user, "teleporter", name, 400, 400) + popup.set_content(data) + popup.open() + +/obj/machinery/computer/teleporter/Topic(href, href_list) + if(..()) + return + + if(href_list["eject"]) + eject() + updateDialog() + return + + if(!check_hub_connection()) + say("Error: Unable to detect hub.") + return + if(calibrating) + say("Error: Calibration in progress. Stand by.") + return + + if(href_list["regimeset"]) + power_station.engaged = 0 + power_station.teleporter_hub.update_icon() + power_station.teleporter_hub.calibrated = 0 + reset_regime() + if(href_list["settarget"]) + power_station.engaged = 0 + power_station.teleporter_hub.update_icon() + power_station.teleporter_hub.calibrated = 0 + set_target(usr) + if(href_list["locked"]) + power_station.engaged = 0 + power_station.teleporter_hub.update_icon() + power_station.teleporter_hub.calibrated = 0 + target = get_turf(locked.locked_location) + if(href_list["calibrate"]) + if(!target) + say("Error: No target set to calibrate to.") + return + if(power_station.teleporter_hub.calibrated || power_station.teleporter_hub.accurate >= 3) + say("Hub is already calibrated!") + return + say("Processing hub calibration to target...") + + calibrating = 1 + spawn(50 * (3 - power_station.teleporter_hub.accurate)) //Better parts mean faster calibration + calibrating = 0 + if(check_hub_connection()) + power_station.teleporter_hub.calibrated = 1 + say("Calibration complete.") + else + say("Error: Unable to detect hub.") + updateDialog() + + updateDialog() + +/obj/machinery/computer/teleporter/proc/check_hub_connection() + if(!power_station) + return FALSE + if(!power_station.teleporter_hub) + return FALSE + return TRUE + +/obj/machinery/computer/teleporter/proc/reset_regime() + target = null + if(regime_set == "Teleporter") + regime_set = "Gate" + else + regime_set = "Teleporter" + +/obj/machinery/computer/teleporter/proc/eject() + if(locked) + locked.forceMove(get_turf(src)) + locked = null + +/obj/machinery/computer/teleporter/proc/set_target(mob/user) + var/list/L = list() + var/list/areaindex = list() + if(regime_set == "Teleporter") + for(var/obj/item/device/radio/beacon/R in GLOB.teleportbeacons) + var/turf/T = get_turf(R) + if(!T) + continue + if(T.z == ZLEVEL_CENTCOM || T.z > ZLEVEL_SPACEMAX) + continue + L[avoid_assoc_duplicate_keys(T.loc.name, areaindex)] = R + + for(var/obj/item/weapon/implant/tracking/I in GLOB.tracked_implants) + if(!I.imp_in || !ismob(I.loc)) + continue + else + var/mob/M = I.loc + if(M.stat == DEAD) + if(M.timeofdeath + 6000 < world.time) + continue + var/turf/T = get_turf(M) + if(!T) + continue + if(T.z == ZLEVEL_CENTCOM) + continue + L[avoid_assoc_duplicate_keys(M.real_name, areaindex)] = I + + var/desc = input("Please select a location to lock in.", "Locking Computer") as null|anything in L + target = L[desc] + + else + var/list/S = power_station.linked_stations + if(!S.len) + to_chat(user, "No connected stations located.") + return + for(var/obj/machinery/teleport/station/R in S) + var/turf/T = get_turf(R) + if(!T || !R.teleporter_hub || !R.teleporter_console) + continue + if(T.z == ZLEVEL_CENTCOM || T.z > ZLEVEL_SPACEMAX) + continue + L[avoid_assoc_duplicate_keys(T.loc.name, areaindex)] = R + var/desc = input("Please select a station to lock in.", "Locking Computer") as null|anything in L + target = L[desc] + if(target) + var/obj/machinery/teleport/station/trg = target + trg.linked_stations |= power_station + trg.stat &= ~NOPOWER + if(trg.teleporter_hub) + trg.teleporter_hub.stat &= ~NOPOWER + trg.teleporter_hub.update_icon() + if(trg.teleporter_console) + trg.teleporter_console.stat &= ~NOPOWER + trg.teleporter_console.update_icon() \ No newline at end of file diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 41022efaba..7f71f77f4d 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -259,52 +259,4 @@ for(var/X in components) var/obj/item/I = X I.forceMove(loc) - ..() - - - -//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. -*/ - -/obj/item/weapon/circuitboard/machine - var/list/req_components = null - // Components required by the machine. - // Example: list(/obj/item/weapon/stock_parts/matter_bin = 5) - var/list/def_components = null - // Default replacements for req_components, to be used in apply_default_parts instead of req_components types - // Example: list(/obj/item/weapon/stock_parts/matter_bin = /obj/item/weapon/stock_parts/matter_bin/super) - -/obj/item/weapon/circuitboard/machine/proc/apply_default_parts(obj/machinery/M) - if(!req_components) - return - - M.component_parts = list(src) // List of components always contains a board - loc = null - - 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/weapon/circuitboard/machine/abductor - name = "alien board (Report This)" - icon_state = "abductor_mod" - origin_tech = "programming=5;abductor=3" - -/obj/item/weapon/circuitboard/machine/clockwork - name = "clockwork board (Report This)" - icon_state = "clock_mod" + ..() \ No newline at end of file diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm index 5100ece31f..2891d47d91 100644 --- a/code/game/machinery/dance_machine.dm +++ b/code/game/machinery/dance_machine.dm @@ -50,7 +50,7 @@ songs += T /obj/machinery/disco/Initialize() - ..() + . = ..() selection = songs[1] diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index 20bb81e0b8..80f73b3027 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -4,32 +4,17 @@ icon = 'icons/obj/Cryogenic2.dmi' icon_state = "scanner" density = TRUE - var/locked = FALSE anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 50 active_power_usage = 300 occupant_typecache = list(/mob/living, /obj/item/bodypart/head, /obj/item/organ/brain) + circuit = /obj/item/weapon/circuitboard/machine/clonescanner + var/locked = FALSE var/damage_coeff var/scan_level var/precision_coeff -/obj/machinery/dna_scannernew/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/clonescanner(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/clonescanner - name = "Cloning Scanner (Machine Board)" - build_path = /obj/machinery/dna_scannernew - origin_tech = "programming=2;biotech=2" - 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/stack/sheet/glass = 1, - /obj/item/stack/cable_coil = 2) - /obj/machinery/dna_scannernew/RefreshParts() scan_level = 0 damage_coeff = 0 diff --git a/code/game/machinery/doors/alarmlock.dm b/code/game/machinery/doors/alarmlock.dm index 4a92c935b4..3733c71844 100644 --- a/code/game/machinery/doors/alarmlock.dm +++ b/code/game/machinery/doors/alarmlock.dm @@ -21,7 +21,7 @@ return ..() /obj/machinery/door/airlock/alarmlock/Initialize() - ..() + . = ..() SSradio.remove_object(src, air_frequency) air_connection = SSradio.add_object(src, air_frequency, GLOB.RADIO_TO_AIRALARM) open() diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 4e39255109..4c0d4a1804 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -45,7 +45,7 @@ Radio.listening = 0 /obj/machinery/door_timer/Initialize() - ..() + . = ..() if(id != null) for(var/obj/machinery/door/window/brigdoor/M in urange(20, src)) if (M.id == id) diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 9a57593b3f..823e2f1805 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -26,7 +26,7 @@ var/list/affecting_areas /obj/machinery/door/firedoor/Initialize() - ..() + . = ..() CalculateAffectingAreas() /obj/machinery/door/firedoor/examine(mob/user) diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index 3dbf7888de..5adc8d1da3 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -11,8 +11,8 @@ GLOBAL_LIST_EMPTY(doppler_arrays) var/max_dist = 100 verb_say = "states coldly" -/obj/machinery/doppler_array/New() - ..() +/obj/machinery/doppler_array/Initialize() + . = ..() GLOB.doppler_arrays += src /obj/machinery/doppler_array/Destroy() diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index 022ca343f6..35f2bdcf30 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -24,6 +24,7 @@ var/datum/material_container/materials var/list/using_materials + var/starting_amount = 0 var/metal_cost = 1000 var/glass_cost = 1000 var/power_used = 1000 @@ -52,34 +53,27 @@ var/break_message = "lets out a tinny alarm before falling dark." var/break_sound = 'sound/machines/warning-buzzer.ogg' -/obj/machinery/droneDispenser/New() - ..() - obj_integrity = max_integrity - materials = new(src, list(MAT_METAL, MAT_GLASS), - MINERAL_MATERIAL_AMOUNT*MAX_STACK_SIZE*2) - +/obj/machinery/droneDispenser/Initialize() + . = ..() + materials = new(src, list(MAT_METAL, MAT_GLASS), MINERAL_MATERIAL_AMOUNT*MAX_STACK_SIZE*2) + materials.insert_amount(starting_amount) using_materials = list(MAT_METAL=metal_cost, MAT_GLASS=glass_cost) /obj/machinery/droneDispenser/Destroy() - qdel(materials) - . = ..() + QDEL_NULL(materials) + return ..() -/obj/machinery/droneDispenser/preloaded/New() - ..() - materials.insert_amount(5000) +/obj/machinery/droneDispenser/preloaded + starting_amount = 5000 /obj/machinery/droneDispenser/syndrone //Please forgive me name = "syndrone shell dispenser" - desc = "A suspicious machine that will create Syndicate \ - exterminator drones when supplied with metal and glass. Disgusting." + desc = "A suspicious machine that will create Syndicate exterminator drones when supplied with metal and glass. Disgusting." dispense_type = /obj/item/drone_shell/syndrone //If we're gonna be a jackass, go the full mile - 10 second recharge timer cooldownTime = 100 end_create_message = "dispenses a suspicious drone shell." - -/obj/machinery/droneDispenser/syndrone/New() - ..() - materials.insert_amount(25000) + starting_amount = 25000 /obj/machinery/droneDispenser/syndrone/badass //Please forgive me name = "badass syndrone shell dispenser" @@ -101,10 +95,7 @@ metal_cost = 2000 glass_cost = 2000 power_used = 2000 - -/obj/machinery/droneDispenser/snowflake/preloaded/New() - ..() - materials.insert_amount(10000) + starting_amount = 10000 // An example of a custom drone dispenser. // This one requires no materials and creates basic hivebots diff --git a/code/game/machinery/embedded_controller/airlock_controller.dm b/code/game/machinery/embedded_controller/airlock_controller.dm index fb50bc8314..be027a89c8 100644 --- a/code/game/machinery/embedded_controller/airlock_controller.dm +++ b/code/game/machinery/embedded_controller/airlock_controller.dm @@ -220,7 +220,7 @@ var/sanitize_external /obj/machinery/embedded_controller/radio/airlock_controller/Initialize(mapload) - ..() + . = ..() if(!mapload) return diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index 3c6f0ad13a..ee0b8f287c 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -77,7 +77,7 @@ return ..() /obj/machinery/embedded_controller/radio/Initialize() - ..() + . = ..() set_frequency(frequency) /obj/machinery/embedded_controller/radio/post_signal(datum/signal/signal) diff --git a/code/game/machinery/embedded_controller/simple_vent_controller.dm b/code/game/machinery/embedded_controller/simple_vent_controller.dm index 5959939673..063e81354c 100644 --- a/code/game/machinery/embedded_controller/simple_vent_controller.dm +++ b/code/game/machinery/embedded_controller/simple_vent_controller.dm @@ -52,8 +52,7 @@ var/airpump_tag /obj/machinery/embedded_controller/radio/simple_vent_controller/Initialize(mapload) - ..() - + . = ..() if(!mapload) return var/datum/computer/file/embedded_program/simple_vent_controller/new_prog = new diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index da82e1df25..b8434cc94d 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -5,15 +5,15 @@ desc = "A wall-mounted flashbulb device." icon = 'icons/obj/stationobjs.dmi' icon_state = "mflash1" - var/obj/item/device/assembly/flash/handheld/bulb = null + max_integrity = 250 + integrity_failure = 100 + anchored = TRUE + var/obj/item/device/assembly/flash/handheld/bulb var/id = null var/range = 2 //this is roughly the size of brig cell var/last_flash = 0 //Don't want it getting spammed like regular flashes var/strength = 100 //How knocked down targets are when flashed. var/base_state = "mflash" - max_integrity = 250 - integrity_failure = 100 - anchored = TRUE /obj/machinery/flasher/portable //Portable version of the flasher. Only flashes when anchored name = "portable flasher" @@ -24,19 +24,17 @@ base_state = "pflash" density = TRUE -/obj/machinery/flasher/New(loc, ndir = 0, built = 0) - ..() // ..() is EXTREMELY IMPORTANT, never forget to add it +/obj/machinery/flasher/Initialize(mapload, ndir = 0, built = 0) + . = ..() // ..() is EXTREMELY IMPORTANT, never forget to add it if(built) setDir(ndir) pixel_x = (dir & 3)? 0 : (dir == 4 ? -28 : 28) pixel_y = (dir & 3)? (dir ==1 ? -28 : 28) : 0 else - bulb = new /obj/item/device/assembly/flash/handheld(src) + bulb = new(src) /obj/machinery/flasher/Destroy() - if(bulb) - qdel(bulb) - bulb = null + QDEL_NULL(bulb) return ..() /obj/machinery/flasher/power_change() diff --git a/code/game/machinery/gulag_teleporter.dm b/code/game/machinery/gulag_teleporter.dm index 81ffc18836..6970db7c12 100644 --- a/code/game/machinery/gulag_teleporter.dm +++ b/code/game/machinery/gulag_teleporter.dm @@ -17,25 +17,23 @@ The console is located at computer/gulag_teleporter.dm use_power = IDLE_POWER_USE idle_power_usage = 200 active_power_usage = 5000 + circuit = /obj/item/weapon/circuitboard/machine/gulag_teleporter var/locked = FALSE var/jumpsuit_type = /obj/item/clothing/under/rank/prisoner var/shoes_type = /obj/item/clothing/shoes/sneakers/orange - var/obj/machinery/gulag_item_reclaimer/linked_reclaimer = null - var/list/required_items + var/obj/machinery/gulag_item_reclaimer/linked_reclaimer + var/static/list/telegulag_required_items = typecacheof(list( + /obj/item/weapon/implant, + /obj/item/clothing/suit/space/eva/plasmaman, + /obj/item/clothing/under/plasmaman, + /obj/item/clothing/head/helmet/space/plasmaman, + /obj/item/weapon/tank/internals, + /obj/item/clothing/mask/breath, + /obj/item/clothing/mask/gas)) -/obj/machinery/gulag_teleporter/New() - ..() - required_items = typecacheof(list( - /obj/item/weapon/implant, - /obj/item/clothing/suit/space/eva/plasmaman, - /obj/item/clothing/under/plasmaman, - /obj/item/clothing/head/helmet/space/plasmaman, - /obj/item/weapon/tank/internals, - /obj/item/clothing/mask/breath, - /obj/item/clothing/mask/gas)) - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/gulag_teleporter(null) - B.apply_default_parts(src) - addtimer(CALLBACK(src, .proc/locate_reclaimer), 5) +/obj/machinery/gulag_teleporter/Initialize() + . = ..() + locate_reclaimer() /obj/machinery/gulag_teleporter/Destroy() if(linked_reclaimer) @@ -46,7 +44,6 @@ The console is located at computer/gulag_teleporter.dm ..() update_icon() - /obj/machinery/gulag_teleporter/interact(mob/user) if(locked) to_chat(user, "[src] is locked.") @@ -138,7 +135,7 @@ The console is located at computer/gulag_teleporter.dm linked_reclaimer.stored_items[occupant] = list() var/mob/living/mob_occupant = occupant for(var/obj/item/W in mob_occupant) - if(!is_type_in_typecache(W, required_items) && mob_occupant.temporarilyRemoveItemFromInventory(W)) + if(!is_type_in_typecache(W, telegulag_required_items) && mob_occupant.temporarilyRemoveItemFromInventory(W)) if(istype(W, /obj/item/weapon/restraints/handcuffs)) W.forceMove(get_turf(src)) continue diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 141df8af74..9a88086d13 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -40,6 +40,7 @@ Possible to do for anyone motivated enough: active_power_usage = 100 max_integrity = 300 armor = list(melee = 50, bullet = 20, laser = 20, energy = 20, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 0) + circuit = /obj/item/weapon/circuitboard/machine/holopad var/list/masters = list()//List of living mobs that use the holopad var/last_request = 0 //to prevent request spam. ~Carn var/holo_range = 5 // Change to change how far the AI can move away from the holopad before deactivating. @@ -51,8 +52,6 @@ Possible to do for anyone motivated enough: /obj/machinery/holopad/Initialize() . = ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/holopad(null) - B.apply_default_parts(src) holopads += src /obj/machinery/holopad/Destroy() @@ -384,11 +383,5 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ return Impersonation.examine(user) return ..() -/obj/item/weapon/circuitboard/machine/holopad - name = "AI Holopad (Machine Board)" - build_path = /obj/machinery/holopad - origin_tech = "programming=1" - req_components = list(/obj/item/weapon/stock_parts/capacitor = 1) - #undef HOLOPAD_PASSIVE_POWER_USAGE #undef HOLOGRAM_POWER_USAGE diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 0210659eb9..0e450533fa 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -36,8 +36,8 @@ location.hotspot_expose(1000,500,1) return 1 -/obj/machinery/igniter/New() - ..() +/obj/machinery/igniter/Initialize() + . = ..() icon_state = "igniter[on]" /obj/machinery/igniter/power_change() @@ -61,15 +61,14 @@ anchored = TRUE resistance_flags = FIRE_PROOF -/obj/machinery/sparker/New() - ..() +/obj/machinery/sparker/Initialize() + . = ..() spark_system = new /datum/effect_system/spark_spread spark_system.set_up(2, 1, src) spark_system.attach(src) /obj/machinery/sparker/Destroy() - qdel(spark_system) - spark_system = null + QDEL_NULL(spark_system) return ..() /obj/machinery/sparker/power_change() diff --git a/code/game/machinery/iv_drip.dm.rej b/code/game/machinery/iv_drip.dm.rej new file mode 100644 index 0000000000..4c8aa8206c --- /dev/null +++ b/code/game/machinery/iv_drip.dm.rej @@ -0,0 +1,10 @@ +diff a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm (rejected hunks) +@@ -15,7 +15,7 @@ + /obj/item/weapon/reagent_containers/glass) + + /obj/machinery/iv_drip/Initialize() +- ..() ++ . = ..() + update_icon() + drip_containers = typecacheof(drip_containers) + diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm index 8c3736ddf3..337411e508 100644 --- a/code/game/machinery/launch_pad.dm +++ b/code/game/machinery/launch_pad.dm @@ -8,6 +8,7 @@ use_power = TRUE idle_power_usage = 200 active_power_usage = 2500 + circuit = /obj/item/weapon/circuitboard/machine/launchpad var/stationary = TRUE //to prevent briefcase pad deconstruction and such var/display_name = "Launchpad" var/teleport_speed = 35 @@ -17,20 +18,6 @@ var/x_offset = 0 var/y_offset = 0 -/obj/machinery/launchpad/Initialize() - . = ..() - var/obj/item/weapon/circuitboard/machine/launchpad/B = new - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/launchpad - name = "Bluespace Launchpad (Machine Board)" - build_path = /obj/machinery/launchpad - origin_tech = "programming=3;engineering=3;plasmatech=2;bluespace=3" - req_components = list( - /obj/item/weapon/ore/bluespace_crystal = 1, - /obj/item/weapon/stock_parts/manipulator = 1) - def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial) - /obj/machinery/launchpad/RefreshParts() var/E = -1 //to make default parts have the base value for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) @@ -171,9 +158,7 @@ qdel(src) /obj/machinery/launchpad/briefcase/Destroy() - if(!QDELETED(briefcase)) - qdel(briefcase) - briefcase = null + QDEL_NULL(briefcase) return ..() /obj/machinery/launchpad/briefcase/isAvailable() diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index a09adf6155..a979ba6398 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -12,7 +12,7 @@ // luminosity = 1 /obj/machinery/light_switch/Initialize() - ..() + . = ..() area = get_area(src) if(otherarea) diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index 60fd945a12..ec0c6eb4d7 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -11,21 +11,20 @@ icon_state = "limbgrower_idleoff" density = TRUE container_type = OPENCONTAINER - - var/operating = FALSE anchored = TRUE use_power = IDLE_POWER_USE - var/disabled = 0 idle_power_usage = 10 active_power_usage = 100 + circuit = /obj/item/weapon/circuitboard/machine/limbgrower + + var/operating = FALSE + var/disabled = FALSE var/busy = FALSE var/prod_coeff = 1 - var/datum/design/being_built var/datum/research/files var/selected_category var/screen = 1 - var/list/categories = list( "human", "lizard", @@ -33,22 +32,11 @@ "special" ) -/obj/machinery/limbgrower/New() - ..() +/obj/machinery/limbgrower/Initialize() + . = ..() create_reagents(0) - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/limbgrower(null) - B.apply_default_parts(src) files = new /datum/research/limbgrower(src) -/obj/item/weapon/circuitboard/machine/limbgrower - name = "Limb Grower (Machine Board)" - build_path = /obj/machinery/limbgrower - origin_tech = "programming=2;biotech=2" - req_components = list( - /obj/item/weapon/stock_parts/manipulator = 1, - /obj/item/weapon/reagent_containers/glass/beaker = 2, - /obj/item/weapon/stock_parts/console_screen = 1) - /obj/machinery/limbgrower/interact(mob/user) if(!is_operational()) return diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index 21e0590a4b..936f16320d 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -5,7 +5,6 @@ // This was created for firing ranges, but I suppose this could have other applications - Doohl /obj/machinery/magnetic_module - icon = 'icons/obj/objects.dmi' icon_state = "floor_magnet-f" name = "electromagnetic generator" @@ -29,22 +28,21 @@ var/center_y = 0 var/max_dist = 20 // absolute value of center_x,y cannot exceed this integer -/obj/machinery/magnetic_module/New() +/obj/machinery/magnetic_module/Initialize() ..() var/turf/T = loc hide(T.intact) center = T + SSradio.add_object(src, freq, GLOB.RADIO_MAGNETS) + return INITIALIZE_HINT_LATELOAD - spawn(10) // must wait for map loading to finish - SSradio.add_object(src, freq, GLOB.RADIO_MAGNETS) - - spawn() - magnetic_process() +/obj/machinery/magnetic_module/LateInitialize() + magnetic_process() /obj/machinery/magnetic_module/Destroy() SSradio.remove_object(src, freq) - . = ..() center = null + return ..() // update the invisibility and icon /obj/machinery/magnetic_module/hide(intact) @@ -216,27 +214,22 @@ var/datum/radio_frequency/radio_connection -/obj/machinery/magnetic_controller/New() +/obj/machinery/magnetic_controller/Initialize() ..() - if(autolink) for(var/obj/machinery/magnetic_module/M in GLOB.machines) if(M.freq == frequency && M.code == code) magnets.Add(M) - - spawn(45) // must wait for map loading to finish - radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_MAGNETS) - - if(path) // check for default path filter_path() // renders rpath + radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_MAGNETS) /obj/machinery/magnetic_controller/Destroy() SSradio.remove_object(src, frequency) magnets = null rpath = null - . = ..() + return ..() /obj/machinery/magnetic_controller/process() if(magnets.len == 0 && autolink) diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index a10c4976aa..2b5a1f08b0 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -22,8 +22,8 @@ req_access = list(ACCESS_ENGINE, ACCESS_ROBOTICS) -/obj/machinery/navbeacon/New() - ..() +/obj/machinery/navbeacon/Initialize() + . = ..() set_codes() diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index ec0aaf2bcd..9883236d64 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -197,16 +197,15 @@ GLOBAL_LIST_EMPTY(allCasters) name = "security newscaster" securityCaster = 1 -/obj/machinery/newscaster/New(loc, ndir, building) - ..() +/obj/machinery/newscaster/Initialize(mapload, ndir, building) + . = ..() if(building) setDir(ndir) pixel_x = (dir & 3)? 0 : (dir == 4 ? -32 : 32) pixel_y = (dir & 3)? (dir ==1 ? -32 : 32) : 0 GLOB.allCasters += src - for(var/obj/machinery/newscaster/NEWSCASTER in GLOB.allCasters) - unit_no++ + unit_no = GLOB.allCasters.len update_icon() /obj/machinery/newscaster/Destroy() diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 176209a2cb..66899c3735 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -72,8 +72,8 @@ var/obj/machinery/turretid/cp = null -/obj/machinery/porta_turret/New(loc) - ..() +/obj/machinery/porta_turret/Initialize() + . = ..() if(!base) base = src update_icon() @@ -143,18 +143,13 @@ /obj/machinery/porta_turret/Destroy() //deletes its own cover with it - if(cover) - qdel(cover) - cover = null + QDEL_NULL(cover) base = null if(cp) cp.turrets -= src cp = null - if(stored_gun) - qdel(stored_gun) - stored_gun = null - qdel(spark_system) - spark_system = null + QDEL_NULL(stored_gun) + QDEL_NULL(spark_system) return ..() @@ -602,8 +597,8 @@ /obj/machinery/porta_turret/aux_base/interact(mob/user) //Controlled solely from the base console. return -/obj/machinery/porta_turret/aux_base/New() - ..() +/obj/machinery/porta_turret/aux_base/Initialize() + . = ..() cover.name = name cover.desc = desc @@ -650,8 +645,8 @@ var/list/obj/machinery/porta_turret/turrets = list() resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF -/obj/machinery/turretid/New(loc, ndir = 0, built = 0) - ..() +/obj/machinery/turretid/Initialize(mapload, ndir = 0, built = 0) + . = ..() if(built) setDir(ndir) locked = FALSE @@ -682,7 +677,8 @@ T.cp = src /obj/machinery/turretid/attackby(obj/item/I, mob/user, params) - if(stat & BROKEN) return + if(stat & BROKEN) + return if (istype(I, /obj/item/device/multitool)) var/obj/item/device/multitool/M = I diff --git a/code/game/machinery/porta_turret/portable_turret.dm.rej b/code/game/machinery/porta_turret/portable_turret.dm.rej new file mode 100644 index 0000000000..0f16ca5ef3 --- /dev/null +++ b/code/game/machinery/porta_turret/portable_turret.dm.rej @@ -0,0 +1,10 @@ +diff a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm (rejected hunks) +@@ -664,7 +659,7 @@ + return ..() + + /obj/machinery/turretid/Initialize(mapload) //map-placed turrets autolink turrets +- ..() ++ . = ..() + if(!mapload) + return + diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm index b05ecdea70..f0d793732b 100644 --- a/code/game/machinery/quantum_pad.dm +++ b/code/game/machinery/quantum_pad.dm @@ -8,28 +8,13 @@ idle_power_usage = 200 active_power_usage = 5000 unique_rename = 1 + circuit = /obj/item/weapon/circuitboard/machine/quantumpad var/teleport_cooldown = 400 //30 seconds base due to base parts var/teleport_speed = 50 var/last_teleport //to handle the cooldown var/teleporting = 0 //if it's in the process of teleporting var/power_efficiency = 1 - var/obj/machinery/quantumpad/linked_pad = null - -/obj/machinery/quantumpad/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/quantumpad(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/quantumpad - name = "Quantum Pad (Machine Board)" - build_path = /obj/machinery/quantumpad - origin_tech = "programming=3;engineering=3;plasmatech=3;bluespace=4" - req_components = list( - /obj/item/weapon/ore/bluespace_crystal = 1, - /obj/item/weapon/stock_parts/capacitor = 1, - /obj/item/weapon/stock_parts/manipulator = 1, - /obj/item/stack/cable_coil = 1) - def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial) + var/obj/machinery/quantumpad/linked_pad /obj/machinery/quantumpad/RefreshParts() var/E = 0 diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 437fb3eb27..72b03bc7b5 100755 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -7,20 +7,14 @@ use_power = IDLE_POWER_USE idle_power_usage = 4 active_power_usage = 250 + circuit = /obj/item/weapon/circuitboard/machine/recharger var/obj/item/charging = null - var/static/list/allowed_devices = typecacheof(list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/ammo_box/magazine/recharge, /obj/item/device/modular_computer)) var/recharge_coeff = 1 - -/obj/machinery/recharger/Initialize() - . = ..() - var/obj/item/weapon/circuitboard/machine/recharger/B = new() - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/recharger - name = "Weapon Recharger (Machine Board)" - build_path = /obj/machinery/recharger - origin_tech = "powerstorage=4;engineering=3;materials=4" - req_components = list(/obj/item/weapon/stock_parts/capacitor = 1) + var/static/list/allowed_devices = typecacheof(list( + /obj/item/weapon/gun/energy, + /obj/item/weapon/melee/baton, + /obj/item/ammo_box/magazine/recharge, + /obj/item/device/modular_computer)) /obj/machinery/recharger/RefreshParts() for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts) diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 90854e5f74..8d69d6a37d 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -8,27 +8,15 @@ idle_power_usage = 5 active_power_usage = 1000 req_access = list(ACCESS_ROBOTICS) + state_open = TRUE + circuit = /obj/item/weapon/circuitboard/machine/cyborgrecharger var/recharge_speed var/repairs - state_open = TRUE -/obj/machinery/recharge_station/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/cyborgrecharger(null) - B.apply_default_parts(src) +/obj/machinery/recharge_station/Initialize() + . = ..() update_icon() -/obj/item/weapon/circuitboard/machine/cyborgrecharger - name = "Cyborg Recharger (Machine Board)" - build_path = /obj/machinery/recharge_station - origin_tech = "powerstorage=3;engineering=3" - req_components = list( - /obj/item/weapon/stock_parts/capacitor = 2, - /obj/item/weapon/stock_parts/cell = 1, - /obj/item/weapon/stock_parts/manipulator = 1) - def_components = list( - /obj/item/weapon/stock_parts/cell = /obj/item/weapon/stock_parts/cell/high) - /obj/machinery/recharge_station/RefreshParts() recharge_speed = 0 repairs = 0 diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index f853407df8..07251f6cf0 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -8,6 +8,7 @@ layer = ABOVE_ALL_MOB_LAYER // Overhead anchored = TRUE density = TRUE + circuit = /obj/item/weapon/circuitboard/machine/recycler var/safety_mode = FALSE // Temporarily stops machine if it detects a mob var/icon_name = "grinder-o" var/blood = 0 @@ -18,20 +19,10 @@ var/eat_victim_items = TRUE var/item_recycle_sound = 'sound/items/welder.ogg' -/obj/machinery/recycler/New() - ..() +/obj/machinery/recycler/Initialize() materials = new /datum/material_container(src, list(MAT_METAL, MAT_GLASS, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM)) - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/recycler(null) - B.apply_default_parts(src) update_icon() - -/obj/item/weapon/circuitboard/machine/recycler - name = "Recycler (Machine Board)" - build_path = /obj/machinery/recycler - origin_tech = "programming=2;engineering=2" - req_components = list( - /obj/item/weapon/stock_parts/matter_bin = 1, - /obj/item/weapon/stock_parts/manipulator = 1) + return ..() /obj/machinery/recycler/RefreshParts() var/amt_made = 0 diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 4ca6592b21..efcf10dcb6 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -88,7 +88,7 @@ GLOBAL_LIST_EMPTY(allConsoles) icon_state = "req_comp0" /obj/machinery/requests_console/Initialize() - ..() + . = ..() name = "\improper [department] requests console" GLOB.allConsoles += src switch(departmentType) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index a7d857844a..23ba93992c 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -10,9 +10,9 @@ max_integrity = 200 //The shield can only take so much beating (prevents perma-prisons) CanAtmosPass = ATMOS_PASS_DENSITY -/obj/structure/emergency_shield/New() - src.setDir(pick(1,2,3,4)) - ..() +/obj/structure/emergency_shield/Initialize() + . = ..() + setDir(pick(1,2,3,4)) air_update_turf(1) /obj/structure/emergency_shield/Destroy() diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index e72e65f99a..71036c735f 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -34,7 +34,7 @@ light_color = LIGHT_COLOR_BROWN /obj/machinery/computer/slot_machine/Initialize() - ..() + . = ..() jackpots = rand(1, 4) //false hope plays = rand(75, 200) diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 70481ad299..033310e55d 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -12,6 +12,7 @@ desc = "Made by Space Amish using traditional space techniques, this heater/cooler is guaranteed not to set the station on fire." max_integrity = 250 armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100, fire = 80, acid = 10) + circuit = /obj/item/weapon/circuitboard/machine/space_heater var/obj/item/weapon/stock_parts/cell/cell var/on = FALSE var/mode = HEATER_MODE_STANDBY @@ -26,22 +27,11 @@ /obj/machinery/space_heater/get_cell() return cell -/obj/machinery/space_heater/New() - ..() +/obj/machinery/space_heater/Initialize() + . = ..() cell = new(src) - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/space_heater(null) - B.apply_default_parts(src) update_icon() -/obj/item/weapon/circuitboard/machine/space_heater - name = "Space Heater (Machine Board)" - build_path = /obj/machinery/space_heater - origin_tech = "programming=2;engineering=2;plasmatech=2" - req_components = list( - /obj/item/weapon/stock_parts/micro_laser = 1, - /obj/item/weapon/stock_parts/capacitor = 1, - /obj/item/stack/cable_coil = 3) - /obj/machinery/space_heater/on_construction() qdel(cell) cell = null diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index cc43331eb8..6aaea43f97 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -101,8 +101,8 @@ mask_type = /obj/item/clothing/mask/breath storage_type = /obj/item/weapon/tank/internals/emergency_oxygen/double -/obj/machinery/suit_storage_unit/New() - ..() +/obj/machinery/suit_storage_unit/Initialize() + . = ..() wires = new /datum/wires/suit_storage_unit(src) if(suit_type) suit = new suit_type(src) @@ -115,18 +115,10 @@ update_icon() /obj/machinery/suit_storage_unit/Destroy() - if(suit) - qdel(suit) - suit = null - if(helmet) - qdel(helmet) - helmet = null - if(mask) - qdel(mask) - mask = null - if(storage) - qdel(storage) - storage = null + QDEL_NULL(suit) + QDEL_NULL(helmet) + QDEL_NULL(mask) + QDEL_NULL(storage) return ..() /obj/machinery/suit_storage_unit/update_icon() diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 655483a255..a2f97c3d54 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -82,22 +82,19 @@ countdown.stop() STOP_PROCESSING(SSfastprocess, src) -/obj/machinery/syndicatebomb/New() +/obj/machinery/syndicatebomb/Initialize() + . = ..() wires = new /datum/wires/syndicatebomb(src) - if(src.payload) + if(payload) payload = new payload(src) update_icon() countdown = new(src) - ..() /obj/machinery/syndicatebomb/Destroy() - qdel(wires) - wires = null - if(countdown) - qdel(countdown) - countdown = null + QDEL_NULL(wires) + QDEL_NULL(countdown) STOP_PROCESSING(SSfastprocess, src) - . = ..() + return ..() /obj/machinery/syndicatebomb/examine(mob/user) ..() diff --git a/code/game/machinery/telecomms/machines/broadcaster.dm b/code/game/machinery/telecomms/machines/broadcaster.dm index 286630a777..66783ee062 100644 --- a/code/game/machinery/telecomms/machines/broadcaster.dm +++ b/code/game/machinery/telecomms/machines/broadcaster.dm @@ -17,8 +17,7 @@ GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages use_power = IDLE_POWER_USE idle_power_usage = 25 machinetype = 5 - /*heatgen = 0 - delay = 7*/ + circuit = /obj/item/weapon/circuitboard/machine/telecomms/broadcaster /obj/machinery/telecomms/broadcaster/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) // Don't broadcast rejected signals @@ -82,22 +81,6 @@ GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages /* --- Do a snazzy animation! --- */ flick("broadcaster_send", src) -/obj/machinery/telecomms/broadcaster/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/broadcaster(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/telecomms/broadcaster - name = "Subspace Broadcaster (Machine Board)" - build_path = /obj/machinery/telecomms/broadcaster - origin_tech = "programming=2;engineering=2;bluespace=1" - 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 = 2) - /obj/machinery/telecomms/broadcaster/Destroy() // In case message_delay is left on 1, otherwise it won't reset the list and people can't say the same thing twice anymore. if(GLOB.message_delay) diff --git a/code/game/machinery/telecomms/machines/bus.dm b/code/game/machinery/telecomms/machines/bus.dm index fb2f06aca7..52437afb66 100644 --- a/code/game/machinery/telecomms/machines/bus.dm +++ b/code/game/machinery/telecomms/machines/bus.dm @@ -17,8 +17,8 @@ use_power = IDLE_POWER_USE idle_power_usage = 50 machinetype = 2 - //heatgen = 20 netspeed = 40 + circuit = /obj/item/weapon/circuitboard/machine/telecomms/bus var/change_frequency = 0 /obj/machinery/telecomms/bus/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) @@ -49,24 +49,6 @@ if(can_send) break -/obj/machinery/telecomms/bus/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/bus(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/telecomms/bus - name = "Bus Mainframe (Machine Board)" - build_path = /obj/machinery/telecomms/bus - origin_tech = "programming=2;engineering=2" - req_components = list( - /obj/item/weapon/stock_parts/manipulator = 2, - /obj/item/stack/cable_coil = 1, - /obj/item/weapon/stock_parts/subspace/filter = 1) - - - - - //Preset Buses /obj/machinery/telecomms/bus/preset_one @@ -93,10 +75,10 @@ freq_listening = list(GLOB.ENG_FREQ) autolinkers = list("processor4", "engineering", "common") -/obj/machinery/telecomms/bus/preset_four/New() +/obj/machinery/telecomms/bus/preset_four/Initialize() + . = ..() for(var/i = 1441, i < 1489, i += 2) freq_listening |= i - ..() /obj/machinery/telecomms/bus/preset_one/birdstation name = "Bus" diff --git a/code/game/machinery/telecomms/machines/hub.dm b/code/game/machinery/telecomms/machines/hub.dm index 656eb4a522..41d59e1e77 100644 --- a/code/game/machinery/telecomms/machines/hub.dm +++ b/code/game/machinery/telecomms/machines/hub.dm @@ -18,10 +18,9 @@ use_power = IDLE_POWER_USE idle_power_usage = 80 machinetype = 7 - //heatgen = 40 long_range_link = 1 netspeed = 40 - + circuit = /obj/item/weapon/circuitboard/machine/telecomms/hub /obj/machinery/telecomms/hub/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) if(is_freq_listening(signal)) @@ -33,23 +32,6 @@ relay_information(signal, "/obj/machinery/telecomms/relay", 1) relay_information(signal, "/obj/machinery/telecomms/broadcaster", 1) // Send it to a broadcaster. -/obj/machinery/telecomms/hub/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/hub(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/telecomms/hub - name = "Hub Mainframe (Machine Board)" - build_path = /obj/machinery/telecomms/hub - origin_tech = "programming=2;engineering=2" - req_components = list( - /obj/item/weapon/stock_parts/manipulator = 2, - /obj/item/stack/cable_coil = 2, - /obj/item/weapon/stock_parts/subspace/filter = 2) - - - - //Preset HUB /obj/machinery/telecomms/hub/preset diff --git a/code/game/machinery/telecomms/machines/processor.dm b/code/game/machinery/telecomms/machines/processor.dm index 5680c880b3..8d1494ff61 100644 --- a/code/game/machinery/telecomms/machines/processor.dm +++ b/code/game/machinery/telecomms/machines/processor.dm @@ -16,8 +16,7 @@ use_power = IDLE_POWER_USE idle_power_usage = 30 machinetype = 3 - //heatgen = 100 - //delay = 5 + circuit = /obj/item/weapon/circuitboard/machine/telecomms/processor var/process_mode = 1 // 1 = Uncompress Signals, 0 = Compress Signals /obj/machinery/telecomms/processor/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) @@ -35,24 +34,6 @@ signal.data["slow"] += rand(5, 10) // slow the signal down relay_information(signal, "/obj/machinery/telecomms/server") -/obj/machinery/telecomms/processor/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/processor(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/telecomms/processor - name = "Processor Unit (Machine Board)" - build_path = /obj/machinery/telecomms/processor - origin_tech = "programming=2;engineering=2" - 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) - - //Preset Processors /obj/machinery/telecomms/processor/preset_one diff --git a/code/game/machinery/telecomms/machines/receiver.dm b/code/game/machinery/telecomms/machines/receiver.dm index af218fd663..0614668f3a 100644 --- a/code/game/machinery/telecomms/machines/receiver.dm +++ b/code/game/machinery/telecomms/machines/receiver.dm @@ -16,7 +16,7 @@ use_power = IDLE_POWER_USE idle_power_usage = 30 machinetype = 1 - //heatgen = 0 + circuit = /obj/item/weapon/circuitboard/machine/telecomms/receiver /obj/machinery/telecomms/receiver/receive_signal(datum/signal/signal) @@ -50,25 +50,6 @@ return 0 return 1 - -/obj/machinery/telecomms/receiver/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/receiver(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/telecomms/receiver - name = "Subspace Receiver (Machine Board)" - build_path = /obj/machinery/telecomms/receiver - origin_tech = "programming=2;engineering=2;bluespace=1" - 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) - - - - //Preset Receivers //--PRESET LEFT--// @@ -89,10 +70,10 @@ freq_listening = list(GLOB.COMM_FREQ, GLOB.ENG_FREQ, GLOB.SEC_FREQ) //command, engineering, security //Common and other radio frequencies for people to freely use -/obj/machinery/telecomms/receiver/preset_right/New() +/obj/machinery/telecomms/receiver/preset_right/Initialize() + . = ..() for(var/i = 1441, i < 1489, i += 2) freq_listening |= i - ..() /obj/machinery/telecomms/receiver/preset_left/birdstation name = "Receiver" diff --git a/code/game/machinery/telecomms/machines/relay.dm b/code/game/machinery/telecomms/machines/relay.dm index 5bc97d54c7..4dee1e8078 100644 --- a/code/game/machinery/telecomms/machines/relay.dm +++ b/code/game/machinery/telecomms/machines/relay.dm @@ -15,9 +15,9 @@ use_power = IDLE_POWER_USE idle_power_usage = 30 machinetype = 8 - //heatgen = 0 netspeed = 5 long_range_link = 1 + circuit = /obj/item/weapon/circuitboard/machine/telecomms/relay var/broadcasting = 1 var/receiving = 1 @@ -45,22 +45,6 @@ return FALSE return receiving -/obj/machinery/telecomms/relay/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/relay(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/telecomms/relay - name = "Relay Mainframe (Machine Board)" - build_path = /obj/machinery/telecomms/relay - origin_tech = "programming=2;engineering=2;bluespace=2" - req_components = list( - /obj/item/weapon/stock_parts/manipulator = 2, - /obj/item/stack/cable_coil = 2, - /obj/item/weapon/stock_parts/subspace/filter = 2) - - - //Preset Relay /obj/machinery/telecomms/relay/preset diff --git a/code/game/machinery/telecomms/machines/server.dm b/code/game/machinery/telecomms/machines/server.dm index cd8e433cea..703bd378dd 100644 --- a/code/game/machinery/telecomms/machines/server.dm +++ b/code/game/machinery/telecomms/machines/server.dm @@ -16,7 +16,7 @@ use_power = IDLE_POWER_USE idle_power_usage = 15 machinetype = 4 - //heatgen = 50 + circuit = /obj/item/weapon/circuitboard/machine/telecomms/server var/list/log_entries = list() var/list/stored_names = list() var/list/TrafficActions = list() @@ -32,20 +32,9 @@ var/obj/item/device/radio/headset/server_radio = null var/last_signal = 0 // Last time it sent a signal -/obj/machinery/telecomms/server/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/server(null) - B.apply_default_parts(src) - server_radio = new() - -/obj/item/weapon/circuitboard/machine/telecomms/server - name = "Telecommunication Server (Machine Board)" - build_path = /obj/machinery/telecomms/server - origin_tech = "programming=2;engineering=2" - 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/machinery/telecomms/server/Initialize() + . = ..() + server_radio = new /obj/machinery/telecomms/server/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) if(signal.data["message"]) @@ -135,8 +124,8 @@ /obj/machinery/telecomms/server/presets network = "tcommsat" -/obj/machinery/telecomms/server/presets/New() - ..() +/obj/machinery/telecomms/server/presets/Initialize() + . = ..() name = id @@ -167,10 +156,10 @@ //Common and other radio frequencies for people to freely use // 1441 to 1489 -/obj/machinery/telecomms/server/presets/common/New() +/obj/machinery/telecomms/server/presets/common/Initialize() + . = ..() for(var/i = 1441, i < 1489, i += 2) freq_listening |= i - ..() /obj/machinery/telecomms/server/presets/command id = "Command Server" @@ -187,6 +176,6 @@ freq_listening = list(GLOB.SEC_FREQ) autolinkers = list("security") -/obj/machinery/telecomms/server/presets/common/birdstation/New() - ..() +/obj/machinery/telecomms/server/presets/common/birdstation/Initialize() + . = ..() freq_listening = list() diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index 48bb5bb5ab..62f53f73ad 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -16,6 +16,7 @@ GLOBAL_LIST_EMPTY(telecomms_list) /obj/machinery/telecomms icon = 'icons/obj/machines/telecomms.dmi' + critical_machine = TRUE var/list/links = list() // list of machines this machine is linked to var/traffic = 0 // value increases as traffic increases var/netspeed = 5 // how much traffic to lose per tick (50 gigabytes/second * netspeed) @@ -31,7 +32,6 @@ GLOBAL_LIST_EMPTY(telecomms_list) var/long_range_link = 0 // Can you link it across Z levels or on the otherside of the map? (Relay & Hub) var/hide = 0 // Is it a hidden machine? var/listening_level = 0 // 0 = auto set in New() - this is the z level that the machine is listening to. - critical_machine = TRUE /obj/machinery/telecomms/proc/relay_information(datum/signal/signal, filter, copysig, amount = 20) @@ -144,7 +144,7 @@ GLOBAL_LIST_EMPTY(telecomms_list) listening_level = position.z /obj/machinery/telecomms/Initialize(mapload) - ..() + . = ..() if(mapload && autolinkers.len) // Links nearby machines if(!long_range_link) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index b737b7e77e..b1edee8325 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -1,221 +1,3 @@ -/obj/machinery/computer/teleporter - name = "teleporter control console" - desc = "Used to control a linked teleportation Hub and Station." - icon_screen = "teleport" - icon_keyboard = "teleport_key" - circuit = /obj/item/weapon/circuitboard/computer/teleporter - var/obj/item/device/gps/locked = null - var/regime_set = "Teleporter" - var/id = null - var/obj/machinery/teleport/station/power_station - var/calibrating - var/turf/target //Used for one-time-use teleport cards (such as clown planet coordinates.) - //Setting this to 1 will set src.locked to null after a player enters the portal and will not allow hand-teles to open portals to that location. - - light_color = LIGHT_COLOR_BLUE - -/obj/machinery/computer/teleporter/New() - src.id = "[rand(1000, 9999)]" - ..() - -/obj/machinery/computer/teleporter/Initialize() - ..() - link_power_station() - -/obj/machinery/computer/teleporter/Destroy() - if (power_station) - power_station.teleporter_console = null - power_station = null - return ..() - -/obj/machinery/computer/teleporter/proc/link_power_station() - if(power_station) - return - for(dir in list(NORTH,EAST,SOUTH,WEST)) - power_station = locate(/obj/machinery/teleport/station, get_step(src, dir)) - if(power_station) - break - return power_station - -/obj/machinery/computer/teleporter/attackby(obj/I, mob/living/user, params) - if(istype(I, /obj/item/device/gps)) - var/obj/item/device/gps/L = I - if(L.locked_location && !(stat & (NOPOWER|BROKEN))) - if(!user.transferItemToLoc(L, src)) - to_chat(user, "\the [I] is stuck to your hand, you cannot put it in \the [src]!") - return - locked = L - to_chat(user, "You insert the GPS device into the [name]'s slot.") - else - return ..() - -/obj/machinery/computer/teleporter/attack_ai(mob/user) - src.attack_hand(user) - -/obj/machinery/computer/teleporter/attack_hand(mob/user) - if(..()) - return - interact(user) - -/obj/machinery/computer/teleporter/interact(mob/user) - var/data = "

Teleporter Status

" - if(!power_station) - data += "
No power station linked.
" - else if(!power_station.teleporter_hub) - data += "
No hub linked.
" - else - data += "
Current regime: [regime_set]
" - data += "Current target: [(!target) ? "None" : "[get_area(target)] [(regime_set != "Gate") ? "" : "Teleporter"]"]
" - if(calibrating) - data += "Calibration: In Progress" - else if(power_station.teleporter_hub.calibrated || power_station.teleporter_hub.accurate >= 3) - data += "Calibration: Optimal" - else - data += "Calibration: Sub-Optimal" - data += "

" - - data += "Change regime
" - data += "Set target
" - if(locked) - data += "
Get target from memory
" - data += "Eject GPS device
" - else - data += "
Get target from memory
" - data += "Eject GPS device
" - - data += "
Calibrate Hub" - - var/datum/browser/popup = new(user, "teleporter", name, 400, 400) - popup.set_content(data) - popup.open() - return - -/obj/machinery/computer/teleporter/Topic(href, href_list) - if(..()) - return - - if(href_list["eject"]) - eject() - updateDialog() - return - - if(!check_hub_connection()) - say("Error: Unable to detect hub.") - return - if(calibrating) - say("Error: Calibration in progress. Stand by.") - return - - if(href_list["regimeset"]) - power_station.engaged = 0 - power_station.teleporter_hub.update_icon() - power_station.teleporter_hub.calibrated = 0 - reset_regime() - if(href_list["settarget"]) - power_station.engaged = 0 - power_station.teleporter_hub.update_icon() - power_station.teleporter_hub.calibrated = 0 - set_target(usr) - if(href_list["locked"]) - power_station.engaged = 0 - power_station.teleporter_hub.update_icon() - power_station.teleporter_hub.calibrated = 0 - target = get_turf(locked.locked_location) - if(href_list["calibrate"]) - if(!target) - say("Error: No target set to calibrate to.") - return - if(power_station.teleporter_hub.calibrated || power_station.teleporter_hub.accurate >= 3) - say("Hub is already calibrated!") - return - say("Processing hub calibration to target...") - - calibrating = 1 - spawn(50 * (3 - power_station.teleporter_hub.accurate)) //Better parts mean faster calibration - calibrating = 0 - if(check_hub_connection()) - power_station.teleporter_hub.calibrated = 1 - say("Calibration complete.") - else - say("Error: Unable to detect hub.") - updateDialog() - - updateDialog() - -/obj/machinery/computer/teleporter/proc/check_hub_connection() - if(!power_station) - return - if(!power_station.teleporter_hub) - return - return 1 - -/obj/machinery/computer/teleporter/proc/reset_regime() - target = null - if(regime_set == "Teleporter") - regime_set = "Gate" - else - regime_set = "Teleporter" - -/obj/machinery/computer/teleporter/proc/eject() - if(locked) - locked.loc = loc - locked = null - -/obj/machinery/computer/teleporter/proc/set_target(mob/user) - var/list/L = list() - var/list/areaindex = list() - if(regime_set == "Teleporter") - for(var/obj/item/device/radio/beacon/R in GLOB.teleportbeacons) - var/turf/T = get_turf(R) - if(!T) - continue - if(T.z == ZLEVEL_CENTCOM || T.z > ZLEVEL_SPACEMAX) - continue - L[avoid_assoc_duplicate_keys(T.loc.name, areaindex)] = R - - for(var/obj/item/weapon/implant/tracking/I in GLOB.tracked_implants) - if(!I.imp_in || !ismob(I.loc)) - continue - else - var/mob/M = I.loc - if(M.stat == DEAD) - if(M.timeofdeath + 6000 < world.time) - continue - var/turf/T = get_turf(M) - if(!T) - continue - if(T.z == ZLEVEL_CENTCOM) - continue - L[avoid_assoc_duplicate_keys(M.real_name, areaindex)] = I - - var/desc = input("Please select a location to lock in.", "Locking Computer") as null|anything in L - target = L[desc] - - else - var/list/S = power_station.linked_stations - if(!S.len) - to_chat(user, "No connected stations located.") - return - for(var/obj/machinery/teleport/station/R in S) - var/turf/T = get_turf(R) - if(!T || !R.teleporter_hub || !R.teleporter_console) - continue - if(T.z == ZLEVEL_CENTCOM || T.z > ZLEVEL_SPACEMAX) - continue - L[avoid_assoc_duplicate_keys(T.loc.name, areaindex)] = R - var/desc = input("Please select a station to lock in.", "Locking Computer") as null|anything in L - target = L[desc] - if(target) - var/obj/machinery/teleport/station/trg = target - trg.linked_stations |= power_station - trg.stat &= ~NOPOWER - if(trg.teleporter_hub) - trg.teleporter_hub.stat &= ~NOPOWER - trg.teleporter_hub.update_icon() - if(trg.teleporter_console) - trg.teleporter_console.stat &= ~NOPOWER - trg.teleporter_console.update_icon() - /obj/machinery/teleport name = "teleport" icon = 'icons/obj/machines/teleporter.dmi' @@ -226,29 +8,16 @@ name = "teleporter hub" desc = "It's the hub of a teleporting machine." icon_state = "tele0" - var/accurate = 0 use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 2000 + circuit = /obj/item/weapon/circuitboard/machine/teleporter_hub + var/accurate = FALSE var/obj/machinery/teleport/station/power_station var/calibrated //Calibration prevents mutation -/obj/machinery/teleport/hub/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/teleporter_hub(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/teleporter_hub - name = "Teleporter Hub (Machine Board)" - build_path = /obj/machinery/teleport/hub - origin_tech = "programming=3;engineering=4;bluespace=4;materials=4" - req_components = list( - /obj/item/weapon/ore/bluespace_crystal = 3, - /obj/item/weapon/stock_parts/matter_bin = 1) - def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial) - /obj/machinery/teleport/hub/Initialize() - ..() + . = ..() link_power_station() /obj/machinery/teleport/hub/Destroy() @@ -327,8 +96,8 @@ /obj/machinery/teleport/hub/proc/is_ready() . = !panel_open && !(stat & (BROKEN|NOPOWER)) && power_station && power_station.engaged && !(power_station.stat & (BROKEN|NOPOWER)) -/obj/machinery/teleport/hub/syndicate/New() - ..() +/obj/machinery/teleport/hub/syndicate/Initialize() + . = ..() component_parts += new /obj/item/weapon/stock_parts/matter_bin/super(null) RefreshParts() @@ -337,32 +106,18 @@ name = "station" desc = "The power control station for a bluespace teleporter. Used for toggling power, and can activate a test-fire to prevent malfunctions." icon_state = "controller" - var/engaged = 0 use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 2000 + circuit = /obj/item/weapon/circuitboard/machine/teleporter_station + var/engaged = FALSE var/obj/machinery/computer/teleporter/teleporter_console var/obj/machinery/teleport/hub/teleporter_hub var/list/linked_stations = list() var/efficiency = 0 -/obj/machinery/teleport/station/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/teleporter_station(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/teleporter_station - name = "Teleporter Station (Machine Board)" - build_path = /obj/machinery/teleport/station - origin_tech = "programming=4;engineering=4;bluespace=4;plasmatech=3" - 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) - def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial) - /obj/machinery/teleport/station/Initialize() - ..() + . = ..() link_console_and_hub() /obj/machinery/teleport/station/RefreshParts() diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm index 3215727740..79428fce6f 100644 --- a/code/game/machinery/transformer.dm +++ b/code/game/machinery/transformer.dm @@ -22,7 +22,7 @@ . = ..() new /obj/machinery/conveyor/auto(locate(x - 1, y, z), WEST) new /obj/machinery/conveyor/auto(loc, WEST) - new /obj/machinery/conveyor/auto(locate(x + 1, y, z), WEST) + new /obj/machinery/conveyor/auto(locate(x + 1, y, z), WEST) countdown = new(src) countdown.start() @@ -33,9 +33,7 @@ to_chat(user, "It will be ready in [max(0, seconds_remaining)] seconds.") /obj/machinery/transformer/Destroy() - if(countdown) - qdel(countdown) - countdown = null + QDEL_NULL(countdown) . = ..() /obj/machinery/transformer/power_change() diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index a65d4baa9f..6ed28fb457 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -24,6 +24,7 @@ max_integrity = 300 integrity_failure = 100 armor = list(melee = 20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 70) + circuit = /obj/item/weapon/circuitboard/machine/vendor var/active = 1 //No sales pitches if off! var/vend_ready = 1 //Are we ready to vend?? Is it time?? @@ -60,12 +61,11 @@ var/refill_count = 3 //The number of canisters the vending machine uses /obj/machinery/vending/Initialize() + if(refill_canister) + circuit = null . = ..() wires = new /datum/wires/vending(src) - if(refill_canister) //constructable vending machine - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/vendor(null) - B.apply_default_parts(src) - else + if(!refill_canister) //constructable vending machine build_inventory(products) build_inventory(contraband, 1) build_inventory(premium, 0, 1) @@ -77,46 +77,6 @@ last_slogan = world.time + rand(0, slogan_delay) power_change() -/obj/item/weapon/circuitboard/machine/vendor - name = "Booze-O-Mat Vendor (Machine Board)" - build_path = /obj/machinery/vending/boozeomat - origin_tech = "programming=1" - req_components = list( - /obj/item/weapon/vending_refill/boozeomat = 3) - - var/list/names_paths = list(/obj/machinery/vending/boozeomat = "Booze-O-Mat", - /obj/machinery/vending/coffee = "Solar's Best Hot Drinks", - /obj/machinery/vending/snack = "Getmore Chocolate Corp", - /obj/machinery/vending/cola = "Robust Softdrinks", - /obj/machinery/vending/cigarette = "ShadyCigs Deluxe", - /obj/machinery/vending/autodrobe = "AutoDrobe", - /obj/machinery/vending/clothing = "ClothesMate", - /obj/machinery/vending/medical = "NanoMed Plus", - /obj/machinery/vending/wallmed = "NanoMed") - -/obj/item/weapon/circuitboard/machine/vendor/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/screwdriver)) - var/position = names_paths.Find(build_path) - position = (position == names_paths.len) ? 1 : (position + 1) - var/typepath = names_paths[position] - - to_chat(user, "You set the board to \"[names_paths[typepath]]\".") - set_type(typepath) - else - return ..() - -/obj/item/weapon/circuitboard/machine/vendor/proc/set_type(var/obj/machinery/vending/typepath) - build_path = typepath - name = "[names_paths[build_path]] Vendor (Machine Board)" - req_components = list(initial(typepath.refill_canister) = initial(typepath.refill_count)) - -/obj/item/weapon/circuitboard/machine/vendor/apply_default_parts(obj/machinery/M) - for(var/typepath in names_paths) - if(istype(M, typepath)) - set_type(typepath) - break - ..() - /obj/machinery/vending/Destroy() QDEL_NULL(wires) QDEL_NULL(coin) @@ -795,7 +755,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C desc = "Uh oh!" /obj/machinery/vending/cola/random/Initialize() - ..() + . = ..() var/T = pick(subtypesof(/obj/machinery/vending/cola) - /obj/machinery/vending/cola/random) new T(get_turf(src)) qdel(src) diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index 11b5a075fc..7db5321b9e 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -17,6 +17,7 @@ dir = EAST icon = 'icons/mecha/mech_bay.dmi' icon_state = "recharge_port" + circuit = /obj/item/weapon/circuitboard/machine/mech_recharger var/obj/mecha/recharging_mech var/obj/machinery/computer/mech_bay_power_console/recharge_console var/max_charge = 50 @@ -24,20 +25,10 @@ var/repairability = 0 var/turf/recharging_turf = null -/obj/machinery/mech_bay_recharge_port/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/mech_recharger(null) - B.apply_default_parts(src) +/obj/machinery/mech_bay_recharge_port/Initialize() + . = ..() recharging_turf = get_step(loc, dir) -/obj/item/weapon/circuitboard/machine/mech_recharger - name = "Mechbay Recharger (Machine Board)" - build_path = /obj/machinery/mech_bay_recharge_port - origin_tech = "programming=3;powerstorage=3;engineering=3" - req_components = list( - /obj/item/stack/cable_coil = 2, - /obj/item/weapon/stock_parts/capacitor = 5) - /obj/machinery/mech_bay_recharge_port/RefreshParts() var/MC for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts) @@ -149,5 +140,5 @@ add_overlay("recharge_comp_on") /obj/machinery/computer/mech_bay_power_console/Initialize() - ..() + . = ..() reconnect() diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 7c28f5d95b..9865175486 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -9,6 +9,7 @@ idle_power_usage = 20 active_power_usage = 5000 req_access = list(ACCESS_ROBOTICS) + circuit = /obj/item/weapon/circuitboard/machine/mechfab var/time_coeff = 1 var/component_coeff = 1 var/datum/material_container/materials @@ -34,22 +35,10 @@ "Misc" ) -/obj/machinery/mecha_part_fabricator/New() - ..() +/obj/machinery/mecha_part_fabricator/Initialize() files = new /datum/research(src) //Setup the research data holder. materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE)) - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/mechfab(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/mechfab - name = "Exosuit Fabricator (Machine Board)" - build_path = /obj/machinery/mecha_part_fabricator - origin_tech = "programming=2;engineering=2" - 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) + return ..() /obj/machinery/mecha_part_fabricator/RefreshParts() var/T = 0 diff --git a/code/game/objects/items/weapons/circuitboards/_circuitboard.dm b/code/game/objects/items/weapons/circuitboards/_circuitboard.dm new file mode 100644 index 0000000000..5288cd4081 --- /dev/null +++ b/code/game/objects/items/weapons/circuitboards/_circuitboard.dm @@ -0,0 +1,55 @@ +//File with the circuitboard and circuitboard/machine class definitions and procs + + +// Circuitboard + +/obj/item/weapon/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' + origin_tech = "programming=2" + materials = list(MAT_GLASS=1000) + w_class = WEIGHT_CLASS_SMALL + var/build_path = null + +/obj/item/weapon/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/weapon/circuitboard/machine + var/list/req_components // Components required by the machine. + // Example: list(/obj/item/weapon/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/weapon/stock_parts/matter_bin = /obj/item/weapon/stock_parts/matter_bin/super) + +// Applies the default parts defined by the circuit board when the machine is created +/obj/item/weapon/circuitboard/machine/apply_default_parts(obj/machinery/M) + if(!req_components) + return + + M.component_parts = list(src) // List of components always contains a board + loc = null + + 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() \ No newline at end of file diff --git a/code/game/objects/items/weapons/circuitboards/computer_circuitboards.dm b/code/game/objects/items/weapons/circuitboards/computer_circuitboards.dm new file mode 100644 index 0000000000..17e5dbf597 --- /dev/null +++ b/code/game/objects/items/weapons/circuitboards/computer_circuitboards.dm @@ -0,0 +1,369 @@ +/obj/item/weapon/circuitboard/computer/turbine_computer + name = "Turbine Computer (Computer Board)" + build_path = /obj/machinery/computer/turbine_computer + origin_tech = "programming=4;engineering=4;powerstorage=4" + +/obj/item/weapon/circuitboard/computer/launchpad_console + name = "Launchpad Control Console (Computer Board)" + build_path = /obj/machinery/computer/launchpad + origin_tech = "programming=3;bluespace=3;plasmatech=2" + +/obj/item/weapon/circuitboard/computer/message_monitor + name = "Message Monitor (Computer Board)" + build_path = /obj/machinery/computer/message_monitor + origin_tech = "programming=2" + +/obj/item/weapon/circuitboard/computer/security + name = "Security Cameras (Computer Board)" + build_path = /obj/machinery/computer/security + origin_tech = "programming=2;combat=2" + +/obj/item/weapon/circuitboard/computer/xenobiology + name = "circuit board (Xenobiology Console)" + build_path = /obj/machinery/computer/camera_advanced/xenobio + origin_tech = "programming=3;biotech=3" + +/obj/item/weapon/circuitboard/computer/base_construction + name = "circuit board (Aux Mining Base Construction Console)" + build_path = /obj/machinery/computer/camera_advanced/base_construction + origin_tech = "programming=3;engineering=3" + +/obj/item/weapon/circuitboard/computer/aiupload + name = "AI Upload (Computer Board)" + build_path = /obj/machinery/computer/upload/ai + origin_tech = "programming=4;engineering=4" + +/obj/item/weapon/circuitboard/computer/borgupload + name = "Cyborg Upload (Computer Board)" + build_path = /obj/machinery/computer/upload/borg + origin_tech = "programming=4;engineering=4" + +/obj/item/weapon/circuitboard/computer/med_data + name = "Medical Records Console (Computer Board)" + build_path = /obj/machinery/computer/med_data + origin_tech = "programming=2;biotech=2" + +/obj/item/weapon/circuitboard/computer/pandemic + name = "PanD.E.M.I.C. 2200 (Computer Board)" + build_path = /obj/machinery/computer/pandemic + origin_tech = "programming=2;biotech=2" + +/obj/item/weapon/circuitboard/computer/scan_consolenew + name = "DNA Machine (Computer Board)" + build_path = /obj/machinery/computer/scan_consolenew + origin_tech = "programming=2;biotech=2" + +/obj/item/weapon/circuitboard/computer/communications + name = "Communications (Computer Board)" + build_path = /obj/machinery/computer/communications + origin_tech = "programming=3;magnets=3" + var/lastTimeUsed = 0 + +/obj/item/weapon/circuitboard/computer/card + name = "ID Console (Computer Board)" + build_path = /obj/machinery/computer/card + origin_tech = "programming=3" + +/obj/item/weapon/circuitboard/computer/card/centcom + name = "CentCom ID Console (Computer Board)" + build_path = /obj/machinery/computer/card/centcom + +/obj/item/weapon/circuitboard/computer/card/minor + name = "Department Management Console (Computer Board)" + build_path = /obj/machinery/computer/card/minor + var/target_dept = 1 + var/list/dept_list = list("General","Security","Medical","Science","Engineering") + +/obj/item/weapon/circuitboard/computer/card/minor/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/screwdriver)) + target_dept = (target_dept == dept_list.len) ? 1 : (target_dept + 1) + to_chat(user, "You set the board to \"[dept_list[target_dept]]\".") + else + return ..() + +/obj/item/weapon/circuitboard/computer/card/minor/examine(user) + ..() + to_chat(user, "Currently set to \"[dept_list[target_dept]]\".") + +//obj/item/weapon/circuitboard/computer/shield +// name = "Shield Control (Computer Board)" +// build_path = /obj/machinery/computer/stationshield +/obj/item/weapon/circuitboard/computer/teleporter + name = "Teleporter (Computer Board)" + build_path = /obj/machinery/computer/teleporter + origin_tech = "programming=3;bluespace=3;plasmatech=3" + +/obj/item/weapon/circuitboard/computer/secure_data + name = "Security Records Console (Computer Board)" + build_path = /obj/machinery/computer/secure_data + origin_tech = "programming=2;combat=2" + +/obj/item/weapon/circuitboard/computer/stationalert + name = "Station Alerts (Computer Board)" + build_path = /obj/machinery/computer/station_alert + +/obj/item/weapon/circuitboard/computer/atmos_control + name = "Atmospheric Monitor (Computer Board)" + build_path = /obj/machinery/computer/atmos_control + +/obj/item/weapon/circuitboard/computer/atmos_control/tank + name = "Tank Control (Computer Board)" + build_path = /obj/machinery/computer/atmos_control/tank + origin_tech = "programming=2;engineering=3;materials=2" + +/obj/item/weapon/circuitboard/computer/atmos_alert + name = "Atmospheric Alert (Computer Board)" + build_path = /obj/machinery/computer/atmos_alert + +/obj/item/weapon/circuitboard/computer/pod + name = "Massdriver control (Computer Board)" + build_path = /obj/machinery/computer/pod + +/obj/item/weapon/circuitboard/computer/robotics + name = "Robotics Control (Computer Board)" + build_path = /obj/machinery/computer/robotics + origin_tech = "programming=3" + +/obj/item/weapon/circuitboard/computer/cloning + name = "Cloning (Computer Board)" + build_path = /obj/machinery/computer/cloning + origin_tech = "programming=2;biotech=2" + +/obj/item/weapon/circuitboard/computer/arcade/battle + name = "Arcade Battle (Computer Board)" + build_path = /obj/machinery/computer/arcade/battle + origin_tech = "programming=1" + +/obj/item/weapon/circuitboard/computer/arcade/orion_trail + name = "Orion Trail (Computer Board)" + build_path = /obj/machinery/computer/arcade/orion_trail + origin_tech = "programming=1" + +/obj/item/weapon/circuitboard/computer/turbine_control + name = "Turbine control (Computer Board)" + build_path = /obj/machinery/computer/turbine_computer + +/obj/item/weapon/circuitboard/computer/solar_control + name = "Solar Control (Computer Board)" //name fixed 250810 + build_path = /obj/machinery/power/solar_control + origin_tech = "programming=2;powerstorage=2" + +/obj/item/weapon/circuitboard/computer/powermonitor + name = "Power Monitor (Computer Board)" //name fixed 250810 + build_path = /obj/machinery/computer/monitor + origin_tech = "programming=2;powerstorage=2" + +/obj/item/weapon/circuitboard/computer/olddoor + name = "DoorMex (Computer Board)" + build_path = /obj/machinery/computer/pod/old + +/obj/item/weapon/circuitboard/computer/syndicatedoor + name = "ProComp Executive (Computer Board)" + build_path = /obj/machinery/computer/pod/old/syndicate + +/obj/item/weapon/circuitboard/computer/swfdoor + name = "Magix (Computer Board)" + build_path = /obj/machinery/computer/pod/old/swf + +/obj/item/weapon/circuitboard/computer/prisoner + name = "Prisoner Management Console (Computer Board)" + build_path = /obj/machinery/computer/prisoner +/obj/item/weapon/circuitboard/computer/gulag_teleporter_console + name = "Labor Camp teleporter console (Computer Board)" + build_path = /obj/machinery/computer/gulag_teleporter_computer + +/obj/item/weapon/circuitboard/computer/rdconsole + name = "R&D Console (Computer Board)" + build_path = /obj/machinery/computer/rdconsole/core + +/obj/item/weapon/circuitboard/computer/rdconsole/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/screwdriver)) + if(build_path == /obj/machinery/computer/rdconsole/core) + name = "R&D Console - Robotics (Computer Board)" + build_path = /obj/machinery/computer/rdconsole/robotics + to_chat(user, "Access protocols successfully updated.") + else + name = "R&D Console (Computer Board)" + build_path = /obj/machinery/computer/rdconsole/core + to_chat(user, "Defaulting access protocols.") + else + return ..() + +/obj/item/weapon/circuitboard/computer/mecha_control + name = "Exosuit Control Console (Computer Board)" + build_path = /obj/machinery/computer/mecha + +/obj/item/weapon/circuitboard/computer/rdservercontrol + name = "R&D Server Control (Computer Board)" + build_path = /obj/machinery/computer/rdservercontrol + +/obj/item/weapon/circuitboard/computer/crew + name = "Crew Monitoring Console (Computer Board)" + build_path = /obj/machinery/computer/crew + origin_tech = "programming=2;biotech=2" + +/obj/item/weapon/circuitboard/computer/mech_bay_power_console + name = "Mech Bay Power Control Console (Computer Board)" + build_path = /obj/machinery/computer/mech_bay_power_console + origin_tech = "programming=3;powerstorage=3" + +/obj/item/weapon/circuitboard/computer/cargo + name = "Supply Console (Computer Board)" + build_path = /obj/machinery/computer/cargo + origin_tech = "programming=3" + var/contraband = FALSE + var/emagged = FALSE + +/obj/item/weapon/circuitboard/computer/cargo/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/device/multitool)) + if(!emagged) + contraband = !contraband + to_chat(user, "Receiver spectrum set to [contraband ? "Broad" : "Standard"].") + else + to_chat(user, "The spectrum chip is unresponsive.") + else if(istype(I, /obj/item/weapon/card/emag)) + if(!emagged) + contraband = TRUE + emagged = TRUE + to_chat(user, "You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband.") + else + return ..() + + +/obj/item/weapon/circuitboard/computer/cargo/request + name = "Supply Request Console (Computer Board)" + build_path = /obj/machinery/computer/cargo/request + +/obj/item/weapon/circuitboard/computer/stockexchange + name = "circuit board (Stock Exchange Console)" + build_path = /obj/machinery/computer/stockexchange + origin_tech = "programming=3" + +/obj/item/weapon/circuitboard/computer/operating + name = "Operating Computer (Computer Board)" + build_path = /obj/machinery/computer/operating + origin_tech = "programming=2;biotech=3" + +/obj/item/weapon/circuitboard/computer/mining + name = "Outpost Status Display (Computer Board)" + build_path = /obj/machinery/computer/security/mining + +/obj/item/weapon/circuitboard/computer/comm_monitor + name = "Telecommunications Monitor (Computer Board)" + build_path = /obj/machinery/computer/telecomms/monitor + origin_tech = "programming=3;magnets=3;bluespace=2" + +/obj/item/weapon/circuitboard/computer/comm_server + name = "Telecommunications Server Monitor (Computer Board)" + build_path = /obj/machinery/computer/telecomms/server + origin_tech = "programming=3;magnets=3;bluespace=2" + +/obj/item/weapon/circuitboard/computer/shuttle + name = "Shuttle (Computer Board)" + build_path = /obj/machinery/computer/shuttle + var/shuttleId + var/possible_destinations = "" + +/obj/item/weapon/circuitboard/computer/shuttle/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/device/multitool)) + var/chosen_id = round(input(usr, "Choose an ID number (-1 for reset):", "Input an Integer", null) as num|null) + if(chosen_id >= 0) + shuttleId = chosen_id + else + shuttleId = initial(shuttleId) + else + return ..() + +/obj/item/weapon/circuitboard/computer/labor_shuttle + name = "Labor Shuttle (Computer Board)" + build_path = /obj/machinery/computer/shuttle/labor + +/obj/item/weapon/circuitboard/computer/labor_shuttle/one_way + name = "Prisoner Shuttle Console (Computer Board)" + build_path = /obj/machinery/computer/shuttle/labor/one_way + +/obj/item/weapon/circuitboard/computer/ferry + name = "Transport Ferry (Computer Board)" + build_path = /obj/machinery/computer/shuttle/ferry + +/obj/item/weapon/circuitboard/computer/ferry/request + name = "Transport Ferry Console (Computer Board)" + build_path = /obj/machinery/computer/shuttle/ferry/request + +/obj/item/weapon/circuitboard/computer/mining_shuttle + name = "Mining Shuttle (Computer Board)" + build_path = /obj/machinery/computer/shuttle/mining + +/obj/item/weapon/circuitboard/computer/white_ship + name = "White Ship (Computer Board)" + build_path = /obj/machinery/computer/shuttle/white_ship + +/obj/item/weapon/circuitboard/computer/auxillary_base + name = "Auxillary Base Management Console (Computer Board)" + build_path = /obj/machinery/computer/auxillary_base + +/obj/item/weapon/circuitboard/computer/holodeck// Not going to let people get this, but it's just here for future + name = "Holodeck Control (Computer Board)" + build_path = /obj/machinery/computer/holodeck + origin_tech = "programming=4" + +/obj/item/weapon/circuitboard/computer/aifixer + name = "AI Integrity Restorer (Computer Board)" + build_path = /obj/machinery/computer/aifixer + origin_tech = "programming=2;biotech=2" + +/obj/item/weapon/circuitboard/computer/slot_machine + name = "Slot Machine (Computer Board)" + build_path = /obj/machinery/computer/slot_machine + origin_tech = "programming=1" + +/obj/item/weapon/circuitboard/computer/libraryconsole + name = "Library Visitor Console (Computer Board)" + build_path = /obj/machinery/computer/libraryconsole + origin_tech = "programming=1" + +/obj/item/weapon/circuitboard/computer/libraryconsole/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/screwdriver)) + if(build_path == /obj/machinery/computer/libraryconsole/bookmanagement) + name = "Library Visitor Console (Computer Board)" + build_path = /obj/machinery/computer/libraryconsole + to_chat(user, "Defaulting access protocols.") + else + name = "Book Inventory Management Console (Computer Board)" + build_path = /obj/machinery/computer/libraryconsole/bookmanagement + to_chat(user, "Access protocols successfully updated.") + else + return ..() + +/obj/item/weapon/circuitboard/computer/apc_control + name = "\improper Power Flow Control Console (Computer Board)" + build_path = /obj/machinery/computer/apc_control + origin_tech = "programming=3;engineering=3;powerstorage=2" + +/obj/item/weapon/circuitboard/computer/shuttle/monastery_shuttle + name = "Monastery Shuttle (Computer Board)" + build_path = /obj/machinery/computer/shuttle/monastery_shuttle + +/obj/item/weapon/circuitboard/computer/syndicate_shuttle + name = "Syndicate Shuttle (Computer Board)" + build_path = /obj/machinery/computer/shuttle/syndicate + var/challenge = FALSE + var/moved = FALSE + +/obj/item/weapon/circuitboard/computer/syndicate_shuttle/Initialize() + . = ..() + GLOB.syndicate_shuttle_boards += src + +/obj/item/weapon/circuitboard/computer/syndicate_shuttle/Destroy() + GLOB.syndicate_shuttle_boards -= src + return ..() + +/obj/item/weapon/circuitboard/computer/bsa_control + name = "Bluespace Artillery Controls (Computer Board)" + build_path = /obj/machinery/computer/bsa_control + origin_tech = "engineering=2;combat=2;bluespace=2" + +/obj/item/weapon/circuitboard/computer/sat_control + name = "Satellite Network Control (Computer Board)" + build_path = /obj/machinery/computer/sat_control + origin_tech = "engineering=3" \ No newline at end of file diff --git a/code/game/objects/items/weapons/circuitboards/machine_circuitboards.dm b/code/game/objects/items/weapons/circuitboards/machine_circuitboards.dm new file mode 100644 index 0000000000..adaf7623b9 --- /dev/null +++ b/code/game/objects/items/weapons/circuitboards/machine_circuitboards.dm @@ -0,0 +1,723 @@ +/obj/item/weapon/circuitboard/machine/sleeper + name = "Sleeper (Machine Board)" + build_path = /obj/machinery/sleeper + origin_tech = "programming=3;biotech=2;engineering=3" + 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/stack/sheet/glass = 1) + +/obj/item/weapon/circuitboard/machine/announcement_system + name = "Announcement System (Machine Board)" + build_path = /obj/machinery/announcement_system + origin_tech = "programming=3;bluespace=3;magnets=2" + req_components = list( + /obj/item/stack/cable_coil = 2, + /obj/item/weapon/stock_parts/console_screen = 1) + +/obj/item/weapon/circuitboard/machine/autolathe + name = "Autolathe (Machine Board)" + build_path = /obj/machinery/autolathe + origin_tech = "engineering=2;programming=2" + 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/machine/clonepod + name = "Clone Pod (Machine Board)" + build_path = /obj/machinery/clonepod + origin_tech = "programming=2;biotech=2" + 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/stack/sheet/glass = 1) + +/obj/item/weapon/circuitboard/machine/abductor + name = "alien board (Report This)" + icon_state = "abductor_mod" + origin_tech = "programming=5;abductor=3" + +/obj/item/weapon/circuitboard/machine/clockwork + name = "clockwork board (Report This)" + icon_state = "clock_mod" + +/obj/item/weapon/circuitboard/machine/clonescanner + name = "Cloning Scanner (Machine Board)" + build_path = /obj/machinery/dna_scannernew + origin_tech = "programming=2;biotech=2" + 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/stack/sheet/glass = 1, + /obj/item/stack/cable_coil = 2) + +/obj/item/weapon/circuitboard/machine/holopad + name = "AI Holopad (Machine Board)" + build_path = /obj/machinery/holopad + origin_tech = "programming=1" + req_components = list(/obj/item/weapon/stock_parts/capacitor = 1) + +/obj/item/weapon/circuitboard/machine/launchpad + name = "Bluespace Launchpad (Machine Board)" + build_path = /obj/machinery/launchpad + origin_tech = "programming=3;engineering=3;plasmatech=2;bluespace=3" + req_components = list( + /obj/item/weapon/ore/bluespace_crystal = 1, + /obj/item/weapon/stock_parts/manipulator = 1) + def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial) + +/obj/item/weapon/circuitboard/machine/limbgrower + name = "Limb Grower (Machine Board)" + build_path = /obj/machinery/limbgrower + origin_tech = "programming=2;biotech=2" + req_components = list( + /obj/item/weapon/stock_parts/manipulator = 1, + /obj/item/weapon/reagent_containers/glass/beaker = 2, + /obj/item/weapon/stock_parts/console_screen = 1) + +/obj/item/weapon/circuitboard/machine/quantumpad + name = "Quantum Pad (Machine Board)" + build_path = /obj/machinery/quantumpad + origin_tech = "programming=3;engineering=3;plasmatech=3;bluespace=4" + req_components = list( + /obj/item/weapon/ore/bluespace_crystal = 1, + /obj/item/weapon/stock_parts/capacitor = 1, + /obj/item/weapon/stock_parts/manipulator = 1, + /obj/item/stack/cable_coil = 1) + def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial) + +/obj/item/weapon/circuitboard/machine/recharger + name = "Weapon Recharger (Machine Board)" + build_path = /obj/machinery/recharger + origin_tech = "powerstorage=4;engineering=3;materials=4" + req_components = list(/obj/item/weapon/stock_parts/capacitor = 1) + +/obj/item/weapon/circuitboard/machine/cyborgrecharger + name = "Cyborg Recharger (Machine Board)" + build_path = /obj/machinery/recharge_station + origin_tech = "powerstorage=3;engineering=3" + req_components = list( + /obj/item/weapon/stock_parts/capacitor = 2, + /obj/item/weapon/stock_parts/cell = 1, + /obj/item/weapon/stock_parts/manipulator = 1) + def_components = list(/obj/item/weapon/stock_parts/cell = /obj/item/weapon/stock_parts/cell/high) + +/obj/item/weapon/circuitboard/machine/recycler + name = "Recycler (Machine Board)" + build_path = /obj/machinery/recycler + origin_tech = "programming=2;engineering=2" + req_components = list( + /obj/item/weapon/stock_parts/matter_bin = 1, + /obj/item/weapon/stock_parts/manipulator = 1) + +/obj/item/weapon/circuitboard/machine/space_heater + name = "Space Heater (Machine Board)" + build_path = /obj/machinery/space_heater + origin_tech = "programming=2;engineering=2;plasmatech=2" + req_components = list( + /obj/item/weapon/stock_parts/micro_laser = 1, + /obj/item/weapon/stock_parts/capacitor = 1, + /obj/item/stack/cable_coil = 3) + +/obj/item/weapon/circuitboard/machine/telecomms/broadcaster + name = "Subspace Broadcaster (Machine Board)" + build_path = /obj/machinery/telecomms/broadcaster + origin_tech = "programming=2;engineering=2;bluespace=1" + 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 = 2) + +/obj/item/weapon/circuitboard/machine/telecomms/bus + name = "Bus Mainframe (Machine Board)" + build_path = /obj/machinery/telecomms/bus + origin_tech = "programming=2;engineering=2" + 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/machine/telecomms/hub + name = "Hub Mainframe (Machine Board)" + build_path = /obj/machinery/telecomms/hub + origin_tech = "programming=2;engineering=2" + 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/machine/telecomms/processor + name = "Processor Unit (Machine Board)" + build_path = /obj/machinery/telecomms/processor + origin_tech = "programming=2;engineering=2" + 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/machine/telecomms/receiver + name = "Subspace Receiver (Machine Board)" + build_path = /obj/machinery/telecomms/receiver + origin_tech = "programming=2;engineering=2;bluespace=1" + 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/machine/telecomms/relay + name = "Relay Mainframe (Machine Board)" + build_path = /obj/machinery/telecomms/relay + origin_tech = "programming=2;engineering=2;bluespace=2" + 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/machine/telecomms/server + name = "Telecommunication Server (Machine Board)" + build_path = /obj/machinery/telecomms/server + origin_tech = "programming=2;engineering=2" + 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/machine/teleporter_hub + name = "Teleporter Hub (Machine Board)" + build_path = /obj/machinery/teleport/hub + origin_tech = "programming=3;engineering=4;bluespace=4;materials=4" + req_components = list( + /obj/item/weapon/ore/bluespace_crystal = 3, + /obj/item/weapon/stock_parts/matter_bin = 1) + def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial) + +/obj/item/weapon/circuitboard/machine/teleporter_station + name = "Teleporter Station (Machine Board)" + build_path = /obj/machinery/teleport/station + origin_tech = "programming=4;engineering=4;bluespace=4;plasmatech=3" + 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) + def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial) + +/obj/item/weapon/circuitboard/machine/vendor + name = "Booze-O-Mat Vendor (Machine Board)" + build_path = /obj/machinery/vending/boozeomat + origin_tech = "programming=1" + req_components = list( + /obj/item/weapon/vending_refill/boozeomat = 3) + + var/static/list/vending_names_paths = list(/obj/machinery/vending/boozeomat = "Booze-O-Mat", + /obj/machinery/vending/coffee = "Solar's Best Hot Drinks", + /obj/machinery/vending/snack = "Getmore Chocolate Corp", + /obj/machinery/vending/cola = "Robust Softdrinks", + /obj/machinery/vending/cigarette = "ShadyCigs Deluxe", + /obj/machinery/vending/autodrobe = "AutoDrobe", + /obj/machinery/vending/clothing = "ClothesMate", + /obj/machinery/vending/medical = "NanoMed Plus", + /obj/machinery/vending/wallmed = "NanoMed") + +/obj/item/weapon/circuitboard/machine/vendor/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/screwdriver)) + var/position = vending_names_paths.Find(build_path) + position = (position == vending_names_paths.len) ? 1 : (position + 1) + var/typepath = vending_names_paths[position] + + to_chat(user, "You set the board to \"[vending_names_paths[typepath]]\".") + set_type(typepath) + else + return ..() + +/obj/item/weapon/circuitboard/machine/vendor/proc/set_type(obj/machinery/vending/typepath) + build_path = typepath + name = "[vending_names_paths[build_path]] Vendor (Machine Board)" + req_components = list(initial(typepath.refill_canister) = initial(typepath.refill_count)) + +/obj/item/weapon/circuitboard/machine/vendor/apply_default_parts(obj/machinery/M) + for(var/typepath in vending_names_paths) + if(istype(M, typepath)) + set_type(typepath) + break + return ..() + +/obj/item/weapon/circuitboard/machine/mech_recharger + name = "Mechbay Recharger (Machine Board)" + build_path = /obj/machinery/mech_bay_recharge_port + origin_tech = "programming=3;powerstorage=3;engineering=3" + req_components = list( + /obj/item/stack/cable_coil = 2, + /obj/item/weapon/stock_parts/capacitor = 5) + +/obj/item/weapon/circuitboard/machine/mechfab + name = "Exosuit Fabricator (Machine Board)" + build_path = /obj/machinery/mecha_part_fabricator + origin_tech = "programming=2;engineering=2" + 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/machine/cryo_tube + name = "Cryotube (Machine Board)" + build_path = /obj/machinery/atmospherics/components/unary/cryo_cell + origin_tech = "programming=4;biotech=3;engineering=4;plasmatech=3" + req_components = list( + /obj/item/weapon/stock_parts/matter_bin = 1, + /obj/item/stack/cable_coil = 1, + /obj/item/weapon/stock_parts/console_screen = 1, + /obj/item/stack/sheet/glass = 2) + +/obj/item/weapon/circuitboard/machine/thermomachine + name = "Thermomachine (Machine Board)" + desc = "You can use a screwdriver to switch between heater and freezer." + origin_tech = "programming=3;plasmatech=3" + 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/machine/thermomachine/Initialize() + . = ..() + if(prob(50)) + name = "Freezer (Machine Board)" + build_path = /obj/machinery/atmospherics/components/unary/thermomachine/freezer + else + name = "Heater (Machine Board)" + build_path = /obj/machinery/atmospherics/components/unary/thermomachine/heater + +#define FREEZER /obj/item/weapon/circuitboard/machine/thermomachine/freezer +#define HEATER /obj/item/weapon/circuitboard/machine/thermomachine/heater + +/obj/item/weapon/circuitboard/machine/thermomachine/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/screwdriver)) + var/obj/item/weapon/circuitboard/new_type + var/new_setting + switch(build_path) + if(FREEZER) + new_type = HEATER + new_setting = "Heater" + if(HEATER) + new_type = FREEZER + new_setting = "Freezer" + name = initial(new_type.name) + build_path = initial(new_type.build_path) + playsound(user, I.usesound, 50, 1) + to_chat(user, "You change the circuitboard setting to \"[new_setting]\".") + else + return ..() + +#undef FREEZER +#undef HEATER + +/obj/item/weapon/circuitboard/machine/thermomachine/heater + name = "Heater (Machine Board)" + build_path = /obj/machinery/atmospherics/components/unary/thermomachine/heater + +/obj/item/weapon/circuitboard/machine/thermomachine/freezer + name = "Freezer (Machine Board)" + build_path = /obj/machinery/atmospherics/components/unary/thermomachine/freezer + +/obj/item/weapon/circuitboard/machine/deep_fryer + name = "circuit board (Deep Fryer)" + build_path = /obj/machinery/deepfryer + origin_tech = "programming=1" + req_components = list(/obj/item/weapon/stock_parts/micro_laser = 1) + +/obj/item/weapon/circuitboard/machine/gibber + name = "Gibber (Machine Board)" + build_path = /obj/machinery/gibber + origin_tech = "programming=2;engineering=2" + req_components = list( + /obj/item/weapon/stock_parts/matter_bin = 1, + /obj/item/weapon/stock_parts/manipulator = 1) + +/obj/item/weapon/circuitboard/machine/monkey_recycler + name = "Monkey Recycler (Machine Board)" + build_path = /obj/machinery/monkey_recycler + origin_tech = "programming=1;biotech=2" + req_components = list( + /obj/item/weapon/stock_parts/matter_bin = 1, + /obj/item/weapon/stock_parts/manipulator = 1) + +/obj/item/weapon/circuitboard/machine/processor + name = "Food Processor (Machine Board)" + build_path = /obj/machinery/processor + 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/machine/processor/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/screwdriver)) + if(build_path == /obj/machinery/processor) + name = "Slime Processor (Machine Board)" + build_path = /obj/machinery/processor/slime + to_chat(user, "Name protocols successfully updated.") + else + name = "Food Processor (Machine Board)" + build_path = /obj/machinery/processor + to_chat(user, "Defaulting name protocols.") + else + return ..() + +/obj/item/weapon/circuitboard/machine/processor/slime + name = "Slime Processor (Machine Board)" + build_path = /obj/machinery/processor/slime + +/obj/item/weapon/circuitboard/machine/smartfridge + name = "Smartfridge (Machine Board)" + build_path = /obj/machinery/smartfridge + origin_tech = "programming=1" + req_components = list(/obj/item/weapon/stock_parts/matter_bin = 1) + var/static/list/fridges_name_paths = list(/obj/machinery/smartfridge = "plant produce", + /obj/machinery/smartfridge/food = "food", + /obj/machinery/smartfridge/drinks = "drinks", + /obj/machinery/smartfridge/extract = "slimes", + /obj/machinery/smartfridge/chemistry = "chems", + /obj/machinery/smartfridge/chemistry/virology = "viruses", + /obj/machinery/smartfridge/disks = "disks") + +/obj/item/weapon/circuitboard/machine/smartfridge/Initialize(mapload, new_type) + if(new_type) + build_path = new_type + return ..() + +/obj/item/weapon/circuitboard/machine/smartfridge/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/screwdriver)) + var/position = fridges_name_paths.Find(build_path, fridges_name_paths) + position = (position == fridges_name_paths.len) ? 1 : (position + 1) + build_path = fridges_name_paths[position] + to_chat(user, "You set the board to [fridges_name_paths[build_path]].") + else + return ..() + +/obj/item/weapon/circuitboard/machine/smartfridge/examine(mob/user) + ..() + to_chat(user, "[src] is set to [fridges_name_paths[build_path]]. You can use a screwdriver to reconfigure it.") + +/obj/item/weapon/circuitboard/machine/biogenerator + name = "Biogenerator (Machine Board)" + build_path = /obj/machinery/biogenerator + origin_tech = "programming=2;biotech=3;materials=3" + 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/machine/plantgenes + name = "Plant DNA Manipulator (Machine Board)" + build_path = /obj/machinery/plantgenes + origin_tech = "programming=3;biotech=3" + req_components = list( + /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/stock_parts/scanning_module = 1) + +/obj/item/weapon/circuitboard/machine/plantgenes/vault + name = "alien board (Plant DNA Manipulator)" + icon_state = "abductor_mod" + origin_tech = "programming=5;biotech=5" + // It wasn't made by actual abductors race, so no abductor tech here. + def_components = list( + /obj/item/weapon/stock_parts/manipulator = /obj/item/weapon/stock_parts/manipulator/femto, + /obj/item/weapon/stock_parts/micro_laser = /obj/item/weapon/stock_parts/micro_laser/quadultra, + /obj/item/weapon/stock_parts/scanning_module = /obj/item/weapon/stock_parts/scanning_module/triphasic) + + +/obj/item/weapon/circuitboard/machine/hydroponics + name = "Hydroponics Tray (Machine Board)" + build_path = /obj/machinery/hydroponics/constructable + origin_tech = "programming=1;biotech=2" + req_components = list( + /obj/item/weapon/stock_parts/matter_bin = 2, + /obj/item/weapon/stock_parts/manipulator = 1, + /obj/item/weapon/stock_parts/console_screen = 1) + +/obj/item/weapon/circuitboard/machine/seed_extractor + name = "Seed Extractor (Machine Board)" + build_path = /obj/machinery/seed_extractor + 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/machine/ore_redemption + name = "Ore Redemption (Machine Board)" + build_path = /obj/machinery/mineral/ore_redemption + 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/machine/mining_equipment_vendor + name = "Mining Equipment Vendor (Machine Board)" + build_path = /obj/machinery/mineral/equipment_vendor + origin_tech = "programming=1;engineering=3" + req_components = list( + /obj/item/weapon/stock_parts/console_screen = 1, + /obj/item/weapon/stock_parts/matter_bin = 3) + +/obj/item/weapon/circuitboard/machine/mining_equipment_vendor/golem + name = "Golem Ship Equipment Vendor (Machine Board)" + build_path = /obj/machinery/mineral/equipment_vendor/golem + +/obj/item/weapon/circuitboard/machine/ntnet_relay + name = "NTNet Relay (Machine Board)" + build_path = /obj/machinery/ntnet_relay + origin_tech = "programming=3;bluespace=3;magnets=2" + req_components = list( + /obj/item/stack/cable_coil = 2, + /obj/item/weapon/stock_parts/subspace/filter = 1) + +/obj/item/weapon/circuitboard/machine/pacman + name = "PACMAN-type Generator (Machine Board)" + build_path = /obj/machinery/power/port_gen/pacman + origin_tech = "programming=2;powerstorage=3;plasmatech=3;engineering=3" + 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/machine/pacman/super + name = "SUPERPACMAN-type Generator (Machine Board)" + build_path = /obj/machinery/power/port_gen/pacman/super + origin_tech = "programming=3;powerstorage=4;engineering=4" + +/obj/item/weapon/circuitboard/machine/pacman/mrs + name = "MRSPACMAN-type Generator (Machine Board)" + build_path = /obj/machinery/power/port_gen/pacman/mrs + origin_tech = "programming=3;powerstorage=4;engineering=4;plasmatech=4" + +/obj/item/weapon/circuitboard/machine/rtg + name = "RTG (Machine Board)" + build_path = /obj/machinery/power/rtg + origin_tech = "programming=2;materials=4;powerstorage=3;engineering=2" + req_components = list( + /obj/item/stack/cable_coil = 5, + /obj/item/weapon/stock_parts/capacitor = 1, + /obj/item/stack/sheet/mineral/uranium = 10) // We have no Pu-238, and this is the closest thing to it. + +/obj/item/weapon/circuitboard/machine/rtg/advanced + name = "Advanced RTG (Machine Board)" + build_path = /obj/machinery/power/rtg/advanced + origin_tech = "programming=3;materials=5;powerstorage=4;engineering=3;plasmatech=3" + req_components = list( + /obj/item/stack/cable_coil = 5, + /obj/item/weapon/stock_parts/capacitor = 1, + /obj/item/weapon/stock_parts/micro_laser = 1, + /obj/item/stack/sheet/mineral/uranium = 10, + /obj/item/stack/sheet/mineral/plasma = 5) + +/obj/item/weapon/circuitboard/machine/abductor/core + name = "alien board (Void Core)" + build_path = /obj/machinery/power/rtg/abductor + origin_tech = "programming=5;abductor=5;powerstorage=8;engineering=8" + req_components = list( + /obj/item/weapon/stock_parts/capacitor = 1, + /obj/item/weapon/stock_parts/micro_laser = 1, + /obj/item/weapon/stock_parts/cell/infinite/abductor = 1) + def_components = list( + /obj/item/weapon/stock_parts/capacitor = /obj/item/weapon/stock_parts/capacitor/quadratic, + /obj/item/weapon/stock_parts/micro_laser = /obj/item/weapon/stock_parts/micro_laser/quadultra) + +/obj/item/weapon/circuitboard/machine/emitter + name = "Emitter (Machine Board)" + build_path = /obj/machinery/power/emitter + origin_tech = "programming=3;powerstorage=4;engineering=4" + req_components = list( + /obj/item/weapon/stock_parts/micro_laser = 1, + /obj/item/weapon/stock_parts/manipulator = 1) + +/obj/item/weapon/circuitboard/machine/smes + name = "SMES (Machine Board)" + build_path = /obj/machinery/power/smes + origin_tech = "programming=3;powerstorage=3;engineering=3" + req_components = list( + /obj/item/stack/cable_coil = 5, + /obj/item/weapon/stock_parts/cell = 5, + /obj/item/weapon/stock_parts/capacitor = 1) + def_components = list(/obj/item/weapon/stock_parts/cell = /obj/item/weapon/stock_parts/cell/high/empty) + +/obj/item/weapon/circuitboard/machine/tesla_coil + name = "Tesla Coil (Machine Board)" + build_path = /obj/machinery/power/tesla_coil + origin_tech = "programming=3;magnets=3;powerstorage=3" + req_components = list(/obj/item/weapon/stock_parts/capacitor = 1) + +/obj/item/weapon/circuitboard/machine/grounding_rod + name = "Grounding Rod (Machine Board)" + build_path = /obj/machinery/power/grounding_rod + origin_tech = "programming=3;powerstorage=3;magnets=3;plasmatech=2" + req_components = list(/obj/item/weapon/stock_parts/capacitor = 1) + +/obj/item/weapon/circuitboard/machine/power_compressor + name = "Power Compressor (Machine Board)" + build_path = /obj/machinery/power/compressor + origin_tech = "programming=4;powerstorage=4;engineering=4" + req_components = list( + /obj/item/stack/cable_coil = 5, + /obj/item/weapon/stock_parts/manipulator = 6) + +/obj/item/weapon/circuitboard/machine/power_turbine + name = "Power Turbine (Machine Board)" + build_path = /obj/machinery/power/turbine + origin_tech = "programming=4;powerstorage=4;engineering=4" + req_components = list( + /obj/item/stack/cable_coil = 5, + /obj/item/weapon/stock_parts/capacitor = 6) + +/obj/item/weapon/circuitboard/machine/chem_dispenser + name = "Portable Chem Dispenser (Machine Board)" + build_path = /obj/machinery/chem_dispenser/constructable + origin_tech = "materials=4;programming=4;plasmatech=4;biotech=3" + 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) + def_components = list(/obj/item/weapon/stock_parts/cell = /obj/item/weapon/stock_parts/cell/high) + +/obj/item/weapon/circuitboard/machine/chem_heater + name = "Chemical Heater (Machine Board)" + build_path = /obj/machinery/chem_heater + origin_tech = "programming=2;engineering=2;biotech=2" + req_components = list( + /obj/item/weapon/stock_parts/micro_laser = 1, + /obj/item/weapon/stock_parts/console_screen = 1) + +/obj/item/weapon/circuitboard/machine/chem_master + name = "ChemMaster 3000 (Machine Board)" + build_path = /obj/machinery/chem_master + origin_tech = "materials=3;programming=2;biotech=3" + 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/machine/chem_master/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/screwdriver)) + var/new_name = "ChemMaster" + var/new_path = /obj/machinery/chem_master + + if(build_path == /obj/machinery/chem_master) + new_name = "CondiMaster" + new_path = /obj/machinery/chem_master/condimaster + + build_path = new_path + name = "[new_name] 3000 (Machine Board)" + to_chat(user, "You change the circuit board setting to \"[new_name]\".") + else + return ..() + +/obj/item/weapon/circuitboard/machine/chem_master/condi + name = "CondiMaster 3000 (Machine Board)" + build_path = /obj/machinery/chem_master/condimaster + +/obj/item/weapon/circuitboard/machine/circuit_imprinter + name = "Circuit Imprinter (Machine Board)" + build_path = /obj/machinery/r_n_d/circuit_imprinter + origin_tech = "engineering=2;programming=2" + 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/machine/destructive_analyzer + name = "Destructive Analyzer (Machine Board)" + build_path = /obj/machinery/r_n_d/destructive_analyzer + origin_tech = "magnets=2;engineering=2;programming=2" + 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/machine/experimentor + name = "E.X.P.E.R.I-MENTOR (Machine Board)" + build_path = /obj/machinery/r_n_d/experimentor + 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/machine/protolathe + name = "Protolathe (Machine Board)" + build_path = /obj/machinery/r_n_d/protolathe + origin_tech = "engineering=2;programming=2" + 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/machine/rdserver + name = "R&D Server (Machine Board)" + build_path = /obj/machinery/r_n_d/server + origin_tech = "programming=3" + req_components = list( + /obj/item/stack/cable_coil = 2, + /obj/item/weapon/stock_parts/scanning_module = 1) + +/obj/item/weapon/circuitboard/machine/bsa/back + name = "Bluespace Artillery Generator (Machine Board)" + build_path = /obj/machinery/bsa/back + origin_tech = "engineering=2;combat=2;bluespace=2" //No freebies! + req_components = list( + /obj/item/weapon/stock_parts/capacitor/quadratic = 5, + /obj/item/stack/cable_coil = 2) + +/obj/item/weapon/circuitboard/machine/bsa/middle + name = "Bluespace Artillery Fusor (Machine Board)" + build_path = /obj/machinery/bsa/middle + origin_tech = "engineering=2;combat=2;bluespace=2" + req_components = list( + /obj/item/weapon/ore/bluespace_crystal = 20, + /obj/item/stack/cable_coil = 2) + +/obj/item/weapon/circuitboard/machine/bsa/front + name = "Bluespace Artillery Bore (Machine Board)" + build_path = /obj/machinery/bsa/front + origin_tech = "engineering=2;combat=2;bluespace=2" + req_components = list( + /obj/item/weapon/stock_parts/manipulator/femto = 5, + /obj/item/stack/cable_coil = 2) + +/obj/item/weapon/circuitboard/machine/dna_vault + name = "DNA Vault (Machine Board)" + build_path = /obj/machinery/dna_vault + origin_tech = "engineering=2;combat=2;bluespace=2" //No freebies! + req_components = list( + /obj/item/weapon/stock_parts/capacitor/super = 5, + /obj/item/weapon/stock_parts/manipulator/pico = 5, + /obj/item/stack/cable_coil = 2) + +/obj/item/weapon/circuitboard/machine/microwave + name = "Microwave (Machine Board)" + build_path = /obj/machinery/microwave + origin_tech = "programming=2;magnets=2" + req_components = list( + /obj/item/weapon/stock_parts/micro_laser = 1, + /obj/item/weapon/stock_parts/matter_bin = 1, + /obj/item/stack/cable_coil = 2, + /obj/item/weapon/stock_parts/console_screen = 1, + /obj/item/stack/sheet/glass = 1) \ No newline at end of file diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index 487b70f8f2..ccfbae5e96 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -20,15 +20,13 @@ var/special = FALSE var/special_name = "special function" -/obj/machinery/implantchair/New() - ..() +/obj/machinery/implantchair/Initialize() + . = ..() open_machine() update_icon() -/obj/machinery/implantchair/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ - datum/tgui/master_ui = null, datum/ui_state/state = GLOB.notcontained_state) - +/obj/machinery/implantchair/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.notcontained_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "implantchair", name, 375, 280, master_ui, state) diff --git a/code/modules/VR/vr_sleeper.dm b/code/modules/VR/vr_sleeper.dm index a095840b09..a83ced850e 100644 --- a/code/modules/VR/vr_sleeper.dm +++ b/code/modules/VR/vr_sleeper.dm @@ -52,8 +52,7 @@ /obj/machinery/vr_sleeper/Destroy() open_machine() cleanup_vr_human() - qdel(sparks) - sparks = null + QDEL_NULL(sparks) return ..() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index b55ed7e84f..9cc914057d 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -9,9 +9,10 @@ max_integrity = 350 armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 30, acid = 30) layer = ABOVE_WINDOW_LAYER + state_open = FALSE + circuit = /obj/item/weapon/circuitboard/machine/cryo_tube var/on = FALSE - state_open = FALSE var/autoeject = FALSE var/volume = 100 @@ -35,8 +36,6 @@ /obj/machinery/atmospherics/components/unary/cryo_cell/Initialize() . = ..() initialize_directions = dir - var/obj/item/weapon/circuitboard/machine/cryo_tube/B = new - B.apply_default_parts(src) radio = new(src) radio.keyslot = new radio_key @@ -44,16 +43,6 @@ radio.canhear_range = 0 radio.recalculateChannels() -/obj/item/weapon/circuitboard/machine/cryo_tube - name = "Cryotube (Machine Board)" - build_path = /obj/machinery/atmospherics/components/unary/cryo_cell - origin_tech = "programming=4;biotech=3;engineering=4;plasmatech=3" - req_components = list( - /obj/item/weapon/stock_parts/matter_bin = 1, - /obj/item/stack/cable_coil = 1, - /obj/item/weapon/stock_parts/console_screen = 1, - /obj/item/stack/sheet/glass = 2) - /obj/machinery/atmospherics/components/unary/cryo_cell/on_construction() ..(dir, dir) @@ -69,11 +58,8 @@ conduction_coefficient = initial(conduction_coefficient) * C /obj/machinery/atmospherics/components/unary/cryo_cell/Destroy() - qdel(radio) - radio = null - if(beaker) - qdel(beaker) - beaker = null + QDEL_NULL(radio) + QDEL_NULL(beaker) return ..() /obj/machinery/atmospherics/components/unary/cryo_cell/contents_explosion(severity, target) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index 32789011ae..9a981ae81b 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -10,6 +10,7 @@ max_integrity = 300 armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 80, acid = 30) layer = OBJ_LAYER + circuit = /obj/item/weapon/circuitboard/machine/thermomachine var/on = FALSE var/min_temperature = 0 @@ -18,49 +19,9 @@ var/heat_capacity = 0 var/interactive = TRUE // So mapmakers can disable interaction. -/obj/machinery/atmospherics/components/unary/thermomachine/New() - ..() - initialize_directions = dir - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/thermomachine(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/thermomachine - name = "Thermomachine (Machine Board)" - desc = "You can use a screwdriver to switch between heater and freezer." - origin_tech = "programming=3;plasmatech=3" - 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/machine/thermomachine/Initialize() +/obj/machinery/atmospherics/components/unary/thermomachine/Initialize() . = ..() - if(prob(50)) - name = "Freezer (Machine Board)" - build_path = /obj/machinery/atmospherics/components/unary/thermomachine/freezer - else - name = "Heater (Machine Board)" - build_path = /obj/machinery/atmospherics/components/unary/thermomachine/heater - -/obj/item/weapon/circuitboard/machine/thermomachine/attackby(obj/item/I, mob/user, params) - var/obj/item/weapon/circuitboard/machine/freezer = /obj/item/weapon/circuitboard/machine/thermomachine/freezer - var/obj/item/weapon/circuitboard/machine/heater = /obj/item/weapon/circuitboard/machine/thermomachine/heater - var/obj/item/weapon/circuitboard/machine/newtype - - if(istype(I, /obj/item/weapon/screwdriver)) - var/new_setting = "Heater" - playsound(src.loc, I.usesound, 50, 1) - if(build_path == initial(heater.build_path)) - newtype = freezer - new_setting = "Freezer" - else - newtype = heater - name = initial(newtype.name) - build_path = initial(newtype.build_path) - to_chat(user, "You change the circuitboard setting to \"[new_setting]\".") - else - return ..() + initialize_directions = dir /obj/machinery/atmospherics/components/unary/thermomachine/on_construction() ..(dir,dir) @@ -202,15 +163,7 @@ icon_state_open = "freezer-o" max_temperature = T20C min_temperature = 170 - -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/thermomachine/freezer(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/thermomachine/freezer - name = "Freezer (Machine Board)" - build_path = /obj/machinery/atmospherics/components/unary/thermomachine/freezer + circuit = /obj/item/weapon/circuitboard/machine/thermomachine/freezer /obj/machinery/atmospherics/components/unary/thermomachine/freezer/RefreshParts() ..() @@ -227,15 +180,7 @@ icon_state_open = "heater-o" max_temperature = 140 min_temperature = T20C - -/obj/machinery/atmospherics/components/unary/thermomachine/heater/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/thermomachine/heater(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/thermomachine/heater - name = "Heater (Machine Board)" - build_path = /obj/machinery/atmospherics/components/unary/thermomachine/heater + circuit = /obj/item/weapon/circuitboard/machine/thermomachine/heater /obj/machinery/atmospherics/components/unary/thermomachine/heater/RefreshParts() ..() diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm index 26c27c7be4..cca108757a 100644 --- a/code/modules/atmospherics/machinery/portable/pump.dm +++ b/code/modules/atmospherics/machinery/portable/pump.dm @@ -16,7 +16,7 @@ volume = 1000 /obj/machinery/portable_atmospherics/pump/Initialize() - ..() + . = ..() pump = new(src, FALSE) pump.on = TRUE pump.stat = 0 @@ -26,8 +26,7 @@ var/turf/T = get_turf(src) T.assume_air(air_contents) air_update_turf() - qdel(pump) - pump = null + QDEL_NULL(pump) return ..() /obj/machinery/portable_atmospherics/pump/update_icon() diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index 22d92b54be..6d634ab3a4 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -29,13 +29,11 @@ var/reset_path = /obj/effect/ctf/flag_reset /obj/item/weapon/twohanded/ctf/Destroy() - if(reset) - qdel(reset) - reset = null - . = ..() + QDEL_NULL(reset) + return ..() /obj/item/weapon/twohanded/ctf/Initialize() - ..() + . = ..() SET_SECONDARY_FLAG(src, SLOWS_WHILE_IN_HAND) if(!reset) reset = new reset_path(get_turf(src)) diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index e533d625cc..9983219e2e 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -22,7 +22,7 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation) switch(dir) if(SOUTH,SOUTHEAST,SOUTHWEST) density = FALSE - ..() + return ..() /obj/machinery/gateway/proc/toggleoff() for(var/obj/machinery/gateway/G in linked) @@ -75,10 +75,13 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation) /obj/machinery/gateway/proc/toggleon(mob/user) return FALSE -/obj/machinery/gateway/centerstation/New() - ..() +/obj/machinery/gateway/centerstation/Initialize() + . = ..() if(!GLOB.the_gateway) GLOB.the_gateway = src + update_icon() + wait = world.time + config.gateway_delay //+ thirty minutes default + awaygate = locate(/obj/machinery/gateway/centeraway) /obj/machinery/gateway/centerstation/Destroy() if(GLOB.the_gateway == src) @@ -96,12 +99,6 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation) var/obj/machinery/gateway/centeraway/awaygate = null can_link = TRUE -/obj/machinery/gateway/centerstation/Initialize() - ..() - update_icon() - wait = world.time + config.gateway_delay //+ thirty minutes default - awaygate = locate(/obj/machinery/gateway/centeraway) - /obj/machinery/gateway/centerstation/update_icon() if(active) icon_state = "oncenter" @@ -182,7 +179,7 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation) /obj/machinery/gateway/centeraway/Initialize() - ..() + . = ..() update_icon() stationgate = locate(/obj/machinery/gateway/centerstation) diff --git a/code/modules/cargo/console.dm b/code/modules/cargo/console.dm index 15117c1cbb..33f822ac2b 100644 --- a/code/modules/cargo/console.dm +++ b/code/modules/cargo/console.dm @@ -18,8 +18,8 @@ circuit = /obj/item/weapon/circuitboard/computer/cargo/request requestonly = TRUE -/obj/machinery/computer/cargo/New() - ..() +/obj/machinery/computer/cargo/Initialize() + . = ..() var/obj/item/weapon/circuitboard/computer/cargo/board = circuit contraband = board.contraband emagged = board.emagged diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 263b5c5d30..c9fe711b00 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1778,9 +1778,7 @@ name = "Shield System Control Board" cost = 5000 special = TRUE - contains = list( - /obj/item/weapon/circuitboard/machine/computer/sat_control - ) + contains = list(/obj/item/weapon/circuitboard/computer/sat_control) crate_name= "shield control board crate" /datum/supply_pack/misc/bicycle diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index e21bda82ed..a7896dd266 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -18,7 +18,7 @@ insert ascii eagle on american flag background here container_type = OPENCONTAINER var/obj/item/frying = null //What's being fried RIGHT NOW? var/cook_time = 0 - var/static/list/blacklisted_items = typecacheof(list( + var/static/list/deepfry_blacklisted_items = typecacheof(list( /obj/item/weapon/screwdriver, /obj/item/weapon/crowbar, /obj/item/weapon/wrench, @@ -28,14 +28,8 @@ insert ascii eagle on american flag background here /obj/item/weapon/reagent_containers/glass, /obj/item/weapon/storage/part_replacer)) -/obj/item/weapon/circuitboard/machine/deep_fryer - name = "circuit board (Deep Fryer)" - build_path = /obj/machinery/deepfryer - origin_tech = "programming=1" - req_components = list(/obj/item/weapon/stock_parts/micro_laser = 1) - -/obj/machinery/deepfryer/New() - ..() +/obj/machinery/deepfryer/Initialize() + . = ..() create_reagents(50) reagents.add_reagent("nutriment", 25) component_parts = list() @@ -62,7 +56,7 @@ insert ascii eagle on american flag background here else if(default_deconstruction_screwdriver(user, "fryer_off", "fryer_off" ,I)) //where's the open maint panel icon?! return else - if(is_type_in_typecache(I, blacklisted_items)) + if(is_type_in_typecache(I, deepfry_blacklisted_items)) . = ..() else if(user.drop_item() && !frying) to_chat(user, "You put [I] into [src].") diff --git a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm index c3f9e0334d..fcef69e0d0 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm @@ -18,17 +18,15 @@ container_type = OPENCONTAINER var/obj/item/weapon/reagent_containers/mixer -/obj/machinery/food_cart/New() - ..() +/obj/machinery/food_cart/Initialize() + . = ..() create_reagents(LIQUID_CAPACIY) reagents.set_reacting(FALSE) mixer = new /obj/item/weapon/reagent_containers(src, MIXER_CAPACITY) mixer.name = "Mixer" /obj/machinery/food_cart/Destroy() - if(mixer) - qdel(mixer) - mixer = null + QDEL_NULL(mixer) return ..() /obj/machinery/food_cart/attack_hand(mob/user) diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index 2d6bc81f0b..c3d4a1802b 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -6,58 +6,21 @@ icon_state = "grinder" density = TRUE anchored = TRUE + use_power = IDLE_POWER_USE + idle_power_usage = 2 + active_power_usage = 500 + circuit = /obj/item/weapon/circuitboard/machine/gibber + var/operating = FALSE //Is it on? var/dirty = 0 // Does it need cleaning? var/gibtime = 40 // Time from starting until meat appears var/meat_produced = 0 var/ignore_clothing = 0 - use_power = IDLE_POWER_USE - idle_power_usage = 2 - active_power_usage = 500 - -//auto-gibs anything that bumps into it -/obj/machinery/gibber/autogibber - var/turf/input_plate - -/obj/machinery/gibber/autogibber/Initialize() - . = ..() - for(var/i in GLOB.cardinals) - var/obj/machinery/mineral/input/input_obj = locate() in get_step(loc, i) - if(input_obj) - if(isturf(input_obj.loc)) - input_plate = input_obj.loc - qdel(input_obj) - break - - if(!input_plate) - CRASH("Didn't find an input plate.") - return - -/obj/machinery/gibber/autogibber/CollidedWith(atom/movable/AM) - if(!input_plate) - return - - if(ismob(AM)) - var/mob/M = AM - - if(M.loc == input_plate) - M.loc = src - M.gib() /obj/machinery/gibber/Initialize() . = ..() add_overlay("grjam") - var/obj/item/weapon/circuitboard/machine/gibber/B = new - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/gibber - name = "Gibber (Machine Board)" - build_path = /obj/machinery/gibber - origin_tech = "programming=2;engineering=2" - req_components = list( - /obj/item/weapon/stock_parts/matter_bin = 1, - /obj/item/weapon/stock_parts/manipulator = 1) /obj/machinery/gibber/RefreshParts() var/gib_time = 40 @@ -234,3 +197,32 @@ pixel_x = initial(pixel_x) //return to its spot after shaking operating = FALSE update_icon() + +//auto-gibs anything that bumps into it +/obj/machinery/gibber/autogibber + var/turf/input_plate + +/obj/machinery/gibber/autogibber/Initialize() + . = ..() + for(var/i in GLOB.cardinals) + var/obj/machinery/mineral/input/input_obj = locate() in get_step(loc, i) + if(input_obj) + if(isturf(input_obj.loc)) + input_plate = input_obj.loc + qdel(input_obj) + break + + if(!input_plate) + CRASH("Didn't find an input plate.") + return + +/obj/machinery/gibber/autogibber/CollidedWith(atom/movable/AM) + if(!input_plate) + return + + if(ismob(AM)) + var/mob/M = AM + + if(M.loc == input_plate) + M.forceMove(src) + M.gib() \ No newline at end of file diff --git a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm index b5c02946e7..aee52412a6 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm @@ -14,11 +14,19 @@ anchored = FALSE use_power = NO_POWER_USE layer = BELOW_OBJ_LAYER + container_type = OPENCONTAINER + max_integrity = 300 var/list/product_types = list() var/dispense_flavour = ICECREAM_VANILLA var/flavour_name = "vanilla" - container_type = OPENCONTAINER - max_integrity = 300 + var/static/list/icecream_vat_reagents = list( + "milk" = 5, + "flour" = 5, + "sugar" = 5, + "ice" = 5, + "cocoa" = 5, + "berryjuice" = 5, + "singulo" = 5) /obj/machinery/icecream_vat/proc/get_ingredient_list(type) switch(type) @@ -52,19 +60,14 @@ return "vanilla" -/obj/machinery/icecream_vat/New() - ..() +/obj/machinery/icecream_vat/Initialize() + . = ..() while(product_types.len < 6) product_types.Add(5) create_reagents() reagents.set_reacting(FALSE) - reagents.add_reagent("milk", 5) - reagents.add_reagent("flour", 5) - reagents.add_reagent("sugar", 5) - reagents.add_reagent("ice", 5) - reagents.add_reagent("cocoa", 5) - reagents.add_reagent("berryjuice", 5) - reagents.add_reagent("singulo", 5) + for(var/reagent in icecream_vat_reagents) + reagents.add_reagent(reagent, icecream_vat_reagents[reagent]) /obj/machinery/icecream_vat/attack_hand(mob/user) user.set_machine(src) diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index d726a106e7..2fb95fd4a6 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -9,6 +9,7 @@ use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 100 + circuit = /obj/item/weapon/circuitboard/machine/microwave var/operating = FALSE // Is it on? var/dirty = 0 // = {0..100} Does it need cleaning? var/broken = 0 // ={0,1,2} How broken is it??? @@ -21,22 +22,9 @@ * Initialising ********************/ -/obj/machinery/microwave/New() +/obj/machinery/microwave/Initialize() + . = ..() create_reagents(100) - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/microwave(null) - B.apply_default_parts(src) - ..() - -/obj/item/weapon/circuitboard/machine/microwave - name = "Microwave (Machine Board)" - build_path = /obj/machinery/microwave - origin_tech = "programming=2;magnets=2" - req_components = list( - /obj/item/weapon/stock_parts/micro_laser = 1, - /obj/item/weapon/stock_parts/matter_bin = 1, - /obj/item/stack/cable_coil = 2, - /obj/item/weapon/stock_parts/console_screen = 1, - /obj/item/stack/sheet/glass = 1) /obj/machinery/microwave/RefreshParts() var/E diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm index 5b695cfd4b..0a86f155a4 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm @@ -9,24 +9,11 @@ use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 50 + circuit = /obj/item/weapon/circuitboard/machine/monkey_recycler var/grinded = 0 var/required_grind = 5 var/cube_production = 1 - -/obj/machinery/monkey_recycler/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/monkey_recycler(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/monkey_recycler - name = "Monkey Recycler (Machine Board)" - build_path = /obj/machinery/monkey_recycler - origin_tech = "programming=1;biotech=2" - req_components = list( - /obj/item/weapon/stock_parts/matter_bin = 1, - /obj/item/weapon/stock_parts/manipulator = 1) - /obj/machinery/monkey_recycler/RefreshParts() var/req_grind = 5 var/cubes_made = 1 diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index 71f8d727fc..018e6cfc79 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -7,44 +7,15 @@ layer = BELOW_OBJ_LAYER density = TRUE anchored = TRUE - var/broken = 0 - var/processing = FALSE use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 50 + circuit = /obj/item/weapon/circuitboard/machine/processor + var/broken = FALSE + var/processing = FALSE var/rating_speed = 1 var/rating_amount = 1 -/obj/machinery/processor/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/processor(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/processor - name = "Food Processor (Machine Board)" - build_path = /obj/machinery/processor - 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/machine/processor - name = "Food Processor (Machine Board)" - build_path = /obj/machinery/processor - -/obj/item/weapon/circuitboard/machine/processor/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/screwdriver)) - if(build_path == /obj/machinery/processor) - name = "Slime Processor (Machine Board)" - build_path = /obj/machinery/processor/slime - to_chat(user, "Name protocols successfully updated.") - else - name = "Food Processor (Machine Board)" - build_path = /obj/machinery/processor - to_chat(user, "Defaulting name protocols.") - else - return ..() - /obj/machinery/processor/RefreshParts() for(var/obj/item/weapon/stock_parts/matter_bin/B in component_parts) rating_amount = B.rating @@ -300,11 +271,7 @@ name = "Slime processor" desc = "An industrial grinder with a sticker saying appropriated for science department. Keep hands clear of intake area while operating." -/obj/machinery/processor/slime/New() - ..() +/obj/machinery/processor/slime/Initialize() + . = ..() var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/processor/slime(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/processor/slime - name = "Slime Processor (Machine Board)" - build_path = /obj/machinery/processor/slime + B.apply_default_parts(src) \ No newline at end of file diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 2cb0631cb2..c1e1aa7b81 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -12,13 +12,14 @@ use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 100 + circuit = /obj/item/weapon/circuitboard/machine/smartfridge var/max_n_of_items = 1500 var/icon_on = "smartfridge" var/icon_off = "smartfridge-off" var/list/initial_contents /obj/machinery/smartfridge/Initialize() - ..() + . = ..() create_reagents() reagents.set_reacting(FALSE) @@ -30,40 +31,6 @@ for(var/i in 1 to amount) load(new typekey(src)) - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/smartfridge(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/smartfridge - name = "Smartfridge (Machine Board)" - build_path = /obj/machinery/smartfridge - origin_tech = "programming=1" - req_components = list(/obj/item/weapon/stock_parts/matter_bin = 1) - var/static/list/fridges = list(/obj/machinery/smartfridge = "plant produce", - /obj/machinery/smartfridge/food = "food", - /obj/machinery/smartfridge/drinks = "drinks", - /obj/machinery/smartfridge/extract = "slimes", - /obj/machinery/smartfridge/chemistry = "chems", - /obj/machinery/smartfridge/chemistry/virology = "viruses", - /obj/machinery/smartfridge/disks = "disks") - -/obj/item/weapon/circuitboard/machine/smartfridge/New(loc, new_type) - if(new_type) - build_path = new_type - ..() - -/obj/item/weapon/circuitboard/machine/smartfridge/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/screwdriver)) - var/position = fridges.Find(build_path, fridges) - position = (position == fridges.len) ? 1 : (position + 1) - build_path = fridges[position] - to_chat(user, "You set the board to [fridges[build_path]].") - else - return ..() - -/obj/item/weapon/circuitboard/machine/smartfridge/examine(mob/user) - ..() - to_chat(user, "[src] is set to [fridges[build_path]]. You can use a screwdriver to reconfigure it.") - /obj/machinery/smartfridge/RefreshParts() for(var/obj/item/weapon/stock_parts/matter_bin/B in component_parts) max_n_of_items = 1500 * B.rating @@ -255,8 +222,8 @@ icon_off = "drying_rack" var/drying = FALSE -/obj/machinery/smartfridge/drying_rack/New() - ..() +/obj/machinery/smartfridge/drying_rack/Initialize() + . = ..() if(component_parts && component_parts.len) component_parts.Cut() component_parts = null diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index a5c05d4607..eec6634d0d 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -7,6 +7,7 @@ anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 40 + circuit = /obj/item/weapon/circuitboard/machine/biogenerator var/processing = FALSE var/obj/item/weapon/reagent_containers/glass/beaker = null var/points = 0 @@ -18,17 +19,13 @@ var/list/show_categories = list("Food", "Botany Chemicals", "Leather and Cloth") var/list/timesFiveCategories = list("Food", "Botany Chemicals") -/obj/machinery/biogenerator/New() - ..() +/obj/machinery/biogenerator/Initialize() + . = ..() files = new /datum/research/biogenerator(src) create_reagents(1000) - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/biogenerator(null) - B.apply_default_parts(src) /obj/machinery/biogenerator/Destroy() - if(beaker) - qdel(beaker) - beaker = null + QDEL_NULL(beaker) return ..() /obj/machinery/biogenerator/contents_explosion(severity, target) @@ -43,16 +40,6 @@ update_icon() updateUsrDialog() -/obj/item/weapon/circuitboard/machine/biogenerator - name = "Biogenerator (Machine Board)" - build_path = /obj/machinery/biogenerator - origin_tech = "programming=2;biotech=3;materials=3" - 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/machinery/biogenerator/RefreshParts() var/E = 0 var/P = 0 diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index eef8b6b27c..6e27e4f922 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -5,6 +5,7 @@ icon_state = "dnamod" density = TRUE anchored = TRUE + circuit = /obj/item/weapon/circuitboard/machine/plantgenes var/obj/item/seeds/seed var/obj/item/weapon/disk/plantgene/disk @@ -22,21 +23,6 @@ var/min_wchance = 67 var/min_wrate = 10 -/obj/machinery/plantgenes/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/plantgenes(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/plantgenes - name = "Plant DNA Manipulator (Machine Board)" - build_path = /obj/machinery/plantgenes - origin_tech = "programming=3;biotech=3" - req_components = list( - /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/stock_parts/scanning_module = 1) - /obj/machinery/plantgenes/RefreshParts() // Comments represent the max you can set per tier, respectively. seeds.dm [219] clamps these for us but we don't want to mislead the viewer. for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) if(M.rating > 3) @@ -421,23 +407,9 @@ seed.name = "experimental " + seed.name seed.icon_state = "seed-x" - - // Gene modder for seed vault ship, built with high tech alien parts. -/obj/machinery/plantgenes/seedvault/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/plantgenes/vault(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/plantgenes/vault - name = "alien board (Plant DNA Manipulator)" - icon_state = "abductor_mod" - origin_tech = "programming=5;biotech=5" - // It wasn't made by actual abductors race, so no abductor tech here. - def_components = list( - /obj/item/weapon/stock_parts/manipulator = /obj/item/weapon/stock_parts/manipulator/femto, - /obj/item/weapon/stock_parts/micro_laser = /obj/item/weapon/stock_parts/micro_laser/quadultra, - /obj/item/weapon/stock_parts/scanning_module = /obj/item/weapon/stock_parts/scanning_module/triphasic) +/obj/machinery/plantgenes/seedvault + circuit = /obj/item/weapon/circuitboard/machine/plantgenes/vault /* * Plant DNA disk diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 499fc4bd64..e05110657f 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -6,6 +6,7 @@ anchored = TRUE pixel_y = 8 unique_rename = 1 + circuit = /obj/item/weapon/circuitboard/machine/hydroponics var/waterlevel = 100 //The amount of water in the tray (max 100) var/maxwater = 100 //The maximum amount of water in the tray var/nutrilevel = 10 //The amount of nutrient in the tray (max 10) @@ -37,20 +38,6 @@ icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "hydrotray3" -/obj/machinery/hydroponics/constructable/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/hydroponics(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/hydroponics - name = "Hydroponics Tray (Machine Board)" - build_path = /obj/machinery/hydroponics/constructable - origin_tech = "programming=1;biotech=2" - req_components = list( - /obj/item/weapon/stock_parts/matter_bin = 2, - /obj/item/weapon/stock_parts/manipulator = 1, - /obj/item/weapon/stock_parts/console_screen = 1) - /obj/machinery/hydroponics/constructable/RefreshParts() var/tmp_capacity = 0 for (var/obj/item/weapon/stock_parts/matter_bin/M in component_parts) diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index 65fa87c658..ce067ed584 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -44,23 +44,11 @@ icon_state = "sextractor" density = TRUE anchored = TRUE + circuit = /obj/item/weapon/circuitboard/machine/seed_extractor var/piles = list() var/max_seeds = 1000 var/seed_multiplier = 1 -/obj/machinery/seed_extractor/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/seed_extractor(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/seed_extractor - name = "Seed Extractor (Machine Board)" - build_path = /obj/machinery/seed_extractor - origin_tech = "programming=1" - req_components = list( - /obj/item/weapon/stock_parts/matter_bin = 1, - /obj/item/weapon/stock_parts/manipulator = 1) - /obj/machinery/seed_extractor/RefreshParts() for(var/obj/item/weapon/stock_parts/matter_bin/B in component_parts) max_seeds = 1000 * B.rating diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index c38c08ca0b..5c94ae750e 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -193,8 +193,8 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums libcomp_menu[page] = "" libcomp_menu[page] += "[C.author][C.title][C.category]\[Order\]\n" -/obj/machinery/computer/libraryconsole/bookmanagement/New() - ..() +/obj/machinery/computer/libraryconsole/bookmanagement/Initialize() + . = ..() if(circuit) circuit.name = "Book Inventory Management Console (Machine Board)" circuit.build_path = /obj/machinery/computer/libraryconsole/bookmanagement diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm index 90248bce2e..308f8743bc 100644 --- a/code/modules/mining/aux_base.dm +++ b/code/modules/mining/aux_base.dm @@ -26,10 +26,9 @@ interface with the mining shuttle at the landing site if a mobile beacon is also var/obj/item/device/gps/internal/base/locator circuit = /obj/item/weapon/circuitboard/computer/auxillary_base -/obj/machinery/computer/auxillary_base/New(location, obj/item/weapon/circuitboard/computer/shuttle/C) - ..() - locator = new /obj/item/device/gps/internal/base(src) - +/obj/machinery/computer/auxillary_base/Initialize() + . = ..() + locator = new(src) /obj/machinery/computer/auxillary_base/attack_hand(mob/user) if(..(user)) diff --git a/code/modules/mining/aux_base_camera.dm b/code/modules/mining/aux_base_camera.dm index 62702fc202..b64c6b9989 100644 --- a/code/modules/mining/aux_base_camera.dm +++ b/code/modules/mining/aux_base_camera.dm @@ -49,9 +49,9 @@ light_color = LIGHT_COLOR_PINK -/obj/machinery/computer/camera_advanced/base_construction/New() - ..() - RCD = new /obj/item/weapon/construction/rcd/internal(src) +/obj/machinery/computer/camera_advanced/base_construction/Initialize() + . = ..() + RCD = new(src) /obj/machinery/computer/camera_advanced/base_construction/Initialize(mapload) ..() diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 96c7cbf6fe..981b97940c 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -199,18 +199,9 @@ max_n_of_items = 10 pixel_y = -4 flags = NODECONSTRUCT + var/empty = FALSE -/obj/machinery/smartfridge/survival_pod/empty - name = "dusty survival pod storage" - desc = "A heated storage unit. This one's seen better days." - -/obj/machinery/smartfridge/survival_pod/empty/Initialize(mapload) - ..(mapload, TRUE) - -/obj/machinery/smartfridge/survival_pod/accept_check(obj/item/O) - return isitem(O) - -/obj/machinery/smartfridge/survival_pod/Initialize(mapload, empty) +/obj/machinery/smartfridge/survival_pod/Initialize(mapload) . = ..() if(empty) return @@ -224,6 +215,14 @@ var/obj/item/device/instrument/guitar/G = new(src) load(G) +/obj/machinery/smartfridge/survival_pod/accept_check(obj/item/O) + return isitem(O) + +/obj/machinery/smartfridge/survival_pod/empty + name = "dusty survival pod storage" + desc = "A heated storage unit. This one's seen better days." + empty = TRUE + //Fans /obj/structure/fans icon = 'icons/obj/lavaland/survival_pod.dmi' diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index e9961d7b3b..4332343a9b 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -15,11 +15,11 @@ var/obj/item/device/radio/Radio //needed to send messages to sec radio -/obj/machinery/mineral/labor_claim_console/New() - ..() +/obj/machinery/mineral/labor_claim_console/Initialize() + . = ..() Radio = new/obj/item/device/radio(src) - Radio.listening = 0 - addtimer(CALLBACK(src, .proc/locate_stacking_machine), 7) + Radio.listening = FALSE + locate_stacking_machine() /obj/machinery/mineral/labor_claim_console/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/card/id/prisoner)) diff --git a/code/modules/mining/machine_input_output_plates.dm b/code/modules/mining/machine_input_output_plates.dm index 79a514bcc2..b6f68d4c89 100644 --- a/code/modules/mining/machine_input_output_plates.dm +++ b/code/modules/mining/machine_input_output_plates.dm @@ -7,7 +7,8 @@ density = FALSE anchored = TRUE -/obj/machinery/mineral/input/New() +/obj/machinery/mineral/input/Initialize() + . = ..() icon_state = "blank" /obj/machinery/mineral/output @@ -17,7 +18,8 @@ density = FALSE anchored = TRUE -/obj/machinery/mineral/output/New() +/obj/machinery/mineral/output/Initialize() + . = ..() icon_state = "blank" /obj/machinery/mineral diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 0232da4e83..e8d24e223f 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -11,6 +11,8 @@ input_dir = NORTH output_dir = SOUTH req_access = list(ACCESS_MINERAL_STOREROOM) + speed_process = 1 + circuit = /obj/item/weapon/circuitboard/machine/ore_redemption var/req_access_reclaim = ACCESS_MINING_STATION var/obj/item/weapon/card/id/inserted_id var/points = 0 @@ -18,7 +20,6 @@ var/sheet_per_ore = 1 var/point_upgrade = 1 var/list/ore_values = list(MAT_GLASS = 1, MAT_METAL = 1, MAT_PLASMA = 15, MAT_SILVER = 16, MAT_GOLD = 18, MAT_TITANIUM = 30, MAT_URANIUM = 30, MAT_DIAMOND = 50, MAT_BLUESPACE = 50, MAT_BANANIUM = 60) - speed_process = 1 var/message_sent = FALSE var/list/ore_buffer = list() var/datum/material_container/materials @@ -27,8 +28,6 @@ /obj/machinery/mineral/ore_redemption/Initialize() . = ..() - var/obj/item/weapon/circuitboard/machine/ore_redemption/B = new - B.apply_default_parts(src) materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE),INFINITY) files = new /datum/research/smelter(src) @@ -37,17 +36,6 @@ QDEL_NULL(files) return ..() -/obj/item/weapon/circuitboard/machine/ore_redemption - name = "Ore Redemption (Machine Board)" - build_path = /obj/machinery/mineral/ore_redemption - 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/machinery/mineral/ore_redemption/RefreshParts() var/ore_pickup_rate_temp = 15 var/point_upgrade_temp = 1 diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 875380aea8..80965d3cfc 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -7,6 +7,7 @@ icon_state = "mining" density = TRUE anchored = TRUE + circuit = /obj/item/weapon/circuitboard/machine/mining_equipment_vendor var/obj/item/weapon/card/id/inserted_id var/list/prize_list = list( //if you add something to this, please, for the love of god, use tabs and not spaces. new /datum/data/mining_equipment("1 Marker Beacon", /obj/item/stack/marker_beacon, 10), @@ -67,19 +68,6 @@ src.equipment_path = path src.cost = cost -/obj/machinery/mineral/equipment_vendor/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/mining_equipment_vendor(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/mining_equipment_vendor - name = "Mining Equipment Vendor (Machine Board)" - build_path = /obj/machinery/mineral/equipment_vendor - origin_tech = "programming=1;engineering=3" - req_components = list( - /obj/item/weapon/stock_parts/console_screen = 1, - /obj/item/weapon/stock_parts/matter_bin = 3) - /obj/machinery/mineral/equipment_vendor/power_change() ..() update_icon() @@ -207,9 +195,10 @@ /obj/machinery/mineral/equipment_vendor/golem name = "golem ship equipment vendor" + circuit = /obj/item/weapon/circuitboard/machine/mining_equipment_vendor/golem -/obj/machinery/mineral/equipment_vendor/golem/New() - ..() +/obj/machinery/mineral/equipment_vendor/golem/Initialize() + . = ..() desc += "\nIt seems a few selections have been added." prize_list += list( new /datum/data/mining_equipment("Extra Id", /obj/item/weapon/card/id/mining, 250), @@ -223,14 +212,6 @@ new /datum/data/mining_equipment("Royal Cape of the Liberator", /obj/item/weapon/bedsheet/rd/royal_cape, 500) ) - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/mining_equipment_vendor/golem(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/mining_equipment_vendor/golem - name = "Golem Ship Equipment Vendor (Machine Board)" - build_path = /obj/machinery/mineral/equipment_vendor/golem - - /**********************Mining Equipment Vendor Items**************************/ /**********************Mining Equipment Voucher**********************/ diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index 9a4eae0a41..0ee136f4a9 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -15,18 +15,16 @@ speed_process = 1 -/obj/machinery/mineral/mint/New() - ..() +/obj/machinery/mineral/mint/Initialize() + . = ..() materials = new /datum/material_container(src, list(MAT_METAL, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_URANIUM, MAT_DIAMOND, MAT_BANANIUM), max_amt = MINERAL_MATERIAL_AMOUNT*50) /obj/machinery/mineral/mint/Destroy() - qdel(materials) - materials = null + QDEL_NULL(materials) return ..() - /obj/machinery/mineral/mint/process() var/turf/T = get_step(src, input_dir) if(!T) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 6cebdd9500..7be59e1322 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -262,14 +262,14 @@ Difficulty: Very Hard return FALSE return TRUE -/obj/machinery/smartfridge/black_box/New() +/obj/machinery/smartfridge/black_box/Initialize() + . = ..() var/static/obj/machinery/smartfridge/black_box/current if(current && current != src) qdel(src, force=TRUE) return current = src ReadMemory() - . = ..() /obj/machinery/smartfridge/black_box/process() ..() diff --git a/code/modules/modular_computers/NTNet/NTNet_relay.dm b/code/modules/modular_computers/NTNet/NTNet_relay.dm index 18b96d033e..3b1d2c03fb 100644 --- a/code/modules/modular_computers/NTNet/NTNet_relay.dm +++ b/code/modules/modular_computers/NTNet/NTNet_relay.dm @@ -9,6 +9,7 @@ icon_state = "bus" anchored = TRUE density = TRUE + circuit = /obj/item/weapon/circuitboard/machine/ntnet_relay var/datum/ntnet/NTNet = null // This is mostly for backwards reference and to allow varedit modifications from ingame. var/enabled = 1 // Set to 0 if the relay was turned off var/dos_failure = 0 // Set to 1 if the relay failed due to (D)DoS attack @@ -95,18 +96,16 @@ /obj/machinery/ntnet_relay/attack_hand(mob/living/user) ui_interact(user) -/obj/machinery/ntnet_relay/New() +/obj/machinery/ntnet_relay/Initialize() uid = gl_uid gl_uid++ component_parts = list() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/ntnet_relay(null) - B.apply_default_parts(src) if(GLOB.ntnet_global) GLOB.ntnet_global.relays.Add(src) NTNet = GLOB.ntnet_global GLOB.ntnet_global.add_log("New quantum relay activated. Current amount of linked relays: [NTNet.relays.len]") - ..() + . = ..() /obj/machinery/ntnet_relay/Destroy() if(GLOB.ntnet_global) @@ -118,12 +117,4 @@ D.target = null D.error = "Connection to quantum relay severed" - return ..() - -/obj/item/weapon/circuitboard/machine/ntnet_relay - name = "NTNet Relay (Machine Board)" - build_path = /obj/machinery/ntnet_relay - origin_tech = "programming=3;bluespace=3;magnets=2" - req_components = list( - /obj/item/stack/cable_coil = 2, - /obj/item/weapon/stock_parts/subspace/filter = 1) + return ..() \ No newline at end of file diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm index 3fcec8b3bf..d12dcc3623 100644 --- a/code/modules/power/antimatter/control.dm +++ b/code/modules/power/antimatter/control.dm @@ -29,8 +29,8 @@ var/stored_power = 0//Power to deploy per tick -/obj/machinery/power/am_control_unit/New() - ..() +/obj/machinery/power/am_control_unit/Initialize() + . = ..() linked_shielding = list() linked_cores = list() @@ -39,8 +39,7 @@ for(var/obj/machinery/am_shielding/AMS in linked_shielding) AMS.control_unit = null qdel(AMS) - qdel(fueljar) - fueljar = null + QDEL_NULL(fueljar) return ..() diff --git a/code/modules/power/monitor.dm b/code/modules/power/monitor.dm index 8437738586..ee613108d6 100644 --- a/code/modules/power/monitor.dm +++ b/code/modules/power/monitor.dm @@ -16,8 +16,8 @@ var/record_interval = 50 var/next_record = 0 -/obj/machinery/computer/monitor/New() - ..() +/obj/machinery/computer/monitor/Initialize() + . = ..() search() history["supply"] = list() history["demand"] = list() diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index c5fcc2b018..0dec9eaf09 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -54,11 +54,11 @@ /obj/machinery/power/port_gen/pacman name = "\improper P.A.C.M.A.N.-type portable generator" + circuit = /obj/item/weapon/circuitboard/machine/pacman var/sheets = 0 var/max_sheets = 100 var/sheet_name = "" var/sheet_path = /obj/item/stack/sheet/mineral/plasma - var/board_path = /obj/item/weapon/circuitboard/machine/pacman var/sheet_left = 0 // How much is left of the sheet var/time_per_sheet = 260 var/current_heat = 0 @@ -68,34 +68,12 @@ if(anchored) connect_to_network() -/obj/machinery/power/port_gen/pacman/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new board_path(null) - B.apply_default_parts(src) +/obj/machinery/power/port_gen/pacman/Initialize() + . = ..() var/obj/sheet = new sheet_path(null) sheet_name = sheet.name -/obj/item/weapon/circuitboard/machine/pacman - name = "PACMAN-type Generator (Machine Board)" - build_path = /obj/machinery/power/port_gen/pacman - origin_tech = "programming=2;powerstorage=3;plasmatech=3;engineering=3" - 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/machine/pacman/super - name = "SUPERPACMAN-type Generator (Machine Board)" - build_path = /obj/machinery/power/port_gen/pacman/super - origin_tech = "programming=3;powerstorage=4;engineering=4" - -/obj/item/weapon/circuitboard/machine/pacman/mrs - name = "MRSPACMAN-type Generator (Machine Board)" - build_path = "/obj/machinery/power/port_gen/pacman/mrs" - origin_tech = "programming=3;powerstorage=4;engineering=4;plasmatech=4" - /obj/machinery/power/port_gen/pacman/Destroy() DropFuel() return ..() @@ -294,10 +272,10 @@ name = "\improper S.U.P.E.R.P.A.C.M.A.N.-type portable generator" icon_state = "portgen1_0" base_icon = "portgen1" + circuit = /obj/item/weapon/circuitboard/machine/pacman/super sheet_path = /obj/item/stack/sheet/mineral/uranium power_gen = 15000 time_per_sheet = 85 - board_path = /obj/item/weapon/circuitboard/machine/pacman/super /obj/machinery/power/port_gen/pacman/super/overheat() explosion(src.loc, 3, 3, 3, -1) @@ -306,10 +284,10 @@ name = "\improper M.R.S.P.A.C.M.A.N.-type portable generator" base_icon = "portgen2" icon_state = "portgen2_0" + circuit = /obj/item/weapon/circuitboard/machine/pacman/mrs sheet_path = /obj/item/stack/sheet/mineral/diamond power_gen = 40000 time_per_sheet = 80 - board_path = /obj/item/weapon/circuitboard/machine/pacman/mrs /obj/machinery/power/port_gen/pacman/mrs/overheat() explosion(src.loc, 4, 4, 4, -1) diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm index 9ec0e46da1..84fa86c180 100644 --- a/code/modules/power/rtg.dm +++ b/code/modules/power/rtg.dm @@ -9,6 +9,7 @@ density = TRUE anchored = TRUE use_power = NO_POWER_USE + circuit = /obj/item/weapon/circuitboard/machine/rtg // You can buckle someone to RTG, then open its panel. Fun stuff. can_buckle = TRUE @@ -16,23 +17,9 @@ buckle_requires_restraints = TRUE var/power_gen = 1000 // Enough to power a single APC. 4000 output with T4 capacitor. - var/board_path = /obj/item/weapon/circuitboard/machine/rtg + var/irradiate = TRUE // RTGs irradiate surroundings, but only when panel is open. -/obj/machinery/power/rtg/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new board_path(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/rtg - name = "RTG (Machine Board)" - build_path = /obj/machinery/power/rtg - origin_tech = "programming=2;materials=4;powerstorage=3;engineering=2" - req_components = list( - /obj/item/stack/cable_coil = 5, - /obj/item/weapon/stock_parts/capacitor = 1, - /obj/item/stack/sheet/mineral/uranium = 10) // We have no Pu-238, and this is the closest thing to it. - /obj/machinery/power/rtg/Initialize() . = ..() connect_to_network() @@ -68,20 +55,7 @@ /obj/machinery/power/rtg/advanced desc = "An advanced RTG capable of moderating isotope decay, increasing power output but reducing lifetime. It uses plasma-fueled radiation collectors to increase output even further." power_gen = 1250 // 2500 on T1, 10000 on T4. - board_path = /obj/item/weapon/circuitboard/machine/rtg/advanced - -/obj/item/weapon/circuitboard/machine/rtg/advanced - name = "Advanced RTG (Machine Board)" - build_path = /obj/machinery/power/rtg/advanced - origin_tech = "programming=3;materials=5;powerstorage=4;engineering=3;plasmatech=3" - req_components = list( - /obj/item/stack/cable_coil = 5, - /obj/item/weapon/stock_parts/capacitor = 1, - /obj/item/weapon/stock_parts/micro_laser = 1, - /obj/item/stack/sheet/mineral/uranium = 10, - /obj/item/stack/sheet/mineral/plasma = 5) - - + circuit = /obj/item/weapon/circuitboard/machine/rtg/advanced // Void Core, power source for Abductor ships and bases. // Provides a lot of power, but tends to explode when mistreated. @@ -91,25 +65,13 @@ icon = 'icons/obj/abductor.dmi' icon_state = "core" desc = "An alien power source that produces energy seemingly out of nowhere." - board_path = /obj/item/weapon/circuitboard/machine/abductor/core + circuit = /obj/item/weapon/circuitboard/machine/abductor/core power_gen = 20000 // 280 000 at T1, 400 000 at T4. Starts at T4. irradiate = FALSE // Green energy! can_buckle = FALSE pixel_y = 7 var/going_kaboom = FALSE // Is it about to explode? -/obj/item/weapon/circuitboard/machine/abductor/core - name = "alien board (Void Core)" - build_path = /obj/machinery/power/rtg/abductor - origin_tech = "programming=5;abductor=5;powerstorage=8;engineering=8" - req_components = list( - /obj/item/weapon/stock_parts/capacitor = 1, - /obj/item/weapon/stock_parts/micro_laser = 1, - /obj/item/weapon/stock_parts/cell/infinite/abductor = 1) - def_components = list( - /obj/item/weapon/stock_parts/capacitor = /obj/item/weapon/stock_parts/capacitor/quadratic, - /obj/item/weapon/stock_parts/micro_laser = /obj/item/weapon/stock_parts/micro_laser/quadultra) - /obj/machinery/power/rtg/abductor/proc/overload() if(going_kaboom) return diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 5c01b60416..28ffb52db4 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -21,8 +21,8 @@ GLOBAL_LIST_EMPTY(rad_collectors) /obj/machinery/power/rad_collector/anchored anchored = TRUE -/obj/machinery/power/rad_collector/New() - ..() +/obj/machinery/power/rad_collector/Initialize() + . = ..() GLOB.rad_collectors += src /obj/machinery/power/rad_collector/Destroy() diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 6e4942807f..1e4baee4be 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -3,20 +3,17 @@ desc = "A heavy-duty industrial laser, often used in containment fields and power generation.\nAlt-click to rotate it clockwise." icon = 'icons/obj/singularity.dmi' icon_state = "emitter" - var/icon_state_on = "emitter_+a" + anchored = FALSE density = TRUE req_access = list(ACCESS_ENGINE_EQUIP) - - // The following 3 vars are mostly for the prototype - var/manual = FALSE - var/charge = 0 - var/atom/target = null + circuit = /obj/item/weapon/circuitboard/machine/emitter use_power = NO_POWER_USE idle_power_usage = 10 active_power_usage = 300 + var/icon_state_on = "emitter_+a" var/active = 0 var/powered = 0 var/fire_delay = 100 @@ -33,6 +30,11 @@ var/datum/effect_system/spark_spread/sparks + // The following 3 vars are mostly for the prototype + var/manual = FALSE + var/charge = 0 + var/atom/target + /obj/machinery/power/emitter/anchored anchored = TRUE @@ -46,20 +48,16 @@ state = 2 use_power = FALSE -/obj/machinery/power/emitter/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/emitter(null) - B.apply_default_parts(src) +/obj/machinery/power/emitter/Initialize() + . = ..() RefreshParts() wires = new /datum/wires/emitter(src) + if(state == 2 && anchored) + connect_to_network() -/obj/item/weapon/circuitboard/machine/emitter - name = "Emitter (Machine Board)" - build_path = /obj/machinery/power/emitter - origin_tech = "programming=3;powerstorage=4;engineering=4" - req_components = list( - /obj/item/weapon/stock_parts/micro_laser = 1, - /obj/item/weapon/stock_parts/manipulator = 1) + sparks = new + sparks.attach(src) + sparks.set_up(5, TRUE, src) /obj/machinery/power/emitter/RefreshParts() var/max_firedelay = 120 @@ -100,15 +98,6 @@ else rotate() -/obj/machinery/power/emitter/Initialize() - . = ..() - if(state == 2 && anchored) - connect_to_network() - - sparks = new - sparks.attach(src) - sparks.set_up(5, TRUE, src) - /obj/machinery/power/emitter/Destroy() if(SSticker.IsRoundInProgress()) var/turf/T = get_turf(src) diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index af62860218..90566dffda 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -49,8 +49,8 @@ field_generator power level display add_overlay("+p[power_level]") -/obj/machinery/field/generator/New() - ..() +/obj/machinery/field/generator/Initialize() + . = ..() fields = list() connected_gens = list() diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 697a80d7cd..b8b26e9447 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -19,10 +19,10 @@ var/powered = 0 mouse_opacity = 2 -/obj/machinery/particle_accelerator/control_box/New() +/obj/machinery/particle_accelerator/control_box/Initialize() + . = ..() wires = new /datum/wires/particle_accelerator/control_box(src) connected_parts = list() - ..() /obj/machinery/particle_accelerator/control_box/Destroy() if(active) @@ -31,8 +31,7 @@ var/obj/structure/particle_accelerator/part = CP part.master = null connected_parts.Cut() - qdel(wires) - wires = null + QDEL_NULL(wires) return ..() /obj/machinery/particle_accelerator/control_box/attack_hand(mob/user) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 50f01f4259..452a793bd6 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -21,6 +21,7 @@ density = TRUE anchored = TRUE use_power = NO_POWER_USE + circuit = /obj/item/weapon/circuitboard/machine/smes var/capacity = 5e6 // maximum charge var/charge = 0 // actual charge @@ -43,36 +44,21 @@ if(!terminal) to_chat(user, "This SMES has no power terminal!") -/obj/machinery/power/smes/New() +/obj/machinery/power/smes/Initialize() ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/smes(null) - B.apply_default_parts(src) - - spawn(5) - dir_loop: - for(var/d in GLOB.cardinals) - var/turf/T = get_step(src, d) - for(var/obj/machinery/power/terminal/term in T) - if(term && term.dir == turn(d, 180)) - terminal = term - break dir_loop + dir_loop: + for(var/d in GLOB.cardinals) + var/turf/T = get_step(src, d) + for(var/obj/machinery/power/terminal/term in T) + if(term && term.dir == turn(d, 180)) + terminal = term + break dir_loop if(!terminal) stat |= BROKEN return terminal.master = src update_icon() - return - -/obj/item/weapon/circuitboard/machine/smes - name = "SMES (Machine Board)" - build_path = /obj/machinery/power/smes - origin_tech = "programming=3;powerstorage=3;engineering=3" - req_components = list( - /obj/item/stack/cable_coil = 5, - /obj/item/weapon/stock_parts/cell = 5, - /obj/item/weapon/stock_parts/capacitor = 1) - def_components = list(/obj/item/weapon/stock_parts/cell = /obj/item/weapon/stock_parts/cell/high/empty) /obj/machinery/power/smes/RefreshParts() var/IO = 0 diff --git a/code/modules/power/terminal.dm b/code/modules/power/terminal.dm index b00bcb0c28..1d795b3307 100644 --- a/code/modules/power/terminal.dm +++ b/code/modules/power/terminal.dm @@ -13,15 +13,16 @@ layer = WIRE_TERMINAL_LAYER //a bit above wires -/obj/machinery/power/terminal/New() - ..() - var/turf/T = src.loc - if(level==1) hide(T.intact) - return +/obj/machinery/power/terminal/Initialize() + . = ..() + var/turf/T = get_turf(src) + if(level == 1) + hide(T.intact) /obj/machinery/power/terminal/Destroy() if(master) master.disconnect_terminal() + master = null return ..() /obj/machinery/power/terminal/hide(i) diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index ee135b13b5..01e8e18659 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -11,23 +11,17 @@ buckle_lying = FALSE buckle_requires_restraints = TRUE + circuit = /obj/item/weapon/circuitboard/machine/tesla_coil + var/power_loss = 2 var/input_power_multiplier = 1 var/zap_cooldown = 100 var/last_zap = 0 -/obj/machinery/power/tesla_coil/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/tesla_coil(null) - B.apply_default_parts(src) +/obj/machinery/power/tesla_coil/Initialize() + . = ..() wires = new /datum/wires/tesla_coil(src) -/obj/item/weapon/circuitboard/machine/tesla_coil - name = "Tesla Coil (Machine Board)" - build_path = /obj/machinery/power/tesla_coil - origin_tech = "programming=3;magnets=3;powerstorage=3" - req_components = list(/obj/item/weapon/stock_parts/capacitor = 1) - /obj/machinery/power/tesla_coil/RefreshParts() var/power_multiplier = 0 zap_cooldown = 100 @@ -109,16 +103,7 @@ buckle_lying = FALSE buckle_requires_restraints = TRUE -/obj/machinery/power/grounding_rod/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/grounding_rod(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/grounding_rod - name = "Grounding Rod (Machine Board)" - build_path = /obj/machinery/power/grounding_rod - origin_tech = "programming=3;powerstorage=3;magnets=3;plasmatech=2" - req_components = list(/obj/item/weapon/stock_parts/capacitor = 1) + circuit = /obj/item/weapon/circuitboard/machine/grounding_rod /obj/machinery/power/grounding_rod/default_unfasten_wrench(mob/user, obj/item/weapon/wrench/W, time = 20) . = ..() diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index a7e304e364..e11b0a3b34 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -18,8 +18,8 @@ var/sun_angle = 0 // sun angle as set by sun datum var/obj/machinery/power/solar_control/control = null -/obj/machinery/power/tracker/New(var/turf/loc, var/obj/item/solar_assembly/S) - ..(loc) +/obj/machinery/power/tracker/Initialize(mapload, obj/item/solar_assembly/S) + . = ..() Make(S) connect_to_network() diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index ea4dfd95db..ed7c6824eb 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -31,6 +31,7 @@ density = TRUE resistance_flags = FIRE_PROOF CanAtmosPass = ATMOS_PASS_DENSITY + circuit = /obj/item/weapon/circuitboard/machine/power_compressor var/obj/machinery/power/turbine/turbine var/datum/gas_mixture/gas_contained var/turf/inturf @@ -51,6 +52,7 @@ density = TRUE resistance_flags = FIRE_PROOF CanAtmosPass = ATMOS_PASS_DENSITY + circuit = /obj/item/weapon/circuitboard/machine/power_turbine var/opened = 0 var/obj/machinery/power/compressor/compressor var/turf/outturf @@ -68,25 +70,12 @@ // the inlet stage of the gas turbine electricity generator -/obj/machinery/power/compressor/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/power_compressor(null) - B.apply_default_parts(src) -// The inlet of the compressor is the direction it faces - +/obj/machinery/power/compressor/Initialize() + . = ..() + // The inlet of the compressor is the direction it faces gas_contained = new inturf = get_step(src, dir) -/obj/item/weapon/circuitboard/machine/power_compressor - name = "Power Compressor (Machine Board)" - build_path = /obj/machinery/power/compressor - origin_tech = "programming=4;powerstorage=4;engineering=4" - req_components = list( - /obj/item/stack/cable_coil = 5, - /obj/item/weapon/stock_parts/manipulator = 6) - -/obj/machinery/power/compressor/Initialize() - . = ..() locate_machinery() if(!turbine) stat |= BROKEN @@ -186,23 +175,10 @@ #define TURBGENQ 100000 #define TURBGENG 0.5 -/obj/machinery/power/turbine/New() - ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/power_turbine(null) - B.apply_default_parts(src) -// The outlet is pointed at the direction of the turbine component - outturf = get_step(src, dir) - -/obj/item/weapon/circuitboard/machine/power_turbine - name = "Power Turbine (Machine Board)" - build_path = /obj/machinery/power/turbine - origin_tech = "programming=4;powerstorage=4;engineering=4" - req_components = list( - /obj/item/stack/cable_coil = 5, - /obj/item/weapon/stock_parts/capacitor = 6) - /obj/machinery/power/turbine/Initialize() . = ..() +// The outlet is pointed at the direction of the turbine component + outturf = get_step(src, dir) locate_machinery() if(!compressor) stat |= BROKEN diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 27cad406fa..8cf7333c6e 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -221,6 +221,7 @@ amount = 5 recharge_delay = 30 dispensable_reagents = list() + circuit = /obj/item/weapon/circuitboard/machine/chem_dispenser var/list/dispensable_reagent_tiers = list( list( "hydrogen", @@ -264,23 +265,6 @@ ) ) -/obj/machinery/chem_dispenser/constructable/Initialize() - . = ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/chem_dispenser(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/chem_dispenser - name = "Portable Chem Dispenser (Machine Board)" - build_path = /obj/machinery/chem_dispenser/constructable - origin_tech = "materials=4;programming=4;plasmatech=4;biotech=3" - 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) - def_components = list(/obj/item/weapon/stock_parts/cell = /obj/item/weapon/stock_parts/cell/high) - /obj/machinery/chem_dispenser/constructable/RefreshParts() var/time = 0 var/i diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index 3d1c2b4a9c..b43841c43b 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -7,24 +7,12 @@ use_power = IDLE_POWER_USE idle_power_usage = 40 resistance_flags = FIRE_PROOF | ACID_PROOF + circuit = /obj/item/weapon/circuitboard/machine/chem_heater var/obj/item/weapon/reagent_containers/beaker = null var/target_temperature = 300 var/heater_coefficient = 0.10 var/on = FALSE -/obj/machinery/chem_heater/Initialize() - . = ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/chem_heater(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/chem_heater - name = "Chemical Heater (Machine Board)" - build_path = /obj/machinery/chem_heater - origin_tech = "programming=2;engineering=2;biotech=2" - req_components = list( - /obj/item/weapon/stock_parts/micro_laser = 1, - /obj/item/weapon/stock_parts/console_screen = 1) - /obj/machinery/chem_heater/RefreshParts() heater_coefficient = 0.10 for(var/obj/item/weapon/stock_parts/micro_laser/M in component_parts) diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index d902ed7b13..c0d5fef9cc 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -3,11 +3,13 @@ desc = "Used to separate chemicals and distribute them in a variety of forms." density = TRUE anchored = TRUE + layer = BELOW_OBJ_LAYER icon = 'icons/obj/chemical.dmi' icon_state = "mixer0" use_power = IDLE_POWER_USE idle_power_usage = 20 resistance_flags = FIRE_PROOF | ACID_PROOF + circuit = /obj/item/weapon/circuitboard/machine/chem_master var/obj/item/weapon/reagent_containers/beaker = null var/obj/item/weapon/storage/pill_bottle/bottle = null var/mode = 1 @@ -15,39 +17,12 @@ var/screen = "home" var/analyzeVars[0] var/useramount = 30 // Last used amount - layer = BELOW_OBJ_LAYER /obj/machinery/chem_master/Initialize() create_reagents(100) add_overlay("waitlight") - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/chem_master(null) - B.apply_default_parts(src) . = ..() -/obj/item/weapon/circuitboard/machine/chem_master - name = "ChemMaster 3000 (Machine Board)" - build_path = /obj/machinery/chem_master - origin_tech = "materials=3;programming=2;biotech=3" - 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/machine/chem_master/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/screwdriver)) - var/new_name = "ChemMaster" - var/new_path = /obj/machinery/chem_master - - if(build_path == /obj/machinery/chem_master) - new_name = "CondiMaster" - new_path = /obj/machinery/chem_master/condimaster - - build_path = new_path - name = "[new_name] 3000 (Machine Board)" - to_chat(user, "You change the circuit board setting to \"[new_name]\".") - else - return ..() - /obj/machinery/chem_master/RefreshParts() reagents.maximum_volume = 0 for(var/obj/item/weapon/reagent_containers/glass/beaker/B in component_parts) @@ -360,7 +335,3 @@ name = "CondiMaster 3000" desc = "Used to create condiments and other cooking supplies." condi = 1 - -/obj/item/weapon/circuitboard/machine/chem_master/condi - name = "CondiMaster 3000 (Machine Board)" - build_path = /obj/machinery/chem_master/condimaster diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 132ebdf8fd..c3e1bd2c98 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -9,6 +9,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). desc = "Manufactures circuit boards for the construction of machines." icon_state = "circuit_imprinter" container_type = OPENCONTAINER + circuit = /obj/item/weapon/circuitboard/machine/circuit_imprinter var/datum/material_container/materials var/efficiency_coeff @@ -28,24 +29,13 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). ) /obj/machinery/r_n_d/circuit_imprinter/Initialize() - . = ..() materials = new(src, list(MAT_GLASS, MAT_GOLD, MAT_DIAMOND, MAT_METAL, MAT_BLUESPACE)) create_reagents(0) - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/circuit_imprinter(null) - B.apply_default_parts(src) - -/obj/machinery/r_n_d/circuit_imprinter/Destroy() - qdel(materials) return ..() -/obj/item/weapon/circuitboard/machine/circuit_imprinter - name = "Circuit Imprinter (Machine Board)" - build_path = /obj/machinery/r_n_d/circuit_imprinter - origin_tech = "engineering=2;programming=2" - 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/machinery/r_n_d/circuit_imprinter/Destroy() + QDEL_NULL(materials) + return ..() /obj/machinery/r_n_d/circuit_imprinter/RefreshParts() reagents.maximum_volume = 0 diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index 71b9780c58..c6f2463b74 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -11,22 +11,9 @@ Note: Must be placed within 3 tiles of the R&D Console name = "destructive analyzer" desc = "Learn science by destroying things!" icon_state = "d_analyzer" + circuit = /obj/item/weapon/circuitboard/machine/destructive_analyzer var/decon_mod = 0 -/obj/machinery/r_n_d/destructive_analyzer/Initialize() - . = ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/destructive_analyzer(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/destructive_analyzer - name = "Destructive Analyzer (Machine Board)" - build_path = /obj/machinery/r_n_d/destructive_analyzer - origin_tech = "magnets=2;engineering=2;programming=2" - 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/machinery/r_n_d/destructive_analyzer/RefreshParts() var/T = 0 for(var/obj/item/weapon/stock_parts/S in component_parts) diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 7e7b4c2b5b..fa1c59bfd6 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -25,6 +25,7 @@ density = TRUE anchored = TRUE use_power = IDLE_POWER_USE + circuit = /obj/item/weapon/circuitboard/machine/experimentor var/recentlyExperimented = 0 var/mob/trackedIan var/mob/trackedRuntime @@ -84,22 +85,11 @@ /obj/machinery/r_n_d/experimentor/Initialize() . = ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/experimentor(null) - B.apply_default_parts(src) trackedIan = locate(/mob/living/simple_animal/pet/dog/corgi/Ian) in GLOB.mob_list trackedRuntime = locate(/mob/living/simple_animal/pet/cat/Runtime) in GLOB.mob_list SetTypeReactions() -/obj/item/weapon/circuitboard/machine/experimentor - name = "E.X.P.E.R.I-MENTOR (Machine Board)" - build_path = /obj/machinery/r_n_d/experimentor - 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/machinery/r_n_d/experimentor/RefreshParts() for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) if(resetTime > 0 && (resetTime - M.rating) >= 1) diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 84432e8e44..2691286771 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -12,6 +12,7 @@ Note: Must be placed west/left of and R&D console to function. desc = "Converts raw materials into useful objects." icon_state = "protolathe" container_type = OPENCONTAINER + circuit = /obj/item/weapon/circuitboard/machine/protolathe var/datum/material_container/materials var/efficiency_coeff @@ -32,23 +33,12 @@ Note: Must be placed west/left of and R&D console to function. /obj/machinery/r_n_d/protolathe/Initialize() - . = ..() create_reagents(0) materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE)) - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/protolathe(null) - B.apply_default_parts(src) - -/obj/item/weapon/circuitboard/machine/protolathe - name = "Protolathe (Machine Board)" - build_path = /obj/machinery/r_n_d/protolathe - origin_tech = "engineering=2;programming=2" - 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) + return ..() /obj/machinery/r_n_d/protolathe/Destroy() - qdel(materials) + QDEL_NULL(materials) return ..() /obj/machinery/r_n_d/protolathe/RefreshParts() diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 5dc96be0a0..0ea18b2ff9 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -21,8 +21,7 @@ wires = new /datum/wires/r_n_d(src) /obj/machinery/r_n_d/Destroy() - qdel(wires) - wires = null + QDEL_NULL(wires) return ..() /obj/machinery/r_n_d/proc/shock(mob/user, prb) diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index d161929f2c..8fa7e64ffe 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -19,14 +19,6 @@ var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/rdserver(null) B.apply_default_parts(src) -/obj/item/weapon/circuitboard/machine/rdserver - name = "R&D Server (Machine Board)" - build_path = /obj/machinery/r_n_d/server - origin_tech = "programming=3" - req_components = list( - /obj/item/stack/cable_coil = 2, - /obj/item/weapon/stock_parts/scanning_module = 1) - /obj/machinery/r_n_d/server/Destroy() griefProtection() return ..() diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm index 0567ee5d51..8563c36ea4 100644 --- a/code/modules/security_levels/keycard_authentication.dm +++ b/code/modules/security_levels/keycard_authentication.dm @@ -24,8 +24,8 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new) /obj/machinery/keycard_auth/Destroy() GLOB.keycard_events.clearEvent("triggerEvent", ev) - qdel(ev) - . = ..() + QDEL_NULL(ev) + return ..() /obj/machinery/keycard_auth/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.physical_state) diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm index 179f1e7d0a..eba4bd74a8 100644 --- a/code/modules/shuttle/computer.dm +++ b/code/modules/shuttle/computer.dm @@ -10,9 +10,13 @@ var/admin_controlled var/no_destination_swap = 0 -/obj/machinery/computer/shuttle/Initialize(mapload, obj/item/weapon/circuitboard/computer/shuttle/C) - . = ..() - if(istype(C)) +/obj/machinery/computer/shuttle/Initialize() + ..() + return INITIALIZE_HINT_LATELOAD + +/obj/machinery/computer/shuttle/LateInitialize() + if(istype(circuit, /obj/item/weapon/circuitboard/computer/shuttle)) + var/obj/item/weapon/circuitboard/computer/shuttle/C = circuit possible_destinations = C.possible_destinations shuttleId = C.shuttleId diff --git a/code/modules/shuttle/manipulator.dm b/code/modules/shuttle/manipulator.dm index 6fd9cb129e..6e2741a6d7 100644 --- a/code/modules/shuttle/manipulator.dm +++ b/code/modules/shuttle/manipulator.dm @@ -33,14 +33,10 @@ add_overlay(hologram_projection) add_overlay(hologram_ship) -/obj/machinery/shuttle_manipulator/ui_interact(mob/user, ui_key = "main", \ - datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, \ - datum/ui_state/state = GLOB.admin_state) - +/obj/machinery/shuttle_manipulator/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.admin_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) - ui = new(user, src, ui_key, "shuttle_manipulator", name, 800, 600, \ - master_ui, state) + ui = new(user, src, ui_key, "shuttle_manipulator", name, 800, 600, master_ui, state) ui.open() /proc/shuttlemode2str(mode) @@ -62,7 +58,7 @@ if(SHUTTLE_ENDGAME) . = "endgame" if(!.) - throw EXCEPTION("shuttlemode2str(): invalid mode [mode]") + CRASH("shuttlemode2str(): invalid mode [mode]") /obj/machinery/shuttle_manipulator/ui_data(mob/user) diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index 7a5f4936d9..12b8e83c65 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -10,9 +10,9 @@ icon = 'icons/obj/machines/magic_emitter.dmi' icon_state = "wabbajack_statue" icon_state_on = "wabbajack_statue_on" + active = FALSE var/list/active_tables = list() var/tables_required = 2 - active = FALSE /obj/machinery/power/emitter/energycannon/magical/Initialize() . = ..() diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm index 47eb22c397..1c1b0731be 100644 --- a/code/modules/shuttle/syndicate.dm +++ b/code/modules/shuttle/syndicate.dm @@ -25,20 +25,6 @@ board.moved = TRUE ..() -/obj/item/weapon/circuitboard/computer/syndicate_shuttle - name = "Syndicate Shuttle (Computer Board)" - build_path = /obj/machinery/computer/shuttle/syndicate - var/challenge = FALSE - var/moved = FALSE - -/obj/item/weapon/circuitboard/computer/syndicate_shuttle/Initialize() - . = ..() - GLOB.syndicate_shuttle_boards += src - -/obj/item/weapon/circuitboard/computer/syndicate_shuttle/Destroy() - GLOB.syndicate_shuttle_boards -= src - return ..() - /obj/machinery/computer/shuttle/syndicate/drop_pod name = "syndicate assault pod control" icon = 'icons/obj/terminals.dmi' diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index 77a30b1884..453a8e097a 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -206,35 +206,6 @@ /obj/structure/filler/ex_act() return -/obj/item/weapon/circuitboard/machine/bsa/back - name = "Bluespace Artillery Generator (Machine Board)" - build_path = /obj/machinery/bsa/back - origin_tech = "engineering=2;combat=2;bluespace=2" //No freebies! - req_components = list( - /obj/item/weapon/stock_parts/capacitor/quadratic = 5, - /obj/item/stack/cable_coil = 2) - -/obj/item/weapon/circuitboard/machine/bsa/middle - name = "Bluespace Artillery Fusor (Machine Board)" - build_path = /obj/machinery/bsa/middle - origin_tech = "engineering=2;combat=2;bluespace=2" - req_components = list( - /obj/item/weapon/ore/bluespace_crystal = 20, - /obj/item/stack/cable_coil = 2) - -/obj/item/weapon/circuitboard/machine/bsa/front - name = "Bluespace Artillery Bore (Machine Board)" - build_path = /obj/machinery/bsa/front - origin_tech = "engineering=2;combat=2;bluespace=2" - req_components = list( - /obj/item/weapon/stock_parts/manipulator/femto = 5, - /obj/item/stack/cable_coil = 2) - -/obj/item/weapon/circuitboard/computer/bsa_control - name = "Bluespace Artillery Controls (Computer Board)" - build_path = /obj/machinery/computer/bsa_control - origin_tech = "engineering=2;combat=2;bluespace=2" - /obj/machinery/computer/bsa_control name = "bluespace artillery control" var/obj/machinery/bsa/full/cannon diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm index d41ea48c5f..3412db9b72 100644 --- a/code/modules/station_goals/dna_vault.dm +++ b/code/modules/station_goals/dna_vault.dm @@ -118,16 +118,6 @@ dna[H.dna.uni_identity] = 1 to_chat(user, "Humanoid data added to local storage.") - -/obj/item/weapon/circuitboard/machine/dna_vault - name = "DNA Vault (Machine Board)" - build_path = /obj/machinery/dna_vault - origin_tech = "engineering=2;combat=2;bluespace=2" //No freebies! - req_components = list( - /obj/item/weapon/stock_parts/capacitor/super = 5, - /obj/item/weapon/stock_parts/manipulator/pico = 5, - /obj/item/stack/cable_coil = 2) - /obj/machinery/dna_vault name = "DNA Vault" desc = "Break glass in case of apocalypse." diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm index 1543f7615a..38fd5ad853 100644 --- a/code/modules/station_goals/shield.dm +++ b/code/modules/station_goals/shield.dm @@ -36,15 +36,10 @@ coverage |= view(A.kill_range,A) return coverage.len -/obj/item/weapon/circuitboard/machine/computer/sat_control - name = "Satellite Network Control (Computer Board)" - build_path = /obj/machinery/computer/sat_control - origin_tech = "engineering=3" - /obj/machinery/computer/sat_control name = "satellite control" desc = "Used to control the satellite network." - circuit = /obj/item/weapon/circuitboard/machine/computer/sat_control + circuit = /obj/item/weapon/circuitboard/computer/sat_control var/notice /obj/machinery/computer/sat_control/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) diff --git a/code/modules/stock_market/computer.dm b/code/modules/stock_market/computer.dm index 9cef9b3048..68b28d09be 100644 --- a/code/modules/stock_market/computer.dm +++ b/code/modules/stock_market/computer.dm @@ -11,8 +11,8 @@ light_color = LIGHT_COLOR_GREEN -/obj/machinery/computer/stockexchange/New() - ..() +/obj/machinery/computer/stockexchange/Initialize() + . = ..() logged_in = "[station_name()] Cargo Department" /obj/machinery/computer/stockexchange/proc/balance() diff --git a/tgstation.dme b/tgstation.dme index 23ffe1fef1..fc5f811cef 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -549,6 +549,7 @@ #include "code\game\gamemodes\wizard\soulstone.dm" #include "code\game\gamemodes\wizard\spellbook.dm" #include "code\game\gamemodes\wizard\wizard.dm" +#include "code\game\machinery\_machinery.dm" #include "code\game\machinery\ai_slipper.dm" #include "code\game\machinery\airlock_control.dm" #include "code\game\machinery\announcement_system.dm" @@ -575,7 +576,6 @@ #include "code\game\machinery\launch_pad.dm" #include "code\game\machinery\lightswitch.dm" #include "code\game\machinery\limbgrower.dm" -#include "code\game\machinery\machinery.dm" #include "code\game\machinery\magnet.dm" #include "code\game\machinery\mass_driver.dm" #include "code\game\machinery\navbeacon.dm" @@ -606,6 +606,7 @@ #include "code\game\machinery\camera\motion.dm" #include "code\game\machinery\camera\presets.dm" #include "code\game\machinery\camera\tracking.dm" +#include "code\game\machinery\computer\_computer.dm" #include "code\game\machinery\computer\aifixer.dm" #include "code\game\machinery\computer\apc_control.dm" #include "code\game\machinery\computer\arcade.dm" @@ -617,7 +618,6 @@ #include "code\game\machinery\computer\card.dm" #include "code\game\machinery\computer\cloning.dm" #include "code\game\machinery\computer\communications.dm" -#include "code\game\machinery\computer\computer.dm" #include "code\game\machinery\computer\crew.dm" #include "code\game\machinery\computer\dna_console.dm" #include "code\game\machinery\computer\gulag_teleporter.dm" @@ -633,6 +633,7 @@ #include "code\game\machinery\computer\security.dm" #include "code\game\machinery\computer\station_alert.dm" #include "code\game\machinery\computer\telecrystalconsoles.dm" +#include "code\game\machinery\computer\teleporter.dm" #include "code\game\machinery\doors\airlock.dm" #include "code\game\machinery\doors\airlock_electronics.dm" #include "code\game\machinery\doors\airlock_types.dm" @@ -863,6 +864,9 @@ #include "code\game\objects\items\weapons\twohanded.dm" #include "code\game\objects\items\weapons\vending_items.dm" #include "code\game\objects\items\weapons\weaponry.dm" +#include "code\game\objects\items\weapons\circuitboards\circuitboard.dm" +#include "code\game\objects\items\weapons\circuitboards\computer_circuitboards.dm" +#include "code\game\objects\items\weapons\circuitboards\machine_circuitboards.dm" #include "code\game\objects\items\weapons\grenades\chem_grenade.dm" #include "code\game\objects\items\weapons\grenades\clusterbuster.dm" #include "code\game\objects\items\weapons\grenades\emgrenade.dm"