diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 281c4e1f598..515bef05863 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -126,7 +126,7 @@ if(lying_angle) severity *= EXPLOSION_PRONE_MULTIPLIER - if(severity >= EXPLOSION_THRESHOLD_GIB + get_soft_armor(BOMB)) + if(severity >= EXPLOSION_THRESHOLD_GIB + (get_soft_armor(BOMB) * 2)) var/oldloc = loc gib() create_shrapnel(oldloc, rand(5, 9), direction, 45, /datum/ammo/bullet/shrapnel/light/human) diff --git a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm index 391a731c9f9..80a2c6a28f3 100644 --- a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm +++ b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm @@ -31,7 +31,7 @@ if(lying_angle) severity *= EXPLOSION_PRONE_MULTIPLIER - if(severity >= (health) && severity >= EXPLOSION_THRESHOLD_GIB + get_soft_armor(BOMB)) + if(severity >= max(health, EXPLOSION_THRESHOLD_GIB + get_soft_armor(BOMB) * 2)) var/oldloc = loc gib() create_shrapnel(oldloc, rand(16, 24), direction, shrapnel_type = /datum/ammo/bullet/shrapnel/light/xeno) diff --git a/code/modules/projectiles/ammo_datums/mecha.dm b/code/modules/projectiles/ammo_datums/mecha.dm index 884d84aae51..e1f6b9d2b7b 100644 --- a/code/modules/projectiles/ammo_datums/mecha.dm +++ b/code/modules/projectiles/ammo_datums/mecha.dm @@ -134,9 +134,9 @@ /datum/ammo/rocket/mech name = "large high-explosive rocket" - damage = 75 + damage = 30 penetration = 50 max_range = 30 /datum/ammo/rocket/mech/drop_nade(turf/T) - cell_explosion(T, 75, 15) + cell_explosion(T, 120, 24) diff --git a/code/modules/projectiles/ammo_datums/rocket.dm b/code/modules/projectiles/ammo_datums/rocket.dm index 28909f5bc60..cf7bff58d2b 100644 --- a/code/modules/projectiles/ammo_datums/rocket.dm +++ b/code/modules/projectiles/ammo_datums/rocket.dm @@ -12,14 +12,14 @@ accuracy = 40 accurate_range = 20 max_range = 14 - damage = 200 + damage = 80 penetration = 100 sundering = 100 bullet_color = LIGHT_COLOR_FIRE barricade_clear_distance = 2 /datum/ammo/rocket/drop_nade(turf/T) - cell_explosion(T, 200, 35) + cell_explosion(T, 320, 55) /datum/ammo/rocket/on_hit_mob(mob/M, obj/projectile/P) drop_nade(get_turf(M)) @@ -39,19 +39,19 @@ hud_state = "rocket_he" accurate_range = 20 max_range = 14 - damage = 150 + damage = 60 penetration = 100 sundering = 100 /datum/ammo/rocket/he/drop_nade(turf/T) - cell_explosion(T, 150, 40) + cell_explosion(T, 240, 65) /datum/ammo/rocket/he/unguided - damage = 100 + damage = 60 flags_ammo_behavior = AMMO_SNIPER // We want this one to specifically go over onscreen range. /datum/ammo/rocket/he/unguided/drop_nade(turf/T) - cell_explosion(T, 200, 50) + cell_explosion(T, 240, 60) /datum/ammo/rocket/ap name = "kinetic penetrator" @@ -72,11 +72,11 @@ accurate_range = 15 max_range = 40 penetration = 50 - damage = 200 + damage = 80 hud_state = "bigshell_he" /datum/ammo/rocket/ltb/drop_nade(turf/T) - cell_explosion(T, 200, 45) + cell_explosion(T, 320, 70) /datum/ammo/bullet/tank_apfds name = "8.8cm APFDS round" @@ -227,12 +227,12 @@ shell_speed = 2 accurate_range = 20 max_range = 30 - damage = 100 + damage = 50 penetration = 50 sundering = 50 /datum/ammo/rocket/recoilless/drop_nade(turf/T) - cell_explosion(T, 150, 75) + cell_explosion(T, 200, 70) /datum/ammo/rocket/recoilless/heat name = "HEAT shell" @@ -266,12 +266,11 @@ flags_ammo_behavior = AMMO_SNIPER //We want this to specifically go farther than onscreen range. accurate_range = 15 max_range = 20 - damage = 75 penetration = 50 sundering = 25 /datum/ammo/rocket/recoilless/light/drop_nade(turf/T) - cell_explosion(T, 75, 25) + cell_explosion(T, 150, 50) /datum/ammo/rocket/recoilless/chemical name = "low velocity chemical shell" @@ -314,22 +313,22 @@ flags_ammo_behavior = AMMO_SNIPER //We want this to specifically go farther than onscreen range. accurate_range = 15 max_range = 20 - damage = 75 + damage = 35 penetration = 15 sundering = 25 /datum/ammo/rocket/recoilless/low_impact/drop_nade(turf/T) - cell_explosion(T, 100, 15) + cell_explosion(T, 140, 20) /datum/ammo/rocket/oneuse name = "explosive rocket" - damage = 100 + damage = 50 penetration = 100 sundering = 100 max_range = 30 /datum/ammo/rocket/oneuse/drop_nade(turf/T) - cell_explosion(T, 115, 45) + cell_explosion(T, 175, 60) /datum/ammo/rocket/som name = "high explosive RPG" @@ -338,12 +337,12 @@ flags_ammo_behavior = AMMO_SNIPER accurate_range = 15 max_range = 20 - damage = 80 + damage = 50 penetration = 20 sundering = 20 /datum/ammo/rocket/som/drop_nade(turf/T) - cell_explosion(T, 175, 35) + cell_explosion(T, 205, 35) /datum/ammo/rocket/som/light name = "low impact RPG" @@ -351,11 +350,11 @@ hud_state = "rpg_le" flags_ammo_behavior = AMMO_SNIPER accurate_range = 15 - damage = 60 + damage = 35 penetration = 10 /datum/ammo/rocket/som/light/drop_nade(turf/T) - cell_explosion(T, 125, 15) + cell_explosion(T, 150, 15) /datum/ammo/rocket/som/thermobaric name = "thermobaric RPG" @@ -427,14 +426,14 @@ hud_state_empty = "shell_empty" flags_ammo_behavior = AMMO_TARGET_TURF|AMMO_SNIPER|AMMO_PASS_THROUGH_TURF shell_speed = 2 - damage = 90 + damage = 30 penetration = 30 sundering = 25 max_range = 30 handful_amount = 1 /datum/ammo/rocket/atgun_shell/drop_nade(turf/T) - cell_explosion(T, 55 , 30) + cell_explosion(T, 115 , 60) /datum/ammo/rocket/atgun_shell/on_hit_turf(turf/T, obj/projectile/P) //no explosion every time it hits a turf P.proj_max_range -= 10 @@ -466,12 +465,12 @@ name = "low velocity high explosive shell" hud_state = "shell_he" flags_ammo_behavior = AMMO_TARGET_TURF|AMMO_SNIPER - damage = 50 + damage = 30 penetration = 50 sundering = 35 /datum/ammo/rocket/atgun_shell/he/drop_nade(turf/T) - cell_explosion(T, 90, 30) + cell_explosion(T, 110, 40) /datum/ammo/rocket/atgun_shell/he/on_hit_turf(turf/T, obj/projectile/P) drop_nade(T.density ? P.loc : T) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index cf7ff4297c4..0cb2ba8bd31 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -877,6 +877,9 @@ So if we are on the 32th absolute pixel coordinate we are on tile 1, but if we a if(stat == DEAD) return + if(proj.sundering) + adjust_sunder(proj.sundering) + var/damage = max(0, proj.damage - round(proj.distance_travelled * proj.damage_falloff)) if(!damage) return @@ -910,9 +913,6 @@ So if we are on the 32th absolute pixel coordinate we are on tile 1, but if we a if(IgniteMob()) feedback_flags |= (BULLET_FEEDBACK_FIRE) - if(proj.sundering) - adjust_sunder(proj.sundering) - if(stat != DEAD && proj.firer) proj.firer.record_projectile_damage(damage, src) //Tally up whoever the shooter was