smokescreen.lua 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. local Smokescreen = {}
  2. Smokescreen.name = 'Smokescreen'
  3. Smokescreen.code = 'smokescreen'
  4. Smokescreen.text = 'Hide under a cover of smoke.'
  5. Smokescreen.type = 'skill'
  6. Smokescreen.needsMouse = true
  7. Smokescreen.targeted = true
  8. Smokescreen.cooldown = 14
  9. function Smokescreen:activate(owner)
  10. self.timer = 0
  11. self.targetAlpha = 0
  12. end
  13. function Smokescreen:update(owner)
  14. self.timer = timer.rot(self.timer)
  15. self.targetAlpha = math.lerp(self.targetAlpha, self.targeting and 1 or 0, math.min(10 * tickRate, 1))
  16. end
  17. function Smokescreen:canFire(owner)
  18. return self.timer == 0
  19. end
  20. function Smokescreen:fire(owner, mx, my)
  21. ctx.spells:activate(owner.id, data.spell.smokescreen, mx, my)
  22. self.timer = Smokescreen.cooldown
  23. self.targetAlpha = 0
  24. end
  25. function Smokescreen:gui(owner)
  26. if self.targetAlpha > 0 then
  27. local g, v = love.graphics, ctx.view
  28. g.setColor(255, 255, 255, self.targetAlpha * 255)
  29. g.circle('line', v:frameMouseX(), v:frameMouseY(), data.spell.smokescreen.radius * v.scale, 100)
  30. end
  31. end
  32. function Smokescreen:value(owner)
  33. return self.timer / self.cooldown
  34. end
  35. return Smokescreen