diff --git a/code/controllers/subsystems/motion_tracker.dm b/code/controllers/subsystems/motion_tracker.dm index 6900e01ac5..a27a71bf6d 100644 --- a/code/controllers/subsystems/motion_tracker.dm +++ b/code/controllers/subsystems/motion_tracker.dm @@ -4,6 +4,7 @@ SUBSYSTEM_DEF(motiontracker) wait = 1 SECOND runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME flags = SS_NO_INIT + var/hide_all = FALSE // Hide and seek mode var/min_range = 2 var/max_range = 8 var/all_echos_round = 0 @@ -20,7 +21,10 @@ SUBSYSTEM_DEF(motiontracker) count = track_list.len else count = 1 // listen_lookup optimizes single entries into just returning the only thing - msg = "L: [count] | Q: [queued_echo_turfs.len] | A: [all_echos_round]/[all_pings_round]" + if(hide_all) + msg = "HIDE AND SEEK" + else + msg = "L: [count] | Q: [queued_echo_turfs.len] | A: [all_echos_round]/[all_pings_round]" return ..() /datum/controller/subsystem/motiontracker/fire(resumed = 0) @@ -53,6 +57,8 @@ SUBSYSTEM_DEF(motiontracker) // We get this from anything in the world that would cause a motion tracker ping // From sounds to motions, to mob attacks. This then sends a signal to anyone listening. /datum/controller/subsystem/motiontracker/proc/ping(var/atom/source, var/hear_chance = 30) + if(hide_all) // No pings, admins turned us off + return var/turf/T = get_turf(source) if(!isturf(T)) // ONLY call from turfs return diff --git a/code/modules/admin/admin_verb_lists.dm b/code/modules/admin/admin_verb_lists.dm index 5978722d93..8f898a28f1 100644 --- a/code/modules/admin/admin_verb_lists.dm +++ b/code/modules/admin/admin_verb_lists.dm @@ -112,7 +112,8 @@ var/list/admin_verbs_admin = list( /datum/admins/proc/view_feedback, /client/proc/admin_teleport, //CHOMPEdit /client/proc/setckey, //YW add - readds SetCkey proc - /client/proc/debug_global_variables + /client/proc/debug_global_variables, + /client/proc/hide_motion_tracker_feedback ) var/list/admin_verbs_ban = list( @@ -517,7 +518,8 @@ var/list/admin_verbs_event_manager = list( /client/proc/cmd_debug_del_all, /client/proc/toggle_random_events, /client/proc/modify_server_news, - /client/proc/debug_global_variables + /client/proc/debug_global_variables, + /client/proc/hide_motion_tracker_feedback ) /client/proc/add_admin_verbs() diff --git a/code/modules/admin/admin_verb_lists_vr.dm b/code/modules/admin/admin_verb_lists_vr.dm index 42ea0ee3e2..ca170357f2 100644 --- a/code/modules/admin/admin_verb_lists_vr.dm +++ b/code/modules/admin/admin_verb_lists_vr.dm @@ -129,6 +129,7 @@ var/list/admin_verbs_admin = list( /client/proc/delbook, /client/proc/toggle_spawning_with_recolour, /client/proc/start_vote, + /client/proc/hide_motion_tracker_feedback, /client/proc/reload_jobwhitelist, //ChompADD /client/proc/reload_alienwhitelist //ChompADD ) @@ -586,6 +587,7 @@ var/list/admin_verbs_event_manager = list( /client/proc/ReleaseVirus, /client/proc/add_hidden_area, /client/proc/remove_hidden_area, + /client/proc/hide_motion_tracker_feedback, /datum/admins/proc/quick_nif, //CHOMPStation Add, /datum/admins/proc/quick_authentic_nif, //CHOMPStation add /client/proc/reload_jobwhitelist, //ChompADD diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index c6021615b8..e5302f3cb2 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -574,3 +574,13 @@ return A.flags &= ~(AREA_BLOCK_GHOST_SIGHT) ghostnet.removeArea(A) + +/client/proc/hide_motion_tracker_feedback() + set name = "Toggle Motion Echos" + set desc = "Hides or reveals motion tracker echos globally." + set category = "Admin.Events" + + if(!check_rights(R_ADMIN|R_EVENT)) + return + SSmotiontracker.hide_all = !SSmotiontracker.hide_all + log_admin("[key_name(usr)] changed the motion echo visibility to [SSmotiontracker.hide_all ? "hidden" : "visible"].") diff --git a/code/modules/mob/living/carbon/human/species/species_vr.dm b/code/modules/mob/living/carbon/human/species/species_vr.dm index 1433564c55..f7b8cbe169 100644 --- a/code/modules/mob/living/carbon/human/species/species_vr.dm +++ b/code/modules/mob/living/carbon/human/species/species_vr.dm @@ -108,6 +108,9 @@ H.dna.ready_dna(H) handle_base_eyes(H, custom_base) + if(H.species.has_vibration_sense) + H.motiontracker_subscribe() + return new_copy //We REALLY don't need to go through every variable. Doing so makes this lag like hell on 515