thuju.lua 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. local Thuju = {}
  2. Thuju.name = 'Thuju'
  3. Thuju.description = 'A bramble golem. Exceptional at soaking up and reflecting damage as well as crowd control.'
  4. ----------------
  5. -- Stats
  6. ----------------
  7. Thuju.height = 64
  8. Thuju.health = 150
  9. Thuju.damage = 14
  10. Thuju.range = 12
  11. Thuju.attackSpeed = 1.15
  12. Thuju.speed = 35
  13. Thuju.spirit = 0
  14. Thuju.haste = 1
  15. Thuju.cost = 10
  16. Thuju.attackParticleBone = 'region_lefthand'
  17. ----------------
  18. -- Upgrades
  19. ----------------
  20. Thuju.upgrades = {
  21. inspire = {
  22. level = 0,
  23. maxLevel = 3,
  24. costs = {200, 300, 400},
  25. levelRequirement = 1,
  26. name = 'Inspire',
  27. description = 'Thuju inspires allies when he spawns, buffing himself and nearby allies for 4 seconds. Each level adds an additional effect.',
  28. x = -1,
  29. y = 0,
  30. values = {
  31. [1] = '+50% speed',
  32. [2] = '+50% speed, +50% armor',
  33. [3] = '+50% speed, +50% armor, +30% attack speed',
  34. },
  35. apply = function(self, unit)
  36. if self.level > 0 then
  37. unit:addAbility('inspire')
  38. end
  39. end
  40. },
  41. wardofthorns = {
  42. level = 0,
  43. maxLevel = 5,
  44. costs = {100, 150, 200, 250, 300},
  45. levelRequirement = 1,
  46. name = 'Ward of Thorns',
  47. description = 'Thuju reflects a portion of melee damage dealt to him.',
  48. x = 0,
  49. y = 0,
  50. values = {
  51. [1] = '25% reflected',
  52. [2] = '45% reflected',
  53. [3] = '70% reflected',
  54. [4] = '100% reflected',
  55. [5] = '150% reflected'
  56. },
  57. bonuses = function()
  58. return data.ability.thuju.wardofthorns:bonuses()
  59. end,
  60. apply = function(self, unit)
  61. if self.level > 0 then
  62. unit:addAbility('wardofthorns')
  63. end
  64. end
  65. },
  66. tremor = {
  67. level = 0,
  68. maxLevel = 3,
  69. costs = {100, 200, 300},
  70. levelRequirement = 1,
  71. name = 'Tremor',
  72. description = 'Thuju slams the ground, damaging and stunning units in front of him.',
  73. x = 1,
  74. y = 0,
  75. values = {
  76. [1] = '30 damage, 1s stun',
  77. [2] = '60 damage, 2s stun',
  78. [3] = '90 damage, 3s stun',
  79. },
  80. bonuses = function()
  81. return data.ability.thuju.tremor:bonuses()
  82. end,
  83. apply = function(self, unit)
  84. if self.level > 0 then
  85. unit:addAbility('tremor')
  86. end
  87. end
  88. },
  89. briarlance = {
  90. level = 0,
  91. maxLevel = 1,
  92. costs = {300},
  93. prerequisites = {wardofthorns = 1},
  94. levelRequirement = 5,
  95. name = 'Briar Lance',
  96. description = 'Ward of Thorns also reflects a reduced amount for ranged attacks.',
  97. x = -1,
  98. y = 1,
  99. connectedTo = {'wardofthorns'},
  100. values = {
  101. [1] = 'Reflect ranged attacks (75% normal reflect)',
  102. }
  103. },
  104. vigor = {
  105. level = 0,
  106. maxLevel = 3,
  107. costs = {200, 300, 400},
  108. prerequisites = {wardofthorns = 1},
  109. levelRequirement = 3,
  110. name = 'Vigor',
  111. description = 'Each time Ward of Thorns is triggered, Thuju gains increased damage for 5 seconds. This can stack multiple times.',
  112. x = 0,
  113. y = 1,
  114. connectedTo = {'wardofthorns'},
  115. values = {
  116. [1] = '+10 damage, up to 2 stacks.',
  117. [2] = '+15 damage, up to 3 stacks.',
  118. [3] = '+20 damage, up to 4 stacks.',
  119. },
  120. bonuses = function()
  121. local bonuses = {}
  122. local wardofthorns = data.ability.thuju.wardofthorns
  123. if wardofthorns.runePerStack > 0 then
  124. table.insert(bonuses, {'Runes', math.round(wardofthorns.runePerStack), 'damage per stack'})
  125. end
  126. return bonuses
  127. end
  128. },
  129. fissure = {
  130. level = 0,
  131. maxLevel = 3,
  132. costs = {100, 150, 200},
  133. prerequisites = {tremor = 1},
  134. levelRequirement = 3,
  135. name = 'Fissure',
  136. description = 'The range of Tremor is increased.',
  137. x = 1,
  138. y = 1,
  139. connectedTo = {'tremor'},
  140. values = {
  141. [0] = '180 range',
  142. [1] = '240 range',
  143. [2] = '300 range',
  144. [3] = '360 range',
  145. }
  146. },
  147. unbreakable = {
  148. level = 0,
  149. maxLevel = 1,
  150. costs = {500},
  151. prerequisites = {impenetrablehide = 1, briarlance = 1},
  152. levelRequirement = 15,
  153. name = 'Unbreakable',
  154. description = 'The defensive bonus from Impenetrable Hide is increased against ranged attacks.',
  155. x = -1,
  156. y = 2,
  157. connectedTo = {'impenetrablehide', 'briarlance'},
  158. values = {
  159. [1] = '1.50x armor against ranged attacks',
  160. }
  161. },
  162. impenetrablehide = {
  163. level = 0,
  164. maxLevel = 3,
  165. costs = {300, 400, 500},
  166. prerequisites = {vigor = 1},
  167. levelRequirement = 10,
  168. name = 'Impenetrable Hide',
  169. description = 'Each stack of vigor also reduces the damage Thuju takes from attacks.',
  170. x = 0,
  171. y = 2,
  172. connectedTo = {'vigor'},
  173. values = {
  174. [1] = '10% armor per stack',
  175. [2] = '15% armor per stack',
  176. [3] = '20% armor per stack',
  177. }
  178. },
  179. staggeringentry = {
  180. level = 0,
  181. maxLevel = 1,
  182. costs = {500},
  183. prerequisites = {fissure = 1},
  184. levelRequirement = 15,
  185. name = 'Staggering Entry',
  186. description = 'Thuju has a 50% chance to cast tremor at no cooldown when he spawns.',
  187. x = 1,
  188. y = 2,
  189. connectedTo = {'fissure'},
  190. values = {
  191. [1] = '50% chance, 100% awesomeness',
  192. }
  193. },
  194. infusedcarapace = {
  195. level = 0,
  196. maxLevel = 1,
  197. costs = {1000},
  198. levelRequirement = 20,
  199. name = 'Infused Carapace',
  200. description = 'Thuju takes 35% reduced damage from spells.',
  201. x = -1,
  202. y = 3,
  203. values = {
  204. [1] = '35% spell damage reduction',
  205. },
  206. apply = function(self, unit)
  207. if self.level > 0 then
  208. unit:addAbility('infusedcarapace')
  209. end
  210. end
  211. },
  212. intimidate = {
  213. level = 0,
  214. maxLevel = 1,
  215. costs = {1500},
  216. levelRequirement = 20,
  217. name = 'Intimidate',
  218. description = 'When Thuju is brought into battle, he sharply lowers the attack of nearby enemies for 6 seconds.',
  219. x = 0,
  220. y = 3,
  221. values = {
  222. [1] = '50% less damage with attacks',
  223. },
  224. apply = function(self, unit)
  225. if self.level > 0 then
  226. unit:addAbility('intimidate')
  227. end
  228. end
  229. }
  230. }
  231. Thuju.featured = {
  232. {'wardofthorns', 'Reflect damage.'},
  233. {'tremor', 'Damage and stun enemies in a line.'},
  234. {'inspire', 'Buff nearby allies when summoned.'},
  235. {'impenetrablehide', 'Gain armor whenever damage is taken.'}
  236. }
  237. return Thuju