Merge pull request #13995 from KorPhaeron/tokiwotomare

Timestop fixes
This commit is contained in:
tkdrg
2015-12-28 19:44:08 -03:00
@@ -460,6 +460,7 @@
unacidable = 1
mouse_opacity = 0
var/mob/living/immune = list() // the one who creates the timestop is immune
var/list/stopped_atoms = list()
var/freezerange = 2
var/duration = 140
alpha = 125
@@ -474,9 +475,10 @@
/obj/effect/timestop/proc/timestop()
playsound(get_turf(src), 'sound/magic/TIMEPARADOX2.ogg', 100, 1, -1)
while(loc)
if(duration)
for(var/mob/living/M in orange (freezerange, src.loc))
for(var/i in 1 to duration-1)
for(var/atom/A in orange (freezerange, src.loc))
if(istype(A, /mob/living))
var/mob/living/M = A
if(M in immune)
continue
M.stunned = 10
@@ -485,24 +487,36 @@
var/mob/living/simple_animal/hostile/H = M
H.AIStatus = AI_OFF
H.LoseTarget()
continue
for(var/obj/item/projectile/P in orange (freezerange, src.loc))
stopped_atoms |= M
else if(istype(A, /obj/item/projectile))
var/obj/item/projectile/P = A
P.paused = TRUE
duration --
else
for(var/mob/living/M in orange (freezerange+2, src.loc)) //longer range incase they lag out of it or something
M.stunned = 0
M.anchored = 0
if(istype(M, /mob/living/simple_animal/hostile))
var/mob/living/simple_animal/hostile/H = M
H.AIStatus = initial(H.AIStatus)
continue
for(var/obj/item/projectile/P in orange(freezerange+2, src.loc))
P.paused = FALSE
qdel(src)
return
stopped_atoms |= P
for(var/mob/living/M in stopped_atoms)
if(get_dist(get_turf(M),get_turf(src)) > freezerange) //If they lagged/ran past the timestop somehow, just ignore them
unfreeze_mob(M)
stopped_atoms -= M
sleep(1)
//End
for(var/mob/living/M in stopped_atoms)
unfreeze_mob(M)
for(var/obj/item/projectile/P in stopped_atoms)
P.paused = FALSE
qdel(src)
return
/obj/effect/timestop/proc/unfreeze_mob(mob/living/M)
M.stunned = 0
M.anchored = 0
if(istype(M, /mob/living/simple_animal/hostile))
var/mob/living/simple_animal/hostile/H = M
H.AIStatus = initial(H.AIStatus)
/obj/effect/timestop/wizard
duration = 100