diff --git a/code/controllers/subsystems/overlays.dm b/code/controllers/subsystems/overlays.dm index 60b08c71d2c..77c9d3ab94a 100644 --- a/code/controllers/subsystems/overlays.dm +++ b/code/controllers/subsystems/overlays.dm @@ -5,7 +5,6 @@ SUBSYSTEM_DEF(overlays) priority = FIRE_PRIORITY_OVERLAYS init_order = INIT_ORDER_OVERLAY - var/initialized = FALSE var/list/queue // Queue of atoms needing overlay compiling (TODO-VERIFY!) var/list/stats var/list/overlay_icon_state_caches // Cache thing @@ -22,7 +21,6 @@ var/global/image/appearance_bro = new() // Temporarily super-global because of B stats = list() /datum/controller/subsystem/overlays/Initialize() - initialized = TRUE fire(mc_check = FALSE) ..() diff --git a/code/controllers/subsystems/processing/chemistry.dm b/code/controllers/subsystems/processing/chemistry.dm index 7f4fd9c42b6..b4641ba7e00 100644 --- a/code/controllers/subsystems/processing/chemistry.dm +++ b/code/controllers/subsystems/processing/chemistry.dm @@ -22,6 +22,7 @@ PROCESSING_SUBSYSTEM_DEF(chemistry) /datum/controller/subsystem/processing/chemistry/Initialize() initialize_chemical_reactions() initialize_chemical_reagents() + ..() //Chemical Reactions - Initialises all /datum/chemical_reaction into a list // It is filtered into multiple lists within a list. diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 157a3f113ff..82e5f1f78bd 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -513,8 +513,9 @@ //HUMAN /mob/living/carbon/human/mind_initialize() - ..() - if(!mind.assigned_role) mind.assigned_role = USELESS_JOB //defualt //VOREStation Edit - Visitor not Assistant + . = ..() + if(!mind.assigned_role) + mind.assigned_role = USELESS_JOB //defualt //VOREStation Edit - Visitor not Assistant //slime /mob/living/simple_mob/slime/mind_initialize() diff --git a/code/datums/roundstats/departmentgoal.dm b/code/datums/roundstats/departmentgoal.dm index b0aa69784c6..333e6c03963 100644 --- a/code/datums/roundstats/departmentgoal.dm +++ b/code/datums/roundstats/departmentgoal.dm @@ -35,6 +35,7 @@ GLOBAL_LIST(active_department_goals) cat_goals -= G GLOB.active_department_goals[category] |= G + return 1 /hook/roundend/proc/checkDepartmentGoals() for(var/category in GLOB.active_department_goals) @@ -50,6 +51,7 @@ GLOBAL_LIST(active_department_goals) var/success = G.check_completion() to_world("[success ? "[G.name]" : "[G.name]"]") to_world("[G.goal_text]") + return 1 /datum/goal var/name = "goal" diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index b5f9ac3a2fb..9c8bbccc798 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -54,10 +54,8 @@ /area/Initialize() . = ..() - luminosity = !(dynamic_lighting) icon_state = "" - return INITIALIZE_HINT_LATELOAD // Areas tradiationally are initialized AFTER other atoms. /area/LateInitialize() @@ -68,7 +66,6 @@ power_change() // all machines set to current power level, also updates lighting icon if(no_spoilers) set_spoiler_obfuscation(TRUE) - return INITIALIZE_HINT_LATELOAD // Changes the area of T to A. Do not do this manually. // Area is expected to be a non-null instance. diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index bbf4bfb3437..241d6132756 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -34,7 +34,7 @@ var/last_activation = 0 /obj/structure/cult/pylon/Initialize() - ..() + . = ..() START_PROCESSING(SSobj, src) /obj/structure/cult/pylon/attack_hand(mob/M as mob) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index a97fbf986f7..e0ff3a6086c 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -529,5 +529,5 @@ stasis_level = 100 //Just one setting /obj/machinery/sleeper/survival_pod/Initialize() - ..() + . = ..() RefreshParts(1) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 7ff97c83e85..25299dcda8c 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -1,4 +1,4 @@ -/obj/machinery/computer/arcade/ +/obj/machinery/computer/arcade name = "random arcade" desc = "random arcade machine" icon_state = "arcade" @@ -25,15 +25,15 @@ /obj/item/toy/stickhorse = 2 ) -/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/arcade) - /obj/item/weapon/circuitboard/arcade/clawmachine) var/obj/item/weapon/circuitboard/CB = new choice() new CB.build_path(loc, CB) - qdel(src) + return INITIALIZE_HINT_QDEL /obj/machinery/computer/arcade/proc/prizevend() if(!(contents-circuit).len) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index cc05d632176..8d4202d4213 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -26,7 +26,7 @@ light_color = "#315ab4" /obj/machinery/computer/cloning/Initialize() - ..() + . = ..() pods = list() records = list() set_scan_temp("Scanner ready.", "good") diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index adf53c80a8e..680ce44345f 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -29,7 +29,7 @@ /obj/machinery/computer/med_data/Initialize() - ..() + . = ..() field_edit_questions = list( // General "sex" = "Please select new sex:", diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index 1caa7b61a4d..430b42591cf 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -335,7 +335,7 @@ name = "Monitor Decryption Key" /obj/item/weapon/paper/monitorkey/Initialize() - ..() //Late init + ..() return INITIALIZE_HINT_LATELOAD /obj/item/weapon/paper/monitorkey/LateInitialize() diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index dbd5ba8383f..5eae5e82d08 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -13,7 +13,7 @@ var/title = "Mass Driver Controls" /obj/machinery/computer/pod/Initialize() - ..() //Not returning parent because lateload + ..() return INITIALIZE_HINT_LATELOAD /obj/machinery/computer/pod/LateInitialize() diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 1fbd897113d..40a4d594cbd 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -25,7 +25,7 @@ var/static/list/field_edit_choices /obj/machinery/computer/secure_data/Initialize() - ..() + . = ..() field_edit_questions = list( // General "name" = "Please enter new name:", diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm index 47b9e8ce256..e11f404b165 100644 --- a/code/game/machinery/computer/skills.dm +++ b/code/game/machinery/computer/skills.dm @@ -30,7 +30,7 @@ var/static/list/field_edit_choices /obj/machinery/computer/skills/Initialize() - ..() + . = ..() field_edit_questions = list( // General "name" = "Please input new name:", diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index f4d9c900ed3..fdd526039b3 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -40,7 +40,6 @@ /obj/machinery/door_timer/Initialize() ..() - //Doors need to go first, and can't rely on init order, so come back to me. return INITIALIZE_HINT_LATELOAD /obj/machinery/door_timer/LateInitialize() diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index c23d02f4d01..a1798ea5e42 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -164,7 +164,7 @@ GLOBAL_LIST_BOILERPLATE(allCasters, /obj/machinery/newscaster) securityCaster = 1 /obj/machinery/newscaster/Initialize() - ..() //Not returning . because lateload below + ..() allCasters += src unit_no = ++unit_no_cur paper_remaining = 15 diff --git a/code/game/machinery/transportpod.dm b/code/game/machinery/transportpod.dm index 0b499096fea..4a43cb18904 100644 --- a/code/game/machinery/transportpod.dm +++ b/code/game/machinery/transportpod.dm @@ -32,7 +32,7 @@ sleep(2) go_out() sleep(2) - del(src) + qdel(src) /obj/machinery/transportpod/relaymove(mob/user as mob) if(user.stat) diff --git a/code/game/mecha/combat/gorilla.dm b/code/game/mecha/combat/gorilla.dm index 4052afe8e6a..fecb361f1a2 100644 --- a/code/game/mecha/combat/gorilla.dm +++ b/code/game/mecha/combat/gorilla.dm @@ -31,7 +31,7 @@ thrusters_possible = 1 /obj/mecha/combat/gorilla/Initialize() - ..() + . = ..() var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src) // This thing basically cannot function without an external power supply. ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon(src) diff --git a/code/game/mecha/combat/phazon.dm b/code/game/mecha/combat/phazon.dm index 3ae3e41e131..a1ea2ab4519 100644 --- a/code/game/mecha/combat/phazon.dm +++ b/code/game/mecha/combat/phazon.dm @@ -40,7 +40,7 @@ switch_dmg_type_possible = TRUE /obj/mecha/combat/phazon/equipped/Initialize() - ..() + . = ..() starting_equipment = list( /obj/item/mecha_parts/mecha_equipment/tool/rcd, /obj/item/mecha_parts/mecha_equipment/gravcatapult diff --git a/code/game/mecha/components/_component.dm b/code/game/mecha/components/_component.dm index aadf390c615..3d770e0dce0 100644 --- a/code/game/mecha/components/_component.dm +++ b/code/game/mecha/components/_component.dm @@ -43,7 +43,7 @@ . += "It is completely destroyed." /obj/item/mecha_parts/component/Initialize() - ..() + . = ..() integrity = max_integrity if(start_damaged) diff --git a/code/game/mecha/equipment/tools/inflatables.dm b/code/game/mecha/equipment/tools/inflatables.dm index b18ba2eae11..ff766577ded 100644 --- a/code/game/mecha/equipment/tools/inflatables.dm +++ b/code/game/mecha/equipment/tools/inflatables.dm @@ -14,7 +14,7 @@ var/obj/item/weapon/inflatable_dispenser/my_deployer = null /obj/item/mecha_parts/mecha_equipment/tool/powertool/inflatables/Initialize() - ..() + . = ..() my_deployer = my_tool /obj/item/mecha_parts/mecha_equipment/tool/powertool/inflatables/Topic(href, href_list) diff --git a/code/game/mecha/equipment/tools/syringe_gun.dm b/code/game/mecha/equipment/tools/syringe_gun.dm index 1658a01df6d..fd73d74fc2e 100644 --- a/code/game/mecha/equipment/tools/syringe_gun.dm +++ b/code/game/mecha/equipment/tools/syringe_gun.dm @@ -318,7 +318,7 @@ equip_type = EQUIP_HULL /obj/item/mecha_parts/mecha_equipment/crisis_drone/Initialize() - ..() + . = ..() drone_overlay = new(src.icon, icon_state = droid_state) /obj/item/mecha_parts/mecha_equipment/crisis_drone/Destroy() diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index bd2cf8460f0..60bb48c5f6b 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -198,7 +198,7 @@ var/weapons_only_cycle = FALSE //So combat mechs don't switch to their equipment at times. /obj/mecha/Initialize() - ..() + . = ..() for(var/path in starting_components) var/obj/item/mecha_parts/component/C = new path(src) diff --git a/code/game/mecha/medical/odysseus.dm b/code/game/mecha/medical/odysseus.dm index 4db6332cb10..316d39bacee 100644 --- a/code/game/mecha/medical/odysseus.dm +++ b/code/game/mecha/medical/odysseus.dm @@ -127,7 +127,7 @@ C.images += holder */ /obj/mecha/medical/odysseus/loaded/Initialize() - ..() + . = ..() var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/sleeper ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/tool/sleeper diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index def044c9bbc..4e92f757d27 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -70,7 +70,7 @@ max_special_equip = 1 /obj/mecha/working/ripley/deathripley/Initialize() - ..() + . = ..() var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp/safety ME.attach(src) return @@ -80,7 +80,7 @@ name = "APLU \"Miner\"" /obj/mecha/working/ripley/mining/Initialize() - ..() + . = ..() //Attach drill if(prob(25)) //Possible diamond drill... Feeling lucky? var/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill/D = new /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill diff --git a/code/game/objects/effects/chem/coating.dm b/code/game/objects/effects/chem/coating.dm index a777bbe5e05..2e9ad26049c 100644 --- a/code/game/objects/effects/chem/coating.dm +++ b/code/game/objects/effects/chem/coating.dm @@ -11,7 +11,7 @@ create_reagents(100) /obj/effect/decal/cleanable/chemcoating/Initialize() - ..() + . = ..() var/turf/T = get_turf(src) if(T) for(var/obj/O in get_turf(src)) diff --git a/code/game/objects/effects/decals/warning_stripes.dm b/code/game/objects/effects/decals/warning_stripes.dm index db7c4bf74f1..0e3d12897d8 100644 --- a/code/game/objects/effects/decals/warning_stripes.dm +++ b/code/game/objects/effects/decals/warning_stripes.dm @@ -1,10 +1,10 @@ /obj/effect/decal/warning_stripes icon = 'icons/effects/warning_stripes.dmi' -/obj/effect/decal/warning_stripes/New() +/obj/effect/decal/warning_stripes/Initialize() . = ..() var/turf/T=get_turf(src) var/image/I=image(icon, icon_state = icon_state, dir = dir) I.color=color T.overlays += I - qdel(src) + return INITIALIZE_HINT_QDEL diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index c5e1f26c615..c49a4e06665 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -10,32 +10,37 @@ var/obj/item/weapon/mine/mineitemtype = /obj/item/weapon/mine var/panel_open = 0 var/datum/wires/mines/wires = null - register_as_dangerous_object = TRUE - var/camo_net = FALSE // Will the mine 'cloak' on deployment? // The trap item will be triggered in some manner when detonating. Default only checks for grenades. var/obj/item/trap = null -/obj/effect/mine/New() +/obj/effect/mine/Initialize() icon_state = "uglyminearmed" wires = new(src) - + . = ..() if(ispath(trap)) trap = new trap(src) - -/obj/effect/mine/Initialize() - ..() - + register_dangerous_to_step() if(camo_net) alpha = 50 /obj/effect/mine/Destroy() + unregister_dangerous_to_step() if(trap) QDEL_NULL(trap) qdel_null(wires) return ..() +/obj/effect/mine/Moved(atom/oldloc) + . = ..() + if(.) + var/turf/old_turf = get_turf(oldloc) + var/turf/new_turf = get_turf(src) + if(old_turf != new_turf) + old_turf.unregister_dangerous_object(src) + new_turf.register_dangerous_object(src) + /obj/effect/mine/proc/explode(var/mob/living/M) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread() triggered = 1 diff --git a/code/game/objects/effects/prop/columnblast.dm b/code/game/objects/effects/prop/columnblast.dm index fc604235c82..ce0e4b2aadb 100644 --- a/code/game/objects/effects/prop/columnblast.dm +++ b/code/game/objects/effects/prop/columnblast.dm @@ -17,7 +17,7 @@ ..() /obj/effect/temporary_effect/eruption/Initialize() - ..() + . = ..() flick("[icon_state]_create",src) /obj/effect/temporary_effect/eruption/Destroy() diff --git a/code/game/objects/effects/spawners/bombspawner.dm b/code/game/objects/effects/spawners/bombspawner.dm index c848a2f1dfe..eb025f9ba40 100644 --- a/code/game/objects/effects/spawners/bombspawner.dm +++ b/code/game/objects/effects/spawners/bombspawner.dm @@ -159,7 +159,6 @@ /obj/effect/spawner/newbomb/Initialize(newloc) ..(newloc) - var/obj/item/device/transfer_valve/V = new(src.loc) var/obj/item/weapon/tank/phoron/PT = new(V) var/obj/item/weapon/tank/oxygen/OT = new(V) @@ -183,19 +182,14 @@ OT.air_contents.temperature = PHORON_MINIMUM_BURN_TEMPERATURE+1 OT.air_contents.update_values() - var/obj/item/device/assembly/S = new assembly_type(V) - - V.attached_device = S S.holder = V S.toggle_secure() V.update_icon() - - qdel(src) - + return INITIALIZE_HINT_QDEL /////////////////////// diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 2247674f60c..facc87ae64a 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -33,7 +33,7 @@ var/cell_type = /obj/item/weapon/cell/device /obj/item/device/flash/Initialize() - ..() + . = ..() power_supply = new cell_type(src) /obj/item/device/flash/attackby(var/obj/item/W, var/mob/user) diff --git a/code/game/objects/items/stacks/fifty_spawner.dm b/code/game/objects/items/stacks/fifty_spawner.dm index 81dfce96913..e3ba667703a 100644 --- a/code/game/objects/items/stacks/fifty_spawner.dm +++ b/code/game/objects/items/stacks/fifty_spawner.dm @@ -7,15 +7,12 @@ var/obj/item/stack/type_to_spawn = null /obj/fiftyspawner/Initialize() - ..() //We're not returning . because we're going to ask to be deleted. - + ..() var/turf/T = get_turf(src) - var/obj/item/stack/M = new type_to_spawn(T) + var/obj/structure/closet/C = locate() in T + var/obj/item/stack/M = new type_to_spawn(C || T) M.amount = M.max_amount //some stuff spawns with 60, we're still calling it fifty M.update_icon() // Some stacks have different sprites depending on how full they are. - var/obj/structure/closet/C = locate() in T - if(C) - C.contents += M return INITIALIZE_HINT_QDEL //Bye! /obj/fiftyspawner/rods diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index 6ffa7100ca8..c88527608f2 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -24,8 +24,8 @@ stacktype = /obj/item/stack/rods no_variants = TRUE -/obj/item/stack/rods/New() - ..() +/obj/item/stack/rods/Initialize() + . = ..() recipes = rods_recipes update_icon() diff --git a/code/game/objects/items/stacks/sandbags.dm b/code/game/objects/items/stacks/sandbags.dm index c4e755c4852..6eff93bfc5f 100644 --- a/code/game/objects/items/stacks/sandbags.dm +++ b/code/game/objects/items/stacks/sandbags.dm @@ -32,19 +32,15 @@ bag_material = MAT_SYNCLOTH -/obj/item/stack/sandbags/New(var/newloc, var/amt, var/bag_mat) - ..() +/obj/item/stack/sandbags/Initialize(var/ml, var/amt, var/bag_mat) + . = ..(ml, amt) recipes = sandbag_recipes update_icon() - if(bag_mat) bag_material = bag_mat - var/datum/material/M = get_material_by_name("[bag_material]") if(!M) - qdel(src) - return - + return INITIALIZE_HINT_QDEL color = M.icon_colour /obj/item/stack/sandbags/update_icon() @@ -136,17 +132,13 @@ var/global/list/datum/stack_recipe/sandbag_recipes = list( \ var/bag_material = "cloth" -/obj/item/stack/emptysandbag/New(var/newloc, var/amt, var/bag_mat) - ..(newloc, amt) - +/obj/item/stack/emptysandbag/Initialize(var/ml, var/amt, var/bag_mat) + . = ..(ml, amt) if(bag_mat) bag_material = bag_mat - var/datum/material/M = get_material_by_name("[bag_material]") if(!M) - qdel(src) - return - + return INITIALIZE_HINT_QDEL color = M.icon_colour /obj/item/stack/emptysandbag/attack_self(var/mob/user) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index d42d6c0e563..7d9783df685 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -29,14 +29,13 @@ var/pass_color = FALSE // Will the item pass its own color var to the created item? Dyed cloth, wood, etc. var/strict_color_stacking = FALSE // Will the stack merge with other stacks that are different colors? (Dyed cloth, wood, etc) -/obj/item/stack/New(var/loc, var/amount=null) - ..() - if (!stacktype) +/obj/item/stack/Initialize(var/ml, var/amount) + . = ..() + if(!stacktype) stacktype = type - if (amount) + if(amount) src.amount = amount update_icon() - return /obj/item/stack/Destroy() if(uses_charge) diff --git a/code/game/objects/items/stacks/tickets.dm b/code/game/objects/items/stacks/tickets.dm index 1d9cbf047ee..6681934f7ce 100644 --- a/code/game/objects/items/stacks/tickets.dm +++ b/code/game/objects/items/stacks/tickets.dm @@ -7,7 +7,7 @@ w_class = ITEMSIZE_TINY max_amount = 30 -/obj/item/stack/arcadeticket/New(loc, amount = null) +/obj/item/stack/arcadeticket/Initialize() . = ..() update_icon() diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 5e5ac1a746d..aefe9a0cd0d 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -20,8 +20,8 @@ drop_sound = 'sound/items/drop/axe.ogg' pickup_sound = 'sound/items/pickup/axe.ogg' -/obj/item/stack/tile/New() - ..() +/obj/item/stack/tile/Initialize() + . = ..() randpixel_xy() /* diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm index d8906955a15..bfa8b616805 100644 --- a/code/game/objects/items/weapons/material/misc.dm +++ b/code/game/objects/items/weapons/material/misc.dm @@ -77,14 +77,14 @@ //visible_message("[user] has smashed the snowball in their hand!", "You smash the snowball in your hand.") to_chat(user, "You smash the snowball in your hand.") var/atom/S = new /obj/item/stack/material/snow(user.loc) - del(src) + qdel(src) user.put_in_hands(S) else //visible_message("[user] starts compacting the snowball.", "You start compacting the snowball.") to_chat(user, "You start compacting the snowball.") if(do_after(user, 2 SECONDS)) var/atom/S = new /obj/item/weapon/material/snow/snowball/reinforced(user.loc) - del(src) + qdel(src) user.put_in_hands(S) /obj/item/weapon/material/snow/snowball/reinforced diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index 277a083d545..1764b0d8bec 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -174,7 +174,7 @@ gauge_icon = "indicator_emergency" /obj/item/weapon/tank/emergency/nitrogen/Initialize() - ..() + . = ..() src.air_contents.adjust_gas("nitrogen", (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/weapon/tank/emergency/nitrogen/double diff --git a/code/game/objects/items/weapons/tools/weldingtool.dm b/code/game/objects/items/weapons/tools/weldingtool.dm index f3158726697..bd5b5a57c34 100644 --- a/code/game/objects/items/weapons/tools/weldingtool.dm +++ b/code/game/objects/items/weapons/tools/weldingtool.dm @@ -671,7 +671,7 @@ always_process = TRUE /obj/item/weapon/weldingtool/electric/mounted/exosuit/Initialize() - ..() + . = ..() if(istype(loc, /obj/item/mecha_parts/mecha_equipment)) equip_mount = loc diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 688236eda85..0bf22938021 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -19,29 +19,11 @@ var/can_speak = 0 //For MMIs and admin trickery. If an object has a brainmob in its contents, set this to 1 to allow it to speak. var/show_examine = TRUE // Does this pop up on a mob when the mob is examined? - var/register_as_dangerous_object = FALSE // Should this tell its turf that it is dangerous automatically? - -/obj/Initialize() - if(register_as_dangerous_object) - register_dangerous_to_step() - return ..() /obj/Destroy() STOP_PROCESSING(SSobj, src) - if(register_as_dangerous_object) - unregister_dangerous_to_step() return ..() -/obj/Moved(atom/oldloc) - . = ..() - if(register_as_dangerous_object) - var/turf/old_turf = get_turf(oldloc) - var/turf/new_turf = get_turf(src) - - if(old_turf != new_turf) - old_turf.unregister_dangerous_object(src) - new_turf.register_dangerous_object(src) - /obj/Topic(href, href_list, var/datum/tgui_state/state = GLOB.tgui_default_state) if(usr && ..()) return 1 diff --git a/code/game/objects/random/_random.dm b/code/game/objects/random/_random.dm index 67f82ea1551..7b9cc60617f 100644 --- a/code/game/objects/random/_random.dm +++ b/code/game/objects/random/_random.dm @@ -8,7 +8,7 @@ // creates a new object and deletes itself /obj/random/Initialize() - . = ..() + ..() if (!prob(spawn_nothing_percentage)) spawn_item() return INITIALIZE_HINT_QDEL diff --git a/code/game/objects/structures/cliff.dm b/code/game/objects/structures/cliff.dm index 66fb9459882..ad4b23bdb86 100644 --- a/code/game/objects/structures/cliff.dm +++ b/code/game/objects/structures/cliff.dm @@ -1,236 +1,252 @@ -GLOBAL_LIST_EMPTY(cliff_icon_cache) - -/* -Cliffs give a visual illusion of depth by seperating two places while presenting a 'top' and 'bottom' side. - -Mobs moving into a cliff from the bottom side will simply bump into it and be denied moving into the tile, -where as mobs moving into a cliff from the top side will 'fall' off the cliff, forcing them to the bottom, causing significant damage and stunning them. - -Mobs can climb this while wearing climbing equipment by clickdragging themselves onto a cliff, as if it were a table. - -Flying mobs can pass over all cliffs with no risk of falling. - -Projectiles and thrown objects can pass, however if moving upwards, there is a chance for it to be stopped by the cliff. -This makes fighting something that is on top of a cliff more challenging. - -As a note, dir points upwards, e.g. pointing WEST means the left side is 'up', and the right side is 'down'. - -When mapping these in, be sure to give at least a one tile clearance, as NORTH facing cliffs expand to -two tiles on initialization, and which way a cliff is facing may change during maploading. -*/ - -/obj/structure/cliff - name = "cliff" - desc = "A steep rock ledge. You might be able to climb it if you feel bold enough." - description_info = "Walking off the edge of a cliff while on top will cause you to fall off, causing severe injury.
\ - You can climb this cliff if wearing special climbing equipment, by click-dragging yourself onto the cliff.
\ - Projectiles traveling up a cliff may hit the cliff instead, making it more difficult to fight something \ - on top." - icon = 'icons/obj/flora/rocks.dmi' - - anchored = TRUE - density = TRUE - opacity = FALSE - climbable = TRUE - climb_delay = 10 SECONDS - block_turf_edges = TRUE // Don't want turf edges popping up from the cliff edge. - register_as_dangerous_object = TRUE - - var/icon_variant = null // Used to make cliffs less repeative by having a selection of sprites to display. - var/corner = FALSE // Used for icon things. - var/ramp = FALSE // Ditto. - var/bottom = FALSE // Used for 'bottom' typed cliffs, to avoid infinite cliffs, and for icons. - - var/is_double_cliff = FALSE // Set to true when making the two-tile cliffs, used for projectile checks. - var/uphill_penalty = 30 // Odds of a projectile not making it up the cliff. - -// These arrange their sprites at runtime, as opposed to being statically placed in the map file. -/obj/structure/cliff/automatic - icon_state = "cliffbuilder" - dir = NORTH - -/obj/structure/cliff/automatic/corner - icon_state = "cliffbuilder-corner" - dir = NORTHEAST - corner = TRUE - -// Tiny part that doesn't block, used for making 'ramps'. -/obj/structure/cliff/automatic/ramp - icon_state = "cliffbuilder-ramp" - dir = NORTHEAST - density = FALSE - ramp = TRUE - -// Made automatically as needed by automatic cliffs. -/obj/structure/cliff/bottom - bottom = TRUE - -/obj/structure/cliff/automatic/Initialize() - ..() - return INITIALIZE_HINT_LATELOAD - -// Paranoid about the maploader, direction is very important to cliffs, since they may get bigger if initialized while facing NORTH. -/obj/structure/cliff/automatic/LateInitialize() - if(dir in GLOB.cardinal) - icon_variant = pick("a", "b", "c") - - if(dir & NORTH && !bottom) // North-facing cliffs require more cliffs to be made. - make_bottom() - - update_icon() - -/obj/structure/cliff/proc/make_bottom() - // First, make sure there's room to put the bottom side. - var/turf/T = locate(x, y - 1, z) - if(!istype(T)) - return FALSE - - // Now make the bottom cliff have mostly the same variables. - var/obj/structure/cliff/bottom/bottom = new(T) - is_double_cliff = TRUE - climb_delay /= 2 // Since there are two cliffs to climb when going north, both take half the time. - - bottom.dir = dir - bottom.is_double_cliff = TRUE - bottom.climb_delay = climb_delay - bottom.icon_variant = icon_variant - bottom.corner = corner - bottom.ramp = ramp - bottom.layer = layer - 0.1 - bottom.density = density - bottom.update_icon() - -/obj/structure/cliff/set_dir(new_dir) - ..() - update_icon() - -/obj/structure/cliff/update_icon() - icon_state = "cliff-[dir][icon_variant][bottom ? "-bottom" : ""][corner ? "-corner" : ""][ramp ? "-ramp" : ""]" - - // Now for making the top-side look like a different turf. - var/turf/T = get_step(src, dir) - if(!istype(T)) - return - - var/subtraction_icon_state = "[icon_state]-subtract" - var/cache_string = "[icon_state]_[T.icon]_[T.icon_state]" - if(T && subtraction_icon_state in cached_icon_states(icon)) - cut_overlays() - // If we've made the same icon before, just recycle it. - if(cache_string in GLOB.cliff_icon_cache) - add_overlay(GLOB.cliff_icon_cache[cache_string]) - - else // Otherwise make a new one, but only once. - var/icon/underlying_ground = icon(T.icon, T.icon_state, T.dir) - var/icon/subtract = icon(icon, subtraction_icon_state) - underlying_ground.Blend(subtract, ICON_SUBTRACT) - var/image/final = image(underlying_ground) - final.layer = src.layer - 0.2 - GLOB.cliff_icon_cache[cache_string] = final - add_overlay(final) - - -// Movement-related code. - -/obj/structure/cliff/CanPass(atom/movable/mover, turf/target) - if(isliving(mover)) - var/mob/living/L = mover - if(L.hovering) // Flying mobs can always pass. - return TRUE - return ..() - - // Projectiles and objects flying 'upward' have a chance to hit the cliff instead, wasting the shot. - else if(istype(mover, /obj)) - var/obj/O = mover - if(check_shield_arc(src, dir, O)) // This is actually for mobs but it will work for our purposes as well. - if(prob(uphill_penalty / (1 + is_double_cliff) )) // Firing upwards facing NORTH means it will likely have to pass through two cliffs, so the chance is halved. - return FALSE - return TRUE - -/obj/structure/cliff/Bumped(atom/A) - if(isliving(A)) - var/mob/living/L = A - if(should_fall(L)) - fall_off_cliff(L) - return - ..() - -/obj/structure/cliff/proc/should_fall(mob/living/L) - if(L.hovering) - return FALSE - - var/turf/T = get_turf(L) - if(T && get_dir(T, loc) & reverse_dir[dir]) // dir points 'up' the cliff, e.g. cliff pointing NORTH will cause someone to fall if moving SOUTH into it. - return TRUE - return FALSE - -/obj/structure/cliff/proc/fall_off_cliff(mob/living/L) - if(!istype(L)) - return FALSE - var/turf/T = get_step(src, reverse_dir[dir]) - var/displaced = FALSE - - if(dir in list(EAST, WEST)) // Apply an offset if flying sideways, to help maintain the illusion of depth. - for(var/i = 1 to 2) - var/turf/new_T = locate(T.x, T.y - i, T.z) - if(!new_T || locate(/obj/structure/cliff) in new_T) - break - T = new_T - displaced = TRUE - - if(istype(T)) - visible_message(span("danger", "\The [L] falls off \the [src]!")) - L.forceMove(T) - - // Do the actual hurting. Double cliffs do halved damage due to them most likely hitting twice. - var/harm = !is_double_cliff ? 1 : 0.5 - if(istype(L.buckled, /obj/vehicle)) // People falling off in vehicles will take less damage, but will damage the vehicle severely. - var/obj/vehicle/vehicle = L.buckled - vehicle.adjust_health(40 * harm) - to_chat(L, span("warning", "\The [vehicle] absorbs some of the impact, damaging it.")) - harm /= 2 - - playsound(L, 'sound/effects/break_stone.ogg', 70, 1) - L.Weaken(5 * harm) - var/fall_time = 3 - if(displaced) // Make the fall look more natural when falling sideways. - L.pixel_z = 32 * 2 - animate(L, pixel_z = 0, time = fall_time) - sleep(fall_time) // A brief delay inbetween the two sounds helps sell the 'ouch' effect. - playsound(L, "punch", 70, 1) - shake_camera(L, 1, 1) - visible_message(span("danger", "\The [L] hits the ground!")) - - // The bigger they are, the harder they fall. - // They will take at least 20 damage at the minimum, and tries to scale up to 40% of their max health. - // This scaling is capped at 100 total damage, which occurs if the thing that fell has more than 250 health. - var/damage = between(20, L.getMaxHealth() * 0.4, 100) - var/target_zone = ran_zone() - var/blocked = L.run_armor_check(target_zone, "melee") * harm - var/soaked = L.get_armor_soak(target_zone, "melee") * harm - - L.apply_damage(damage * harm, BRUTE, target_zone, blocked, soaked, used_weapon=src) - - // Now fall off more cliffs below this one if they exist. - var/obj/structure/cliff/bottom_cliff = locate() in T - if(bottom_cliff) - visible_message(span("danger", "\The [L] rolls down towards \the [bottom_cliff]!")) - sleep(5) - bottom_cliff.fall_off_cliff(L) - -/obj/structure/cliff/can_climb(mob/living/user, post_climb_check = FALSE) - // Cliff climbing requires climbing gear. - if(ishuman(user)) - var/mob/living/carbon/human/H = user - var/obj/item/clothing/shoes/shoes = H.shoes - if(shoes && shoes.rock_climbing) - return ..() // Do the other checks too. - - to_chat(user, span("warning", "\The [src] is too steep to climb unassisted.")) - return FALSE - -// This tells AI mobs to not be dumb and step off cliffs willingly. -/obj/structure/cliff/is_safe_to_step(mob/living/L) - if(should_fall(L)) - return FALSE - return ..() +GLOBAL_LIST_EMPTY(cliff_icon_cache) + +/* +Cliffs give a visual illusion of depth by seperating two places while presenting a 'top' and 'bottom' side. + +Mobs moving into a cliff from the bottom side will simply bump into it and be denied moving into the tile, +where as mobs moving into a cliff from the top side will 'fall' off the cliff, forcing them to the bottom, causing significant damage and stunning them. + +Mobs can climb this while wearing climbing equipment by clickdragging themselves onto a cliff, as if it were a table. + +Flying mobs can pass over all cliffs with no risk of falling. + +Projectiles and thrown objects can pass, however if moving upwards, there is a chance for it to be stopped by the cliff. +This makes fighting something that is on top of a cliff more challenging. + +As a note, dir points upwards, e.g. pointing WEST means the left side is 'up', and the right side is 'down'. + +When mapping these in, be sure to give at least a one tile clearance, as NORTH facing cliffs expand to +two tiles on initialization, and which way a cliff is facing may change during maploading. +*/ + +/obj/structure/cliff + name = "cliff" + desc = "A steep rock ledge. You might be able to climb it if you feel bold enough." + description_info = "Walking off the edge of a cliff while on top will cause you to fall off, causing severe injury.
\ + You can climb this cliff if wearing special climbing equipment, by click-dragging yourself onto the cliff.
\ + Projectiles traveling up a cliff may hit the cliff instead, making it more difficult to fight something \ + on top." + icon = 'icons/obj/flora/rocks.dmi' + + anchored = TRUE + density = TRUE + opacity = FALSE + climbable = TRUE + climb_delay = 10 SECONDS + block_turf_edges = TRUE // Don't want turf edges popping up from the cliff edge. + + var/icon_variant = null // Used to make cliffs less repeative by having a selection of sprites to display. + var/corner = FALSE // Used for icon things. + var/ramp = FALSE // Ditto. + var/bottom = FALSE // Used for 'bottom' typed cliffs, to avoid infinite cliffs, and for icons. + + var/is_double_cliff = FALSE // Set to true when making the two-tile cliffs, used for projectile checks. + var/uphill_penalty = 30 // Odds of a projectile not making it up the cliff. + +/obj/structure/cliff/Initialize() + . = ..() + register_dangerous_to_step() + +/obj/structure/cliff/Destroy() + unregister_dangerous_to_step() + . = ..() + +/obj/structure/cliff/Moved(atom/oldloc) + . = ..() + if(.) + var/turf/old_turf = get_turf(oldloc) + var/turf/new_turf = get_turf(src) + if(old_turf != new_turf) + old_turf.unregister_dangerous_object(src) + new_turf.register_dangerous_object(src) + +// These arrange their sprites at runtime, as opposed to being statically placed in the map file. +/obj/structure/cliff/automatic + icon_state = "cliffbuilder" + dir = NORTH + +/obj/structure/cliff/automatic/corner + icon_state = "cliffbuilder-corner" + dir = NORTHEAST + corner = TRUE + +// Tiny part that doesn't block, used for making 'ramps'. +/obj/structure/cliff/automatic/ramp + icon_state = "cliffbuilder-ramp" + dir = NORTHEAST + density = FALSE + ramp = TRUE + +// Made automatically as needed by automatic cliffs. +/obj/structure/cliff/bottom + bottom = TRUE + +/obj/structure/cliff/automatic/Initialize() + ..() + return INITIALIZE_HINT_LATELOAD + +// Paranoid about the maploader, direction is very important to cliffs, since they may get bigger if initialized while facing NORTH. +/obj/structure/cliff/automatic/LateInitialize() + if(dir in GLOB.cardinal) + icon_variant = pick("a", "b", "c") + + if(dir & NORTH && !bottom) // North-facing cliffs require more cliffs to be made. + make_bottom() + + update_icon() + +/obj/structure/cliff/proc/make_bottom() + // First, make sure there's room to put the bottom side. + var/turf/T = locate(x, y - 1, z) + if(!istype(T)) + return FALSE + + // Now make the bottom cliff have mostly the same variables. + var/obj/structure/cliff/bottom/bottom = new(T) + is_double_cliff = TRUE + climb_delay /= 2 // Since there are two cliffs to climb when going north, both take half the time. + + bottom.dir = dir + bottom.is_double_cliff = TRUE + bottom.climb_delay = climb_delay + bottom.icon_variant = icon_variant + bottom.corner = corner + bottom.ramp = ramp + bottom.layer = layer - 0.1 + bottom.density = density + bottom.update_icon() + +/obj/structure/cliff/set_dir(new_dir) + ..() + update_icon() + +/obj/structure/cliff/update_icon() + icon_state = "cliff-[dir][icon_variant][bottom ? "-bottom" : ""][corner ? "-corner" : ""][ramp ? "-ramp" : ""]" + + // Now for making the top-side look like a different turf. + var/turf/T = get_step(src, dir) + if(!istype(T)) + return + + var/subtraction_icon_state = "[icon_state]-subtract" + var/cache_string = "[icon_state]_[T.icon]_[T.icon_state]" + if(T && subtraction_icon_state in cached_icon_states(icon)) + cut_overlays() + // If we've made the same icon before, just recycle it. + if(cache_string in GLOB.cliff_icon_cache) + add_overlay(GLOB.cliff_icon_cache[cache_string]) + + else // Otherwise make a new one, but only once. + var/icon/underlying_ground = icon(T.icon, T.icon_state, T.dir) + var/icon/subtract = icon(icon, subtraction_icon_state) + underlying_ground.Blend(subtract, ICON_SUBTRACT) + var/image/final = image(underlying_ground) + final.layer = src.layer - 0.2 + GLOB.cliff_icon_cache[cache_string] = final + add_overlay(final) + + +// Movement-related code. + +/obj/structure/cliff/CanPass(atom/movable/mover, turf/target) + if(isliving(mover)) + var/mob/living/L = mover + if(L.hovering) // Flying mobs can always pass. + return TRUE + return ..() + + // Projectiles and objects flying 'upward' have a chance to hit the cliff instead, wasting the shot. + else if(istype(mover, /obj)) + var/obj/O = mover + if(check_shield_arc(src, dir, O)) // This is actually for mobs but it will work for our purposes as well. + if(prob(uphill_penalty / (1 + is_double_cliff) )) // Firing upwards facing NORTH means it will likely have to pass through two cliffs, so the chance is halved. + return FALSE + return TRUE + +/obj/structure/cliff/Bumped(atom/A) + if(isliving(A)) + var/mob/living/L = A + if(should_fall(L)) + fall_off_cliff(L) + return + ..() + +/obj/structure/cliff/proc/should_fall(mob/living/L) + if(L.hovering) + return FALSE + + var/turf/T = get_turf(L) + if(T && get_dir(T, loc) & reverse_dir[dir]) // dir points 'up' the cliff, e.g. cliff pointing NORTH will cause someone to fall if moving SOUTH into it. + return TRUE + return FALSE + +/obj/structure/cliff/proc/fall_off_cliff(mob/living/L) + if(!istype(L)) + return FALSE + var/turf/T = get_step(src, reverse_dir[dir]) + var/displaced = FALSE + + if(dir in list(EAST, WEST)) // Apply an offset if flying sideways, to help maintain the illusion of depth. + for(var/i = 1 to 2) + var/turf/new_T = locate(T.x, T.y - i, T.z) + if(!new_T || locate(/obj/structure/cliff) in new_T) + break + T = new_T + displaced = TRUE + + if(istype(T)) + visible_message(span("danger", "\The [L] falls off \the [src]!")) + L.forceMove(T) + + // Do the actual hurting. Double cliffs do halved damage due to them most likely hitting twice. + var/harm = !is_double_cliff ? 1 : 0.5 + if(istype(L.buckled, /obj/vehicle)) // People falling off in vehicles will take less damage, but will damage the vehicle severely. + var/obj/vehicle/vehicle = L.buckled + vehicle.adjust_health(40 * harm) + to_chat(L, span("warning", "\The [vehicle] absorbs some of the impact, damaging it.")) + harm /= 2 + + playsound(L, 'sound/effects/break_stone.ogg', 70, 1) + L.Weaken(5 * harm) + var/fall_time = 3 + if(displaced) // Make the fall look more natural when falling sideways. + L.pixel_z = 32 * 2 + animate(L, pixel_z = 0, time = fall_time) + sleep(fall_time) // A brief delay inbetween the two sounds helps sell the 'ouch' effect. + playsound(L, "punch", 70, 1) + shake_camera(L, 1, 1) + visible_message(span("danger", "\The [L] hits the ground!")) + + // The bigger they are, the harder they fall. + // They will take at least 20 damage at the minimum, and tries to scale up to 40% of their max health. + // This scaling is capped at 100 total damage, which occurs if the thing that fell has more than 250 health. + var/damage = between(20, L.getMaxHealth() * 0.4, 100) + var/target_zone = ran_zone() + var/blocked = L.run_armor_check(target_zone, "melee") * harm + var/soaked = L.get_armor_soak(target_zone, "melee") * harm + + L.apply_damage(damage * harm, BRUTE, target_zone, blocked, soaked, used_weapon=src) + + // Now fall off more cliffs below this one if they exist. + var/obj/structure/cliff/bottom_cliff = locate() in T + if(bottom_cliff) + visible_message(span("danger", "\The [L] rolls down towards \the [bottom_cliff]!")) + sleep(5) + bottom_cliff.fall_off_cliff(L) + +/obj/structure/cliff/can_climb(mob/living/user, post_climb_check = FALSE) + // Cliff climbing requires climbing gear. + if(ishuman(user)) + var/mob/living/carbon/human/H = user + var/obj/item/clothing/shoes/shoes = H.shoes + if(shoes && shoes.rock_climbing) + return ..() // Do the other checks too. + + to_chat(user, span("warning", "\The [src] is too steep to climb unassisted.")) + return FALSE + +// This tells AI mobs to not be dumb and step off cliffs willingly. +/obj/structure/cliff/is_safe_to_step(mob/living/L) + if(should_fall(L)) + return FALSE + return ..() diff --git a/code/game/objects/structures/crates_lockers/__closets.dm b/code/game/objects/structures/crates_lockers/__closets.dm index f7e399a267b..4e18d87207b 100644 --- a/code/game/objects/structures/crates_lockers/__closets.dm +++ b/code/game/objects/structures/crates_lockers/__closets.dm @@ -37,7 +37,6 @@ /obj/structure/closet/Initialize() ..() - // Closets need to come later because of spawners potentially creating objects during init. return INITIALIZE_HINT_LATELOAD /obj/structure/closet/LateInitialize() diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index bccdcf56c34..f584fd8838b 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -14,7 +14,7 @@ var/smashed = 0 /obj/structure/fireaxecabinet/Initialize() - ..() + . = ..() fireaxe = new /obj/item/weapon/material/twohanded/fireaxe() /obj/structure/fireaxecabinet/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri diff --git a/code/game/objects/structures/flora/flora.dm b/code/game/objects/structures/flora/flora.dm index cc5c5b510f4..e97c7b84bb6 100644 --- a/code/game/objects/structures/flora/flora.dm +++ b/code/game/objects/structures/flora/flora.dm @@ -22,7 +22,7 @@ var/list/harvest_loot = null // Should be an associative list for things to spawn, and their weights. An example would be a branch from a tree. /obj/structure/flora/Initialize() - ..() + . = ..() if(randomize_size) icon_scale_x = rand(min_x_scale * 100, max_x_scale * 100) / 100 diff --git a/code/game/objects/structures/ghost_pods/ghost_pods.dm b/code/game/objects/structures/ghost_pods/ghost_pods.dm index 386d493d2db..7649c8573fb 100644 --- a/code/game/objects/structures/ghost_pods/ghost_pods.dm +++ b/code/game/objects/structures/ghost_pods/ghost_pods.dm @@ -28,7 +28,7 @@ icon_state = icon_state_opened if(needscharger) new /obj/machinery/recharge_station/ghost_pod_recharger(src.loc) - del(src) + qdel(src) return TRUE else return FALSE diff --git a/code/game/objects/structures/ghost_pods/human.dm b/code/game/objects/structures/ghost_pods/human.dm index 814db9cd757..f2b32915975 100644 --- a/code/game/objects/structures/ghost_pods/human.dm +++ b/code/game/objects/structures/ghost_pods/human.dm @@ -25,7 +25,7 @@ var/list/clothing_possibilities /obj/structure/ghost_pod/ghost_activated/human/Initialize() - ..() + . = ..() handle_clothing_setup() @@ -153,7 +153,7 @@ var/list/clothing_possibilities /obj/structure/ghost_pod/manual/human/Initialize() - ..() + . = ..() handle_clothing_setup() diff --git a/code/game/objects/structures/ghost_pods/silicon.dm b/code/game/objects/structures/ghost_pods/silicon.dm index 32a26ce479d..74f53e92045 100644 --- a/code/game/objects/structures/ghost_pods/silicon.dm +++ b/code/game/objects/structures/ghost_pods/silicon.dm @@ -89,7 +89,7 @@ qdel(src) /obj/structure/ghost_pod/ghost_activated/swarm_drone/event/Initialize() - ..() + . = ..() var/turf/T = get_turf(src) say_dead_object("A [drone_class] swarm drone shell is now available in \the [T.loc].", src) diff --git a/code/game/objects/structures/props/nest.dm b/code/game/objects/structures/props/nest.dm index 4cb515fc36b..ba16b0b0556 100644 --- a/code/game/objects/structures/props/nest.dm +++ b/code/game/objects/structures/props/nest.dm @@ -20,7 +20,7 @@ var/total_creature_max //If set, it can spawn this many creatures, total, ever. /obj/structure/prop/nest/Initialize() - ..() + . = ..() den_mobs = list() START_PROCESSING(SSobj, src) last_spawn = world.time diff --git a/code/game/objects/structures/props/swarm.dm b/code/game/objects/structures/props/swarm.dm index 128254a456e..51f59072f40 100644 --- a/code/game/objects/structures/props/swarm.dm +++ b/code/game/objects/structures/props/swarm.dm @@ -23,7 +23,7 @@ return ..() /obj/structure/cult/pylon/swarm/Initialize() - ..() + . = ..() active_beams = list() /obj/structure/cult/pylon/swarm/Destroy() diff --git a/code/game/objects/structures/window_spawner.dm b/code/game/objects/structures/window_spawner.dm index bb8b5cff6bd..dfeecb7be72 100644 --- a/code/game/objects/structures/window_spawner.dm +++ b/code/game/objects/structures/window_spawner.dm @@ -27,11 +27,10 @@ return FALSE /obj/effect/wingrille_spawn/Initialize() - . = ..() - if(!win_path) - return - if(ticker && ticker.current_state < GAME_STATE_PLAYING) + if(win_path && ticker && ticker.current_state < GAME_STATE_PLAYING) activate() + ..() + return INITIALIZE_HINT_QDEL /obj/effect/wingrille_spawn/proc/activate() if(activated) return @@ -58,7 +57,8 @@ activated = 1 for(var/obj/effect/wingrille_spawn/other in neighbours) if(!other.activated) other.activate() - qdel(src) + if(initialized && !QDELETED(src)) + qdel(src) /obj/effect/wingrille_spawn/proc/handle_window_spawn(var/obj/structure/window/W) return diff --git a/code/game/turfs/flooring/flooring_decals.dm b/code/game/turfs/flooring/flooring_decals.dm index 0fe768f9447..578fb80f547 100644 --- a/code/game/turfs/flooring/flooring_decals.dm +++ b/code/game/turfs/flooring/flooring_decals.dm @@ -12,9 +12,13 @@ var/list/floor_decals = list() /obj/effect/floor_decal/New(var/newloc, var/newdir, var/newcolour) supplied_dir = newdir - if(newcolour) color = newcolour + if(newcolour) + color = newcolour ..(newloc) +// TODO: identify what is causing these atoms to be qdeleted in New()/Initialize() +// somewhere in this chain. Alternatively repath to /obj/floor_decal or some other +// abstract handler that explicitly doesn't invoke any obj behavior. /obj/effect/floor_decal/Initialize() add_to_turf_decals() initialized = TRUE @@ -42,11 +46,11 @@ var/list/floor_decals = list() name = "reset marker" /obj/effect/floor_decal/reset/Initialize() + ..() var/turf/T = get_turf(src) if(T.decals && T.decals.len) T.decals.Cut() T.update_icon() - initialized = TRUE return INITIALIZE_HINT_QDEL /obj/effect/floor_decal/corner diff --git a/code/game/turfs/simulated/floor_types.dm b/code/game/turfs/simulated/floor_types.dm index 151efd819c4..437912b4d26 100644 --- a/code/game/turfs/simulated/floor_types.dm +++ b/code/game/turfs/simulated/floor_types.dm @@ -86,7 +86,7 @@ var/static/list/antilight_cache /turf/simulated/shuttle/Initialize(mapload) - ..() + . = ..() if(!antilight_cache) antilight_cache = list() for(var/diag in cornerdirs) diff --git a/code/game/turfs/simulated/floor_types_eris.dm b/code/game/turfs/simulated/floor_types_eris.dm index bfc9945678a..1cd067b957e 100644 --- a/code/game/turfs/simulated/floor_types_eris.dm +++ b/code/game/turfs/simulated/floor_types_eris.dm @@ -1014,10 +1014,3 @@ oxygen = 0 nitrogen = 0 temperature = TCMB - -/* -/turf/simulated/floor/hull/New() - if(icon_state != "hullcenter0") - overrided_icon_state = icon_state - ..() -*/ \ No newline at end of file diff --git a/code/game/turfs/space/cracked_asteroid.dm b/code/game/turfs/space/cracked_asteroid.dm index ca77a8cd2c8..224997ca8d3 100644 --- a/code/game/turfs/space/cracked_asteroid.dm +++ b/code/game/turfs/space/cracked_asteroid.dm @@ -11,9 +11,3 @@ /turf/space/cracked_asteroid/is_space() // So people don't start floating when standing on it. return FALSE - -// u wot m8? ~Leshana -// /turf/space/cracked_asteroid/New() -// ..() -// spawn(2 SECONDS) -// overlays.Cut() diff --git a/code/game/turfs/unsimulated.dm b/code/game/turfs/unsimulated.dm index 584137ff45a..39c217a0068 100644 --- a/code/game/turfs/unsimulated.dm +++ b/code/game/turfs/unsimulated.dm @@ -2,7 +2,13 @@ name = "command" oxygen = MOLES_O2STANDARD nitrogen = MOLES_N2STANDARD - initialized = TRUE // Don't call init on unsimulated turfs (at least not yet) + var/skip_init = TRUE // Don't call down the chain, apparently for performance when loading maps at runtime. + +/turf/unsimulated/Initialize(mapload) + if(skip_init) + initialized = TRUE + return INITIALIZE_HINT_NORMAL + . = ..() //VOREStation Add /turf/unsimulated/fake_space diff --git a/code/game/turfs/unsimulated/beach.dm b/code/game/turfs/unsimulated/beach.dm index c5338b3db96..b1841dadad8 100644 --- a/code/game/turfs/unsimulated/beach.dm +++ b/code/game/turfs/unsimulated/beach.dm @@ -14,7 +14,7 @@ /turf/unsimulated/beach/water name = "Water" icon_state = "water" - initialized = FALSE + skip_init = FALSE movement_cost = 4 // Water should slow you down, just like simulated turf. /turf/unsimulated/beach/water/Initialize() diff --git a/code/game/turfs/unsimulated/planetary.dm b/code/game/turfs/unsimulated/planetary.dm index 4fb26f16b6a..9fe487410f9 100644 --- a/code/game/turfs/unsimulated/planetary.dm +++ b/code/game/turfs/unsimulated/planetary.dm @@ -9,7 +9,6 @@ density = 1 alpha = 0 blocks_air = 0 - initialized = FALSE // Set these to get your desired planetary atmosphere. oxygen = 0 @@ -17,6 +16,7 @@ carbon_dioxide = 0 phoron = 0 temperature = T20C + skip_init = FALSE /turf/unsimulated/wall/planetary/Initialize() . = ..() diff --git a/code/modules/artifice/cursedform.dm b/code/modules/artifice/cursedform.dm index 17f8fbf6183..43acac8bf3d 100644 --- a/code/modules/artifice/cursedform.dm +++ b/code/modules/artifice/cursedform.dm @@ -2,7 +2,7 @@ name = "Form - Inventory Requisition r10.7.1E" /obj/item/weapon/paper/carbon/cursedform/Initialize() - ..() + . = ..() info = {"

