diff --git a/code/controllers/Processes/scheduler.dm b/code/controllers/Processes/scheduler.dm
index a79fb6c46a4..aaccf2f00f1 100644
--- a/code/controllers/Processes/scheduler.dm
+++ b/code/controllers/Processes/scheduler.dm
@@ -1,4 +1,4 @@
-/var/global/datum/controller/process/scheduler/scheduler
+/var/datum/controller/process/scheduler/scheduler
/************
* Scheduler *
@@ -39,9 +39,12 @@
/**********
* Helpers *
**********/
-/proc/schedule_task_in(var/in_time, var/procedure, var/list/arguments)
+/proc/schedule_task_in(var/in_time, var/procedure, var/list/arguments = list())
schedule_task(world.time + in_time, procedure, arguments)
+/proc/schedule_task_with_source_in(var/in_time, var/source, var/procedure, var/list/arguments = list())
+ schedule_task_with_source(world.time + in_time, source, procedure, arguments)
+
/proc/schedule_task(var/trigger_time, var/procedure, var/list/arguments)
var/datum/scheduled_task/st = new/datum/scheduled_task(trigger_time, procedure, arguments, /proc/destroy_scheduled_task, list())
scheduler.schedule(st)
@@ -69,6 +72,7 @@
var/list/task_after_process_args
/datum/scheduled_task/New(var/trigger_time, var/procedure, var/list/arguments, var/proc/task_after_process, var/list/task_after_process_args)
+ ..()
src.trigger_time = trigger_time
src.procedure = procedure
src.arguments = arguments ? arguments : list()
diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm
index 5263e1af79d..682b0fb3d03 100644
--- a/code/controllers/master_controller.dm
+++ b/code/controllers/master_controller.dm
@@ -47,7 +47,8 @@ datum/controller/game_controller/proc/setup_objects()
admin_notice("Initializing objects", R_DEBUG)
sleep(-1)
for(var/atom/movable/object in world)
- object.initialize()
+ if(isnull(object.gcDestroyed))
+ object.initialize()
admin_notice("Initializing areas", R_DEBUG)
sleep(-1)
diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm
index 5d6400886ec..c358f4ca214 100644
--- a/code/datums/helper_datums/getrev.dm
+++ b/code/datums/helper_datums/getrev.dm
@@ -28,7 +28,6 @@ var/global/datum/getrev/revdata = new()
world.log << branch
world.log << date
world.log << revision
- return
client/verb/showrevinfo()
set category = "OOC"
@@ -43,4 +42,3 @@ client/verb/showrevinfo()
src << revdata.revision
else
src << "Revision unknown"
- return
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index f952c5106eb..385b5878cba 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -63,7 +63,7 @@
/datum/mind/New(var/key)
src.key = key
-
+ ..()
/datum/mind/proc/transfer_to(mob/living/new_character)
if(!istype(new_character))
diff --git a/code/datums/observation/observation.dm b/code/datums/observation/observation.dm
index 753652a24ff..267afcd6707 100644
--- a/code/datums/observation/observation.dm
+++ b/code/datums/observation/observation.dm
@@ -9,13 +9,15 @@
return ..()
/datum/observ/proc/register(var/datum/procOwner, var/proc_call)
+ if(!(procOwner && procOwner.destruction))
+ return
if(!listeners)
listeners = list()
listeners[procOwner] = proc_call
procOwner.destruction.register(src, /datum/observ/proc/unregister)
/datum/observ/proc/unregister(var/datum/procOwner)
- if(!listeners)
+ if(!(listeners && procOwner && procOwner.destruction))
return
listeners -= procOwner
procOwner.destruction.unregister(src)
@@ -37,7 +39,6 @@
..()
/datum/Destroy()
- destruction.raise_event(list(src))
destroy_observers()
return ..()
@@ -45,12 +46,18 @@
destruction = new()
/datum/proc/destroy_observers()
+ if(!destruction)
+ return FALSE
+
+ destruction.raise_event(list(src))
qdel(destruction)
destruction = null
+ return TRUE
// This ensures that observer handlers don't create their own observer handlers, which create their own handlers, which create...
/datum/observ/init_observers()
return
+// And this ensures that observer handlers don't attempt to notify others about their own death while being unable to.
/datum/observ/destroy_observers()
return
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index ee6bdd5bdab..7f4f06f46e0 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -44,6 +44,7 @@
/obj/item/weapon/soap/deluxe/New()
desc = "A deluxe Waffle Co. brand bar of soap. Smells of [pick("lavender", "vanilla", "strawberry", "chocolate" ,"space")]."
+ ..()
/obj/item/weapon/soap/syndie
desc = "An untrustworthy bar of soap. Smells of fear."
@@ -395,9 +396,11 @@
icon = 'icons/obj/stock_parts.dmi'
w_class = 2.0
var/rating = 1
- New()
- src.pixel_x = rand(-5.0, 5)
- src.pixel_y = rand(-5.0, 5)
+
+/obj/item/weapon/stock_parts/New()
+ src.pixel_x = rand(-5.0, 5)
+ src.pixel_y = rand(-5.0, 5)
+ ..()
//Rank 1
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 07b2edc0a8e..f8d2f3493f8 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -45,7 +45,8 @@
pulledby = null
/atom/movable/proc/initialize()
- return
+ if(!isnull(gcDestroyed))
+ crash_with("GC: -- [type] had initialize() called after qdel() --")
/atom/movable/Bump(var/atom/A, yes)
if(src.throwing)
@@ -210,7 +211,7 @@
/atom/movable/overlay/New()
for(var/x in src.verbs)
src.verbs -= x
- return
+ ..()
/atom/movable/overlay/attackby(a, b)
if (src.master)
diff --git a/code/game/gamemodes/events/dust.dm b/code/game/gamemodes/events/dust.dm
index 492b932e462..bb8e34364cb 100644
--- a/code/game/gamemodes/events/dust.dm
+++ b/code/game/gamemodes/events/dust.dm
@@ -53,6 +53,7 @@ The "dust" will damage the hull of the station causin minor hull breaches.
New()
+ ..()
var/startx = 0
var/starty = 0
var/endy = 0
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index ed7c6ac8717..24df65f0a97 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -12,6 +12,7 @@ datum/objective
all_objectives |= src
if(text)
explanation_text = text
+ ..()
Destroy()
all_objectives -= src
diff --git a/code/game/machinery/autolathe_datums.dm b/code/game/machinery/autolathe_datums.dm
index a29f6ab08c0..ddd5494b063 100644
--- a/code/game/machinery/autolathe_datums.dm
+++ b/code/game/machinery/autolathe_datums.dm
@@ -16,7 +16,7 @@
recipe.resources = list()
for(var/material in I.matter)
recipe.resources[material] = I.matter[material]*1.25 // More expensive to produce than they are to recycle.
- qdel(I)
+ qdel(I)
/datum/autolathe/recipe
var/name = "object"
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 96cfa5babbe..e770e903efa 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -409,6 +409,7 @@
read_only = 1
New()
+ ..()
initializeDisk()
buf.types=DNA2_BUF_UE|DNA2_BUF_UI
//data = "066000033000000000AF00330660FF4DB002690"
@@ -424,6 +425,7 @@
read_only = 1
New()
+ ..()
initializeDisk()
buf.types=DNA2_BUF_SE
var/list/new_SE=list(0x098,0x3E8,0x403,0x44C,0x39F,0x4B0,0x59D,0x514,0x5FC,0x578,0x5DC,0x640,0x6A4)
diff --git a/code/game/machinery/computer/camera_circuit.dm b/code/game/machinery/computer/camera_circuit.dm
index 4680bb57d1d..8db87c36ae7 100644
--- a/code/game/machinery/computer/camera_circuit.dm
+++ b/code/game/machinery/computer/camera_circuit.dm
@@ -17,6 +17,7 @@
possibleNets["Cargo"] = access_qm
possibleNets["Research"] = access_rd
possibleNets["Medbay"] = access_cmo
+ ..()
proc/updateBuildPath()
build_path = null
diff --git a/code/game/machinery/computer3/file.dm b/code/game/machinery/computer3/file.dm
index b1fbe0ddbe5..be4285b3e18 100644
--- a/code/game/machinery/computer3/file.dm
+++ b/code/game/machinery/computer3/file.dm
@@ -100,6 +100,7 @@
if(content)
if(file_increment > 1)
volume = round(file_increment * length(content))
+ ..()
/*
A generic file that contains text
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index a56e6092950..81e4258cb60 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -134,7 +134,7 @@ Class Procs:
if(contents) // The same for contents.
for(var/atom/A in contents)
qdel(A)
- ..()
+ return ..()
/obj/machinery/process()//If you dont use process or power why are you here
if(!(use_power || idle_power_usage || active_power_usage))
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 62f594199da..d5016bacd3c 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -19,9 +19,8 @@
src.product_path = path
if(!name)
- var/atom/tmp = new path
+ var/atom/tmp = path
src.product_name = initial(tmp.name)
- qdel(tmp)
else
src.product_name = name
diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm
index f6508724e0c..02902075e13 100644
--- a/code/game/objects/effects/effect_system.dm
+++ b/code/game/objects/effects/effect_system.dm
@@ -123,7 +123,6 @@ steam.start() -- spawns the effect
var/turf/T = src.loc
if (istype(T, /turf))
T.hotspot_expose(1000,100)
- return
/datum/effect/effect/system/spark_spread
var/total_sparks = 0 // To stop it being spammed and lagging!
@@ -188,7 +187,6 @@ steam.start() -- spawns the effect
..()
spawn (time_to_live)
qdel(src)
- return
/obj/effect/effect/smoke/Crossed(mob/living/carbon/M as mob )
..()
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index ed518a6f53d..f60e02254bc 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -5,6 +5,7 @@
anchored = 1.0
unacidable = 1
simulated = 0
+ var/delete_me = 0
/obj/effect/landmark/New()
..()
@@ -14,29 +15,31 @@
switch(name) //some of these are probably obsolete
if("monkey")
monkeystart += loc
- qdel(src)
+ delete_me = 1
return
if("start")
newplayer_start += loc
- qdel(src)
+ delete_me = 1
+ return
if("JoinLate")
latejoin += loc
- qdel(src)
+ delete_me = 1
+ return
if("JoinLateGateway")
latejoin_gateway += loc
- qdel(src)
+ delete_me = 1
return
if("JoinLateCryo")
latejoin_cryo += loc
- qdel(src)
+ delete_me = 1
return
if("JoinLateCyborg")
latejoin_cyborg += loc
- qdel(src)
+ delete_me = 1
return
if("prisonwarp")
prisonwarp += loc
- qdel(src)
+ delete_me = 1
return
if("Holding Facility")
holdingfacility += loc
@@ -50,24 +53,32 @@
tdomeobserve += loc
if("prisonsecuritywarp")
prisonsecuritywarp += loc
- qdel(src)
+ delete_me = 1
return
if("xeno_spawn")
xeno_spawn += loc
- qdel(src)
+ delete_me = 1
return
if("endgame_exit")
endgame_safespawns += loc
- qdel(src)
+ delete_me = 1
return
if("bluespacerift")
endgame_exits += loc
- qdel(src)
+ delete_me = 1
return
landmarks_list += src
return 1
+/obj/effect/landmark/proc/delete()
+ delete_me = 1
+
+/obj/effect/landmark/initialize()
+ ..()
+ if(delete_me)
+ qdel(src)
+
/obj/effect/landmark/Destroy()
landmarks_list -= src
return ..()
@@ -91,51 +102,51 @@
var/list/options = typesof(/obj/effect/landmark/costume)
var/PICK= options[rand(1,options.len)]
new PICK(src.loc)
- qdel(src)
+ delete_me = 1
//SUBCLASSES. Spawn a bunch of items and disappear likewise
/obj/effect/landmark/costume/chicken/New()
new /obj/item/clothing/suit/chickensuit(src.loc)
new /obj/item/clothing/head/chicken(src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/egg(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/gladiator/New()
new /obj/item/clothing/under/gladiator(src.loc)
new /obj/item/clothing/head/helmet/gladiator(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/madscientist/New()
new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
new /obj/item/clothing/head/flatcap(src.loc)
new /obj/item/clothing/suit/storage/toggle/labcoat/mad(src.loc)
new /obj/item/clothing/glasses/gglasses(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/elpresidente/New()
new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
new /obj/item/clothing/head/flatcap(src.loc)
new /obj/item/clothing/mask/smokable/cigarette/cigar/havana(src.loc)
new /obj/item/clothing/shoes/jackboots(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/nyangirl/New()
new /obj/item/clothing/under/schoolgirl(src.loc)
new /obj/item/clothing/head/kitty(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/maid/New()
new /obj/item/clothing/under/blackskirt(src.loc)
var/CHOICE = pick( /obj/item/clothing/head/beret , /obj/item/clothing/head/rabbitears )
new CHOICE(src.loc)
new /obj/item/clothing/glasses/sunglasses/blindfold(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/butler/New()
new /obj/item/clothing/suit/wcoat(src.loc)
new /obj/item/clothing/under/suit_jacket(src.loc)
new /obj/item/clothing/head/that(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/scratch/New()
new /obj/item/clothing/gloves/white(src.loc)
@@ -143,12 +154,12 @@
new /obj/item/clothing/under/scratch(src.loc)
if (prob(30))
new /obj/item/clothing/head/cueball(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/highlander/New()
new /obj/item/clothing/under/kilt(src.loc)
new /obj/item/clothing/head/beret(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/prig/New()
new /obj/item/clothing/suit/wcoat(src.loc)
@@ -159,24 +170,24 @@
new /obj/item/weapon/cane(src.loc)
new /obj/item/clothing/under/sl_suit(src.loc)
new /obj/item/clothing/mask/fakemoustache(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/plaguedoctor/New()
new /obj/item/clothing/suit/bio_suit/plaguedoctorsuit(src.loc)
new /obj/item/clothing/head/plaguedoctorhat(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/nightowl/New()
new /obj/item/clothing/under/owl(src.loc)
new /obj/item/clothing/mask/gas/owl_mask(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/waiter/New()
new /obj/item/clothing/under/waiter(src.loc)
var/CHOICE= pick( /obj/item/clothing/head/kitty, /obj/item/clothing/head/rabbitears)
new CHOICE(src.loc)
new /obj/item/clothing/suit/apron(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/pirate/New()
new /obj/item/clothing/under/pirate(src.loc)
@@ -184,46 +195,46 @@
var/CHOICE = pick( /obj/item/clothing/head/pirate , /obj/item/clothing/head/bandana )
new CHOICE(src.loc)
new /obj/item/clothing/glasses/eyepatch(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/commie/New()
new /obj/item/clothing/under/soviet(src.loc)
new /obj/item/clothing/head/ushanka(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/imperium_monk/New()
new /obj/item/clothing/suit/imperium_monk(src.loc)
if (prob(25))
new /obj/item/clothing/mask/gas/cyborg(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/holiday_priest/New()
new /obj/item/clothing/suit/holidaypriest(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/marisawizard/fake/New()
new /obj/item/clothing/head/wizard/marisa/fake(src.loc)
new/obj/item/clothing/suit/wizrobe/marisa/fake(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/cutewitch/New()
new /obj/item/clothing/under/sundress(src.loc)
new /obj/item/clothing/head/witchwig(src.loc)
new /obj/item/weapon/staff/broom(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/fakewizard/New()
new /obj/item/clothing/suit/wizrobe/fake(src.loc)
new /obj/item/clothing/head/wizard/fake(src.loc)
new /obj/item/weapon/staff/(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/sexyclown/New()
new /obj/item/clothing/mask/gas/sexyclown(src.loc)
new /obj/item/clothing/under/sexyclown(src.loc)
- qdel(src)
+ delete_me = 1
/obj/effect/landmark/costume/sexymime/New()
new /obj/item/clothing/mask/gas/sexymime(src.loc)
new /obj/item/clothing/under/sexymime(src.loc)
- qdel(src)
\ No newline at end of file
+ delete_me = 1
diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm
index 2bab5e7d5d0..254d7638a6f 100644
--- a/code/game/objects/items/devices/radio/encryptionkey.dm
+++ b/code/game/objects/items/devices/radio/encryptionkey.dm
@@ -12,9 +12,6 @@
var/syndie = 0
var/list/channels = list()
-
-/obj/item/device/encryptionkey/New()
-
/obj/item/device/encryptionkey/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/device/encryptionkey/syndicate
diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm
index aa7f6df8e46..b9a605c6cb2 100644
--- a/code/game/objects/items/weapons/extinguisher.dm
+++ b/code/game/objects/items/weapons/extinguisher.dm
@@ -37,6 +37,7 @@
/obj/item/weapon/extinguisher/New()
create_reagents(max_water)
reagents.add_reagent("water", max_water)
+ ..()
/obj/item/weapon/extinguisher/examine(mob/user)
if(..(user, 0))
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index a8495a92d69..3a047b02504 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -73,7 +73,7 @@
if (prob(75))
src.pixel_y = rand(0, 16)
- return
+ ..()
/obj/item/weapon/screwdriver/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M) || user.a_intent == "help")
@@ -108,6 +108,7 @@
if(prob(50))
icon_state = "cutters-y"
item_state = "cutters_yellow"
+ ..()
/obj/item/weapon/wirecutters/attack(mob/living/carbon/C as mob, mob/user as mob)
if(user.a_intent == I_HELP && (C.handcuffed) && (istype(C.handcuffed, /obj/item/weapon/handcuffs/cable)))
@@ -156,12 +157,12 @@
reagents = R
R.my_atom = src
R.add_reagent("fuel", max_fuel)
- return
+ ..()
/obj/item/weapon/weldingtool/Destroy()
if(welding)
processing_objects -= src
- ..()
+ return ..()
/obj/item/weapon/weldingtool/examine(mob/user)
if(..(user, 0))
diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm
index e64d422a205..e084600e8f7 100644
--- a/code/game/objects/random/random.dm
+++ b/code/game/objects/random/random.dm
@@ -11,9 +11,11 @@
..()
if (!prob(spawn_nothing_percentage))
spawn_item()
+
+/obj/random/initialize()
+ ..()
qdel(src)
-
// this function should return a specific item to spawn
/obj/random/proc/item_to_spawn()
return 0
diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
index 31f8115b910..714be281b89 100644
--- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
@@ -22,7 +22,7 @@
/obj/structure/closet/emcloset/New()
..()
- switch (pickweight(list("small" = 55, "aid" = 25, "tank" = 10, "both" = 10, "nothing" = 0, "delete" = 0)))
+ switch (pickweight(list("small" = 55, "aid" = 25, "tank" = 10, "both" = 10)))
if ("small")
new /obj/item/weapon/tank/emergency_oxygen(src)
new /obj/item/weapon/tank/emergency_oxygen(src)
@@ -51,17 +51,6 @@
new /obj/item/clothing/suit/space/emergency(src)
new /obj/item/clothing/head/helmet/space/emergency(src)
new /obj/item/clothing/head/helmet/space/emergency(src)
- if ("nothing")
- // doot
-
- // teehee - Ah, tg coders...
- if ("delete")
- qdel(src)
-
- //If you want to re-add fire, just add "fire" = 15 to the pick list.
- /*if ("fire")
- new /obj/structure/closet/firecloset(src.loc)
- qdel(src)*/
/obj/structure/closet/emcloset/legacy/New()
..()
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
index 13b990af1cf..e08a5cee614 100644
--- a/code/game/objects/structures/lattice.dm
+++ b/code/game/objects/structures/lattice.dm
@@ -9,7 +9,7 @@
layer = 2.3 //under pipes
// flags = CONDUCT
-/obj/structure/lattice/New()
+/obj/structure/lattice/initialize()
..()
///// Z-Level Stuff
if(!(istype(src.loc, /turf/space) || istype(src.loc, /turf/simulated/open)))
diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm
index 1624a4bbde7..c76ca1802d6 100644
--- a/code/game/objects/structures/mop_bucket.dm
+++ b/code/game/objects/structures/mop_bucket.dm
@@ -12,7 +12,7 @@
/obj/structure/mopbucket/New()
create_reagents(100)
-
+ ..()
/obj/structure/mopbucket/examine(mob/user)
if(..(user, 1))
diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm
index 219ebff1410..3f5598f6478 100644
--- a/code/modules/projectiles/ammunition.dm
+++ b/code/modules/projectiles/ammunition.dm
@@ -88,6 +88,7 @@
var/list/ammo_states = list() //values
/obj/item/ammo_magazine/New()
+ ..()
if(multiple_sprites)
initialize_magazine_icondata(src)
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index 2395708dd9d..d1f7dd3051a 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -727,17 +727,13 @@ CIRCUITS BELOW
/datum/design/circuit/AssembleDesignName()
..()
if(build_path)
- var/obj/item/weapon/circuitboard/C = new build_path()
- if(C && istype(C))
- if(C.board_type == "machine")
- name = "Machine circuit design ([item_name])"
- qdel(C)
- return
- else if(C.board_type == "computer")
- name = "Computer circuit design ([item_name])"
- qdel(C)
- return
- name = "Circuit design ([item_name])"
+ var/obj/item/weapon/circuitboard/C = build_path
+ if(initial(C.board_type) == "machine")
+ name = "Machine circuit design ([item_name])"
+ else if(initial(C.board_type) == "computer")
+ name = "Computer circuit design ([item_name])"
+ else
+ name = "Circuit design ([item_name])"
/datum/design/circuit/AssembleDesignDesc()
if(!desc)
diff --git a/code/modules/tables/tables.dm b/code/modules/tables/tables.dm
index 1c6a9ca06d7..af712e75e48 100644
--- a/code/modules/tables/tables.dm
+++ b/code/modules/tables/tables.dm
@@ -51,8 +51,9 @@
visible_message("\The [src] breaks down!")
return break_to_parts() // if we break and form shards, return them to the caller to do !FUN! things with
-/obj/structure/table/New()
+/obj/structure/table/initialize()
..()
+
// One table per turf.
for(var/obj/structure/table/T in loc)
if(T != src)
@@ -61,8 +62,6 @@
break_to_parts(full_return = 1)
return
-/obj/structure/table/initialize()
- ..()
// reset color/alpha, since they're set for nice map previews
color = "#ffffff"
alpha = 255
diff --git a/code/world.dm b/code/world.dm
index 9bc5ab52d9b..469bd055efa 100644
--- a/code/world.dm
+++ b/code/world.dm
@@ -24,6 +24,11 @@ var/global/datum/global_init/init = new ()
qdel(src) //we're done
+/datum/global_init/init_observers()
+ return
+
+/datum/global_init/destroy_observers()
+ return
/world
mob = /mob/new_player