From e993dffb1759e12c60308a357613ce9ebaa966e8 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Sun, 12 Jun 2016 02:18:00 -0400 Subject: [PATCH] Fixes #1905 *screams forever* This one almost got me. Organs were defined in two places, probably because of a merge error, and /obj/item/organ/external/head/removed() was defined in THREE places. Pls. Why you do this. PLSSSS. --- code/modules/organs/organ_external.dm | 216 +---------------------- code/modules/organs/organ_icon.dm | 4 - code/modules/organs/subtypes/diona.dm | 9 + code/modules/organs/subtypes/standard.dm | 41 ++++- 4 files changed, 45 insertions(+), 225 deletions(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index e177649e4a..a1a31fad7c 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -1105,7 +1105,6 @@ Note that amputating the affected organ does in fact remove the infection from t W.loc = owner /obj/item/organ/external/removed(var/mob/living/user, var/ignore_children = 0) - if(!owner) return var/is_robotic = robotic >= ORGAN_ROBOT @@ -1161,6 +1160,8 @@ Note that amputating the affected organ does in fact remove the infection from t qdel(spark_system) qdel(src) + victim.update_body() + /obj/item/organ/external/proc/disfigure(var/type = "brute") if (disfigured) return @@ -1246,216 +1247,3 @@ Note that amputating the affected organ does in fact remove the infection from t if(6 to INFINITY) flavor_text += "a ton of [wound]\s" return english_list(flavor_text) - -/**************************************************** - ORGAN DEFINES -****************************************************/ - -/obj/item/organ/external/chest - name = "upper body" - organ_tag = BP_TORSO - icon_name = "torso" - max_damage = 100 - min_broken_damage = 35 - w_class = 5 - body_part = UPPER_TORSO - vital = 1 - amputation_point = "spine" - joint = "neck" - dislocated = -1 - gendered_icon = 1 - cannot_amputate = 1 - parent_organ = null - encased = "ribcage" - organ_rel_size = 70 - base_miss_chance = 10 - -/obj/item/organ/external/chest/robotize() - if(..()) - // Give them a new cell. - owner.internal_organs_by_name["cell"] = new /obj/item/organ/internal/cell(owner,1) - -/obj/item/organ/external/groin - name = "lower body" - organ_tag = BP_GROIN - icon_name = "groin" - max_damage = 100 - min_broken_damage = 35 - w_class = 5 - body_part = LOWER_TORSO - vital = 1 - parent_organ = BP_TORSO - amputation_point = "lumbar" - joint = "hip" - dislocated = -1 - gendered_icon = 1 - organ_rel_size = 30 - -/obj/item/organ/external/arm - organ_tag = "l_arm" - name = "left arm" - icon_name = "l_arm" - max_damage = 50 - min_broken_damage = 30 - w_class = 3 - body_part = ARM_LEFT - parent_organ = BP_TORSO - joint = "left elbow" - amputation_point = "left shoulder" - can_grasp = 1 - -/obj/item/organ/external/arm/right - organ_tag = "r_arm" - name = "right arm" - icon_name = "r_arm" - body_part = ARM_RIGHT - joint = "right elbow" - amputation_point = "right shoulder" - -/obj/item/organ/external/leg - organ_tag = "l_leg" - name = "left leg" - icon_name = "l_leg" - max_damage = 50 - min_broken_damage = 30 - w_class = 3 - body_part = LEG_LEFT - icon_position = LEFT - parent_organ = BP_GROIN - joint = "left knee" - amputation_point = "left hip" - can_stand = 1 - -/obj/item/organ/external/leg/right - organ_tag = "r_leg" - name = "right leg" - icon_name = "r_leg" - body_part = LEG_RIGHT - icon_position = RIGHT - joint = "right knee" - amputation_point = "right hip" - -/obj/item/organ/external/foot - organ_tag = "l_foot" - name = "left foot" - icon_name = "l_foot" - min_broken_damage = 15 - w_class = 2 - body_part = FOOT_LEFT - icon_position = LEFT - parent_organ = "l_leg" - joint = "left ankle" - amputation_point = "left ankle" - can_stand = 1 - organ_rel_size = 10 - base_miss_chance = 50 - -/obj/item/organ/external/foot/removed() - if(owner) owner.u_equip(owner.shoes) - ..() - -/obj/item/organ/external/foot/right - organ_tag = "r_foot" - name = "right foot" - icon_name = "r_foot" - body_part = FOOT_RIGHT - icon_position = RIGHT - parent_organ = "r_leg" - joint = "right ankle" - amputation_point = "right ankle" - -/obj/item/organ/external/hand - organ_tag = "l_hand" - name = "left hand" - icon_name = "l_hand" - min_broken_damage = 15 - w_class = 2 - body_part = HAND_LEFT - parent_organ = "l_arm" - joint = "left wrist" - amputation_point = "left wrist" - can_grasp = 1 - organ_rel_size = 10 - base_miss_chance = 50 - -/obj/item/organ/external/hand/removed() - owner.u_equip(owner.gloves) - ..() - -/obj/item/organ/external/hand/right - organ_tag = "r_hand" - name = "right hand" - icon_name = "r_hand" - body_part = HAND_RIGHT - parent_organ = "r_arm" - joint = "right wrist" - amputation_point = "right wrist" - -/obj/item/organ/external/head - organ_tag = BP_HEAD - icon_name = "head" - name = "head" - max_damage = 75 - min_broken_damage = 35 - w_class = 3 - body_part = HEAD - vital = 1 - parent_organ = BP_TORSO - joint = "jaw" - amputation_point = "neck" - gendered_icon = 1 - encased = "skull" - base_miss_chance = 40 - - var/eye_icon = "eyes_s" - -// These organs are important for robotizing at chargen. -/obj/item/organ/external/head/robotize(var/company, var/skip_prosthetics, var/keep_organs) - return ..(company, skip_prosthetics, 1) - -/obj/item/organ/external/head/removed() - if(owner) - name = "[owner.real_name]'s head" - owner.u_equip(owner.glasses) - owner.u_equip(owner.head) - owner.u_equip(owner.l_ear) - owner.u_equip(owner.r_ear) - owner.u_equip(owner.wear_mask) - spawn(1) - owner.update_hair() - ..() - -/obj/item/organ/external/head/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list()) - ..(brute, burn, sharp, edge, used_weapon, forbidden_limbs) - if (!disfigured) - if (brute_dam > 40) - if (prob(50)) - disfigure("brute") - if (burn_dam > 40) - disfigure("burn") - -/obj/item/organ/external/head/skrell - eye_icon = "skrell_eyes_s" - -/obj/item/organ/external/head/seromi - eye_icon = "eyes_seromi" - -/obj/item/organ/external/head/no_eyes - eye_icon = "blank_eyes" - -/obj/item/organ/external/head/no_eyes/diona - max_damage = 50 - min_broken_damage = 25 - cannot_break = 1 - amputation_point = "branch" - joint = "structural ligament" - dislocated = -1 - vital = 0 - -/obj/item/organ/external/head/no_eyes/diona/removed() - var/mob/living/carbon/human/H = owner - ..() - if(!istype(H) || !H.organs || !H.organs.len) - H.death() - if(prob(50) && spawn_diona_nymph(get_turf(src))) - qdel(src) \ No newline at end of file diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index 98cce7efd3..035a0692c3 100644 --- a/code/modules/organs/organ_icon.dm +++ b/code/modules/organs/organ_icon.dm @@ -43,10 +43,6 @@ var/global/list/limb_icon_cache = list() var/obj/item/organ/internal/eyes/eyes = owner.internal_organs_by_name[O_EYES] if(eyes) eyes.update_colour() -/obj/item/organ/external/head/removed() - get_icon() - ..() - /obj/item/organ/external/head/get_icon() ..() diff --git a/code/modules/organs/subtypes/diona.dm b/code/modules/organs/subtypes/diona.dm index 344ba2f05a..ab5c436758 100644 --- a/code/modules/organs/subtypes/diona.dm +++ b/code/modules/organs/subtypes/diona.dm @@ -198,3 +198,12 @@ /obj/item/organ/internal/diona/node/removed() return + +/obj/item/organ/external/head/no_eyes/diona + max_damage = 50 + min_broken_damage = 25 + cannot_break = 1 + amputation_point = "branch" + joint = "structural ligament" + dislocated = -1 + vital = 0 \ No newline at end of file diff --git a/code/modules/organs/subtypes/standard.dm b/code/modules/organs/subtypes/standard.dm index ffc337824d..36fc7ba677 100644 --- a/code/modules/organs/subtypes/standard.dm +++ b/code/modules/organs/subtypes/standard.dm @@ -18,6 +18,13 @@ cannot_amputate = 1 parent_organ = null encased = "ribcage" + organ_rel_size = 70 + base_miss_chance = 10 + +/obj/item/organ/external/chest/robotize() + if(..()) + // Give them a new cell. + owner.internal_organs_by_name["cell"] = new /obj/item/organ/internal/cell(owner,1) /obj/item/organ/external/groin name = "lower body" @@ -33,6 +40,7 @@ joint = "hip" dislocated = -1 gendered_icon = 1 + organ_rel_size = 30 /obj/item/organ/external/arm organ_tag = "l_arm" @@ -93,7 +101,8 @@ can_stand = 1 /obj/item/organ/external/foot/removed() - if(owner) owner.u_equip(owner.shoes) + if(owner) + owner.drop_from_inventory(owner.shoes) ..() /obj/item/organ/external/foot/right @@ -118,9 +127,12 @@ joint = "left wrist" amputation_point = "left wrist" can_grasp = 1 + organ_rel_size = 10 + base_miss_chance = 50 /obj/item/organ/external/hand/removed() - owner.u_equip(owner.gloves) + if(owner) + owner.drop_from_inventory(owner.gloves) ..() /obj/item/organ/external/hand/right @@ -147,18 +159,24 @@ gendered_icon = 1 cannot_gib = 1 encased = "skull" + base_miss_chance = 40 var/can_intake_reagents = 1 + var/eye_icon = "eyes_s" + +/obj/item/organ/external/head/robotize(var/company, var/skip_prosthetics, var/keep_organs) + return ..(company, skip_prosthetics, 1) /obj/item/organ/external/head/removed() if(owner) name = "[owner.real_name]'s head" - owner.u_equip(owner.glasses) - owner.u_equip(owner.head) - owner.u_equip(owner.l_ear) - owner.u_equip(owner.r_ear) - owner.u_equip(owner.wear_mask) + owner.drop_from_inventory(owner.glasses) + owner.drop_from_inventory(owner.head) + owner.drop_from_inventory(owner.l_ear) + owner.drop_from_inventory(owner.r_ear) + owner.drop_from_inventory(owner.wear_mask) spawn(1) owner.update_hair() + get_icon() ..() /obj/item/organ/external/head/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list()) @@ -169,3 +187,12 @@ disfigure("brute") if (burn_dam > 40) disfigure("burn") + +/obj/item/organ/external/head/skrell + eye_icon = "skrell_eyes_s" + +/obj/item/organ/external/head/seromi + eye_icon = "eyes_seromi" + +/obj/item/organ/external/head/no_eyes + eye_icon = "blank_eyes"