mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-09 16:14:13 +00:00
Added option to show messages in both special tab and chat (#23512)
This commit is contained in:
9
__DEFINES/preferences.dm
Normal file
9
__DEFINES/preferences.dm
Normal file
@@ -0,0 +1,9 @@
|
||||
//used in /datum/preferences/var/alternate_option
|
||||
#define GET_RANDOM_JOB 0
|
||||
#define BE_ASSISTANT 1
|
||||
#define RETURN_TO_LOBBY 2
|
||||
|
||||
// /datum/preferences/var/special_popup
|
||||
#define SPECIAL_POPUP_DISABLED 0 // only output to chat
|
||||
#define SPECIAL_POPUP_EXCLUSIVE 1 // only output to special
|
||||
#define SPECIAL_POPUP_USE_BOTH 2 // output to both chat and special
|
||||
@@ -1627,10 +1627,5 @@ var/proccalls = 1
|
||||
#define EMBEDDED_CONTROLLER "embedded controller"
|
||||
#define OTHER "other"
|
||||
|
||||
//used in /datum/preferences/var/alternate_option
|
||||
#define GET_RANDOM_JOB 0
|
||||
#define BE_ASSISTANT 1
|
||||
#define RETURN_TO_LOBBY 2
|
||||
|
||||
// How many times to retry winset()ing window parameters before giving up
|
||||
#define WINSET_MAX_ATTEMPTS 10
|
||||
|
||||
@@ -206,10 +206,7 @@ var/list/alldepartments = list("Central Command")
|
||||
//why the fuck doesnt the thing show as orange
|
||||
var/msg = "<span class='notice'><b> CENTCOMM FAX: [key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<a href='?_src_=holder;role_panel=\ref[Sender]'>RP</a>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<a href='?_src_=holder;CentcommFaxReply=\ref[Sender]'>RPLY</a>)</b>: Receiving '[sentname]' via secure connection ... <a href='?_src_=holder;CentcommFaxView=\ref[sent]'>view message</a></span>"
|
||||
for (var/client/C in admins)
|
||||
if(C.prefs.special_popup)
|
||||
C << output(msg, "window1.msay_output")//if i get told to make this a proc imma be fuckin mad
|
||||
else
|
||||
to_chat(C, msg)
|
||||
C.output_to_special_tab(msg)
|
||||
C << 'sound/effects/fax.ogg'
|
||||
|
||||
proc/SendFax(var/sent, var/sentname, var/mob/Sender, var/dpt, var/centcomm, var/xdim, var/ydim)
|
||||
@@ -265,4 +262,4 @@ proc/SendFax(var/sent, var/sentname, var/mob/Sender, var/dpt, var/centcomm, var/
|
||||
P = new /obj/item/weapon/paper/merchantreport(F,merchant)
|
||||
spawn(2 SECONDS)
|
||||
P.forceMove(F.loc)
|
||||
return P
|
||||
return P
|
||||
|
||||
@@ -1639,15 +1639,21 @@ Game Mode config tags:
|
||||
if(M.client)
|
||||
. += M.client
|
||||
|
||||
/client/proc/output_to_special_tab(msg, force_focus = FALSE)
|
||||
if(prefs.special_popup)
|
||||
src << output("\[[time_stamp()]] [msg]", "window1.msay_output")
|
||||
if(!holder) //Force normal players to see the admin message when it gets sent to them
|
||||
winset(src, "rpane.special_button", "is-checked=true")
|
||||
winset(src, null, "rpanewindow.left=window1")
|
||||
if(prefs.special_popup == SPECIAL_POPUP_EXCLUSIVE)
|
||||
return
|
||||
to_chat(src, msg)
|
||||
|
||||
// A standard proc for generic output to the msay window, Not useful for things that have their own prefs settings (prayers for instance)
|
||||
/proc/output_to_msay(msg)
|
||||
var/sane_msg = strict_ascii(msg)
|
||||
for(var/client/C in admins)
|
||||
if(C.prefs.special_popup)
|
||||
C << output("\[[time_stamp()]] [sane_msg]", "window1.msay_output")
|
||||
else
|
||||
to_chat(C, msg)
|
||||
C.output_to_special_tab(sane_msg)
|
||||
|
||||
/proc/generic_projectile_fire(var/atom/target, var/atom/source, var/obj/item/projectile/projectile, var/shot_sound)
|
||||
var/turf/T = get_turf(source)
|
||||
@@ -1801,4 +1807,4 @@ Game Mode config tags:
|
||||
C = M.client
|
||||
if(!istype(C) || (!C.prefs.window_flashing && !ignorepref))
|
||||
return
|
||||
winset(C, "mainwindow", "flash=5")
|
||||
winset(C, "mainwindow", "flash=5")
|
||||
|
||||
@@ -91,7 +91,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
return //this doesn't happen
|
||||
|
||||
var/ref_mob = "\ref[mob]"
|
||||
msg = "\[[time_stamp()]] <span class='notice'><b><font color=red>HELP: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<a href='?_src_=holder;role_panel=[ref_mob]'>RP</a>) (<A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=[ref_mob]'>JMP</A>) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""]:</b> [strict_ascii(msg)]</span>"
|
||||
msg = "<span class='notice'><b><font color=red>HELP: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<a href='?_src_=holder;role_panel=[ref_mob]'>RP</a>) (<A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=[ref_mob]'>JMP</A>) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""]:</b> [strict_ascii(msg)]</span>"
|
||||
|
||||
//send this msg to all admins
|
||||
var/admin_number_afk = 0
|
||||
@@ -101,16 +101,10 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
admin_number_afk++
|
||||
if(X.prefs.toggles & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
if(X.prefs.special_popup)
|
||||
X << output(msg, "window1.msay_output")
|
||||
else
|
||||
to_chat(X, msg)
|
||||
X.output_to_special_tab(msg)
|
||||
|
||||
//show it to the person adminhelping too
|
||||
if(src.prefs.special_popup)
|
||||
src << output("\[[time_stamp()]] <span class='info'>PM to - <b>Admins</b>: [original_msg]</span>", "window1.msay_output")
|
||||
else
|
||||
to_chat(src, "<span class='notice'>PM to-<b>Admins</b>: [original_msg]</span>")
|
||||
output_to_special_tab("<span class='notice'>PM to-<b>Admins</b>: [original_msg]</span>")
|
||||
|
||||
var/admin_number_present = admins.len - admin_number_afk
|
||||
log_admin("HELP: [key_name(src)]: [original_msg] - heard by [admin_number_present] non-AFK admins.")
|
||||
|
||||
@@ -132,17 +132,9 @@
|
||||
return
|
||||
|
||||
recieve_message = "\[[time_stamp()]] <font color='[recieve_color]'>[recieve_pm_type] PM from-<b>[key_name(src, C, C.holder ? 1 : 0)]</b>: [strict_ascii(msg)]</font>"
|
||||
if(C.prefs.special_popup)
|
||||
C << output(recieve_message, "window1.msay_output")
|
||||
if(!C.holder) //Force normal players to see the admin message when it gets sent to them
|
||||
winset(C, "rpane.special_button", "is-checked=true")
|
||||
winset(C, null, "rpanewindow.left=window1")
|
||||
else
|
||||
to_chat(C, recieve_message)
|
||||
if(src.prefs.special_popup)
|
||||
src << output("\[[time_stamp()]] <span class='notice'>[send_pm_type]PM to-<b>[key_name(C, src, holder ? 1 : 0)]</b>: [msg]</span>", "window1.msay_output")
|
||||
else
|
||||
to_chat(src, "<span class='notice'>[send_pm_type]PM to-<b>[key_name(C, src, holder ? 1 : 0)]</b>: [msg]</span>")
|
||||
C.output_to_special_tab(recieve_message, force_focus = TRUE)
|
||||
|
||||
output_to_special_tab("<span class='notice'>[send_pm_type]PM to-<b>[key_name(C, src, holder ? 1 : 0)]</b>: [msg]</span>")
|
||||
|
||||
/*if(holder && !C.holder)
|
||||
C.last_pm_received = world.time
|
||||
@@ -215,7 +207,4 @@
|
||||
if(X == C || X == src)
|
||||
continue
|
||||
if(X.key!=key && X.key!=C.key && (X.holder.rights & R_ADMIN) || (X.holder.rights & R_MOD) )
|
||||
if(X.prefs.special_popup)
|
||||
X << output("\[[time_stamp()]] <B><span class='notice'>PM: [key_name(src, X, 0)]->[key_name(C, X, 0)]:</B> <span class='notice'>[msg]</span></span>", "window1.msay_output") //inform X
|
||||
else
|
||||
to_chat(X, "<B><span class='notice'>PM: [key_name(src, X, 0)]->[key_name(C, X, 0)]:</B> <span class='notice'>[msg]</span></span>")//inform X
|
||||
X.output_to_special_tab("<B><span class='notice'>PM: [key_name(src, X, 0)]->[key_name(C, X, 0)]:</B> <span class='notice'>[msg]</span></span>")
|
||||
|
||||
@@ -46,7 +46,4 @@
|
||||
color = "adminmod"
|
||||
for(var/client/C in admins)
|
||||
if((R_ADMIN|R_MOD) & C.holder.rights)
|
||||
if(C.prefs.special_popup)
|
||||
C << output("\[[time_stamp()]] <span style='color:[color];'><b>[key_name(src,1)]</b> (<A HREF='?src=\ref[C.holder];adminplayerobservejump=\ref[mob]'>JMP</A>): <span class='modooc'>[msg]</span></span>", "window1.msay_output")
|
||||
else
|
||||
to_chat(C, "<span class='prefix'>MOD: </span><span class='[color]'><EM>[key_name(src,1)]</EM> (<A HREF='?src=\ref[C.holder];adminplayerobservejump=\ref[mob]'>JMP</A>): <span class='modooc'>[msg]</span></span>")
|
||||
C.output_to_special_tab("<span class='prefix'>MOD: </span><span class='[color]'><EM>[key_name(src,1)]</EM> (<A HREF='?src=\ref[C.holder];adminplayerobservejump=\ref[mob]'>JMP</A>): <span class='modooc'>[msg]</span></span>")
|
||||
|
||||
@@ -50,8 +50,5 @@
|
||||
/proc/send_prayer_to_admins(var/msg,var/sound)
|
||||
for(var/client/C in admins)
|
||||
if(C.prefs.toggles & CHAT_PRAYER)
|
||||
if(C.prefs.special_popup)
|
||||
C << output(msg, "window1.msay_output") //If i get told to make this a proc imma be fuckin mad
|
||||
else
|
||||
to_chat(C, msg)
|
||||
C.output_to_special_tab(msg)
|
||||
C << sound
|
||||
|
||||
@@ -72,6 +72,12 @@ var/list/role_wiki=list(
|
||||
ROLE_MINOR = "Minor_Roles",
|
||||
)
|
||||
|
||||
var/list/special_popup_text2num = list(
|
||||
"Only use chat" = SPECIAL_POPUP_DISABLED,
|
||||
"Only use special" = SPECIAL_POPUP_EXCLUSIVE,
|
||||
"Use both chat and special" = SPECIAL_POPUP_USE_BOTH,
|
||||
)
|
||||
|
||||
var/const/MAX_SAVE_SLOTS = 8
|
||||
|
||||
#define POLLED_LIMIT 100
|
||||
@@ -105,7 +111,7 @@ var/const/MAX_SAVE_SLOTS = 8
|
||||
var/space_parallax = 1
|
||||
var/space_dust = 1
|
||||
var/parallax_speed = 2
|
||||
var/special_popup = 0
|
||||
var/special_popup = SPECIAL_POPUP_DISABLED
|
||||
var/tooltips = 1
|
||||
var/stumble = 0 //whether the player pauses after their first step
|
||||
var/hear_voicesound = 0 //Whether the player hears noises when somebody speaks.
|
||||
@@ -389,7 +395,7 @@ var/const/MAX_SAVE_SLOTS = 8
|
||||
<b>Show Tooltips:</b>
|
||||
<a href='?_src_=prefs;preference=tooltips'><b>[(tooltips) ? "Yes" : "No"]</b></a><br>
|
||||
<b>Adminhelp Special Tab:</b>
|
||||
<a href='?_src_=prefs;preference=special_popup'><b>[special_popup ? "Yes" : "No"]</b></a><br>
|
||||
<a href='?_src_=prefs;preference=special_popup'><b>[special_popup_text2num[special_popup+1]]</b></a><br>
|
||||
<b>Attack Animations:<b>
|
||||
<a href='?_src_=prefs;preference=attack_animation'><b>[attack_animation ? (attack_animation == ITEM_ANIMATION? "Item Anim." : "Person Anim.") : "No"]</b></a><br>
|
||||
<b>Show Credits <span title=''No Reruns' will roll credits only if an admin customized something about this round's credits, or if a rare and exclusive episode name was selected thanks to something uncommon happening that round.'>(?):</span><b>
|
||||
@@ -1334,7 +1340,9 @@ NOTE: The change will take effect AFTER any current recruiting periods."}
|
||||
be_random_body = !be_random_body
|
||||
|
||||
if("special_popup")
|
||||
special_popup = !special_popup
|
||||
var/choice = input(user, "Set your special tab preferences:", "Settings") as null|anything in special_popup_text2num
|
||||
if(!isnull(choice))
|
||||
special_popup = special_popup_text2num[choice]
|
||||
|
||||
if("randomslot")
|
||||
randomslot = !randomslot
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
randomslot = sanitize_integer(randomslot, 0, 1, initial(randomslot))
|
||||
volume = sanitize_integer(volume, 0, 100, initial(volume))
|
||||
usewmp = sanitize_integer(usewmp, 0, 1, initial(usewmp))
|
||||
special_popup = sanitize_integer(special_popup, 0, 1, initial(special_popup))
|
||||
special_popup = sanitize_integer(special_popup, 0, 2, initial(special_popup))
|
||||
usenanoui = sanitize_integer(usenanoui, 0, 1, initial(usenanoui))
|
||||
progress_bars = sanitize_integer(progress_bars, 0, 1, initial(progress_bars))
|
||||
space_parallax = sanitize_integer(space_parallax, 0, 1, initial(space_parallax))
|
||||
@@ -194,7 +194,7 @@
|
||||
UI_style_alpha = sanitize_integer(UI_style_alpha, 0, 255, initial(UI_style_alpha))
|
||||
randomslot = sanitize_integer(randomslot, 0, 1, initial(randomslot))
|
||||
volume = sanitize_integer(volume, 0, 100, initial(volume))
|
||||
special_popup = sanitize_integer(special_popup, 0, 1, initial(special_popup))
|
||||
special_popup = sanitize_integer(special_popup, 0, 2, initial(special_popup))
|
||||
credits = sanitize_inlist(credits, list(CREDITS_NEVER, CREDITS_ALWAYS, CREDITS_NO_RERUNS), initial(credits))
|
||||
jingle = sanitize_inlist(jingle, list(JINGLE_NEVER, JINGLE_CLASSIC, JINGLE_ALL), initial(jingle))
|
||||
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
#include "__DEFINES\pai_software.dm"
|
||||
#include "__DEFINES\pipes.dm"
|
||||
#include "__DEFINES\planes+layers.dm"
|
||||
#include "__DEFINES\preferences.dm"
|
||||
#include "__DEFINES\profile.dm"
|
||||
#include "__DEFINES\rcd.dm"
|
||||
#include "__DEFINES\reagents.dm"
|
||||
|
||||
Reference in New Issue
Block a user