diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index ae75317255..ce5c3919c6 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -6,6 +6,7 @@ on: pull_request: branches: - master + - upstream-merge jobs: run_linters: if: "!contains(github.event.head_commit.message, '[ci skip]')" diff --git a/code/__HELPERS/path.dm b/code/__HELPERS/path.dm index 72ed8da819..f44a1d0dbb 100644 --- a/code/__HELPERS/path.dm +++ b/code/__HELPERS/path.dm @@ -132,6 +132,11 @@ src.simulated_only = simulated_only src.avoid = avoid +/datum/pathfind/Destroy(force, ...) + caller = null + id = null + return ..() + /** * search() is the proc you call to kick off and handle the actual pathfinding, and kills the pathfind datum instance when it's done. * diff --git a/code/controllers/globals.dm b/code/controllers/globals.dm index 7b5cc94d36..d69d3edbca 100644 --- a/code/controllers/globals.dm +++ b/code/controllers/globals.dm @@ -13,7 +13,13 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) GLOB = src var/datum/controller/exclude_these = new - gvars_datum_in_built_vars = exclude_these.vars + list(NAMEOF(src, gvars_datum_protected_varlist), NAMEOF(src, gvars_datum_in_built_vars), NAMEOF(src, gvars_datum_init_order)) + // I know this is dumb but the nested vars list hangs a ref to the datum. This fixes that + // I have an issue report open, lummox has not responded. It might be a FeaTuRE + // Sooo we gotta be dumb + var/list/controller_vars = exclude_these.vars.Copy() + controller_vars["vars"] = null + gvars_datum_in_built_vars = controller_vars + list(NAMEOF(src, gvars_datum_protected_varlist), NAMEOF(src, gvars_datum_in_built_vars), NAMEOF(src, gvars_datum_init_order)) + QDEL_IN(exclude_these, 0) //signal logging isn't ready log_world("[vars.len - gvars_datum_in_built_vars.len] global variables") diff --git a/code/datums/callback.dm b/code/datums/callback.dm index cd7af53b25..50e3380adf 100644 --- a/code/datums/callback.dm +++ b/code/datums/callback.dm @@ -34,7 +34,7 @@ * ### global proc * GLOBAL_PROC_REF(procname) * - * `CALLBACK(src, GLOBAL_PROC_REF(some_proc_here))` + * `CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(some_proc_here))` * * * ### proc defined on some type diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm index cde8a09e8a..246c249281 100644 --- a/code/datums/components/storage/storage.dm +++ b/code/datums/components/storage/storage.dm @@ -436,7 +436,7 @@ if(over_object == M) user_show_to_mob(M, trigger_on_found = TRUE) if(isrevenant(M)) - INVOKE_ASYNC(GLOBAL_PROC, PROC_REF(RevenantThrow), over_object, M, source) + INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(RevenantThrow), over_object, M, source) return if(check_locked(null, M) || !M.CanReach(A)) return diff --git a/code/datums/elements/weather_listener.dm b/code/datums/elements/weather_listener.dm index e82ce06aac..1eb26dca0a 100644 --- a/code/datums/elements/weather_listener.dm +++ b/code/datums/elements/weather_listener.dm @@ -37,7 +37,7 @@ if(!(new_z in fitting_z_levels)) return var/datum/component/our_comp = source.AddComponent(/datum/component/area_sound_manager, playlist, list(), COMSIG_MOB_CLIENT_LOGOUT, fitting_z_levels) - our_comp.RegisterSignal(SSdcs, sound_change_signals, /datum/component/area_sound_manager/proc/handle_change) + our_comp.RegisterSignal(SSdcs, sound_change_signals, TYPE_PROC_REF(/datum/component/area_sound_manager, handle_change)) /datum/element/weather_listener/proc/handle_logout(datum/source, client/this_is_a_null_ref) SIGNAL_HANDLER diff --git a/code/datums/mind.dm b/code/datums/mind.dm index d6261bb259..243edd9472 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -176,7 +176,7 @@ SEND_SIGNAL(src, COMSIG_MIND_TRANSFER, new_character, old_character) SEND_SIGNAL(new_character, COMSIG_MOB_ON_NEW_MIND) //splurt change - INVOKE_ASYNC(GLOBAL_PROC, PROC_REF(_paci_check), new_character, old_character) + INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(_paci_check), new_character, old_character) //end change /datum/mind/proc/store_memory(new_text) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 523593e451..493a37bfda 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -113,7 +113,7 @@ set_frequency(frequency) if(closeOtherId != null) - addtimer(CALLBACK(PROC_REF(update_other_id)), 5) + addtimer(CALLBACK(src, PROC_REF(update_other_id)), 5) if(glass) airlock_material = "glass" if(security_level > AIRLOCK_SECURITY_METAL) diff --git a/code/game/objects/items/implants/implantchair.dm b/code/game/objects/items/implants/implantchair.dm index 263aab4039..6b793b20c6 100644 --- a/code/game/objects/items/implants/implantchair.dm +++ b/code/game/objects/items/implants/implantchair.dm @@ -76,10 +76,10 @@ ready_implants-- if(!replenishing && auto_replenish) replenishing = TRUE - addtimer(CALLBACK(src,"replenish"),replenish_cooldown) + addtimer(CALLBACK(src, PROC_REF(replenish)),replenish_cooldown) if(injection_cooldown > 0) ready = FALSE - addtimer(CALLBACK(src,"set_ready"),injection_cooldown) + addtimer(CALLBACK(src, PROC_REF(set_ready)),injection_cooldown) else playsound(get_turf(src), 'sound/machines/buzz-sigh.ogg', 25, 1) update_icon() @@ -113,7 +113,7 @@ if(ready_implants < max_implants) ready_implants++ if(ready_implants < max_implants) - addtimer(CALLBACK(src,"replenish"),replenish_cooldown) + addtimer(CALLBACK(src, PROC_REF(replenish)), replenish_cooldown) else replenishing = FALSE diff --git a/code/game/world.dm b/code/game/world.dm index 5036065c7b..2e9edceba5 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -387,7 +387,7 @@ GLOBAL_LIST(topic_status_cache) if(UNIX) lib = "libprof.so" else CRASH("unsupported platform") - var/init = call(lib, "init")() + var/init = LIBCALL(lib, "init")() if("0" != init) CRASH("[lib] init error: [init]") /world/New() diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 32addf8953..9b6d7ecc5c 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -215,7 +215,7 @@ GLOBAL_PROTECT(admin_verbs_debug) /client/proc/discordnulls, /client/proc/generate_wikichem_list //DO NOT PRESS UNLESS YOU WANT SUPERLAG ) -GLOBAL_LIST_INIT(admin_verbs_possess, list(/proc/possess, GLOBAL_PROC_REF(release))) +GLOBAL_LIST_INIT(admin_verbs_possess, list(/proc/possess, /proc/release)) GLOBAL_PROTECT(admin_verbs_possess) GLOBAL_LIST_INIT(admin_verbs_permissions, list(/client/proc/edit_admin_permissions)) GLOBAL_PROTECT(admin_verbs_permissions) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 6a343cf4bd..519154c597 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -1518,7 +1518,7 @@ Traitors and the like can also be revived with the previous role mostly intact. if (limb.body_part == HEAD || limb.body_part == CHEST) continue addtimer(CALLBACK(limb, TYPE_PROC_REF(/obj/item/bodypart, dismember)), timer) - addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(playsound), carbon_target, 'modular_splurt/sound/effects/cartoon_pop.ogg', 70), timer) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), carbon_target, 'modular_splurt/sound/effects/cartoon_pop.ogg', 70), timer) addtimer(CALLBACK(carbon_target, TYPE_PROC_REF(/mob/living, spin), 4, 1), timer - 0.4 SECONDS) timer += 2 SECONDS if(ADMIN_PUNISHMENT_BREADIFY) @@ -1526,14 +1526,14 @@ Traitors and the like can also be revived with the previous role mostly intact. var/mutable_appearance/bread_appearance = mutable_appearance('icons/obj/food/burgerbread.dmi', "bread") var/mutable_appearance/transform_scanline = mutable_appearance('modular_splurt/icons/effects/effects.dmi', "transform_effect") target.transformation_animation(bread_appearance, time = BREADIFY_TIME, transform_overlay=transform_scanline, reset_after=TRUE) - addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(breadify), target), BREADIFY_TIME) + addtimer(CALLBACK(src, PROC_REF(breadify), target), BREADIFY_TIME) #undef BREADIFY_TIME if(ADMIN_PUNISHMENT_BOOKIFY) #define BOOKIFY_TIME (2 SECONDS) var/mutable_appearance/book_appearance = mutable_appearance('icons/obj/library.dmi', "book") var/mutable_appearance/transform_scanline = mutable_appearance('modular_splurt/icons/effects/effects.dmi', "transform_effect") target.transformation_animation(book_appearance, time = BOOKIFY_TIME, transform_overlay=transform_scanline, reset_after=TRUE) - addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(bookify), target), BOOKIFY_TIME) + addtimer(CALLBACK(src, PROC_REF(bookify), target), BOOKIFY_TIME) playsound(target, 'modular_splurt/sound/misc/bookify.ogg', 60, 1) #undef BOOKIFY_TIME if(ADMIN_PUNISHMENT_BONK) diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index cbec180f45..09ee68e291 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -505,7 +505,7 @@ /obj/machinery/nuclearbomb/proc/really_actually_explode(off_station) Cinematic(get_cinematic_type(off_station),world,CALLBACK(SSticker, TYPE_PROC_REF(/datum/controller/subsystem/ticker, station_explosion_detonation),src)) - INVOKE_ASYNC(GLOBAL_PROC,PROC_REF(KillEveryoneOnZLevel), z) + INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(KillEveryoneOnZLevel), z) /obj/machinery/nuclearbomb/proc/get_cinematic_type(off_station) if(off_station < 2) diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm index 44e70ebb34..3dce4df867 100644 --- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm +++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm @@ -463,7 +463,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( minor_announce("Hostile runtime detected in door controllers. Isolation lockdown protocols are now in effect. Please remain calm.","Network Alert:", TRUE) to_chat(owner, "Lockdown initiated. Network reset in 90 seconds.") - addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(minor_announce), + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(minor_announce), "Automatic system reboot complete. Have a secure day.", "Network reset:"), 900) diff --git a/code/modules/events/fake_virus.dm b/code/modules/events/fake_virus.dm index bc26eff14b..7d8da467cc 100644 --- a/code/modules/events/fake_virus.dm +++ b/code/modules/events/fake_virus.dm @@ -28,5 +28,5 @@ if(prob(25))//1/4 odds to get a spooky message instead of coughing out loud addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), onecoughman, "[pick("Your head hurts.", "Your head pounds.")]"), rand(30,150)) else - addtimer(CALLBACK(onecoughman, .mob/proc/emote, pick("cough", "sniff", "sneeze")), rand(30,150))//deliver the message with a slightly randomized time interval so there arent multiple people coughing at the exact same time + addtimer(CALLBACK(onecoughman, TYPE_PROC_REF(/mob, emote), pick("cough", "sniff", "sneeze")), rand(30,150))//deliver the message with a slightly randomized time interval so there arent multiple people coughing at the exact same time fake_virus_victims -= onecoughman diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm index 75b647809a..0d3e5c8f7c 100644 --- a/code/modules/mining/minebot.dm +++ b/code/modules/mining/minebot.dm @@ -62,6 +62,7 @@ /mob/living/simple_animal/hostile/mining_drone/Destroy() for (var/datum/action/innate/minedrone/action in actions) qdel(action) + QDEL_NULL(stored_gun) return ..() /mob/living/simple_animal/hostile/mining_drone/sentience_act() diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index 8ec0aab5bb..c5a2e03a6f 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -365,7 +365,7 @@ var/mob/living/simple_animal/bot/honkbot/S = new(drop_location()) S.name = created_name S.spam_flag = TRUE // only long enough to hear the first ping. - addtimer(CALLBACK (S, .mob/living/simple_animal/bot/honkbot/proc/react_ping), 5) + addtimer(CALLBACK(S, TYPE_PROC_REF(/mob/living/simple_animal/bot/honkbot, react_ping)), 5) S.bikehorn = I.type qdel(I) qdel(src) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index 81f9288ac7..f44b675842 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -117,7 +117,7 @@ Difficulty: Normal ..() /mob/living/simple_animal/hostile/megafauna/hierophant/Destroy() - qdel(spawned_beacon) + QDEL_NULL(spawned_beacon) . = ..() /mob/living/simple_animal/hostile/megafauna/hierophant/devour(mob/living/L) diff --git a/code/modules/mob/living/simple_animal/hostile/zombie.dm b/code/modules/mob/living/simple_animal/hostile/zombie.dm index ecb5cd2290..4cac10946b 100644 --- a/code/modules/mob/living/simple_animal/hostile/zombie.dm +++ b/code/modules/mob/living/simple_animal/hostile/zombie.dm @@ -29,6 +29,11 @@ . = ..() setup_visuals() +/mob/living/simple_animal/hostile/zombie/Destroy() + if(!QDELETED(corpse)) + QDEL_NULL(corpse) + . = ..() + /mob/living/simple_animal/hostile/zombie/proc/setup_visuals() set waitfor = FALSE var/datum/preferences/dummy_prefs = new @@ -58,6 +63,7 @@ . = ..() corpse.forceMove(drop_location()) corpse.create() + corpse = null /mob/living/simple_animal/hostile/unemployedclone name = "Failed clone" diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 596562fe5f..1ec4345e37 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -128,6 +128,11 @@ /mob/living/simple_animal/parrot/proc/toggle_mode, /mob/living/simple_animal/parrot/proc/perch_mob_player)) +/mob/living/simple_animal/parrot/Destroy() + if(ears) + QDEL_NULL(ears) + return ..() + /mob/living/simple_animal/parrot/ComponentInitialize() . = ..() AddElement(/datum/element/strippable, GLOB.strippable_parrot_items) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 567adedaed..58b5b56c9f 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -18,7 +18,9 @@ update_movespeed(TRUE) initialize_actionspeed() init_rendering() - hook_vr("mob_new",list(src)) + var/list/hook_args = list(src) + hook_vr("mob_new", hook_args) + hook_args.Cut() /mob/Destroy()//This makes sure that mobs with clients/keys are not just deleted from the game. // if(client) @@ -540,7 +542,7 @@ if(send_signal) SEND_SIGNAL(src, COMSIG_MOB_KEY_CHANGE, new_mob, src) //splurt changeh - INVOKE_ASYNC(GLOBAL_PROC, PROC_REF(_paci_check), new_mob, src) + INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(_paci_check), new_mob, src) // return TRUE diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm index d569ad24fd..0eaecc5aa2 100644 --- a/code/modules/modular_computers/computers/item/processor.dm +++ b/code/modules/modular_computers/computers/item/processor.dm @@ -38,7 +38,7 @@ integrity_failure = machinery_computer.integrity_failure base_active_power_usage = machinery_computer.base_active_power_usage base_idle_power_usage = machinery_computer.base_idle_power_usage - machinery_computer.RegisterSignal(src, COMSIG_ATOM_UPDATED_ICON, /obj/machinery/modular_computer/proc/relay_icon_update) //when we update_icon, also update the computer + machinery_computer.RegisterSignal(src, COMSIG_ATOM_UPDATED_ICON, TYPE_PROC_REF(/obj/machinery/modular_computer, relay_icon_update)) //when we update_icon, also update the computer /obj/item/modular_computer/processor/relay_qdel() qdel(machinery_computer) diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index c0957466c0..66ee0ba13d 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -242,7 +242,7 @@ H.fakefire() fulfillContract(H, 1)//Revival contracts are always signed in blood addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon/human, fakefireextinguish)), 5, TIMER_UNIQUE) - addtimer(CALLBACK(src, "resetcooldown"), 300, TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(resetcooldown)), 30 SECONDS, TIMER_UNIQUE) else ..() diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 08a804550e..ba5e6a83a0 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -161,7 +161,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne part.main_part = src parts += part part.update_appearance() - part.RegisterSignal(src, COMSIG_ATOM_UPDATED_ICON, /obj/machinery/gravity_generator/part/proc/on_update_icon) + part.RegisterSignal(src, COMSIG_ATOM_UPDATED_ICON, TYPE_PROC_REF(/obj/machinery/gravity_generator/part, on_update_icon)) /obj/machinery/gravity_generator/main/proc/connected_parts() return parts.len == 8 diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index 2f0cba0056..73f3073580 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -214,7 +214,7 @@ /obj/machinery/bsa/full/proc/reload() ready = FALSE use_power(power_used_per_shot) - addtimer(CALLBACK(src,"ready_cannon"),600) + addtimer(CALLBACK(src, PROC_REF(ready_cannon)),600) /obj/machinery/bsa/full/proc/ready_cannon() ready = TRUE diff --git a/code/modules/unit_tests/create_and_destroy.dm b/code/modules/unit_tests/create_and_destroy.dm index 0145148930..d8f7f0d178 100644 --- a/code/modules/unit_tests/create_and_destroy.dm +++ b/code/modules/unit_tests/create_and_destroy.dm @@ -43,12 +43,16 @@ GLOBAL_VAR_INIT(running_create_and_destroy, FALSE) /obj/effect/buildmode_line, //Spawns it in the wall and shuttle controller runtimes (actually not caught in unit test) /obj/effect/landmark/latejoin, + // This spawns a map during this test. BAD. + /obj/effect/landmark/mapGenerator, //Those DAMN SWARMERS ARE EATING EVERYTHING WHILE TEST IS RUNNING /mob/living/simple_animal/hostile/megafauna/swarmer_swarm_beacon, // Randomly causes test to fail because of random movement /obj/item/grenade/clusterbuster/segment, // With 10% Spawns `while() ... sleep()` proc that causes her hat to harddel // TODO rewrite helmet code attack_self() and port modern /tg/ helmet code /mob/living/carbon/monkey/angry, + // Literally ends the world. + /obj/singularity/narsie/large/cult, ) //Say it with me now, type template ignore += typesof(/obj/effect/mapping_helpers) diff --git a/modular_sand/code/datums/interactions/lewd_interactions.dm b/modular_sand/code/datums/interactions/lewd_interactions.dm index 617f65b36e..79caf65221 100644 --- a/modular_sand/code/datums/interactions/lewd_interactions.dm +++ b/modular_sand/code/datums/interactions/lewd_interactions.dm @@ -487,7 +487,7 @@ user.last_lewd_datum = src if(user.cleartimer) deltimer(user.cleartimer) - user.cleartimer = addtimer(CALLBACK(user, /mob/living/proc/clear_lewd_datum), 300, TIMER_STOPPABLE) + user.cleartimer = addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/living, clear_lewd_datum)), 300, TIMER_STOPPABLE) return ..() /mob/living/list_interaction_attributes(mob/living/LM) diff --git a/modular_sand/code/modules/mob/living/simple_animal/bot/hugbot.dm b/modular_sand/code/modules/mob/living/simple_animal/bot/hugbot.dm index 2a3194445c..2d949b5297 100644 --- a/modular_sand/code/modules/mob/living/simple_animal/bot/hugbot.dm +++ b/modular_sand/code/modules/mob/living/simple_animal/bot/hugbot.dm @@ -294,10 +294,10 @@ return if(patient && path.len == 0 && (get_dist(src,patient) > 1)) - path = get_path_to(src, get_turf(patient), /turf/proc/Distance_cardinal, 0, 30,id=access_card) + path = get_path_to(src, get_turf(patient), 0, 30,id=access_card) mode = BOT_MOVING if(!path.len) //try to get closer if you can't reach the patient directly - path = get_path_to(src, get_turf(patient), /turf/proc/Distance_cardinal, 0, 30,1,id=access_card) + path = get_path_to(src, get_turf(patient), 0, 30,1,id=access_card) if(!path.len) //Do not chase a patient we cannot reach. soft_reset() diff --git a/modular_sand/code/modules/tgs/chat_commands.dm b/modular_sand/code/modules/tgs/chat_commands.dm index 6c8611306f..22be9f84c9 100644 --- a/modular_sand/code/modules/tgs/chat_commands.dm +++ b/modular_sand/code/modules/tgs/chat_commands.dm @@ -22,4 +22,7 @@ . = new /datum/tgs_message_content("Restarting.") to_chat(world, span_boldwarning("Server restart - Initialized by [sender.friendly_name] on Discord.")) send2adminchat("Server", "[sender.friendly_name] forced a restart.") - addtimer(CALLBACK(src, world.TgsEndProcess()), 1 SECONDS) + addtimer(CALLBACK(src, PROC_REF(DoEndProcess)), 1 SECONDS) + +/datum/tgs_chat_command/proc/DoEndProcess() + world.TgsEndProcess() diff --git a/modular_splurt/code/datums/elements/spooky.dm b/modular_splurt/code/datums/elements/spooky.dm index 5d6cd6f4db..cb6d6f45f8 100644 --- a/modular_splurt/code/datums/elements/spooky.dm +++ b/modular_splurt/code/datums/elements/spooky.dm @@ -27,7 +27,7 @@ if(L.client && !L.client.played) SEND_SOUND(L, sound(sound, repeat = 0, wait = 0, volume = 35, channel = CHANNEL_AMBIENCE)) L.client.played = TRUE - addtimer(CALLBACK(L.client, /client/proc/ResetAmbiencePlayed), 600) + addtimer(CALLBACK(L.client, TYPE_PROC_REF(/client, ResetAmbiencePlayed)), 600) if(65 to 70) //Lights flicker. var/obj/machinery/light/L = locate(/obj/machinery/light) in view(4, C) if(L) diff --git a/modular_splurt/code/modules/mob/living/carbon/human/species_types/zombies2.dm b/modular_splurt/code/modules/mob/living/carbon/human/species_types/zombies2.dm index ece75c92f6..ce682df972 100644 --- a/modular_splurt/code/modules/mob/living/carbon/human/species_types/zombies2.dm +++ b/modular_splurt/code/modules/mob/living/carbon/human/species_types/zombies2.dm @@ -365,7 +365,7 @@ if(iszombie(H)) metabolization_rate = 0 //We are born from it. return - addtimer(CALLBACK(H, /mob/living/carbon/human/proc/undeath, "undeath"), 60 SECONDS) + addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon/human, undeath), "undeath"), 60 SECONDS) if(!istype(H)) return var/datum/disease/D = new /datum/disease/heart_failure/livingdeath