From 2b109d8400b904886d9f9bcf15377d61c1b65ee7 Mon Sep 17 00:00:00 2001 From: Markolie Date: Mon, 31 Aug 2015 18:52:14 +0200 Subject: [PATCH 1/5] Add BYOND member perks --- code/__DEFINES/preferences.dm | 1 + code/__HELPERS/sanitize_values.dm | 7 +++ code/__HELPERS/type2type.dm | 51 ++++++++++++++++++ code/game/verbs/ooc.dm | 58 +++++++++++++++++++-- code/modules/admin/admin_verbs.dm | 15 +----- code/modules/client/client procs.dm | 6 +++ code/modules/client/preferences.dm | 39 +++++++++++--- code/modules/client/preferences_mysql.dm | 4 +- code/modules/client/preferences_toggles.dm | 9 ++++ code/modules/mob/mob_helpers.dm | 3 -- icons/member_content.dmi | Bin 0 -> 2140 bytes 11 files changed, 163 insertions(+), 30 deletions(-) create mode 100644 icons/member_content.dmi diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 94c476cb367..a3dd8375587 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -6,6 +6,7 @@ #define SOUND_STREAMING 16 #define SOUND_HEARTBEAT 32 #define SOUND_BUZZ 64 +#define MEMBER_PUBLIC 128 #define SOUND_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|SOUND_STREAMING|SOUND_HEARTBEAT|SOUND_BUZZ) diff --git a/code/__HELPERS/sanitize_values.dm b/code/__HELPERS/sanitize_values.dm index 1be69032cf1..70c63dfc789 100644 --- a/code/__HELPERS/sanitize_values.dm +++ b/code/__HELPERS/sanitize_values.dm @@ -44,3 +44,10 @@ if(65 to 70) . += ascii2text(ascii+32) //letters A to F - translates to lowercase else return default return . + +/proc/sanitize_ooccolor(color) + var/list/HSL = rgb2hsl(hex2num(copytext(color,2,4)),hex2num(copytext(color,4,6)),hex2num(copytext(color,6,8))) + HSL[3] = min(HSL[3],0.4) + var/list/RGB = hsl2rgb(arglist(HSL)) + return "#[num2hex(RGB[1],2)][num2hex(RGB[2],2)][num2hex(RGB[3],2)]" + diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 1ef5f60488e..251206bbdbf 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -354,6 +354,57 @@ proc/tg_text2list(text, glue=",", assocglue=";") switch(ui_style) if("Midnight") return 'icons/mob/screen1_Midnight.dmi' else return 'icons/mob/screen1_White.dmi' + +//colour formats +/proc/rgb2hsl(red, green, blue) + red /= 255;green /= 255;blue /= 255; + var/max = max(red,green,blue) + var/min = min(red,green,blue) + var/range = max-min + + var/hue=0;var/saturation=0;var/lightness=0; + lightness = (max + min)/2 + if(range != 0) + if(lightness < 0.5) saturation = range/(max+min) + else saturation = range/(2-max-min) + + var/dred = ((max-red)/(6*max)) + 0.5 + var/dgreen = ((max-green)/(6*max)) + 0.5 + var/dblue = ((max-blue)/(6*max)) + 0.5 + + if(max==red) hue = dblue - dgreen + else if(max==green) hue = dred - dblue + (1/3) + else hue = dgreen - dred + (2/3) + if(hue < 0) hue++ + else if(hue > 1) hue-- + + return list(hue, saturation, lightness) + +/proc/hsl2rgb(hue, saturation, lightness) + var/red;var/green;var/blue; + if(saturation == 0) + red = lightness * 255 + green = red + blue = red + else + var/a;var/b; + if(lightness < 0.5) b = lightness*(1+saturation) + else b = (lightness+saturation) - (saturation*lightness) + a = 2*lightness - b + + red = round(255 * hue2rgb(a, b, hue+(1/3))) + green = round(255 * hue2rgb(a, b, hue)) + blue = round(255 * hue2rgb(a, b, hue-(1/3))) + + return list(red, green, blue) + +/proc/hue2rgb(a, b, hue) + if(hue < 0) hue++ + else if(hue > 1) hue-- + if(6*hue < 1) return (a+(b-a)*6*hue) + if(2*hue < 1) return b + if(3*hue < 2) return (a+(b-a)*((2/3)-hue)*6) + return a /proc/num2septext(var/theNum, var/sigFig = 7,var/sep=",") // default sigFig (1,000,000) var/finalNum = num2text(theNum, sigFig) diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index e04289a4479..9fba8920d3a 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -36,6 +36,11 @@ var/global/normal_ooc_colour = "#002eb8" return log_ooc("[mob.name]/[key] : [msg]") + + var/keyname = key + if(prefs.unlock_content) + if(prefs.toggles & MEMBER_PUBLIC) + keyname = "[keyname]" var/display_colour = normal_ooc_colour if(holder && !holder.fakekey) @@ -47,10 +52,18 @@ var/global/normal_ooc_colour = "#002eb8" display_colour = src.prefs.ooccolor else display_colour = "#b82e00" //orange - + + if(prefs.unlock_content) + if(display_colour != normal_ooc_colour) + if((prefs.toggles & MEMBER_PUBLIC) && prefs.ooccolor) + display_colour = prefs.ooccolor + for(var/client/C in clients) if(C.prefs.toggles & CHAT_OOC) var/display_name = src.key + if(prefs.unlock_content) + if(prefs.toggles & MEMBER_PUBLIC) + display_name = "[display_name]" if(holder) if(holder.fakekey) if(C.holder) @@ -72,9 +85,46 @@ var/global/normal_ooc_colour = "#002eb8" /client/proc/set_ooc(newColor as color) set name = "Set Player OOC Colour" - set desc = "Set to yellow for eye burning goodness." + set desc = "Modifies a player's OOC color." set category = "Server" + + if(!check_rights(R_SERVER)) return normal_ooc_colour = newColor + feedback_add_details("admin_verb","SOOC") + +/client/proc/reset_ooc() + set name = "Reset Player OOC Color" + set desc = "Returns a player's OOC color to default." + set category = "Server" + + if(!check_rights(R_SERVER)) return + normal_ooc_colour = initial(normal_ooc_colour) + feedback_add_details("admin_verb","ROOC") + +/client/verb/colorooc() + set name = "Set Your OOC Color" + set category = "Preferences" + + if(!check_rights(R_ADMIN,0)) + if(!is_content_unlocked()) return + + var/new_ooccolor = input(src, "Please select your OOC color.", "OOC color", prefs.ooccolor) as color|null + if(new_ooccolor) + prefs.ooccolor = sanitize_ooccolor(new_ooccolor) + prefs.save_preferences() + feedback_add_details("admin_verb","OC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + return + +/client/verb/resetcolorooc() + set name = "Reset Your OOC Color" + set desc = "Returns your OOC color to default" + set category = "Preferences" + + if(!check_rights(R_ADMIN,0)) + if(!is_content_unlocked()) return + + prefs.ooccolor = initial(prefs.ooccolor) + prefs.save_preferences() /client/verb/looc(msg as text) set name = "LOOC" //Gave this shit a shorter name so you only have to time out "ooc" rather than "ooc message" to use it --NeoFite @@ -124,7 +174,7 @@ var/global/normal_ooc_colour = "#002eb8" if(!M.client) continue var/client/C = M.client - if(check_rights(R_MOD,0,M)) + if(check_rights(R_MOD,0)) continue //they are handled after that if(C.prefs.toggles & CHAT_LOOC) @@ -142,7 +192,7 @@ var/global/normal_ooc_colour = "#002eb8" display_name = "[S.name]/([S.key])" for(var/client/C in admins) - if(check_rights(R_MOD,0,C.mob)) + if(check_rights(R_MOD,0)) if(C.prefs.toggles & CHAT_LOOC) var/prefix = "(R)LOOC" if (C.mob in heard) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index b41dece52d7..4ce29ce8f36 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -16,7 +16,6 @@ var/list/admin_verbs_admin = list( /datum/admins/proc/toggleenter, /*toggles whether people can join the current game*/ /datum/admins/proc/toggleguests, /*toggles whether guests can join the current game*/ /datum/admins/proc/announce, /*priority announce something to all clients.*/ - /client/proc/colorooc, /*allows us to set a custom colour for everythign we say in ooc*/ /client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/ /client/proc/toggle_view_range, /*changes how far we can see*/ /datum/admins/proc/view_txt_log, /*shows the server log (diary) for today*/ @@ -127,7 +126,8 @@ var/list/admin_verbs_server = list( /client/proc/delbook, /client/proc/toggle_antagHUD_use, /client/proc/toggle_antagHUD_restrictions, - /client/proc/set_ooc + /client/proc/set_ooc, + /client/proc/reset_ooc ) var/list/admin_verbs_debug = list( /client/proc/cmd_admin_list_open_jobs, @@ -345,17 +345,6 @@ var/list/admin_verbs_mentor = list( feedback_add_details("admin_verb","S") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return -/client/proc/colorooc() - set category = "Admin" - set name = "Personal OOC Text Color" - if(!holder) return - var/new_ooccolor = input(src, "Please select your OOC colour.", "OOC colour") as color|null - if(new_ooccolor) - prefs.ooccolor = new_ooccolor - prefs.save_preferences(src) - feedback_add_details("admin_verb","OC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return - /client/proc/stealth() set category = "Admin" set name = "Stealth Mode" diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 1141e0e043d..1376f088aea 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -179,6 +179,12 @@ ..() //redirect to hsrc.Topic() +/client/proc/is_content_unlocked() + if(!prefs.unlock_content) + src << "Become a BYOND member to access member-perks and features, as well as support the engine that makes this game possible. Click here to find out more." + return 0 + return 1 + /client/proc/handle_spam_prevention(var/message, var/mute_type) if(config.automute_on && !holder && src.last_message == message) src.last_message_count++ diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index a2e2387eebc..324c6f0c775 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -67,18 +67,20 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts return max(0, days - C.player_age) return 0 -var/const/MAX_SAVE_SLOTS = 10 - //used for alternate_option #define GET_RANDOM_JOB 0 #define BE_CIVILIAN 1 #define RETURN_TO_LOBBY 2 +#define MAX_SAVE_SLOTS 10 // Save slots for regular players +#define MAX_SAVE_SLOTS_MEMBER 10 // Save slots for BYOND members + datum/preferences //doohickeys for savefiles // var/path var/default_slot = 1 //Holder so it doesn't default to slot 1, rather the last one used // var/savefile_version = 0 + var/max_save_slots = MAX_SAVE_SLOTS //non-preference stuff var/warns = 0 @@ -183,9 +185,17 @@ datum/preferences // jukebox volume var/volume = 100 + + // BYOND membership + var/unlock_content = 0 + /datum/preferences/New(client/C) b_type = pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+") - + if(istype(C)) + if(!IsGuestKey(C.key)) + unlock_content = C.IsByondMember() + if(unlock_content) + max_save_slots = MAX_SAVE_SLOTS_MEMBER var/loaded_preferences_successfully = load_preferences(C) if(loaded_preferences_successfully) if(load_character(C)) @@ -369,14 +379,23 @@ datum/preferences dat += "Alpha (transparency): [UI_style_alpha]
" dat += "Play admin midis: [(sound & SOUND_MIDI) ? "Yes" : "No"]
" dat += "Play lobby music: [(sound & SOUND_LOBBY) ? "Yes" : "No"]
" - dat += "Randomized Character Slot: [randomslot ? "Yes" : "No"]
" + dat += "Randomized character slot: [randomslot ? "Yes" : "No"]
" dat += "Ghost ears: [(toggles & CHAT_GHOSTEARS) ? "Nearest Creatures" : "All Speech"]
" dat += "Ghost sight: [(toggles & CHAT_GHOSTSIGHT) ? "Nearest Creatures" : "All Emotes"]
" dat += "Ghost radio: [(toggles & CHAT_GHOSTRADIO) ? "Nearest Speakers" : "All Chatter"]
" - - if(config.allow_Metadata) - dat += "OOC Notes: Edit
" + dat += "OOC notes: Edit
" + + if(user.client) + if(user.client.holder) + dat += "Adminhelp sound: " + dat += "[(sound & SOUND_ADMINHELP)?"On":"Off"]
" + + if(unlock_content || check_rights(R_ADMIN,0)) + dat += "OOC:     Change
" + + if(unlock_content) + dat += "BYOND Membership Publicity: [(toggles & MEMBER_PUBLIC) ? "Public" : "Hidden"]
" dat += "" dat += "

