diff --git a/code/modules/mob/living/carbon/shock.dm b/code/modules/mob/living/carbon/shock.dm index fea6ef34abc..f091199f3b5 100644 --- a/code/modules/mob/living/carbon/shock.dm +++ b/code/modules/mob/living/carbon/shock.dm @@ -22,7 +22,7 @@ var/mob/living/carbon/human/M = src for(var/name in M.organs) var/datum/organ/external/organ = M.organs[name] - if(organ.status & DESTROYED) + if((organ.status & DESTROYED) && !organ.amputated) src.traumatic_shock += 60 else if(organ.status & BROKEN || organ.open) src.traumatic_shock += 30 diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm index 78ec74c0d32..2b4060e7dd4 100644 --- a/code/modules/mob/new_player/preferences.dm +++ b/code/modules/mob/new_player/preferences.dm @@ -1223,6 +1223,7 @@ datum/preferences var/status = organ_data[name] if(status == "amputated") + O.amputated = 1 O.status |= DESTROYED O.destspawn = 1 else if(status == "cyborg") diff --git a/code/modules/mob/organ/organ.dm b/code/modules/mob/organ/organ.dm index 655a828750b..8e04949b1d1 100644 --- a/code/modules/mob/organ/organ.dm +++ b/code/modules/mob/organ/organ.dm @@ -97,6 +97,7 @@ var/list/wound_progressions = list( var/tmp/perma_injury = 0 var/tmp/perma_dmg = 0 var/tmp/destspawn = 0 //Has it spawned the broken limb? + var/tmp/amputated = 0 // Whether this has been cleanly amputated, thus causing no pain var/min_broken_damage = 30 var/datum/organ/external/parent diff --git a/code/modules/mob/organ/pain.dm b/code/modules/mob/organ/pain.dm index 3213b26ffae..456a94086f7 100644 --- a/code/modules/mob/organ/pain.dm +++ b/code/modules/mob/organ/pain.dm @@ -55,6 +55,9 @@ mob/living/carbon/human/proc/handle_pain() var/datum/organ/external/damaged_organ = null for(var/name in organs) var/datum/organ/external/E = organs[name] + // amputated limbs don't cause pain + if(E.amputated) continue + var/dam = E.get_damage() // make the choice of the organ depend on damage, // but also sometimes use one of the less damaged ones