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
This commit is contained in:
Livi
2022-12-11 12:26:28 -08:00
committed by GitHub
parent 8341c364a8
commit 08c176ebbb
+49
View File
@@ -666,3 +666,52 @@
user.visible_message("<span class='warning'> [user]'s [tool.name] slips, failing to reprogram [target]'s [affected.name].</span>",
"<span class='warning'> Your [tool.name] slips, failing to reprogram [target]'s [affected.name].</span>")
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, "<span class='warning'>Invalid name! Please try again.</span>")
return SURGERY_STEP_INCOMPLETE
else if(!target.Adjacent(user))
to_chat(user, "<span class='warning'>The multitool is out of range! Please try again.</span>")
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, "<span class='warning'>You must choose a gender! Please try again.</span>")
return SURGERY_STEP_INCOMPLETE
else if(!target.Adjacent(user))
to_chat(user, "<span class='warning'>The multitool is out of range! Please try again.</span>")
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(
"<span class='notice'>[user] edits [old_name]'s identity parameters with [tool]; [target.p_they()] [target.p_are()] now known as [new_name].</span>",
"<span class='notice'>You alter [old_name]'s identity parameters with [tool]; [target.p_they()] [target.p_are()] now known as [new_name].</span>"
)
return SURGERY_STEP_CONTINUE