diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index fa1d696a067..50653a71199 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -263,12 +263,13 @@ /atom/proc/AltClick(var/mob/user) var/turf/T = get_turf(src) - if(T && user.TurfAdjacent(T)) - if(user.listed_turf == T) - user.listed_turf = null - else + if(T) + if(user.TurfAdjacent(T)) user.listed_turf = T user.client.statpanel = T.name + // If we had a method to force a `Stat` update, it would go here + else + user.listed_turf = null return /mob/proc/TurfAdjacent(var/turf/T) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 93b94e74f9e..b2a63e7b25e 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -943,17 +943,7 @@ var/list/slot_equipment_priority = list( \ /mob/Stat() ..() - if(listed_turf && client) - if(!TurfAdjacent(listed_turf)) - listed_turf = null - else - statpanel(listed_turf.name, null, listed_turf) - for(var/atom/A in listed_turf) - if(A.invisibility > see_invisible) - continue - if(is_type_in_list(A, shouldnt_see)) - continue - statpanel(listed_turf.name, null, A) + show_stat_turf_contents() statpanel("Status") // We only want alt-clicked turfs to come before Status @@ -990,6 +980,23 @@ var/list/slot_equipment_priority = list( \ if(ETA) stat(null, "[ETA] [shuttle_master.emergency.getTimerStr()]") +/mob/proc/show_stat_turf_contents() + if(listed_turf && client) + if(!TurfAdjacent(listed_turf)) + listed_turf = null + else + statpanel(listed_turf.name, null, listed_turf) + var/list/statpanel_things = list() + for(var/foo in listed_turf) + var/atom/A = foo + if(A.invisibility > see_invisible) + continue + if(is_type_in_list(A, shouldnt_see)) + continue + statpanel_things += A + statpanel(listed_turf.name, null, statpanel_things) + + /mob/proc/add_stings_to_statpanel(var/list/stings) for(var/obj/effect/proc_holder/changeling/S in stings) if(S.chemical_cost >=0 && S.can_be_used_by(src))