//print an error message to world.log
// On Linux/Unix systems the line endings are LF, on windows it's CRLF, admins that don't use notepad++
// will get logs that are one big line if the system is Linux and they are using notepad. This solves it by adding CR to every line ending
// in the logs. ascii character 13 = CR
/var/global/log_end= world.system_type == UNIX ? ascii2text(13) : ""
/proc/error(msg)
log_to_dd("## ERROR: [msg]")
#define WARNING(MSG) warning("[MSG] in [__FILE__] at line [__LINE__] src: [src] usr: [usr].")
//print a warning message to world.log
/proc/warning(msg)
log_to_dd("## WARNING: [msg]")
//print a testing-mode debug message to world.log
/proc/testing(msg)
log_to_dd("## TESTING: [msg]")
/proc/log_admin(text)
admin_log.Add(text)
if(config.log_admin)
diary << "\[[time_stamp()]]ADMIN: [text]"
/proc/log_debug(text)
if(config.log_debug)
diary << "\[[time_stamp()]]DEBUG: [text]"
for(var/client/C in admins)
if(check_rights(R_DEBUG, 0, C.mob) && (C.prefs.toggles & CHAT_DEBUGLOGS))
to_chat(C, "DEBUG: [text]")
/proc/log_game(text)
if(config.log_game)
diary << "\[[time_stamp()]]GAME: [text]"
/proc/log_vote(text)
if(config.log_vote)
diary << "\[[time_stamp()]]VOTE: [text]"
/proc/log_access(text)
if(config.log_access)
diary << "\[[time_stamp()]]ACCESS: [text]"
/proc/log_say(text)
if(config.log_say)
diary << "\[[time_stamp()]]SAY: [text]"
/proc/log_ooc(text)
if(config.log_ooc)
diary << "\[[time_stamp()]]OOC: [text]"
/proc/log_whisper(text)
if(config.log_whisper)
diary << "\[[time_stamp()]]WHISPER: [text]"
/proc/log_emote(text)
if(config.log_emote)
diary << "\[[time_stamp()]]EMOTE: [text]"
/proc/log_attack(text)
if(config.log_attack)
diary << "\[[time_stamp()]]ATTACK: [text]" //Seperate attack logs? Why?
/proc/log_adminsay(text)
if(config.log_adminchat)
diary << "\[[time_stamp()]]ADMINSAY: [text]"
/proc/log_adminwarn(text)
if(config.log_adminwarn)
diary << "\[[time_stamp()]]ADMINWARN: [text]"
/proc/log_pda(text)
if(config.log_pda)
diary << "\[[time_stamp()]]PDA: [text][log_end]"
/proc/log_misc(text)
diary << "\[[time_stamp()]]MISC: [text][log_end]"
/proc/log_to_dd(text)
world.log << text
if(config && config.log_world_output)
diary << "\[[time_stamp()]]DD_OUTPUT: [text][log_end]"
/**
* Standardized method for tracking startup times.
*/
/proc/log_startup_progress(var/message)
to_chat(world, "[message]")
log_to_dd(message)
// A logging proc that only outputs after setup is done, to
// help devs test initialization stuff that happens a lot
/proc/log_after_setup(var/message)
if(ticker && ticker.current_state > GAME_STATE_SETTING_UP)
to_chat(world, "[message]")
log_to_dd(message)
// Helper procs for building detailed log lines
/proc/datum_info_line(var/datum/d)
if(!istype(d))
return
if(!istype(d, /mob))
return "[d] ([d.type])"
var/mob/m = d
return "[m] ([m.ckey]) ([m.type])"
/proc/atom_loc_line(var/atom/a)
if(!istype(a))
return
var/turf/t = get_turf(a)
if(istype(t))
return "[a.loc] ([t.x],[t.y],[t.z]) ([a.loc.type])"
else if(a.loc)
return "[a.loc] (0,0,0) ([a.loc.type])"