Files
John Willard 475fe94750 Say verb & skin shenanigans (Pray is a hotkey, Whisper is in commandbar) (#95477)
## About The Pull Request

Removes Say/Me/OOC/Pray/Whisper as stat panel verbs

1. Adds a hotkey for Pray, P by default, and also adds it to the list of
say modes (so tabbing on tgui-say will show it)
2. Makes Whisper a button on the commandbar, which is literally just
``say "#``, letting players know it exists in a more direct manner.
3. You now need 2 characters to be considered "typing", so `#` for
whisper won't cause you to start to think anymore.

Also messes around with the skin a bit, moving the commandbar to be
separate from the chat window, therefore not resizing if the chat
window/stat panel splitter changes, since I was already messing with the
command bar entirely I might as well look into getting this fixed. This
will go even better with
https://github.com/tgstation/tgstation/pull/95383 as it wont stretch the
command bar when the stat panel is closed.



https://github.com/user-attachments/assets/26cd9df0-7582-445e-9f67-c03d2c9cf46d


Also adds a new Adminhelp submenu for the Pray button for additional
visibility



https://github.com/user-attachments/assets/64f31f86-92a2-4f04-b248-6bbe301919fe


My current goal is the deletion of the IC tab so I've been trying to
inch towards that.

## Why It's Good For The Game

Moves Praying & Whispering into something that's more easily seen by
newer players, and helps cut some of the more useless verbs out of the
stat panel.

This is also part of my project you can see more of here -
https://hackmd.io/443_dE5lRWeEAp9bjGcKYw?view

## Changelog

🆑
qol: Pray verb is now a hotkey, Whisper is now a command bar button, and
all say verbs have been removed from the stat panel.
qol: Admin button on the escape menu is now its own section for praying,
as well as seeing your latest ticket & admin notes.
fix: Resizing the stat panel will no longer change the size of the
command bar.
/🆑
2026-04-26 07:20:58 +03:00

214 lines
6.5 KiB
Plaintext

/datum/escape_menu/proc/show_home_page()
page_holder.give_protected_screen_object(give_escape_menu_title())
page_holder.give_screen_object(
new /atom/movable/screen/escape_menu/text/clickable(
null,
/* hud_owner = */ null,
/* escape_menu = */ src,
/* button_text = */ "Resume",
/* offset = */ list(-136, 30),
/* font_size = */ 24,
/* on_click_callback = */ CALLBACK(src, PROC_REF(home_resume)),
)
)
page_holder.give_screen_object(
new /atom/movable/screen/escape_menu/text/clickable(
null,
/* hud_owner = */ null,
/* escape_menu = */ src,
/* button_text = */ "Character",
/* offset = */ list(-171, 28),
/* font_size = */ 24,
/* on_click_callback = */ CALLBACK(src, PROC_REF(home_open_character_settings)),
)
)
page_holder.give_screen_object(
new /atom/movable/screen/escape_menu/text/clickable(
null,
/* hud_owner = */ null,
/* escape_menu = */ src,
/* button_text = */ "Settings",
/* offset = */ list(-206, 30),
/* font_size = */ 24,
/* on_click_callback = */ CALLBACK(src, PROC_REF(home_open_game_settings)),
)
)
page_holder.give_screen_object(
new /atom/movable/screen/escape_menu/text/clickable/admin_ticket_notification(
null,
/* hud_owner = */ null,
/* escape_menu = */ src,
/* button_text = */ "Admin Help",
/* offset = */ list(-241, 30),
/* font_size = */ 24,
/* on_click_callback = */ CALLBACK(src, PROC_REF(open_admin_page)),
)
)
page_holder.give_screen_object(
new /atom/movable/screen/escape_menu/text/clickable/leave_body(
null,
/* hud_owner = */ null,
/* escape_menu = */ src,
/* button_text = */ "Leave Body",
/* offset = */ list(-276, 30),
/* font_size = */ 24,
/* on_click_callback = */ CALLBACK(src, PROC_REF(open_leave_body)),
)
)
page_holder.give_screen_object(
new /atom/movable/screen/escape_menu/text/clickable(
null,
/* hud_owner = */ null,
/* escape_menu = */ src,
/* button_text = */ "Quit",
/* offset = */ list(-311, 30),
/* font_size = */ 24,
/* on_click_callback = */ CALLBACK(src, PROC_REF(quit_game_prompt)),
)
)
//Bottom right buttons, from right to left, starting with the button to open the list.
page_holder.give_screen_object(new /atom/movable/screen/escape_menu/lobby_button/small(
null,
/* hud_owner = */ null,
"Resources",
"Open/Close list of resources",
/* button_screen_loc */ "BOTTOM:30,RIGHT:-20",
CALLBACK(src, PROC_REF(toggle_resources)),
/* button_overlay = */ "resources",
))
/datum/escape_menu/proc/toggle_resources()
show_resources = !show_resources
if(!show_resources)
//collapsing it
for(var/atom/movable/screen/escape_menu/lobby_button/small/collapsible/button as anything in resource_panels)
button.collapse(page_holder)
resource_panels.Cut()
return
//list of offsets we give, so missing icons don't leave a random gap.
var/list/offset_order = list(
-60,
-120,
-180,
-240,
-300,
-360,
-420,
-480,
)
resource_panels = list()
var/githuburl = CONFIG_GET(string/githuburl)
if(githuburl)
resource_panels += page_holder.give_screen_object(new /atom/movable/screen/escape_menu/lobby_button/small/collapsible(
null,
/* hud_owner = */ null,
"Report Bug",
"Report a bug/issue",
/* button_screen_loc */ "BOTTOM:30,RIGHT:-20",
CALLBACK(client, TYPE_VERB_REF(/client, reportissue)),
/* button_overlay = */ "bug",
/* end_point */ offset_order[1],
))
offset_order -= offset_order[1]
resource_panels += page_holder.give_screen_object(new /atom/movable/screen/escape_menu/lobby_button/small/collapsible(
null,
/* hud_owner = */ null,
"Github",
"Open the repository for the game",
/* button_screen_loc */ "BOTTOM:30,RIGHT:-20",
CALLBACK(client, TYPE_VERB_REF(/client, github)),
/* button_overlay = */ "github",
/* end_point */ offset_order[1],
))
offset_order -= offset_order[1]
var/forumurl = CONFIG_GET(string/forumurl)
if(forumurl)
resource_panels += page_holder.give_screen_object(new /atom/movable/screen/escape_menu/lobby_button/small/collapsible(
null,
/* hud_owner = */ null,
"Forums",
"Visit the server's forums",
/* button_screen_loc */ "BOTTOM:30,RIGHT:-20",
CALLBACK(client, TYPE_VERB_REF(/client, forum)),
/* button_overlay = */ "forums",
/* end_point */ offset_order[1],
))
offset_order -= offset_order[1]
var/rulesurl = CONFIG_GET(string/rulesurl)
if(rulesurl)
resource_panels += page_holder.give_screen_object(new /atom/movable/screen/escape_menu/lobby_button/small/collapsible(
null,
/* hud_owner = */ null,
"Rules",
"View the server rules",
/* button_screen_loc */ "BOTTOM:30,RIGHT:-20",
CALLBACK(client, TYPE_VERB_REF(/client, rules)),
/* button_overlay = */ "rules",
/* end_point */ offset_order[1],
))
offset_order -= offset_order[1]
var/wikiurl = CONFIG_GET(string/wikiurl)
if(wikiurl)
resource_panels += page_holder.give_screen_object(new /atom/movable/screen/escape_menu/lobby_button/small/collapsible(
null,
/* hud_owner = */ null,
"Wiki",
"See the wiki for the game",
/* button_screen_loc */ "BOTTOM:30,RIGHT:-20",
CALLBACK(client, TYPE_VERB_REF(/client, wiki)),
/* button_overlay = */ "wiki",
/* end_point */ offset_order[1],
))
offset_order -= offset_order[1]
var/configurl = CONFIG_GET(string/configurl)
if(configurl)
resource_panels += page_holder.give_screen_object(new /atom/movable/screen/escape_menu/lobby_button/small/collapsible(
null,
/* hud_owner = */ null,
"Config",
"View the server configuration files",
/* button_screen_loc */ "BOTTOM:30,RIGHT:-20",
CALLBACK(client, TYPE_VERB_REF(/client, config)),
/* button_overlay = */ "config",
/* end_point */ offset_order[1],
))
offset_order -= offset_order[1]
resource_panels += page_holder.give_screen_object(new /atom/movable/screen/escape_menu/lobby_button/small/collapsible(
null,
/* hud_owner = */ null,
"Change Log",
"See all changes to the server",
/* button_screen_loc */ "BOTTOM:30,RIGHT:-20",
CALLBACK(client, TYPE_VERB_REF(/client, changelog)),
/* button_overlay = */ "changelog",
/* end_point */ offset_order[1],
))
/datum/escape_menu/proc/home_resume()
qdel(src)
/datum/escape_menu/proc/home_open_character_settings()
client?.prefs.current_window = PREFERENCE_TAB_CHARACTER_PREFERENCES
client?.prefs.update_static_data(client?.mob)
client?.prefs.ui_interact(client?.mob)
qdel(src)
/datum/escape_menu/proc/home_open_game_settings()
client?.prefs.current_window = PREFERENCE_TAB_GAME_PREFERENCES
client?.prefs.update_static_data(client?.mob)
client?.prefs.ui_interact(client?.mob)
qdel(src)