frozenorb.lua 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. local FrozenOrb = extend(Ability)
  2. FrozenOrb.runeDamage = 0
  3. FrozenOrb.runeSlow = 0
  4. FrozenOrb.runeKnockback = 0
  5. FrozenOrb.spiritRatios = {[0] = 0, .4, .8, 1.2, 1.6, 2.0}
  6. ----------------
  7. -- Behavior
  8. ----------------
  9. function FrozenOrb:activate()
  10. self.timer = love.math.random() * 10 - self.unit:upgradeLevel('frozenorb')
  11. self.unit.animation:on('event', function(event)
  12. if event.data.name == 'frozenorb' then
  13. ctx.sound:play(data.media.sounds.kuju.frozenorb)
  14. self:createSpell('frozenorb', {})
  15. self.timer = 10 - self.unit:upgradeLevel('frozenorb')
  16. end
  17. end)
  18. end
  19. function FrozenOrb:use()
  20. if self.unit.target and not isa(self.unit.target, Shrine) then
  21. self.unit.animation:set('frozenorb')
  22. self.unit.casting = true
  23. end
  24. end
  25. function FrozenOrb:bonuses()
  26. local bonuses = {}
  27. local frozenorb = data.unit.kuju.upgrades.frozenorb.level
  28. local spirit = Unit.getStat('kuju', 'spirit')
  29. if spirit > 0 then
  30. table.insert(bonuses, {'Spirit', math.round(spirit * self.spiritRatios[frozenorb]), 'damage'})
  31. end
  32. if self.runeDamage > 0 then
  33. table.insert(bonuses, {'Runes', math.round(self.runeDamage), 'damage'})
  34. end
  35. if self.runeSlow > 0 then
  36. table.insert(bonuses, {'Runes', math.round(self.runeSlow * 100) .. '%', 'slow'})
  37. end
  38. return bonuses
  39. end
  40. return FrozenOrb