/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")