/proc/show_individual_logging_panel(mob/M, type = INDIVIDUAL_ATTACK_LOG) if(!M || !ismob(M)) return var/dat = "
Attack log | " dat += "Say log | " dat += "Emote log | " dat += "OOC log | " dat += "Show all | " dat += "Refresh
" dat += "
" if(type == INDIVIDUAL_SHOW_ALL_LOG) dat += "
Displaying all logs of [key_name(M)]


" for(var/log_type in M.logging) dat += "
[log_type]

" var/list/reversed = M.logging[log_type] if(islist(reversed)) reversed = reverseRange(reversed.Copy()) for(var/entry in reversed) dat += "[entry]: [reversed[entry]]
" dat += "
" else dat += "
[type] of [key_name(M)]

" var/list/reversed = M.logging[type] if(reversed) reversed = reverseRange(reversed.Copy()) for(var/entry in reversed) dat += "[entry]: [reversed[entry]]
" usr << browse(dat, "window=invidual_logging_[M];size=600x480")