diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index 384965149af..5f3c0947541 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -304,28 +304,32 @@ update_label("John Doe", "Clowny")
var/obj/item/card/id/I = O
src.access |= I.access
if(isliving(user) && user.mind)
- if(user.mind.special_role)
+ if(user.mind.special_role || anyone)
to_chat(usr, "The card's microscanners activate as you pass it over the ID, copying its access.")
/obj/item/card/id/syndicate/attack_self(mob/user)
if(isliving(user) && user.mind)
- if(user.mind.special_role || anyone)
- if(alert(user, "Action", "Agent ID", "Show", "Forge") == "Forge")
- var/t = copytext(sanitize(input(user, "What name would you like to put on this card?", "Agent card name", registered_name ? registered_name : (ishuman(user) ? user.real_name : user.name))as text | null),1,26)
- if(!t || t == "Unknown" || t == "floor" || t == "wall" || t == "r-wall") //Same as mob/dead/new_player/prefrences.dm
- if (t)
- alert("Invalid name.")
- return
- registered_name = t
-
- var/u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")as text | null),1,MAX_MESSAGE_LEN)
- if(!u)
- registered_name = ""
- return
- assignment = u
- update_label()
- to_chat(user, "You successfully forge the ID card.")
+ if(!(user.mind.special_role || anyone)) //Unless anyone is allowed, only syndies can use the card, to stop metagaming.
+ if(!registered_name) //If a non-syndie is the first to forge an unassigned agent ID, then anyone can forge it.
+ anyone = TRUE
+ else
return
+ if(alert(user, "Action", "Agent ID", "Show", "Forge") == "Forge")
+ var/t = copytext(sanitize(input(user, "What name would you like to put on this card?", "Agent card name", registered_name ? registered_name : (ishuman(user) ? user.real_name : user.name))as text | null),1,26)
+ if(!t || t == "Unknown" || t == "floor" || t == "wall" || t == "r-wall") //Same as mob/dead/new_player/prefrences.dm
+ if (t)
+ alert("Invalid name.")
+ return
+ registered_name = t
+
+ var/u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")as text | null),1,MAX_MESSAGE_LEN)
+ if(!u)
+ registered_name = ""
+ return
+ assignment = u
+ update_label()
+ to_chat(user, "You successfully forge the ID card.")
+ return
..()
/obj/item/card/id/syndicate/anyone