diff --git a/code/__HELPERS/screentips.dm b/code/__HELPERS/screentips.dm
new file mode 100644
index 0000000000..967e1c3bb6
--- /dev/null
+++ b/code/__HELPERS/screentips.dm
@@ -0,0 +1,31 @@
+// Generate intent icons
+/// Help intent icon for screentip context
+GLOBAL_DATUM_INIT(icon_intent_help, /image, image('icons/emoji.dmi', icon_state = INTENT_HELP))
+/// Disarm intent icon for screentip context
+GLOBAL_DATUM_INIT(icon_intent_disarm, /image, image('icons/emoji.dmi', icon_state = INTENT_DISARM))
+/// Grab intent icon for screentip context
+GLOBAL_DATUM_INIT(icon_intent_grab, /image, image('icons/emoji.dmi', icon_state = INTENT_GRAB))
+/// Harm intent icon for screentip context
+GLOBAL_DATUM_INIT(icon_intent_harm, /image, image('icons/emoji.dmi', icon_state = INTENT_HARM))
+
+/*
+ * # Builds context with each intent for this key
+ * Args:
+ * - context = list (REQUIRED)
+ * - key = string (REQUIRED)
+*/
+/proc/build_context(list/context, key)
+ var/list/to_add
+ for(var/intent in context[key])
+ switch(intent)
+ if(INTENT_HELP)
+ LAZYADD(to_add, "\icon[GLOB.icon_intent_help] [key]: [context[key][INTENT_HELP]]")
+ if(INTENT_DISARM)
+ LAZYADD(to_add, "\icon[GLOB.icon_intent_disarm] [key]: [context[key][INTENT_DISARM]]")
+ if(INTENT_GRAB)
+ LAZYADD(to_add, "\icon[GLOB.icon_intent_grab] [key]: [context[key][INTENT_GRAB]]")
+ if(INTENT_HARM)
+ LAZYADD(to_add, "\icon[GLOB.icon_intent_harm] [key]: [context[key][INTENT_HARM]]")
+ else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST
+ LAZYADD(to_add, "[key]: [context[key][intent]]")
+ return english_list(to_add, "", " ", " ")
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index deed93676e..911a91bea3 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -1468,22 +1468,6 @@
var/extra_lines = 0
var/extra_context = ""
- // Generate intent icons
- var/static/image/intent_help
- if(!intent_help)
- intent_help = image('icons/emoji.dmi', icon_state = INTENT_HELP)
- var/static/image/intent_disarm
- if(!intent_disarm)
- intent_disarm = image('icons/emoji.dmi', icon_state = INTENT_DISARM)
- var/static/image/intent_grab
- if(!intent_grab)
- intent_grab = image('icons/emoji.dmi', icon_state = INTENT_GRAB)
- var/static/image/intent_harm
- if(!intent_harm)
- intent_harm = image('icons/emoji.dmi', icon_state = INTENT_HARM)
- //
-
-
if (isliving(user) || isovermind(user) || isaicamera(user))
var/obj/item/held_item = user.get_active_held_item()
@@ -1498,36 +1482,10 @@
// LMB and RMB on one line...
var/lmb_text = ""
if((SCREENTIP_CONTEXT_LMB in context) && (length(context[SCREENTIP_CONTEXT_LMB]) > 0))
- var/list/to_add
- for(var/intent in context[SCREENTIP_CONTEXT_LMB])
- switch(intent)
- if(INTENT_HELP)
- LAZYADD(to_add, "\icon[intent_help] [SCREENTIP_CONTEXT_LMB]: [context[SCREENTIP_CONTEXT_LMB][INTENT_HELP]]")
- if(INTENT_DISARM)
- LAZYADD(to_add, "\icon[intent_disarm] [SCREENTIP_CONTEXT_LMB]: [context[SCREENTIP_CONTEXT_LMB][INTENT_DISARM]]")
- if(INTENT_GRAB)
- LAZYADD(to_add, "\icon[intent_grab] [SCREENTIP_CONTEXT_LMB]: [context[SCREENTIP_CONTEXT_LMB][INTENT_GRAB]]")
- if(INTENT_HARM)
- LAZYADD(to_add, "\icon[intent_harm] [SCREENTIP_CONTEXT_LMB]: [context[SCREENTIP_CONTEXT_LMB][INTENT_HARM]]")
- else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST
- LAZYADD(to_add, "[SCREENTIP_CONTEXT_LMB]: [context[SCREENTIP_CONTEXT_LMB][intent]]")
- lmb_text = english_list(to_add, "", " | ", " | ", " | ")
+ lmb_text = build_context(context, SCREENTIP_CONTEXT_LMB)
var/rmb_text = ""
if((SCREENTIP_CONTEXT_RMB in context) && (length(context[SCREENTIP_CONTEXT_RMB]) > 0))
- var/list/to_add
- for(var/intent in context[SCREENTIP_CONTEXT_RMB])
- switch(intent)
- if(INTENT_HELP)
- LAZYADD(to_add, "\icon[intent_help] [SCREENTIP_CONTEXT_RMB]: [context[SCREENTIP_CONTEXT_RMB][INTENT_HELP]]")
- if(INTENT_DISARM)
- LAZYADD(to_add, "\icon[intent_disarm] [SCREENTIP_CONTEXT_RMB]: [context[SCREENTIP_CONTEXT_RMB][INTENT_DISARM]]")
- if(INTENT_GRAB)
- LAZYADD(to_add, "\icon[intent_grab] [SCREENTIP_CONTEXT_RMB]: [context[SCREENTIP_CONTEXT_RMB][INTENT_GRAB]]")
- if(INTENT_HARM)
- LAZYADD(to_add, "\icon[intent_harm] [SCREENTIP_CONTEXT_RMB]: [context[SCREENTIP_CONTEXT_RMB][INTENT_HARM]]")
- else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST
- LAZYADD(to_add, "[SCREENTIP_CONTEXT_RMB]: [context[SCREENTIP_CONTEXT_RMB][intent]]")
- rmb_text = english_list(to_add, "", " | ", " | ", " | ")
+ rmb_text = build_context(context, SCREENTIP_CONTEXT_RMB)
if (lmb_text)
lmb_rmb_line = lmb_text
@@ -1541,115 +1499,37 @@
lmb_rmb_line += "
"
extra_lines++
if((SCREENTIP_CONTEXT_CTRL_LMB in context) && (length(context[SCREENTIP_CONTEXT_CTRL_LMB]) > 0))
- var/list/to_add
- for(var/intent in context[SCREENTIP_CONTEXT_CTRL_LMB])
- switch(intent)
- if(INTENT_HELP)
- LAZYADD(to_add, "\icon[intent_help] [SCREENTIP_CONTEXT_CTRL_LMB]: [context[SCREENTIP_CONTEXT_CTRL_LMB][INTENT_HELP]]")
- if(INTENT_DISARM)
- LAZYADD(to_add, "\icon[intent_disarm] [SCREENTIP_CONTEXT_CTRL_LMB]: [context[SCREENTIP_CONTEXT_CTRL_LMB][INTENT_DISARM]]")
- if(INTENT_GRAB)
- LAZYADD(to_add, "\icon[intent_grab] [SCREENTIP_CONTEXT_CTRL_LMB]: [context[SCREENTIP_CONTEXT_CTRL_LMB][INTENT_GRAB]]")
- if(INTENT_HARM)
- LAZYADD(to_add, "\icon[intent_harm] [SCREENTIP_CONTEXT_CTRL_LMB]: [context[SCREENTIP_CONTEXT_CTRL_LMB][INTENT_HARM]]")
- else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST
- LAZYADD(to_add, "[SCREENTIP_CONTEXT_CTRL_LMB]: [context[SCREENTIP_CONTEXT_CTRL_LMB][intent]]")
- ctrl_lmb_ctrl_rmb_line = english_list(to_add, "", " | ", " | ", " | ")
+ ctrl_lmb_ctrl_rmb_line = build_context(context, SCREENTIP_CONTEXT_CTRL_LMB)
if((SCREENTIP_CONTEXT_CTRL_RMB in context) && (length(context[SCREENTIP_CONTEXT_CTRL_RMB]) > 0))
if (ctrl_lmb_ctrl_rmb_line != "")
ctrl_lmb_ctrl_rmb_line += " | "
ctrl_lmb_ctrl_rmb_line += "[SCREENTIP_CONTEXT_CTRL_RMB]: [context[SCREENTIP_CONTEXT_CTRL_RMB]]"
- var/list/to_add
- for(var/intent in context[SCREENTIP_CONTEXT_CTRL_RMB])
- switch(intent)
- if(INTENT_HELP)
- LAZYADD(to_add, "\icon[intent_help] [SCREENTIP_CONTEXT_CTRL_RMB]: [context[SCREENTIP_CONTEXT_CTRL_RMB][INTENT_HELP]]")
- if(INTENT_DISARM)
- LAZYADD(to_add, "\icon[intent_disarm] [SCREENTIP_CONTEXT_CTRL_RMB]: [context[SCREENTIP_CONTEXT_CTRL_RMB][INTENT_DISARM]]")
- if(INTENT_GRAB)
- LAZYADD(to_add, "\icon[intent_grab] [SCREENTIP_CONTEXT_CTRL_RMB]: [context[SCREENTIP_CONTEXT_CTRL_RMB][INTENT_GRAB]]")
- if(INTENT_HARM)
- LAZYADD(to_add, "\icon[intent_harm] [SCREENTIP_CONTEXT_CTRL_RMB]: [context[SCREENTIP_CONTEXT_CTRL_RMB][INTENT_HARM]]")
- else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST
- LAZYADD(to_add, "[SCREENTIP_CONTEXT_CTRL_RMB]: [context[SCREENTIP_CONTEXT_CTRL_RMB][intent]]")
- ctrl_lmb_ctrl_rmb_line = english_list(to_add, "", " | ", " | ", " | ")
+ ctrl_lmb_ctrl_rmb_line = build_context(context, SCREENTIP_CONTEXT_CTRL_RMB)
// Alt-LMB, Alt-RMB on one line...
if (ctrl_lmb_ctrl_rmb_line != "")
ctrl_lmb_ctrl_rmb_line += "
"
extra_lines++
if((SCREENTIP_CONTEXT_ALT_LMB in context) && (length(context[SCREENTIP_CONTEXT_ALT_LMB]) > 0))
- var/list/to_add
- for(var/intent in context[SCREENTIP_CONTEXT_ALT_LMB])
- switch(intent)
- if(INTENT_HELP)
- LAZYADD(to_add, "\icon[intent_help] [SCREENTIP_CONTEXT_ALT_LMB]: [context[SCREENTIP_CONTEXT_ALT_LMB][INTENT_HELP]]")
- if(INTENT_DISARM)
- LAZYADD(to_add, "\icon[intent_disarm] [SCREENTIP_CONTEXT_ALT_LMB]: [context[SCREENTIP_CONTEXT_ALT_LMB][INTENT_DISARM]]")
- if(INTENT_GRAB)
- LAZYADD(to_add, "\icon[intent_grab] [SCREENTIP_CONTEXT_ALT_LMB]: [context[SCREENTIP_CONTEXT_ALT_LMB][INTENT_GRAB]]")
- if(INTENT_HARM)
- LAZYADD(to_add, "\icon[intent_harm] [SCREENTIP_CONTEXT_ALT_LMB]: [context[SCREENTIP_CONTEXT_ALT_LMB][INTENT_HARM]]")
- else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST
- LAZYADD(to_add, "[SCREENTIP_CONTEXT_ALT_LMB]: [context[SCREENTIP_CONTEXT_ALT_LMB][intent]]")
- alt_lmb_alt_rmb_line = english_list(to_add, "", " | ", " | ", " | ")
+ alt_lmb_alt_rmb_line = build_context(context, SCREENTIP_CONTEXT_ALT_LMB)
if((SCREENTIP_CONTEXT_ALT_RMB in context) && (length(context[SCREENTIP_CONTEXT_ALT_RMB]) > 0))
if (alt_lmb_alt_rmb_line != "")
alt_lmb_alt_rmb_line += " | "
- var/list/to_add
- for(var/intent in context[SCREENTIP_CONTEXT_ALT_RMB])
- switch(intent)
- if(INTENT_HELP)
- LAZYADD(to_add, "\icon[intent_help] [SCREENTIP_CONTEXT_ALT_RMB]: [context[SCREENTIP_CONTEXT_ALT_RMB][INTENT_HELP]]")
- if(INTENT_DISARM)
- LAZYADD(to_add, "\icon[intent_disarm] [SCREENTIP_CONTEXT_ALT_RMB]: [context[SCREENTIP_CONTEXT_ALT_RMB][INTENT_DISARM]]")
- if(INTENT_GRAB)
- LAZYADD(to_add, "\icon[intent_grab] [SCREENTIP_CONTEXT_ALT_RMB]: [context[SCREENTIP_CONTEXT_ALT_RMB][INTENT_GRAB]]")
- if(INTENT_HARM)
- LAZYADD(to_add, "\icon[intent_harm] [SCREENTIP_CONTEXT_ALT_RMB]: [context[SCREENTIP_CONTEXT_ALT_RMB][INTENT_HARM]]")
- else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST
- LAZYADD(to_add, "[SCREENTIP_CONTEXT_ALT_RMB]: [context[SCREENTIP_CONTEXT_ALT_RMB][intent]]")
- alt_lmb_alt_rmb_line = english_list(to_add, "", " | ", " | ", " | ")
+ alt_lmb_alt_rmb_line = build_context(context, SCREENTIP_CONTEXT_ALT_RMB)
// Shift-LMB, Ctrl-Shift-LMB on one line...
if (alt_lmb_alt_rmb_line != "")
alt_lmb_alt_rmb_line += "
"
extra_lines++
if((SCREENTIP_CONTEXT_SHIFT_LMB in context) && (length(context[SCREENTIP_CONTEXT_SHIFT_LMB]) > 0))
- var/list/to_add
- for(var/intent in context[SCREENTIP_CONTEXT_SHIFT_LMB])
- switch(intent)
- if(INTENT_HELP)
- LAZYADD(to_add, "\icon[intent_help] [SCREENTIP_CONTEXT_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_SHIFT_LMB][INTENT_HELP]]")
- if(INTENT_DISARM)
- LAZYADD(to_add, "\icon[intent_disarm] [SCREENTIP_CONTEXT_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_SHIFT_LMB][INTENT_DISARM]]")
- if(INTENT_GRAB)
- LAZYADD(to_add, "\icon[intent_grab] [SCREENTIP_CONTEXT_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_SHIFT_LMB][INTENT_GRAB]]")
- if(INTENT_HARM)
- LAZYADD(to_add, "\icon[intent_harm] [SCREENTIP_CONTEXT_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_SHIFT_LMB][INTENT_HARM]]")
- else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST
- LAZYADD(to_add, "[SCREENTIP_CONTEXT_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_SHIFT_LMB][intent]]")
- shift_lmb_ctrl_shift_lmb_line = english_list(to_add, "", " | ", " | ", " | ")
+ shift_lmb_ctrl_shift_lmb_line = build_context(context, SCREENTIP_CONTEXT_SHIFT_LMB)
if((SCREENTIP_CONTEXT_CTRL_SHIFT_LMB in context) && (length(context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]) > 0))
if (shift_lmb_ctrl_shift_lmb_line != "")
shift_lmb_ctrl_shift_lmb_line += " | "
shift_lmb_ctrl_shift_lmb_line += "[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]]"
- var/list/to_add
- for(var/intent in context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB])
- switch(intent)
- if(INTENT_HELP)
- LAZYADD(to_add, "\icon[intent_help] [SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB][INTENT_HELP]]")
- if(INTENT_DISARM)
- LAZYADD(to_add, "\icon[intent_disarm] [SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB][INTENT_DISARM]]")
- if(INTENT_GRAB)
- LAZYADD(to_add, "\icon[intent_grab] [SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB][INTENT_GRAB]]")
- if(INTENT_HARM)
- LAZYADD(to_add, "\icon[intent_harm] [SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB][INTENT_HARM]]")
- else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST
- LAZYADD(to_add, "[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB][intent]]")
- shift_lmb_ctrl_shift_lmb_line = english_list(to_add, "", " | ", " | ", " | ")
+ shift_lmb_ctrl_shift_lmb_line = build_context(context, SCREENTIP_CONTEXT_CTRL_SHIFT_LMB)
if (shift_lmb_ctrl_shift_lmb_line != "")
extra_lines++
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 38b9737104..b7642f4658 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -41,7 +41,7 @@
. = ..()
var/static/list/barehanded_interactions = list(
- INTENT_HELP = "Slap",
+ INTENT_ANY = "Slap",
INTENT_HARM = "Slam"
)
diff --git a/tgstation.dme b/tgstation.dme
index c958a86148..6c23e295ee 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -212,6 +212,7 @@
#include "code\__HELPERS\reagents.dm"
#include "code\__HELPERS\roundend.dm"
#include "code\__HELPERS\sanitize_values.dm"
+#include "code\__HELPERS\screentips.dm"
#include "code\__HELPERS\shell.dm"
#include "code\__HELPERS\stat_tracking.dm"
#include "code\__HELPERS\text.dm"