diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index 0b4a0a45c51..f1c7722dd53 100644
--- a/code/game/objects/items/weapons/cards_ids.dm
+++ b/code/game/objects/items/weapons/cards_ids.dm
@@ -141,26 +141,26 @@ update_label("John Doe", "Clowny")
if(user.mind.special_role)
usr << "The card's microscanners activate as you pass it over the ID, copying its access."
-
/obj/item/weapon/card/id/syndicate/attack_self(mob/user)
- if(!src.registered_name)
- //Stop giving the players unsanitized unputs! You are giving ways for players to intentionally crash clients! -Nodrak
- var t = copytext(sanitize(input(user, "What name would you like to put on this card?", "Agent card 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/new_player/prefrences.dm
- if (t)
- alert("Invalid name.")
- return
- src.registered_name = t
+ if(istype(user, /mob/living) && user.mind)
+ if(user.mind.special_role)
+ 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/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)
- src.registered_name = ""
- return
- src.assignment = u
- update_label()
- user << "You successfully forge the ID card."
- else
- ..()
+ 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()
+ user << "You successfully forge the ID card."
+ return
+ ..()
/obj/item/weapon/card/id/syndicate_command
name = "syndicate ID card"
diff --git a/html/changelogs/xxalpha-rw_agent.yml b/html/changelogs/xxalpha-rw_agent.yml
new file mode 100644
index 00000000000..878e309d2e5
--- /dev/null
+++ b/html/changelogs/xxalpha-rw_agent.yml
@@ -0,0 +1,6 @@
+author: xxalpha
+
+delete-after: True
+
+changes:
+ - tweak: "Agent IDs are now rewrittable."