/datum/surgery/limb_augmentation
name = "Augment Limb"
steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/augment)
possible_locs = list("head", "chest","l_arm","r_arm","r_leg","l_leg")
/datum/surgery/limb_augmentation/can_start(mob/user, mob/living/carbon/target)
if(ishuman(target))
var/mob/living/carbon/human/H = target
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
if(!affected)
return 0
if(affected.status & ORGAN_BROKEN) //The arm has to be in prime condition to augment it.
return 0
if(affected.is_robotic())
return 0
return 1
/datum/surgery_step/augment
name = "augment limb with robotic part"
allowed_tools = list(/obj/item/robot_parts = 100)
time = 32
/datum/surgery_step/augment/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/robot_parts/p = tool
if(p.part)
if(!(target_zone in p.part))
to_chat(user, "[tool] cannot be used to augment this limb!")
return 0
return 1
/datum/surgery_step/augment/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message("[user] starts augmenting [affected] with [tool].", "You start augmenting [affected] with [tool].")
/datum/surgery_step/augment/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/robot_parts/L = tool
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message("[user] has finished augmenting [affected] with [tool].", \
"You augment [affected] with [tool].")
if(L.part)
for(var/part_name in L.part)
if(!target.get_organ(part_name))
continue
affected.robotize(L.model_info, make_tough = 1, convert_all = 0)
if(L.sabotaged)
affected.sabotaged = 1
break
target.update_body()
target.updatehealth()
target.UpdateDamageIcon()
qdel(tool)
affected.open = 0
affected.germ_level = 0
return 1