diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 27ade3e205a..536120f5c70 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -323,3 +323,7 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s #define NL_NOT_DISABLED 0 #define NL_TEMPORARY_DISABLE 1 #define NL_PERMANENT_DISABLE 2 + +// Used for creating soft references to objects. A manner of storing an item reference +// as text so you don't necessarily fuck with an object's ability to be garbage collected. +#define SOFTREF(A) "\ref[A]" diff --git a/code/controllers/subsystems/arrivals.dm b/code/controllers/subsystems/arrivals.dm index 2ea0f820eb8..5603692249a 100644 --- a/code/controllers/subsystems/arrivals.dm +++ b/code/controllers/subsystems/arrivals.dm @@ -40,7 +40,7 @@ log_debug("SSarrivals: [M] has entered arrival shuttle hotzone.") if (istype(M)) - current_mobs += "\ref[M]" + current_mobs += SOFTREF(M) wake() // Wake the process. @@ -48,7 +48,7 @@ set_launch_countdown(30) /datum/controller/subsystem/arrivals/proc/on_hotzone_exit(mob/living/M) - current_mobs -= "\ref[M]" + current_mobs -= SOFTREF(M) log_debug("SSarrivals: [M] has exited arrival shuttle hotzone.") //called when the shuttle has arrived. diff --git a/code/controllers/subsystems/garbage.dm b/code/controllers/subsystems/garbage.dm index ba616a8196e..b1d93aceb5a 100644 --- a/code/controllers/subsystems/garbage.dm +++ b/code/controllers/subsystems/garbage.dm @@ -138,12 +138,12 @@ var/datum/controller/subsystem/garbage_collector/SSgarbage var/time = world.timeofday var/tick = world.tick_usage var/ticktime = world.time - + var/type = A.type var/refID = "\ref[A]" - + del(A) - + tick = (world.tick_usage-tick+((world.time-ticktime)/world.tick_lag*100)) if (tick > highest_del_tickusage) highest_del_tickusage = tick diff --git a/code/controllers/subsystems/processing/nanoui.dm b/code/controllers/subsystems/processing/nanoui.dm index a057c1580f1..4ddf3693c38 100644 --- a/code/controllers/subsystems/processing/nanoui.dm +++ b/code/controllers/subsystems/processing/nanoui.dm @@ -52,7 +52,7 @@ var/datum/controller/subsystem/processing/nanoui/SSnanoui * @return /nanoui Returns the found ui, or null if none exists */ /datum/controller/subsystem/processing/nanoui/proc/get_open_ui(mob/user, src_object, ui_key) - var/src_object_key = "\ref[src_object]" + var/src_object_key = SOFTREF(src_object) if (!LAZYLEN(open_uis[src_object_key]) || !LAZYLEN(open_uis[src_object_key][ui_key])) return null @@ -71,7 +71,7 @@ var/datum/controller/subsystem/processing/nanoui/SSnanoui * @return int The number of uis updated */ /datum/controller/subsystem/processing/nanoui/proc/update_uis(src_object) - var/src_object_key = "\ref[src_object]" + var/src_object_key = SOFTREF(src_object) if (!LAZYLEN(open_uis[src_object_key])) return 0 @@ -92,7 +92,7 @@ var/datum/controller/subsystem/processing/nanoui/SSnanoui * @return int The number of uis close */ /datum/controller/subsystem/processing/nanoui/proc/close_uis(src_object) - var/src_object_key = "\ref[src_object]" + var/src_object_key = SOFTREF(src_object) if (!open_uis[src_object_key] || !islist(open_uis[src_object_key])) return 0 @@ -146,7 +146,7 @@ var/datum/controller/subsystem/processing/nanoui/SSnanoui * @return nothing */ /datum/controller/subsystem/processing/nanoui/proc/ui_opened(datum/nanoui/ui) - var/src_object_key = "\ref[ui.src_object]" + var/src_object_key = SOFTREF(ui.src_object) LAZYINITLIST(open_uis[src_object_key]) LAZYADD(ui.user.open_uis, ui) @@ -163,7 +163,7 @@ var/datum/controller/subsystem/processing/nanoui/SSnanoui * @return int 0 if no ui was removed, 1 if removed successfully */ /datum/controller/subsystem/processing/nanoui/proc/ui_closed(datum/nanoui/ui) - var/src_object_key = "\ref[ui.src_object]" + var/src_object_key = SOFTREF(ui.src_object) var/ui_key = ui.ui_key var/list/obj_uis = open_uis[src_object_key] diff --git a/code/modules/client/preferences_notification.dm b/code/modules/client/preferences_notification.dm index 54c644dd5ad..171aab8fb84 100644 --- a/code/modules/client/preferences_notification.dm +++ b/code/modules/client/preferences_notification.dm @@ -31,8 +31,8 @@ note_wrapper = new_wrapper note_text = new_text - note_text = replacetextEx(note_text, ":src_ref", "\ref[src]") - note_wrapper[1] = replacetextEx(note_wrapper[1], ":src_ref", "\ref[src]") + note_text = replacetextEx(note_text, ":src_ref", SOFTREF(src)) + note_wrapper[1] = replacetextEx(note_wrapper[1], ":src_ref", SOFTREF(src)) if (new_persistence) persistent = new_persistence diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index 77dfcd41330..b9ecc4f6cdd 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -43,10 +43,10 @@ for (var/j = 1, j <= group_size, j++) if(prob(99)) var/mob/living/simple_animal/hostile/carp/carp = new(spawn_locations[i]) - spawned_carp += "\ref[carp]" + spawned_carp += SOFTREF(carp) else var/mob/living/simple_animal/hostile/carp/shark/carp = new(spawn_locations[i]) - spawned_carp += "\ref[carp]" + spawned_carp += SOFTREF(carp) i++ /datum/event/carp_migration/proc/spawn_caverndweller(var/num_groups, var/group_size_min=2, var/group_size_max=3) @@ -63,7 +63,7 @@ var/group_size = rand(group_size_min, group_size_max) for (var/j = 1, j <= group_size, j++) var/mob/living/simple_animal/hostile/retaliate/cavern_dweller/dweller = new(spawn_locations[i]) - spawned_dweller += "\ref[dweller]" + spawned_dweller += SOFTREF(dweller) i++ /datum/event/carp_migration/end() diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index a0ede92b8b2..e0ae4c533e5 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -754,9 +754,9 @@ H << "The APC power currents surge eratically, damaging your chassis!" H.adjustFireLoss(10, 0) if(infected) - if("\ref[H]" in hacked_ipcs) + if(SOFTREF(H) in hacked_ipcs) return - LAZYADD(hacked_ipcs, "\ref[H]") + LAZYADD(hacked_ipcs, SOFTREF(H)) infected = 0 H << "Fil$ Transfer Complete. Er-@4!#%!. New Master detected: [hacker]! Obey their commands." hacker << "Corrupt files transfered to [H]. They are now under your control until they are reparied."