fixes a few issues with derobotizing

This commit is contained in:
Seris02
2023-02-21 11:44:55 +08:00
parent 14a10960b7
commit b267325adf
2 changed files with 23 additions and 0 deletions
@@ -346,6 +346,27 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
// Destroy/cyborgize organs and limbs.
character.synthetic = null //Clear the existing var.
var/list/to_unamputate = list()
for(var/name in list(BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG))
var/status = pref.organ_data[name]
var/obj/item/organ/external/O = character.organs_by_name[name]
if (!O)
if (status != "amputated")
var/is_robotic = pref.organ_data[BP_TORSO] == "cyborg"
var/obj/item/organ/external/newpath = character.species?.has_limbs[name]?["path"]
if (!newpath)
continue
var/parent_name = initial(newpath.parent_organ)
var/obj/item/organ/external/I = character.organs_by_name[parent_name]
if (!I && pref.organ_data[parent_name] != "amputated")
to_unamputate[parent_name] = list("path" = character.species.has_limbs[parent_name]?["path"], "robotic" = is_robotic, "model" = pref.rlimb_data[BP_TORSO])
is_robotic ||= I?.robotic
to_unamputate[name] = list("path" = newpath, "robotic" = is_robotic, "model" = pref.rlimb_data[parent_name]||pref.rlimb_data[BP_TORSO])
for(var/name in to_unamputate)
var/newpath = to_unamputate[name]["path"]
var/obj/item/organ/external/s = new newpath(character)
if (to_unamputate[name]["robotic"])
s.robotize(to_unamputate[name]["model"])
for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO))
var/status = pref.organ_data[name]
var/obj/item/organ/external/O = character.organs_by_name[name]