Form - Inventory Requisition r10.7.1E

General Request Form


General


Name:
Department:
Departmental Rank:
Organization(If not Nanotrasen):
Date:



Requested Item(s):
Quantity:
Reason for request:
Is this replacement equipment?:
If `Yes`; above, specify equiment and reason for replacement:


Authorization


Authorizing Department:
Authorizing Dept. Head:


Contact and Delivery


EPv2 Address of requesting party(Do not leave blank):
Delivery location or department:


Nanotrasen Employee Identification Number:
Signature of Requester and Date





Authorizor`s Nanotrasen Employee Identification Number:
Authorizing Signature and Date(Include authorizing department`s stamp below)




Shipping Department Only

(Do not write below this line)

Nanotrasen Purchasing Approval Code:
Nanotrasen Employee Identification Number:
Receiving Shipping Employee:
Signature and Date


"} info_links = {"

Form - Inventory Requisition r10.7.1E

General Request Form


General


Name: write
Department: write
Departmental Rank: write
Organization(If not Nanotrasen): write
Date: write



Requested Item(s): write
Quantity: write
Reason for request: write
Is this replacement equipment?: write
If `Yes` above, specify equiment and reason for replacement: write


Authorization


Authorizing Department: write
Authorizing Dept. Head: write


Contact and Delivery


