/client/proc/cmd_admin_check_player_logs(mob/living/M as mob in mob_list) set category = "Admin" set name = "Check Player Attack Logs" set desc = "Check a player's attack logs." //Views specific attack logs belonging to one player. var/dat = "[M]'s Attack Log:
" dat += "Viewing attack logs of [M] - (Played by ([key_name(M)]).
" if(M.mind) dat += "Current Antag?: [(M.mind.special_role)?"Yes":"No"]
" dat += "
Note: This is arranged from earliest to latest.

" if(!isemptylist(M.attack_log)) dat += "
" for(var/l in M.attack_log) dat += "[l]
" dat += "
" else dat += "No attack logs found for [M]." var/datum/browser/popup = new(usr, "admin_attack_log", "[src]", 650, 650, src) popup.set_content(jointext(dat,null)) popup.open() onclose(usr, "admin_attack_log") feedback_add_details("admin_verb","PL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_check_dialogue_logs(mob/living/M as mob in mob_list) set category = "Admin" set name = "Check Player Dialogue Logs" set desc = "Check a player's dialogue logs." //Views specific dialogue logs belonging to one player. var/dat = "[M]'s Dialogue Log:
" dat += "Viewing say and emote logs of [M] - (Played by ([key_name(M)]).
" if(M.mind) dat += "Current Antag?: [(M.mind.special_role)?"Yes":"No"]
" dat += "
Note: This is arranged from earliest to latest.

" if(!isemptylist(M.dialogue_log)) dat += "
" for(var/d in M.dialogue_log) dat += "[d]
" dat += "
" else dat += "No dialogue logs found for [M]." var/datum/browser/popup = new(usr, "admin_dialogue_log", "[src]", 650, 650, src) popup.set_content(jointext(dat,null)) popup.open() onclose(usr, "admin_dialogue_log") feedback_add_details("admin_verb","PDL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! // Used to get `atom/O as obj|mob|turf in view()` to match against strings containing apostrophes immediately after substrings that match to other objects. Somehow. - Ater /proc/admin_atom_validate(atom/A) return view()