From a4545f8ded5e92a2d962e9d7a674136278e3dad6 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Sun, 27 Dec 2015 17:18:10 +0100 Subject: [PATCH] Scheduler, observation, and New() tweaks. Corrects a number of places where New() did not call ..(), and implements similar changes to attempt to ensure New()/initialize() complete running before qdel() runs. Cuts down on the number of created items during server start. --- code/controllers/Processes/scheduler.dm | 8 +- code/controllers/master_controller.dm | 3 +- code/datums/helper_datums/getrev.dm | 2 - code/datums/mind.dm | 2 +- code/datums/observation/observation.dm | 11 ++- code/defines/obj/weapon.dm | 9 ++- code/game/atoms_movable.dm | 5 +- code/game/gamemodes/events/dust.dm | 1 + code/game/gamemodes/objective.dm | 1 + code/game/machinery/autolathe_datums.dm | 2 +- code/game/machinery/cloning.dm | 2 + .../game/machinery/computer/camera_circuit.dm | 1 + code/game/machinery/computer3/file.dm | 1 + code/game/machinery/machinery.dm | 2 +- code/game/machinery/vending.dm | 3 +- code/game/objects/effects/effect_system.dm | 2 - code/game/objects/effects/landmarks.dm | 79 +++++++++++-------- .../items/devices/radio/encryptionkey.dm | 3 - .../objects/items/weapons/extinguisher.dm | 1 + code/game/objects/items/weapons/tools.dm | 7 +- code/game/objects/random/random.dm | 4 +- .../crates_lockers/closets/utility_closets.dm | 13 +-- code/game/objects/structures/lattice.dm | 2 +- code/game/objects/structures/mop_bucket.dm | 2 +- code/modules/projectiles/ammunition.dm | 1 + code/modules/research/designs.dm | 18 ++--- code/modules/tables/tables.dm | 5 +- code/world.dm | 5 ++ 28 files changed, 107 insertions(+), 88 deletions(-) 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