kuju.lua 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. local Kuju = {}
  2. Kuju.name = 'Kuju'
  3. Kuju.description = 'An ice witch who is great at stopping enemies in their tracks with powerful slows and cold magic.'
  4. ----------------
  5. -- Stats
  6. ----------------
  7. Kuju.health = 65
  8. Kuju.damage = 8
  9. Kuju.range = 140
  10. Kuju.attackSpeed = 1.45
  11. Kuju.speed = 35
  12. Kuju.spirit = 0
  13. Kuju.haste = 1
  14. Kuju.cost = 10
  15. Kuju.attackSpell = 'kujuattack'
  16. Kuju.attackParticleBone = 'region_righthand'
  17. ----------------
  18. -- Upgrades
  19. ----------------
  20. Kuju.upgrades = {
  21. frozenorb = {
  22. level = 0,
  23. maxLevel = 5,
  24. costs = {100, 150, 200, 250, 300},
  25. name = 'Frozen Orb',
  26. description = 'Kuju sends out a chilling orb that damages the first enemy struck. The targeted is also Chilled for 1.5 seconds, reducing movement and attack speed by 40%.',
  27. x = -1,
  28. y = 0,
  29. values = {
  30. [1] = '0.4 damage per spirit, 9 second cooldown',
  31. [2] = '0.8 damage per spirit, 8 second cooldown',
  32. [3] = '1.2 damage per spirit, 7 second cooldown',
  33. [4] = '1.6 damage per spirit, 6 second cooldown',
  34. [5] = '2.0 damage per spirit, 5 second cooldown',
  35. },
  36. bonuses = function()
  37. return data.ability.kuju.frozenorb:bonuses()
  38. end,
  39. apply = function(self, unit)
  40. if self.level > 0 then
  41. unit:addAbility('frozenorb')
  42. end
  43. end
  44. },
  45. shiverarmor = {
  46. level = 0,
  47. maxLevel = 5,
  48. costs = {100, 150, 200, 250, 300},
  49. name = 'Shiver Armor',
  50. description = 'Kuju passively enchants Muju\'s robes with powerful cold magic. Whenever Muju is struck, he deals damage to the attacker.',
  51. x = 0,
  52. y = 0,
  53. values = {
  54. [1] = '15 damage',
  55. [2] = '30 damage',
  56. [3] = '45 damage',
  57. [4] = '60 damage',
  58. [5] = '75 damage',
  59. },
  60. bonuses = function()
  61. return data.ability.kuju.shiverarmor:bonuses()
  62. end,
  63. apply = function(self, unit)
  64. if self.level > 0 then
  65. unit:addAbility('shiverarmor')
  66. end
  67. end
  68. },
  69. frostbite = {
  70. level = 0,
  71. maxLevel = 5,
  72. costs = {100, 150, 200, 250, 300},
  73. name = 'Frostbite',
  74. description = 'Kuju freezes an area of ground. Every second, enemies in the area take damage. Enemies take more damage the longer they stay in the zone. 20 second cooldown.',
  75. x = 1,
  76. y = 0,
  77. values = {
  78. [1] = '4 damage per second per second, 3 second duration',
  79. [2] = '6 damage per second per second, 4 second duration',
  80. [3] = '8 damage per second per second, 5 second duration',
  81. [4] = '10 damage per second per second, 6 second duration',
  82. [5] = '12 damage per second per second, 7 second duration',
  83. },
  84. bonuses = function()
  85. return data.ability.kuju.frostbite:bonuses()
  86. end,
  87. apply = function(self, unit)
  88. if self.level > 0 then
  89. unit:addAbility('frostbite')
  90. end
  91. end
  92. },
  93. shatter = {
  94. level = 0,
  95. maxLevel = 1,
  96. costs = {200},
  97. prerequisites = {frozenorb = 1},
  98. name = 'Shatter',
  99. description = 'Frozen Orb shatters on contact, damaging and chilling enemies behind the original target at 50% effectiveness.',
  100. x = -1,
  101. y = 1,
  102. connectedTo = {'frozenorb'},
  103. values = {
  104. [1] = 'Shatters',
  105. }
  106. },
  107. crystallize = {
  108. level = 0,
  109. maxLevel = 3,
  110. costs = {200, 300, 400},
  111. prerequisites = {shiverarmor = 1},
  112. name = 'Crystallize',
  113. description = 'Shiver Armor also has a chance to encase the attacker in ice, stunning it for 2 seconds.',
  114. x = 0,
  115. y = 1,
  116. connectedTo = {'shiverarmor'},
  117. values = {
  118. [1] = '20% stun chance',
  119. [2] = '35% stun chance',
  120. [3] = '50% stun chance'
  121. },
  122. bonuses = function()
  123. local bonuses = {}
  124. local shiverarmor = data.ability.kuju.shiverarmor
  125. if shiverarmor.runeStunChance > 0 then
  126. table.insert(bonuses, {'Runes', lume.round(shiverarmor.runeStunChance * 100) .. '%', 'stun chance'})
  127. end
  128. return bonuses
  129. end
  130. },
  131. tundra = {
  132. level = 0,
  133. maxLevel = 1,
  134. costs = {200},
  135. prerequisites = {frostbite = 1},
  136. name = 'Tundra',
  137. description = 'The area of effect of frostbite is doubled.',
  138. x = 1,
  139. y = 1,
  140. connectedTo = {'frostbite'},
  141. values = {
  142. [1] = '+100% size'
  143. }
  144. },
  145. avalanche = {
  146. level = 0,
  147. maxLevel = 1,
  148. costs = {300},
  149. prerequisites = {shatter = 1},
  150. name = 'Avalanche',
  151. description = 'Frozen Orb is conjured with the force of an avalanche, knocking enemies back.',
  152. x = -1,
  153. y = 2,
  154. connectedTo = {'shatter'},
  155. values = {
  156. [1] = 'Knockback'
  157. },
  158. bonuses = function()
  159. local bonuses = {}
  160. local frozenorb = data.ability.kuju.frozenorb
  161. if frozenorb.runeKnockback > 0 then
  162. table.insert(bonuses, {'Runes', lume.round(frozenorb.runeKnockback), 'knockback distance'})
  163. end
  164. return bonuses
  165. end
  166. },
  167. frostnova = {
  168. level = 0,
  169. maxLevel = 1,
  170. costs = {500},
  171. prerequisites = {crystallize = 1},
  172. name = 'Frost Nova',
  173. description = 'Muju emits a powerful ring of frost when he dies, triggering Shiver Armor on all nearby enemies.',
  174. x = 0,
  175. y = 2,
  176. connectedTo = {'crystallize'},
  177. values = {
  178. [1] = 'Frost Nova'
  179. }
  180. },
  181. brainfreeze = {
  182. level = 0,
  183. maxLevel = 1,
  184. costs = {300},
  185. prerequisites = {tundra = 1},
  186. levelRequirement = 10,
  187. name = 'Brain Freeze',
  188. description = 'Frostbite sabotages its victims\' mental capacities. Any enemies caught within Frostbite are unable to use special abilities.',
  189. x = 1,
  190. y = 2,
  191. connectedTo = {'tundra'},
  192. values = {
  193. [1] = 'Silences enemies',
  194. }
  195. },
  196. windchill = {
  197. level = 0,
  198. maxLevel = 3,
  199. costs = {500, 500, 500},
  200. prerequisites = {},
  201. name = 'Windchill',
  202. description = 'Kuju\'s attacks slow enemies and deal extra damage based on her spirit.',
  203. x = -1,
  204. y = 3,
  205. values = {
  206. [1] = '0.4 damage per spirit, 20% slow for .5 seconds',
  207. [2] = '0.6 damage per spirit, 40% slow for .75 seconds',
  208. [3] = '0.8 damage per spirit, 60% slow for 1 second',
  209. }
  210. },
  211. wintersblight = {
  212. level = 0,
  213. maxLevel = 3,
  214. costs = {500, 750, 1000},
  215. prerequisites = {avalanche = 1, brainfreeze = 1},
  216. name = 'Winter\'s Blight',
  217. description = 'All spell hits from Kuju deal extra damage based on the target\'s current health.',
  218. x = 0,
  219. y = 3,
  220. connectedTo = {'avalanche', 'brainfreeze'},
  221. values = {
  222. [1] = '8% current health damage',
  223. [2] = '16% current health damage',
  224. [3] = '24% current health damage',
  225. }
  226. },
  227. veinsofice = {
  228. level = 0,
  229. maxLevel = 1,
  230. costs = {1000},
  231. prerequisites = {},
  232. name = 'Veins of Ice',
  233. description = 'Kuju\'s spirit is increased by a percentage.',
  234. x = 1,
  235. y = 3,
  236. values = {
  237. [1] = '15% increased spirit'
  238. },
  239. apply = function(self, unit)
  240. if self.level > 0 then
  241. unit.spirit = unit.spirit + (unit.spirit * .15)
  242. end
  243. end
  244. }
  245. }
  246. Kuju.featured = {
  247. {'frozenorb', 'Damage and slow enemies.'},
  248. {'shiverarmor', 'Muju damages and stuns attackers.'},
  249. {'frostbite', 'Deal high damage over time to all enemies in an area.'},
  250. {'frostnova', 'Muju damages all nearby enemies when he dies.'}
  251. }
  252. return Kuju