")
+ to_chat(world, span_alert("[message]"))
if(announcer)
- to_world(span_alert(" -[html_encode(announcer)]"))
- to_world(span_alert(" "))
+ to_chat(world, span_alert(" -[html_encode(announcer)]"))
+ to_chat(world, span_alert(" "))
/datum/announcement/priority/command/Message(message as text, message_title as text, var/list/zlevels)
var/command
diff --git a/code/game/antagonist/antagonist.dm b/code/game/antagonist/antagonist.dm
index 493a127c14..43f1301f18 100644
--- a/code/game/antagonist/antagonist.dm
+++ b/code/game/antagonist/antagonist.dm
@@ -111,22 +111,22 @@
for(var/datum/mind/player in candidates)
if(ghosts_only && !isobserver(player.current))
candidates -= player
- log_debug("[key_name(player)] is not eligible to become a [role_text]: Only ghosts may join as this role! They have been removed from the draft.")
+ log_game("[key_name(player)] is not eligible to become a [role_text]: Only ghosts may join as this role! They have been removed from the draft.")
else if(CONFIG_GET(flag/use_age_restriction_for_antags) && player.current.client.player_age < minimum_player_age)
candidates -= player
- log_debug("[key_name(player)] is not eligible to become a [role_text]: Is only [player.current.client.player_age] day\s old, has to be [minimum_player_age] day\s!")
+ log_game("[key_name(player)] is not eligible to become a [role_text]: Is only [player.current.client.player_age] day\s old, has to be [minimum_player_age] day\s!")
else if(player.special_role)
candidates -= player
- log_debug("[key_name(player)] is not eligible to become a [role_text]: They already have a special role ([player.special_role])! They have been removed from the draft.")
+ log_game("[key_name(player)] is not eligible to become a [role_text]: They already have a special role ([player.special_role])! They have been removed from the draft.")
else if (player in pending_antagonists)
candidates -= player
- log_debug("[key_name(player)] is not eligible to become a [role_text]: They have already been selected for this role! They have been removed from the draft.")
+ log_game("[key_name(player)] is not eligible to become a [role_text]: They have already been selected for this role! They have been removed from the draft.")
else if(!can_become_antag(player))
candidates -= player
- log_debug("[key_name(player)] is not eligible to become a [role_text]: They are blacklisted for this role! They have been removed from the draft.")
+ log_game("[key_name(player)] is not eligible to become a [role_text]: They are blacklisted for this role! They have been removed from the draft.")
else if(player_is_antag(player))
candidates -= player
- log_debug("[key_name(player)] is not eligible to become a [role_text]: They are already an antagonist! They have been removed from the draft.")
+ log_game("[key_name(player)] is not eligible to become a [role_text]: They are already an antagonist! They have been removed from the draft.")
return candidates
@@ -180,17 +180,17 @@
/datum/antagonist/proc/draft_antagonist(var/datum/mind/player)
//Check if the player can join in this antag role, or if the player has already been given an antag role.
if(!can_become_antag(player) || (player.assigned_role in roundstart_restricted))
- log_debug("[player.key] was selected for [role_text] by lottery, but is not allowed to be that role.")
+ log_game("[player.key] was selected for [role_text] by lottery, but is not allowed to be that role.")
return 0
if(player.special_role)
- log_debug("[player.key] was selected for [role_text] by lottery, but they already have a special role.")
+ log_game("[player.key] was selected for [role_text] by lottery, but they already have a special role.")
return 0
if(!(flags & ANTAG_OVERRIDE_JOB) && (!player.current || isnewplayer(player.current)))
- log_debug("[player.key] was selected for [role_text] by lottery, but they have not joined the game.")
+ log_game("[player.key] was selected for [role_text] by lottery, but they have not joined the game.")
return 0
pending_antagonists |= player
- log_debug("[player.key] has been selected for [role_text] by lottery.")
+ log_game("[player.key] has been selected for [role_text] by lottery.")
//Ensure that antags with ANTAG_OVERRIDE_JOB do not occupy job slots.
if(flags & ANTAG_OVERRIDE_JOB)
diff --git a/code/game/antagonist/antagonist_objectives.dm b/code/game/antagonist/antagonist_objectives.dm
index 2926fcde42..cda117daa4 100644
--- a/code/game/antagonist/antagonist_objectives.dm
+++ b/code/game/antagonist/antagonist_objectives.dm
@@ -24,10 +24,10 @@
if(!O.completed && !O.check_completion())
result = 0
if(result && victory_text)
- to_world(span_boldannounce(span_large("[victory_text]")))
+ to_chat(world, span_boldannounce(span_large("[victory_text]")))
if(victory_feedback_tag) feedback_set_details("round_end_result","[victory_feedback_tag]")
else if(loss_text)
- to_world(span_boldannounce(span_large("[loss_text]")))
+ to_chat(world, span_boldannounce(span_large("[loss_text]")))
if(loss_feedback_tag) feedback_set_details("round_end_result","[loss_feedback_tag]")
/mob/living/proc/write_ambition()
diff --git a/code/game/antagonist/antagonist_print.dm b/code/game/antagonist/antagonist_print.dm
index c8d6493bc8..fbd01206c1 100644
--- a/code/game/antagonist/antagonist_print.dm
+++ b/code/game/antagonist/antagonist_print.dm
@@ -38,7 +38,7 @@
num++
// Display the results.
- to_world(text)
+ to_chat(world, text)
/datum/antagonist/proc/print_objective(var/datum/objective/O, var/num, var/append_success)
var/text = " " + span_bold("Objective [num]:") + " [O.explanation_text] "
diff --git a/code/game/antagonist/outsider/raider.dm b/code/game/antagonist/outsider/raider.dm
index 691b22f852..90dfd821f8 100644
--- a/code/game/antagonist/outsider/raider.dm
+++ b/code/game/antagonist/outsider/raider.dm
@@ -187,8 +187,8 @@ var/datum/antagonist/raider/raiders
else
win_msg += span_bold("The Raiders were repelled!")
- to_world(span_boldannounce(span_large("[win_type] [win_group] victory!")))
- to_world(span_filter_system("[win_msg]"))
+ to_chat(world, span_boldannounce(span_large("[win_type] [win_group] victory!")))
+ to_chat(world, span_filter_system("[win_msg]"))
feedback_set_details("round_end_result","heist - [win_type] [win_group]")
/datum/antagonist/raider/proc/is_raider_crew_safe()
diff --git a/code/game/antagonist/outsider/technomancer.dm b/code/game/antagonist/outsider/technomancer.dm
index 38083baa65..7a6b88bbb3 100644
--- a/code/game/antagonist/outsider/technomancer.dm
+++ b/code/game/antagonist/outsider/technomancer.dm
@@ -78,7 +78,7 @@ var/datum/antagonist/technomancer/technomancers
break
if(!survivor)
feedback_set_details("round_end_result","loss - technomancer killed")
- to_world(span_boldannounce(span_large("The [(current_antagonists.len>1)?"[role_text_plural] have":"[role_text] has"] been killed!")))
+ to_chat(world, span_boldannounce(span_large("The [(current_antagonists.len>1)?"[role_text_plural] have":"[role_text] has"] been killed!")))
/datum/antagonist/technomancer/print_player_summary()
..()
@@ -87,7 +87,7 @@ var/datum/antagonist/technomancer/technomancers
continue // Only want abandoned cores.
if(!core.spells.len)
continue // Cores containing spells only.
- to_world(span_filter_system("Abandoned [core] had [english_list(core.spells)]. "))
+ to_chat(world, span_filter_system("Abandoned [core] had [english_list(core.spells)]. "))
/datum/antagonist/technomancer/print_player_full(var/datum/mind/player)
var/text = print_player_lite(player)
diff --git a/code/game/antagonist/outsider/wizard.dm b/code/game/antagonist/outsider/wizard.dm
index 0543ac718b..88668f403a 100644
--- a/code/game/antagonist/outsider/wizard.dm
+++ b/code/game/antagonist/outsider/wizard.dm
@@ -99,7 +99,7 @@ var/datum/antagonist/wizard/wizards
break
if(!survivor)
feedback_set_details("round_end_result","loss - wizard killed")
- to_world(span_boldannounce(span_large("The [(current_antagonists.len>1)?"[role_text_plural] have":"[role_text] has"] been killed by the crew!")))
+ to_chat(world, span_boldannounce(span_large("The [(current_antagonists.len>1)?"[role_text_plural] have":"[role_text] has"] been killed by the crew!")))
// Removing antag should remove spells
/datum/antagonist/wizard/remove_antagonist(datum/mind/player, show_message, implanted)
diff --git a/code/game/antagonist/station/rogue_ai.dm b/code/game/antagonist/station/rogue_ai.dm
index 2521943c26..5632c4c3a1 100644
--- a/code/game/antagonist/station/rogue_ai.dm
+++ b/code/game/antagonist/station/rogue_ai.dm
@@ -52,8 +52,8 @@ var/datum/antagonist/rogue_ai/malf
var/mob/living/silicon/ai/A = player.current
if(!istype(A))
- error("Non-AI mob designated malf AI! Report this.")
- to_world(span_filter_system("##ERROR: Non-AI mob designated malf AI! Report this."))
+ log_world("## ERROR Non-AI mob designated malf AI! Report this.")
+ to_chat(world, span_filter_system("##ERROR: Non-AI mob designated malf AI! Report this."))
return
A.setup_for_malf()
diff --git a/code/game/area/Away Mission areas.dm b/code/game/area/Away Mission areas.dm
index 3d57984241..c203fc5751 100644
--- a/code/game/area/Away Mission areas.dm
+++ b/code/game/area/Away Mission areas.dm
@@ -39,7 +39,7 @@
/area/proc/spawn_mob_on_turf()
if(!valid_mobs.len)
- to_world_log("[src] does not have a set valid mobs list!")
+ log_mapping("[src] does not have a set valid mobs list!")
return TRUE
var/mob/M
@@ -87,7 +87,7 @@
/area/proc/spawn_flora_on_turf()
if(!valid_flora.len)
- to_world_log("[src] does not have a set valid flora list!")
+ log_mapping("[src] does not have a set valid flora list!")
return TRUE
var/obj/F
diff --git a/code/game/area/Space Station 13 areas_vr.dm b/code/game/area/Space Station 13 areas_vr.dm
index 97a8f77e85..b684394e84 100644
--- a/code/game/area/Space Station 13 areas_vr.dm
+++ b/code/game/area/Space Station 13 areas_vr.dm
@@ -161,7 +161,7 @@
name = "\improper Research Outpost Gas Heating"
icon_state = "toxmix"
-/area/rnd/outpost/testing
+/area/rnd/outpost/toxtest
name = "\improper Research Outpost Testing"
icon_state = "toxtest"
diff --git a/code/game/gamemodes/calamity/calamity.dm b/code/game/gamemodes/calamity/calamity.dm
index 2295d07ebd..987eda3214 100644
--- a/code/game/gamemodes/calamity/calamity.dm
+++ b/code/game/gamemodes/calamity/calamity.dm
@@ -23,6 +23,6 @@
..()
/datum/game_mode/calamity/check_victory()
- to_world(span_world(span_large("This terrible, terrible day has finally ended!")))
+ to_chat(world, span_world(span_large("This terrible, terrible day has finally ended!")))
#undef ANTAG_TYPE_RATIO
diff --git a/code/game/gamemodes/cult/narsie.dm b/code/game/gamemodes/cult/narsie.dm
index 3d4b1c629e..23b4cd91dc 100644
--- a/code/game/gamemodes/cult/narsie.dm
+++ b/code/game/gamemodes/cult/narsie.dm
@@ -42,8 +42,8 @@ var/global/narsie_cometh = 0
/obj/singularity/narsie/large/Initialize(mapload)
. = ..()
if(announce)
- to_world(span_world(span_narsie(span_red("[uppertext(name)] HAS RISEN"))))
- world << sound('sound/effects/weather/old_wind/wind_5_1.ogg')
+ to_chat(world, span_world(span_narsie(span_red("[uppertext(name)] HAS RISEN"))))
+ world << sound('sound/effects/weather/old_wind/wind_5_1.ogg') // CHOMPEdit - For some reason different wind sound path
narsie_spawn_animation()
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index 5c206c658f..73e3ae8aaa 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -197,8 +197,8 @@ var/list/sacrificed = list()
cultists.Add(M)
if(cultists.len >= 9)
if(!narsie_cometh)//so we don't initiate Hell more than one time.
- to_world(span_narsie(span_red(span_bold("THE VEIL HAS BEEN SHATTERED!"))))
- world << sound('sound/effects/weather/old_wind/wind_5_1.ogg')
+ to_chat(world, span_world(span_narsie(span_red("THE VEIL HAS BEEN SHATTERED!"))))
+ world << sound('sound/effects/weather/old_wind/wind_5_1.ogg') // CHOMPEdit - No idea why this wind is here now
SetUniversalState(/datum/universal_state/hell)
narsie_cometh = 1
diff --git a/code/game/gamemodes/endgame/supermatter_cascade/universe.dm b/code/game/gamemodes/endgame/supermatter_cascade/universe.dm
index 923066ed7d..8872dc8565 100644
--- a/code/game/gamemodes/endgame/supermatter_cascade/universe.dm
+++ b/code/game/gamemodes/endgame/supermatter_cascade/universe.dm
@@ -37,7 +37,7 @@ GLOBAL_VAR_INIT(universe_has_ended, 0)
// Apply changes when entering state
/datum/universal_state/supermatter_cascade/OnEnter()
set background = 1
- to_world(span_sinister(span_cascade("You are blinded by a brilliant flash of energy.")))
+ to_chat(world, span_sinister(span_cascade("You are blinded by a brilliant flash of energy.")))
world << sound('sound/effects/cascade.ogg')
diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm
index 7868fd9802..473508468c 100644
--- a/code/game/gamemodes/events.dm
+++ b/code/game/gamemodes/events.dm
@@ -202,7 +202,7 @@ GLOBAL_VAR_INIT(hadevent, 0)
sleep(150)
command_announcement.Announce("Gr3y.T1d3 virus detected in [station_name()] imprisonment subroutines. Recommend station AI involvement.", "Security Alert")
else
- to_world_log("ERROR: Could not initate grey-tide. Unable find prison or brig area.")
+ log_world("ERROR: Could not initate grey-tide. Unable find prison or brig area.")
/proc/carp_migration() // -- Darem
for(var/obj/effect/landmark/C in GLOB.landmarks_list)
diff --git a/code/game/gamemodes/events/holidays/Holidays.dm b/code/game/gamemodes/events/holidays/Holidays.dm
index 5ed72ed191..5c90cf0397 100644
--- a/code/game/gamemodes/events/holidays/Holidays.dm
+++ b/code/game/gamemodes/events/holidays/Holidays.dm
@@ -260,11 +260,11 @@ GLOBAL_LIST_EMPTY(Holiday) //Holidays are lists now, so we can have more than on
holidays.Add(p)
holiday_blurbs.Add("[GLOB.Holiday[p]]")
var/holidays_string = english_list(holidays, nothing_text = "nothing", and_text = " and ", comma_text = ", ", final_comma_text = "" )
- to_world(span_filter_system(span_blue("and...")))
- to_world(span_filter_system("
")))
switch(GLOB.Holiday) //special holidays
//if("Easter")
//do easter stuff
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index dc4601e534..50a86cac66 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -117,11 +117,11 @@ GLOBAL_LIST_EMPTY(additional_antag_types)
return
/datum/game_mode/proc/announce() //to be called when round starts
- to_world(span_world("The current game mode is [capitalize(name)]!"))
+ to_chat(world, span_world("The current game mode is [capitalize(name)]!"))
if(round_description)
- to_world(span_filter_system("[round_description]"))
+ to_chat(world, span_filter_system("[round_description]"))
if(round_autoantag)
- to_world(span_filter_system("Antagonists will be added to the round automagically as needed."))
+ to_chat(world, span_filter_system("Antagonists will be added to the round automagically as needed."))
if(antag_templates && antag_templates.len)
var/antag_summary = span_bold("Possible antagonist types:") + " "
var/i = 1
@@ -135,7 +135,7 @@ GLOBAL_LIST_EMPTY(additional_antag_types)
i++
antag_summary += "."
if(antag_templates.len > 1 && GLOB.master_mode != "secret")
- to_world(span_filter_system("[antag_summary]"))
+ to_chat(world, span_filter_system("[antag_summary]"))
else
message_admins("[antag_summary]")
@@ -366,7 +366,7 @@ GLOBAL_LIST_EMPTY(additional_antag_types)
text += ". "
else
text += "There were " + span_bold("no survivors") + " (" + span_bold("[ghosts] ghosts") + ")."
- to_world(span_filter_system(text))
+ to_chat(world, span_filter_system(text))
if(clients > 0)
feedback_set("round_end_clients",clients)
@@ -433,7 +433,7 @@ GLOBAL_LIST_EMPTY(additional_antag_types)
if(isobserver(player) && !ghosts_only)
continue
if(!role || (player.client.prefs.be_special & role))
- log_debug("[player.key] had [antag_id] enabled, so we are drafting them.")
+ log_game("[player.key] had [antag_id] enabled, so we are drafting them.")
candidates |= player.mind
else
// Assemble a list of active players without jobbans.
@@ -444,7 +444,7 @@ GLOBAL_LIST_EMPTY(additional_antag_types)
// Get a list of all the people who want to be the antagonist for this round
for(var/mob/new_player/player in players)
if(!role || (player.client.prefs.be_special & role))
- log_debug("[player.key] had [antag_id] enabled, so we are drafting them.")
+ log_game("[player.key] had [antag_id] enabled, so we are drafting them.")
candidates += player.mind
players -= player
@@ -454,7 +454,7 @@ GLOBAL_LIST_EMPTY(additional_antag_types)
if(candidates.len < required_enemies)
for(var/mob/new_player/player in players)
if(player.ckey in round_voters)
- log_debug("[player.key] voted for this round, so we are drafting them.")
+ log_game("[player.key] voted for this round, so we are drafting them.")
candidates += player.mind
players -= player
break
diff --git a/code/game/gamemodes/malfunction/newmalf_ability_trees/HELPERS.dm b/code/game/gamemodes/malfunction/newmalf_ability_trees/HELPERS.dm
index 4b11c18204..64361ec1b1 100644
--- a/code/game/gamemodes/malfunction/newmalf_ability_trees/HELPERS.dm
+++ b/code/game/gamemodes/malfunction/newmalf_ability_trees/HELPERS.dm
@@ -43,7 +43,7 @@
if(!note)
- error("Hardware without description: [C]")
+ log_world("## ERROR Hardware without description: [C]")
return
var/confirmation = tgui_alert(user, "[note] - Is this what you want?", "Hardware selection", list("Yes", "No"))
diff --git a/code/game/gamemodes/meteor/meteor.dm b/code/game/gamemodes/meteor/meteor.dm
index e9668895c1..2ca52158e3 100644
--- a/code/game/gamemodes/meteor/meteor.dm
+++ b/code/game/gamemodes/meteor/meteor.dm
@@ -35,9 +35,9 @@
survivors++
if(survivors)
- to_world(span_world("The following survived the meteor storm") + ":[text]")
+ to_chat(world, span_world("The following survived the meteor storm") + ":[text]")
else
- to_world(span_boldannounce("Nobody survived the meteor storm!"))
+ to_chat(world, span_boldannounce("Nobody survived the meteor storm!"))
feedback_set_details("round_end_result","end - evacuation")
feedback_set("round_end_result",survivors)
diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm
index 5ebde0347e..ce920e2d19 100644
--- a/code/game/gamemodes/meteor/meteors.dm
+++ b/code/game/gamemodes/meteor/meteors.dm
@@ -38,7 +38,7 @@ GLOBAL_VAR_INIT(meteor_wave_delay, 625) //minimum wait between waves in tenths o
///////////////////////////////
/proc/spawn_meteors(var/number = 10, var/list/meteortypes, var/startSide, var/zlevel)
- log_debug("Spawning [number] meteors on the [dir2text(startSide)] of [zlevel]")
+ log_game("Spawning [number] meteors on the [dir2text(startSide)] of [zlevel]")
for(var/i = 0; i < number; i++)
spawn_meteor(meteortypes, startSide, zlevel)
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index 33ab06034d..bf13630dbe 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -45,47 +45,47 @@ GLOBAL_LIST_EMPTY(nuke_disks)
if(!disk_rescued && station_was_nuked && !syndies_didnt_escape)
feedback_set_details("round_end_result","win - syndicate nuke")
- to_world(span_filter_system(span_large(span_bold("Mercenary Major Victory!"))))
- to_world(span_filter_system(span_bold("[syndicate_name()] operatives have destroyed [station_name()]!")))
+ to_chat(world, span_filter_system(span_large(span_bold("Mercenary Major Victory!"))))
+ to_chat(world, span_filter_system(span_bold("[syndicate_name()] operatives have destroyed [station_name()]!")))
else if (!disk_rescued && station_was_nuked && syndies_didnt_escape)
feedback_set_details("round_end_result","halfwin - syndicate nuke - did not evacuate in time")
- to_world(span_filter_system(span_large(span_bold("Total Annihilation"))))
- to_world(span_filter_system(span_bold("[syndicate_name()] operatives destroyed [station_name()] but did not leave the area in time and got caught in the explosion.") + " Next time, don't lose the disk!"))
+ to_chat(world, span_filter_system(span_large(span_bold("Total Annihilation"))))
+ to_chat(world, span_filter_system(span_bold("[syndicate_name()] operatives destroyed [station_name()] but did not leave the area in time and got caught in the explosion.") + " Next time, don't lose the disk!"))
else if (!disk_rescued && !station_was_nuked && nuke_off_station && !syndies_didnt_escape)
feedback_set_details("round_end_result","halfwin - blew wrong station")
- to_world(span_filter_system(span_large(span_bold("Crew Minor Victory"))))
- to_world(span_filter_system(span_bold("[syndicate_name()] operatives secured the authentication disk but blew up something that wasn't [station_name()].") + " Next time, don't lose the disk!"))
+ to_chat(world, span_filter_system(span_large(span_bold("Crew Minor Victory"))))
+ to_chat(world, span_filter_system(span_bold("[syndicate_name()] operatives secured the authentication disk but blew up something that wasn't [station_name()].") + " Next time, don't lose the disk!"))
else if (!disk_rescued && !station_was_nuked && nuke_off_station && syndies_didnt_escape)
feedback_set_details("round_end_result","halfwin - blew wrong station - did not evacuate in time")
- to_world(span_filter_system(span_large(span_bold("[syndicate_name()] operatives have earned Darwin Award!"))))
- to_world(span_filter_system(span_bold("[syndicate_name()] operatives blew up something that wasn't [station_name()] and got caught in the explosion.") + " Next time, don't lose the disk!"))
+ to_chat(world, span_filter_system(span_large(span_bold("[syndicate_name()] operatives have earned Darwin Award!"))))
+ to_chat(world, span_filter_system(span_bold("[syndicate_name()] operatives blew up something that wasn't [station_name()] and got caught in the explosion.") + " Next time, don't lose the disk!"))
else if (disk_rescued && mercs.antags_are_dead())
feedback_set_details("round_end_result","loss - evacuation - disk secured - syndi team dead")
- to_world(span_filter_system(span_large(span_bold("Crew Major Victory!"))))
- to_world(span_filter_system(span_bold("The Research Staff has saved the disc and killed the [syndicate_name()] Operatives")))
+ to_chat(world, span_filter_system(span_large(span_bold("Crew Major Victory!"))))
+ to_chat(world, span_filter_system(span_bold("The Research Staff has saved the disc and killed the [syndicate_name()] Operatives")))
else if ( disk_rescued )
feedback_set_details("round_end_result","loss - evacuation - disk secured")
- to_world(span_filter_system(span_large(span_bold("Crew Major Victory"))))
- to_world(span_filter_system(span_bold("The Research Staff has saved the disc and stopped the [syndicate_name()] Operatives!")))
+ to_chat(world, span_filter_system(span_large(span_bold("Crew Major Victory"))))
+ to_chat(world, span_filter_system(span_bold("The Research Staff has saved the disc and stopped the [syndicate_name()] Operatives!")))
else if (!disk_rescued && mercs.antags_are_dead())
feedback_set_details("round_end_result","loss - evacuation - disk not secured")
- to_world(span_filter_system(span_large(span_bold("Mercenary Minor Victory!"))))
- to_world(span_filter_system(span_bold("The Research Staff failed to secure the authentication disk but did manage to kill most of the [syndicate_name()] Operatives!")))
+ to_chat(world, span_filter_system(span_large(span_bold("Mercenary Minor Victory!"))))
+ to_chat(world, span_filter_system(span_bold("The Research Staff failed to secure the authentication disk but did manage to kill most of the [syndicate_name()] Operatives!")))
else if (!disk_rescued && crew_evacuated)
feedback_set_details("round_end_result","halfwin - detonation averted")
- to_world(span_filter_system(span_large(span_bold("Mercenary Minor Victory!"))))
- to_world(span_filter_system(span_bold("[syndicate_name()] operatives recovered the abandoned authentication disk but detonation of [station_name()] was averted.") + " Next time, don't lose the disk!"))
+ to_chat(world, span_filter_system(span_large(span_bold("Mercenary Minor Victory!"))))
+ to_chat(world, span_filter_system(span_bold("[syndicate_name()] operatives recovered the abandoned authentication disk but detonation of [station_name()] was averted.") + " Next time, don't lose the disk!"))
else if (!disk_rescued && !crew_evacuated)
feedback_set_details("round_end_result","halfwin - interrupted")
- to_world(span_filter_system(span_large(span_bold("Neutral Victory"))))
- to_world(span_filter_system(span_bold("Round was mysteriously interrupted!")))
+ to_chat(world, span_filter_system(span_large(span_bold("Neutral Victory"))))
+ to_chat(world, span_filter_system(span_bold("Round was mysteriously interrupted!")))
return ..()
diff --git a/code/game/gamemodes/setupgame.dm b/code/game/gamemodes/setupgame.dm
index 45c4bfe29c..5e3293703a 100644
--- a/code/game/gamemodes/setupgame.dm
+++ b/code/game/gamemodes/setupgame.dm
@@ -39,7 +39,7 @@
GLOB.dna_genes_good.Add(G)
log_world("DNA2: Created traitgenes with [blocks_remaining.len] remaining blocks. Used [DNA_SE_LENGTH - blocks_remaining.len] out of [DNA_SE_LENGTH] ")
if(blocks_remaining.len < 10)
- warning("DNA2: Blocks remaining is less than 10. The DNA_SE_LENGTH should be raised in dna.dm.")
+ WARNING("DNA2: Blocks remaining is less than 10. The DNA_SE_LENGTH should be raised in dna.dm.")
// Run conflict-o-tron on each traitgene all other traits... Lets setup an initial database of conflicts.
log_world("DNA2: Checking trait gene conflicts")
for(var/datum/gene/trait/gene in GLOB.dna_genes)
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index 0e3b3d1c92..6bcc004a0c 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -15,7 +15,7 @@ var/global/datum/controller/occupations/job_master
//var/list/all_jobs = typesof(/datum/job)
var/list/all_jobs = list(/datum/job/assistant) | using_map.allowed_jobs
if(!all_jobs.len)
- to_world(span_boldannounce("Error setting up jobs, no job datums found!"))
+ to_chat(world, span_boldannounce("Error setting up jobs, no job datums found!"))
return 0
for(var/J in all_jobs)
var/datum/job/job = new J()
@@ -607,7 +607,7 @@ var/global/datum/controller/occupations/job_master
if(!CONFIG_GET(flag/load_jobs_from_txt))
return 0
- var/list/jobEntries = file2list(jobsfile)
+ var/list/jobEntries = world.file2list(jobsfile)
for(var/job in jobEntries)
if(!job)
diff --git a/code/game/jobs/whitelist.dm b/code/game/jobs/whitelist.dm
index ec2b6221ab..847f0c080d 100644
--- a/code/game/jobs/whitelist.dm
+++ b/code/game/jobs/whitelist.dm
@@ -8,7 +8,7 @@ GLOBAL_LIST_EMPTY(whitelist)
return 1
/proc/load_whitelist()
- GLOB.whitelist = file2list(WHITELISTFILE)
+ GLOB.whitelist = world.file2list(WHITELISTFILE)
if(!GLOB.whitelist.len) GLOB.whitelist = null
/proc/check_whitelist(mob/M /*, var/rank*/)
@@ -30,17 +30,17 @@ GLOBAL_LIST_EMPTY(alien_whitelist)
/proc/load_alienwhitelist()
var/text = file2text("config/alienwhitelist.txt")
if (!text)
- log_misc("Failed to load config/alienwhitelist.txt")
+ log_world("Failed to load config/alienwhitelist.txt")
else
var/lines = splittext(text, "\n") // Now we've got a bunch of "ckey = something" strings in a list
for(var/line in lines)
var/list/left_and_right = splittext(line, " - ") // Split it on the dash into left and right
if(LAZYLEN(left_and_right) != 2)
- warning("Alien whitelist entry is invalid: [line]") // If we didn't end up with a left and right, the line is bad
+ WARNING("Alien whitelist entry is invalid: [line]") // If we didn't end up with a left and right, the line is bad
continue
var/key = left_and_right[1]
if(key != ckey(key))
- warning("Alien whitelist entry appears to have key, not ckey: [line]") // The key contains invalid ckey characters
+ WARNING("Alien whitelist entry appears to have key, not ckey: [line]") // The key contains invalid ckey characters
continue
var/list/our_whitelists = GLOB.alien_whitelist[key] // Try to see if we have one already and add to it
if(!our_whitelists) // Guess this is their first/only whitelist entry
diff --git a/code/game/jobs/whitelist_vr.dm b/code/game/jobs/whitelist_vr.dm
index 1dc196a393..1dff822a82 100644
--- a/code/game/jobs/whitelist_vr.dm
+++ b/code/game/jobs/whitelist_vr.dm
@@ -8,7 +8,7 @@ GLOBAL_LIST_EMPTY(job_whitelist)
/proc/load_jobwhitelist()
var/text = file2text("config/jobwhitelist.txt")
if (!text)
- log_misc("Failed to load config/jobwhitelist.txt")
+ log_world("Failed to load config/jobwhitelist.txt")
else
GLOB.job_whitelist = splittext(text, "\n")
diff --git a/code/game/machinery/atm_ret_field.dm b/code/game/machinery/atm_ret_field.dm
index 88159a5fac..83f40627f7 100644
--- a/code/game/machinery/atm_ret_field.dm
+++ b/code/game/machinery/atm_ret_field.dm
@@ -164,7 +164,7 @@
//Delete ourselves if we find extra mapped in arfgs
for(var/obj/machinery/atmospheric_field_generator/F in loc)
if(F != src)
- log_debug("Duplicate ARFGS at [x],[y],[z]")
+ log_mapping("Duplicate ARFGS at [x],[y],[z]")
return INITIALIZE_HINT_QDEL
var/area/A = get_area(src)
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 83ac93e166..1978f96986 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -54,9 +54,9 @@
*/
if(!src.network || src.network.len < 1)
if(loc)
- error("[src.name] in [get_area(src)] (x:[src.x] y:[src.y] z:[src.z] has errored. [src.network?"Empty network list":"Null network list"]")
+ log_world("## ERROR [src.name] in [get_area(src)] (x:[src.x] y:[src.y] z:[src.z] has errored. [src.network?"Empty network list":"Null network list"]")
else
- error("[src.name] in [get_area(src)]has errored. [src.network?"Empty network list":"Null network list"]")
+ log_world("## ERROR [src.name] in [get_area(src)]has errored. [src.network?"Empty network list":"Null network list"]")
ASSERT(src.network)
ASSERT(src.network.len > 0)
// VOREStation Edit Start - Make mapping with cameras easier
diff --git a/code/game/machinery/camera/motion.dm b/code/game/machinery/camera/motion.dm
index a4486af8ea..d89c123b4d 100644
--- a/code/game/machinery/camera/motion.dm
+++ b/code/game/machinery/camera/motion.dm
@@ -59,7 +59,7 @@
return
var/atom/movable/AM = WF.resolve()
if(isnull(AM))
- log_debug("DEBUG: HasProximity called without reference on [src].")
+ log_runtime("DEBUG: HasProximity called without reference on [src].")
return
// Motion cameras outside of an "ai monitored" area will use this to detect stuff.
if (!area_motion)
diff --git a/code/game/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm
index be7f702f20..e3a38eeb41 100644
--- a/code/game/machinery/computer/guestpass.dm
+++ b/code/game/machinery/computer/guestpass.dm
@@ -216,7 +216,7 @@
accesses.Add(A)
else
to_chat(ui.user, span_warning("Invalid selection, please consult technical support if there are any issues."))
- log_debug("[key_name_admin(ui.user)] tried selecting an invalid guest pass terminal option.")
+ log_admin("[key_name_admin(ui.user)] tried selecting an invalid guest pass terminal option.")
if("id")
if(giver)
if(ishuman(ui.user))
diff --git a/code/game/machinery/computer/shuttle.dm b/code/game/machinery/computer/shuttle.dm
index 4fe8d40881..a48dfc100c 100644
--- a/code/game/machinery/computer/shuttle.dm
+++ b/code/game/machinery/computer/shuttle.dm
@@ -38,11 +38,11 @@
if (src.auth_need - src.authorized.len > 0)
message_admins("[key_name_admin(user)] has authorized early shuttle launch")
log_game("[user.ckey] has authorized early shuttle launch")
- to_world(span_boldnotice("Alert: [src.auth_need - src.authorized.len] authorizations needed until shuttle is launched early"))
+ to_chat(world, span_boldnotice("Alert: [src.auth_need - src.authorized.len] authorizations needed until shuttle is launched early"))
else
message_admins("[key_name_admin(user)] has launched the shuttle")
log_game("[user.ckey] has launched the shuttle early")
- to_world(span_boldnotice("Alert: Shuttle launch time shortened to 10 seconds!"))
+ to_chat(world, span_boldnotice("Alert: Shuttle launch time shortened to 10 seconds!"))
emergency_shuttle.set_launch_countdown(10)
//src.authorized = null
qdel(src.authorized)
@@ -50,10 +50,10 @@
if("Repeal")
src.authorized -= W:registered_name
- to_world(span_boldnotice("Alert: [src.auth_need - src.authorized.len] authorizations needed until shuttle is launched early"))
+ to_chat(world, span_boldnotice("Alert: [src.auth_need - src.authorized.len] authorizations needed until shuttle is launched early"))
if("Abort")
- to_world(span_boldnotice("All authorizations to shortening time for shuttle launch have been revoked!"))
+ to_chat(world, span_boldnotice("All authorizations to shortening time for shuttle launch have been revoked!"))
src.authorized.len = 0
src.authorized = list( )
@@ -63,7 +63,7 @@
if(!emagged && !emergency_shuttle.location() && user.get_active_hand() == W)
switch(choice)
if("Launch")
- to_world(span_boldnotice("Alert: Shuttle launch time shortened to 10 seconds!"))
+ to_chat(world, span_boldnotice("Alert: Shuttle launch time shortened to 10 seconds!"))
emergency_shuttle.set_launch_countdown(10)
emagged = 1
if("Cancel")
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index f6d9c8cdc2..151e2dcc66 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -56,7 +56,7 @@
//Delete ourselves if we find extra mapped in firedoors
for(var/obj/machinery/door/firedoor/F in loc)
if(F != src)
- log_debug("Duplicate firedoors at [x],[y],[z]")
+ log_mapping("Duplicate firedoors at [x],[y],[z]")
return INITIALIZE_HINT_QDEL
var/area/A = get_area(src)
diff --git a/code/game/machinery/embedded_controller/docking_program.dm b/code/game/machinery/embedded_controller/docking_program.dm
index 78dadca5e9..c5885e2727 100644
--- a/code/game/machinery/embedded_controller/docking_program.dm
+++ b/code/game/machinery/embedded_controller/docking_program.dm
@@ -117,7 +117,7 @@
if(docking_codes)
var/code = signal.data["code"]
if(code != docking_codes)
- log_debug("Controller [id_tag] got request_dock but code:[code] != docking_codes:[docking_codes]")
+ // to_chat(world, "Controller [id_tag] got request_dock but code:[code] != docking_codes:[docking_codes]")
return
control_mode = MODE_SERVER
diff --git a/code/game/machinery/embedded_controller/mapping_helpers.dm b/code/game/machinery/embedded_controller/mapping_helpers.dm
index 4b84fc513d..fcb46fe786 100644
--- a/code/game/machinery/embedded_controller/mapping_helpers.dm
+++ b/code/game/machinery/embedded_controller/mapping_helpers.dm
@@ -26,11 +26,14 @@ Any frequency works, it's self-setting, but it seems like people have decided AU
my_controller = get_controller(get_area(src))
my_device = locate(my_device_type) in get_turf(src)
if(!my_device)
- to_world(span_world("[span_red("WARNING:")][span_black("Airlock helper '[name]' couldn't find what it wanted at: X:[x] Y:[y] Z:[z]")]"))
+ to_chat(world, span_world("[span_red("WARNING:")][span_black("Airlock helper '[name]' couldn't find what it wanted at: X:[x] Y:[y] Z:[z]")]"))
+ log_mapping("WARNING: Airlock helper '[name]' couldn't find what it wanted at: X:[x] Y:[y] Z:[z]")
else if(!my_controller)
- to_world(span_world("[span_red("WARNING:")][span_black("Airlock helper '[name]' couldn't find a controller at: X:[x] Y:[y] Z:[z]")]"))
+ to_chat(world, span_world("[span_red("WARNING:")][span_black("Airlock helper '[name]' couldn't find a controller at: X:[x] Y:[y] Z:[z]")]"))
+ log_mapping("WARNING: Airlock helper '[name]' couldn't find a controller at: X:[x] Y:[y] Z:[z]")
else if(!my_controller.id_tag)
- to_world(span_world("[span_red("WARNING:")][span_black("Airlock helper '[name]' found a controller without an 'id_tag' set: X:[x] Y:[y] Z:[z]")]"))
+ to_chat(world, span_world("[span_red("WARNING:")][span_black("Airlock helper '[name]' found a controller without an 'id_tag' set: X:[x] Y:[y] Z:[z]")]"))
+ log_mapping("WARNING: Airlock helper '[name]' found a controller without an 'id_tag' set: X:[x] Y:[y] Z:[z]")
else
setup()
return INITIALIZE_HINT_QDEL
diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm
index 61b4a3b0c8..d32200af96 100644
--- a/code/game/machinery/flasher.dm
+++ b/code/game/machinery/flasher.dm
@@ -113,7 +113,7 @@
var/atom/movable/AM = WF.resolve()
if(isnull(AM))
- log_debug("DEBUG: HasProximity called without reference on [src].")
+ log_runtime("DEBUG: HasProximity called without reference on [src].")
return
if(disable || !anchored || (last_flash && world.time < last_flash + 150))
return
diff --git a/code/game/machinery/gear_dispenser.dm b/code/game/machinery/gear_dispenser.dm
index 13d9a94690..e6b0f4d316 100644
--- a/code/game/machinery/gear_dispenser.dm
+++ b/code/game/machinery/gear_dispenser.dm
@@ -64,13 +64,13 @@ GLOBAL_LIST_EMPTY(dispenser_presets)
ASSERT(voidsuit_type)
. = ..()
if(voidsuit_type && !ispath(voidsuit_type, /obj/item/clothing/suit/space/void))
- error("[src] can't spawn type [voidsuit_type] as a voidsuit")
+ log_world("## ERROR [src] can't spawn type [voidsuit_type] as a voidsuit")
return
if(voidhelmet_type && !ispath(voidhelmet_type, /obj/item/clothing/head/helmet/space/void))
- error("[src] can't spawn type [voidsuit_type] as a voidhelmet")
+ log_world("## ERROR [src] can't spawn type [voidsuit_type] as a voidhelmet")
return
if(magboots_type && !ispath(magboots_type, /obj/item/clothing/shoes/magboots))
- error("[src] can't spawn type [magboots_type] as magboots")
+ log_world("## ERROR [src] can't spawn type [magboots_type] as magboots")
return
var/obj/item/clothing/suit/space/void/voidsuit
@@ -86,7 +86,7 @@ GLOBAL_LIST_EMPTY(dispenser_presets)
if(voidhelmet_type)
// The coder may not have realized this type spawns its own helmet
if(voidsuit.hood)
- error("[src] created a voidsuit [voidsuit] and wants to add a helmet but it already has one")
+ log_world("## ERROR [src] created a voidsuit [voidsuit] and wants to add a helmet but it already has one")
else
voidhelmet = new voidhelmet_type()
voidsuit.attach_helmet(voidhelmet)
@@ -94,7 +94,7 @@ GLOBAL_LIST_EMPTY(dispenser_presets)
if(magboots_type)
// The coder may not have realized thist ype spawns its own boots
if(voidsuit.boots)
- error("[src] created a voidsuit [voidsuit] and wants to add a helmet but it already has one")
+ log_world("## ERROR [src] created a voidsuit [voidsuit] and wants to add a helmet but it already has one")
else
magboots = new magboots_type(voidsuit)
voidsuit.boots = magboots
@@ -105,13 +105,13 @@ GLOBAL_LIST_EMPTY(dispenser_presets)
if(life_support)
if(user.isSynthetic())
if(voidsuit.cooler)
- error("[src] created a voidsuit [voidsuit] and wants to add a suit cooler but it already has one")
+ log_world("## ERROR [src] created a voidsuit [voidsuit] and wants to add a suit cooler but it already has one")
else
var/obj/item/life_support = new /obj/item/suit_cooling_unit(voidsuit)
voidsuit.cooler = life_support
else if(user.species?.breath_type)
if(voidsuit.tank)
- error("[src] created a voidsuit [voidsuit] and wants to add a tank but it already has one")
+ log_world("## ERROR [src] created a voidsuit [voidsuit] and wants to add a tank but it already has one")
else
//Create a tank (if such a thing exists for this species)
var/tanktext = "/obj/item/tank/" + "[user.species?.breath_type]"
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 5b4c8aee6c..99a3df5eba 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -146,7 +146,7 @@ Class Procs:
if(A.loc == src) // If the components are inside the machine, delete them.
qdel(A)
else // Otherwise we assume they were dropped to the ground during deconstruction, and were not removed from the component_parts list by deconstruction code.
- warning("[A] was still in [src]'s component_parts when it was Destroy()'d")
+ WARNING("[A] was still in [src]'s component_parts when it was Destroy()'d")
component_parts.Cut()
component_parts = null
if(contents) // The same for contents.
diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm
index 3dbec11300..a630429127 100644
--- a/code/game/machinery/navbeacon.dm
+++ b/code/game/machinery/navbeacon.dm
@@ -22,7 +22,7 @@ GLOBAL_LIST_EMPTY(navbeacons) // no I don't like putting this in, but it will do
. = ..()
set_codes_from_txt(codes_txt)
if(freq)
- warning("[src] at [x],[y],[z] has deprecated var freq=[freq]. Replace it with proper type.")
+ WARNING("[src] at [x],[y],[z] has deprecated var freq=[freq]. Replace it with proper type.")
var/turf/T = loc
hide(!T.is_plating())
@@ -35,7 +35,7 @@ GLOBAL_LIST_EMPTY(navbeacons) // no I don't like putting this in, but it will do
/obj/machinery/navbeacon/proc/set_codes_from_txt()
if(!codes_txt)
return
- warning("[src] at [x],[y],[z] in [get_area(src)] is using the deprecated 'codes_txt' mapping method. Replace it with proper type.")
+ WARNING("[src] at [x],[y],[z] in [get_area(src)] is using the deprecated 'codes_txt' mapping method. Replace it with proper type.")
codes = list()
var/list/entries = splittext(codes_txt, ";") // entries are separated by semicolons
diff --git a/code/game/machinery/nuclear_bomb.dm b/code/game/machinery/nuclear_bomb.dm
index 6f8553c262..63ec125250 100644
--- a/code/game/machinery/nuclear_bomb.dm
+++ b/code/game/machinery/nuclear_bomb.dm
@@ -424,13 +424,13 @@ GLOBAL_VAR(bomb_set)
if(SSticker.mode)
SSticker.mode.explosion_in_progress = 0
- to_world(span_boldannounce("The station was destoyed by the nuclear blast!"))
+ to_chat(world, span_boldannounce("The station was destoyed by the nuclear blast!"))
SSticker.mode.station_was_nuked = (off_station<2) //offstation==1 is a draw. the station becomes irradiated and needs to be evacuated.
//kinda shit but I couldn't get permission to do what I wanted to do.
if(!SSticker.mode.check_finished())//If the mode does not deal with the nuke going off so just reboot because everyone is stuck as is
- to_world(span_boldannounce("Resetting in 30 seconds!"))
+ to_chat(world, span_boldannounce("Resetting in 30 seconds!"))
feedback_set_details("end_error","nuke - unhandled ending")
diff --git a/code/game/machinery/pointdefense.dm b/code/game/machinery/pointdefense.dm
index 8ac509b3de..e1704b43d6 100644
--- a/code/game/machinery/pointdefense.dm
+++ b/code/game/machinery/pointdefense.dm
@@ -27,7 +27,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense)
//No more than 1 controller please.
for(var/obj/machinery/pointdefense_control/PC as anything in GLOB.pointdefense_controllers)
if(PC != src && PC.id_tag == id_tag)
- warning("Two [src] with the same id_tag of [id_tag]")
+ WARNING("Two [src] with the same id_tag of [id_tag]")
id_tag = null
default_apply_parts()
diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm
index 0fa80cd2fa..44751feebe 100644
--- a/code/game/machinery/telecomms/telecomunications.dm
+++ b/code/game/machinery/telecomms/telecomunications.dm
@@ -701,7 +701,7 @@
//Generic telecomm connectivity test proc
/proc/can_telecomm(var/atom/A, var/atom/B, var/ad_hoc = FALSE)
if(!A || !B)
- log_debug("can_telecomm(): Undefined endpoints!")
+ log_mapping("can_telecomm(): Undefined endpoints!")
return FALSE
//Can't in this case, obviously!
diff --git a/code/game/machinery/virtual_reality/vr_procs.dm b/code/game/machinery/virtual_reality/vr_procs.dm
index 59d0631f1f..aacd8fd3cb 100644
--- a/code/game/machinery/virtual_reality/vr_procs.dm
+++ b/code/game/machinery/virtual_reality/vr_procs.dm
@@ -1,12 +1,12 @@
// Gross proc which is called on Life() to check for escaped VR mobs. Tried to do this with Exited() on area/vr but ended up being too heavy.
/mob/living/proc/handle_vr_derez()
if(virtual_reality_mob && !istype(get_area(src), /area/vr))
- log_debug("[src] escaped virtual reality")
+ log_admin("[src] escaped virtual reality")
visible_message("[src] blinks out of existence.")
return_from_vr()
for(var/obj/belly/B in vore_organs) // Assume anybody inside an escaped VR mob is also an escaped VR mob.
for(var/mob/living/L in B)
- log_debug("[L] was inside an escaped VR mob and has been deleted.")
+ log_vore("[L] was inside an escaped VR mob ([src]) and has been deleted.")
L.handle_vr_derez() //Recursive! Let's get EVERYONE properly out of here!
if(!QDELETED(L)) //This is so we don't double qdel() things when we're doing recursive removal.
qdel(L)
diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm
index 27003d8ee0..9e6272078d 100644
--- a/code/game/mecha/equipment/mecha_equipment.dm
+++ b/code/game/mecha/equipment/mecha_equipment.dm
@@ -106,7 +106,7 @@
/obj/item/mecha_parts/mecha_equipment/proc/critfail()
if(chassis)
- log_message("Critical failure",1)
+ src.mecha_log_message("Critical failure",1)
return
/obj/item/mecha_parts/mecha_equipment/proc/get_equip_info()
@@ -209,7 +209,7 @@
if(enable_special_checks(M))
enable_special = TRUE
- M.log_message("[src] initialized.")
+ M.mecha_log_message("[src] initialized.")
if(!M.selected)
M.selected = src
src.update_chassis_page()
@@ -245,7 +245,7 @@
if(chassis.selected == src)
chassis.selected = null
update_chassis_page()
- chassis.log_message("[src] removed from equipment.")
+ chassis.mecha_log_message("[src] removed from equipment.")
chassis = null
set_ready_state(TRUE)
enable_special = FALSE
@@ -267,9 +267,9 @@
chassis.occupant_message("[icon2html(src, chassis.occupant.client)] [message]")
return
-/obj/item/mecha_parts/mecha_equipment/proc/log_message(message)
+/obj/item/mecha_parts/mecha_equipment/proc/mecha_log_message(message)
if(chassis)
- chassis.log_message("[src]: [message]")
+ chassis.mecha_log_message("[src]: [message]")
return
/obj/item/mecha_parts/mecha_equipment/proc/MoveAction() //Allows mech equipment to do an action upon the mech moving
diff --git a/code/game/mecha/equipment/tools/cable_layer.dm b/code/game/mecha/equipment/tools/cable_layer.dm
index ec7c869a85..0b1ad624c3 100644
--- a/code/game/mecha/equipment/tools/cable_layer.dm
+++ b/code/game/mecha/equipment/tools/cable_layer.dm
@@ -34,7 +34,7 @@
if(href_list["toggle"])
set_ready_state(!equip_ready)
occupant_message("[src] [equip_ready?"dea":"a"]ctivated.")
- log_message("[equip_ready?"Dea":"A"]ctivated.")
+ src.mecha_log_message("[equip_ready?"Dea":"A"]ctivated.")
return
if(href_list["cut"])
if(cable && cable.get_amount())
@@ -73,7 +73,7 @@
if(!cable || cable.get_amount() < 1)
set_ready_state(TRUE)
occupant_message("Cable depleted, [src] deactivated.")
- log_message("Cable depleted, [src] deactivated.")
+ src.mecha_log_message("Cable depleted, [src] deactivated.")
return
if(cable.get_amount() < amount)
occupant_message("No enough cable to finish the task.")
diff --git a/code/game/mecha/equipment/tools/clamp.dm b/code/game/mecha/equipment/tools/clamp.dm
index 8c7e16ec97..1385797445 100644
--- a/code/game/mecha/equipment/tools/clamp.dm
+++ b/code/game/mecha/equipment/tools/clamp.dm
@@ -86,7 +86,7 @@
O.loc = chassis
O.anchored = FALSE
occupant_message(span_notice("[target] succesfully loaded."))
- log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]")
+ src.mecha_log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]")
else
occupant_message(span_warning("You must hold still while handling objects."))
O.anchored = initial(O.anchored)
@@ -147,7 +147,7 @@
O.loc = chassis
O.anchored = FALSE
chassis.occupant_message(span_notice("[target] succesfully loaded."))
- chassis.log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]")
+ chassis.mecha_log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]")
else
chassis.occupant_message(span_warning("You must hold still while handling objects."))
O.anchored = initial(O.anchored)
diff --git a/code/game/mecha/equipment/tools/cloak.dm b/code/game/mecha/equipment/tools/cloak.dm
index 44f32ac3a9..9a71de318d 100644
--- a/code/game/mecha/equipment/tools/cloak.dm
+++ b/code/game/mecha/equipment/tools/cloak.dm
@@ -36,7 +36,7 @@
/obj/item/mecha_parts/mecha_equipment/cloak/proc/start_cloak()
if(chassis)
chassis.cloak()
- log_message("Activated.")
+ src.mecha_log_message("Activated.")
START_PROCESSING(SSobj, src)
set_ready_state(FALSE)
playsound(src, 'sound/effects/EMPulse.ogg', 100, 1)
@@ -44,7 +44,7 @@
/obj/item/mecha_parts/mecha_equipment/cloak/proc/stop_cloak()
if(chassis)
chassis.uncloak()
- log_message("Deactivated.")
+ src.mecha_log_message("Deactivated.")
STOP_PROCESSING(SSobj, src)
set_ready_state(TRUE)
playsound(src, 'sound/effects/EMPulse.ogg', 100, 1)
diff --git a/code/game/mecha/equipment/tools/drill.dm b/code/game/mecha/equipment/tools/drill.dm
index c2cdb0955e..3838583a92 100644
--- a/code/game/mecha/equipment/tools/drill.dm
+++ b/code/game/mecha/equipment/tools/drill.dm
@@ -28,10 +28,10 @@
return
else if((W.reinf_material && advanced) || do_after_cooldown(target))//R wall with good drill
- log_message("Drilled through [target]")
+ src.mecha_log_message("Drilled through [target]")
target.ex_act(3)
else
- log_message("Drilled through [target]")
+ src.mecha_log_message("Drilled through [target]")
target.ex_act(2)
else if(ismineralturf(target))
@@ -42,7 +42,7 @@
else
var/turf/simulated/mineral/M1 = target
M1.GetDrilled()
- log_message("Drilled through [target]")
+ src.mecha_log_message("Drilled through [target]")
if(locate(/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp) in chassis.equipment)
var/obj/structure/ore_box/ore_box = locate(/obj/structure/ore_box) in chassis:cargo
if(ore_box)
@@ -54,7 +54,7 @@
drill_mob(target, chassis.occupant)
return 1
else if(target.loc == C)
- log_message("Drilled through [target]")
+ src.mecha_log_message("Drilled through [target]")
target.ex_act(2)
return 1
@@ -114,16 +114,16 @@
if(W.reinf_material)
occupant_message(span_warning("[target] is too durable to bore through."))
else
- log_message("Bored through [target]")
+ src.mecha_log_message("Bored through [target]")
target.ex_act(2)
else if(ismineralturf(target))
var/turf/simulated/mineral/M = target
if(enable_special && !M.density)
M.ex_act(2)
- log_message("Bored into [target]")
+ src.mecha_log_message("Bored into [target]")
else
M.GetDrilled()
- log_message("Bored through [target]")
+ src.mecha_log_message("Bored through [target]")
if(locate(/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp) in chassis.equipment)
var/obj/structure/ore_box/ore_box = locate(/obj/structure/ore_box) in chassis:cargo
if(ore_box)
@@ -131,6 +131,6 @@
if(get_dir(chassis,ore)&chassis.dir)
ore.forceMove(ore_box)
else if(target.loc == C)
- log_message("Drilled through [target]")
+ src.mecha_log_message("Drilled through [target]")
target.ex_act(2)
return 1
diff --git a/code/game/mecha/equipment/tools/energy_relay.dm b/code/game/mecha/equipment/tools/energy_relay.dm
index 0f64531983..44b848a2ab 100644
--- a/code/game/mecha/equipment/tools/energy_relay.dm
+++ b/code/game/mecha/equipment/tools/energy_relay.dm
@@ -83,11 +83,11 @@
if(datum_flags & DF_ISPROCESSING)
STOP_PROCESSING(SSfastprocess, src)
set_ready_state(TRUE)
- log_message("Deactivated.")
+ src.mecha_log_message("Deactivated.")
else
START_PROCESSING(SSfastprocess, src)
set_ready_state(FALSE)
- log_message("Activated.")
+ src.mecha_log_message("Activated.")
return
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/get_equip_info()
diff --git a/code/game/mecha/equipment/tools/generator.dm b/code/game/mecha/equipment/tools/generator.dm
index 0cb0246fee..24c0504b49 100644
--- a/code/game/mecha/equipment/tools/generator.dm
+++ b/code/game/mecha/equipment/tools/generator.dm
@@ -29,15 +29,15 @@
if(!chassis)
set_ready_state(TRUE)
return PROCESS_KILL
- if(fuel_amount <= 0)
- log_message("Deactivated - no fuel.")
+ if(fuel_amount <= 0) // CHOMPEdit - Spam fix
+ src.mecha_log_message("Deactivated - no fuel.")
set_ready_state(TRUE)
return PROCESS_KILL
var/cur_charge = chassis.get_charge()
if(isnull(cur_charge))
set_ready_state(TRUE)
occupant_message("No powercell detected.")
- log_message("Deactivated.")
+ src.mecha_log_message("Deactivated.")
return PROCESS_KILL
var/use_fuel = fuel_per_cycle_idle
if(cur_charge= reagents.maximum_volume || !chassis.has_charge(energy_drain))
occupant_message(span_warning("Reagent processing stopped."))
- log_message("Reagent processing stopped.")
+ src.mecha_log_message("Reagent processing stopped.")
return PROCESS_KILL
var/amount = synth_speed / processed_reagents.len
for(var/reagent in processed_reagents)
@@ -331,7 +331,7 @@
shut_down()
if(chassis && chassis.occupant)
to_chat(chassis.occupant, span_notice("\The [chassis] shudders as something jams!"))
- log_message("[src.name] has malfunctioned. Maintenance required.")
+ src.mecha_log_message("[src.name] has malfunctioned. Maintenance required.")
/obj/item/mecha_parts/mecha_equipment/crisis_drone/process() // Will continually try to find the nearest person above the threshold that is a valid target, and try to heal them.
if(chassis && enabled && chassis.has_charge(energy_drain) && (chassis.occupant || enable_special))
@@ -455,10 +455,10 @@
enabled = !enabled
if(enabled)
set_ready_state(FALSE)
- log_message("Activated.")
+ src.mecha_log_message("Activated.")
else
set_ready_state(TRUE)
- log_message("Deactivated.")
+ src.mecha_log_message("Deactivated.")
/obj/item/mecha_parts/mecha_equipment/crisis_drone/add_equip_overlay(obj/mecha/M as obj)
..()
diff --git a/code/game/mecha/equipment/weapons/ballistic/ballistic.dm b/code/game/mecha/equipment/weapons/ballistic/ballistic.dm
index 83b23bd98e..e1773adc48 100644
--- a/code/game/mecha/equipment/weapons/ballistic/ballistic.dm
+++ b/code/game/mecha/equipment/weapons/ballistic/ballistic.dm
@@ -13,7 +13,7 @@
projectiles_to_add--
chassis.use_power(projectile_energy_cost)
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info())
- log_message("Rearmed [src.name].")
+ src.mecha_log_message("Rearmed [src.name].")
return
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/Topic(href, href_list)
diff --git a/code/game/mecha/equipment/weapons/honk.dm b/code/game/mecha/equipment/weapons/honk.dm
index ee2c4e14c9..91787e848b 100644
--- a/code/game/mecha/equipment/weapons/honk.dm
+++ b/code/game/mecha/equipment/weapons/honk.dm
@@ -33,6 +33,6 @@
M.Weaken(3)
M.Stun(5)
chassis.use_power(energy_drain)
- log_message("Used a sound emission device.")
+ src.mecha_log_message("Used a sound emission device.")
do_after_cooldown()
return
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index faf33c1bf6..3e215d516e 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -32,7 +32,7 @@
chassis.use_power(energy_drain)
chassis.visible_message(span_warning("[chassis] fires [src]!"))
occupant_message(span_warning("You fire [src]!"))
- log_message("Fired from [src], targeting [target].")
+ src.mecha_log_message("Fired from [src], targeting [target].")
var/target_for_log = "unknown"
if(ismob(target))
target_for_log = target
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 4a08902218..9c07014acf 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -233,7 +233,7 @@
add_cell()
removeVerb(/obj/mecha/verb/disconnect_from_port)
- log_message("[src.name] created.")
+ src.mecha_log_message("[src.name] created.")
loc.Entered(src)
GLOB.mechas_list += src //global mech list
@@ -583,7 +583,7 @@
if("Toggle Airtank")
use_internal_tank = !use_internal_tank
occupant_message("Now taking air from [use_internal_tank?"internal airtank":"environment"].")
- log_message("Now taking air from [use_internal_tank?"internal airtank":"environment"].")
+ src.mecha_log_message("Now taking air from [use_internal_tank?"internal airtank":"environment"].")
if("Toggle Light")
lights = !lights
if(lights)
@@ -591,7 +591,7 @@
else
set_light(light_range - lights_power)
occupant_message("Toggled lights [lights?"on":"off"].")
- log_message("Toggled lights [lights?"on":"off"].")
+ src.mecha_log_message("Toggled lights [lights?"on":"off"].")
playsound(src, 'sound/mecha/heavylightswitch.ogg', 50, 1)
if("View Stats")
occupant << browse(src.get_stats_html(), "window=exosuit")
@@ -661,7 +661,7 @@
/obj/mecha/proc/interface_action(obj/machinery/target)
if(istype(target, /obj/machinery/access_button))
src.occupant_message(span_notice("Interfacing with [target]."))
- src.log_message("Interfaced with [target].")
+ src.mecha_log_message("Interfaced with [target].")
target.attack_hand(src.occupant)
return 1
if(istype(target, /obj/machinery/embedded_controller))
@@ -677,7 +677,7 @@
return STATUS_INTERACTIVE
if(src.Adjacent(src_object))
src.occupant_message(span_notice("Interfacing with [src_object]..."))
- src.log_message("Interfaced with [src_object].")
+ src.mecha_log_message("Interfaced with [src_object].")
return STATUS_INTERACTIVE
if(src_object in view(2, src))
return STATUS_UPDATE //if they're close enough, allow the occupant to see the screen through the viewport or whatever.
@@ -872,7 +872,7 @@
if(!src.check_for_support())
float_direction = direction
start_process(MECHA_PROC_MOVEMENT)
- src.log_message(span_warning("Movement control lost. Inertial movement started."))
+ src.mecha_log_message(span_warning("Movement control lost. Inertial movement started."))
if(do_after_action(get_step_delay()))
can_move = 1
return 1
@@ -1071,7 +1071,7 @@
return
user.setClickCooldown(user.get_attack_speed())
- src.log_message("Attack by hand/paw. Attacker - [user].",1)
+ src.mecha_log_message("Attack by hand/paw. Attacker - [user].",1)
var/obj/item/mecha_parts/component/armor/ArmC = internal_components[MECH_ARMOR]
@@ -1115,8 +1115,9 @@
/obj/mecha/hitby(atom/movable/source) //wrapper
..()
- src.log_message("Hit by [source].",1) //CHOMPEdit - Don't have JSON logging yet.
- call((proc_res["dynhitby"]||src), "dynhitby")(source) //CHOMPEdit - Don't have JSON logging yet.
+ src.mecha_log_message("Hit by [source].",1)
+ call((proc_res["dynhitby"]||src), "dynhitby")(source)
+ return
//I think this is relative to throws.
/obj/mecha/proc/dynhitby(atom/movable/A)
@@ -1187,7 +1188,7 @@
Test.hit |= occupant // Register a hit on the occupant, for things like turrets, or in simple-mob cases stopping friendly fire in firing line mode.
return
- src.log_message("Hit by projectile. Type: [Proj.name]([Proj.check_armour]).",1)
+ src.mecha_log_message("Hit by projectile. Type: [Proj.name]([Proj.check_armour]).",1)
call((proc_res["dynbulletdamage"]||src), "dynbulletdamage")(Proj) //calls equipment
..()
return
@@ -1287,7 +1288,7 @@
else
temp_deflect_chance = round(ArmC.get_efficiency() * ArmC.deflect_chance + (defence_mode ? 25 : 0))
- src.log_message("Affected by explosion of severity: [severity].",1)
+ src.mecha_log_message("Affected by explosion of severity: [severity].",1)
if(prob(temp_deflect_chance))
severity++
src.log_append_to_last("Armor saved, changing severity to [severity].")
@@ -1310,7 +1311,7 @@
/*Will fix later -Sieve
/obj/mecha/attack_blob(mob/user as mob)
- src.log_message("Attack by blob. Attacker - [user].",1)
+ src.mecha_log_message("Attack by blob. Attacker - [user].",1)
if(!prob(src.deflect_chance))
src.take_damage(6)
src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
@@ -1334,21 +1335,21 @@
if(get_charge())
use_power((cell.charge/2)/severity)
take_damage(50 / severity,"energy")
- src.log_message("EMP detected",1)
+ src.mecha_log_message("EMP detected",1)
if(prob(80))
check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1)
return
/obj/mecha/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature>src.max_temperature)
- src.log_message("Exposed to dangerous temperature.",1)
+ src.mecha_log_message("Exposed to dangerous temperature.",1)
src.take_damage(5,"fire") //The take_damage() proc handles armor values
src.check_for_internal_damage(list(MECHA_INT_FIRE, MECHA_INT_TEMP_CONTROL))
return
/obj/mecha/proc/dynattackby(obj/item/W as obj, mob/user as mob)
user.setClickCooldown(user.get_attack_speed(W))
- src.log_message("Attacked by [W]. Attacker - [user]")
+ src.mecha_log_message("Attacked by [W]. Attacker - [user]")
var/pass_damage_reduc_mod //Modifer for failing to bring AP.
var/obj/item/mecha_parts/component/armor/ArmC = internal_components[MECH_ARMOR]
@@ -1506,7 +1507,7 @@
src.cell = null
state = MECHA_CELL_OUT
to_chat(user, "You unscrew and pry out the powercell.")
- src.log_message("Powercell removed")
+ src.mecha_log_message("Powercell removed")
else if(state==MECHA_CELL_OUT && src.cell)
state=MECHA_CELL_OPEN
to_chat(user, "You screw the cell in place")
@@ -1517,11 +1518,11 @@
to_chat(user, "You attempt to eject the pilot using the maintenance controls.")
if(src.occupant.stat)
src.go_out()
- src.log_message("[src.occupant] was ejected using the maintenance controls.")
+ src.mecha_log_message("[src.occupant] was ejected using the maintenance controls.")
else
to_chat(user, span_warning("Your attempt is rejected."))
src.occupant_message(span_warning("An attempt to eject you was made using the maintenance controls."))
- src.log_message("Eject attempt made using maintenance controls - rejected.")
+ src.mecha_log_message("Eject attempt made using maintenance controls - rejected.")
return
else if(istype(W, /obj/item/cell))
@@ -1531,7 +1532,7 @@
user.drop_item()
W.forceMove(src)
src.cell = W
- src.log_message("Powercell installed")
+ src.mecha_log_message("Powercell installed")
else
to_chat(user, "There's already a powercell installed.")
return
@@ -1607,7 +1608,7 @@
else
call((proc_res["dynattackby"]||src), "dynattackby")(W,user)
/*
- src.log_message("Attacked by [W]. Attacker - [user]")
+ src.mecha_log_message("Attacked by [W]. Attacker - [user]")
if(prob(src.deflect_chance))
to_chat(user, span_warning("\The [W] bounces off [src.name] armor."))
src.log_append_to_last("Armor saved.")
@@ -1693,7 +1694,7 @@
src.Move(src.loc)
update_icon()
set_dir(dir_in)
- src.log_message("[mmi_as_oc] moved in as pilot.")
+ src.mecha_log_message("[mmi_as_oc] moved in as pilot.")
if(!hasInternalDamage())
src.occupant << sound('sound/mecha/nominal.ogg',volume=50)
update_icon()
@@ -1769,7 +1770,7 @@
network.gases += internal_tank.return_air()
network.update = 1
playsound(src, 'sound/mecha/gasconnected.ogg', 50, 1)
- log_message("Connected to gas port.")
+ src.mecha_log_message("Connected to gas port.")
return 1
/obj/mecha/proc/disconnect()
@@ -1783,7 +1784,7 @@
connected_port.connected_device = null
connected_port = null
playsound(src, 'sound/mecha/gasdisconnected.ogg', 50, 1)
- src.log_message("Disconnected from gas port.")
+ src.mecha_log_message("Disconnected from gas port.")
return 1
@@ -1855,7 +1856,7 @@
if(lights) set_light(light_range + lights_power)
else set_light(light_range - lights_power)
src.occupant_message("Toggled lights [lights?"on":"off"].")
- log_message("Toggled lights [lights?"on":"off"].")
+ src.mecha_log_message("Toggled lights [lights?"on":"off"].")
playsound(src, 'sound/mecha/heavylightswitch.ogg', 50, 1)
return
@@ -1882,7 +1883,7 @@
use_internal_tank = !use_internal_tank
src.occupant_message("Now taking air from [use_internal_tank?"internal airtank":"environment"].")
- src.log_message("Now taking air from [use_internal_tank?"internal airtank":"environment"].")
+ src.mecha_log_message("Now taking air from [use_internal_tank?"internal airtank":"environment"].")
playsound(src, 'sound/mecha/gasdisconnected.ogg', 30, 1)
return
@@ -1899,7 +1900,7 @@
return
strafing = !strafing
src.occupant_message("Toggled strafing mode [strafing?"on":"off"].")
- src.log_message("Toggled strafing mode [strafing?"on":"off"].")
+ src.mecha_log_message("Toggled strafing mode [strafing?"on":"off"].")
return
/obj/mecha/MouseDrop_T(mob/O, mob/user)
@@ -1935,7 +1936,7 @@
to_chat(user, span_warning("You can't climb into the exosuit while buckled!"))
return
- src.log_message("[user] tries to move in.")
+ src.mecha_log_message("[user] tries to move in.")
if(iscarbon(user))
var/mob/living/carbon/C = user
if(C.handcuffed)
@@ -2104,7 +2105,7 @@
else
return
if(mob_container.forceMove(src.loc))//ejecting mob container
- log_message("[mob_container] moved out.")
+ src.mecha_log_message("[mob_container] moved out.")
occupant.reset_view()
occupant << browse(null, "window=exosuit")
if(occupant.client && cloaked_selfimage)
@@ -2452,7 +2453,7 @@
to_chat(src.occupant, "[icon2html(src, src.occupant.client)] [message]")
return
-/obj/mecha/proc/log_message(message as text,red=null)
+/obj/mecha/proc/mecha_log_message(message as text,red=null)
log.len++
if(red)
message = span_red(message)
@@ -2623,7 +2624,7 @@
user.visible_message(span_infoplain(span_bold("\The [user]") + " opens the hatch on \the [P] and removes [occupant]!"), span_notice("You open the hatch on \the [P] and remove [occupant]!"))
P.go_out()
- P.log_message("[occupant] was removed.")
+ P.mecha_log_message("[occupant] was removed.")
return
if(href_list["add_req_access"] && add_req_access && top_filter.getObj("id_card"))
if(!in_range(src, usr)) return
@@ -2656,16 +2657,16 @@
if(href_list["repair_int_control_lost"])
if(usr != src.occupant) return
src.occupant_message("Recalibrating coordination system.")
- src.log_message("Recalibration of coordination system started.")
+ src.mecha_log_message("Recalibration of coordination system started.")
var/T = src.loc
if(do_after_action(100))
if(T == src.loc)
src.clearInternalDamage(MECHA_INT_CONTROL_LOST)
src.occupant_message(span_blue("Recalibration successful."))
- src.log_message("Recalibration of coordination system finished with 0 errors.")
+ src.mecha_log_message("Recalibration of coordination system finished with 0 errors.")
else
src.occupant_message(span_red("Recalibration failed."))
- src.log_message("Recalibration of coordination system failed with 1 error.",1)
+ src.mecha_log_message("Recalibration of coordination system failed with 1 error.",1)
if(href_list["drop_from_cargo"])
var/obj/O = locate(href_list["drop_from_cargo"])
if(O && (O in src.cargo))
@@ -2675,7 +2676,7 @@
var/turf/T = get_turf(O)
if(T)
T.Entered(O)
- src.log_message("Unloaded [O]. Cargo compartment capacity: [cargo_capacity - src.cargo.len]")
+ src.mecha_log_message("Unloaded [O]. Cargo compartment capacity: [cargo_capacity - src.cargo.len]")
return
//debug
@@ -2802,7 +2803,7 @@
if(!damage)
return 0
- src.log_message("Attacked. Attacker - [user].",1)
+ src.mecha_log_message("Attacked. Attacker - [user].",1)
user.do_attack_animation(src)
if(prob(temp_deflect_chance))//Deflected
diff --git a/code/game/mecha/micro/micro_equipment.dm b/code/game/mecha/micro/micro_equipment.dm
index 7b6a7476f2..c6793b9e58 100644
--- a/code/game/mecha/micro/micro_equipment.dm
+++ b/code/game/mecha/micro/micro_equipment.dm
@@ -130,13 +130,13 @@
if(W.reinf_material)
occupant_message(span_warning("[target] is too durable to drill through."))
else
- log_message("Drilled through [target]")
+ src.mecha_log_message("Drilled through [target]")
target.ex_act(2)
else if(ismineralturf(target))
for(var/turf/simulated/mineral/M in range(chassis,1))
if(get_dir(chassis,M)&chassis.dir)
M.GetDrilled()
- log_message("Drilled through [target]")
+ src.mecha_log_message("Drilled through [target]")
var/obj/item/mecha_parts/mecha_equipment/tool/micro/orescoop/ore_box = (locate(/obj/item/mecha_parts/mecha_equipment/tool/micro/orescoop) in chassis.equipment)
if(ore_box)
for(var/obj/item/ore/ore in range(chassis,1))
@@ -147,7 +147,7 @@
else
ore.forceMove(ore_box)
else if(target.loc == C)
- log_message("Drilled through [target]")
+ src.mecha_log_message("Drilled through [target]")
target.ex_act(2)
return 1
diff --git a/code/game/memory_profiler_ch.dm b/code/game/memory_profiler_ch.dm
index fb2c4afd28..00131992ce 100644
--- a/code/game/memory_profiler_ch.dm
+++ b/code/game/memory_profiler_ch.dm
@@ -65,7 +65,7 @@
if(mem_count[type] < 10000) mem_count -= type
world.log << "[display_bytes(accounted_for)] of memory accounted for"
world.log << "Sorting and exporting data"
- to_world(span_alert("Memory profiler is exporting data. Expect server to freeze for 10-30 seconds."))
+ to_chat(world, span_alert("Memory profiler is exporting data. Expect server to freeze for 10-30 seconds."))
sortTim(types_count, /proc/cmp_numeric_desc, TRUE)
var/output = ""
for(var/type in types_count)
diff --git a/code/game/objects/effects/chem/chemsmoke.dm b/code/game/objects/effects/chem/chemsmoke.dm
index 47920bacb3..129715635e 100644
--- a/code/game/objects/effects/chem/chemsmoke.dm
+++ b/code/game/objects/effects/chem/chemsmoke.dm
@@ -99,11 +99,11 @@
var/more = ""
if(M)
more = "(?)"
- message_admins("A chemical smoke reaction has taken place in ([whereLink])[contained]. Last associated key is [print_name][more].", 0, 1)
- log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [print_name].")
+ message_admins("A chemical smoke reaction has taken place in ([whereLink]) [contained]. Last associated key is [print_name][more].", 0, 1)
+ log_game("A chemical smoke reaction has taken place in ([where]) [contained]. Last associated key is [print_name].")
else
message_admins("A chemical smoke reaction has taken place in ([whereLink]). No associated key.", 0, 1)
- log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.")
+ log_game("A chemical smoke reaction has taken place in ([where]) [contained]. No associated key.")
//Runs the chem smoke effect
// Spawns damage over time loop for each reagent held in the cloud.
diff --git a/code/game/objects/effects/gibs.dm b/code/game/objects/effects/gibs.dm
index 8021ef414b..9d138f851b 100644
--- a/code/game/objects/effects/gibs.dm
+++ b/code/game/objects/effects/gibs.dm
@@ -22,7 +22,8 @@
/obj/effect/gibspawner/proc/Gib(atom/location, var/datum/dna/MobDNA = null)
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
- to_world(span_filter_system(span_warning("Gib list length mismatch!")))
+ to_chat(world, span_filter_system(span_warning("Gib list length mismatch!")))
+ log_world("Gib list length mismatch!")
return
var/obj/effect/decal/cleanable/blood/gibs/gib = null
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index a39ebe00fb..a97e9073f9 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -117,7 +117,7 @@
if(using_map)
using_map.secret_levels |= z
else
- log_error("[type] mapped in but no using_map")
+ log_mapping("[type] mapped in but no using_map")
/obj/effect/landmark/hidden_level
delete_me = TRUE
@@ -127,7 +127,7 @@
if(using_map)
using_map.hidden_levels |= z
else
- log_error("[type] mapped in but no using_map")
+ log_mapping("[type] mapped in but no using_map")
/obj/effect/landmark/virtual_reality
diff --git a/code/game/objects/effects/map_effects/beam_point.dm b/code/game/objects/effects/map_effects/beam_point.dm
index dff889889d..37e43011f7 100644
--- a/code/game/objects/effects/map_effects/beam_point.dm
+++ b/code/game/objects/effects/map_effects/beam_point.dm
@@ -90,7 +90,7 @@ GLOBAL_LIST_EMPTY(all_beam_points)
/obj/effect/map_effect/beam_point/proc/build_beam(var/atom/beam_target)
if(!beam_target)
- log_debug("[src] ([src.type] \[[x],[y],[z]\]) failed to build its beam due to not having a target.")
+ log_mapping("[src] ([src.type] \[[x],[y],[z]\]) failed to build its beam due to not having a target.")
return FALSE
var/datum/beam/new_beam = Beam(beam_target, beam_icon_state, beam_icon, beam_time, beam_max_distance, beam_type, beam_sleep_time)
@@ -102,11 +102,11 @@ GLOBAL_LIST_EMPTY(all_beam_points)
/obj/effect/map_effect/beam_point/proc/destroy_beam(var/datum/beam/B)
if(!B)
- log_debug("[src] ([src.type] \[[x],[y],[z]\]) was asked to destroy a beam that does not exist.")
+ log_mapping("[src] ([src.type] \[[x],[y],[z]\]) was asked to destroy a beam that does not exist.")
return FALSE
if(!(B in my_beams))
- log_debug("[src] ([src.type] \[[x],[y],[z]\]) was asked to destroy a beam it did not own.")
+ log_mapping("[src] ([src.type] \[[x],[y],[z]\]) was asked to destroy a beam it did not own.")
return FALSE
my_beams -= B
diff --git a/code/game/objects/effects/prop/columnblast.dm b/code/game/objects/effects/prop/columnblast.dm
index daae3610a5..e0698006d5 100644
--- a/code/game/objects/effects/prop/columnblast.dm
+++ b/code/game/objects/effects/prop/columnblast.dm
@@ -23,7 +23,7 @@
flick("[icon_state]_erupt",src)
return TRUE
-/obj/effect/temporary_effect/eruption/testing/on_eruption(var/turf/Target)
+/obj/effect/temporary_effect/eruption/test/on_eruption(var/turf/Target)
flick("[icon_state]_erupt",src)
if(Target)
new /obj/effect/explosion(Target)
diff --git a/code/game/objects/effects/prop/snake.dm b/code/game/objects/effects/prop/snake.dm
index 057e3d5ba4..670b573c2e 100644
--- a/code/game/objects/effects/prop/snake.dm
+++ b/code/game/objects/effects/prop/snake.dm
@@ -93,18 +93,18 @@
/obj/effect/temporary_effect/pulse/snake/proc/on_enter_turf(var/turf/T)
-/obj/effect/temporary_effect/pulse/snake/testing/on_leave_turf(var/turf/T)
+/obj/effect/temporary_effect/pulse/snake/test/on_leave_turf(var/turf/T)
if(T)
- new /obj/effect/temporary_effect/eruption/testing(T, 3 SECONDS, "#ff0000")
+ new /obj/effect/temporary_effect/eruption/test(T, 3 SECONDS, "#ff0000")
-/obj/effect/temporary_effect/pulse/snake/testing/on_enter_turf(var/turf/T)
+/obj/effect/temporary_effect/pulse/snake/test/on_enter_turf(var/turf/T)
if(T)
T.color = "#00ff00"
spawn(3 SECONDS)
T.color = initial(T.color)
-/obj/effect/temporary_effect/pulse/snake/testing/hunter/pulse_loop()
+/obj/effect/temporary_effect/pulse/snake/test/hunter/pulse_loop()
hunting = locate(/mob/living) in range(7, src)
..()
diff --git a/code/game/objects/items/blueprints_vr.dm b/code/game/objects/items/blueprints_vr.dm
index 9a22a83ff3..a5a02e172a 100644
--- a/code/game/objects/items/blueprints_vr.dm
+++ b/code/game/objects/items/blueprints_vr.dm
@@ -452,7 +452,7 @@
//I personally think adding walls to an area is a big deal, so this is commented out.
//BEGIN ESOTERIC BULLSHIT
- //log_debug("Origin: [origin.c_airblock(checkT)] SourceT: [sourceT.c_airblock(checkT)] 0=NB 1=AB 2=ZB, 3=B")
+ //to_chat(world, "Origin: [origin.c_airblock(checkT)] SourceT: [sourceT.c_airblock(checkT)] 0=NB 1=AB 2=ZB, 3=B")
/*
if(origin.c_airblock(checkT)) //If everything breaks and it doesn't want to work, turn on the above debug and check this line. C.L. 0 = not blocked.
continue
diff --git a/code/game/objects/items/devices/communicator/UI_tgui.dm b/code/game/objects/items/devices/communicator/UI_tgui.dm
index da5fea69cd..eb9ae055b4 100644
--- a/code/game/objects/items/devices/communicator/UI_tgui.dm
+++ b/code/game/objects/items/devices/communicator/UI_tgui.dm
@@ -381,7 +381,7 @@
if(text)
exonet.send_message(their_address, "text", text)
im_list += list(list("address" = exonet.address, "to_address" = their_address, "im" = text))
- log_pda("(COMM: [src]) sent \"[text]\" to [exonet.get_atom_from_address(their_address)]", ui.user)
+ ui.user.log_talk("(COMM: [src]) sent \"[text]\" to [exonet.get_atom_from_address(their_address)]", LOG_PDA)
var/obj/item/communicator/comm = exonet.get_atom_from_address(their_address)
to_chat(ui.user, span_notice("[icon2html(src, ui.user.client)] Sent message to [istype(comm, /obj/item/communicator) ? comm.owner : comm.name], \"[text]\" (Reply)"))
for(var/mob/M in GLOB.player_list)
diff --git a/code/game/objects/items/devices/communicator/messaging.dm b/code/game/objects/items/devices/communicator/messaging.dm
index e2b459cb26..af5aad2cac 100644
--- a/code/game/objects/items/devices/communicator/messaging.dm
+++ b/code/game/objects/items/devices/communicator/messaging.dm
@@ -107,7 +107,7 @@
if(message)
exonet.send_message(comm.exonet.address, "text", message)
im_list += list(list("address" = exonet.address, "to_address" = comm.exonet.address, "im" = message))
- log_pda("(COMM: [src]) sent \"[message]\" to [exonet.get_atom_from_address(comm.exonet.address)]", usr)
+ usr.client.mob.log_talk("(COMM: [src]) sent \"[message]\" to [exonet.get_atom_from_address(comm.exonet.address)]", LOG_PDA)
to_chat(usr, span_notice("[icon2html(src,usr.client)] Sent message to [istype(comm, /obj/item/communicator) ? comm.owner : comm.name], \"[message]\" (Reply)"))
// Verb: text_communicator()
@@ -159,7 +159,7 @@
to_chat(src, span_notice("You have sent '[text_message]' to [chosen_communicator]."))
exonet_messages.Add(span_bold("To [chosen_communicator]:") + " [text_message]")
- log_pda("(DCOMM: [src]) sent \"[text_message]\" to [chosen_communicator]", src)
+ log_talk("(DCOMM: [src]) sent \"[text_message]\" to [chosen_communicator]", LOG_PDA)
for(var/mob/M in GLOB.player_list)
if(M.stat == DEAD && M.client?.prefs?.read_preference(/datum/preference/toggle/ghost_ears))
if(isnewplayer(M) || M.forbid_seeing_deadchat)
diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm
index 6824ed275a..9b8010e209 100644
--- a/code/game/objects/items/devices/radio/encryptionkey.dm
+++ b/code/game/objects/items/devices/radio/encryptionkey.dm
@@ -133,3 +133,58 @@
/obj/item/encryptionkey/ent
name = "entertainment encryption key"
channels = list(CHANNEL_ENTERTAINMENT = 1)
+
+/obj/item/encryptionkey/heads/hop
+ name = "head of personnel's encryption key"
+ icon_state = "hop_cypherkey"
+ channels = list(CHANNEL_SUPPLY = 1, CHANNEL_SERVICE = 1, CHANNEL_COMMAND = 1, CHANNEL_SECURITY = 1, CHANNEL_EXPLORATION = 1)
+
+/obj/item/encryptionkey/heads/ai_integrated
+ name = "ai integrated encryption key"
+ desc = "Integrated encryption key"
+ icon_state = "cap_cypherkey"
+ channels = list(CHANNEL_COMMAND = 1, CHANNEL_SECURITY = 1, CHANNEL_ENGINEERING = 1, CHANNEL_SCIENCE = 1, CHANNEL_MEDICAL = 1, CHANNEL_SUPPLY = 1, CHANNEL_SERVICE = 1, CHANNEL_AI_PRIVATE = 1, CHANNEL_EXPLORATION = 1)
+
+/obj/item/encryptionkey/heads/captain
+ name = "site manager's encryption key"
+ icon_state = "cap_cypherkey"
+ channels = list(CHANNEL_COMMAND = 1, CHANNEL_SECURITY = 1, CHANNEL_ENGINEERING = 1, CHANNEL_SCIENCE = 1, CHANNEL_MEDICAL = 1, CHANNEL_SUPPLY = 1, CHANNEL_SERVICE = 1, CHANNEL_EXPLORATION = 1)
+
+/obj/item/encryptionkey/heads/rd
+ name = "research director's encryption key"
+ icon_state = "rd_cypherkey"
+ channels = list(CHANNEL_COMMAND = 1, CHANNEL_SCIENCE = 1)
+
+/obj/item/encryptionkey/ert
+ channels = list(CHANNEL_RESPONSE_TEAM = 1, CHANNEL_SCIENCE = 1, CHANNEL_COMMAND = 1, CHANNEL_MEDICAL = 1, CHANNEL_ENGINEERING = 1, CHANNEL_SECURITY = 1, CHANNEL_SUPPLY = 1, CHANNEL_SERVICE = 1, CHANNEL_EXPLORATION = 1)
+
+/obj/item/encryptionkey/omni //Literally only for the admin intercoms
+ channels = list(CHANNEL_MERCENARY = 1, CHANNEL_RAIDER = 1, CHANNEL_RESPONSE_TEAM = 1, CHANNEL_SCIENCE = 1, CHANNEL_COMMAND = 1, CHANNEL_MEDICAL = 1, CHANNEL_ENGINEERING = 1, CHANNEL_SECURITY = 1, CHANNEL_SUPPLY = 1, CHANNEL_SERVICE = 1, CHANNEL_EXPLORATION = 1)
+
+/obj/item/encryptionkey/pathfinder
+ name = "pathfinder's encryption key"
+ icon_state = "com_cypherkey"
+ channels = list(CHANNEL_COMMAND = 1, CHANNEL_EXPLORATION = 1)
+
+/obj/item/encryptionkey/qm
+ name = "quartermaster's encryption key"
+ icon_state = "qm_cypherkey"
+ channels = list(CHANNEL_COMMAND = 1, CHANNEL_SUPPLY = 1)
+
+/obj/item/encryptionkey/pilot
+ name = "pilot's encryption key"
+ icon_state = "cypherkey"
+ channels = list(CHANNEL_EXPLORATION = 1)
+
+/obj/item/encryptionkey/explorer
+ name = "away team's encryption key"
+ icon_state = "rob_cypherkey"
+ channels = list(CHANNEL_EXPLORATION = 1)
+
+/obj/item/encryptionkey/sar
+ name = "fm's encryption key"
+ icon_state = "med_cypherkey"
+ channels = list(CHANNEL_MEDICAL = 1, CHANNEL_EXPLORATION = 1)
+
+/obj/item/encryptionkey/talon
+ channels = list(CHANNEL_TALON = 1)
diff --git a/code/game/objects/items/devices/radio/jammer.dm b/code/game/objects/items/devices/radio/jammer.dm
index c20b97b1a6..639eff8a0b 100644
--- a/code/game/objects/items/devices/radio/jammer.dm
+++ b/code/game/objects/items/devices/radio/jammer.dm
@@ -119,3 +119,18 @@ GLOBAL_LIST_EMPTY(active_radio_jammers)
cut_overlays()
add_overlay("jammer_overlay_[overlay_percent]")
last_overlay_percent = overlay_percent
+
+//Unlimited use, unlimited range jammer for admins. Turn it on, drop it somewhere, it works.
+/obj/item/radio_jammer/admin
+ jam_range = 255
+ tick_cost = 0
+
+/proc/is_vore_jammed(var/obj/radio)
+ var/atom/current = radio
+ while(current.loc)
+ if(isbelly(current.loc))
+ var/obj/belly/B = current.loc
+ if(B.mode_flags & DM_FLAG_JAMSENSORS)
+ return TRUE
+ current = current.loc
+ return FALSE
diff --git a/code/game/objects/items/devices/radio/jammer_vr.dm b/code/game/objects/items/devices/radio/jammer_vr.dm
deleted file mode 100644
index 2633ddfe28..0000000000
--- a/code/game/objects/items/devices/radio/jammer_vr.dm
+++ /dev/null
@@ -1,14 +0,0 @@
-//Unlimited use, unlimited range jammer for admins. Turn it on, drop it somewhere, it works.
-/obj/item/radio_jammer/admin
- jam_range = 255
- tick_cost = 0
-
-/proc/is_vore_jammed(var/obj/radio)
- var/atom/current = radio
- while(current.loc)
- if(isbelly(current.loc))
- var/obj/belly/B = current.loc
- if(B.mode_flags & DM_FLAG_JAMSENSORS)
- return TRUE
- current = current.loc
- return FALSE
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 351d23ecdb..a0e6d7f80c 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -82,7 +82,7 @@
AIO.link_radio(src)
break
if(!bs_tx_weakref)
- testing("A radio [src] at [x],[y],[z] specified bluespace prelink IDs, but the machines with corresponding IDs ([bs_tx_preload_id], [bs_rx_preload_id]) couldn't be found.")
+ log_mapping("A radio [src] at [x],[y],[z] specified bluespace prelink IDs, but the machines with corresponding IDs ([bs_tx_preload_id], [bs_rx_preload_id]) couldn't be found.")
if(bs_rx_preload_id)
var/found = 0
@@ -100,7 +100,7 @@
found = 1
break
if(!found)
- testing("A radio [src] at [x],[y],[z] specified bluespace prelink IDs, but the machines with corresponding IDs ([bs_tx_preload_id], [bs_rx_preload_id]) couldn't be found.")
+ log_mapping("A radio [src] at [x],[y],[z] specified bluespace prelink IDs, but the machines with corresponding IDs ([bs_tx_preload_id], [bs_rx_preload_id]) couldn't be found.")
/obj/item/radio/Destroy()
qdel(wires)
@@ -821,3 +821,35 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer)
bs_rx_preload_id = "Broadcaster A" //Recveive from a transmitter
#undef CANBROADCAST_INNERBOX
+
+/obj/item/radio/phone
+ subspace_transmission = TRUE
+ canhear_range = 0
+ adhoc_fallback = TRUE
+
+/obj/item/radio/emergency
+ name = "Medbay Emergency Radio Link"
+ icon_state = "med_walkietalkie"
+ frequency = MED_I_FREQ
+ subspace_transmission = TRUE
+ adhoc_fallback = TRUE
+
+/obj/item/radio/emergency/Initialize(mapload)
+ . = ..()
+ internal_channels = GLOB.default_medbay_channels.Copy()
+
+/obj/item/bluespaceradio/tether_prelinked
+ name = "bluespace radio (tether)"
+ handset = /obj/item/radio/bluespacehandset/linked/tether_prelinked
+
+/obj/item/radio/bluespacehandset/linked/tether_prelinked
+ bs_tx_preload_id = "tether_rx" //Transmit to a receiver
+ bs_rx_preload_id = "tether_tx" //Recveive from a transmitter
+
+/obj/item/bluespaceradio/talon_prelinked
+ name = "bluespace radio (talon)"
+ handset = /obj/item/radio/bluespacehandset/linked/talon_prelinked
+
+/obj/item/radio/bluespacehandset/linked/talon_prelinked
+ bs_tx_preload_id = "talon_aio" //Transmit to a receiver
+ bs_rx_preload_id = "talon_aio" //Recveive from a transmitter
diff --git a/code/game/objects/items/devices/radio/radio_vr.dm b/code/game/objects/items/devices/radio/radio_vr.dm
deleted file mode 100644
index c7143a600c..0000000000
--- a/code/game/objects/items/devices/radio/radio_vr.dm
+++ /dev/null
@@ -1,33 +0,0 @@
-/obj/item/radio/phone
- subspace_transmission = TRUE
- canhear_range = 0
- adhoc_fallback = TRUE
-
-/obj/item/radio/emergency
- name = "Medbay Emergency Radio Link"
- icon_state = "med_walkietalkie"
- frequency = MED_I_FREQ
- subspace_transmission = TRUE
- adhoc_fallback = TRUE
-
-/obj/item/radio/emergency/Initialize(mapload)
- . = ..()
- internal_channels = GLOB.default_medbay_channels.Copy()
-
-
-
-/obj/item/bluespaceradio/tether_prelinked
- name = "bluespace radio (tether)"
- handset = /obj/item/radio/bluespacehandset/linked/tether_prelinked
-
-/obj/item/radio/bluespacehandset/linked/tether_prelinked
- bs_tx_preload_id = "tether_rx" //Transmit to a receiver
- bs_rx_preload_id = "tether_tx" //Recveive from a transmitter
-
-/obj/item/bluespaceradio/talon_prelinked
- name = "bluespace radio (talon)"
- handset = /obj/item/radio/bluespacehandset/linked/talon_prelinked
-
-/obj/item/radio/bluespacehandset/linked/talon_prelinked
- bs_tx_preload_id = "talon_aio" //Transmit to a receiver
- bs_rx_preload_id = "talon_aio" //Recveive from a transmitter
diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm
index 4dcbbb1deb..6c3e6a2c61 100644
--- a/code/game/objects/items/devices/transfer_valve.dm
+++ b/code/game/objects/items/devices/transfer_valve.dm
@@ -60,7 +60,7 @@
return
var/atom/movable/AM = WF.resolve()
if(isnull(AM))
- log_debug("DEBUG: HasProximity called without reference on [src].")
+ log_runtime("DEBUG: HasProximity called without reference on [src].")
attached_device?.HasProximity(T, WF, old_loc)
/obj/item/transfer_valve/Moved(old_loc, direction, forced)
diff --git a/code/game/objects/items/devices/uplink_random_lists.dm b/code/game/objects/items/devices/uplink_random_lists.dm
index bb1ee97d77..c0221585dc 100644
--- a/code/game/objects/items/devices/uplink_random_lists.dm
+++ b/code/game/objects/items/devices/uplink_random_lists.dm
@@ -114,5 +114,5 @@ var/datum/uplink_random_selection/all_uplink_selection = new/datum/uplink_random
/proc/debug_uplink_item_assoc_list()
for(var/key in uplink.items_assoc)
- to_world("[key] - [uplink.items_assoc[key]]")
+ to_chat(world, "[key] - [uplink.items_assoc[key]]")
#endif
diff --git a/code/game/objects/items/weapons/grenades/anti_photon_grenade.dm b/code/game/objects/items/weapons/grenades/anti_photon_grenade.dm
index a103e859f2..7658e69e27 100644
--- a/code/game/objects/items/weapons/grenades/anti_photon_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/anti_photon_grenade.dm
@@ -22,7 +22,7 @@
PRIVATE_PROC(TRUE)
SHOULD_NOT_OVERRIDE(TRUE)
if(prob(10+extra_delay))
- set_light(10, 10, "#[num2hex(rand(64,255))][num2hex(rand(64,255))][num2hex(rand(64,255))]")
+ set_light(10, 10, "#[num2hex(rand(64,255), 2)][num2hex(rand(64,255), 2)][num2hex(rand(64,255), 2)]")
addtimer(CALLBACK(src, PROC_REF(grenade_blast)), 10, TIMER_DELETE_ME)
/obj/item/grenade/anti_photon/proc/grenade_blast()
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index 9da5ebb6a9..99fc3c4408 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -444,7 +444,7 @@ var/list/global/tank_gauge_cache = list()
else if(pressure > TANK_RUPTURE_PRESSURE)
#ifdef FIREDBG
- log_debug(span_warning("[x],[y] tank is rupturing: [pressure] kPa, integrity [integrity]"))
+ log_world(span_warning("[x],[y] tank is rupturing: [pressure] kPa, integrity [integrity]"))
#endif
air_contents.react()
@@ -504,7 +504,7 @@ var/list/global/tank_gauge_cache = list()
playsound(src, 'sound/effects/spray.ogg', 10, 1, -3)
leaking = 1
#ifdef FIREDBG
- log_debug(span_warning("[x],[y] tank is leaking: [pressure] kPa, integrity [integrity]"))
+ log_world(span_warning("[x],[y] tank is leaking: [pressure] kPa, integrity [integrity]"))
#endif
@@ -662,7 +662,7 @@ var/list/global/tank_gauge_cache = list()
return
var/atom/movable/AM = WF.resolve()
if(isnull(AM))
- log_debug("DEBUG: HasProximity called without reference on [src].")
+ log_runtime("DEBUG: HasProximity called without reference on [src].")
return
assembly?.HasProximity(T, WF, old_loc)
diff --git a/code/game/objects/structures/artstuff.dm b/code/game/objects/structures/artstuff.dm
index 5122169fbe..df21220768 100644
--- a/code/game/objects/structures/artstuff.dm
+++ b/code/game/objects/structures/artstuff.dm
@@ -517,7 +517,7 @@
break
if(!new_canvas)
- warning("Couldn't find a canvas to match [w]x[h] of painting")
+ WARNING("Couldn't find a canvas to match [w]x[h] of painting")
return
new_canvas.fill_grid_from_icon(I)
@@ -559,7 +559,7 @@
return 0
if(!fexists("data/persistent/paintings/[persistence_id]/[painting["md5"]].png"))
to_chat(usr, span_warning("Chosen painting could not be loaded! Incident was logged, but no action taken at this time"))
- log_debug("[usr] tried to spawn painting of list id [which_painting] in all_paintings list and associated file could not be found. \n \
+ log_runtime("[usr] tried to spawn painting of list id [which_painting] in all_paintings list and associated file could not be found. \n \
Painting was titled [title] by [author_ckey] of [persistence_id]")
return 0
@@ -574,7 +574,7 @@
break
if(!new_canvas)
- warning("Couldn't find a canvas to match [w]x[h] of painting")
+ WARNING("Couldn't find a canvas to match [w]x[h] of painting")
return 0
new_canvas.fill_grid_from_icon(I)
@@ -597,7 +597,7 @@
Proceed? It will likely have over 500 entries", "Generate list?", list("Proceed!", "Cancel")) != "Proceed!")
return
- log_debug("[usr] generated list of paintings from SSPersistence")
+ // to_chat(world, "[usr] generated list of paintings from SSPersistence")
var/list/paintings = list()
var/current = 1
for(var/entry in SSpersistence.all_paintings)
diff --git a/code/game/objects/structures/catwalk.dm b/code/game/objects/structures/catwalk.dm
index 4b5cdc69fa..98dff9edb3 100644
--- a/code/game/objects/structures/catwalk.dm
+++ b/code/game/objects/structures/catwalk.dm
@@ -174,7 +174,7 @@
if(activated) return
if(locate(/obj/structure/catwalk) in loc)
- warning("Frame Spawner: A catwalk already exists at [loc.x]-[loc.y]-[loc.z]")
+ WARNING("Frame Spawner: A catwalk already exists at [loc.x]-[loc.y]-[loc.z]")
else
var/obj/structure/catwalk/C = new /obj/structure/catwalk(loc)
C.plated_tile = tile
diff --git a/code/game/objects/structures/droppod.dm b/code/game/objects/structures/droppod.dm
index 27f1a8f114..81ac86d3ea 100644
--- a/code/game/objects/structures/droppod.dm
+++ b/code/game/objects/structures/droppod.dm
@@ -27,7 +27,7 @@
/obj/structure/drop_pod/proc/podfall(auto_open)
var/turf/T = get_turf(src)
if(!T)
- warning("Drop pod wasn't spawned on a turf")
+ WARNING("Drop pod wasn't spawned on a turf")
return
moveToNullspace()
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
index 3251dd9cd4..24be51724c 100644
--- a/code/game/objects/structures/lattice.dm
+++ b/code/game/objects/structures/lattice.dm
@@ -16,7 +16,7 @@
for(var/obj/structure/lattice/LAT in src.loc)
if(LAT != src)
- log_debug("Found multiple lattices at '[log_info_line(loc)]'") //VOREStation Edit, why was this a runtime, it's harmless
+ log_mapping("Found multiple lattices at '[log_info_line(loc)]'") //VOREStation Edit, why was this a runtime, it's harmless
return INITIALIZE_HINT_QDEL
icon = 'icons/obj/smoothlattice.dmi'
icon_state = "latticeblank"
diff --git a/code/game/objects/structures/low_wall.dm b/code/game/objects/structures/low_wall.dm
index 9669acc504..a2ff142a65 100644
--- a/code/game/objects/structures/low_wall.dm
+++ b/code/game/objects/structures/low_wall.dm
@@ -32,7 +32,7 @@
icon_state = "blank"
var/turf/T = loc
if(!isturf(T) || T.density || T.opacity)
- warning("[src] on invalid turf [T] at [x],[y],[z]")
+ WARNING("[src] on invalid turf [T] at [x],[y],[z]")
return INITIALIZE_HINT_QDEL
if(!materialtype)
@@ -575,7 +575,7 @@
/obj/effect/low_wall_spawner/Initialize(mapload)
. = ..()
if(locate(/obj/effect/low_wall_spawner) in oview(0, src))
- warning("Duplicate low wall spawners in [x],[y],[z]!")
+ WARNING("Duplicate low wall spawners in [x],[y],[z]!")
return INITIALIZE_HINT_QDEL
if(low_wall_type)
diff --git a/code/game/turfs/simulated/fancy_shuttles.dm b/code/game/turfs/simulated/fancy_shuttles.dm
index aa0b47b23a..39dedfe0cb 100644
--- a/code/game/turfs/simulated/fancy_shuttles.dm
+++ b/code/game/turfs/simulated/fancy_shuttles.dm
@@ -29,7 +29,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/fancy_shuttle)
/obj/effect/fancy_shuttle/Initialize(mapload) // has to be very early so others can grab it
. = ..()
if(!fancy_shuttle_tag)
- error("Fancy shuttle with no tag at [x],[y],[z]! Type is: [type]")
+ log_mapping("## ERROR Fancy shuttle with no tag at [x],[y],[z]! Type is: [type]")
return INITIALIZE_HINT_QDEL
split_icon = icon(split_file, null, dir)
GLOB.fancy_shuttles[fancy_shuttle_tag] = src
@@ -134,7 +134,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/fancy_shuttle)
if(fancy_shuttle_tag) // after a shuttle jump it won't be set anymore, but the shuttle jump proc will set our icon and state
var/obj/effect/fancy_shuttle/F = GLOB.fancy_shuttles[fancy_shuttle_tag]
if(!F)
- warning("Fancy shuttle wall at [x],[y],[z] couldn't locate a helper with tag [fancy_shuttle_tag]")
+ WARNING("Fancy shuttle wall at [x],[y],[z] couldn't locate a helper with tag [fancy_shuttle_tag]")
return
icon = F.split_icon
icon_state = "walls [x - F.x],[y - F.y]"
@@ -168,7 +168,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/fancy_shuttle)
/obj/effect/floor_decal/fancy_shuttle/Initialize(mapload)
var/obj/effect/fancy_shuttle/F = GLOB.fancy_shuttles[fancy_shuttle_tag]
if(!F)
- warning("Fancy shuttle floor decal at [x],[y],[z] couldn't locate a helper with tag [fancy_shuttle_tag]")
+ WARNING("Fancy shuttle floor decal at [x],[y],[z] couldn't locate a helper with tag [fancy_shuttle_tag]")
return INITIALIZE_HINT_QDEL
icon = F.split_icon
icon_file = F.split_file
@@ -211,7 +211,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/fancy_shuttle)
if(fancy_shuttle_tag) // after a shuttle jump it won't be set anymore, but the shuttle jump proc will set our icon and state
var/obj/effect/fancy_shuttle/F = GLOB.fancy_shuttles[fancy_shuttle_tag]
if(!F)
- warning("Fancy shuttle wall at [x],[y],[z] couldn't locate a helper with tag [fancy_shuttle_tag]")
+ WARNING("Fancy shuttle wall at [x],[y],[z] couldn't locate a helper with tag [fancy_shuttle_tag]")
return
icon = F.split_icon
icon_state = "walls [x - F.x],[y - F.y]"
diff --git a/code/game/turfs/simulated/wall_types.dm b/code/game/turfs/simulated/wall_types.dm
index 2bcaf05b56..af85beba11 100644
--- a/code/game/turfs/simulated/wall_types.dm
+++ b/code/game/turfs/simulated/wall_types.dm
@@ -382,7 +382,7 @@
break
if(!T)
- warning("Hull corner at [x],[y] not placed adjacent to a hull it can find.")
+ WARNING("Hull corner at [x],[y] not placed adjacent to a hull it can find.")
/obj/structure/hull_corner/long_vert
icon = 'icons/turf/wall_masks32x64.dmi'
diff --git a/code/game/turfs/unsimulated/sky_vr.dm b/code/game/turfs/unsimulated/sky_vr.dm
index 6249efb101..6127168178 100644
--- a/code/game/turfs/unsimulated/sky_vr.dm
+++ b/code/game/turfs/unsimulated/sky_vr.dm
@@ -14,7 +14,7 @@
/turf/unsimulated/floor/sky/Initialize(mapload)
. = ..()
if(does_skyfall && !LAZYLEN(skyfall_levels))
- error("[x],[y],[z], [get_area(src)] doesn't have skyfall_levels defined! Can't skyfall!")
+ log_mapping("## ERROR [x],[y],[z], [get_area(src)] doesn't have skyfall_levels defined! Can't skyfall!")
if(locate(/turf/simulated) in orange(src,1))
set_light(2, 2, color)
diff --git a/code/game/vehicles/vehicle.dm b/code/game/vehicles/vehicle.dm
index 69a4716f47..13c366bf8b 100644
--- a/code/game/vehicles/vehicle.dm
+++ b/code/game/vehicles/vehicle.dm
@@ -63,7 +63,7 @@
spark_system.attach(src)
add_cell()
removeVerb(/atom/movable/verb/pull)
- log_message("[src.name]'s functions initialised. Work protocols active - Entering IDLE mode.")
+ src.mecha_log_message("[src.name]'s functions initialised. Work protocols active - Entering IDLE mode.")
//################ Helpers ###########################################################
@@ -98,7 +98,7 @@
//################ Logs and messages ############################################
-/obj/vehicle/proc/log_message(message as text,red=null)
+/obj/vehicle/proc/mecha_log_message(message as text,red=null)
log.len++
log[log.len] = list("time"=world.timeofday,"message"="[red?span_red("[message]"):[message]]")
return log.len
diff --git a/code/game/world.dm b/code/game/world.dm
index ac968e4feb..775fae95fd 100644
--- a/code/game/world.dm
+++ b/code/game/world.dm
@@ -87,9 +87,15 @@ GLOBAL_VAR(restart_counter)
Profile(PROFILE_RESTART)
Profile(PROFILE_RESTART, type = "sendmaps")
+ // Write everything to this log file until we get to SetupLogs() later
+ _initialize_log_files("data/logs/config_error.[GUID()].log")
+
// Init the debugger first so we can debug Master
Debugger = new
+ // Create the logger
+ logger = new
+
// THAT'S IT, WE'RE DONE, THE. FUCKING. END.
Master = new
@@ -124,25 +130,6 @@ GLOBAL_VAR(restart_counter)
world_startup_time = world.timeofday
rollover_safety_date = world.realtime - world.timeofday // 00:00 today (ish, since floating point error with world.realtime) of today
- to_world_log("Map Loading Complete")
- //logs
- //VOREStation Edit Start
-
- var/override_dir = params[OVERRIDE_LOG_DIRECTORY_PARAMETER]
- if(override_dir)
- GLOB.log_directory = "data/logs/[override_dir]"
- else
- GLOB.log_directory += time2text(world.realtime, "YYYY/MM-Month/DD-Day/round-hh-mm-ss")
- GLOB.diary = start_log("[GLOB.log_directory].log")
- GLOB.href_logfile = start_log("[GLOB.log_directory]-hrefs.htm")
- GLOB.error_log = start_log("[GLOB.log_directory]-error.log")
- GLOB.sql_error_log = start_log("[GLOB.log_directory]-sql-error.log")
- GLOB.query_debug_log = start_log("[GLOB.log_directory]-query-debug.log")
- GLOB.debug_log = start_log("[GLOB.log_directory]-debug.log")
-
- var/latest_changelog = file("[global.config.directory]/../html/changelogs_ch/archive/" + time2text(world.timeofday, "YYYY-MM") + ".yml") // CHOMPEdit - changelogs_ch
- GLOB.changelog_hash = fexists(latest_changelog) ? md5(latest_changelog) : "" //for telling if the changelog has changed recently
- to_world_log("Changelog Hash: '[GLOB.changelog_hash]' ([latest_changelog])")
//ChompADD Start - Newsfile
var/savefile/F = new(NEWSFILE)
@@ -155,7 +142,6 @@ GLOBAL_VAR(restart_counter)
GLOB.servernews_hash = md5("[title]" + "[body]")
//ChompADD End
- // First possible sleep()
InitTgs()
config.Load(params[OVERRIDE_CONFIG_DIRECTORY_PARAMETER])
@@ -188,8 +174,8 @@ GLOBAL_VAR(restart_counter)
setup_season() //VOREStation Addition
#ifdef UNIT_TESTS
- log_unit_test("Unit Tests Enabled. This will destroy the world when testing is complete.")
- log_unit_test("If you did not intend to enable this please check code/__defines/unit_testing.dm")
+ log_test("Unit Tests Enabled. This will destroy the world when testing is complete.")
+ log_test("If you did not intend to enable this please check code/__defines/unit_testing.dm")
#endif
// This is kinda important. Set up details of what the hell things are made of.
@@ -232,6 +218,8 @@ GLOBAL_VAR(restart_counter)
// Try to set round ID
SSdbcore.InitializeRound()
+ SetupLogs()
+
load_admins(initial = TRUE)
//apply a default value to config.python_path, if needed
@@ -277,6 +265,46 @@ GLOBAL_VAR(restart_counter)
data["timestamp"] = rustg_unix_timestamp()
return data
+/world/proc/SetupLogs()
+ var/override_dir = params[OVERRIDE_LOG_DIRECTORY_PARAMETER]
+ if(!override_dir)
+ var/realtime = world.realtime
+ var/texttime = time2text(realtime, "YYYY/MM/DD", TIMEZONE_UTC)
+ GLOB.log_directory = "data/logs/[texttime]/round-"
+ if(GLOB.round_id)
+ GLOB.log_directory += "[GLOB.round_id]"
+ //GLOB.picture_logging_prefix += "R_[GLOB.round_id]_"
+ //GLOB.picture_log_directory += "[GLOB.round_id]"
+ else
+ var/timestamp = replacetext(time_stamp(), ":", ".")
+ GLOB.log_directory += "[timestamp]"
+ //GLOB.picture_log_directory += "[timestamp]"
+ //GLOB.picture_logging_prefix += "T_[timestamp]_"
+ else
+ GLOB.log_directory = "data/logs/[override_dir]"
+ //GLOB.picture_logging_prefix = "O_[override_dir]_"
+ //GLOB.picture_log_directory = "data/picture_logs/[override_dir]"
+
+ logger.init_logging()
+
+ var/latest_changelog = file("[global.config.directory]/../html/changelogs_ch/archive/" + time2text(world.timeofday, "YYYY-MM", TIMEZONE_UTC) + ".yml") // CHOMPEdit - changelogs_ch
+ GLOB.changelog_hash = fexists(latest_changelog) ? md5(latest_changelog) : 0 //for telling if the changelog has changed recently
+
+ if(GLOB.round_id)
+ log_game("Round ID: [GLOB.round_id]")
+
+ // This was printed early in startup to the world log and config_error.log,
+ // but those are both private, so let's put the commit info in the runtime
+ // log which is ultimately public.
+ log_runtime(GLOB.revdata.get_log_message())
+
+#ifndef USE_CUSTOM_ERROR_HANDLER
+ world.log = file("[GLOB.log_directory]/dd.log")
+#else
+ if (TgsAvailable()) // why
+ world.log = file("[GLOB.log_directory]/dd.log") //not all runtimes trigger world/Error, so this is the only way to ensure we can see all of them.
+#endif
+
var/world_topic_spam_protect_ip = "0.0.0.0"
var/world_topic_spam_protect_time = world.timeofday
@@ -538,9 +566,10 @@ var/world_topic_spam_protect_time = world.timeofday
if (usr)
log_admin("[key_name(usr)] Has requested an immediate world restart via client side debugging tools")
message_admins("[key_name_admin(usr)] Has requested an immediate world restart via client side debugging tools")
- to_world(span_boldannounce("[key_name_admin(usr)] has requested an immediate world restart via client side debugging tools"))
+ to_chat(world, span_boldannounce("[key_name_admin(usr)] has requested an immediate world restart via client side debugging tools"))
+
else
- to_world(span_boldannounce("Rebooting world immediately due to host request"))
+ to_chat(world, span_boldannounce("Rebooting world immediately due to host request"))
else
Master.Shutdown() //run SS shutdowns
for(var/client/C in GLOB.clients)
@@ -553,19 +582,19 @@ var/world_topic_spam_protect_time = world.timeofday
#else
if(check_hard_reboot())
log_world("World hard rebooted at [time_stamp()]")
- //shutdown_logging() // See comment below.
+ shutdown_logging() // See comment below.
//QDEL_NULL(Tracy)
//QDEL_NULL(Debugger)
TgsEndProcess()
return ..()
- TgsReboot()
log_world("World rebooted at [time_stamp()]")
+ shutdown_logging() // Past this point, no logging procs can be used, at risk of data loss.
QDEL_NULL(Tracy)
QDEL_NULL(Debugger)
- TgsReboot()
+ TgsReboot() // TGS can decide to kill us right here, so it's important to do it last
..()
#endif
@@ -588,7 +617,7 @@ var/world_topic_spam_protect_time = world.timeofday
if(Lines.len)
if(Lines[1])
GLOB.master_mode = Lines[1]
- log_misc("Saved mode is '[GLOB.master_mode]'")
+ log_world("## MISC Saved mode is '[GLOB.master_mode]'")
/world/proc/save_mode(var/the_mode)
var/F = file("data/mode.txt")
@@ -603,7 +632,7 @@ var/world_topic_spam_protect_time = world.timeofday
if(CONFIG_GET(flag/admin_legacy_system))
var/text = file2text("config/moderators.txt")
if (!text)
- error("Failed to load config/mods.txt")
+ log_world("Failed to load config/mods.txt")
else
var/list/lines = splittext(text, "\n")
for(var/line in lines)
@@ -684,29 +713,11 @@ var/failed_old_db_connections = 0
/hook/startup/proc/connectDB()
if(!CONFIG_GET(flag/sql_enabled))
- to_world_log("SQL connection disabled in config.")
+ log_sql("SQL connection disabled in config.")
else if(!setup_database_connection())
- to_world_log("Your server failed to establish a connection with the feedback database.")
+ log_sql("Your server failed to establish a connection with the feedback database.")
else
- to_world_log("Feedback database connection established.")
- // CHOMPEdit Begin - Truncating the temporary dialog/attacklog tables
- var/datum/db_query/query_truncate = SSdbcore.NewQuery("TRUNCATE erro_dialog")
- var/num_tries = 0
- while(!query_truncate.Execute() && num_tries<5)
- num_tries++
-
- if(num_tries==5)
- log_admin("ERROR TRYING TO CLEAR erro_dialog")
- qdel(query_truncate)
- var/datum/db_query/query_truncate2 = SSdbcore.NewQuery("TRUNCATE erro_attacklog")
- num_tries = 0
- while(!query_truncate2.Execute() && num_tries<5)
- num_tries++
-
- if(num_tries==5)
- log_admin("ERROR TRYING TO CLEAR erro_attacklog")
- qdel(query_truncate2)
- // CHOMPEdit End
+ log_sql("Feedback database connection established.")
return 1
/proc/setup_database_connection()
@@ -730,7 +741,7 @@ var/failed_old_db_connections = 0
failed_db_connections = 0 //If this connection succeeded, reset the failed connections counter.
else
failed_db_connections++ //If it failed, increase the failed connections counter.
- to_world_log(SSdbcore.ErrorMsg())
+ log_sql(SSdbcore.ErrorMsg())
return .
@@ -765,7 +776,7 @@ var/failed_old_db_connections = 0
results += "FAIL: failed to connect to the database with setup_database_connection()"
results += "-- DB Reset End --"
- to_world_log(results.Join("\n"))
+ log_sql(results.Join("\n"))
// Things to do when a new z-level was just made.
/world/proc/max_z_changed()
diff --git a/code/js/view_variables.js b/code/js/view_variables.js
index 1b29528706..44f827f8da 100644
--- a/code/js/view_variables.js
+++ b/code/js/view_variables.js
@@ -1,30 +1,30 @@
function updateSearch() {
- var filter_text = document.getElementById("filter");
- var filter = filter_text.value.toLowerCase();
+ const filter_text = document.getElementById('filter');
+ const filter = filter_text.value.toLowerCase();
- var vars_ol = document.getElementById("vars");
- var lis = vars_ol.children;
+ const vars_ol = document.getElementById('vars');
+ const lis = vars_ol.children;
// the above line can be changed to vars_ol.getElementsByTagName("li") to filter child lists too
// potential todo: implement a per-admin toggle for this
- for (var i = 0; i < lis.length; i++) {
- var li = lis[i];
- if (filter == "" || li.innerText.toLowerCase().indexOf(filter) != -1) {
- li.style.display = "block";
+ for (let i = 0; i < lis.length; i++) {
+ const li = lis[i];
+ if (filter === '' || li.innerText.toLowerCase().indexOf(filter) !== -1) {
+ li.style.display = 'block';
} else {
- li.style.display = "none";
+ li.style.display = 'none';
}
}
}
function selectTextField() {
- var filter_text = document.getElementById("filter");
+ const filter_text = document.getElementById('filter');
filter_text.focus();
filter_text.select();
}
function loadPage(list) {
- if (list.options[list.selectedIndex].value == "") {
+ if (list.options[list.selectedIndex].value === '') {
return;
}
diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm
index 6acbf36fc2..0d4cc98d02 100644
--- a/code/modules/admin/IsBanned.dm
+++ b/code/modules/admin/IsBanned.dm
@@ -1,18 +1,24 @@
#ifndef OVERRIDE_BAN_SYSTEM
//Blocks an attempt to connect before even creating our client datum thing.
-/world/IsBanned(key,address,computer_id)
+/world/IsBanned(key, address, computer_id, type, real_bans_only=FALSE)
+ if (!key || (!real_bans_only && (!address || !computer_id)))
+ if(real_bans_only)
+ return FALSE
+ log_access("Failed Login (invalid data): [key] [address]-[computer_id]")
+ return list("reason"="invalid login data", "desc"="Error: Could not check ban status, Please try again. Error message: Your computer provided invalid or blank information to the server on connection (byond username, IP, and Computer ID.) Provided information for reference: Username:'[key]' IP:'[address]' Computer ID:'[computer_id]'. (If you continue to get this error, please restart byond or contact byond support.)")
+
if(ckey(key) in GLOB.admin_datums)
return ..()
//Guest Checking
if(!CONFIG_GET(flag/guests_allowed) && IsGuestKey(key))
- log_adminwarn("Failed Login: [key] - Guests not allowed")
+ log_access("Failed Login: [key] - Guests not allowed")
message_admins(span_blue("Failed Login: [key] - Guests not allowed"))
return list("reason"="guest", "desc"="\nReason: Guests not allowed. Please sign in with a byond account.")
//check if the IP address is a known TOR node
if(config && CONFIG_GET(flag/ToRban) && ToRban_isbanned(address))
- log_adminwarn("Failed Login: [src] - Banned: ToR")
+ log_access("Failed Login: [src] - Banned: ToR")
message_admins(span_blue("Failed Login: [src] - Banned: ToR"))
//ban their computer_id and ckey for posterity
AddBan(ckey(key), computer_id, "Use of ToR", "Automated Ban", 0, 0)
@@ -24,7 +30,7 @@
//Ban Checking
. = CheckBan( ckey(key), computer_id, address )
if(.)
- log_adminwarn("Failed Login: [key] [computer_id] [address] - Banned [.["reason"]]")
+ log_suspicious_login("Failed Login: [key] [computer_id] [address] - Banned [.["reason"]]")
message_admins(span_blue("Failed Login: [key] id:[computer_id] ip:[address] - Banned [.["reason"]]"))
return .
@@ -35,8 +41,9 @@
var/ckeytext = ckey(key)
if(!establish_db_connection())
- error("Ban database connection failure. Key [ckeytext] not checked")
- log_misc("Ban database connection failure. Key [ckeytext] not checked")
+ var/msg = "Ban database connection failure. Key [ckeytext] not checked"
+ log_world(msg)
+ message_admins(msg)
return
var/failedcid = 1
@@ -53,7 +60,7 @@
if(isnum(text2num(computer_id)))
cidquery = " OR computerid = '[computer_id]' "
else
- log_misc("Key [ckeytext] cid not checked. Non-Numeric: [computer_id]")
+ log_world("Key [ckeytext] cid not checked. Non-Numeric: [computer_id]")
failedcid = 1
var/datum/db_query/query = SSdbcore.NewQuery("SELECT ckey, ip, computerid, a_ckey, reason, expiration_time, duration, bantime, bantype FROM erro_ban WHERE (ckey = '[ckeytext]' [ipquery] [cidquery]) AND (bantype = 'PERMABAN' OR (bantype = 'TEMPBAN' AND expiration_time > Now())) AND isnull(unbanned)")
diff --git a/code/modules/admin/ToRban.dm b/code/modules/admin/ToRban.dm
index 8cdae64876..11cb9c5440 100644
--- a/code/modules/admin/ToRban.dm
+++ b/code/modules/admin/ToRban.dm
@@ -22,10 +22,10 @@
/proc/ToRban_update()
spawn(0)
- log_misc("Downloading updated ToR data...")
+ log_world("Downloading updated ToR data...")
var/http[] = world.Export("https://check.torproject.org/exit-addresses")
- var/list/rawlist = file2list(http["CONTENT"])
+ var/list/rawlist = world.file2list(http["CONTENT"])
if(rawlist.len)
fdel(TORFILE)
var/savefile/F = new(TORFILE)
@@ -36,11 +36,11 @@
if(!cleaned) continue
F[cleaned] << 1
F["last_update"] << world.realtime
- log_misc("ToR data updated!")
+ log_world("ToR data updated!")
if(usr)
to_chat(usr, span_filter_adminlog("ToRban updated."))
return
- log_misc("ToR data update aborted: no data.")
+ log_world("ToR data update aborted: no data.")
return
/client/proc/ToRban(task in list("update","toggle","show","remove","remove all","find"))
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 7111267822..c0aa2cde1d 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -4,7 +4,7 @@ GLOBAL_VAR_INIT(floorIsLava, 0)
////////////////////////////////
/proc/message_admins(var/msg)
msg = span_filter_adminlog(span_log_message(span_prefix("ADMIN LOG:") + span_message("[msg]")))
- //log_adminwarn(msg) //log_and_message_admins is for this
+ //log_admin_private(msg) //log_and_message_admins is for this
for(var/client/C in GLOB.admins)
if(check_rights_for(C, (R_ADMIN|R_MOD|R_SERVER)))
@@ -542,8 +542,8 @@ ADMIN_VERB_ONLY_CONTEXT_MENU(show_player_panel, R_HOLDER, "Show Player Panel", m
else
dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com"
- //to_world("Channelname: [src.admincaster_feed_channel.channel_name] [src.admincaster_feed_channel.author]")
- //to_world("Msg: [src.admincaster_feed_message.author] [src.admincaster_feed_message.body]")
+ //to_chat(world, "Channelname: [src.admincaster_feed_channel.channel_name] [src.admincaster_feed_channel.author]")
+ //to_chat(world, "Msg: [src.admincaster_feed_message.author] [src.admincaster_feed_message.body]")
var/datum/browser/popup = new(owner, "admincaster_main", "Admin Newscaster", 400, 600)
popup.add_head_content("Admin Newscaster")
@@ -830,9 +830,9 @@ var/datum/announcement/minor/admin_min_announcer = new
CONFIG_SET(flag/ooc_allowed, !CONFIG_GET(flag/ooc_allowed))
if (CONFIG_GET(flag/ooc_allowed))
- to_world(span_world("The OOC channel has been globally enabled!"))
+ to_chat(world, span_world("The OOC channel has been globally enabled!"))
else
- to_world(span_world("The OOC channel has been globally disabled!"))
+ to_chat(world, span_world("The OOC channel has been globally disabled!"))
log_and_message_admins("toggled OOC.")
feedback_add_details("admin_verb","TOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -846,9 +846,9 @@ var/datum/announcement/minor/admin_min_announcer = new
CONFIG_SET(flag/looc_allowed, !CONFIG_GET(flag/looc_allowed))
if (CONFIG_GET(flag/looc_allowed))
- to_world(span_world("The LOOC channel has been globally enabled!"))
+ to_chat(world, span_world("The LOOC channel has been globally enabled!"))
else
- to_world(span_world("The LOOC channel has been globally disabled!"))
+ to_chat(world, span_world("The LOOC channel has been globally disabled!"))
log_and_message_admins("toggled LOOC.")
feedback_add_details("admin_verb","TLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -863,9 +863,9 @@ var/datum/announcement/minor/admin_min_announcer = new
CONFIG_SET(flag/dsay_allowed, !CONFIG_GET(flag/dsay_allowed))
if (CONFIG_GET(flag/dsay_allowed))
- to_world(span_world("Deadchat has been globally enabled!"))
+ to_chat(world, span_world("Deadchat has been globally enabled!"))
else
- to_world(span_world("Deadchat has been globally disabled!"))
+ to_chat(world, span_world("Deadchat has been globally disabled!"))
log_admin("[key_name(usr)] toggled deadchat.")
message_admins("[key_name_admin(usr)] toggled deadchat.", 1)
feedback_add_details("admin_verb","TDSAY") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc
@@ -925,7 +925,7 @@ var/datum/announcement/minor/admin_min_announcer = new
feedback_add_details("admin_verb","SN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
else
SSticker.start_immediately = FALSE
- to_world(span_filter_system(span_blue("Immediate game start canceled. Normal startup resumed.")))
+ to_chat(world, span_filter_system(span_blue("Immediate game start canceled. Normal startup resumed.")))
log_and_message_admins("cancelled immediate game start.")
/datum/admins/proc/toggleenter()
@@ -934,9 +934,9 @@ var/datum/announcement/minor/admin_min_announcer = new
set name="Toggle Entering"
CONFIG_SET(flag/enter_allowed, !CONFIG_GET(flag/enter_allowed))
if (!CONFIG_GET(flag/enter_allowed))
- to_world(span_world("New players may no longer enter the game."))
+ to_chat(world, span_world("New players may no longer enter the game."))
else
- to_world(span_world("New players may now enter the game."))
+ to_chat(world, span_world("New players may now enter the game."))
log_admin("[key_name(usr)] toggled new player game entering.")
message_admins(span_blue("[key_name_admin(usr)] toggled new player game entering."), 1)
world.update_status()
@@ -948,9 +948,9 @@ var/datum/announcement/minor/admin_min_announcer = new
set name="Toggle AI"
CONFIG_SET(flag/allow_ai, !CONFIG_GET(flag/allow_ai))
if (!CONFIG_GET(flag/allow_ai))
- to_world(span_world("The AI job is no longer chooseable."))
+ to_chat(world, span_world("The AI job is no longer chooseable."))
else
- to_world(span_world("The AI job is chooseable now."))
+ to_chat(world, span_world("The AI job is chooseable now."))
log_admin("[key_name(usr)] toggled AI allowed.")
world.update_status()
feedback_add_details("admin_verb","TAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -961,9 +961,9 @@ var/datum/announcement/minor/admin_min_announcer = new
set name="Toggle Respawn"
CONFIG_SET(flag/abandon_allowed, !CONFIG_GET(flag/abandon_allowed))
if(CONFIG_GET(flag/abandon_allowed))
- to_world(span_world("You may now respawn."))
+ to_chat(world, span_world("You may now respawn."))
else
- to_world(span_world("You may no longer respawn :("))
+ to_chat(world, span_world("You may no longer respawn :("))
message_admins(span_blue("[key_name_admin(usr)] toggled respawn to [CONFIG_GET(flag/abandon_allowed) ? "On" : "Off"]."), 1)
log_admin("[key_name(usr)] toggled respawn to [CONFIG_GET(flag/abandon_allowed) ? "On" : "Off"].")
world.update_status()
@@ -985,9 +985,9 @@ var/datum/announcement/minor/admin_min_announcer = new
set name="Toggle Mapload Persistent Data"
CONFIG_SET(flag/persistence_ignore_mapload, !CONFIG_GET(flag/persistence_ignore_mapload))
if(!CONFIG_GET(flag/persistence_ignore_mapload))
- to_world(span_world("Persistence is now enabled."))
+ to_chat(world, span_world("Persistence is now enabled."))
else
- to_world(span_world("Persistence is no longer enabled."))
+ to_chat(world, span_world("Persistence is no longer enabled."))
message_admins(span_blue("[key_name_admin(usr)] toggled persistence to [CONFIG_GET(flag/persistence_ignore_mapload) ? "Off" : "On"]."), 1)
log_admin("[key_name(usr)] toggled persistence to [CONFIG_GET(flag/persistence_ignore_mapload) ? "Off" : "On"].")
world.update_status()
@@ -1024,10 +1024,10 @@ var/datum/announcement/minor/admin_min_announcer = new
return
GLOB.round_progressing = !GLOB.round_progressing
if (!GLOB.round_progressing)
- to_world(span_world("The game start has been delayed."))
+ to_chat(world, span_world("The game start has been delayed."))
log_admin("[key_name(usr)] delayed the game.")
else
- to_world(span_world("The game will start soon."))
+ to_chat(world, span_world("The game will start soon."))
log_admin("[key_name(usr)] removed the delay.")
feedback_add_details("admin_verb","DELAY") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -1294,9 +1294,9 @@ var/datum/announcement/minor/admin_min_announcer = new
set name="Toggle tinted welding helmets."
CONFIG_SET(flag/welder_vision, !CONFIG_GET(flag/welder_vision))
if (CONFIG_GET(flag/welder_vision))
- to_world(span_world("Reduced welder vision has been enabled!"))
+ to_chat(world, span_world("Reduced welder vision has been enabled!"))
else
- to_world(span_world("Reduced welder vision has been disabled!"))
+ to_chat(world, span_world("Reduced welder vision has been disabled!"))
log_admin("[key_name(usr)] toggled welder vision.")
message_admins("[key_name_admin(usr)] toggled welder vision.", 1)
feedback_add_details("admin_verb","TTWH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -1307,9 +1307,9 @@ var/datum/announcement/minor/admin_min_announcer = new
set name="Toggle guests"
CONFIG_SET(flag/guests_allowed, !CONFIG_GET(flag/guests_allowed))
if (!CONFIG_GET(flag/guests_allowed))
- to_world(span_world("Guests may no longer enter the game."))
+ to_chat(world, span_world("Guests may no longer enter the game."))
else
- to_world(span_world("Guests may now enter the game."))
+ to_chat(world, span_world("Guests may now enter the game."))
log_admin("[key_name(usr)] toggled guests game entering [CONFIG_GET(flag/guests_allowed)?"":"dis"]allowed.")
message_admins(span_blue("[key_name_admin(usr)] toggled guests game entering [CONFIG_GET(flag/guests_allowed)?"":"dis"]allowed."), 1)
feedback_add_details("admin_verb","TGU") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/code/modules/admin/admin_tools.dm b/code/modules/admin/admin_tools.dm
index 27ed63aa24..61aa8dbaba 100644
--- a/code/modules/admin/admin_tools.dm
+++ b/code/modules/admin/admin_tools.dm
@@ -2,7 +2,6 @@
set category = "Admin.Logs"
set name = "Check Player Attack Logs"
set desc = "Check a player's attack logs."
- show_cmd_admin_check_player_logs(M)
show_cmd_admin_check_player_logs(M)
@@ -13,25 +12,17 @@
if(M.mind)
dat += span_bold("Current Antag?:") + " [(M.mind.special_role)?"Yes":"No"] "
dat += " " + span_bold("Note:") + " This is arranged from earliest to latest.
"
- //CHOMPEdit Begin
- /*for(var/d in M.dialogue_log)
- dat += "[d] "*/
- var/datum/db_query/query = SSdbcore.NewQuery("SELECT id,time,ckey,mob,message from erro_attacklog WHERE ckey = :t_ckey", list("t_ckey" = M.ckey))
- if(!query.Execute())
- dat += span_italics("Database query error")
- else
- var/messages = ""
- while(query.NextRow())
- messages += "([query.item[2]]) (ckey:[query.item[3]] real_name:[query.item[4]]) [query.item[5]] "
- if(messages=="")
- dat+= span_italics("Query returned nothing.")
- else
- dat += ""
- qdel(query)
- //CHOMPEdit End
+
+ if(!isemptylist(M.attack_log))
+ dat += ""
+
+ else
+ dat += span_italics("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))
@@ -55,26 +46,15 @@
dat += span_bold("Current Antag?:") + " [(M.mind.special_role)?"Yes":"No"] "
dat += " " + span_bold("Note:") + " This is arranged from earliest to latest.
"
+ if(!isemptylist(M.dialogue_log))
+ dat += ""
else
- var/messages = ""
- while(query.NextRow())
- messages += "([query.item[2]]) (ckey:[query.item[3]] real_name:[query.item[4]] type:[query.item[5]]) [query.item[6]] "
-
- if(messages=="")
- dat+=span_italics("Query returned nothing.")
- else
- dat += ""
- qdel(query)
- //CHOMPEdit End
+ dat += span_italics("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()
diff --git a/code/modules/admin/admin_verb_lists_vr.dm b/code/modules/admin/admin_verb_lists_vr.dm
index c119208cc1..013318d42a 100644
--- a/code/modules/admin/admin_verb_lists_vr.dm
+++ b/code/modules/admin/admin_verb_lists_vr.dm
@@ -211,7 +211,6 @@ var/list/admin_verbs_debug = list(
/client/proc/hide_verbs, //hides all our adminverbs,
/client/proc/hide_most_verbs, //hides all our hideable adminverbs,
/client/proc/cmd_check_new_players, //allows us to see every new player,
- /datum/admins/proc/view_runtimes,
// /client/proc/show_gm_status, //We don't use SSgame_master yet.
/datum/admins/proc/set_uplink,
/datum/admins/proc/change_weather,
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 18082280ee..1e906aee2a 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -193,6 +193,10 @@ ADMIN_VERB(game_panel, R_ADMIN|R_SERVER|R_FUN, "Game Panel", "Look at the state
user.holder.Game()
feedback_add_details("admin_verb","GP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+/// Returns this client's stealthed ckey
+/client/proc/getStealthKey()
+ return GLOB.stealthminID[ckey]
+
/client/proc/findStealthKey(txt)
if(txt)
for(var/P in GLOB.stealthminID)
diff --git a/code/modules/admin/banjob.dm b/code/modules/admin/banjob.dm
index 815d3e42ec..ad56f56516 100644
--- a/code/modules/admin/banjob.dm
+++ b/code/modules/admin/banjob.dm
@@ -70,8 +70,7 @@ DEBUG
log_admin("jobban_keylist was empty")
else
if(!establish_db_connection())
- error("Database connection failed. Reverting to the legacy ban system.")
- log_misc("Database connection failed. Reverting to the legacy ban system.")
+ log_sql("Database connection failed. Reverting to the legacy ban system.")
CONFIG_SET(flag/ban_legacy_system, TRUE)
jobban_loadbanfile()
return
diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm
index f2ac1eeb14..b7a7f997f7 100644
--- a/code/modules/admin/holder2.dm
+++ b/code/modules/admin/holder2.dm
@@ -268,7 +268,7 @@ you will have to do something like if(client.rights & R_ADMIN) yourself.
var/client/C = usr.client
if(!C)
// CRASH("No client for HrefToken()!") //Chomp EDIT - this seems be to encountered and we don't want this to crash
- log_debug("Attempted to retrieve a HrefToken of an entity with no client.") //Chomp EDIT
+ log_runtime("Attempted to retrieve a HrefToken of an entity with no client.") //Chomp EDIT
return 0 //Chomp EDIT
var/datum/admins/holder = C.holder
if(holder)
diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm
index 0f2efe3283..aa1e81145b 100644
--- a/code/modules/admin/player_panel.dm
+++ b/code/modules/admin/player_panel.dm
@@ -79,7 +79,7 @@
body += "PP - "
body += "N - "
- body += "VV - "
+ body += "VV - "
body += "TP - "
body += "PM - "
body += "SM - "
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 68fd75f5a4..b4aad3630d 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -6,11 +6,13 @@
var/msg = !auth ? "no" : "a bad"
message_admins("[key_name_admin(usr)] clicked an href with [msg] authorization key!")
+ /* Debug code in case one needs to dig missing token HREFS
var/debug_admin_hrefs = TRUE // Remove once everything is converted over
if(debug_admin_hrefs)
message_admins("Debug mode enabled, call not blocked. Please ask your coders to review this round's logs.")
log_world("UAH: [href]")
return TRUE
+ */
log_admin("[key_name(usr)] clicked an href with [msg] authorization key! [href]")
@@ -865,7 +867,7 @@
GLOB.master_mode = href_list["c_mode2"]
log_admin("[key_name(usr)] set the mode as [config.mode_names[GLOB.master_mode]].")
message_admins(span_blue("[key_name_admin(usr)] set the mode as [config.mode_names[GLOB.master_mode]]."), 1)
- to_world(span_world(span_blue("The mode is now: [config.mode_names[GLOB.master_mode]]")))
+ to_chat(world, span_world(span_blue("The mode is now: [config.mode_names[GLOB.master_mode]]")))
Game() // updates the main game menu
world.save_mode(GLOB.master_mode)
.(href, list("c_mode"=1))
diff --git a/code/modules/admin/verbs/BrokenInhands.dm b/code/modules/admin/verbs/BrokenInhands.dm
index a3aa4454c3..b708783ee8 100644
--- a/code/modules/admin/verbs/BrokenInhands.dm
+++ b/code/modules/admin/verbs/BrokenInhands.dm
@@ -31,4 +31,4 @@
var/F = file("broken_icons.txt")
fdel(F)
F << text
- to_world(span_filter_system("Completeled successfully and written to [F]"))
+ to_chat(world, span_filter_system("Completeled successfully and written to [F]"))
diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm
index af647db526..5fd82db286 100644
--- a/code/modules/admin/verbs/adminsay.dm
+++ b/code/modules/admin/verbs/adminsay.dm
@@ -3,7 +3,7 @@ ADMIN_VERB(cmd_admin_say, R_ADMIN, "ASay", "Send a message to other admins", "Ad
if(!msg)
return
- log_adminsay(msg, user)
+ user.mob.log_talk(message, LOG_ASAY)
for(var/client/C in GLOB.admins)
if(check_rights_for(C, R_ADMIN))
@@ -13,7 +13,7 @@ ADMIN_VERB(cmd_admin_say, R_ADMIN, "ASay", "Send a message to other admins", "Ad
ADMIN_VERB(cmd_mod_say, (R_ADMIN|R_MOD|R_SERVER), "Msay", "Send a message to other mod", "Admin.Chat", message as text)
var/msg = sanitize(message)
- log_modsay(msg, user)
+ log_modsay(msg, list("speaker" = user))
if (!msg)
return
@@ -29,7 +29,7 @@ ADMIN_VERB(cmd_mod_say, (R_ADMIN|R_MOD|R_SERVER), "Msay", "Send a message to oth
ADMIN_VERB(cmd_event_say, (R_ADMIN|R_MOD|R_EVENT|R_SERVER), "Esay", "Send a message to other event manager", "Admin.Chat", message as text)
var/msg = sanitize(message)
- log_eventsay(msg, user)
+ log_eventsay(msg, list("speaker" = user))
if (!msg)
return
diff --git a/code/modules/admin/verbs/antag-ooc.dm b/code/modules/admin/verbs/antag-ooc.dm
index 89cb037d17..2405d5e6d8 100644
--- a/code/modules/admin/verbs/antag-ooc.dm
+++ b/code/modules/admin/verbs/antag-ooc.dm
@@ -39,4 +39,4 @@
if((M.mind && M.mind.special_role && A && A.can_hear_aooc) || isobserver(M)) // Antags must have their type be allowed to AOOC to see AOOC. This prevents, say, ERT from seeing AOOC.
to_chat(M, span_ooc(span_aooc("[create_text_tag("aooc", "Antag-OOC:", M.client)] [player_display]: " + span_message("[msg]"))))
- log_aooc(msg,src)
+ src.mob.log_talk("(AOOC) [msg]", LOG_OOC)
diff --git a/code/modules/admin/verbs/cinematic.dm b/code/modules/admin/verbs/cinematic.dm
index c0a5095f55..557d74c825 100644
--- a/code/modules/admin/verbs/cinematic.dm
+++ b/code/modules/admin/verbs/cinematic.dm
@@ -1,4 +1,4 @@
-ADMIN_VERB(cinematic, R_FUN, "Cinematic", "Show a cinematic to all players.", ADMIN_CATEGORY_FUN)
+ADMIN_VERB(cinematic, R_FUN, "Cinematic", "Show a cinematic to all players.", "Fun.Do Not")
var/datum/cinematic/choice = tgui_input_list(
user,
"Chose a cinematic to play to everyone in the server.",
diff --git a/code/modules/admin/verbs/custom_event.dm b/code/modules/admin/verbs/custom_event.dm
index 8cb6d62b15..1c0d242ea7 100644
--- a/code/modules/admin/verbs/custom_event.dm
+++ b/code/modules/admin/verbs/custom_event.dm
@@ -19,10 +19,10 @@
GLOB.custom_event_msg = input
- to_world(span_filter_system("
[span_alert("Custom Event")]
"))
- to_world(span_filter_system("
[span_alert("A custom event is starting. OOC Info:")]
[span_alert("A custom event is starting. OOC Info:")]
"))
+ to_chat(world, span_filter_system(span_alert("[GLOB.custom_event_msg]")))
+ to_chat(world, span_filter_system(" "))
SSwebhooks.send(
WEBHOOK_CUSTOM_EVENT,
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 45b5b52d2a..137ab997e8 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -393,33 +393,33 @@ ADMIN_VERB(cmd_assume_direct_control, (R_DEBUG|R_ADMIN|R_EVENT), "Assume Direct
var/list/areas_without_intercom = areas_all - areas_with_intercom
var/list/areas_without_camera = areas_all - areas_with_camera
- to_world(span_bold("AREAS WITHOUT AN APC:"))
+ to_chat(world, span_bold("AREAS WITHOUT AN APC:"))
for(var/areatype in areas_without_APC)
- to_world("* [areatype]")
+ to_chat(world, "* [areatype]")
- to_world(span_bold("AREAS WITHOUT AN AIR ALARM:"))
+ to_chat(world, span_bold("AREAS WITHOUT AN AIR ALARM:"))
for(var/areatype in areas_without_air_alarm)
- to_world("* [areatype]")
+ to_chat(world, "* [areatype]")
- to_world(span_bold("AREAS WITHOUT A REQUEST CONSOLE:"))
+ to_chat(world, span_bold("AREAS WITHOUT A REQUEST CONSOLE:"))
for(var/areatype in areas_without_RC)
- to_world("* [areatype]")
+ to_chat(world, "* [areatype]")
- to_world(span_bold("AREAS WITHOUT ANY LIGHTS:"))
+ to_chat(world, span_bold("AREAS WITHOUT ANY LIGHTS:"))
for(var/areatype in areas_without_light)
- to_world("* [areatype]")
+ to_chat(world, "* [areatype]")
- to_world(span_bold("AREAS WITHOUT A LIGHT SWITCH:"))
+ to_chat(world, span_bold("AREAS WITHOUT A LIGHT SWITCH:"))
for(var/areatype in areas_without_LS)
- to_world("* [areatype]")
+ to_chat(world, "* [areatype]")
- to_world(span_bold("AREAS WITHOUT ANY INTERCOMS:"))
+ to_chat(world, span_bold("AREAS WITHOUT ANY INTERCOMS:"))
for(var/areatype in areas_without_intercom)
- to_world("* [areatype]")
+ to_chat(world, "* [areatype]")
- to_world(span_bold("AREAS WITHOUT ANY CAMERAS:"))
+ to_chat(world, span_bold("AREAS WITHOUT ANY CAMERAS:"))
for(var/areatype in areas_without_camera)
- to_world("* [areatype]")
+ to_chat(world, "* [areatype]")
/datum/admins/proc/cmd_admin_dress(input in getmobs())
set category = "Fun.Event Kit"
@@ -624,15 +624,17 @@ ADMIN_VERB(cmd_assume_direct_control, (R_DEBUG|R_ADMIN|R_EVENT), "Assume Direct
else
tgui_alert_async(usr, "Invalid mob")
-/datum/admins/proc/view_runtimes()
- set category = "Debug.Investigate"
- set name = "View Runtimes"
- set desc = "Open the Runtime Viewer"
+ADMIN_VERB(view_runtimes, R_DEBUG, "View Runtimes", "Opens the runtime viewer.", ADMIN_CATEGORY_DEBUG)
+ GLOB.error_cache.show_to(user)
- if(!check_rights(R_DEBUG))
- return
-
- error_cache.showTo(usr)
+ // The runtime viewer has the potential to crash the server if there's a LOT of runtimes
+ // this has happened before, multiple times, so we'll just leave an alert on it
+ if(GLOB.total_runtimes >= 50000) // arbitrary number, I don't know when exactly it happens
+ var/warning = "There are a lot of runtimes, clicking any button (especially \"linear\") can have the potential to lag or crash the server"
+ if(GLOB.total_runtimes >= 100000)
+ warning = "There are a TON of runtimes, clicking any button (especially \"linear\") WILL LIKELY crash the server"
+ // Not using TGUI alert, because it's view runtimes, stuff is probably broken
+ tgui_alert(user, "[warning]. Proceed with caution. If you really need to see the runtimes, download the runtime log and view it in a text editor.", "HEED THIS WARNING CAREFULLY MORTAL")
/datum/admins/proc/change_weather()
set category = "Debug.Events"
diff --git a/code/modules/admin/verbs/dice.dm b/code/modules/admin/verbs/dice.dm
index 09e171eafd..d9860ac4c8 100644
--- a/code/modules/admin/verbs/dice.dm
+++ b/code/modules/admin/verbs/dice.dm
@@ -14,11 +14,11 @@
var/dice = num2text(sum) + "d" + num2text(side)
if(tgui_alert(usr, "Do you want to inform the world about your game?","Show world?",list("Yes", "No")) == "Yes")
- to_world("
The dice have been rolled by Gods!
")
+ to_chat(world, "
The dice have been rolled by Gods!
")
var/result = roll(dice)
if(tgui_alert(usr, "Do you want to inform the world about the result?","Show world?",list("Yes", "No")) == "Yes")
- to_world("
Gods rolled [dice], result is [result]
")
+ to_chat(world, "
Gods rolled [dice], result is [result]
")
message_admins("[key_name_admin(src)] rolled dice [dice], result is [result]", 1)
diff --git a/code/modules/admin/verbs/grief_fixers.dm b/code/modules/admin/verbs/grief_fixers.dm
index 72b66d36a5..38681da7cb 100644
--- a/code/modules/admin/verbs/grief_fixers.dm
+++ b/code/modules/admin/verbs/grief_fixers.dm
@@ -5,7 +5,7 @@ ADMIN_VERB(fix_atmos, (R_ADMIN|R_DEBUG|R_EVENT), "Fix Atmospherics Grief", "View
feedback_add_details("admin_verb","FA")
log_and_message_admins("Full atmosphere reset initiated by [user].")
- to_world(span_danger("Initiating restart of atmosphere. The server may lag a bit."))
+ to_chat(world, span_danger("Initiating restart of atmosphere. The server may lag a bit."))
sleep(10)
var/current_time = world.timeofday
@@ -43,4 +43,4 @@ ADMIN_VERB(fix_atmos, (R_ADMIN|R_DEBUG|R_EVENT), "Fix Atmospherics Grief", "View
SSair.RebootZAS()
to_chat(user, "\[5/5\] - ZAS Rebooted")
- to_world(span_danger("Atmosphere restart completed in " + span_bold("[(world.timeofday - current_time)/10]") + " seconds."))
+ to_chat(world, span_danger("Atmosphere restart completed in " + span_bold("[(world.timeofday - current_time)/10]") + " seconds."))
diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm
index 82aedfe622..1fcd7d6e76 100644
--- a/code/modules/admin/verbs/mapping.dm
+++ b/code/modules/admin/verbs/mapping.dm
@@ -310,9 +310,9 @@ var/list/debug_verbs = list (
if(i*10+j <= atom_list.len)
temp_atom = atom_list[i*10+j]
line += " no.[i+10+j]@\[[temp_atom.x], [temp_atom.y], [temp_atom.z]\]; "
- to_world(line)*/
+ to_chat(world, line)*/
- to_world("There are [count] objects of type [type_path] on z-level [num_level]")
+ to_chat(world, "There are [count] objects of type [type_path] on z-level [num_level]")
feedback_add_details("admin_verb","mOBJZ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/count_objects_all()
@@ -337,7 +337,7 @@ var/list/debug_verbs = list (
if(i*10+j <= atom_list.len)
temp_atom = atom_list[i*10+j]
line += " no.[i+10+j]@\[[temp_atom.x], [temp_atom.y], [temp_atom.z]\]; "
- to_world(line)*/
+ to_chat(world, line)*/
- to_world("There are [count] objects of type [type_path] in the game world")
+ to_chat(world, "There are [count] objects of type [type_path] in the game world")
feedback_add_details("admin_verb","mOBJ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm
index 7dcd38bb86..be85b7d2c4 100644
--- a/code/modules/admin/verbs/playsound.dm
+++ b/code/modules/admin/verbs/playsound.dm
@@ -103,7 +103,7 @@ var/list/sounds_cache = list()
if(!check_rights(R_SOUNDS))
return
- var/list/sounds = file2list("sound/serversound_list.txt");
+ var/list/sounds = world.file2list("sound/serversound_list.txt");
sounds += "--CANCEL--"
sounds += sounds_cache
diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm
index 53f6a05723..e277de372d 100644
--- a/code/modules/admin/verbs/pray.dm
+++ b/code/modules/admin/verbs/pray.dm
@@ -24,7 +24,7 @@
to_chat(src, "Your prayers have been received by the gods.", confidential = TRUE)
feedback_add_details("admin_verb","PR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
- log_pray(raw_msg, src)
+ log_prayer("[src.key]/([src.name]): [raw_msg]")
/proc/CentCom_announce(var/msg, var/mob/Sender, var/iamessage)
msg = span_blue(span_bold(span_orange("[uppertext(using_map.boss_short)]M[iamessage ? " IA" : ""]:") + "[key_name(Sender, 1)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] ([admin_jump_link(Sender)]) [ADMIN_CA(Sender)] [ADMIN_BSA(Sender)] [ADMIN_CENTCOM_REPLY(Sender)]:") + " [msg]")
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 9f65339359..5894942fe1 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -124,7 +124,7 @@ ADMIN_VERB(drop_everything, R_ADMIN, "Drop Everything", ADMIN_VERB_NO_DESCRIPTIO
if (!msg) // We check both before and after, just in case sanitization ended us up with empty message.
return
- to_world("[msg]")
+ to_chat(world, "[msg]")
log_admin("GlobalNarrate: [key_name(usr)] : [msg]")
message_admins(span_blue(span_bold(" GlobalNarrate: [key_name_admin(usr)] : [msg] ")), 1)
feedback_add_details("admin_verb","GLN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -710,7 +710,7 @@ ADMIN_VERB(respawn_character, (R_ADMIN|R_REJUVINATE), "Spawn Character", "(Re)Sp
if(confirm == "Yes")
command_announcement.Announce(input, customname, new_sound = 'sound/AI/commandreport.ogg', msg_sanitized = 1);
else
- to_world(span_red("New [using_map.company_name] Update available at all communication consoles."))
+ to_chat(world, span_red("New [using_map.company_name] Update available at all communication consoles."))
world << sound('sound/AI/commandreport.ogg')
log_admin("[key_name(src)] has created a command report: [input]")
@@ -964,7 +964,7 @@ ADMIN_VERB(respawn_character, (R_ADMIN|R_REJUVINATE), "Spawn Character", "(Re)Sp
message_admins("Admin [key_name_admin(usr)] has forced the players to have random appearances.", 1)
if(notifyplayers == "Yes")
- to_world(span_boldannounce(span_blue("Admin [usr.key] has forced the players to have completely random identities!")))
+ to_chat(world, span_boldannounce(span_blue("Admin [usr.key] has forced the players to have completely random identities!")))
to_chat(usr, "Remember: you can always disable the randomness by using the verb again, assuming the round hasn't started yet.")
diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm
index 3d2511ddfe..6dfb95b709 100644
--- a/code/modules/admin/verbs/striketeam.dm
+++ b/code/modules/admin/verbs/striketeam.dm
@@ -200,7 +200,7 @@ GLOBAL_VAR(ert_loaded)
GLOB.ert_loaded = TRUE
var/datum/map_template/MT = SSmapping.map_templates["Special Area - ERT"]
if(!istype(MT))
- error("ERT Area is not a valid map template!")
+ log_mapping("ERT Area is not a valid map template!")
else
MT.load_new_z(centered = TRUE)
log_and_message_admins("Loaded the ERT shuttle just now.")
diff --git a/code/modules/admin/verbs/trader.dm b/code/modules/admin/verbs/trader.dm
index 08a63b4bd8..3b5a2c70ee 100644
--- a/code/modules/admin/verbs/trader.dm
+++ b/code/modules/admin/verbs/trader.dm
@@ -75,7 +75,7 @@ GLOBAL_VAR(trader_loaded)
GLOB.trader_loaded = TRUE
var/datum/map_template/MT = SSmapping.map_templates["Special Area - Salamander Trader"] //was: "Special Area - Trader"
if(!istype(MT))
- error("Trader is not a valid map template!")
+ log_mapping("Trader is not a valid map template!")
else
MT.load_new_z(centered = TRUE)
log_and_message_admins("Loaded the trade shuttle just now.")
diff --git a/code/modules/ai/ai_holder.dm b/code/modules/ai/ai_holder.dm
index 352475061c..594d82cf3a 100644
--- a/code/modules/ai/ai_holder.dm
+++ b/code/modules/ai/ai_holder.dm
@@ -38,7 +38,7 @@
if(ai_holder_type)
ai_holder = new ai_holder_type(src)
if(!ai_holder)
- log_debug("[src] could not initialize ai_holder of type [ai_holder_type]")
+ log_runtime("[src] could not initialize ai_holder of type [ai_holder_type]")
return
if(ishuman(src))
var/mob/living/carbon/human/H = src
diff --git a/code/modules/ai/ai_holder_debug.dm b/code/modules/ai/ai_holder_debug.dm
index b70771d3cd..553a54955d 100644
--- a/code/modules/ai/ai_holder_debug.dm
+++ b/code/modules/ai/ai_holder_debug.dm
@@ -12,7 +12,7 @@
var/stance_coloring = FALSE // Colors the mob depending on its stance.
- var/debug_ai = AI_LOG_OFF // The level of debugging information to display to people who can see log_debug().
+ var/debug_ai = AI_LOG_OFF // The level of debugging information to display to people who can see log_world().
/datum/ai_holder/New()
..()
@@ -41,7 +41,7 @@
if(AI_LOG_TRACE)
span_type = "debug_trace"
if(ver <= debug_ai)
- log_debug("AI: ([holder]:\ref[holder] | [holder.x],[holder.y],[holder.z])(@[world.time]): [msg] ")
+ log_world("AI: ([holder]:\ref[holder] | [holder.x],[holder.y],[holder.z])(@[world.time]): [msg] ")
// Colors the mob based on stance, to visually tell what stance it is for debugging.
// Probably not something you want for regular use.
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index fb2ee2359c..8e40773b2c 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -75,7 +75,7 @@
return
var/atom/movable/AM = WF.resolve()
if(isnull(AM))
- log_debug("DEBUG: HasProximity called without reference on [src].")
+ log_runtime("DEBUG: HasProximity called without reference on [src].")
return
if(a_left)
a_left.HasProximity(T, WF, old_loc)
diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm
index 9abb889371..bdf2c43ca1 100644
--- a/code/modules/assembly/proximity.dm
+++ b/code/modules/assembly/proximity.dm
@@ -37,7 +37,7 @@
return
var/atom/movable/AM = WF.resolve()
if(isnull(AM))
- log_debug("DEBUG: HasProximity called without reference on [src].")
+ log_runtime("DEBUG: HasProximity called without reference on [src].")
return
if (istype(AM, /obj/effect/beam))
return
diff --git a/code/modules/asset_cache/asset_cache_item.dm b/code/modules/asset_cache/asset_cache_item.dm
index dbee71b525..9576bfc3d0 100644
--- a/code/modules/asset_cache/asset_cache_item.dm
+++ b/code/modules/asset_cache/asset_cache_item.dm
@@ -46,7 +46,7 @@
hash = md5(fcopy_rsc(file))
if (!hash)
CRASH("invalid asset sent to asset cache")
- log_debug("asset cache unexpected success of second fcopy_rsc")
+ log_runtime("asset cache unexpected success of second fcopy_rsc")
src.name = name
var/extstart = findlasttext(name, ".")
if(extstart)
diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm
index fa8c1762d2..a781669456 100644
--- a/code/modules/awaymissions/gateway.dm
+++ b/code/modules/awaymissions/gateway.dm
@@ -38,7 +38,7 @@ GLOBAL_DATUM(gateway_station, /obj/machinery/gateway/centerstation)
/obj/machinery/gateway/centerstation/Initialize(mapload)
if(GLOB.gateway_station)
- warning("[src] at [x],[y],[z] appears to be an additional station-gateway")
+ WARNING("[src] at [x],[y],[z] appears to be an additional station-gateway")
else
GLOB.gateway_station = src
@@ -256,7 +256,7 @@ GLOBAL_DATUM(gateway_away, /obj/machinery/gateway/centeraway)
/obj/machinery/gateway/centeraway/Initialize(mapload)
if(GLOB.gateway_away)
- warning("[src] at [x],[y],[z] appears to be an additional away-gateway")
+ WARNING("[src] at [x],[y],[z] appears to be an additional away-gateway")
else
GLOB.gateway_away = src
diff --git a/code/modules/awaymissions/gateway_vr.dm b/code/modules/awaymissions/gateway_vr.dm
index 816d2c06e8..5840afb189 100644
--- a/code/modules/awaymissions/gateway_vr.dm
+++ b/code/modules/awaymissions/gateway_vr.dm
@@ -56,7 +56,7 @@
destination = CL
if(!destination)
- warning("A gateway is trying to spawn it's mcguffin but there are no mapped in spawner landmarks")
+ WARNING("A gateway is trying to spawn it's mcguffin but there are no mapped in spawner landmarks")
destination = get_turf(src)
key = new mcguffin_type(destination)
diff --git a/code/modules/awaymissions/overmap_renamer/overmap_renamer.dm b/code/modules/awaymissions/overmap_renamer/overmap_renamer.dm
index 1fae96eea5..13e205f4c0 100644
--- a/code/modules/awaymissions/overmap_renamer/overmap_renamer.dm
+++ b/code/modules/awaymissions/overmap_renamer/overmap_renamer.dm
@@ -7,7 +7,7 @@ possible_descriptors are populated by subtypes of /obj/effect/landmark/overmap_r
*/
/obj/effect/overmap/visitable/proc/modify_descriptors()
if(!possible_descriptors || !islist(possible_descriptors) || possible_descriptors == list() || !length(possible_descriptors))
- error("List of possible descriptors for [name] was empty!")
+ log_mapping("## ERROR List of possible descriptors for [name] was empty!")
return
var/list/chosen_descriptor = pick(possible_descriptors)
@@ -22,7 +22,7 @@ possible_descriptors are populated by subtypes of /obj/effect/landmark/overmap_r
// testing("Defaulting to default!") //Uncomment when adding a new landmark to confirm it works OK, but recomment before commiting
return
if(breakWhile > 10 || length(possible_descriptors) < 1)
- error("No valid descriptors could be found for [name]!") //Checking default separately for sake of error messages
+ log_mapping("## ERROR No valid descriptors could be found for [name]!") //Checking default separately for sake of error messages
return
//Using real_name to ensure get_scan_data() does not override the renamed code
@@ -48,9 +48,9 @@ possible_descriptors are populated by subtypes of /obj/effect/landmark/overmap_r
/obj/effect/landmark/overmap_renamer/Initialize(mapload)
// testing("Loading renamer landmark: [name]") //Uncomment when adding a new POI/Landmark for testing aid.
if(LAZYLEN(descriptors) != 3)
- error("POI [name] renamer landmark is invalid! Make sure its descriptors var is a list of 3 elements!")
+ log_mapping("## ERROR POI [name] renamer landmark is invalid! Make sure its descriptors var is a list of 3 elements!")
return
if(!istext(descriptors[1]) || !istext(descriptors[2]) || !istext(descriptors[3]))
- error("POI [name] renamer landmark is invalid! One of the elements is NOT a string!")
+ log_mapping("## ERROR POI [name] renamer landmark is invalid! One of the elements is NOT a string!")
return
. = ..()
diff --git a/code/modules/awaymissions/zlevel.dm b/code/modules/awaymissions/zlevel.dm
index 75e76c2923..3468ba601e 100644
--- a/code/modules/awaymissions/zlevel.dm
+++ b/code/modules/awaymissions/zlevel.dm
@@ -7,7 +7,7 @@
var/list/potentialRandomZlevels = list()
admin_notice(span_red(span_bold(" Searching for away missions...")), R_DEBUG)
- var/list/Lines = file2list("maps/RandomZLevels/fileList.txt")
+ var/list/Lines = world.file2list("maps/RandomZLevels/fileList.txt")
if(!Lines.len) return
for (var/t in Lines)
if (!t)
@@ -41,12 +41,12 @@
admin_notice(span_red(span_bold("Loading away mission...")), R_DEBUG)
var/map = pick(potentialRandomZlevels)
- to_world_log("Away mission picked: [map]") //VOREStation Add for debugging
+ log_mapping("Away mission picked: [map]") //VOREStation Add for debugging
var/file = file(map)
if(isfile(file))
var/datum/map_template/template = new(file, "away mission")
template.load_new_z()
- to_world_log("away mission loaded: [map]")
+ log_mapping("away mission loaded: [map]")
/* VOREStation Removal - We do this in the special landmark init instead.
for(var/obj/effect/landmark/L in GLOB.landmarks_list)
if (L.name != "awaystart")
diff --git a/code/modules/blob2/overmind/overmind.dm b/code/modules/blob2/overmind/overmind.dm
index 7c9c67d65d..930c99a439 100644
--- a/code/modules/blob2/overmind/overmind.dm
+++ b/code/modules/blob2/overmind/overmind.dm
@@ -162,5 +162,5 @@ var/list/overminds = list()
if(dst <= world.view)
O.hear_talk(src, message_pieces, "conveys")
- log_say(message, src)
+ log_talk(message, LOG_SAY)
return 1
diff --git a/code/modules/client/client defines.dm b/code/modules/client/client defines.dm
index 6086afa9d3..bbb584a0d9 100644
--- a/code/modules/client/client defines.dm
+++ b/code/modules/client/client defines.dm
@@ -86,6 +86,9 @@
///Used for limiting the rate of clicks sends by the client to avoid abuse
var/list/clicklimiter
+ ///these persist between logins/logouts during the same round.
+ var/datum/persistent_client/persistent_client
+
////////////////////////////////////
//things that require the database//
////////////////////////////////////
diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm
index b993a7e0bf..054f3b918a 100644
--- a/code/modules/client/client procs.dm
+++ b/code/modules/client/client procs.dm
@@ -1,6 +1,11 @@
////////////
//SECURITY//
////////////
+
+GLOBAL_LIST_INIT(blacklisted_builds, list(
+ "1622" = "Bug breaking rendering can lead to wallhacks.",
+ ))
+
#define UPLOAD_LIMIT 10485760 //Restricts client uploads to the server to 10MB //Boosted this thing. What's the worst that can happen?
#define MIN_CLIENT_VERSION 0 //Just an ambiguously low version for now, I don't want to suddenly stop people playing.
//I would just like the code ready should it ever need to be used.
@@ -68,7 +73,8 @@
if (minute != topiclimiter[ADMINSWARNED_AT]) //only one admin message per-minute. (if they spam the admins can just boot/ban them)
topiclimiter[ADMINSWARNED_AT] = minute
msg += " Administrators have been informed."
- log_and_message_admins("[key_name(src)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute", src)
+ log_game("[key_name(src)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute")
+ message_admins("[ADMIN_LOOKUPFLW(usr)] [ADMIN_KICK(usr)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute")
to_chat(src, span_danger("[msg]"))
return
@@ -87,7 +93,7 @@
//search the href for script injection
if( findtext(href,"