EPv2 Address of requesting party(Do not leave blank): write
Delivery location or department: write


Nanotrasen Employee Identification Number: write
Signature of Requester and Date

write



Authorizor`s Nanotrasen Employee Identification Number: write
Authorizing Signature and Date(Include authorizing department`s stamp below)

write


Shipping Department Only

(Do not write below this line)

Nanotrasen Purchasing Approval Code: write
Nanotrasen Employee Identification Number: write
Receiving Shipping Employee: write
Signature and Date

write
write"} diff --git a/code/modules/awaymissions/loot.dm b/code/modules/awaymissions/loot.dm index 1c1d9011617..530358940c2 100644 --- a/code/modules/awaymissions/loot.dm +++ b/code/modules/awaymissions/loot.dm @@ -8,18 +8,14 @@ /obj/effect/spawner/lootdrop/Initialize() ..() var/list/things = params2list(loot) - if(things && things.len) for(var/i = lootcount, i > 0, i--) if(!things.len) return - var/loot_spawn = pick(things) var/loot_path = text2path(loot_spawn) - if(!loot_path || !lootdoubles) things.Remove(loot_spawn) continue - new loot_path(get_turf(src)) return INITIALIZE_HINT_QDEL diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 83164afd3c3..3513e9b99d3 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -45,7 +45,6 @@ if( findtext(href,">>>>>> b22a056... Sideports a couple of init unit tests from Neb. (#7893) /datum/trait/modifier/physical/flimsy @@ -194,6 +199,7 @@ // 'Mental' traits are just those that only sapients can have, for now, and generally involves fears. // So far, all of them are just for fluff/don't have mechanical effects. /datum/trait/modifier/mental + name = "Mental" category = "Mental" /datum/trait/modifier/mental/test_for_invalidity(var/datum/category_item/player_setup_item/traits/setup) diff --git a/code/modules/clothing/gloves/antagonist.dm b/code/modules/clothing/gloves/antagonist.dm index d1a01d0e687..2f369adba0f 100644 --- a/code/modules/clothing/gloves/antagonist.dm +++ b/code/modules/clothing/gloves/antagonist.dm @@ -104,7 +104,7 @@ return battery /obj/item/clothing/gloves/ring/buzzer/Initialize() - ..() + . = ..() if(!battery) battery = new battery_type(src) diff --git a/code/modules/clothing/under/accessories/storage.dm b/code/modules/clothing/under/accessories/storage.dm index f3fd40fa009..0bd0549e7a2 100644 --- a/code/modules/clothing/under/accessories/storage.dm +++ b/code/modules/clothing/under/accessories/storage.dm @@ -12,7 +12,7 @@ var/hide_on_roll = FALSE /obj/item/clothing/accessory/storage/Initialize() - ..() + . = ..() hold = new/obj/item/weapon/storage/internal(src) hold.max_storage_space = slots * 2 hold.max_w_class = ITEMSIZE_SMALL @@ -95,7 +95,7 @@ slots = 2 /obj/item/clothing/accessory/storage/knifeharness/Initialize() - ..() + . = ..() hold.max_storage_space = ITEMSIZE_COST_SMALL * 2 hold.can_hold = list(/obj/item/weapon/material/knife/machete/hatchet/unathiknife,\ /obj/item/weapon/material/knife,\ diff --git a/code/modules/clothing/under/xenos/vox.dm b/code/modules/clothing/under/xenos/vox.dm index 7e90ad4665e..9897fa5c6dd 100644 --- a/code/modules/clothing/under/xenos/vox.dm +++ b/code/modules/clothing/under/xenos/vox.dm @@ -28,6 +28,6 @@ slots = 3 /obj/item/clothing/accessory/storage/vox/Initialize() - ..() + . = ..() hold.max_storage_space = slots * ITEMSIZE_COST_NORMAL hold.max_w_class = ITEMSIZE_NORMAL \ No newline at end of file diff --git a/code/modules/fishing/fishing_net.dm b/code/modules/fishing/fishing_net.dm index 740e3a2a6d2..ab1e35ea6a3 100644 --- a/code/modules/fishing/fishing_net.dm +++ b/code/modules/fishing/fishing_net.dm @@ -23,7 +23,7 @@ var/list/accepted_mobs = list(/mob/living/simple_mob/animal/passive/fish) /obj/item/weapon/material/fishing_net/Initialize() - ..() + . = ..() update_icon() /obj/item/weapon/material/fishing_net/afterattack(var/atom/A, var/mob/user, var/proximity) diff --git a/code/modules/fishing/fishing_rod.dm b/code/modules/fishing/fishing_rod.dm index 52578a31c74..ea4571442f6 100644 --- a/code/modules/fishing/fishing_rod.dm +++ b/code/modules/fishing/fishing_rod.dm @@ -47,7 +47,7 @@ ..() /obj/item/weapon/material/fishing_rod/Initialize() - ..() + . = ..() update_icon() /obj/item/weapon/material/fishing_rod/attackby(obj/item/I as obj, mob/user as mob) diff --git a/code/modules/food/drinkingglass/drinkingglass.dm b/code/modules/food/drinkingglass/drinkingglass.dm index c2c5dc4219e..a83c869495d 100644 --- a/code/modules/food/drinkingglass/drinkingglass.dm +++ b/code/modules/food/drinkingglass/drinkingglass.dm @@ -66,7 +66,7 @@ return 0 /obj/item/weapon/reagent_containers/food/drinks/glass2/Initialize() - ..() + . = ..() icon_state = base_icon /obj/item/weapon/reagent_containers/food/drinks/glass2/on_reagent_change() diff --git a/code/modules/food/food/cans.dm b/code/modules/food/food/cans.dm index b876a0e1d13..8f2e135d73a 100644 --- a/code/modules/food/food/cans.dm +++ b/code/modules/food/food/cans.dm @@ -38,7 +38,7 @@ center_of_mass = list("x"=16, "y"=8) /obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind/Initialize() - ..() + . = ..() reagents.add_reagent("spacemountainwind", 30) /obj/item/weapon/reagent_containers/food/drinks/cans/thirteenloko @@ -92,7 +92,7 @@ center_of_mass = list("x"=16, "y"=8) /obj/item/weapon/reagent_containers/food/drinks/cans/space_up/Initialize() - ..() + . = ..() reagents.add_reagent("space_up", 30) /obj/item/weapon/reagent_containers/food/drinks/cans/lemon_lime @@ -103,7 +103,7 @@ center_of_mass = list("x"=16, "y"=8) /obj/item/weapon/reagent_containers/food/drinks/cans/lemon_lime/Initialize() - ..() + . = ..() reagents.add_reagent("lemon_lime", 30) /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea @@ -114,7 +114,7 @@ center_of_mass = list("x"=16, "y"=8) /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea/Initialize() - ..() + . = ..() reagents.add_reagent("icetea", 30) /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice @@ -125,7 +125,7 @@ center_of_mass = list("x"=16, "y"=8) /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice/Initialize() - ..() + . = ..() reagents.add_reagent("grapejuice", 30) /obj/item/weapon/reagent_containers/food/drinks/cans/tonic diff --git a/code/modules/food/food/drinks.dm b/code/modules/food/food/drinks.dm index 9549627c56a..1f7bbc23d1d 100644 --- a/code/modules/food/food/drinks.dm +++ b/code/modules/food/food/drinks.dm @@ -239,7 +239,7 @@ pickup_sound = 'sound/items/pickup/papercup.ogg' /obj/item/weapon/reagent_containers/food/drinks/h_chocolate/Initialize() - ..() + . = ..() reagents.add_reagent("hot_coco", 30) /obj/item/weapon/reagent_containers/food/drinks/greentea @@ -298,7 +298,7 @@ pickup_sound = 'sound/items/pickup/papercup.ogg' /obj/item/weapon/reagent_containers/food/drinks/dry_ramen/Initialize() - ..() + . = ..() reagents.add_reagent("dry_ramen", 30) /obj/item/weapon/reagent_containers/food/drinks/sillycup diff --git a/code/modules/food/food/drinks/bottle.dm b/code/modules/food/food/drinks/bottle.dm index a5fd76417b7..9472f8459db 100644 --- a/code/modules/food/food/drinks/bottle.dm +++ b/code/modules/food/food/drinks/bottle.dm @@ -388,7 +388,7 @@ center_of_mass = list("x"=16, "y"=6) /obj/item/weapon/reagent_containers/food/drinks/bottle/space_up/Initialize() - ..() + . = ..() reagents.add_reagent("space_up", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind @@ -398,7 +398,7 @@ center_of_mass = list("x"=16, "y"=6) /obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind/Initialize() - ..() + . = ..() reagents.add_reagent("spacemountainwind", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/pwine diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index 793c881b7c6..edbbbdc0d38 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -3720,26 +3720,32 @@ /obj/item/pizzabox/margherita/Initialize() pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita(src) boxtag = "Margherita Deluxe" + . = ..() /obj/item/pizzabox/vegetable/Initialize() pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza(src) boxtag = "Gourmet Vegatable" + . = ..() /obj/item/pizzabox/mushroom/Initialize() pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza(src) boxtag = "Mushroom Special" + . = ..() /obj/item/pizzabox/meat/Initialize() pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza(src) boxtag = "Meatlover's Supreme" + . = ..() /obj/item/pizzabox/pineapple/Initialize() pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/pineapple(src) boxtag = "Hawaiian Sunrise" + . = ..() /obj/item/pizzabox/old/Initialize() pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza(src) boxtag = "Deluxe Gourmet" + . = ..() /obj/item/weapon/reagent_containers/food/snacks/dionaroast name = "roast diona" @@ -4547,7 +4553,7 @@ icon_state = "bagelplain" /obj/item/weapon/reagent_containers/food/snacks/bageltwo/Initialize() - ..() //Not returning . because asking to be qdel'd below. + ..() spawn_bagels() spawn_bagels() return INITIALIZE_HINT_QDEL @@ -6261,7 +6267,7 @@ nutriment_desc = list("tomato" = 4, "meat" = 2) /obj/item/weapon/reagent_containers/food/snacks/lasagna/Initialize() - ..() + . = ..() reagents.add_reagent("protein", 2) //For meaty things. /obj/item/weapon/reagent_containers/food/snacks/gigapuddi diff --git a/code/modules/food/food/thecake.dm b/code/modules/food/food/thecake.dm index 05f5ef6440b..491e6dca9cc 100644 --- a/code/modules/food/food/thecake.dm +++ b/code/modules/food/food/thecake.dm @@ -183,7 +183,7 @@ volume = 80 /obj/item/weapon/reagent_containers/food/snacks/chaoscakeslice/Initialize() - ..() + . = ..() var/i = rand(1,6) icon_state = "chaoscake_slice-[i]" switch(i) diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm index 5a499ae846c..6b866d23bae 100644 --- a/code/modules/food/kitchen/microwave.dm +++ b/code/modules/food/kitchen/microwave.dm @@ -586,7 +586,7 @@ item_level = 1 /obj/machinery/microwave/advanced/Initialize() - ..() + . = ..() reagents.maximum_volume = 1000 /datum/recipe/splat // We use this to handle cooking micros (or mice, etc) in a microwave. Janky but it works better than snowflake code to handle the same thing. diff --git a/code/modules/hydroponics/beekeeping/beehive.dm b/code/modules/hydroponics/beekeeping/beehive.dm index e91624724fc..dcef997e365 100644 --- a/code/modules/hydroponics/beekeeping/beehive.dm +++ b/code/modules/hydroponics/beekeeping/beehive.dm @@ -244,8 +244,8 @@ pass_color = TRUE strict_color_stacking = TRUE -/obj/item/stack/material/wax/New() - ..() +/obj/item/stack/material/wax/Initialize() + . = ..() recipes = wax_recipes /datum/material/wax diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index fba3f9ad99d..9d6af08e331 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -175,9 +175,9 @@ return /obj/machinery/portable_atmospherics/hydroponics/Initialize() - . = ..() - if(!ov_lowhealth) - setup_overlays() + ..() + if(!ov_lowhealth) //VOREStation Add + setup_overlays() //VOREStation Add temp_chem_holder = new() temp_chem_holder.create_reagents(10) create_reagents(200) diff --git a/code/modules/integrated_electronics/core/tools.dm b/code/modules/integrated_electronics/core/tools.dm index 5bf48370e20..4f1b16ca746 100644 --- a/code/modules/integrated_electronics/core/tools.dm +++ b/code/modules/integrated_electronics/core/tools.dm @@ -289,7 +289,6 @@ new /obj/item/weapon/storage/bag/circuits/mini/transfer(src) new /obj/item/weapon/storage/bag/circuits/mini/converter(src) new /obj/item/weapon/storage/bag/circuits/mini/power(src) - new /obj/item/device/electronic_assembly(src) new /obj/item/device/assembly/electronic_assembly(src) new /obj/item/device/assembly/electronic_assembly(src) diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index 9c140cedaeb..855c01c5391 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -356,11 +356,9 @@ /obj/item/integrated_circuit/input/signaler/Initialize() . = ..() - set_frequency(frequency) - // Set the pins so when someone sees them, they won't show as null set_pin_data(IC_INPUT, 1, frequency) set_pin_data(IC_INPUT, 2, code) - push_data() + addtimer(CALLBACK(src, .proc/set_frequency, frequency), 40) /obj/item/integrated_circuit/input/signaler/Destroy() if(radio_controller) @@ -574,7 +572,7 @@ ) /obj/item/integrated_circuit/input/microphone/sign/Initialize() - ..() + . = ..() for(var/lang in readable_langs) var/datum/language/newlang = GLOB.all_languages[lang] my_langs |= newlang diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index 5f4685da956..39dae337848 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -150,7 +150,7 @@ var/mob/living/voice/my_voice /obj/item/integrated_circuit/output/text_to_speech/advanced/Initialize() - ..() + . = ..() my_voice = new (src) mob_list -= my_voice // no life() ticks my_voice.name = "TTS Circuit" diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 9a226b836d9..e68425111f5 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -139,7 +139,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f var/static/list/base_genre_books /obj/machinery/librarycomp/Initialize() - ..() + . = ..() if(!base_genre_books || !base_genre_books.len) base_genre_books = list( diff --git a/code/modules/maps/tg/map_template.dm b/code/modules/maps/tg/map_template.dm index 5fa66e3b475..019dff407a9 100644 --- a/code/modules/maps/tg/map_template.dm +++ b/code/modules/maps/tg/map_template.dm @@ -9,9 +9,9 @@ var/annihilate = FALSE // If true, all (movable) atoms at the location where the map is loaded will be deleted before the map is loaded in. var/fixed_orientation = FALSE // If true, the submap will not be rotated randomly when loaded. - var/cost = null // The map generator has a set 'budget' it spends to place down different submaps. It will pick available submaps randomly until \ - it runs out. The cost of a submap should roughly corrispond with several factors such as size, loot, difficulty, desired scarcity, etc. \ - Set to -1 to force the submap to always be made. + var/cost = null /* The map generator has a set 'budget' it spends to place down different submaps. It will pick available submaps randomly until + it runs out. The cost of a submap should roughly corrispond with several factors such as size, loot, difficulty, desired scarcity, etc. + Set to -1 to force the submap to always be made. */ var/allow_duplicates = FALSE // If false, only one map template will be spawned by the game. Doesn't affect admins spawning then manually. var/discard_prob = 0 // If non-zero, there is a chance that the map seeding algorithm will skip this template when selecting potential templates to use. diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm index 2a17e05d367..f837ec3e591 100644 --- a/code/modules/materials/material_sheets.dm +++ b/code/modules/materials/material_sheets.dm @@ -20,16 +20,16 @@ drop_sound = 'sound/items/drop/axe.ogg' pickup_sound = 'sound/items/pickup/axe.ogg' -/obj/item/stack/material/New() - ..() +/obj/item/stack/material/Initialize() + . = ..() + randpixel_xy() if(!default_type) default_type = DEFAULT_WALL_MATERIAL material = get_material_by_name("[default_type]") if(!material) - qdel(src) - return 0 + return INITIALIZE_HINT_QDEL recipes = material.get_recipes() stacktype = material.stack_type @@ -44,7 +44,6 @@ matter = material.get_matter() update_strings() - return 1 /obj/item/stack/material/get_material() return material diff --git a/code/modules/materials/material_synth.dm b/code/modules/materials/material_synth.dm index f7088839ffa..972b8b61eda 100644 --- a/code/modules/materials/material_synth.dm +++ b/code/modules/materials/material_synth.dm @@ -6,11 +6,11 @@ gender = NEUTER matter = null // Don't shove it in the autholathe. -/obj/item/stack/material/cyborg/New() - if(..()) - name = "[material.display_name] synthesiser" - desc = "A device that synthesises [material.display_name]." - matter = null +/obj/item/stack/material/cyborg/Initialize() + . = ..() + name = "[material.display_name] synthesiser" + desc = "A device that synthesises [material.display_name]." + matter = null /obj/item/stack/material/cyborg/update_strings() return diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index edd065d5a4b..de0ad60aedd 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -87,11 +87,11 @@ /obj/machinery/mineral/stacking_machine/New() ..() - for(var/stacktype in typesof(/obj/item/stack/material)-/obj/item/stack/material) - var/obj/item/stack/S = new stacktype(src) - stack_storage[S.name] = 0 - stack_paths[S.name] = stacktype - qdel(S) + for(var/stacktype in subtypesof(/obj/item/stack/material)) + var/obj/item/stack/S = stacktype + var/s_name = initial(S.name) + stack_storage[s_name] = 0 + stack_paths[s_name] = stacktype stack_storage["glass"] = 0 stack_paths["glass"] = /obj/item/stack/material/glass diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 4595b6fbb7a..e74c241ffb1 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -158,9 +158,10 @@ var/upright = 0 var/base_state -/obj/item/stack/flag/New() - ..() +/obj/item/stack/flag/Initialize() + . = ..() base_state = icon_state + update_icon() /obj/item/stack/flag/blue name = "blue flags" diff --git a/code/modules/mining/ore.dm b/code/modules/mining/ore.dm index 1c345021ab9..8aaf648c864 100644 --- a/code/modules/mining/ore.dm +++ b/code/modules/mining/ore.dm @@ -114,7 +114,7 @@ material = null /obj/item/weapon/ore/Initialize() - ..() + . = ..() randpixel_xy() /obj/item/weapon/ore/attackby(obj/item/weapon/W as obj, mob/user as mob) diff --git a/code/modules/mob/freelook/ai/eye.dm b/code/modules/mob/freelook/ai/eye.dm index 67a1b810d72..711dbd30855 100644 --- a/code/modules/mob/freelook/ai/eye.dm +++ b/code/modules/mob/freelook/ai/eye.dm @@ -12,11 +12,11 @@ visualnet = cameranet /mob/observer/eye/aiEye/Destroy() - if(owner) - var/mob/living/silicon/ai/ai = owner - ai.all_eyes -= src - owner = null - . = ..() + if(owner) + var/mob/living/silicon/ai/ai = owner + ai.all_eyes -= src + owner = null + . = ..() /mob/observer/eye/aiEye/setLoc(var/T, var/cancel_tracking = 1) if(owner) diff --git a/code/modules/mob/freelook/update_triggers.dm b/code/modules/mob/freelook/update_triggers.dm index e6d1976fad5..a678ff319c9 100644 --- a/code/modules/mob/freelook/update_triggers.dm +++ b/code/modules/mob/freelook/update_triggers.dm @@ -38,8 +38,8 @@ updateVisibility(src) return ..() -/obj/effect/New() - ..() +/obj/effect/Initialize() + . = ..() updateVisibility(src) // DOORS diff --git a/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm b/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm index 7b222d8a616..1f15f6a07a8 100644 --- a/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm +++ b/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm @@ -140,6 +140,6 @@ to_wear_r_hand = null /mob/living/carbon/human/ai_controlled/replicant/Initialize() - ..() + . = ..() name = species.get_random_name(gender) add_modifier(/datum/modifier/homeothermic, 0, null) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 0c20f6bf31a..f3cdc716e32 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -978,7 +978,7 @@ var/list/ai_verbs_default = list( drop_new_multicam() //Special subtype kept around for global announcements -/mob/living/silicon/ai/announcer/ +/mob/living/silicon/ai/announcer is_dummy = 1 /mob/living/silicon/ai/announcer/Initialize() diff --git a/code/modules/mob/living/silicon/robot/drone/swarm.dm b/code/modules/mob/living/silicon/robot/drone/swarm.dm index 3ac3f4574e3..3db976437b6 100644 --- a/code/modules/mob/living/silicon/robot/drone/swarm.dm +++ b/code/modules/mob/living/silicon/robot/drone/swarm.dm @@ -57,7 +57,7 @@ ) /mob/living/silicon/robot/drone/swarm/Initialize() - ..() + . = ..() add_language(LANGUAGE_SWARMBOT, 1) diff --git a/code/modules/mob/living/silicon/robot/drone/swarm_items.dm b/code/modules/mob/living/silicon/robot/drone/swarm_items.dm index f739285078c..2bbba0b0827 100644 --- a/code/modules/mob/living/silicon/robot/drone/swarm_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/swarm_items.dm @@ -158,5 +158,5 @@ ) /obj/item/weapon/gun/energy/xray/swarm/Initialize() - ..() + . = ..() adjust_scale(-1, 1) diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm index d45d35cef33..e8077db22f3 100644 --- a/code/modules/mob/living/silicon/robot/robot_items.dm +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -131,7 +131,7 @@ var/dummy_card_type = /obj/item/weapon/card/id/science/roboticist/dummy_cyborg /obj/item/weapon/card/robot/Initialize() - ..() + . = ..() dummy_card = new dummy_card_type(src) /obj/item/weapon/card/robot/Destroy() @@ -149,7 +149,7 @@ access = list(access_robotics) /obj/item/weapon/card/id/syndicate/dummy_cyborg/Initialize() - ..() + . = ..() access |= access_robotics //A harvest item for serviceborgs. diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/crab.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/crab.dm index 9fe548ee610..26b8eff0b47 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/crab.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/crab.dm @@ -46,7 +46,7 @@ catalogue_data = list(/datum/category_item/catalogue/fauna/sif_crab) /mob/living/simple_mob/animal/passive/crab/sif/Initialize() - ..() + . = ..() adjust_scale(rand(5,12) / 10) // Meat! diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm index b5c811b81c3..7ba595b47b3 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm @@ -34,7 +34,7 @@ var/randomize_location = TRUE /mob/living/simple_mob/animal/passive/fish/Initialize() - ..() + . = ..() if(!default_pixel_x && randomize_location) default_pixel_x = rand(-12, 12) @@ -174,7 +174,7 @@ var/image/belly_image /mob/living/simple_mob/animal/passive/fish/icebass/Initialize() - ..() + . = ..() dorsal_color = rgb(rand(min_red,max_red), rand(min_green,max_green), rand(min_blue,max_blue)) belly_color = rgb(rand(min_red,max_red), rand(min_green,max_green), rand(min_blue,max_blue)) update_icon() @@ -248,7 +248,7 @@ meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/sif /mob/living/simple_mob/animal/passive/fish/rockfish/Initialize() - ..() + . = ..() head_color = rgb(rand(min_red,max_red), rand(min_green,max_green), rand(min_blue,max_blue)) update_icon() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/lizard.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/lizard.dm index af647587a62..ca94f0373ff 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/lizard.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/lizard.dm @@ -34,7 +34,7 @@ attack_sharp = TRUE /mob/living/simple_mob/animal/passive/lizard/large/Initialize() - ..() + . = ..() adjust_scale(rand(12, 20) / 10) /mob/living/simple_mob/animal/passive/lizard/large/defensive diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/frostfly.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/frostfly.dm index 73d7b10e572..2e6eb9940ca 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/frostfly.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/frostfly.dm @@ -81,7 +81,7 @@ return 1 // It literally produces a cryogenic mist inside itself. Cold doesn't bother it. /mob/living/simple_mob/animal/sif/frostfly/Initialize() - . = ..() //VOREStation Edit + . = ..() smoke_special = new verbs += /mob/living/proc/ventcrawl verbs += /mob/living/proc/hide diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/glitterfly.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/glitterfly.dm index 3687a67c510..f7bec21beb1 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/glitterfly.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/glitterfly.dm @@ -62,7 +62,7 @@ ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive/glitterfly /mob/living/simple_mob/animal/sif/glitterfly/Initialize() - ..() + . = ..() var/colorlist = list(rgb(rand(100,255), rand(100,255), rand(100,255)) = 10, rgb(rand(5,100), rand(5,100), rand(5,100)) = 2, "#222222" = 1) color = pickweight(colorlist) @@ -85,7 +85,7 @@ plane = PLANE_LIGHTING_ABOVE /mob/living/simple_mob/animal/sif/glitterfly/rare/Initialize() - ..() + . = ..() /mob/living/simple_mob/animal/sif/glitterfly/unique_tame_check(var/obj/O, var/mob/user) . = ..() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/kururak.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/kururak.dm index d24d28231be..8a54faf8745 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/kururak.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/kururak.dm @@ -92,7 +92,7 @@ instinct = 50 /mob/living/simple_mob/animal/sif/kururak/Initialize() - ..() + . = ..() if(!instinct) if(prob(20)) instinct = rand(6, 10) @@ -331,7 +331,7 @@ remove_modifiers_of_type(/datum/modifier/ace) /mob/living/simple_mob/animal/sif/kururak/hibernate/Initialize() - ..() + . = ..() lay_down() instinct = 0 diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/leech.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/leech.dm index c59e292a4db..a6c6aabbf25 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/leech.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/leech.dm @@ -115,7 +115,7 @@ emote_hear = list("chitters", "clicks", "gurgles") /mob/living/simple_mob/animal/sif/leech/Initialize() - ..() + . = ..() verbs += /mob/living/proc/ventcrawl verbs += /mob/living/proc/hide diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/moth.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/moth.dm index d153540dd57..8ad7f2b8c97 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/moth.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/moth.dm @@ -116,7 +116,7 @@ return FALSE /mob/living/simple_mob/animal/sif/tymisian/Initialize() - ..() + . = ..() smoke_spore = new verbs += /mob/living/proc/ventcrawl verbs += /mob/living/proc/hide diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm index b2ff320b522..aef54e599d3 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm @@ -108,7 +108,7 @@ icon_state = "[icon_state]_dead" /mob/living/simple_mob/animal/space/space_worm/head/Initialize() - ..() + . = ..() var/mob/living/simple_mob/animal/space/space_worm/current = src diff --git a/code/modules/mob/living/voice/voice.dm b/code/modules/mob/living/voice/voice.dm index 919e302bcf8..8b9491d9029 100644 --- a/code/modules/mob/living/voice/voice.dm +++ b/code/modules/mob/living/voice/voice.dm @@ -7,13 +7,13 @@ emote_type = 2 //This lets them emote through containers. The communicator has a image feed of the person calling them so... -/mob/living/voice/New(loc) +/mob/living/voice/Initialize(loc) add_language(LANGUAGE_GALCOM) set_default_language(GLOB.all_languages[LANGUAGE_GALCOM]) if(istype(loc, /obj/item/device/communicator)) comm = loc - ..() + . = ..() // Proc: transfer_identity() // Parameters: 1 (speaker - the mob (usually an observer) to copy information from) diff --git a/code/modules/multiz/stairs.dm b/code/modules/multiz/stairs.dm index 2742076de02..fdb4a02ac47 100644 --- a/code/modules/multiz/stairs.dm +++ b/code/modules/multiz/stairs.dm @@ -11,9 +11,9 @@ layer = STAIRS_LAYER /obj/structure/stairs/Initialize() + . = ..() if(check_integrity()) update_icon() - return INITIALIZE_HINT_NORMAL // Returns TRUE if the stairs are a complete and connected unit, FALSE if a piece is missing or obstructed // Will attempt to reconnect broken pieces @@ -70,10 +70,10 @@ var/obj/structure/stairs/middle/middle = null /obj/structure/stairs/bottom/Initialize() + . = ..() if(!GetAbove(src)) warning("Stair created without level above: ([loc.x], [loc.y], [loc.z])") return INITIALIZE_HINT_QDEL - . = ..() /obj/structure/stairs/bottom/Destroy() if(top) @@ -246,10 +246,10 @@ var/obj/structure/stairs/bottom/bottom = null /obj/structure/stairs/middle/Initialize() + . = ..() if(!GetAbove(src)) warning("Stair created without level above: ([loc.x], [loc.y], [loc.z])") return INITIALIZE_HINT_QDEL - . = ..() /obj/structure/stairs/middle/Destroy() if(top) @@ -329,10 +329,10 @@ var/obj/structure/stairs/bottom/bottom = null /obj/structure/stairs/top/Initialize() + . = ..() if(!GetBelow(src)) warning("Stair created without level below: ([loc.x], [loc.y], [loc.z])") return INITIALIZE_HINT_QDEL - . = ..() /obj/structure/stairs/top/Destroy() if(middle) @@ -499,7 +499,7 @@ icon_state = "" /obj/structure/stairs/spawner/Initialize() - . = ..() + ..() var/turf/B1 = get_step(get_turf(src), turn(dir, 180)) var/turf/B2 = get_turf(src) var/turf/T1 = GetAbove(B1) diff --git a/code/modules/organs/internal/augment.dm b/code/modules/organs/internal/augment.dm index da8ee8d577a..bb899e5c2ba 100644 --- a/code/modules/organs/internal/augment.dm +++ b/code/modules/organs/internal/augment.dm @@ -31,10 +31,8 @@ var/last_activate = null /obj/item/organ/internal/augment/Initialize() - ..() - + . ..() setup_radial_icon() - if(integrated_object_type) integrated_object = new integrated_object_type(src) integrated_object.canremove = FALSE diff --git a/code/modules/organs/internal/augment/armmounted.dm b/code/modules/organs/internal/augment/armmounted.dm index 4131955e150..833d4be435d 100644 --- a/code/modules/organs/internal/augment/armmounted.dm +++ b/code/modules/organs/internal/augment/armmounted.dm @@ -189,7 +189,7 @@ ) /obj/item/organ/internal/augment/armmounted/shoulder/multiple/Initialize() - ..() + . = ..() if(integrated_object) integrated_tools[integrated_object_type] = integrated_object diff --git a/code/modules/organs/internal/spleen.dm b/code/modules/organs/internal/spleen.dm index 352a36207f1..88d42bb8bbe 100644 --- a/code/modules/organs/internal/spleen.dm +++ b/code/modules/organs/internal/spleen.dm @@ -73,7 +73,7 @@ spleen_efficiency = 0.5 /obj/item/organ/internal/spleen/skrell/Initialize() - ..() + . = ..() adjust_scale(0.8,0.7) /obj/item/organ/internal/spleen/minor @@ -83,5 +83,5 @@ spleen_tick = 15 /obj/item/organ/internal/spleen/minor/Initialize() - ..() + . = ..() adjust_scale(0.7) diff --git a/code/modules/organs/internal/stomach.dm b/code/modules/organs/internal/stomach.dm index 31adb758aec..2ebfefea615 100644 --- a/code/modules/organs/internal/stomach.dm +++ b/code/modules/organs/internal/stomach.dm @@ -12,8 +12,7 @@ var/deadly_hold = TRUE // Does the stomach do damage to mobs eaten by its owner? Xenos should probably have this FALSE. /obj/item/organ/internal/stomach/Initialize() - ..() - + . = ..() if(reagents) reagents.maximum_volume = 30 else diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 9047eb2665d..e5df765bdc2 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -115,8 +115,7 @@ var/list/organ_cache = list() handle_organ_mod_special() /obj/item/organ/Initialize() - ..() - + . = ..() if(owner) if(!meat_type) if(owner.isSynthetic()) diff --git a/code/modules/organs/robolimbs.dm b/code/modules/organs/robolimbs.dm index e7be5f4912a..9eb4c97d4b3 100644 --- a/code/modules/organs/robolimbs.dm +++ b/code/modules/organs/robolimbs.dm @@ -471,7 +471,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\ var/species = SPECIES_HUMAN /obj/item/weapon/disk/species/Initialize() - ..() + . = ..() if(species) name = "[species] [initial(name)]" diff --git a/code/modules/organs/subtypes/diona.dm b/code/modules/organs/subtypes/diona.dm index 3e8f6eadd55..6b6367e8a00 100644 --- a/code/modules/organs/subtypes/diona.dm +++ b/code/modules/organs/subtypes/diona.dm @@ -212,7 +212,7 @@ vital = TRUE /obj/item/organ/internal/brain/cephalon/Initialize() - ..() + . = ..() spawn(30 SECONDS) // FBP Dionaea need some way to be disassembled through surgery, if absolutely necessary. if(!owner.isSynthetic()) vital = FALSE diff --git a/code/modules/organs/subtypes/slime.dm b/code/modules/organs/subtypes/slime.dm index 5fb54a21b45..eef360a515f 100644 --- a/code/modules/organs/subtypes/slime.dm +++ b/code/modules/organs/subtypes/slime.dm @@ -92,7 +92,7 @@ var/strain_regen_cooldown = 5 MINUTES /obj/item/organ/internal/regennetwork/Initialize() - ..() + . = ..() var/mob/living/carbon/human/H = null spawn(15) if(ishuman(owner)) diff --git a/code/modules/overmap/turfs.dm b/code/modules/overmap/turfs.dm index bd31d6bc9a1..916a8f4159a 100644 --- a/code/modules/overmap/turfs.dm +++ b/code/modules/overmap/turfs.dm @@ -10,7 +10,6 @@ var/global/list/map_sectors = list() /turf/unsimulated/map icon = 'icons/turf/space.dmi' icon_state = "map" - initialized = FALSE // TODO - Fix unsimulated turf initialization so this override is not necessary! /turf/unsimulated/map/edge opacity = 1 diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 6876b5af369..6601e7965c1 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -129,7 +129,7 @@ var/default_icon_state /obj/item/weapon/pen/blade/Initialize() - ..() + . = ..() active_icon_state = "[icon_state]-x" default_icon_state = icon_state diff --git a/code/modules/pda/cart.dm b/code/modules/pda/cart.dm index 936674061ae..d391419d91c 100644 --- a/code/modules/pda/cart.dm +++ b/code/modules/pda/cart.dm @@ -154,7 +154,7 @@ var/list/civilian_cartridges = list( /obj/item/weapon/cartridge/signal/Initialize() radio = new /obj/item/radio/integrated/signal(src) - ..() + . = ..() /obj/item/weapon/cartridge/signal/science name = "\improper Signal Ace 2 cartridge" diff --git a/code/modules/pda/radio.dm b/code/modules/pda/radio.dm index 0d3b115a134..5a51c677f04 100644 --- a/code/modules/pda/radio.dm +++ b/code/modules/pda/radio.dm @@ -107,13 +107,11 @@ return ..() /obj/item/radio/integrated/signal/Initialize() - if(!radio_controller) - return - - if(src.frequency < PUBLIC_LOW_FREQ || src.frequency > PUBLIC_HIGH_FREQ) - src.frequency = sanitize_frequency(src.frequency) - - set_frequency(frequency) + . = ..() + if(radio_controller) + if(src.frequency < PUBLIC_LOW_FREQ || src.frequency > PUBLIC_HIGH_FREQ) + src.frequency = sanitize_frequency(src.frequency) + set_frequency(frequency) /obj/item/radio/integrated/signal/proc/set_frequency(new_frequency) radio_controller.remove_object(src, frequency) diff --git a/code/modules/power/singularity/particle_accelerator/particle_smasher.dm b/code/modules/power/singularity/particle_accelerator/particle_smasher.dm index 01fa9932d9d..adff836cee5 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_smasher.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_smasher.dm @@ -25,7 +25,7 @@ var/list/recipes // The list containing the Particle Smasher's recipes. /obj/machinery/particle_smasher/Initialize() - ..() + . = ..() storage = list() update_icon() prepare_recipes() diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 1d5262044ef..e93ee62c71c 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -318,7 +318,7 @@ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /obj/machinery/computer/turbine_computer/Initialize() - . = ..() + ..() return INITIALIZE_HINT_LATELOAD /obj/machinery/computer/turbine_computer/LateInitialize() diff --git a/code/modules/projectiles/ammunition/rounds.dm b/code/modules/projectiles/ammunition/rounds.dm index 02d4b4aa5e7..1b461a0c470 100644 --- a/code/modules/projectiles/ammunition/rounds.dm +++ b/code/modules/projectiles/ammunition/rounds.dm @@ -307,7 +307,7 @@ projectile_type = /obj/item/projectile/bullet/rifle/a145 /obj/item/ammo_casing/a145/spent/Initialize() - ..() + . = ..() expend() /* diff --git a/code/modules/projectiles/broken.dm b/code/modules/projectiles/broken.dm index 15f63f4c54f..f972d1f6bdb 100644 --- a/code/modules/projectiles/broken.dm +++ b/code/modules/projectiles/broken.dm @@ -18,7 +18,7 @@ setup_repair_needs() /obj/item/weapon/broken_gun/Initialize() - ..() + . = ..() spawn(30 SECONDS) if(!my_guntype && !QDELETED(src)) qdel(src) diff --git a/code/modules/reagents/distilling/distilling.dm b/code/modules/reagents/distilling/distilling.dm index 5d37f8510ce..4bd8bd163ee 100644 --- a/code/modules/reagents/distilling/distilling.dm +++ b/code/modules/reagents/distilling/distilling.dm @@ -74,7 +74,7 @@ ..() /obj/machinery/portable_atmospherics/powered/reagent_distillery/Initialize() - ..() + . = ..() Reservoir = new (src) Reservoir.Master = src diff --git a/code/modules/reagents/hoses/connector.dm b/code/modules/reagents/hoses/connector.dm index bac7fc7c6af..e165877041f 100644 --- a/code/modules/reagents/hoses/connector.dm +++ b/code/modules/reagents/hoses/connector.dm @@ -53,7 +53,7 @@ ..() /obj/item/hose_connector/Initialize() - ..() + . = ..() create_reagents(100) @@ -105,7 +105,7 @@ ..() /obj/item/hose_connector/input/active/Initialize() - ..() + . = ..() START_PROCESSING(SSobj, src) if(!isturf(loc)) @@ -127,7 +127,7 @@ ..() /obj/item/hose_connector/output/active/Initialize() - ..() + . = ..() START_PROCESSING(SSobj, src) if(!isturf(loc)) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index eb4bba23879..fe0a4c1381e 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -226,7 +226,7 @@ var/obj/item/hose_connector/input/active/InputSocket /obj/item/weapon/reagent_containers/spray/chemsprayer/hosed/Initialize() - ..() + . = ..() InputSocket = new(src) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 642871f99fe..2372be085a1 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -548,7 +548,7 @@ density = FALSE /obj/machinery/disposal/wall/Initialize() - ..() + . = ..() spawn(1 SECOND) // Fixfix for weird interaction with buildmode or other late-spawning. update() @@ -1394,7 +1394,7 @@ var/obj/linked // the linked obj/machinery/disposal or obj/disposaloutlet /obj/structure/disposalpipe/trunk/Initialize() - ..() //Lateload below + ..() dpdir = dir return INITIALIZE_HINT_LATELOAD diff --git a/code/modules/shuttles/landmarks.dm b/code/modules/shuttles/landmarks.dm index 0c750dc2465..cf6a76cb5c7 100644 --- a/code/modules/shuttles/landmarks.dm +++ b/code/modules/shuttles/landmarks.dm @@ -143,7 +143,7 @@ return INITIALIZE_HINT_LATELOAD /obj/effect/shuttle_landmark/automatic/clearing/LateInitialize() - ..() + . = ..() for(var/turf/T in range(radius, src)) if(T.density) T.ChangeTurf(get_base_turf_by_area(T)) diff --git a/code/modules/turbolift/turbolift_turfs.dm b/code/modules/turbolift/turbolift_turfs.dm index 8949f71448f..0fb3302885a 100644 --- a/code/modules/turbolift/turbolift_turfs.dm +++ b/code/modules/turbolift/turbolift_turfs.dm @@ -1,2 +1,2 @@ /turf/simulated/wall/elevator/Initialize(mapload) - ..(mapload, "elevatorium") + . = ..(mapload, "elevatorium") diff --git a/code/unit_tests/subsystem_tests.dm b/code/unit_tests/subsystem_tests.dm new file mode 100644 index 00000000000..0e62c2896b9 --- /dev/null +++ b/code/unit_tests/subsystem_tests.dm @@ -0,0 +1,46 @@ +/datum/unit_test/subsystem_shall_be_initialized + name = "SUBSYSTEM - INIT: Subsystems shall be initalized" + +/datum/unit_test/subsystem_shall_be_initialized/start_test() + var/list/bad_subsystems = list() + for(var/datum/controller/subsystem/SS in Master.subsystems) + if (SS.flags & SS_NO_INIT) + continue + if(!SS.subsystem_initialized) + bad_subsystems += SS.type + + if(bad_subsystems.len) + fail("Found improperly initialized subsystems: [english_list(bad_subsystems)]") + else + pass("All susbsystems have initialized properly") + + return 1 + +/* Uncomment when all atoms init properly +/datum/unit_test/subsystem_atom_shall_have_no_bad_init_calls + name = "SUBSYSTEM - ATOMS: Shall have no bad init calls" + +/datum/unit_test/subsystem_atom_shall_have_no_bad_init_calls/start_test() + if(SSatoms.BadInitializeCalls.len) + log_bad(jointext(SSatoms.InitLog(), null)) + fail("[SSatoms] had bad initialization calls.") + else + pass("[SSatoms] had no bad initialization calls.") + return 1 + +/datum/unit_test/all_atoms_shall_be_initialized + name = "SUBSYSTEM - ATOMS: All atoms shall be initialized." + +/datum/unit_test/all_atoms_shall_be_initialized/start_test() + set background = TRUE // avoid infinite loop warning; SS will still wait for us. + var/fail = FALSE + for(var/atom/atom in world) + if(!(atom.initialized)) + log_bad("Uninitialized atom: [atom.log_info_line()]") + fail = TRUE + if(fail) + fail("There were uninitialized atoms.") + else + pass("All atoms were initialized") + return 1 +*/ \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index 41a4ae7edd4..6692d493378 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -3795,6 +3795,7 @@ #include "code\unit_tests\mob_tests.dm" #include "code\unit_tests\research_tests.dm" #include "code\unit_tests\sqlite_tests.dm" +#include "code\unit_tests\subsystem_tests.dm" #include "code\unit_tests\unit_test.dm" #include "code\unit_tests\unit_test_vr.dm" #include "code\unit_tests\vore_tests_vr.dm"