From 4f30a0461854346f36a8cec70da2b52590890a76 Mon Sep 17 00:00:00 2001 From: Gary Lafortune Date: Tue, 11 Jun 2019 12:04:15 -0500 Subject: [PATCH] Fixes potential exploit with mood quirks Hypothetically, the player could've turned on mood, added a bunch of negative mood quirks, and then disabled it, allowing them to have what are basically free points. This fixes that. --- code/controllers/subsystem/processing/quirks.dm | 1 + yogstation.dme | 1 + .../code/controllers/subsystem/processing/quirks.dm | 9 +++++++++ 3 files changed, 11 insertions(+) create mode 100644 yogstation/code/controllers/subsystem/processing/quirks.dm diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index bf003d0d470c..95cf8ebfa4c7 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -30,6 +30,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks) quirk_points[initial(T.name)] = initial(T.value) /datum/controller/subsystem/processing/quirks/proc/AssignQuirks(mob/living/user, client/cli, spawn_effects) + if(!checkquirks(cli)) return// Yogs -- part of Adding Mood as Preference for(var/V in cli.prefs.all_quirks) var/datum/quirk/Q = quirks[V] if(Q) diff --git a/yogstation.dme b/yogstation.dme index 7187b9116563..801da1a6f326 100644 --- a/yogstation.dme +++ b/yogstation.dme @@ -2856,6 +2856,7 @@ #include "yogstation\code\controllers\subsystem\research.dm" #include "yogstation\code\controllers\subsystem\ticker.dm" #include "yogstation\code\controllers\subsystem\yogs.dm" +#include "yogstation\code\controllers\subsystem\processing\quirks.dm" #include "yogstation\code\datums\action.dm" #include "yogstation\code\datums\mind.dm" #include "yogstation\code\datums\mutations.dm" diff --git a/yogstation/code/controllers/subsystem/processing/quirks.dm b/yogstation/code/controllers/subsystem/processing/quirks.dm new file mode 100644 index 000000000000..990f6472c055 --- /dev/null +++ b/yogstation/code/controllers/subsystem/processing/quirks.dm @@ -0,0 +1,9 @@ +/datum/controller/subsystem/processing/quirks/proc/checkquirks(client/cli) // Returns true when the player isn't trying to fuckin scum the mood pref stuff to exploit + for(var/V in cli.prefs.all_quirks) + var/datum/quirk/Q = quirks[V] + if(Q) + if(initial(Q.mood_quirk) && CONFIG_GET(flag/disable_human_mood) && !(cli.prefs.toggles & PREF_MOOD)) + to_chat(src,"You cannot have the quirk '[V]' with mood disabled! You shall receive no quirks this round.") + message_admins("[key_name(cli)] just tried to exploit the mood pref system to get bonus points for their quirks.") + return FALSE + return TRUE