diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 619ba131..ec8afaa4 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -26,7 +26,12 @@ PROCESSING_SUBSYSTEM_DEF(quirks) list("Ananas Affinity","Ananas Aversion"), list("Alcohol Tolerance","Light Drinker"), list("Social Anxiety","Mute"), - list("Prosthetic Limb (Left Arm)","Prosthetic Limb (Right Arm)","Prosthetic Limb (Left Leg)","Prosthetic Limb (Right Leg)","Prosthetic Limb"), + list("Prosthetic Limb","Prosthetic Limb (Left Arm)"), + list("Prosthetic Limb","Prosthetic Limb (Right Arm)"), + list("Prosthetic Limb","Prosthetic Limb (Left Leg)"), + list("Prosthetic Limb","Prosthetic Limb (Right Leg)"), + list("Paraplegic","Prosthetic Limb (Left Leg)"), + list("Paraplegic","Prosthetic Limb (Right Leg)"), list("Fat Affinity","Fat Aversion") ) return ..() diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 4adcd1fa..f3006c37 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -290,36 +290,68 @@ GLOBAL_LIST_EMPTY(family_heirlooms) /datum/quirk/prosthetic_limb/on_spawn() var/mob/living/carbon/human/H = quirk_holder - var/limb_slot - if(HAS_TRAIT(H, TRAIT_PARA))//Prevent paraplegic legs being replaced - limb_slot = pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM) + var/limb_slot = null + + if (specific) + limb_slot = specific else - limb_slot = pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) - if(specific) - limb_slot = specific + if(HAS_TRAIT(H, TRAIT_PARA)) // Prevent paraplegic legs being replaced + limb_slot = pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM) + else + limb_slot = pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) var/obj/item/bodypart/old_part = H.get_bodypart(limb_slot) - var/obj/item/bodypart/prosthetic + var/obj/item/bodypart/prosthetic = null + switch(limb_slot) if(BODY_ZONE_L_ARM) - prosthetic = new/obj/item/bodypart/l_arm/robot/surplus(quirk_holder) slot_string = "left arm" + prosthetic = new/obj/item/bodypart/l_arm/robot/surplus(quirk_holder) if(BODY_ZONE_R_ARM) - prosthetic = new/obj/item/bodypart/r_arm/robot/surplus(quirk_holder) slot_string = "right arm" + prosthetic = new/obj/item/bodypart/r_arm/robot/surplus(quirk_holder) if(BODY_ZONE_L_LEG) - prosthetic = new/obj/item/bodypart/l_leg/robot/surplus(quirk_holder) slot_string = "left leg" + if(!HAS_TRAIT(H, TRAIT_PARA)) // Prevent paraplegic legs being replaced + prosthetic = new/obj/item/bodypart/l_leg/robot/surplus(quirk_holder) if(BODY_ZONE_R_LEG) - prosthetic = new/obj/item/bodypart/r_leg/robot/surplus(quirk_holder) slot_string = "right leg" - prosthetic.replace_limb(H) - qdel(old_part) - H.regenerate_icons() + if(!HAS_TRAIT(H, TRAIT_PARA)) // Prevent paraplegic legs being replaced + prosthetic = new/obj/item/bodypart/r_leg/robot/surplus(quirk_holder) + + if (prosthetic) + prosthetic.replace_limb(H) + qdel(old_part) + H.regenerate_icons() + else + WARNING("Prosthetic ([slot_string]) is incompatible with Paraplegic.") /datum/quirk/prosthetic_limb/post_add() - to_chat(quirk_holder, "Your [slot_string] has been replaced with a surplus prosthetic. It is fragile and will easily come apart under duress. Additionally, \ - you need to use a welding tool and cables to repair it, instead of bruise packs and ointment.") + to_chat(quirk_holder, "\ + Your [slot_string] has been replaced with a surplus prosthetic. \ + It is fragile and will easily come apart under duress. \ + Additionally, you need to use a welding tool and cables to repair it, \ + instead of bruise packs and ointment.") + +/datum/quirk/prosthetic_limb/left_arm + name = "Prosthetic Limb (Left Arm)" + desc = "An accident caused you to lose your left arm. Because of this, it's replaced with a prosthetic!" + specific = BODY_ZONE_L_ARM + +/datum/quirk/prosthetic_limb/right_arm + name = "Prosthetic Limb (Right Arm)" + desc = "An accident caused you to lose your right arm. Because of this, it's replaced with a prosthetic!" + specific = BODY_ZONE_R_ARM + +/datum/quirk/prosthetic_limb/left_leg + name = "Prosthetic Limb (Left Leg)" + desc = "An accident caused you to lose your left leg. Because of this, it's replaced with a prosthetic!" + specific = BODY_ZONE_L_LEG + +/datum/quirk/prosthetic_limb/right_leg + name = "Prosthetic Limb (Right Leg)" + desc = "An accident caused you to lose your right leg. Because of this, it's replaced with a prosthetic!" + specific = BODY_ZONE_R_LEG /datum/quirk/insanity name = "Reality Dissociation Syndrome" @@ -347,26 +379,6 @@ GLOBAL_LIST_EMPTY(family_heirlooms) to_chat(quirk_holder, "Please note that your dissociation syndrome does NOT give you the right to attack people or otherwise cause any interference to \ the round. You are not an antagonist, and the rules will treat you the same as other crewmembers.") -/datum/quirk/prosthetic_limb/left_arm - name = "Prosthetic Limb (Left Arm)" - desc = "An accident caused you to lose your left arm. Because of this, it's replaced with a prosthetic!" - specific = BODY_ZONE_L_ARM - -/datum/quirk/prosthetic_limb/right_arm - name = "Prosthetic Limb (Right Arm)" - desc = "An accident caused you to lose your right arm. Because of this, it's replaced with a prosthetic!" - specific = BODY_ZONE_R_ARM - -/datum/quirk/prosthetic_limb/left_leg - name = "Prosthetic Limb (Left Leg)" - desc = "An accident caused you to lose your left leg. Because of this, it's replaced with a prosthetic!" - specific = BODY_ZONE_L_LEG - -/datum/quirk/prosthetic_limb/right_leg - name = "Prosthetic Limb (Right Leg)" - desc = "An accident caused you to lose your right leg. Because of this, it's replaced with a prosthetic!" - specific = BODY_ZONE_R_LEG - /datum/quirk/social_anxiety name = "Social Anxiety" desc = "Talking to people is very difficult for you, and you often stutter or even lock up."