diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm
index 5fa1c2e587a..f8f9609aced 100644
--- a/code/__DEFINES/preferences.dm
+++ b/code/__DEFINES/preferences.dm
@@ -27,6 +27,7 @@
#define DONATOR_PUBLIC 32768
#define CHAT_NO_TICKETLOGS 65536
#define UI_DARKMODE 131072
+#define DISABLE_KARMA 262144
#define TOGGLES_DEFAULT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_LOOC|MEMBER_PUBLIC|DONATOR_PUBLIC)
@@ -53,4 +54,4 @@
#define EXP_TYPE_SERVICE "Service"
#define EXP_TYPE_WHITELIST "Whitelist"
-#define EXP_DEPT_TYPE_LIST list(EXP_TYPE_SERVICE, EXP_TYPE_MEDICAL, EXP_TYPE_ENGINEERING, EXP_TYPE_SCIENCE, EXP_TYPE_SECURITY, EXP_TYPE_COMMAND, EXP_TYPE_SILICON, EXP_TYPE_SPECIAL)
\ No newline at end of file
+#define EXP_DEPT_TYPE_LIST list(EXP_TYPE_SERVICE, EXP_TYPE_MEDICAL, EXP_TYPE_ENGINEERING, EXP_TYPE_SCIENCE, EXP_TYPE_SECURITY, EXP_TYPE_COMMAND, EXP_TYPE_SILICON, EXP_TYPE_SPECIAL)
diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm
index 99dfdee8dbf..dffa321da4b 100644
--- a/code/modules/client/client procs.dm
+++ b/code/modules/client/client procs.dm
@@ -379,7 +379,10 @@
if(establish_db_connection())
to_chat(src, "Changelog has changed since your last visit.")
update_changelog_button()
-
+
+ if(prefs.toggles & DISABLE_KARMA) // activates if karma is disabled
+ if(establish_db_connection())
+ to_chat(src,"You have disabled karma gains.") // reminds those who have it disabled
if(!void)
void = new()
@@ -670,7 +673,7 @@
/client/proc/on_varedit()
var_edited = TRUE
-
+
/////////////////
// DARKMODE UI //
/////////////////
@@ -707,7 +710,7 @@
/* Infowindow */
winset(src, "infowindow", "background-color=#272727;text-color=#FFFFFF")
winset(src, "infowindow.info", "background-color=#272727;text-color=#FFFFFF;highlight-color=#009900;tab-text-color=#FFFFFF;tab-background-color=#272727")
- // NOTIFY USER
+ // NOTIFY USER
to_chat(src, "Darkmode Enabled")
/client/proc/deactivate_darkmode()
@@ -748,15 +751,15 @@
// Better changelog button handling
/client/proc/update_changelog_button()
if(establish_db_connection())
- if(prefs.lastchangelog != changelog_hash)
+ if(prefs.lastchangelog != changelog_hash)
winset(src, "rpane.changelog", "background-color=#bb7700;text-color=#FFFFFF;font-style=bold")
else
- if(prefs.toggles & UI_DARKMODE)
+ if(prefs.toggles & UI_DARKMODE)
winset(src, "rpane.changelog", "background-color=#40628a;text-color=#FFFFFF")
else
winset(src, "rpane.changelog", "background-color=none;text-color=#000000")
else
- if(prefs.toggles & UI_DARKMODE)
+ if(prefs.toggles & UI_DARKMODE)
winset(src, "rpane.changelog", "background-color=#40628a;text-color=#FFFFFF")
else
winset(src, "rpane.changelog", "background-color=none;text-color=#000000")
diff --git a/code/modules/client/preference/preferences_mysql.dm b/code/modules/client/preference/preferences_mysql.dm
index 9a75c5a8bb9..6800a63f669 100644
--- a/code/modules/client/preference/preferences_mysql.dm
+++ b/code/modules/client/preference/preferences_mysql.dm
@@ -55,7 +55,7 @@
ooccolor = sanitize_hexcolor(ooccolor, initial(ooccolor))
UI_style = sanitize_inlist(UI_style, list("White", "Midnight"), initial(UI_style))
default_slot = sanitize_integer(default_slot, 1, max_save_slots, initial(default_slot))
- toggles = sanitize_integer(toggles, 0, 262143, initial(toggles))
+ toggles = sanitize_integer(toggles, 0, 524287, initial(toggles))
sound = sanitize_integer(sound, 0, 65535, initial(sound))
UI_style_color = sanitize_hexcolor(UI_style_color, initial(UI_style_color))
UI_style_alpha = sanitize_integer(UI_style_alpha, 0, 255, initial(UI_style_alpha))
diff --git a/code/modules/client/preference/preferences_toggles.dm b/code/modules/client/preference/preferences_toggles.dm
index 7d3994681b9..307f018f73c 100644
--- a/code/modules/client/preference/preferences_toggles.dm
+++ b/code/modules/client/preference/preferences_toggles.dm
@@ -218,4 +218,16 @@
activate_darkmode()
else
deactivate_darkmode()
- feedback_add_details("admin_verb","TDarkmode") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
\ No newline at end of file
+ feedback_add_details("admin_verb","TDarkmode") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+
+/client/verb/toggle_karma()
+ set name = "Toggle Karma Gains"
+ set category = "Special Verbs"
+ set desc = "This button will allow you to stop other people giving you karma."
+ if (prefs.toggles & DISABLE_KARMA)
+ to_chat(usr, "You have disabled karma gains.")
+ else
+ to_chat(usr, "You have enabled karma gains.")
+ prefs.toggles ^= DISABLE_KARMA
+ prefs.save_preferences(src)
+ return
diff --git a/code/modules/karma/karma.dm b/code/modules/karma/karma.dm
index d148276d4d6..107ec3c4f3f 100644
--- a/code/modules/karma/karma.dm
+++ b/code/modules/karma/karma.dm
@@ -85,6 +85,9 @@ var/list/karma_spenders = list()
log_game("Illegal karma spending attempt detected from [key] to [M.key]. Using the same IP!")
to_chat(src, "You can't spend karma on someone connected from the same IP.")
return FALSE
+ if(M.get_preference(DISABLE_KARMA))
+ to_chat(src, "That player has turned off incoming karma.")
+ return FALSE
return TRUE