diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm
index 0c05afb155..187ca66705 100644
--- a/code/modules/antagonists/_common/antag_datum.dm
+++ b/code/modules/antagonists/_common/antag_datum.dm
@@ -120,15 +120,16 @@ GLOBAL_LIST_EMPTY(antagonists)
SEND_SIGNAL(owner.current, COMSIG_CLEAR_MOOD_EVENT, "antag_moodlet")
/datum/antagonist/proc/remove_blacklisted_quirks()
- var/mob/living/L = owner
+ var/mob/living/L = owner.current
if(istype(L))
- var/list/cut = list()
- cut = SSquirks.filter_quirks(L.roundstart_quirks,blacklisted_quirks)
- for(var/q in cut)
+ var/list/my_quirks = L.client?.prefs.all_quirks.Copy()
+ SSquirks.filter_quirks(my_quirks,blacklisted_quirks)
+ for(var/q in L.roundstart_quirks)
var/datum/quirk/Q = q
- if(Q.antag_removal_text)
- to_chat(L, "[Q.antag_removal_text]")
- L.remove_quirk(Q.type)
+ if(!(SSquirks.quirk_name_by_path(Q.type) in my_quirks))
+ if(initial(Q.antag_removal_text))
+ to_chat(L, "[initial(Q.antag_removal_text)]")
+ L.remove_quirk(Q.type)
//Returns the team antagonist belongs to if any.
/datum/antagonist/proc/get_team()