Hierophant burst is async (#42290)

I noticed that I had 4 hierophant kills logged on the stats hub, which is off
by about an order of magnitude. What happens is that on death hierophant
releases an expanding square, which you're meant to run from - this puts you
out of range for the medal.
This commit is contained in:
4dplanner
2019-01-18 01:43:34 -08:00
committed by Tad Hardesty
parent 9a7271e589
commit 7c1445dbf2
@@ -108,10 +108,9 @@ Difficulty: Hard
else
stat = DEAD
blinking = TRUE //we do a fancy animation, release a huge burst(), and leave our staff.
burst_range = 10
visible_message("<span class='hierophant'>\"Mrmxmexmrk wipj-hiwxvygx wiuyirgi...\"</span>")
visible_message("<span class='hierophant_warning'>[src] shrinks, releasing a massive burst of energy!</span>")
burst(get_turf(src))
INVOKE_ASYNC(GLOBAL_PROC, .proc/hierophant_burst, null, get_turf(src), 10)
..()
/mob/living/simple_animal/hostile/megafauna/hierophant/Destroy()
@@ -423,7 +422,8 @@ Difficulty: Hard
for(var/t in RANGE_TURFS(1, T))
new /obj/effect/temp_visual/hierophant/blast(t, src, FALSE)
/mob/living/simple_animal/hostile/megafauna/hierophant/proc/burst(turf/original, spread_speed = 0.5) //release a wave of blasts
//expanding square
/proc/hierophant_burst(mob/caster, turf/original, burst_range, spread_speed = 0.5)
playsound(original,'sound/machines/airlockopen.ogg', 200, 1)
var/last_dist = 0
for(var/t in spiral_range_turfs(burst_range, original))
@@ -434,7 +434,10 @@ Difficulty: Hard
if(dist > last_dist)
last_dist = dist
sleep(1 + min(burst_range - last_dist, 12) * spread_speed) //gets faster as it gets further out
new /obj/effect/temp_visual/hierophant/blast(T, src, FALSE)
new /obj/effect/temp_visual/hierophant/blast(T, caster, FALSE)
/mob/living/simple_animal/hostile/megafauna/hierophant/proc/burst(turf/original, spread_speed)
hierophant_burst(src, original, burst_range, spread_speed)
/mob/living/simple_animal/hostile/megafauna/hierophant/AltClickOn(atom/A) //player control handler(don't give this to a player holy fuck)
if(!istype(A) || get_dist(A, src) <= 2)
@@ -641,7 +644,8 @@ Difficulty: Hard
H.Goto(get_turf(caster), H.move_to_delay, 3)
if(monster_damage_boost && (ismegafauna(L) || istype(L, /mob/living/simple_animal/hostile/asteroid)))
L.adjustBruteLoss(damage)
log_combat(caster, L, "struck with a [name]")
if(caster)
log_combat(caster, L, "struck with a [name]")
for(var/obj/mecha/M in T.contents - hit_things) //also damage mechs.
hit_things += M
if(M.occupant)