diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 2a7a9deea46..8e9faf65396 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -16,12 +16,9 @@
idle_power_usage = 15
active_power_usage = 200 //builtin health analyzer, dialysis machine, injectors.
-/obj/machinery/sleeper/New()
- ..()
- beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
-
/obj/machinery/sleeper/Initialize()
. = ..()
+ beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
update_icon()
/obj/machinery/sleeper/machinery_process()
diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm
index 6dd1c462769..778c599ac4b 100644
--- a/code/game/machinery/ai_slipper.dm
+++ b/code/game/machinery/ai_slipper.dm
@@ -15,8 +15,8 @@
req_access = list(access_ai_upload)
-/obj/machinery/ai_slipper/New()
- ..()
+/obj/machinery/ai_slipper/Initialize()
+ . = ..()
update_icon()
/obj/machinery/ai_slipper/power_change()
diff --git a/code/game/machinery/computer/RCON_Console.dm b/code/game/machinery/computer/RCON_Console.dm
index 2319288dab3..4de50fee6b2 100644
--- a/code/game/machinery/computer/RCON_Console.dm
+++ b/code/game/machinery/computer/RCON_Console.dm
@@ -15,8 +15,8 @@
var/current_tag = null
var/datum/nano_module/rcon/rcon
-/obj/machinery/computer/rcon/New()
- ..()
+/obj/machinery/computer/rcon/Initialize()
+ . = ..()
rcon = new(src)
/obj/machinery/computer/rcon/Destroy()
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 13d96e76872..41c42866a3b 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -93,8 +93,8 @@
var/blocked = 0 //Player cannot attack/heal while set
var/turtle = 0
-/obj/machinery/computer/arcade/battle/New()
- ..()
+/obj/machinery/computer/arcade/battle/Initialize()
+ . = ..()
var/name_action
var/name_part1
var/name_part2
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index efb75c2fad3..fba483dedc7 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -35,10 +35,11 @@
var/stat_msg1
var/stat_msg2
- var/datum/announcement/priority/crew_announcement = new
+ var/datum/announcement/priority/crew_announcement
-/obj/machinery/computer/communications/New()
- ..()
+/obj/machinery/computer/communications/Initialize()
+ . = ..()
+ crew_announcement = new
crew_announcement.newscast = 1
/obj/machinery/computer/communications/machinery_process()
diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm
index ed323a9a6b1..ae4da16567e 100644
--- a/code/game/machinery/computer/crew.dm
+++ b/code/game/machinery/computer/crew.dm
@@ -10,9 +10,9 @@
circuit = /obj/item/weapon/circuitboard/crew
var/datum/nano_module/crew_monitor/crew_monitor
-/obj/machinery/computer/crew/New()
+/obj/machinery/computer/crew/Initialize()
+ . = ..()
crew_monitor = new(src)
- ..()
/obj/machinery/computer/crew/Destroy()
qdel(crew_monitor)
diff --git a/code/game/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm
index c63134fe0c2..56eb8dc77d6 100644
--- a/code/game/machinery/computer/guestpass.dm
+++ b/code/game/machinery/computer/guestpass.dm
@@ -59,8 +59,8 @@
var/list/internal_log = list()
var/mode = 0 // 0 - making pass, 1 - viewing logs
-/obj/machinery/computer/guestpass/New()
- ..()
+/obj/machinery/computer/guestpass/Initialize()
+ . = ..()
uid = "[rand(100,999)]-G[rand(10,99)]"
/obj/machinery/computer/guestpass/attackby(obj/O, mob/user)
diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm
index 05e7a5cb680..ec313abdb00 100644
--- a/code/game/machinery/computer/message.dm
+++ b/code/game/machinery/computer/message.dm
@@ -29,8 +29,8 @@
var/customjob = "Admin"
var/custommessage = "This is a test, please ignore."
-/obj/machinery/computer/message_monitor/New()
- ..()
+/obj/machinery/computer/message_monitor/Initialize()
+ . = ..()
spark_system = bind_spark(src, 5)
/obj/machinery/computer/message_monitor/Destroy()
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index add0c705f83..8746a637012 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -205,10 +205,6 @@
allow_occupant_types = list(/mob/living/silicon/robot)
disallow_occupant_types = list(/mob/living/silicon/robot/drone)
-/obj/machinery/cryopod/New()
- announce = new /obj/item/device/radio/intercom(src)
- ..()
-
/obj/machinery/cryopod/Destroy()
if(occupant)
occupant.forceMove(loc)
@@ -295,7 +291,6 @@
//Delete all items not on the preservation list.
var/list/items = src.contents.Copy()
items -= occupant // Don't delete the occupant
- items -= announce // or the autosay radio.
for(var/obj/item/W in items)
@@ -324,7 +319,7 @@
icon_state = base_icon_state
- announce.autosay("[occupant.real_name], [occupant.mind.role_alt_title], [on_store_message]", "[on_store_name]")
+ global_announcer.autosay("[occupant.real_name], [occupant.mind.role_alt_title], [on_store_message]", "[on_store_name]")
visible_message("\The [initial(name)] hums and hisses as it moves [occupant.real_name] into storage.", 3)
// Let SSjobs handle the rest.
diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm
index f762a575739..04153493a50 100644
--- a/code/game/machinery/doppler_array.dm
+++ b/code/game/machinery/doppler_array.dm
@@ -5,8 +5,8 @@ var/list/doppler_arrays = list()
desc = "A highly precise directional sensor array which measures the release of quants from decaying tachyons. The doppler shifting of the mirror-image formed by these quants can reveal the size, location and temporal affects of energetic disturbances within a large radius ahead of the array."
-/obj/machinery/doppler_array/New()
- ..()
+/obj/machinery/doppler_array/Initialize()
+ . = ..()
doppler_arrays += src
/obj/machinery/doppler_array/Destroy()
diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm
index 80360a80e14..85ec1193925 100644
--- a/code/game/machinery/floodlight.dm
+++ b/code/game/machinery/floodlight.dm
@@ -13,11 +13,11 @@
light_color = LIGHT_COLOR_TUNGSTEN
light_wedge = LIGHT_WIDE
-/obj/machinery/floodlight/New()
- src.cell = new(src)
+/obj/machinery/floodlight/Initialize()
+ . = ..()
+ cell = new(src)
cell.maxcharge = 1000
cell.charge = 1000 // 41minutes @ 200W
- ..()
/obj/machinery/floodlight/update_icon()
overlays.Cut()
diff --git a/code/game/machinery/floorlayer.dm b/code/game/machinery/floorlayer.dm
index 70a49a74b35..9dd78fd094e 100644
--- a/code/game/machinery/floorlayer.dm
+++ b/code/game/machinery/floorlayer.dm
@@ -9,9 +9,9 @@
var/obj/item/stack/tile/T
var/list/mode = list("dismantle"=0,"laying"=0,"collect"=0)
-/obj/machinery/floorlayer/New()
+/obj/machinery/floorlayer/Initialize()
+ . = ..()
T = new/obj/item/stack/tile/floor(src)
- ..()
/obj/machinery/floorlayer/Move(new_turf,M_Dir)
..()
diff --git a/code/game/machinery/pipe/pipelayer.dm b/code/game/machinery/pipe/pipelayer.dm
index 0de61b4685f..b20b35e5fcb 100644
--- a/code/game/machinery/pipe/pipelayer.dm
+++ b/code/game/machinery/pipe/pipelayer.dm
@@ -15,9 +15,9 @@
var/obj/item/weapon/wrench/W
var/list/Pipes = list("regular pipes"=0,"scrubbers pipes"=31,"supply pipes"=29,"heat exchange pipes"=2)
-/obj/machinery/pipelayer/New()
+/obj/machinery/pipelayer/Initialize()
+ . = ..()
W = new(src)
- ..()
/obj/machinery/pipelayer/Move(new_turf,M_Dir)
..()
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index de534ea9cc3..50dd39fe2e8 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -35,8 +35,9 @@
MASK_TYPE = /obj/item/clothing/mask/breath
-/obj/machinery/suit_storage_unit/New()
- src.update_icon()
+/obj/machinery/suit_storage_unit/Initialize()
+ . = ..()
+ update_icon()
if(SUIT_TYPE)
SUIT = new SUIT_TYPE(src)
if(HELMET_TYPE)
@@ -605,8 +606,8 @@
var/datum/wires/suit_storage_unit/wires = null
-/obj/machinery/suit_cycler/New()
- ..()
+/obj/machinery/suit_cycler/Initialize()
+ . = ..()
wires = new(src)
target_department = departments[1]
diff --git a/code/game/objects/items/devices/spy_bug.dm b/code/game/objects/items/devices/spy_bug.dm
index 7e591b4a679..3b36384220a 100644
--- a/code/game/objects/items/devices/spy_bug.dm
+++ b/code/game/objects/items/devices/spy_bug.dm
@@ -147,8 +147,8 @@
// These cheap toys are accessible from the mercenary camera console as well
network = list(NETWORK_MERCENARY)
-/obj/machinery/camera/spy/New()
- ..()
+/obj/machinery/camera/spy/Initialize()
+ . = ..()
name = "DV-136ZB #[rand(1000,9999)]"
c_tag = name
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 4babb4b3d10..e8d17c2f777 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -141,8 +141,8 @@
var/is_washing = 0
var/list/temperature_settings = list("normal" = 310, "boiling" = T0C+100, "freezing" = T0C)
-/obj/machinery/shower/New()
- ..()
+/obj/machinery/shower/Initialize()
+ . = ..()
create_reagents(2)
//add heat controls? when emagged, you can freeze to death in it?
diff --git a/code/modules/economy/Accounts_DB.dm b/code/modules/economy/Accounts_DB.dm
index a78b13a5386..992d144e2bd 100644
--- a/code/modules/economy/Accounts_DB.dm
+++ b/code/modules/economy/Accounts_DB.dm
@@ -40,9 +40,9 @@
Generated By: [held_card.registered_name], [held_card.assignment]
"}
-/obj/machinery/account_database/New()
+/obj/machinery/account_database/Initialize()
+ . = ..()
machine_id = "[station_name()] Acc. DB #[num_financial_terminals++]"
- ..()
/obj/machinery/account_database/attackby(obj/O, mob/user)
if(!istype(O, /obj/item/weapon/card/id))
diff --git a/code/modules/examine/descriptions/atmospherics.dm b/code/modules/examine/descriptions/atmospherics.dm
index e01600aa6d6..f71aa56f116 100644
--- a/code/modules/examine/descriptions/atmospherics.dm
+++ b/code/modules/examine/descriptions/atmospherics.dm
@@ -2,8 +2,8 @@
description_info = "This pipe, and all other pipes, can be connected or disconnected by a wrench. The internal pressure of the pipe must \
be below 300 kPa to do this. More pipes can be obtained from the pipe dispenser."
-/obj/machinery/atmospherics/pipe/New() //This is needed or else 20+ lines of copypasta to dance around inheritence.
- ..()
+/obj/machinery/atmospherics/pipe/Initialize() //This is needed or else 20+ lines of copypasta to dance around inheritence.
+ . = ..()
description_info += "
Most pipes and atmospheric devices can be connected or disconnected with a wrench. The pipe's pressure must not be too high, \
or if it is a device, it must be turned off first."
diff --git a/code/modules/holodeck/HolodeckControl.dm b/code/modules/holodeck/HolodeckControl.dm
index 83c1a5dae5e..474804f6082 100644
--- a/code/modules/holodeck/HolodeckControl.dm
+++ b/code/modules/holodeck/HolodeckControl.dm
@@ -26,8 +26,8 @@
var/list/supported_programs
var/list/restricted_programs
-/obj/machinery/computer/HolodeckControl/New()
- ..()
+/obj/machinery/computer/HolodeckControl/Initialize()
+ . = ..()
linkedholodeck = locate(linkedholodeck_area)
supported_programs = list()
restricted_programs = list()
@@ -339,8 +339,8 @@
density = 0
linkedholodeck_area = /area/holodeck/alphadeck
-/obj/machinery/computer/HolodeckControl/Exodus/New()
- ..()
+/obj/machinery/computer/HolodeckControl/Exodus/Initialize()
+ . = ..()
supported_programs = list(
"Empty Court" = "emptycourt",
"Basketball Court" = "basketball",
diff --git a/code/modules/holodeck/HolodeckObjects.dm b/code/modules/holodeck/HolodeckObjects.dm
index 4054a75ed8e..041723a95a2 100644
--- a/code/modules/holodeck/HolodeckObjects.dm
+++ b/code/modules/holodeck/HolodeckObjects.dm
@@ -381,10 +381,6 @@
user << "The station AI is not to interact with these devices!"
return
-/obj/machinery/readybutton/New()
- ..()
-
-
/obj/machinery/readybutton/attackby(obj/item/weapon/W as obj, mob/user as mob)
user << "The device is a solid button, there's nothing you can do with it!"
diff --git a/code/modules/hydroponics/trays/tray_apiary.dm b/code/modules/hydroponics/trays/tray_apiary.dm
index 3d5f3343bfa..8069f88eb51 100644
--- a/code/modules/hydroponics/trays/tray_apiary.dm
+++ b/code/modules/hydroponics/trays/tray_apiary.dm
@@ -25,9 +25,9 @@
var/hydrotray_type = /obj/machinery/portable_atmospherics/hydroponics
//overwrite this after it's created if the apiary needs a custom machinery sprite
-/obj/machinery/apiary/New()
+/obj/machinery/apiary/Initialize()
..()
- overlays += image('icons/obj/apiary_bees_etc.dmi', icon_state="apiary")
+ add_overlay(image('icons/obj/apiary_bees_etc.dmi', icon_state = "apiary"))
/obj/machinery/apiary/bullet_act(var/obj/item/projectile/Proj) //Works with the Somatoray to modify plant variables.
if(istype(Proj ,/obj/item/projectile/energy/floramut))
diff --git a/code/modules/mining/drilling/drill.dm b/code/modules/mining/drilling/drill.dm
index 5b03bac02f9..8808f0ccab4 100644
--- a/code/modules/mining/drilling/drill.dm
+++ b/code/modules/mining/drilling/drill.dm
@@ -40,9 +40,8 @@
var/datum/effect_system/sparks/spark_system
-/obj/machinery/mining/drill/New()
-
- ..()
+/obj/machinery/mining/drill/Initialize()
+ . = ..()
component_parts = list()
component_parts += new /obj/item/weapon/circuitboard/miningdrill(src)
@@ -340,8 +339,8 @@
icon_state = "mining_brace"
var/obj/machinery/mining/drill/connected
-/obj/machinery/mining/brace/New()
- ..()
+/obj/machinery/mining/brace/Initialize()
+ . = ..()
component_parts = list()
component_parts += new /obj/item/weapon/circuitboard/miningdrillbrace(src)
diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm
index 09c09f9361a..3deed76df05 100644
--- a/code/modules/power/antimatter/shielding.dm
+++ b/code/modules/power/antimatter/shielding.dm
@@ -36,8 +36,8 @@ proc/cardinalrange(var/center)
/obj/machinery/am_shielding/map
mapped = 1
-/obj/machinery/am_shielding/New(loc, var/obj/machinery/power/am_control_unit/AMC)
- ..()
+/obj/machinery/am_shielding/Initialize(mapload, var/obj/machinery/power/am_control_unit/AMC)
+ . = ..()
if(!AMC)
if (!mapped)
WARNING("AME sector somehow created without a parent control unit!")
@@ -45,8 +45,13 @@ proc/cardinalrange(var/center)
return
link_control(AMC)
remove_machine(src)
- spawn (10)
- update_icon()
+ if (mapload)
+ . = INITIALIZE_HINT_LATELOAD
+ else
+ addtimer(CALLBACK(src, /atom/.proc/update_icon), 1 SECOND)
+
+/obj/machinery/am_shielding/LateInitialize()
+ update_icon()
/obj/machinery/am_shielding/proc/link_control(var/obj/machinery/power/am_control_unit/AMC)
if(!istype(AMC))
diff --git a/code/modules/power/batteryrack.dm b/code/modules/power/batteryrack.dm
index b0703c08b67..8397618fc57 100644
--- a/code/modules/power/batteryrack.dm
+++ b/code/modules/power/batteryrack.dm
@@ -12,11 +12,10 @@
var/cells_amount = 0
var/capacitors_amount = 0
-/obj/machinery/power/smes/batteryrack/New()
- ..()
+/obj/machinery/power/smes/batteryrack/Initialize()
+ . = ..()
add_parts()
RefreshParts()
- return
//Maybe this should be moved up to obj/machinery
/obj/machinery/power/smes/batteryrack/proc/add_parts()
diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm
index 05972c9aa17..71ab924494b 100644
--- a/code/modules/power/singularity/collector.dm
+++ b/code/modules/power/singularity/collector.dm
@@ -17,8 +17,8 @@ var/global/list/rad_collectors = list()
var/locked = 0
var/drainratio = 1
-/obj/machinery/power/rad_collector/New()
- ..()
+/obj/machinery/power/rad_collector/Initialize()
+ . = ..()
rad_collectors += src
/obj/machinery/power/rad_collector/Destroy()
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index c556b50244a..17d25f26f6d 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -28,8 +28,8 @@ field_generator power level display
var/power = 30000 // Current amount of power
var/state = 0
var/warming_up = 0
- var/list/obj/machinery/containment_field/fields
- var/list/obj/machinery/field_generator/connected_gens
+ var/list/obj/machinery/containment_field/fields = list()
+ var/list/obj/machinery/field_generator/connected_gens = list()
var/clean_up = 0
//If keeping field generators powered is hard then increase the emitter active power usage.
@@ -52,12 +52,6 @@ field_generator power level display
if(level)
add_overlay("+p[level]")
-/obj/machinery/field_generator/New()
- ..()
- fields = list()
- connected_gens = list()
- return
-
/obj/machinery/field_generator/machinery_process()
if(Varedit_start == 1)
if(active == 0)
diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm
index 9e87589cc35..4b60296d329 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_control.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm
@@ -21,11 +21,11 @@
var/parts = null
var/datum/wires/particle_acc/control_box/wires = null
-/obj/machinery/particle_accelerator/control_box/New()
+/obj/machinery/particle_accelerator/control_box/Initialize()
wires = new(src)
connected_parts = list()
active_power_usage = initial(active_power_usage) * (strength + 1)
- ..()
+ . = ..()
/obj/machinery/particle_accelerator/control_box/Destroy()
if(active)
diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm
index ab6068adffa..c84291ed84d 100644
--- a/code/modules/power/smes.dm
+++ b/code/modules/power/smes.dm
@@ -78,6 +78,7 @@
QDEL_NULL(big_spark)
QDEL_NULL(small_spark)
SSpower.smes_units -= src
+ QDEL_NULL(terminal)
return ..() // TODO: Properly clean up terminal.
/obj/machinery/power/smes/Initialize()
diff --git a/code/modules/power/smes_construction.dm b/code/modules/power/smes_construction.dm
index 52802d6916d..53973a903f2 100644
--- a/code/modules/power/smes_construction.dm
+++ b/code/modules/power/smes_construction.dm
@@ -106,7 +106,7 @@
// Proc: New()
// Parameters: None
// Description: Adds standard components for this SMES, and forces recalculation of properties.
-/obj/machinery/power/smes/buildable/New(var/install_coils = 1)
+/obj/machinery/power/smes/buildable/Initialize(mapload, install_coils = 1)
component_parts = list()
component_parts += new /obj/item/stack/cable_coil(src,30)
component_parts += new /obj/item/weapon/circuitboard/smes(src)
@@ -120,7 +120,7 @@
SSmachinery.queue_rcon_update()
- ..()
+ . = ..()
// Proc: attack_hand()
// Parameters: None
diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm
index 32cf9c37a2f..4a86d902235 100644
--- a/code/modules/power/tesla/coil.dm
+++ b/code/modules/power/tesla/coil.dm
@@ -8,8 +8,8 @@
var/power_loss = 2
var/input_power_multiplier = 1
-/obj/machinery/power/tesla_coil/New()
- ..()
+/obj/machinery/power/tesla_coil/Initialize()
+ . = ..()
component_parts = list()
// component_parts += new /obj/item/weapon/circuitboard/tesla_coil(null)
component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
@@ -62,8 +62,8 @@
anchored = 0
density = 1
-/obj/machinery/power/grounding_rod/New()
- ..()
+/obj/machinery/power/grounding_rod/Initialize()
+ . = ..()
component_parts = list()
// component_parts += new /obj/item/weapon/circuitboard/grounding_rod(null)
component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index faf2ebea015..0b5015b9584 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -566,10 +566,9 @@
/obj/item/stack/material/mhydrogen = "hydrazine" //doesn't really make much sense but thank Bay
)
-/obj/machinery/reagentgrinder/New()
- ..()
+/obj/machinery/reagentgrinder/Initialize()
+ . = ..()
beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
- return
/obj/machinery/reagentgrinder/update_icon()
icon_state = "juicer"+num2text(!isnull(beaker))
diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm
index 4a592d324dd..f61d27fa5cb 100644
--- a/code/modules/research/message_server.dm
+++ b/code/modules/research/message_server.dm
@@ -176,7 +176,8 @@ var/obj/machinery/blackbox_recorder/blackbox
// Note: actual logging has been moved to SSfeedback.
//Only one can exist in the world!
-/obj/machinery/blackbox_recorder/New()
+/obj/machinery/blackbox_recorder/Initialize()
+ . = ..()
if(blackbox)
if(istype(blackbox,/obj/machinery/blackbox_recorder))
qdel(src)
diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm b/code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm
index e91ab5bce6b..51a3ad9d1e2 100644
--- a/code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm
+++ b/code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm
@@ -15,8 +15,8 @@
active_power_usage = 2000
idle_power_usage = 1000
-/obj/machinery/auto_cloner/New()
- ..()
+/obj/machinery/auto_cloner/Initialize()
+ . = ..()
time_per_spawn = rand(1200,3600)
diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm b/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm
index 92b630baf65..559d07a5747 100644
--- a/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm
+++ b/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm
@@ -20,8 +20,8 @@
var/fail_message
-/obj/machinery/replicator/New()
- ..()
+/obj/machinery/replicator/Initialize()
+ . = ..()
var/list/viables = list(\
/obj/item/roller,\
diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm b/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm
index 27a68f23ecb..0e6c0172385 100644
--- a/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm
+++ b/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm
@@ -30,8 +30,8 @@
var/datum/artifact_effect/secondary_effect
var/being_used = 0
-/obj/machinery/artifact/New()
- ..()
+/obj/machinery/artifact/Initialize()
+ . = ..()
//setup primary effect - these are the main ones (mixed)
var/effecttype = pick(typesof(/datum/artifact_effect) - /datum/artifact_effect)
diff --git a/code/modules/research/xenoarchaeology/finds/finds_misc.dm b/code/modules/research/xenoarchaeology/finds/finds_misc.dm
index 03071c760b1..ca04405b56c 100644
--- a/code/modules/research/xenoarchaeology/finds/finds_misc.dm
+++ b/code/modules/research/xenoarchaeology/finds/finds_misc.dm
@@ -7,6 +7,7 @@
icon = 'icons/obj/mining.dmi'
icon_state = "crystal"
-/obj/machinery/crystal/New()
+/obj/machinery/crystal/Initialize()
+ . = ..()
if(prob(50))
icon_state = "crystal2"
diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_analyser.dm b/code/modules/research/xenoarchaeology/machinery/artifact_analyser.dm
index fe6f8ad936b..91b08edd5ef 100644
--- a/code/modules/research/xenoarchaeology/machinery/artifact_analyser.dm
+++ b/code/modules/research/xenoarchaeology/machinery/artifact_analyser.dm
@@ -15,8 +15,8 @@
var/obj/scanned_object
var/report_num = 0
-/obj/machinery/artifact_analyser/New()
- ..()
+/obj/machinery/artifact_analyser/Initialize()
+ . = ..()
reconnect_scanner()
/obj/machinery/artifact_analyser/proc/reconnect_scanner()
diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm
index fe123309ebb..649eb23c1dd 100644
--- a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm
+++ b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm
@@ -14,8 +14,8 @@
var/obj/machinery/artifact_scanpad/owned_scanner = null
var/last_process = 0
-/obj/machinery/artifact_harvester/New()
- ..()
+/obj/machinery/artifact_harvester/Initialize()
+ . = ..()
//connect to a nearby scanner pad
owned_scanner = locate(/obj/machinery/artifact_scanpad) in get_step(src, dir)
if(!owned_scanner)
diff --git a/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm b/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm
index 2dec37db23d..f0016a2525a 100644
--- a/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm
+++ b/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm
@@ -45,8 +45,8 @@
var/t_left_radspike = 0
var/rad_shield = 0
-/obj/machinery/radiocarbon_spectrometer/New()
- ..()
+/obj/machinery/radiocarbon_spectrometer/Initialize()
+ . = ..()
create_reagents(500)
coolant_reagents_purity["water"] = 0.5
coolant_reagents_purity["icecoffee"] = 0.6
diff --git a/code/modules/research/xenoarchaeology/tools/suspension_generator.dm b/code/modules/research/xenoarchaeology/tools/suspension_generator.dm
index 1bba8c03f4f..0c0254381d3 100644
--- a/code/modules/research/xenoarchaeology/tools/suspension_generator.dm
+++ b/code/modules/research/xenoarchaeology/tools/suspension_generator.dm
@@ -15,9 +15,9 @@
var/obj/effect/suspension_field/suspension_field
var/list/secured_mobs = list()
-/obj/machinery/suspension_gen/New()
- src.cell = new/obj/item/weapon/cell/high(src)
- ..()
+/obj/machinery/suspension_gen/Initialize()
+ . = ..()
+ cell = new/obj/item/weapon/cell/high(src)
/obj/machinery/suspension_gen/machinery_process()
set background = 1
diff --git a/code/modules/shieldgen/shield_capacitor.dm b/code/modules/shieldgen/shield_capacitor.dm
index 6eb928c4335..94e815a37da 100644
--- a/code/modules/shieldgen/shield_capacitor.dm
+++ b/code/modules/shieldgen/shield_capacitor.dm
@@ -19,13 +19,15 @@
var/charge_rate = 100000 //100 kW
var/obj/machinery/shield_gen/owned_gen
-/obj/machinery/shield_capacitor/New()
- spawn(10)
- for(var/obj/machinery/shield_gen/possible_gen in range(1, src))
- if(get_dir(src, possible_gen) == src.dir)
- possible_gen.owned_capacitor = src
- break
+/obj/machinery/shield_capacitor/Initialize()
..()
+ return INITIALIZE_HINT_LATELOAD
+
+/obj/machinery/shield_capacitor/LateInitialize()
+ for(var/obj/machinery/shield_gen/possible_gen in range(1, src))
+ if(get_dir(src, possible_gen) == src.dir)
+ possible_gen.owned_capacitor = src
+ break
/obj/machinery/shield_capacitor/emag_act(var/remaining_charges, var/mob/user)
if(prob(75))
diff --git a/code/modules/shieldgen/shield_gen_external.dm b/code/modules/shieldgen/shield_gen_external.dm
index 4264b8579b7..31acacaf5c9 100644
--- a/code/modules/shieldgen/shield_gen_external.dm
+++ b/code/modules/shieldgen/shield_gen_external.dm
@@ -4,9 +4,6 @@
/obj/machinery/shield_gen/external
name = "hull shield generator"
-/obj/machinery/shield_gen/external/New()
- ..()
-
//NOT MULTIZ COMPATIBLE
//Search for space turfs within range that are adjacent to a simulated turf.
/obj/machinery/shield_gen/external/get_shielded_turfs()
diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm
index 2e7822eee50..b1c9da7911d 100644
--- a/code/modules/supermatter/supermatter.dm
+++ b/code/modules/supermatter/supermatter.dm
@@ -92,7 +92,7 @@
var/debug = 0
-/obj/machinery/power/supermatter/New()
+/obj/machinery/power/supermatter/Initialize()
. = ..()
radio = new /obj/item/device/radio{channels=list("Engineering")}(src)