Making kinetic accelerator AOE iterative (#8346)

This commit is contained in:
Mykhailo Bykhovtsev
2020-03-24 08:05:02 -07:00
committed by GitHub
parent 088ff5d8ab
commit f588e0c96a
2 changed files with 55 additions and 11 deletions

View File

@@ -7,8 +7,9 @@
check_armour = "bomb"
range = 5
var/pressure_decrease = 0.25
var/aoe_s = 1 // aoe scale
var/base_damage = 0
var/aoe_shot = FALSE
ignore_source_check = TRUE
/obj/item/projectile/kinetic/mech
damage = 40
@@ -26,16 +27,20 @@
damage *= max(1 - (environment.return_pressure()/100)*0.75,0)
if(isliving(A)) //Never do more than 50 damage to a living being per shot.
damage = min(damage, 50)
if(istype(target_turf, /turf/simulated/mineral))
var/turf/simulated/mineral/M = target_turf
M.kinetic_hit(base_damage, dir)
. = ..()
/obj/item/projectile/kinetic/on_impact(var/atom/A)
var/turf/target_turf = get_turf(A)
if(!target_turf)
target_turf = get_turf(src)
if(istype(target_turf))
strike_thing(A, aoe * aoe_s)
if(istype(target_turf) && !aoe_shot)
aoe_shot = TRUE
strike_thing(A)
/obj/item/projectile/kinetic/proc/strike_thing(atom/target, var/new_aoe)
/obj/item/projectile/kinetic/proc/strike_thing(atom/target)
var/turf/target_turf = get_turf(target)
if(istype(target_turf, /turf/simulated/mineral))
@@ -44,10 +49,8 @@
new /obj/effect/overlay/temp/kinetic_blast(target_turf)
if(new_aoe > 0)
aoe_s = 0
ignore_source_check = TRUE
for(var/new_target in orange(new_aoe, target_turf))
damage = max(base_damage - base_damage * get_dist(new_target, target_turf) * 0.25, 0)
src.Collide(new_target)
CHECK_TICK
for(var/new_target in orange(aoe, target_turf))
damage = max(base_damage - base_damage * get_dist(new_target, target_turf) * 0.25, 0)
new /obj/effect/overlay/temp/kinetic_blast(get_turf(new_target))
src.Collide(new_target)
CHECK_TICK