mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 20:16:55 +01:00
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:
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user