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