diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index b5fc2673286..96ea1ab720c 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -314,8 +314,8 @@ emp_act forcesay(hit_appends) //forcesay checks stat already if (I.damtype == BRUTE) - if((I.edge && prob(2 * I.force)) || (I.force > 20 && prob(I.force))) - if(affecting.brute_dam >= affecting.max_damage * config.organ_health_multiplier) + if((affecting.brute_dam + I.force) >= affecting.max_damage * config.organ_health_multiplier) + if(I.edge && prob(I.force)) affecting.dismember_limb() /* //Melee weapon embedded object code. Commented out, as most people on the forums seem to find this annoying and think it does not contribute to general gameplay. - Dave diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 6eb7897b10e..a039a53edc6 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -567,7 +567,7 @@ Note that amputating the affected organ does in fact remove the infection from t O.setAmputatedTree() //Handles dismemberment -/datum/organ/external/proc/droplimb(var/override = 0,var/no_explode = 0, var/spawn_limb=0) +/datum/organ/external/proc/droplimb(var/override = 0,var/no_explode = 0,var/amputation=0, var/spawn_limb=0) if(destspawn) return if(override) status |= ORGAN_DESTROYED @@ -585,9 +585,13 @@ Note that amputating the affected organ does in fact remove the infection from t germ_level = 0 + // If any organs are attached to this, destroy them + for(var/datum/organ/external/O in children) + O.droplimb(1, no_explode, amputation) + //Replace all wounds on that arm with one wound on parent organ. wounds.Cut() - if (parent) + if (parent && !amputation) var/datum/wound/W if(max_damage < 50) W = new/datum/wound/lost_limb/small(max_damage) @@ -597,10 +601,6 @@ Note that amputating the affected organ does in fact remove the infection from t parent.update_damages() update_damages() - // If any organs are attached to this, destroy them - for(var/datum/organ/external/O in children) - O.droplimb(1) - var/obj/organ //Dropped limb object switch(body_part) diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index 7abb4864413..17b926ae99a 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -216,7 +216,7 @@ var/datum/organ/external/affected = target.get_organ(target_zone) user.visible_message("\blue [user] cuts off [target]'s [affected.display_name] with \the [tool].", \ "\blue You cut off [target]'s [affected.display_name] with \the [tool].") - affected.droplimb(1,0) + affected.droplimb(1,1,1) fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone)