Armour Refactor (#18547)

* initial commit

* bullet fix + 100% armour pen

* equivalent armour values

* percentage armour pen

* updates bombing

* adds more defines

* i like armour too much

* review pass 1

* review pass 2

* updates with lavaland elites

* armour penetration value tweaks

* wt550 AP round change
This commit is contained in:
Edan
2022-08-01 20:23:49 +01:00
committed by GitHub
parent 6d3033df0a
commit 1d552ab0e4
95 changed files with 406 additions and 384 deletions
@@ -413,7 +413,7 @@
M.gets_drilled(K.firer)
if(modifier)
for(var/mob/living/L in range(1, target_turf) - K.firer - target)
var/armor = L.run_armor_check(K.def_zone, K.flag, "", "", K.armour_penetration)
var/armor = L.run_armor_check(K.def_zone, K.flag, null, null, K.armour_penetration_flat, K.armour_penetration_percentage)
L.apply_damage(K.damage * modifier, K.damage_type, K.def_zone, armor)
to_chat(L, "<span class='userdanger'>You're struck by a [K.name]!</span>")
@@ -519,7 +519,7 @@
var/kill_modifier = 1
if(K.pressure_decrease_active)
kill_modifier *= K.pressure_decrease
var/armor = L.run_armor_check(K.def_zone, K.flag, "", "", K.armour_penetration)
var/armor = L.run_armor_check(K.def_zone, K.flag, null, null, K.armour_penetration_flat, K.armour_penetration_percentage)
L.apply_damage(bounties_reaped[L.type]*kill_modifier, K.damage_type, K.def_zone, armor)
/obj/item/borg/upgrade/modkit/bounty/proc/get_kill(mob/living/L)
@@ -63,11 +63,11 @@
/obj/item/projectile/bullet/saw
damage = 45
armour_penetration = 5
armour_penetration_flat = 5
/obj/item/projectile/bullet/saw/bleeding
damage = 20
armour_penetration = 0
armour_penetration_flat = 0
/obj/item/projectile/bullet/saw/bleeding/on_hit(atom/target, blocked = 0, hit_zone)
. = ..()
@@ -77,15 +77,15 @@
/obj/item/projectile/bullet/saw/hollow
damage = 60
armour_penetration = -10
armour_penetration_flat = -30
/obj/item/projectile/bullet/saw/ap
damage = 40
armour_penetration = 75
armour_penetration_percentage = 100
/obj/item/projectile/bullet/saw/incen
damage = 7
armour_penetration = 0
armour_penetration_flat = 0
/obj/item/projectile/bullet/saw/incen/Move()
..()
@@ -67,7 +67,7 @@
/obj/item/projectile/bullet/sniper
damage = 70
weaken = 10 SECONDS
armour_penetration = 50
armour_penetration_flat = 70
/obj/item/ammo_box/magazine/sniper_rounds/antimatter
name = "sniper rounds (Antimatter)"
@@ -108,7 +108,7 @@
harmful = FALSE
/obj/item/projectile/bullet/sniper/soporific
armour_penetration = 0
armour_penetration_flat = 0
nodamage = 1
weaken = 0
@@ -136,7 +136,7 @@
icon_state = ".50"
/obj/item/projectile/bullet/sniper/haemorrhage
armour_penetration = 25
armour_penetration_flat = 25
damage = 45
weaken = 6 SECONDS
+1 -1
View File
@@ -123,7 +123,7 @@
return 0
var/mob/living/L = target
var/mob/living/carbon/human/H
if(blocked < 100) // not completely blocked
if(blocked != INFINITY) // not completely blocked
if(damage && L.blood_volume && damage_type == BRUTE)
var/splatter_dir = dir
if(starting)
@@ -64,25 +64,26 @@
/obj/item/projectile/bullet/armourpiercing
damage = 17
armour_penetration = 10
armour_penetration_flat = 10
/obj/item/projectile/bullet/armourpiercing/wt550
damage = 15
armour_penetration = 40
armour_penetration_percentage = 50
armour_penetration_flat = 25
/obj/item/projectile/bullet/pellet
name = "pellet"
damage = 12.5
tile_dropoff = 0.75
tile_dropoff_s = 1.25
armour_penetration = -30
armour_penetration_flat = -20
/obj/item/projectile/bullet/pellet/rubber
name = "rubber pellet"
damage = 3
stamina = 12.5
icon_state = "bullet-r"
armour_penetration = -10
armour_penetration_flat = -10
/obj/item/projectile/bullet/pellet/rubber/on_hit(atom/target, blocked = 0)
. = ..()
@@ -145,11 +146,11 @@
/obj/item/projectile/bullet/midbullet3/hp
damage = 40
armour_penetration = -50
armour_penetration_flat = -40
/obj/item/projectile/bullet/midbullet3/ap
damage = 27
armour_penetration = 40
armour_penetration_flat = 40
/obj/item/projectile/bullet/midbullet3/fire/on_hit(atom/target, blocked = 0)
if(..(target, blocked))
@@ -242,13 +243,13 @@
/obj/item/projectile/bullet/dart/on_hit(atom/target, blocked = 0, hit_zone)
if(iscarbon(target))
var/mob/living/carbon/M = target
if(blocked != 100)
if(blocked != INFINITY)
if(M.can_inject(null, FALSE, hit_zone, piercing)) // Pass the hit zone to see if it can inject by whether it hit the head or the body.
..()
reagents.trans_to(M, reagents.total_volume)
return 1
else
blocked = 100
blocked = INFINITY
target.visible_message("<span class='danger'>[src] was deflected!</span>", \
"<span class='userdanger'>You were protected against [src]!</span>")
..(target, blocked, hit_zone)
@@ -144,6 +144,6 @@
icon_state = "plasma_heavy"
damage = 45
damage_type = BURN
armour_penetration = 10 // It can have a little armor pen, as a treat. Bigger than it looks, energy armor is often low.
armour_penetration_flat = 10 // It can have a little armor pen, as a treat. Bigger than it looks, energy armor is often low.
shield_buster = TRUE
reflectability = REFLECTABILITY_PHYSICAL //I will let eswords block it like a normal projectile, but it's not getting reflected, and eshields will take the hit hard. Carp still can reflect though, screw you.
+2 -2
View File
@@ -4,7 +4,7 @@
damage = 0
damage_type = OXY
nodamage = 1
armour_penetration = 100
armour_penetration_percentage = 100
flag = MAGIC
/obj/item/projectile/magic/death
@@ -357,6 +357,6 @@
damage = 20
damage_type = BURN
nodamage = FALSE
armour_penetration = 0
armour_penetration_flat = 0
flag = MAGIC
hitsound = 'sound/weapons/barragespellhit.ogg'