staticgrenade.lua 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. local StaticGrenade = {}
  2. StaticGrenade.name = 'Static Grenade'
  3. StaticGrenade.code = 'staticgrenade'
  4. StaticGrenade.text = 'A grenade that slows and disarms.'
  5. StaticGrenade.type = 'skill'
  6. StaticGrenade.needsMouse = true
  7. StaticGrenade.targeted = true
  8. StaticGrenade.cooldown = 8
  9. function StaticGrenade:activate(owner)
  10. self.timer = 0
  11. self.targetAlpha = 0
  12. end
  13. function StaticGrenade: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 StaticGrenade:canFire(owner)
  18. return self.timer == 0
  19. end
  20. function StaticGrenade:fire(owner, mx, my)
  21. ctx.spells:activate(owner.id, data.spell.staticgrenade, mx, my)
  22. self.timer = StaticGrenade.cooldown
  23. self.targetAlpha = 0
  24. end
  25. function StaticGrenade: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.staticgrenade.radius * v.scale, 100)
  30. end
  31. end
  32. function StaticGrenade:value(owner)
  33. return self.timer / self.cooldown
  34. end
  35. return StaticGrenade