cleave.lua 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. local Cleave = extend(app.logic.spell)
  2. Cleave.code = 'cleave'
  3. Cleave.radius = 175
  4. Cleave.duration = .5
  5. function Cleave:activate()
  6. self.timer = Cleave.duration
  7. self:mirrorOwner()
  8. local empowered = ctx.buffs:get(self.owner, 'overexertion')
  9. ctx.buffs:remove(self.owner, 'overexertion')
  10. local damage = data.skill.cleave.damage * (empowered and 1.5 or 1)
  11. local enemies = self:enemiesInRadius()
  12. self:damage(enemies, function(enemy)
  13. return self:distanceTo(enemy) < Cleave.radius * .65 and damage or damage / 2
  14. end)
  15. if self.empowered then
  16. table.each(enemies, function(enemy)
  17. local dis = self:distanceTo(enemy) - self.owner.radius - enemy.radius
  18. local dir = math.direction(enemy.x, enemy.y, self.x, self.y)
  19. self:movePlayer(enemy, dis, {angle = dir})
  20. end)
  21. end
  22. self:playSound('dash')
  23. end
  24. function Cleave:update()
  25. self:rot()
  26. end
  27. function Cleave:draw()
  28. love.graphics.setColor(255, 255, 255, 50 * (self.timer / self.duration))
  29. self:drawCircle('fill')
  30. self:drawCircle('fill', {radius = self.radius * .65})
  31. love.graphics.setColor(255, 255, 255, 255 * (self.timer / self.duration))
  32. self:drawCircle('line')
  33. end
  34. return Cleave