diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 171080fb32..98d56d3d23 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -114,6 +114,10 @@ var/list/gamemode_cache = list() var/organ_health_multiplier = 1 var/organ_regeneration_multiplier = 1 + + //Paincrit knocks someone down once they hit 60 shock_stage, so by default make it so that close to 100 additional damage needs to be dealt, + //so that it's similar to HALLOSS. Lowered it a bit since hitting paincrit takes much longer to wear off than a halloss stun. + var/organ_damage_spillover_multiplier = 0.5 var/bones_can_break = 0 var/limbs_can_break = 0 @@ -670,6 +674,8 @@ var/list/gamemode_cache = list() config.organ_health_multiplier = value / 100 if("organ_regeneration_multiplier") config.organ_regeneration_multiplier = value / 100 + if("organ_damage_spillover_multiplier") + config.organ_damage_spillover_multiplier = value / 100 if("bones_can_break") config.bones_can_break = value if("limbs_can_break") diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 4bf7b9c99e..8458c13ce3 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -173,8 +173,11 @@ add_autopsy_data("[used_weapon]", brute + burn) var/can_cut = (prob(brute*2) || sharp) && !(status & ORGAN_ROBOT) + // If the limbs can break, make sure we don't exceed the maximum damage a limb can take before breaking - if((brute_dam + burn_dam + brute + burn) < max_damage || !config.limbs_can_break) + // Non-vital organs are limited to max_damage. You can't kill someone by bludeonging their arm all the way to 200 -- you can + // push them faster into paincrit though, as the additional damage is converted into shock. + if(vital || (brute_dam + burn_dam + brute + burn) < max_damage || !config.limbs_can_break) if(brute) if(can_cut) createwound( CUT, brute ) @@ -206,7 +209,7 @@ burn = max(0, burn - can_inflict) //If there are still hurties to dispense if (burn || brute) - owner.shock_stage += brute+burn + owner.shock_stage += (brute+burn) * config.organ_damage_spillover_multiplier // sync the organ's damage with its wounds src.update_damages()