Browser/TGUI Stat Panels (#24065)

* initial commit (broken)

* load the html

* fix this

* Fix various issues with browser statpanel

* Fix Alt Clicking opening up a window and Add back some object verbs to the browser stat panel

* Optimize stat panel and fix guardian verbs

* Restyles Stat Panel, Adds Subpanel Sub-Categories

* Use better layout for verbs in stat panel

* Updates statpanel verb widths to be more dynamic at higher screen resolutions.

* Adjust stat panel grid item widths and breakpoints

* refactors statpanel to use tgui API

* CI moment

* more CI

* this stupid thing

* Apply suggestions from code review

Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/modules/client/client_procs.dm

* ci fix

* emergency mc debug view

* temp revert some code change suggestions due to massive runtiming

* proper atom click topic implementation

* optimise

* mob clicking in stat panels work

* yeet spell tab thingy

* yeet simple stat panel pref

* allow insertion of html into MC tab content

* tidy up status tab

* Apply suggestions from code review

* fix this

* fix CI

* oops

* fix index runtime

* fixes MC tab showing up for mentors, fixes runtime

* safeties!

* Return of theme support

* more fixes

* fix view range pref, tidy prefs tab

* Remove old stat panel from themes

* fixes

* make sure verbs don't go missing

* fix ooc/looc breaking

* Revert "make sure verbs don't go missing"

This reverts commit 7d07ad45ed.

* fix this properly

* fix stat panel hitting rate limiters

* fix borg status tab

* Object Window Niceties

* Adds file cycling for icon2base64

* optimizes icon2html() for icon files known to be in the rsc at compile time

* CI moment

* remove dupe emergency shuttle timers

* more robust verb updates

* statpanel tweaks

* zip archived changelog to avoid search results

* optimise

* fix mentor chat wonkyness when disabled

* debug log moment

* i am very smart

* reintroduce this because it was needed

* better time listings

* less jank

* stops telling admins they arent mentors

* returns MC tab pref for admins

* Update code/controllers/subsystem/SSstatpanel.dm

Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>

* lewcc

* OD typemaker prep

---------

Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
Co-authored-by: Aylong <alexanderkitsa@gmail.com>
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
This commit is contained in:
S34N
2024-03-07 10:31:36 -05:00
committed by GitHub
co-authored by GDN Burzah Luc Aylong
parent 19a3f768c8
commit 91660824fa
124 changed files with 2585 additions and 27334 deletions
+14
View File
@@ -6,6 +6,8 @@
////////////////
//ADMIN THINGS//
////////////////
/// hides the byond verb panel as we use our own custom version
show_verb_panel = FALSE
var/datum/admins/holder = null
var/last_message = "" //contains the last message sent by this client - used to protect against copy-paste spamming.
@@ -80,6 +82,15 @@
/// Messages currently seen by this client
var/list/seen_messages
/// list of tabs containing spells and abilities
var/list/spell_tabs = list()
/// our current tab
var/stat_tab
/// list of all tabs
var/list/panel_tabs = list()
// Last world.time that the player tried to request their resources.
var/last_ui_resource_send = 0
@@ -135,6 +146,9 @@
/// Assigned say modal of the client
var/datum/tgui_say/tgui_say
/// Our object window datum. It stores info about and handles behavior for the object tab
var/datum/object_window_info/obj_window
/client/vv_edit_var(var_name, var_value)
switch(var_name)
// I know we will never be in a world where admins are editing client vars to let people bypass TOS
+83 -4
View File
@@ -80,7 +80,7 @@
return
var/stl = 10 // 10 topics a second
if(!holder) // Admins are allowed to spam click, deal with it.
if(!holder && href_list["window_id"] != "statbrowser") // Admins are allowed to spam click, deal with it.
var/second = round(world.time, 10)
if(!topiclimiter)
topiclimiter = new(LIMITER_SIZE)
@@ -158,6 +158,10 @@
// Tgui Topic middleware
if(tgui_Topic(href_list))
return
if(href_list["reload_statbrowser"])
stat_panel.reinitialize()
if(href_list["reload_tguipanel"])
nuke_chat()
@@ -254,10 +258,12 @@
///////////
/client/New(TopicData)
var/tdata = TopicData //save this for later use
// Instantiate stat panel
stat_panel = new(src, "statbrowser")
stat_panel.subscribe(src, PROC_REF(on_stat_panel_message))
tgui_panel = new(src, "browseroutput")
tgui_say = new(src, "tgui_say")
TopicData = null //Prevent calls to client.Topic from connect
if(connection != "seeker") //Invalid connection type.
@@ -359,7 +365,7 @@
_2fa_alert = TRUE
// This also has to be manually done since no mob to use check_rights() on
deadmin()
verbs += /client/proc/readmin
add_verb(src, /client/proc/readmin)
GLOB.de_admins += ckey
else
@@ -394,6 +400,13 @@
// Initialize tgui panel
tgui_panel.initialize()
// Initialize stat panel
stat_panel.initialize(
inline_html = file2text('html/statbrowser.html'),
inline_js = file2text('html/statbrowser.js'),
inline_css = file2text('html/statbrowser.css'),
)
addtimer(CALLBACK(src, PROC_REF(check_panel_loaded)), 30 SECONDS)
// Initialize tgui say
tgui_say.initialize()
@@ -438,6 +451,8 @@
to_chat(src, "<span class='notice'>You are currently connected [prefs.server_region ? "via the <b>[prefs.server_region]</b> relay" : "directly"] to Paradise.</span>")
to_chat(src, "<span class='notice'>You can change this using the <code>Change Region</code> verb in the OOC tab, as selecting a region closer to you may reduce latency.</span>")
display_job_bans(TRUE)
if(check_rights(R_DEBUG|R_VIEWRUNTIMES, FALSE, mob))
winset(src, "debugmcbutton", "is-disabled=false")
/client/proc/is_connecting_from_localhost()
var/static/list/localhost_addresses = list("127.0.0.1", "::1")
@@ -474,6 +489,9 @@
movingmob.client_mobs_in_contents -= mob
UNSETEMPTY(movingmob.client_mobs_in_contents)
if(obj_window)
QDEL_NULL(obj_window)
SSambience.ambience_listening_clients -= src
SSinput.processing -= src
SSping.current_run -= src
@@ -788,7 +806,7 @@
cidcheck[ckey] = computer_id
// Disable the reconnect button to force a CID change
winset(src, "reconnectbutton", "is-disable=true")
winset(src, "reconnectbutton", "is-disabled=true")
tokens[ckey] = cid_check_reconnect()
sleep(10) // Since browse is non-instant, and kinda async
@@ -1158,6 +1176,67 @@
var/list/screensize = getviewsize(view)
return max(screensize[1], screensize[2])
/// Compiles a full list of verbs and sends it to the browser
/client/proc/init_verbs()
if(IsAdminAdvancedProcCall())
return
var/list/verblist = list()
var/list/verbstoprocess = verbs.Copy()
if(mob)
verbstoprocess += mob.verbs
for(var/AM in mob.contents)
var/atom/movable/thing = AM
verbstoprocess += thing.verbs
panel_tabs.Cut() // panel_tabs get reset in init_verbs on JS side anyway
for(var/thing in verbstoprocess)
var/procpath/verb_to_init = thing
if(!verb_to_init)
continue
if(verb_to_init.hidden)
continue
if(!istext(verb_to_init.category))
continue
panel_tabs |= verb_to_init.category
verblist[++verblist.len] = list(verb_to_init.category, verb_to_init.name)
src.stat_panel.send_message("init_verbs", list(panel_tabs = panel_tabs, verblist = verblist))
/client/proc/check_panel_loaded()
if(stat_panel.is_ready())
return
to_chat(src, "<span class='userdanger'>Statpanel failed to load, click <a href='?src=[UID()];reload_statbrowser=1'>here</a> to reload the panel </span>")
/**
* Handles incoming messages from the stat-panel TGUI.
*/
/client/proc/on_stat_panel_message(type, payload)
switch(type)
if("Update-Verbs")
init_verbs()
if("Remove-Tabs")
panel_tabs -= payload["tab"]
if("Send-Tabs")
panel_tabs |= payload["tab"]
if("Reset-Tabs")
panel_tabs = list()
if("Set-Tab")
stat_tab = payload["tab"]
SSstatpanels.immediate_send_stat_data(src)
if("Debug-Stat-Entry")
var/stat_item = locateUID(payload["stat_item_uid"])
if(!check_rights(R_DEBUG | R_VIEWRUNTIMES) || !stat_item)
return
var/class
if(istype(stat_item, /datum/controller/subsystem))
class = "subsystem"
else if(istype(stat_item, /datum/controller))
class = "controller"
else if(istype(stat_item, /datum))
class = "datum"
else
class = "unknown"
debug_variables(stat_item)
message_admins("Admin [key_name_admin(usr)] is debugging the [stat_item] [class].")
#undef LIMITER_SIZE
#undef CURRENT_SECOND
#undef SECOND_COUNT
@@ -1,34 +1,34 @@
//toggles
/client/verb/toggle_ghost_ears()
set name = "Show/Hide GhostEars"
set category = "Preferences"
set desc = ".Toggle Between seeing all mob speech, and only speech of nearby mobs"
set name = "GhostEars"
set category = "Preferences.Show/Hide"
set desc = "Toggle Between seeing all mob speech, and only speech of nearby mobs"
prefs.toggles ^= PREFTOGGLE_CHAT_GHOSTEARS
to_chat(src, "As a ghost, you will now [(prefs.toggles & PREFTOGGLE_CHAT_GHOSTEARS) ? "see all speech in the world" : "only see speech from nearby mobs"].")
prefs.save_preferences(src)
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle GhostEars") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/toggle_ghost_sight()
set name = "Show/Hide GhostSight"
set category = "Preferences"
set desc = ".Toggle Between seeing all mob emotes, and only emotes of nearby mobs"
set name = "GhostSight"
set category = "Preferences.Show/Hide"
set desc = "Toggle Between seeing all mob emotes, and only emotes of nearby mobs"
prefs.toggles ^= PREFTOGGLE_CHAT_GHOSTSIGHT
to_chat(src, "As a ghost, you will now [(prefs.toggles & PREFTOGGLE_CHAT_GHOSTSIGHT) ? "see all emotes in the world" : "only see emotes from nearby mobs"].")
prefs.save_preferences(src)
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle GhostSight") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/toggle_ghost_radio()
set name = "Enable/Disable GhostRadio"
set category = "Preferences"
set desc = ".Toggle between hearing all radio chatter, or only from nearby speakers"
set name = "GhostRadio"
set category = "Preferences.Show/Hide"
set desc = "Toggle between hearing all radio chatter, or only from nearby speakers"
prefs.toggles ^= PREFTOGGLE_CHAT_GHOSTRADIO
to_chat(src, "As a ghost, you will now [(prefs.toggles & PREFTOGGLE_CHAT_GHOSTRADIO) ? "hear all radio chat in the world" : "only hear from nearby speakers"].")
prefs.save_preferences(src)
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle GhostRadio")
/client/proc/toggle_hear_radio()
set name = "Show/Hide RadioChatter"
set category = "Preferences"
set name = "RadioChatter"
set category = "Preferences.Show/Hide"
set desc = "Toggle seeing radiochatter from radios and speakers"
if(!check_rights(R_ADMIN))
return
@@ -38,8 +38,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle RadioChatter") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/toggle_ai_voice_annoucements()
set name = "Hear/Silence AI Voice Announcements"
set category = "Preferences"
set name = "AI Voice Announcements"
set category = "Preferences.Hear/Silence"
set desc = "Toggle hearing AI annoucements in voice form or in text form"
prefs.sound ^= SOUND_AI_VOICE
prefs.save_preferences(src)
@@ -47,8 +47,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle AI Voice") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/toggleadminhelpsound()
set name = "Hear/Silence Admin Bwoinks"
set category = "Preferences"
set name = "Admin Bwoinks"
set category = "Preferences.Hear/Silence"
set desc = "Toggle hearing a notification when admin PMs are received"
if(!check_rights(R_ADMIN))
return
@@ -58,8 +58,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Admin Bwoinks") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/togglementorhelpsound()
set name = "Hear/Silence Mentorhelp Bwoinks"
set category = "Preferences"
set name = "Mentorhelp Bwoinks"
set category = "Preferences.Hear/Silence"
set desc = "Toggle hearing a notification when mentorhelps are received"
if(!check_rights(R_ADMIN|R_MENTOR))
return
@@ -69,8 +69,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Mentor Bwoinks") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/deadchat() // Deadchat toggle is usable by anyone.
set name = "Show/Hide Deadchat"
set category = "Preferences"
set name = "Deadchat"
set category = "Preferences.Show/Hide"
set desc ="Toggles seeing deadchat"
prefs.toggles ^= PREFTOGGLE_CHAT_DEAD
prefs.save_preferences(src)
@@ -83,8 +83,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Deadchat") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/toggleprayers()
set name = "Show/Hide Prayers"
set category = "Preferences"
set name = "Prayers"
set category = "Preferences.Show/Hide"
set desc = "Toggles seeing prayers"
prefs.toggles ^= PREFTOGGLE_CHAT_PRAYER
prefs.save_preferences(src)
@@ -92,8 +92,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Prayers") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/toggleprayernotify()
set name = "Hear/Silence Prayer Notification Sound"
set category = "Preferences"
set name = "Prayer Notification Sound"
set category = "Preferences.Hear/Silence"
set desc = "Toggles hearing when prayers are made"
prefs.sound ^= SOUND_PRAYERNOTIFY
prefs.save_preferences(src)
@@ -101,8 +101,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Prayer Sound") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/togglescoreboard()
set name = "Hide/Display End Round Scoreboard"
set category = "Preferences"
set name = "End Round Scoreboard"
set category = "Preferences.Show/Hide"
set desc = "Toggles displaying end of round scoreboard"
prefs.toggles ^= PREFTOGGLE_DISABLE_SCOREBOARD
prefs.save_preferences(src)
@@ -110,8 +110,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Scoreboard") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/toggletitlemusic()
set name = "Hear/Silence LobbyMusic"
set category = "Preferences"
set name = "LobbyMusic"
set category = "Preferences.Hear/Silence"
set desc = "Toggles hearing the GameLobby music"
prefs.sound ^= SOUND_LOBBY
prefs.save_preferences(src)
@@ -126,8 +126,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Lobby Music") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/togglemidis()
set name = "Hear/Silence Midis"
set category = "Preferences"
set name = "Midis"
set category = "Preferences.Hear/Silence"
set desc = "Toggles hearing sounds uploaded by admins"
prefs.sound ^= SOUND_MIDI
prefs.save_preferences(src)
@@ -140,8 +140,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle MIDIs") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/listen_ooc()
set name = "Show/Hide OOC"
set category = "Preferences"
set name = "OOC (Out of Character)"
set category = "Preferences.Show/Hide"
set desc = "Toggles seeing OutOfCharacter chat"
prefs.toggles ^= PREFTOGGLE_CHAT_OOC
prefs.save_preferences(src)
@@ -150,8 +150,8 @@
/client/verb/listen_looc()
set name = "Show/Hide LOOC"
set category = "Preferences"
set name = "LOOC (Local Out of Character)"
set category = "Preferences.Show/Hide"
set desc = "Toggles seeing Local OutOfCharacter chat"
prefs.toggles ^= PREFTOGGLE_CHAT_LOOC
prefs.save_preferences(src)
@@ -160,8 +160,8 @@
/client/verb/Toggle_Soundscape() //All new ambience should be added here so it works with this verb until someone better at things comes up with a fix that isn't awful
set name = "Hear/Silence Ambience"
set category = "Preferences"
set name = "Ambience"
set category = "Preferences.Hear/Silence"
set desc = "Toggles hearing ambient sound effects"
prefs.sound ^= SOUND_AMBIENCE
prefs.save_preferences(src)
@@ -174,8 +174,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Ambience") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/Toggle_Parallax_Dark() //All new ambience should be added here so it works with this verb until someone better at things comes up with a fix that isn't awful
set name = "Show/Hide Parallax in darkness"
set category = "Preferences"
set name = "Parallax in darkness"
set category = "Preferences.Show/Hide"
set desc = "If enabled, drawing parallax if you see in dark instead of black tiles."
prefs.toggles2 ^= PREFTOGGLE_2_PARALLAX_IN_DARKNESS
prefs.save_preferences(src)
@@ -187,8 +187,8 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Parallax Darkness") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/Toggle_Buzz() //No more headaches because headphones bump up shipambience.ogg to insanity levels.
set name = "Hear/Silence White Noise"
set category = "Preferences"
set name = "White Noise"
set category = "Preferences.Hear/Silence"
set desc = "Toggles hearing ambient white noise"
prefs.sound ^= SOUND_BUZZ
prefs.save_preferences(src)
@@ -201,8 +201,8 @@
/client/verb/Toggle_Heartbeat() //to toggle off heartbeat sounds, in case they get too annoying
set name = "Hear/Silence Heartbeat"
set category = "Preferences"
set name = "Heartbeat"
set category = "Preferences.Hear/Silence"
set desc = "Toggles hearing heart beating sound effects"
prefs.sound ^= SOUND_HEARTBEAT
prefs.save_preferences(src)
@@ -215,8 +215,8 @@
// This needs a toggle because you people are awful and spammed terrible music
/client/verb/toggle_instruments()
set name = "Hear/Silence Instruments"
set category = "Preferences"
set name = "Instruments"
set category = "Preferences.Hear/Silence"
set desc = "Toggles hearing musical instruments like the violin and piano"
prefs.sound ^= SOUND_INSTRUMENTS
prefs.save_preferences(src)
@@ -227,16 +227,16 @@
SSblackbox.record_feedback("tally", "toggle_verbs", 1, "Toggle Instruments") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/toggle_input()
set name = "Toggle TGUI Input"
set category = "Preferences"
set name = "TGUI Input"
set category = "Preferences.Toggle"
set desc = "Switches inputs between the TGUI and the standard one"
prefs.toggles2 ^= PREFTOGGLE_2_DISABLE_TGUI_INPUT
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_DISABLE_TGUI_INPUT) ? "no longer" : "now"] use TGUI Inputs.")
/client/verb/Toggle_disco() //to toggle off the disco machine locally, in case it gets too annoying
set name = "Hear/Silence Dance Machine"
set category = "Preferences"
set name = "Dance Machine"
set category = "Preferences.Hear/Silence"
set desc = "Toggles hearing and dancing to the radiant dance machine"
prefs.sound ^= SOUND_DISCO
prefs.save_preferences(src)
@@ -255,8 +255,8 @@
prefs.ShowChoices(usr)
/client/verb/toggle_ghost_pda()
set name = "Show/Hide GhostPDA"
set category = "Preferences"
set name = "GhostPDA"
set category = "Preferences.Show/Hide"
set desc = "Toggle seeing PDA messages as an observer."
prefs.toggles ^= PREFTOGGLE_CHAT_GHOSTPDA
to_chat(src, "As a ghost, you will now [(prefs.toggles & PREFTOGGLE_CHAT_GHOSTPDA) ? "see all PDA messages" : "no longer see PDA messages"].")
@@ -272,80 +272,64 @@
/client/verb/toggle_runechat()
set name = "Enable/Disable Runechat"
set category = "Preferences"
set name = "Runechat"
set category = "Preferences.Toggle"
set desc = "Toggle runechat messages"
prefs.toggles2 ^= PREFTOGGLE_2_RUNECHAT
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_RUNECHAT) ? "now see" : "no longer see"] floating chat messages.")
/client/verb/toggle_death_messages()
set name = "Show/Hide Death Notifications"
set category = "Preferences"
set name = "Death Notifications"
set category = "Preferences.Toggle"
set desc = "Toggle player death notifications"
prefs.toggles2 ^= PREFTOGGLE_2_DEATHMESSAGE
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_DEATHMESSAGE) ? "now" : "no longer"] see a notification in deadchat when a player dies.")
/client/verb/toggle_reverb()
set name = "Enable/Disable Reverb"
set category = "Preferences"
set name = "Reverb"
set category = "Preferences.Toggle"
set desc = "Toggle ingame reverb effects"
prefs.toggles2 ^= PREFTOGGLE_2_REVERB_DISABLE
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_REVERB_DISABLE) ? "no longer" : "now"] get reverb on ingame sounds.")
/client/verb/toggle_forced_white_runechat()
set name = "Toggle Runechat Colour Forcing"
set category = "Preferences"
set name = "Runechat Colour Forcing"
set category = "Preferences.Toggle"
set desc = "Toggles forcing your runechat colour to white"
prefs.toggles2 ^= PREFTOGGLE_2_FORCE_WHITE_RUNECHAT
prefs.save_preferences(src)
to_chat(src, "Your runechats will [(prefs.toggles2 & PREFTOGGLE_2_FORCE_WHITE_RUNECHAT) ? "now" : "no longer"] be forced to be white.")
/client/verb/toggle_simple_stat_panel()
set name = "Toggle Simple Status Panel"
set category = "Preferences"
set desc = "Toggles detailed information on the status panel"
prefs.toggles2 ^= PREFTOGGLE_2_SIMPLE_STAT_PANEL
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_SIMPLE_STAT_PANEL) ? "no longer" : "now"] get detailed information on the status panel.")
/client/verb/toggle_item_outlines()
set name = "Toggle Item Outlines"
set category = "Preferences"
set name = "Item Outlines"
set category = "Preferences.Toggle"
set desc = "Toggles seeing item outlines on hover."
prefs.toggles2 ^= PREFTOGGLE_2_SEE_ITEM_OUTLINES
prefs.save_preferences(src)
to_chat(usr, "You will [(prefs.toggles2 & PREFTOGGLE_2_SEE_ITEM_OUTLINES) ? "now" : "no longer"] see item outlines on hover.")
/client/verb/toggle_item_tooltips()
set name = "Toggle Hover-over Item Tooltips"
set category = "Preferences"
set name = "Hover-over Item Tooltips"
set category = "Preferences.Toggle"
set desc = "Toggles textboxes with the item descriptions after hovering on them in your inventory."
prefs.toggles2 ^= PREFTOGGLE_2_HIDE_ITEM_TOOLTIPS
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_HIDE_ITEM_TOOLTIPS) ? "no longer" : "now"] see item tooltips when you hover over items on your HUD.")
/mob/verb/toggle_anonmode()
set name = "Toggle Anonymous Mode"
set category = "Preferences"
set name = "Anonymous Mode"
set category = "Preferences.Toggle"
set desc = "Toggles showing your key in various parts of the game (deadchat, end round, etc)."
client.prefs.toggles2 ^= PREFTOGGLE_2_ANON
to_chat(src, "Your key will [(client.prefs.toggles2 & PREFTOGGLE_2_ANON) ? "no longer" : "now"] be shown in certain events (end round reports, deadchat, etc).</span>")
client.prefs.save_preferences(src)
/client/proc/toggle_mctabs()
set name = "Show/Hide MC Tabs"
set category = "Preferences"
set desc = "Shows or hides the MC tabs."
prefs.toggles2 ^= PREFTOGGLE_2_MC_TABS
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_MC_TABS) ? "now" : "no longer"] see the MC tabs on the top right.")
/client/verb/toggle_dance()
set name = "Toggle Disco Machine Dancing"
set category = "Preferences"
set name = "Disco Machine Dancing"
set category = "Preferences.Toggle"
set desc = "Toggles automatic dancing from the radiant dance machine"
prefs.toggles2 ^= PREFTOGGLE_2_DANCE_DISCO
prefs.save_preferences(src)
@@ -367,3 +351,11 @@
prefs.admin_sound_ckey_ignore -= choice
to_chat(usr, "You will now hear sounds from <code>[choice]</code> again.")
prefs.save_preferences(src)
/client/proc/toggle_mctabs()
set name = "MC Tab"
set category = "Preferences.Show/Hide"
set desc = "Shows or hides the MC tab."
prefs.toggles2 ^= PREFTOGGLE_2_MC_TAB
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_MC_TAB) ? "now" : "no longer"] see the MC tab on the top right.")
+3 -1
View File
@@ -76,10 +76,12 @@
/proc/viewNum_to_text(view)
return "[(view * 2) + 1]x[(view * 2) + 1]"
/client/verb/set_view_range(view_range as null|anything in CUSTOM_VIEWRANGES)
/client/verb/set_view_range()
set name = "Set View Range"
set category = "Preferences"
var/view_range = tgui_input_list(src.mob, "Select a view range", "Set View Range", CUSTOM_VIEWRANGES, "RESET")
if(!view_range)
return