Good thought, InC. That's a completely reasonable possibility to explain what is happening here.
Unfortunately it's not an obvious fix; the removeEffect call can't be put before the forceUseTalent, because
Furnace Vent exits immediately if the EFF_FURNACE_MOLTEN_POINT is not active.
Edit: Actually...
Since the callback is happening on damage, the fix may be for
Furnace Vent to remove the Molten Point effect before the damage projection happens. Here's what's going on in
Furnace Vent:
Code:
action = function(self, t)
local mp = self:hasEffect(self.EFF_FURNACE_MOLTEN_POINT)
if not mp then return nil end
local tg = self:getTalentTarget(t)
local x, y = self:getTarget(tg)
if not x or not y then return nil end
self:project(tg, x, y, DamageType.FIRE, self:steamCrit(t.getDamage(self, t) * mp.stacks / 10))
game.level.map:particleEmitter(self.x, self.y, tg.radius, "breath_fire", {radius=tg.radius, tx=x-self.x, ty=y-self.y})
game:playSoundNear(self, "talents/fireflash")
self:removeEffect(self.EFF_FURNACE_MOLTEN_POINT, true, true)
return true
end,
If "self:removeEffect(self.EFF_FURNACE_MOLTEN_POINT, true, true)" got moved before the self:project call, then the issue should effectively go away. I'm assuming the callback happens as soon as the self:project happens, preventing the subsequent code from resolving until all the callbacks end.