Special Role Settings

" @@ -1338,6 +1357,10 @@ datum/preferences else switch(href_list["preference"]) + if("publicity") + if(unlock_content) + toggles ^= MEMBER_PUBLIC + if("gender") if(gender == MALE) gender = FEMALE @@ -1545,7 +1568,7 @@ datum/preferences dat += "Select a character slot to load
" var/name - for(var/i=1, i<=MAX_SAVE_SLOTS, i++) + for(var/i=1, i<=max_save_slots, i++) if(!query.Execute()) var/err = query.ErrorMsg() log_game("SQL ERROR during character slot loading. Error : \[[err]\]\n") diff --git a/code/modules/client/preferences_mysql.dm b/code/modules/client/preferences_mysql.dm index 816bb2d080e..96e51448c6d 100644 --- a/code/modules/client/preferences_mysql.dm +++ b/code/modules/client/preferences_mysql.dm @@ -40,7 +40,7 @@ // lastchangelog = sanitize_text(lastchangelog, initial(lastchangelog)) UI_style = sanitize_inlist(UI_style, list("White", "Midnight"), initial(UI_style)) be_special = sanitize_integer(be_special, 0, 65535, initial(be_special)) - default_slot = sanitize_integer(default_slot, 1, MAX_SAVE_SLOTS, initial(default_slot)) + default_slot = sanitize_integer(default_slot, 1, max_save_slots, initial(default_slot)) toggles = sanitize_integer(toggles, 0, 65535, initial(toggles)) sound = sanitize_integer(sound, 0, 65535, initial(sound)) UI_style_color = sanitize_hexcolor(UI_style_color, initial(UI_style_color)) @@ -76,7 +76,7 @@ /datum/preferences/proc/load_character(client/C,slot) if(!slot) slot = default_slot - slot = sanitize_integer(slot, 1, MAX_SAVE_SLOTS, initial(default_slot)) + slot = sanitize_integer(slot, 1, max_save_slots, initial(default_slot)) if(slot != default_slot) default_slot = slot var/DBQuery/firstquery = dbcon.NewQuery("UPDATE [format_table_name("player")] SET default_slot=[slot] WHERE ckey='[C.ckey]'") diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 67b8310d1cc..6463e65ada2 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -242,3 +242,12 @@ media.update_music() else media.stop_music() + +/client/verb/toggle_member_publicity() + set name = "Toggle Membership Publicity" + set category = "Preferences" + set desc = "Toggles whether other players can see that you are a BYOND member (OOC blag icon/colours)." + + prefs.toggles ^= MEMBER_PUBLIC + prefs.save_preferences(src) + src << "Others can[(prefs.toggles & MEMBER_PUBLIC) ? "" : " not"] see whether you are a BYOND member." diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index e64ec58e553..8b8fb542d70 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -208,9 +208,6 @@ proc/isdeaf(A) return (M.sdisabilities & DEAF) || M.ear_deaf return 0 -/proc/hsl2rgb(h, s, l) - return - proc/hassensorlevel(A, var/level) var/mob/living/carbon/human/H = A if(istype(H) && istype(H.w_uniform, /obj/item/clothing/under)) diff --git a/icons/member_content.dmi b/icons/member_content.dmi new file mode 100644 index 0000000000000000000000000000000000000000..bb59764627628423b93e55a312d327170cb00f6d GIT binary patch literal 2140 zcmV-i2&4CjP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex7wuvIX!;Nr|k z%}mcIfpCgT5=&AQY!#G}auU;(xHwZXi;5L&6%4sJ(~1&vQz2|+1y?^81s7jWE&vw{ z8LLJt>!1Jt2dPO!K~zYIy_S7!Th$qdpZj57$6vAY**IzA)}(1@(*ahS5L0h#jIx0k z>N-|Uniw!`NCU*CiGemIwrL=tX>6K=HpIjRXp_odFjhvzN3%3ZleTF?32mCvG}$x6qhNjuUj-9O%QAN|gG-`{zq&dyH$pG*C36FWLOL_VL#FboQX zLTR(A;&3?7G!0GD=8{wH8O9v7KRhSBk9p4oGZ6O)38S;%E%RtGea$vpKziB0QN zuD!}dOG}IJ`~CFy_g@w)UG7NR+uOzPXo6SXU1T7sQ7~1^0+@#2Ywgu++u-NVZ_Kf` zYYB=Hs$>(t8g9QyBUBflva*t%o}Np<^2foV(WuySV2EG!XE>4bpm|hWZqVG|^~r2$ z_VRN7Jli`0$WA~O6fK!I`xL(aM3Mam=Sd_Iw6(Q~PXtDzQSsN__YvS2wQ@x(KN&VGZjv9U{_D}e3o?c%M0lN^}S zC`+HfZKWyKBz#WrIKkzF#%d>L7Yx!xi{-3IxIsfw0qJ5`Haztw!SN4Zbaa$hEG8}i z#^Z4@awfsiC5?Fb+x&XRt9;#m2Og2f=a48@eV(+t9(=j9K8Sj32yB;fNSwBp4;z7v|dYXZ7nN+ zXC|f@PCJpN($t6UpmT77vGfmEz1c@|t(Vq@0LLaXRCyhw@)k&tHEi0~`MBo3Miv%L z_VuOcIg~*Wf)?#vis@zk@Ol%EZT65zB#6i3LWNROKmX2q6ww%)&oSt!Cf4>x&J0g; zG_geQ*fP}t4_B`#C*;?-D^^S15H#18v7EAa`jr_DAJs7p2vuo(_s;eFZqM`V?@NK? zNn2%q+|%O&ThkbhP^LdlZhH$nm2m zCwTXGmIv=y#m(0TR=8KdFJl;aR8=i0bT}N;xn-s&L1?h^)0J%7;OE(Wvm88~M%a*F zw%OHD&8zztn9US<=g=~h?m21#g2bdjJ_oCj=U$pe2xtt+=(>*E z?Jgt1mGFC=#)5aieYkmCU#YuVx)A&%ic~b?C>{v~D$>O1})U!3>WAxN1TC0CT zvwRy5?;7CC+k*tlRk{!A{QNglY}@MPw(TXQt<4hIY!;u-S5l~H8tqq>@lvP3En9-@ zJ+wqPsPUyO6;%0E_7A4`+0zrG(iTm%E{0F#SnC_$ibe?*Y-a!Y7mDiV_~Ca#BxV7 zAZ);f<&;IhtulCeGo5>P<5yX_`c%Q6iDZ3T2-NgwoiN%jHNU63ooZl)O-uQ4|H+wlNF?UDwHGvv@onnwpvj zhr@V0o(p&O@9RGf!XMofi^YVl>!j0ZbX~`?EEGk-?RMky`ASW#s+R?Qxc&uvKzA`d ST@O literal 0 HcmV?d00001 From 07f610d10844bbcc6655fcfd717db77f86c091cc Mon Sep 17 00:00:00 2001 From: Markolie Date: Mon, 31 Aug 2015 18:55:50 +0200 Subject: [PATCH 2/5] OOC BYOND member fixes --- code/game/verbs/ooc.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 9fba8920d3a..16131864d3e 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -40,7 +40,7 @@ var/global/normal_ooc_colour = "#002eb8" var/keyname = key if(prefs.unlock_content) if(prefs.toggles & MEMBER_PUBLIC) - keyname = "[keyname]" + keyname = "[keyname]" var/display_colour = normal_ooc_colour if(holder && !holder.fakekey) @@ -54,7 +54,7 @@ var/global/normal_ooc_colour = "#002eb8" display_colour = "#b82e00" //orange if(prefs.unlock_content) - if(display_colour != normal_ooc_colour) + if(display_colour == normal_ooc_colour) if((prefs.toggles & MEMBER_PUBLIC) && prefs.ooccolor) display_colour = prefs.ooccolor @@ -174,7 +174,7 @@ var/global/normal_ooc_colour = "#002eb8" if(!M.client) continue var/client/C = M.client - if(check_rights(R_MOD,0)) + if(check_rights(R_MOD,0,M)) continue //they are handled after that if(C.prefs.toggles & CHAT_LOOC) @@ -192,7 +192,7 @@ var/global/normal_ooc_colour = "#002eb8" display_name = "[S.name]/([S.key])" for(var/client/C in admins) - if(check_rights(R_MOD,0)) + if(check_rights(R_MOD,0,C.mob)) if(C.prefs.toggles & CHAT_LOOC) var/prefix = "(R)LOOC" if (C.mob in heard) From 2416bc5fc8adcf620d5593d9a2011ca4b2590700 Mon Sep 17 00:00:00 2001 From: Markolie Date: Mon, 31 Aug 2015 19:01:47 +0200 Subject: [PATCH 3/5] Do not sanitize admin OOC colors --- code/game/verbs/ooc.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 16131864d3e..3d0c15ac2ae 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -110,7 +110,10 @@ var/global/normal_ooc_colour = "#002eb8" var/new_ooccolor = input(src, "Please select your OOC color.", "OOC color", prefs.ooccolor) as color|null if(new_ooccolor) - prefs.ooccolor = sanitize_ooccolor(new_ooccolor) + if(check_rights(R_ADMIN,0)) // Admins can pick any color + prefs.ooccolor = new_ooccolor + else + prefs.ooccolor = sanitize_ooccolor(new_ooccolor) prefs.save_preferences() feedback_add_details("admin_verb","OC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return From b651eb36ceb83014697c922881e76f5bda37d2ad Mon Sep 17 00:00:00 2001 From: Markolie Date: Mon, 31 Aug 2015 19:56:55 +0200 Subject: [PATCH 4/5] Give members a predefined OOC color --- code/game/verbs/ooc.dm | 56 ++++++++++++++++++------------ code/modules/admin/admin_verbs.dm | 2 ++ code/modules/client/preferences.dm | 2 +- 3 files changed, 37 insertions(+), 23 deletions(-) diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 3d0c15ac2ae..c95afe08b83 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -1,5 +1,8 @@ - var/global/normal_ooc_colour = "#002eb8" +var/global/member_ooc_colour = "#035417" +var/global/mentor_ooc_colour = "#0099cc" +var/global/moderator_ooc_colour = "#184880" +var/global/admin_ooc_colour = "#b82e00" /client/verb/ooc(msg as text) set name = "OOC" //Gave this shit a shorter name so you only have to time out "ooc" rather than "ooc message" to use it --NeoFite @@ -44,19 +47,19 @@ var/global/normal_ooc_colour = "#002eb8" var/display_colour = normal_ooc_colour if(holder && !holder.fakekey) - display_colour = "#0099cc" //light blue + display_colour = mentor_ooc_colour if(check_rights(R_MOD,0) && !check_rights(R_ADMIN,0)) - display_colour = "#184880" //dark blue + display_colour = moderator_ooc_colour else if(check_rights(R_ADMIN,0)) if(config.allow_admin_ooccolor) display_colour = src.prefs.ooccolor else - display_colour = "#b82e00" //orange + display_colour = admin_ooc_colour if(prefs.unlock_content) if(display_colour == normal_ooc_colour) - if((prefs.toggles & MEMBER_PUBLIC) && prefs.ooccolor) - display_colour = prefs.ooccolor + if((prefs.toggles & MEMBER_PUBLIC)) + display_colour = member_ooc_colour for(var/client/C in clients) if(C.prefs.toggles & CHAT_OOC) @@ -85,49 +88,58 @@ var/global/normal_ooc_colour = "#002eb8" /client/proc/set_ooc(newColor as color) set name = "Set Player OOC Colour" - set desc = "Modifies a player's OOC color." + set desc = "Modifies the default player OOC color." set category = "Server" if(!check_rights(R_SERVER)) return + normal_ooc_colour = newColor + message_admins("[key_name_admin(usr)] has set the default player OOC color to [newColor]") + log_admin("[key_name(usr)] has set the default player OOC color to [newColor]") + + feedback_add_details("admin_verb","SOOC") /client/proc/reset_ooc() set name = "Reset Player OOC Color" - set desc = "Returns a player's OOC color to default." + set desc = "Returns the default player OOC color to default." set category = "Server" if(!check_rights(R_SERVER)) return + normal_ooc_colour = initial(normal_ooc_colour) + message_admins("[key_name_admin(usr)] has reset the default player OOC color") + log_admin("[key_name(usr)] has reset the default player OOC color") + feedback_add_details("admin_verb","ROOC") -/client/verb/colorooc() +/client/proc/colorooc() set name = "Set Your OOC Color" + set desc = "Allows you to pick a custom OOC color." set category = "Preferences" - if(!check_rights(R_ADMIN,0)) - if(!is_content_unlocked()) return + if(!check_rights(R_ADMIN)) return var/new_ooccolor = input(src, "Please select your OOC color.", "OOC color", prefs.ooccolor) as color|null if(new_ooccolor) - if(check_rights(R_ADMIN,0)) // Admins can pick any color - prefs.ooccolor = new_ooccolor - else - prefs.ooccolor = sanitize_ooccolor(new_ooccolor) - prefs.save_preferences() + prefs.ooccolor = new_ooccolor + prefs.save_preferences(src) + usr << "Your OOC color has been set to [new_ooccolor]." + feedback_add_details("admin_verb","OC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return -/client/verb/resetcolorooc() +/client/proc/resetcolorooc() set name = "Reset Your OOC Color" - set desc = "Returns your OOC color to default" + set desc = "Returns your OOC color to default." set category = "Preferences" - if(!check_rights(R_ADMIN,0)) - if(!is_content_unlocked()) return + if(!check_rights(R_ADMIN)) return prefs.ooccolor = initial(prefs.ooccolor) - prefs.save_preferences() + prefs.save_preferences(src) + usr << "Your OOC color has been reset." + + feedback_add_details("admin_verb","ROC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/verb/looc(msg as text) set name = "LOOC" //Gave this shit a shorter name so you only have to time out "ooc" rather than "ooc message" to use it --NeoFite diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 4ce29ce8f36..159a5798342 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -16,6 +16,8 @@ var/list/admin_verbs_admin = list( /datum/admins/proc/toggleenter, /*toggles whether people can join the current game*/ /datum/admins/proc/toggleguests, /*toggles whether guests can join the current game*/ /datum/admins/proc/announce, /*priority announce something to all clients.*/ + /client/proc/colorooc, /*allows us to set a custom colour for everything we say in ooc*/ + /client/proc/resetcolorooc, /*allows us to set a reset our ooc color*/ /client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/ /client/proc/toggle_view_range, /*changes how far we can see*/ /datum/admins/proc/view_txt_log, /*shows the server log (diary) for today*/ diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 324c6f0c775..338d57dd616 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -391,7 +391,7 @@ datum/preferences dat += "Adminhelp sound: " dat += "[(sound & SOUND_ADMINHELP)?"On":"Off"]
" - if(unlock_content || check_rights(R_ADMIN,0)) + if(check_rights(R_ADMIN,0)) dat += "OOC:     Change
" if(unlock_content) From a598ea5fed4df5a5931188c6f5f759ebfd31d43b Mon Sep 17 00:00:00 2001 From: Markolie Date: Mon, 31 Aug 2015 20:00:47 +0200 Subject: [PATCH 5/5] Remove obsolete code --- code/game/verbs/ooc.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index c95afe08b83..cd2c6f2854a 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -40,11 +40,6 @@ var/global/admin_ooc_colour = "#b82e00" log_ooc("[mob.name]/[key] : [msg]") - var/keyname = key - if(prefs.unlock_content) - if(prefs.toggles & MEMBER_PUBLIC) - keyname = "[keyname]" - var/display_colour = normal_ooc_colour if(holder && !holder.fakekey) display_colour = mentor_ooc_colour