[1.3.0] Stuck in fearscape after killing NPC source
Posted: Fri Mar 20, 2015 10:11 pm
On a Shalore Temporal Warden, I was fighting a rare skeleton warrior who used fearscape. Upon killing it, I was stuck in the fearscape. This appears to be due to several factors.
According to the log (see code snippets below), the skeleton activated fearscape, died before the next game tick, shut off all its sustains (including fearscape), resurrected, and *then* the level finally loaded. Which means I was in a fearscape with a skeleton without a fearscape sustain up. So when it died, it didn't send me back, since there was nothing to turn off.
Looking at the fearscape talent in the shadowflame.lua file (line 168 and on), it appears to check if the source not dead, but fails to check to see if the sustain is still up:
It strikes me that the code should be something like:
I'm not absolutely positive about this, but it seems plausible. Unfortunately, its a bit hard to setup the conditions for testing just right due to the timing necessary.
According to the log (see code snippets below), the skeleton activated fearscape, died before the next game tick, shut off all its sustains (including fearscape), resurrected, and *then* the level finally loaded. Which means I was in a fearscape with a skeleton without a fearscape sustain up. So when it died, it didn't send me back, since there was nothing to turn off.
Code: Select all
[LOG] Yvyganne the skeleton warrior activates Fearscape.
*SNIP*
[ATTACK ARCHERY] after hook 559.78496888632
[LOG] #{bold}##UID:2859:0##fbd578#Aikune#LAST# performs a ranged critical strike against Yvyganne the skeleton warrior!#{normal}#
[LOG] #LIGHT_RED#Yvyganne the skeleton warrior rises from the dead!
[LOG] Yvyganne the skeleton warrior seems more focused.
[LOG] Yvyganne the skeleton warrior deactivates Berserker.
[LOG] Yvyganne the skeleton warrior deactivates Fearscape.
[LOG] Yvyganne the skeleton warrior deactivates Blood Fury.
[LOG] Yvyganne the skeleton warrior speeds up.
[LOG] Yvyganne the skeleton warrior deactivates Flame of Urh'Rok.
[ATTACK ARCHERY] to Yvyganne the skeleton warrior :: 186.63586689473 37 5 :: 1.2549509756796
checkHit 71.2 6.95
=> chance to hit 100
*SNIP*
[LOG] #CRIMSON##UID:297352:0#Aikune's temporal clone steals life from Yvyganne the skeleton warrior!
[LOG] Aikune's Singularity Arrow hits Yvyganne the skeleton warrior for #{bold}##aaaaaa#182 physical#{normal}##LAST#, #{bold}##LIGHT_STEEL_BLUE#16 temporal#{normal}##LAST#, #{bold}##PURPLE#40 arcane#{normal}##LAST#, #{bold}##YELLOW#4 mind#{normal}##LAST#, #{bold}##1133F3#16 cold#{normal}##LAST#, #{bold}##LIGHT_GREEN#20 nature#{normal}##LAST#, #YELLOW#<20% blind chance>#LAST#, #YELLOW#6 mind#LAST#, #LIGHT_STEEL_BLUE#41 temporal#LAST# (325 total damage).
[LOG] #UID:2859:0##fbd578#Aikune#LAST# hits Yvyganne the skeleton warrior for #{bold}##aaaaaa#569 physical#{normal}##LAST#, #LIGHT_STEEL_BLUE#8 temporal#LAST#, #{bold}##PURPLE#40 arcane#{normal}##LAST#, #YELLOW#4 mind#LAST#, #{bold}##1133F3#16 cold#{normal}##LAST#, #{bold}##LIGHT_GREEN#20 nature#{normal}##LAST#, #YELLOW#<20% blind chance>#LAST#, #YELLOW#10 mind#LAST#, #LIGHT_STEEL_BLUE#41 temporal#LAST# (707 total damage).
[LOG] #UID:297352:0#Aikune's temporal clone hits Yvyganne the skeleton warrior for #DARK_GREEN#71 blight#LAST#, #aaaaaa#40 physical#LAST#, #LIGHT_GREEN#(slow 55%)#LAST#, #aaaaaa#9 physical#LAST#, #LIGHT_STEEL_BLUE#9 temporal#LAST#, #aaaaaa#5 physical#LAST#, #LIGHT_STEEL_BLUE#29 temporal#LAST#, #{bold}##aaaaaa#63 physical#{normal}##LAST#, #LIGHT_GREEN#(slow 55%)#LAST#, #aaaaaa#9 physical#LAST#, #LIGHT_STEEL_BLUE#18 temporal#LAST#, #LIGHT_STEEL_BLUE#29 temporal#LAST#, #PURPLE#0 arcane#LAST# (284 total damage).
Loading savefile /save/aikune/
Loading entities file from file /data/zones/demon-plane-spell/npcs.lua
Loading entities file from memory /data/general/npcs/all.lua
Loading entities file from memory /data/general/npcs/ant.lua
Loading entities file from memory /data/general/npcs/bear.lua
Code: Select all
game:onTickEnd(function()
if self:attr("dead") then return end
Code: Select all
game:onTickEnd(function()
if self:attr("dead") or not self:isTalentActive(self.T_DEMON_PLANE) then return end