diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm index 083b17f8096..49cbc7c67ec 100644 --- a/code/modules/surgery/robotics.dm +++ b/code/modules/surgery/robotics.dm @@ -666,3 +666,52 @@ user.visible_message(" [user]'s [tool.name] slips, failing to reprogram [target]'s [affected.name].", " Your [tool.name] slips, failing to reprogram [target]'s [affected.name].") return SURGERY_STEP_RETRY + +/datum/surgery/robotics/reconfigure_id + name = "Identity Reconfiguration" + steps = list( + /datum/surgery_step/robotics/external/unscrew_hatch, + /datum/surgery_step/robotics/external/open_hatch, + /datum/surgery_step/robotics/edit_serial, + /datum/surgery_step/robotics/external/close_hatch + ) + possible_locs = list(BODY_ZONE_HEAD) + +/datum/surgery_step/robotics/edit_serial + name = "edit serial number" + allowed_tools = list(TOOL_MULTITOOL = 100) + time = 4.8 SECONDS + +/datum/surgery_step/robotics/edit_serial/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message( + "[user] begins to edit [target]'s identity parameters with [tool].", + "You begin to alter [target]'s identity parameters with [tool]." + ) + return ..() + +/datum/surgery_step/robotics/edit_serial/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) + + var/new_name = copytext(reject_bad_text(input(user, "Choose a name for this machine.", "Set Name", "[target.real_name]") as null|text), 1, MAX_NAME_LEN) + if(!new_name) + to_chat(user, "Invalid name! Please try again.") + return SURGERY_STEP_INCOMPLETE + else if(!target.Adjacent(user)) + to_chat(user, "The multitool is out of range! Please try again.") + return SURGERY_STEP_INCOMPLETE + var/static/list/gender_list = list("Male" = MALE, "Female" = FEMALE, "Genderless" = PLURAL, "Object" = NEUTER) + var/gender_key = input(user, "Choose a gender for this machine.", "Select Gender", target.gender) as null|anything in gender_list + if(!gender_key) + to_chat(user, "You must choose a gender! Please try again.") + return SURGERY_STEP_INCOMPLETE + else if(!target.Adjacent(user)) + to_chat(user, "The multitool is out of range! Please try again.") + return SURGERY_STEP_INCOMPLETE + var/new_gender = gender_list[gender_key] + var/old_name = target.real_name + target.real_name = new_name + target.gender = new_gender + user.visible_message( + "[user] edits [old_name]'s identity parameters with [tool]; [target.p_they()] [target.p_are()] now known as [new_name].", + "You alter [old_name]'s identity parameters with [tool]; [target.p_they()] [target.p_are()] now known as [new_name]." + ) + return SURGERY_STEP_CONTINUE