charge.lua 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. local Charge = extend(Ability)
  2. ----------------
  3. -- Meta
  4. ----------------
  5. Charge.name = 'Charge'
  6. Charge.description = [[
  7. Duju charges forward through his enemies.
  8. Any enemies caught in his path are damaged and slowed for a short duration.
  9. ]]
  10. ----------------
  11. -- Data
  12. ----------------
  13. Charge.cooldown = 5
  14. Charge.damage = 5
  15. Charge.range = 125
  16. Charge.speed = 625
  17. Charge.slowDuration = 2
  18. Charge.slow = .25
  19. ----------------
  20. -- Behavior
  21. ----------------
  22. function Charge:use()
  23. if self:hasUpgrade('trample') then
  24. self.damage = self.damage + self.damage * Trample.damageModifier
  25. self.stunDuration = Trample.stunDuration
  26. end
  27. if self:hasUpgrade('tenacity') then
  28. self.range = self.range * Tenacity.distanceModifier
  29. self.unit.buffs:add('chargearmor', {
  30. timer = Tenacity.mitigationDuration,
  31. armor = Tenacity.mitigationModifier
  32. })
  33. end
  34. ctx.spells:add(data.spell.duju.charge, {
  35. damage = self.damage,
  36. range = self.range,
  37. speed = self.speed,
  38. slow = self.slow,
  39. duration = self.stunDuration or self.slowDuration,
  40. ability = self
  41. })
  42. end
  43. ----------------
  44. -- Upgrades
  45. ----------------
  46. local Trample = {}
  47. Trample.name = 'Trample'
  48. Trample.code = 'trample'
  49. Trample.damageModifier = .5
  50. Trample.stunDuration = 1
  51. Trample.description = 'Charge deals %damageModifier more damage and now stuns for $stunDuration seconds in place of Duju\'s slowing effect.'
  52. local Tenacity = {}
  53. Tenacity.name = 'Tenacity'
  54. Tenacity.code = 'tenacity'
  55. Tenacity.distanceModifier = 2
  56. Tenacity.mitigationModifier = .5
  57. Tenacity.mitigationDuration = 3
  58. Tenacity.description = 'Duju charges twice as far, and gains %mitigationModifier damage reduction for $mitigationDuration seconds during and after the charge.'
  59. Charge.upgrades = {Trample, Tenacity}
  60. return Charge