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

@@ -32,7 +32,7 @@
if(prob(current_size*5) && hand.w_class >= ((11-current_size)/2) && u_equip(hand))
step_towards(hand, src)
to_chat(src, "<span class = 'warning'>The [S] pulls \the [hand] from your grip!</span>")
apply_effect(current_size * 3, IRRADIATE, blocked = getarmor(null, "rad"))
apply_damage(current_size * 3, IRRADIATE, damage_flags = DAM_DISPERSED)
if(shoes)
if(shoes.item_flags & NOSLIP) return 0
..()

View File

@@ -64,9 +64,8 @@
/obj/effect/accelerated_particle/proc/toxmob(var/mob/living/M)
var/radiation = (energy*2)
M.apply_effect((radiation*3),IRRADIATE,blocked = M.getarmor(null, "rad"))
M.apply_damage((radiation*3), IRRADIATE, damage_flags = DAM_DISPERSED)
M.updatehealth()
//to_chat(M, "\red You feel odd.")
return

View File

@@ -433,21 +433,15 @@
/obj/singularity/proc/toxmob()
var/toxrange = 10
var/toxdamage = 4
var/radiation = 15
var/radiationmin = 3
if (src.energy>200)
toxdamage = round(((src.energy-150)/50)*4,1)
if (src.energy > 200)
radiation = round(((src.energy-150)/50)*5,1)
radiationmin = round((radiation/5),1)//
for(var/mob/living/M in view(toxrange, src.loc))
if(M.status_flags & GODMODE)
continue
M.apply_effect(rand(radiationmin,radiation), IRRADIATE, blocked = M.getarmor(null, "rad"))
toxdamage = (toxdamage - (toxdamage*M.getarmor(null, "rad")))
M.apply_effect(toxdamage, TOX)
return
M.apply_damage(rand(radiationmin,radiation), IRRADIATE, damage_flags = DAM_DISPERSED)
/obj/singularity/proc/mezzer()
for(var/mob/living/carbon/M in oviewers(8, src))
@@ -477,7 +471,7 @@
/obj/singularity/proc/smwave()
for(var/mob/living/M in view(10, src.loc))
if(prob(67))
M.apply_effect(rand(energy), IRRADIATE, blocked = M.getarmor(null, "rad"))
M.apply_damage(rand(energy), IRRADIATE, damage_flags = DAM_DISPERSED)
to_chat(M, "<span class=\"warning\">You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.</span>")
to_chat(M, "<span class=\"notice\">Miraculously, it fails to kill you.</span>")
else