diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm
index 2017fb294f0..cf19adbd0e6 100644
--- a/code/game/objects/items/weapons/implants/implant.dm
+++ b/code/game/objects/items/weapons/implants/implant.dm
@@ -160,7 +160,9 @@
* -1 if the implant fails to inject
* 0 if there's no room for the implant.
*/
-/obj/item/implant/proc/implant(mob/source, mob/user)
+/obj/item/implant/proc/implant(mob/source, mob/user, force)
+ if(!force && !can_implant(source, user))
+ return
var/obj/item/implant/imp_e = locate(type) in source
if(!allow_multiple && imp_e && imp_e != src)
if(imp_e.uses < initial(imp_e.uses)*2)
@@ -200,6 +202,19 @@
return 1
+/**
+ * Check that we can actually implant this before implanting it
+ * * source - The person being implanted
+ * * user - The person doing the implanting
+ *
+ * Returns
+ * TRUE - I could care less, implant it, maybe don't. I don't care.
+ * FALSE - Don't implant!
+ */
+/obj/item/implant/proc/can_implant(mob/source, mob/user)
+ return TRUE
+
+
/**
* Clean up when an implant is removed.
* * source - the user who the implant was removed from.
diff --git a/code/game/objects/items/weapons/implants/implant_mindshield.dm b/code/game/objects/items/weapons/implants/implant_mindshield.dm
index a2b8fea7055..9ca982c5074 100644
--- a/code/game/objects/items/weapons/implants/implant_mindshield.dm
+++ b/code/game/objects/items/weapons/implants/implant_mindshield.dm
@@ -6,6 +6,13 @@
implant_data = /datum/implant_fluff/mindshield
implant_state = "implant-nanotrasen"
+/obj/item/implant/mindshield/can_implant(mob/source, mob/user)
+ if(source.mind in SSticker.mode.head_revolutionaries)
+ source.visible_message("[source] seems to resist [src]!",
+ "You feel something interfering with your mental conditioning, but you resist it!")
+ return FALSE
+ return ..()
+
/obj/item/implant/mindshield/implant(mob/target)
if(!..())
return FALSE