From 08c176ebbb7d53f13eea3ed7e0642b62b0262caa Mon Sep 17 00:00:00 2001 From: Livi <11909245+Retrograde115@users.noreply.github.com> Date: Sun, 11 Dec 2022 12:26:28 -0800 Subject: [PATCH] Adds IPC plastic surgery (#19554) * Adds IPC plastic surgery * Added gender option * Adds null checks, fixes grammar * Improved code flow * Added adjacency check * Added extra genders, limited surgery to head only * Spans, man * Small tweaks * Changed surgery name for grammar --- code/modules/surgery/robotics.dm | 49 ++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) 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