Reworks armor damage reduction + armor components + more goodies. (#11106)

Ports Baystation12/Baystation12#27254 and Baystation12/Baystation12#24787 and everything inbetween I guess.

Note that this PR makes guns and armor overall stronger. Lasers also once again do organ damage.
This commit is contained in:
Matt Atlas
2021-02-14 16:54:45 +01:00
committed by GitHub
parent 3ab59b8ff7
commit c30cd94024
138 changed files with 2187 additions and 848 deletions

View File

@@ -48,7 +48,7 @@
fire_delay = 5
burst_delay = 5
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
projectile_type = /obj/item/projectile/beam
projectile_type = /obj/item/projectile/beam/midlaser
secondary_projectile_type = null
secondary_fire_sound = null
can_switch_modes = 0

View File

@@ -122,7 +122,7 @@
new hit_effect(target.loc)
L.apply_effects(stun, weaken, paralyze, 0, stutter, eyeblur, drowsy, agony, incinerate, blocked)
L.apply_effect(irradiate, IRRADIATE, L.getarmor(null, "rad")) //radiation protection is handled separately from other armor types.
L.apply_damage(irradiate, IRRADIATE, damage_flags = DAM_DISPERSED) //radiation protection is handled separately from other armor types.
return 1
//called when the projectile stops flying because it collided with something
@@ -390,6 +390,9 @@
. = ..()
permutated = list()
/obj/item/projectile/damage_flags()
return damage_flags
/obj/item/projectile/proc/pixel_move(moves, trajectory_multiplier = 1, hitscanning = FALSE)
if(!loc || !trajectory)
if(!QDELETED(src))

View File

@@ -27,7 +27,8 @@
eyeblur = 2
/obj/item/projectile/beam/pistol
damage = 35
damage = 25
armor_penetration = 10
/obj/item/projectile/beam/pistol/hegemony
icon = 'icons/obj/guns/hegemony_pistol.dmi'
@@ -41,13 +42,13 @@
/obj/item/projectile/beam/midlaser
damage = 35
armor_penetration = 10
armor_penetration = 15
/obj/item/projectile/beam/heavylaser
name = "heavy laser"
icon_state = "heavylaser"
damage = 60
armor_penetration = 30
damage = 45
armor_penetration = 25
muzzle_type = /obj/effect/projectile/muzzle/heavy_laser
tracer_type = /obj/effect/projectile/tracer/heavy_laser
@@ -56,8 +57,8 @@
/obj/item/projectile/beam/xray
name = "xray beam"
icon_state = "xray"
damage = 25
armor_penetration = 50
damage = 30
armor_penetration = 30
muzzle_type = /obj/effect/projectile/muzzle/xray
tracer_type = /obj/effect/projectile/tracer/xray

View File

@@ -121,17 +121,18 @@
/* short-casing projectiles, like the kind used in pistols or SMGs */
/obj/item/projectile/bullet/pistol
damage = 20
/obj/item/projectile/bullet/pistol/medium
damage = 25
/obj/item/projectile/bullet/pistol/medium
damage = 35
/obj/item/projectile/bullet/pistol/strong
damage = 30
armor_penetration = 15
damage = 45
armor_penetration = 20
/obj/item/projectile/bullet/pistol/revolver
damage = 30
damage = 40
armor_penetration = 10
/obj/item/projectile/bullet/pistol/rubber //"rubber" bullets
name = "rubber bullet"
@@ -144,7 +145,7 @@
/obj/item/projectile/bullet/shotgun
name = "slug"
damage = 60
damage = 65
/obj/item/projectile/bullet/shotgun/beanbag //because beanbags are not bullets
name = "beanbag"
@@ -183,7 +184,7 @@
//Overall less damage than slugs in exchange for more damage at very close range and more embedding
/obj/item/projectile/bullet/pellet/shotgun
name = "shrapnel"
damage = 13
damage = 30
pellets = 6
range_step = 1
spread_step = 10
@@ -196,25 +197,28 @@
/* "Rifle" rounds */
/obj/item/projectile/bullet/rifle
penetrating = 1
armor_penetration = 20
damage = 40
armor_penetration = 15
penetrating = TRUE
/obj/item/projectile/bullet/rifle/a762
damage = 35
damage = 45
armor_penetration = 20
/obj/item/projectile/bullet/rifle/a556
damage = 30
damage = 45
armor_penetration = 15
/obj/item/projectile/bullet/rifle/a556/ap
damage = 30
armor_penetration = 25
damage = 35
armor_penetration = 40
/obj/item/projectile/bullet/rifle/a145
damage = 80
stun = 3
weaken = 3
penetrating = 5
armor_penetration = 80
armor_penetration = 70
hitscan = 1 //so the PTR isn't useless as a sniper weapon
maiming = 1
maim_rate = 3
@@ -227,10 +231,10 @@
/obj/item/projectile/bullet/rifle/slugger
name = "slugger round"
damage = 80
damage = 60
weaken = 3
penetrating = 5
armor_penetration = 15
armor_penetration = 10
maiming = TRUE
maim_rate = 3
maim_type = DROPLIMB_BLUNT
@@ -279,27 +283,6 @@
..()
/* Miscellaneous */
/obj/item/projectile/bullet/suffocationbullet//How does this even work?
name = "co bullet"
damage = 20
damage_type = OXY
/obj/item/projectile/bullet/cyanideround
name = "poison bullet"
damage = 40
damage_type = TOX
/obj/item/projectile/bullet/burstbullet
name = "exploding bullet"
damage = 20
embed = 0
edge = 1
/obj/item/projectile/bullet/burstbullet/on_impact(var/atom/A)
explosion(A, -1, 0, 2)
..()
/obj/item/projectile/bullet/blank
invisibility = 101
damage = 1
@@ -354,12 +337,13 @@
/obj/item/projectile/bullet/gauss
name = "slug"
icon_state = "heavygauss"
damage = 45
damage = 50
armor_penetration = 20
muzzle_type = /obj/effect/projectile/muzzle/gauss
embed = 0
/obj/item/projectile/bullet/gauss/highex
name ="high-ex shell"
name = "high-ex shell"
damage = 10
/obj/item/projectile/bullet/gauss/highex/on_impact(var/atom/A)
@@ -383,7 +367,7 @@
armor_penetration = 25
/obj/item/projectile/bullet/cannonball/explosive
damage = 30
damage = 50
penetrating = 0
armor_penetration = 5

View File

@@ -146,13 +146,11 @@
var/mob/living/carbon/human/H = M
if((H.species.flags & IS_PLANT) && (M.nutrition < 500))
if(prob(15))
H.apply_effect((rand(30,80)),IRRADIATE,blocked = H.getarmor(null, "rad"))
H.apply_damage(rand(30,80), IRRADIATE, damage_flags = DAM_DISPERSED)
M.Weaken(5)
for (var/mob/V in viewers(src))
V.show_message("<span class='warning'>[M] writhes in pain as [M.get_pronoun("his")] vacuoles boil.</span>", 3, "<span class='warning'>You hear the crunching of leaves.</span>", 2)
if(prob(35))
// for (var/mob/V in viewers(src)) //Public messages commented out to prevent possible metaish genetics experimentation and stuff. - Cheridan
// V.show_message("\red [M] is mutated by the radiation beam.", 3, "\red You hear the snapping of twigs.", 2)
if(prob(80))
randmutb(M)
domutcheck(M,null)
@@ -162,11 +160,7 @@
else
M.adjustFireLoss(rand(5,15))
M.show_message("<span class='warning'>The radiation beam singes you!</span>")
// for (var/mob/V in viewers(src))
// V.show_message("\red [M] is singed by the radiation beam.", 3, "\red You hear the crackle of burning leaves.", 2)
else if(istype(target, /mob/living/carbon/))
// for (var/mob/V in viewers(src))
// V.show_message("The radiation beam dissipates harmlessly through [M]", 3)
else if(iscarbon(target))
M.show_message("<span class='notice'>The radiation beam dissipates harmlessly through your body.</span>")
else
return 1