Added option to show messages in both special tab and chat (#23512)

This commit is contained in:
DamianX
2019-07-14 23:32:18 +02:00
committed by jknpj
parent 184aa5d797
commit 562d146b15
11 changed files with 45 additions and 52 deletions

9
__DEFINES/preferences.dm Normal file
View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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")

View File

@@ -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.")

View File

@@ -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)]-&gt;[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)]-&gt;[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)]-&gt;[key_name(C, X, 0)]:</B> <span class='notice'>[msg]</span></span>")

View File

@@ -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>")

View File

@@ -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

View File

@@ -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='&#39;No Reruns&#39; will roll credits only if an admin customized something about this round&#39;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

View File

@@ -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))

View File

@@ -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"