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"