rewind.lua 947 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. local Rewind = extend(Ability)
  2. Rewind.runeChance = 0
  3. function Rewind:activate()
  4. self.amount = 0
  5. end
  6. function Rewind:update()
  7. if self.amount > 0 then
  8. local rate = self.unit.maxHealth * .5
  9. local amount = math.min(self.amount, rate * ls.tickrate)
  10. self.amount = self.amount - amount
  11. self.unit:heal(amount, self.unit)
  12. end
  13. end
  14. function Rewind:posthurt(amount, source, kind)
  15. if (not kind or not table.has(kind, 'dot')) and love.math.random() < self.runeChance + .05 * self.unit:upgradeLevel('rewind') then
  16. self.amount = self.amount + amount
  17. if self.unit:upgradeLevel('impulse') > 0 then
  18. local _, burst = self.unit:hasAbility('burst')
  19. if burst then
  20. burst:die()
  21. end
  22. end
  23. end
  24. end
  25. function Rewind:bonuses()
  26. local bonuses = {}
  27. if self.runeChance > 0 then
  28. table.insert(bonuses, {'Runes', math.round(self.runeChance * 100) .. '%', 'chance'})
  29. end
  30. return bonuses
  31. end
  32. return Rewind