From ece48ae0c477b6a5d2552995d52995153abe86e6 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Tue, 24 Jun 2014 04:09:35 +0400 Subject: [PATCH] Moved same code into single organ helper to handle embedding. --- .../mob/living/carbon/human/human_damage.dm | 18 +++++------------- .../mob/living/carbon/human/human_defense.dm | 10 +++------- code/modules/organs/organ_external.dm | 13 +++++++++++++ .../reagents/reagent_containers/food/snacks.dm | 7 ++----- 4 files changed, 23 insertions(+), 25 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 0688f13428b..086b0989999 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -65,13 +65,13 @@ if (organ_name in organs_by_name) var/datum/organ/external/O = get_organ(organ_name) - + if(amount > 0) O.take_damage(amount, 0, sharp=is_sharp(damage_source), edge=has_edge(damage_source), used_weapon=damage_source) else //if you don't want to heal robot organs, they you will have to check that yourself before using this proc. O.heal_damage(-amount, 0, internal=0, robo_repair=(O.status & ORGAN_ROBOT)) - + hud_updateflag |= 1 << HEALTH_HUD /mob/living/carbon/human/proc/adjustFireLossByPart(var/amount, var/organ_name, var/obj/damage_source = null) @@ -80,13 +80,13 @@ if (organ_name in organs_by_name) var/datum/organ/external/O = get_organ(organ_name) - + if(amount > 0) O.take_damage(0, amount, sharp=is_sharp(damage_source), edge=has_edge(damage_source), used_weapon=damage_source) else //if you don't want to heal robot organs, they you will have to check that yourself before using this proc. O.heal_damage(0, -amount, internal=0, robo_repair=(O.status & ORGAN_ROBOT)) - + hud_updateflag |= 1 << HEALTH_HUD /mob/living/carbon/human/Stun(amount) @@ -302,14 +302,6 @@ This function restores all organs. if(istype(used_weapon,/obj/item/weapon)) var/obj/item/weapon/W = used_weapon //Sharp objects will always embed if they do enough damage. if( (damage > (10*W.w_class)) && ( (sharp && !ismob(W.loc)) || prob(damage/W.w_class) ) ) - organ.implants += W - visible_message("\The [W] sticks in the wound!") - embedded_flag = 1 - src.verbs += /mob/proc/yank_out_object - W.add_blood(src) - if(ismob(W.loc)) - var/mob/living/H = W.loc - H.drop_item() - W.loc = src + organ.embed(W) return 1 diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index a98955d0c82..baa1ebb1454 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -98,11 +98,7 @@ emp_act (SP.name) = "[P.name] shrapnel" (SP.desc) = "[SP.desc] It looks like it was fired from [P.shot_from]." (SP.loc) = organ - organ.implants += SP - visible_message("The projectile sticks in the wound!") - embedded_flag = 1 - src.verbs += /mob/proc/yank_out_object - SP.add_blood(src) + organ.embed(SP) return (..(P , def_zone)) @@ -236,7 +232,7 @@ emp_act if ((weapon_sharp || weapon_edge) && prob(getarmor(def_zone, "melee"))) weapon_sharp = 0 weapon_edge = 0 - + if(armor >= 2) return 0 if(!I.force) return 0 @@ -314,4 +310,4 @@ emp_act var/obj/item/clothing/suit/space/SS = wear_suit var/penetrated_dam = max(0,(damage - max(0,(SS.breach_threshold - SS.damage)))) - if(penetrated_dam) SS.create_breaches(damtype, penetrated_dam) + if(penetrated_dam) SS.create_breaches(damtype, penetrated_dam) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index c51d5167157..08d43663838 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -703,6 +703,19 @@ This function completely restores a damaged organ to perfect condition. /datum/organ/external/proc/is_usable() return !(status & (ORGAN_DESTROYED|ORGAN_MUTATED|ORGAN_DEAD)) +/datum/organ/external/proc/embed(var/obj/item/weapon/W, var/silent = 0) + if(!silent) + owner.visible_message("\The [W] sticks in the wound!") + implants += W + owner.embedded_flag = 1 + owner.verbs += /mob/proc/yank_out_object + W.add_blood(owner) + if(ismob(W.loc)) + var/mob/living/H = W.loc + H.drop_item() + W.loc = owner + + /**************************************************** ORGAN DEFINES ****************************************************/ diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 61bc3591082..6868e8fcdc1 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -1569,7 +1569,7 @@ surprise.icon_state = "skrellkey1" specie = "neaera" surprise.name = "malformed [specie]" - surprise.desc = "Looks like \a very deformed [specie], a little small for its kind." + surprise.desc = "Looks like \a very deformed [specie], a little small for its kind. It shows no signs of life." surprise.transform *= 0.6 surprise.add_blood(M) @@ -1585,10 +1585,7 @@ E.cavity = 0 else //someone is having a bad day E.createwound(CUT, 30) - E.implants += surprise - H.visible_message("Something that looks like \a [surprise] sticks out of a wound!") - H.embedded_flag = 1 - H.verbs += /mob/proc/yank_out_object + E.embed(surprise) else if (ismonkey(M)) M.visible_message("[M] suddenly tears in half!") surprise.loc = M.loc