mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-21 15:42:35 +00:00
Removes the phantom global definitions that Fowl found. Fixes: Game log in GELF not logging proper target. Pylon attacks not detecting the actual firer of a damaging bullet. A message in the mixer cooking machine. A message in airbubbles. A use_check sanity check in landmines. Some messages in psych therapy code. A view() checkk in psych therapy code. CCIA being unable to announce incoming faxes in some circumstances. Language whitelists potentially checking the whitelists of the last person to throw a tray in addition to the pref mob. Fixes some messages/sounds with some custom items. Fixes a message with digging into the asteroid. Fixes electrocution code not properly checking for absurdly long hair. Fixes a broken message in devour. Fixes a targeting issue with player-controlled hostile ranged mobs. Fixes failure behavior for modular RnD guns. Fixes an intent safety check on gun aim. Fixes the Harvester knock spell potentially not working.
254 lines
8.8 KiB
Plaintext
254 lines
8.8 KiB
Plaintext
//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
|
|
|
|
#define SEVERITY_ALERT 1 //Alert: action must be taken immediately
|
|
#define SEVERITY_CRITICAL 2 //Critical: critical conditions
|
|
#define SEVERITY_ERROR 3 //Error: error conditions
|
|
#define SEVERITY_WARNING 4 //Warning: warning conditions
|
|
#define SEVERITY_NOTICE 5 //Notice: normal but significant condition
|
|
#define SEVERITY_INFO 6 //Informational: informational messages
|
|
#define SEVERITY_DEBUG 7 //Debug: debug-level messages
|
|
|
|
/var/global/log_end = world.system_type == UNIX ? ascii2text(13) : ""
|
|
|
|
/proc/error(msg)
|
|
world.log << "## ERROR: [msg][log_end]"
|
|
|
|
#define WARNING(MSG) warning("[MSG] in [__FILE__] at line [__LINE__] src: [src] usr: [usr].")
|
|
//print a warning message to world.log
|
|
/proc/warning(msg)
|
|
world.log << "## WARNING: [msg][log_end]"
|
|
|
|
//print a testing-mode debug message to world.log
|
|
/proc/testing(msg)
|
|
world.log << "## TESTING: [msg][log_end]"
|
|
|
|
/proc/game_log(category, text)
|
|
diary << "\[[time_stamp()]] [game_id] [category]: [text][log_end]"
|
|
|
|
/proc/log_admin(text,level=5,ckey="",admin_key="",ckey_target="")
|
|
admin_log.Add(text)
|
|
if (config.log_admin)
|
|
game_log("ADMIN", text)
|
|
send_gelf_log(short_message=text, long_message="[time_stamp()]: [text]",level=level,category="ADMIN",additional_data=list("_ckey"=html_encode(ckey),"_admin_key"=html_encode(admin_key),"_ckey_target"=html_encode(ckey_target)))
|
|
|
|
/proc/log_debug(text,level = SEVERITY_DEBUG)
|
|
if (config.log_debug)
|
|
game_log("DEBUG", text)
|
|
|
|
if (level == SEVERITY_ERROR) // Errors are always logged
|
|
error(text)
|
|
|
|
for(var/client/C in admins)
|
|
if(!C.prefs) //This is to avoid null.toggles runtime error while still initialyzing players preferences
|
|
return
|
|
if(C.prefs.toggles & CHAT_DEBUGLOGS)
|
|
C << "DEBUG: [text]"
|
|
send_gelf_log(short_message = text, long_message = "[time_stamp()]: [text]", level = level, category = "DEBUG")
|
|
|
|
/proc/log_game(text, level = SEVERITY_NOTICE, ckey = "", admin_key = "", ckey_target = "")
|
|
if (config.log_game)
|
|
game_log("GAME", text)
|
|
send_gelf_log(
|
|
short_message = text,
|
|
long_message = "[time_stamp()]: [text]",
|
|
level = level,
|
|
category = "GAME",
|
|
additional_data = list("_ckey" = html_encode(ckey), "_admin_key" = html_encode(admin_key), "_target" = html_encode(ckey_target))
|
|
)
|
|
|
|
/proc/log_vote(text)
|
|
if (config.log_vote)
|
|
game_log("VOTE", text)
|
|
send_gelf_log(short_message=text, long_message="[time_stamp()]: [text]",level=5,category="VOTE")
|
|
|
|
/proc/log_access(text, level = SEVERITY_NOTICE,ckey="")
|
|
if (config.log_access)
|
|
game_log("ACCESS", text)
|
|
send_gelf_log(short_message=text, long_message="[time_stamp()]: [text]",level=level,category="ACCESS",additional_data=list("_ckey"=html_encode(ckey)))
|
|
|
|
/proc/log_say(text, level = SEVERITY_NOTICE, ckey = "")
|
|
if (config.log_say)
|
|
game_log("SAY", text)
|
|
send_gelf_log(short_message=text, long_message="[time_stamp()]: [text]",level=level,category="SAY",additional_data=list("_ckey"=html_encode(ckey)))
|
|
|
|
/proc/log_ooc(text, level = SEVERITY_NOTICE, ckey = "")
|
|
if (config.log_ooc)
|
|
game_log("OOC", text)
|
|
send_gelf_log(short_message = text, long_message = "[time_stamp()]: [text]", level = level, category = "OOC", additional_data = list("_ckey" = html_encode(ckey)))
|
|
|
|
/proc/log_whisper(text, level = SEVERITY_NOTICE, ckey = "")
|
|
if (config.log_whisper)
|
|
game_log("WHISPER", text)
|
|
send_gelf_log(short_message = text, long_message = "[time_stamp()]: [text]", level = level, category = "WHISPER", additional_data = list("_ckey" = html_encode(ckey)))
|
|
|
|
/proc/log_emote(text, level = SEVERITY_NOTICE, ckey = "")
|
|
if (config.log_emote)
|
|
game_log("EMOTE", text)
|
|
send_gelf_log(short_message = text, long_message = "[time_stamp()]: [text]",level = level,category = "EMOTE", additional_data = list("_ckey" = html_encode(ckey)))
|
|
|
|
/proc/log_attack(text, level = SEVERITY_NOTICE, ckey = "", ckey_target = "")
|
|
if (config.log_attack)
|
|
game_log("ATTACK", text)
|
|
send_gelf_log(
|
|
short_message = text,
|
|
long_message = "[time_stamp()]: [text]",
|
|
level = level,
|
|
category="ATTACK",
|
|
additional_data = list("_ckey" = html_encode(ckey), "_ckey_target" = html_encode(ckey_target))
|
|
)
|
|
|
|
/proc/log_adminsay(text)
|
|
if (config.log_adminchat)
|
|
game_log("ADMINSAY", text)
|
|
send_gelf_log(short_message = text, long_message = "[time_stamp()]: [text]",level = SEVERITY_NOTICE, category = "ADMINSAY")
|
|
|
|
/proc/log_pda(text, level = SEVERITY_NOTICE, ckey = "", ckey_target = "")
|
|
if (config.log_pda)
|
|
game_log("PDA", text)
|
|
send_gelf_log(
|
|
short_message = text,
|
|
long_message = "[time_stamp()]: [text]",
|
|
level = level,
|
|
category="PDA",
|
|
additional_data = list("_ckey" = html_encode(ckey), "_ckey_target" = html_encode(ckey_target))
|
|
)
|
|
|
|
/proc/log_ntirc(text, level = SEVERITY_NOTICE, ckey = "", conversation = "")
|
|
if (config.log_pda)
|
|
game_log("NTIRC", text)
|
|
send_gelf_log(
|
|
short_message = text,
|
|
long_message="[time_stamp()]: [text]",
|
|
level = level,
|
|
category = "NTIRC",
|
|
additional_data = list("_ckey" = html_encode(ckey), "_ntirc_conversation" = html_encode(conversation))
|
|
)
|
|
|
|
/proc/log_to_dd(text)
|
|
world.log << text //this comes before the config check because it can't possibly runtime
|
|
if(config.log_world_output)
|
|
game_log("DD_OUTPUT", text)
|
|
send_gelf_log(short_message = text, long_message = "[time_stamp()]: [text]", level = SEVERITY_NOTICE, category = "DD_OUTPUT")
|
|
|
|
/proc/log_misc(text)
|
|
game_log("MISC", text)
|
|
send_gelf_log(short_message = text, long_message = "[time_stamp()]: [text]", level = SEVERITY_NOTICE, category="MISC")
|
|
|
|
/proc/log_mc(text)
|
|
game_log("MASTER", text)
|
|
send_gelf_log(text, "[time_stamp()]: [text]", SEVERITY_INFO, "MASTER")
|
|
|
|
/proc/log_gc(text, type, high_severity = FALSE)
|
|
game_log("GC", text)
|
|
send_gelf_log(text, "[time_stamp()]: [text]", high_severity ? SEVERITY_WARNING : SEVERITY_DEBUG, "GARBAGE", additional_data = list("_type" = "[type]"))
|
|
|
|
/proc/log_ss(subsystem, text, log_world = TRUE)
|
|
if (!subsystem)
|
|
subsystem = "UNKNOWN"
|
|
var/msg = "[subsystem]: [text]"
|
|
game_log("SS", msg)
|
|
send_gelf_log(msg, "[time_stamp()]: [msg]", SEVERITY_DEBUG, "SUBSYSTEM", additional_data = list("_subsystem" = subsystem))
|
|
if (log_world)
|
|
world.log << "SS[subsystem]: [text]"
|
|
|
|
/proc/log_ss_init(text)
|
|
game_log("SS", "[text]")
|
|
send_gelf_log(text, "[time_stamp()]: [text]", SEVERITY_INFO, "SS Init")
|
|
|
|
// Generally only used when something has gone very wrong.
|
|
/proc/log_failsafe(text)
|
|
game_log("FAILSAFE", text)
|
|
send_gelf_log(text, "[time_stamp()]: [text]", SEVERITY_ALERT, "FAILSAFE")
|
|
|
|
/proc/log_unit_test(text)
|
|
world.log << "## UNIT_TEST ##: [text]"
|
|
|
|
/proc/log_exception(exception/e)
|
|
if (config.log_runtime)
|
|
if (config.log_runtime == 2)
|
|
log_debug("RUNTIME ERROR:\n[e.name]")
|
|
|
|
diary_runtime << "runtime error:[e.name][log_end]"
|
|
diary_runtime << "[e.desc]"
|
|
send_gelf_log(short_message = "runtime error:[e.name]", long_message = "[e.desc]", level = SEVERITY_WARNING, category = "RUNTIME")
|
|
|
|
//pretty print a direction bitflag, can be useful for debugging.
|
|
/proc/print_dir(var/dir)
|
|
var/list/comps = list()
|
|
if(dir & NORTH) comps += "NORTH"
|
|
if(dir & SOUTH) comps += "SOUTH"
|
|
if(dir & EAST) comps += "EAST"
|
|
if(dir & WEST) comps += "WEST"
|
|
if(dir & UP) comps += "UP"
|
|
if(dir & DOWN) comps += "DOWN"
|
|
|
|
return english_list(comps, nothing_text="0", and_text="|", comma_text="|")
|
|
|
|
//more or less a logging utility
|
|
/proc/key_name(var/whom, var/include_link = null, var/include_name = 1, var/highlight_special = 0, var/datum/ticket/ticket = null)
|
|
var/mob/M
|
|
var/client/C
|
|
var/key
|
|
|
|
if(!whom) return "*null*"
|
|
if(istype(whom, /client))
|
|
C = whom
|
|
M = C.mob
|
|
key = C.key
|
|
else if(ismob(whom))
|
|
M = whom
|
|
C = M.client
|
|
key = M.key
|
|
else if(istype(whom, /datum/mind))
|
|
var/datum/mind/D = whom
|
|
key = D.key
|
|
M = D.current
|
|
if(D.current)
|
|
C = D.current.client
|
|
else if(istype(whom, /datum))
|
|
var/datum/D = whom
|
|
return "*invalid:[D.type]*"
|
|
else
|
|
return "*invalid*"
|
|
|
|
. = ""
|
|
|
|
if(key)
|
|
if(include_link && C)
|
|
. += "<a href='?priv_msg=\ref[C];ticket=\ref[ticket]'>"
|
|
|
|
if(C && C.holder && C.holder.fakekey && !include_name)
|
|
. += "Administrator"
|
|
else
|
|
. += key
|
|
|
|
if(include_link)
|
|
if(C) . += "</a>"
|
|
else . += " (DC)"
|
|
else
|
|
. += "*no key*"
|
|
|
|
if(include_name && M)
|
|
var/name
|
|
|
|
if(M.real_name)
|
|
name = M.real_name
|
|
else if(M.name)
|
|
name = M.name
|
|
|
|
|
|
if(is_special_character(M) && highlight_special)
|
|
. += "/(<font color='#FFA500'>[name]</font>)" //Orange
|
|
else
|
|
. += "/([name])"
|
|
|
|
return .
|
|
|
|
/proc/key_name_admin(var/whom, var/include_name = 1)
|
|
return key_name(whom, 1, include_name, 1)
|