Guest User

Untitled

a guest
Jun 13th, 2013
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- ToME - Tales of Maj'Eyal
  2. -- Copyright (C) 2009, 2010, 2011, 2012, 2013 Nicolas Casalini
  3. --
  4. -- This program is free software: you can redistribute it and/or modify
  5. -- it under the terms of the GNU General Public License as published by
  6. -- the Free Software Foundation, either version 3 of the License, or
  7. -- (at your option) any later version.
  8. --
  9. -- This program is distributed in the hope that it will be useful,
  10. -- but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. -- GNU General Public License for more details.
  13. --
  14. -- You should have received a copy of the GNU General Public License
  15. -- along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. --
  17. -- Nicolas Casalini "DarkGod"
  18.  
  19. local Stats = require "engine.interface.ActorStats"
  20. local Talents = require "engine.interface.ActorTalents"
  21. local DamageType = require "engine.DamageType"
  22.  
  23. --load("/data/general/objects/egos/charged-attack.lua")
  24. --load("/data/general/objects/egos/charged-defensive.lua")
  25. --load("/data/general/objects/egos/charged-utility.lua")
  26.  
  27. newEntity{
  28. power_source = {technique=true},
  29. name = "cruel ", prefix=true, instant_resolve=true,
  30. keywords = {cruel=true},
  31. level_range = {1, 50},
  32. rarity = 3,
  33. cost = 4,
  34. wielder = {
  35. combat_critical_power = resolvers.mbonus_material(20, 10),
  36. },
  37. }
  38.  
  39. newEntity{
  40. power_source = {arcane=true},
  41. name = "earthen ", prefix=true, instant_resolve=true,
  42. keywords = {earthen=true},
  43. level_range = {1, 50},
  44. rarity = 5,
  45. cost = 10,
  46. wielder = {
  47. combat_armor = resolvers.mbonus_material(10, 2),
  48. combat_armor_hardiness = resolvers.mbonus_material(10, 2),
  49. combat_physresist = resolvers.mbonus_material(10, 2),
  50. },
  51. }
  52.  
  53. newEntity{
  54. power_source = {arcane=true},
  55. name = "potent ", prefix=true, instant_resolve=true,
  56. keywords = {potent=true},
  57. level_range = {1, 50},
  58. rarity = 3,
  59. cost = 5,
  60. combat = {
  61. dam = resolvers.mbonus_material(10, 2),
  62. },
  63. wielder = {
  64. combat_spellpower = resolvers.mbonus_material(3, 2),
  65. },
  66. resolvers.genericlast(function(e)
  67. e.wielder.inc_damage[e.combat.damtype] = e.combat.dam
  68. if e.combat.of_breaching then
  69. for d, v in pairs(e.wielder.inc_damage) do
  70. e.wielder.resists_pen[d] = math.ceil(e.combat.dam/2)
  71. end
  72. end
  73. end),
  74. }
  75.  
  76. newEntity{
  77. power_source = {arcane=true},
  78. name = "shimmering ", prefix=true, instant_resolve=true,
  79. keywords = {shimmering=true},
  80. level_range = {1, 50},
  81. rarity = 3,
  82. cost = 8,
  83. wielder = {
  84. max_mana = resolvers.mbonus_material(70, 30),
  85. mana_regen = resolvers.mbonus_material(30, 10, function(e, v) v=v/100 return 0, v end),
  86. },
  87. }
  88.  
  89. newEntity{
  90. power_source = {arcane=true},
  91. name = "surging ", prefix=true, instant_resolve=true,
  92. keywords = {surging=true},
  93. level_range = {1, 50},
  94. rarity = 5,
  95. cost = 10,
  96. wielder = {
  97. spellsurge_on_crit = resolvers.mbonus_material(10, 2),
  98. },
  99. }
  100.  
  101. newEntity{
  102. power_source = {arcane=true},
  103. name = "blighted ", prefix=true, instant_resolve=true,
  104. keywords = {blight=true},
  105. level_range = {15, 50},
  106. greater_ego = 1,
  107. rarity = 30,
  108. cost = 40,
  109. wielder = {
  110. vim_on_crit = resolvers.mbonus_material(5, 1),
  111. max_vim = resolvers.mbonus_material(30, 10),
  112. },
  113. }
  114.  
  115. newEntity{
  116. power_source = {arcane=true},
  117. name = "ethereal ", prefix=true, instant_resolve=true,
  118. keywords = {ethereal=true},
  119. level_range = {30, 50},
  120. greater_ego = 1,
  121. rarity = 30,
  122. cost = 40,
  123. wielder = {
  124. combat_spellpower = resolvers.mbonus_material(5, 3),
  125. combat_def = resolvers.mbonus_material(15, 10),
  126. damage_shield_penetrate = resolvers.mbonus_material(40, 10),
  127. },
  128. }
  129.  
  130. newEntity{
  131. power_source = {arcane=true},
  132. name = "greater ", prefix=true, instant_resolve=true,
  133. keywords = {greater=true},
  134. level_range = {30, 50},
  135. greater_ego = 1,
  136. rarity = 30,
  137. cost = 45,
  138. combat = {is_greater = true,},
  139. wielder = {
  140. combat_spellpower = resolvers.mbonus_material(4, 3),
  141. },
  142. resolvers.generic(function(e)
  143. local dam_tables = {
  144. magestaff = { engine.DamageType.FIRE, engine.DamageType.COLD, engine.DamageType.LIGHTNING, engine.DamageType.ARCANE },
  145. starstaff = { engine.DamageType.LIGHT, engine.DamageType.DARKNESS, engine.DamageType.TEMPORAL, engine.DamageType.PHYSICAL },
  146. vilestaff = { engine.DamageType.DARKNESS, engine.DamageType.BLIGHT, engine.DamageType.ACID, engine.DamageType.FIRE },
  147. }
  148. local d_table = dam_tables[e.flavor_name]
  149. for i = 1, #d_table do
  150. e.wielder.inc_damage[d_table[i]] = e.combat.dam
  151. end
  152. end),
  153. }
  154.  
  155. newEntity{
  156. power_source = {arcane=true},
  157. name = "void walker's ", prefix=true, instant_resolve=true,
  158. keywords = {['v. walkers']=true},
  159. level_range = {30, 50},
  160. greater_ego = 1,
  161. rarity = 40,
  162. cost = 30,
  163. wielder = {
  164. resists = {
  165. [DamageType.COLD] = resolvers.mbonus_material(10, 5),
  166. [DamageType.TEMPORAL] = resolvers.mbonus_material(10, 5),
  167. },
  168. resist_all_on_teleport = resolvers.mbonus_material(20, 5),
  169. defense_on_teleport = resolvers.mbonus_material(30, 5),
  170. effect_reduction_on_teleport = resolvers.mbonus_material(35, 10),
  171. paradox_reduce_fails = resolvers.mbonus_material(30, 20),
  172. },
  173. }
  174.  
  175. newEntity{
  176. power_source = {arcane=true},
  177. name = " of fate", suffix=true, instant_resolve=true,
  178. keywords = {fate=true},
  179. level_range = {1, 50},
  180. rarity = 5,
  181. cost = 10,
  182. wielder = {
  183. combat_physresist = resolvers.mbonus_material(10, 5),
  184. combat_mentalresist = resolvers.mbonus_material(10, 5),
  185. combat_spellresist = resolvers.mbonus_material(10, 5),
  186. combat_spellcrit = resolvers.mbonus_material(5, 3),
  187. },
  188. }
  189.  
  190. newEntity{
  191. power_source = {nature=true},
  192. name = " of illumination", suffix=true, instant_resolve=true,
  193. keywords = {illumination=true},
  194. level_range = {1, 50},
  195. rarity = 3,
  196. cost = 4,
  197. wielder = {
  198. combat_def = resolvers.mbonus_material(10, 5),
  199. lite = resolvers.mbonus_material(3, 2),
  200. },
  201. resolvers.charmt(Talents.T_ILLUMINATE, {1,2}, 6),
  202. }
  203.  
  204. newEntity{
  205. power_source = {arcane=true},
  206. name = " of might", suffix=true, instant_resolve=true,
  207. keywords = {might=true},
  208. level_range = {1, 50},
  209. rarity = 3,
  210. cost = 8,
  211. wielder = {
  212. combat_spellcrit = resolvers.mbonus_material(10, 5),
  213. },
  214. }
  215.  
  216. newEntity{
  217. power_source = {arcane=true},
  218. name = " of power", suffix=true, instant_resolve=true,
  219. keywords = {power=true},
  220. level_range = {1, 50},
  221. rarity = 10,
  222. cost = 10,
  223. wielder = {
  224. combat_spellpower = resolvers.mbonus_material(15, 4),
  225. },
  226. }
  227.  
  228. newEntity{
  229. power_source = {arcane=true},
  230. name = " of projection", suffix=true, instant_resolve=true,
  231. keywords = {projection=true},
  232. level_range = {1, 50},
  233. rarity = 10,
  234. cost = 15,
  235. wielder = {
  236. combat_spellpower = resolvers.mbonus_material(3, 2),
  237. combat_spellcrit = resolvers.mbonus_material(2, 2),
  238. },
  239. resolvers.charm("projects a bolt from the staff", 5,
  240. function(self, who)
  241. local tg = {type="bolt", range= 5 + self.material_level, speed=20, display = {particle=particle, trail=trail},}
  242. local weapon = who:hasStaffWeapon()
  243. if not weapon then
  244. game.logPlayer(who, "You have no appropriate weapon.")
  245. return
  246. end
  247. local combat = weapon.combat
  248.  
  249. local DamageType = require "engine.DamageType"
  250. local damtype = combat.damtype
  251. if damtype == DamageType.FIRE then explosion = "flame" particle = "bolt_fire" trail = "firetrail"
  252. elseif damtype == DamageType.COLD then explosion = "freeze" particle = "ice_shards" trail = "icetrail"
  253. elseif damtype == DamageType.ACID then explosion = "acid" particle = "bolt_acid" trail = "acidtrail"
  254. elseif damtype == DamageType.LIGHTNING then explosion = "lightning_explosion" particle = "bolt_lightning" trail = "lightningtrail"
  255. elseif damtype == DamageType.LIGHT then explosion = "light" particle = "bolt_light" trail = "lighttrail"
  256. elseif damtype == DamageType.DARKNESS then explosion = "dark" particle = "bolt_dark" trail = "darktrail"
  257. elseif damtype == DamageType.NATURE then explosion = "slime" particle = "bolt_slime" trail = "slimetrail"
  258. elseif damtype == DamageType.BLIGHT then explosion = "slime" particle = "bolt_slime" trail = "slimetrail"
  259. elseif damtype == DamageType.PHYSICAL then explosion = "dark" particle = "stone_shards" trail = "earthtrail"
  260. elseif damtype == DamageType.TEMPORAL then explosion = "light" particle = "temporal_bolt" trail = "lighttrail"
  261. else explosion = "manathrust" particle = "bolt_arcane" trail = "arcanetrail" damtype = DamageType.ARCANE
  262. end
  263.  
  264. local x, y = who:getTarget(tg)
  265. if not x or not y then return nil end
  266.  
  267. -- Compute damage
  268. local dam = who:combatDamage(combat)
  269. local damrange = who:combatDamageRange(combat)
  270. dam = rng.range(dam, dam * damrange)
  271. dam = who:spellCrit(dam)
  272.  
  273. who:projectile(tg, x, y, damtype, dam, {type=explosion})
  274.  
  275. game.logSeen(who, "%s fires a bolt from %s!", who.name:capitalize(), self.name)
  276. game:playSoundNear(who, "talents/arcane")
  277. return {id=true, used=true}
  278. end
  279. ),
  280. }
  281.  
  282. newEntity{
  283. power_source = {arcane=true},
  284. name = " of warding", suffix=true, instant_resolve=true,
  285. keywords = {warding=true},
  286. level_range = {1, 50},
  287. rarity = 10,
  288. cost = 20,
  289. wielder = {
  290. combat_armor = resolvers.mbonus_material(4, 4),
  291. combat_def = resolvers.mbonus_material(4, 4),
  292. learn_talent = {
  293. [Talents.T_WARD] = resolvers.mbonus_material(4, 1),
  294. },
  295. wards = {},
  296. },
  297. combat = {of_warding = true},
  298. resolvers.genericlast(function(e)
  299. for d, v in pairs(e.wielder.inc_damage) do
  300. e.wielder.wards[d] = 2
  301. end
  302. end),
  303. }
  304.  
  305. newEntity{
  306. power_source = {arcane=true},
  307. name = " of breaching", suffix=true, instant_resolve=true,
  308. keywords = {breaching=true},
  309. level_range = {30, 50},
  310. greater_ego = 1,
  311. rarity = 30,
  312. cost = 40,
  313. wielder = {
  314. resists_pen = {},
  315. },
  316. combat = {of_breaching = true},
  317. resolvers.genericlast(function(e)
  318. for d, v in pairs(e.wielder.inc_damage) do
  319. e.wielder.resists_pen[d] = v/2
  320. end
  321. end),
  322. }
  323.  
  324. newEntity{
  325. power_source = {arcane=true},
  326. name = " of blasting", suffix=true, instant_resolve=true,
  327. keywords = {blasting=true},
  328. level_range = {30, 50},
  329. greater_ego = 1,
  330. rarity = 30,
  331. cost = 40,
  332. wielder = {
  333. combat_spellpower = resolvers.mbonus_material(5, 5),
  334. combat_spellcrit = resolvers.mbonus_material(5, 5),
  335. },
  336. resolvers.charm("projects damage in a circle from the staff", 10,
  337. function(self, who)
  338. local tg = {type="ball", range=0, radius=self.material_level + 1, selffire=false}
  339. local weapon = who:hasStaffWeapon()
  340. local combat = weapon.combat
  341.  
  342. local DamageType = require "engine.DamageType"
  343. local damtype = combat.damtype
  344. if damtype == DamageType.FIRE then explosion = "flame"
  345. elseif damtype == DamageType.COLD then explosion = "freeze"
  346. elseif damtype == DamageType.ACID then explosion = "acid"
  347. elseif damtype == DamageType.LIGHTNING then explosion = "lightning_explosion"
  348. elseif damtype == DamageType.LIGHT then explosion = "light"
  349. elseif damtype == DamageType.DARKNESS then explosion = "dark"
  350. elseif damtype == DamageType.NATURE then explosion = "slime"
  351. elseif damtype == DamageType.BLIGHT then explosion = "slime"
  352. elseif damtype == DamageType.PHYSICAL then explosion = "dark"
  353. elseif damtype == DamageType.TEMPORAL then explosion = "light"
  354. else explosion = "manathrust" damtype = DamageType.ARCANE
  355. end
  356.  
  357. -- Compute damage
  358. local dam = who:combatDamage(combat)
  359. local damrange = who:combatDamageRange(combat)
  360. dam = rng.range(dam, dam * damrange)
  361. dam = who:spellCrit(dam)
  362.  
  363. who:project(tg, who.x, who.y, damtype, dam, {type=explosion})
  364.  
  365. game.logSeen(who, "%s unleashes an elemental blastwave from %s!", who.name:capitalize(), self.name)
  366. game:playSoundNear(who, "talents/arcane")
  367. return {id=true, used=true}
  368. end
  369. ),
  370. }
  371.  
  372. newEntity{
  373. power_source = {arcane=true},
  374. name = " of channeling", suffix=true, instant_resolve=true,
  375. keywords = {channeling=true},
  376. level_range = {30, 50},
  377. greater_ego = 1,
  378. rarity = 20,
  379. cost = 45,
  380. wielder = {
  381. combat_spellpower = resolvers.mbonus_material(10, 8),
  382. mana_regen = resolvers.mbonus_material(30, 10, function(e, v) v=v/100 return 0, v end),
  383. },
  384. resolvers.charm("channel mana (increasing mana regen by 500%% for ten turns)", 30,
  385. function(self, who)
  386. if who.mana_regen > 0 and not who:hasEffect(who.EFF_MANASURGE) then
  387. who:setEffect(who.EFF_MANASURGE, 10, {power=who.mana_regen * 5})
  388. else
  389. if who.mana_regen < 0 then
  390. game.logPlayer(who, "Your negative mana regeneration rate is unaffected by the staff.")
  391. elseif who:hasEffect(who.EFF_MANASURGE) then
  392. game.logPlayer(who, "Another mana surge is currently active.")
  393. else
  394. game.logPlayer(who, "Your nonexistant mana regeneration rate is unaffected by the staff.")
  395. end
  396. end
  397. game.logSeen(who, "%s is channeling mana!", who.name:capitalize())
  398. return {id=true, used=true}
  399. end
  400. ),
  401. }
  402.  
  403. newEntity{
  404. power_source = {arcane=true},
  405. name = " of greater warding", suffix=true, instant_resolve=true,
  406. keywords = {['g. warding']=true},
  407. level_range = {30, 50},
  408. greater_ego = 1,
  409. rarity = 30,
  410. cost = 40,
  411. wielder = {
  412. combat_armor = resolvers.mbonus_material(6, 6),
  413. combat_def = resolvers.mbonus_material(6, 6),
  414. learn_talent = {
  415. [Talents.T_WARD] = resolvers.mbonus_material(4, 1),
  416. },
  417. wards = {},
  418. },
  419. combat = {of_greater_warding = true},
  420. resolvers.genericlast(function(e)
  421. for d, v in pairs(e.wielder.inc_damage) do
  422. e.wielder.wards[d] = 3
  423. end
  424. end),
  425. }
  426.  
  427. newEntity{
  428. power_source = {arcane=true},
  429. name = " of invocation", suffix=true, instant_resolve=true,
  430. keywords = {invocation=true},
  431. level_range = {30, 50},
  432. greater_ego = 1,
  433. rarity = 30,
  434. cost = 40,
  435. wielder = {
  436. combat_spellpower = resolvers.mbonus_material(5, 5),
  437. spellsurge_on_crit = resolvers.mbonus_material(5, 5),
  438. },
  439. resolvers.charm("projects damage in a cone from the staff", 8,
  440. function(self, who)
  441. local tg = {type="cone", range=0, radius=self.material_level * 2, selffire=false}
  442. local weapon = who:hasStaffWeapon()
  443. local combat = weapon.combat
  444.  
  445. local DamageType = require "engine.DamageType"
  446. local damtype = combat.damtype
  447. if damtype == DamageType.FIRE then explosion = "flame"
  448. elseif damtype == DamageType.COLD then explosion = "freeze"
  449. elseif damtype == DamageType.ACID then explosion = "acid"
  450. elseif damtype == DamageType.LIGHTNING then explosion = "lightning_explosion"
  451. elseif damtype == DamageType.LIGHT then explosion = "light"
  452. elseif damtype == DamageType.DARKNESS then explosion = "dark"
  453. elseif damtype == DamageType.NATURE then explosion = "slime"
  454. elseif damtype == DamageType.BLIGHT then explosion = "slime"
  455. elseif damtype == DamageType.PHYSICAL then explosion = "dark"
  456. elseif damtype == DamageType.TEMPORAL then explosion = "light"
  457. else explosion = "manathrust" damtype = DamageType.ARCANE
  458. end
  459.  
  460. local x, y = who:getTarget(tg)
  461. if not x or not y then return nil end
  462.  
  463. -- Compute damage
  464. local dam = who:combatDamage(combat)
  465. local damrange = who:combatDamageRange(combat)
  466. dam = rng.range(dam, dam * damrange)
  467. dam = who:spellCrit(dam)
  468.  
  469. who:project(tg, x, y, damtype, dam, {type=explosion})
  470.  
  471. game.logSeen(who, "%s conjures a cone of elemental energy from %s!", who.name:capitalize(), self.name)
  472. game:playSoundNear(who, "talents/arcane")
  473. return {id=true, used=true}
  474. end
  475. ),
  476. }
  477.  
  478. newEntity{
  479. power_source = {arcane=true},
  480. name = " of protection", suffix=true, instant_resolve=true,
  481. keywords = {protection=true},
  482. level_range = {30, 50},
  483. greater_ego = 1,
  484. rarity = 30,
  485. cost = 40,
  486. wielder = {
  487. resists = {},
  488. },
  489. combat = {of_protection = true},
  490. resolvers.genericlast(function(e)
  491. for d, v in pairs(e.wielder.inc_damage) do
  492. e.wielder.resists[d] = v/2
  493. end
  494. end),
  495. }
  496.  
  497. newEntity{
  498. power_source = {arcane=true},
  499. name = " of wizardry", suffix=true, instant_resolve=true,
  500. keywords = {wizardry=true},
  501. level_range = {30, 50},
  502. greater_ego = 1,
  503. rarity = 18,
  504. cost = 45,
  505. wielder = {
  506. combat_spellpower = resolvers.mbonus_material(10, 2),
  507. max_mana = resolvers.mbonus_material(100, 10),
  508. inc_stats = { [Stats.STAT_MAG] = resolvers.mbonus_material(5, 1), [Stats.STAT_WIL] = resolvers.mbonus_material(5, 1) },
  509. },
  510. }
  511.  
  512. newEntity{
  513. power_source = {nature=true},
  514. name = "lifebinding ", prefix=true, instant_resolve=true,
  515. keywords = {lifebinding=true},
  516. level_range = {30, 50},
  517. greater_ego = 1,
  518. rarity = 16,
  519. cost = 35,
  520. wielder = {
  521. combat_spellpower = resolvers.mbonus_material(7, 3),
  522. life_regen = resolvers.mbonus_material(15, 5, function(e, v) v=v/10 return 0, v end),
  523. healing_factor = resolvers.mbonus_material(20, 10, function(e, v) v=v/100 return 0, v end),
  524. inc_stats = {
  525. [Stats.STAT_CON] = resolvers.mbonus_material(4, 3),
  526. },
  527. },
  528. }
  529.  
  530. newEntity{
  531. power_source = {arcane=true},
  532. name = "infernal ", prefix=true, instant_resolve=true,
  533. keywords = {infernal=true},
  534. level_range = {30, 50},
  535. greater_ego = 1,
  536. rarity = 16,
  537. cost = 35,
  538. wielder = {
  539. combat_spellpower = resolvers.mbonus_material(7, 3),
  540. combat_critical_power = resolvers.mbonus_material(25, 15),
  541. see_invisible = resolvers.mbonus_material(15, 5),
  542. },
  543. },
  544. }
  545.  
  546. newEntity{
  547. power_source = {arcane=true},
  548. name = "bloodlich's ", prefix=true, instant_resolve=true,
  549. keywords = {bloodlich=true},
  550. level_range = {40, 50},
  551. greater_ego = 1,
  552. rarity = 40,
  553. cost = 90,
  554. wielder = {
  555. inc_stats = {
  556. [Stats.STAT_CUN] = resolvers.mbonus_material(9, 1),
  557. [Stats.STAT_CON] = resolvers.mbonus_material(9, 1),
  558. [Stats.STAT_MAG] = resolvers.mbonus_material(9, 1),
  559. },
  560. combat_critical_power = resolvers.mbonus_material(20, 10),
  561. vim_on_crit = resolvers.mbonus_material(5, 3),
  562. max_vim = resolvers.mbonus_material(30, 20),
  563. max_negative = resolvers.mbonus_material(30, 20),
  564. negative_regen = 0.2
  565. },
  566. }
  567.  
  568. --[[
  569. newEntity{
  570. power_source = {arcane=true},
  571. name = "magma ", prefix=true, instant_resolve=true,
  572. keywords = {magma=true},
  573. level_range = {1, 50},
  574. rarity = 3,
  575. cost = 5,
  576. wielder = {
  577. inc_damage={ [DamageType.FIRE] = resolvers.mbonus_material(25, 8), },
  578. },
  579. }
  580.  
  581. newEntity{
  582. power_source = {arcane=true},
  583. name = "temporal ", prefix=true, instant_resolve=true,
  584. keywords = {temporal=true},
  585. level_range = {1, 50},
  586. rarity = 3,
  587. cost = 5,
  588. wielder = {
  589. inc_damage={ [DamageType.TEMPORAL] = resolvers.mbonus_material(25, 8), },
  590. },
  591. }
  592.  
  593. newEntity{
  594. power_source = {arcane=true},
  595. name = "icy ", prefix=true, instant_resolve=true,
  596. keywords = {icy=true},
  597. level_range = {1, 50},
  598. rarity = 3,
  599. cost = 5,
  600. wielder = {
  601. inc_damage={ [DamageType.COLD] = resolvers.mbonus_material(25, 8), },
  602. },
  603. }
  604.  
  605. newEntity{
  606. power_source = {arcane=true},
  607. name = "acidic ", prefix=true, instant_resolve=true,
  608. keywords = {acidic=true},
  609. level_range = {1, 50},
  610. rarity = 3,
  611. cost = 5,
  612. wielder = {
  613. inc_damage={ [DamageType.ACID] = resolvers.mbonus_material(25, 8), },
  614. },
  615. }
  616.  
  617. newEntity{
  618. power_source = {arcane=true},
  619. name = "crackling ", prefix=true, instant_resolve=true,
  620. keywords = {crackling=true},
  621. level_range = {1, 50},
  622. rarity = 3,
  623. cost = 5,
  624. wielder = {
  625. inc_damage={ [DamageType.LIGHTNING] = resolvers.mbonus_material(25, 8), },
  626. },
  627. }
  628.  
  629. newEntity{
  630. power_source = {nature=true},
  631. name = "naturalist's ", prefix=true, instant_resolve=true,
  632. keywords = {naturalist=true},
  633. level_range = {1, 50},
  634. rarity = 3,
  635. cost = 5,
  636. wielder = {
  637. inc_damage={ [DamageType.NATURE] = resolvers.mbonus_material(25, 8), },
  638. },
  639. }
  640.  
  641. newEntity{
  642. power_source = {nature=true},
  643. name = "sunbathed ", prefix=true, instant_resolve=true,
  644. keywords = {sunbathed=true},
  645. level_range = {1, 50},
  646. rarity = 3,
  647. cost = 5,
  648. wielder = {
  649. inc_damage={ [DamageType.LIGHT] = resolvers.mbonus_material(25, 8), },
  650. },
  651. }
  652.  
  653. newEntity{
  654. power_source = {nature=true},
  655. name = "shadow ", prefix=true, instant_resolve=true,
  656. keywords = {shadow=true},
  657. level_range = {1, 50},
  658. rarity = 3,
  659. cost = 5,
  660. wielder = {
  661. inc_damage={ [DamageType.DARKNESS] = resolvers.mbonus_material(25, 8), },
  662. },
  663. }
  664.  
  665. newEntity{
  666. power_source = {arcane=true},
  667. name = " of conveyance", suffix=true, instant_resolve=true,
  668. keywords = {conveyance=true},
  669. level_range = {1, 50},
  670. rarity = 10,
  671. cost = 10,
  672. wielder = {
  673. talents_types_mastery = {
  674. ["spell/conveyance"] = resolvers.mbonus_material(1, 1, function(e, v) v=v/10 return 0, v end),
  675. },
  676. },
  677. max_power = 120, power_regen = 1,
  678. use_power = { name = "teleport you anywhere on the level, randomly", power = 70, use = function(self, who)
  679. game.level.map:particleEmitter(who.x, who.y, 1, "teleport")
  680. who:teleportRandom(who.x, who.y, 200)
  681. game.level.map:particleEmitter(who.x, who.y, 1, "teleport")
  682. game.logSeen(who, "%s uses %s!", who.name:capitalize(), self:getName{no_count=true})
  683. return {id=true, used=true}
  684. end}
  685. }
  686.  
  687. newEntity{
  688. power_source = {arcane=true},
  689. name = " of blasting", suffix=true, instant_resolve=true,
  690. keywords = {blasting=true},
  691. level_range = {30, 50},
  692. greater_ego = 1,
  693. rarity = 18,
  694. cost = 45,
  695. wielder = {
  696. },
  697. max_power = 15, power_regen = 1,
  698. use_talent = { id = Talents.T_BLASTWAVE, level = 2, power = 10 },
  699. }
  700.  
  701. newEntity{
  702. power_source = {nature=true},
  703. name = "lifebinding ", prefix=true, instant_resolve=true,
  704. keywords = {lifebinding=true},
  705. level_range = {30, 50},
  706. greater_ego = 1,
  707. rarity = 16,
  708. cost = 35,
  709. wielder = {
  710. combat_spellpower = resolvers.mbonus_material(7, 3),
  711. life_regen = resolvers.mbonus_material(15, 5, function(e, v) v=v/10 return 0, v end),
  712. healing_factor = resolvers.mbonus_material(20, 10, function(e, v) v=v/100 return 0, v end),
  713. inc_stats = {
  714. [Stats.STAT_CON] = resolvers.mbonus_material(4, 3),
  715. },
  716. },
  717. }
  718.  
  719. newEntity{
  720. power_source = {arcane=true},
  721. name = "infernal ", prefix=true, instant_resolve=true,
  722. keywords = {infernal=true},
  723. level_range = {30, 50},
  724. greater_ego = 1,
  725. rarity = 16,
  726. cost = 35,
  727. wielder = {
  728. combat_spellpower = resolvers.mbonus_material(7, 3),
  729. see_invisible = resolvers.mbonus_material(15, 5),
  730. inc_damage = {
  731. [DamageType.FIRE] = resolvers.mbonus_material(20, 5),
  732. [DamageType.BLIGHT] = resolvers.mbonus_material(20, 5),
  733. },
  734. },
  735. }
  736.  
  737. newEntity{
  738. power_source = {arcane=true},
  739. name = "chronomancer's ", prefix=true, instant_resolve=true,
  740. keywords = {chronomancer=true},
  741. level_range = {30, 50},
  742. greater_ego = 1,
  743. rarity = 16,
  744. cost = 35,
  745. wielder = {
  746. combat_spellpower = resolvers.mbonus_material(7, 3),
  747. movement_speed = 0.1,
  748. inc_damage = {
  749. [DamageType.TEMPORAL] = resolvers.mbonus_material(20, 5),
  750. },
  751. },
  752.  
  753. }
  754.  
  755. newEntity{
  756. power_source = {nature=true},
  757. name = "abyssal ", prefix=true, instant_resolve=true,
  758. keywords = {abyssal=true},
  759. level_range = {30, 50},
  760. greater_ego = 1,
  761. rarity = 40,
  762. cost = 80,
  763. wielder = {
  764. inc_damage = {
  765. [DamageType.COLD] = resolvers.mbonus_material(25, 5),
  766. [DamageType.DARKNESS] = resolvers.mbonus_material(25, 5),
  767. },
  768. resists_pen = {
  769. [DamageType.COLD] = resolvers.mbonus_material(15, 5),
  770. [DamageType.DARKNESS] = resolvers.mbonus_material(15, 5),
  771. },
  772. },
  773. }
  774.  
  775. newEntity{
  776. power_source = {arcane=true},
  777. name = "magelord's ", prefix=true, instant_resolve=true,
  778. keywords = {magelord=true},
  779. level_range = {10, 50},
  780. greater_ego = 1,
  781. rarity = 40,
  782. cost = 60,
  783. wielder = {
  784. max_mana = resolvers.mbonus_material(100, 20),
  785. combat_spellpower = resolvers.mbonus_material(20, 5),
  786. },
  787. }
  788.  
  789. newEntity{
  790. power_source = {arcane=true},
  791. name = "polar ", prefix=true, instant_resolve=true,
  792. keywords = {polar=true},
  793. level_range = {10, 50},
  794. greater_ego = 1,
  795. rarity = 15,
  796. cost = 30,
  797. wielder = {
  798. combat_spellpower = resolvers.mbonus_material(12, 3),
  799. inc_damage = {
  800. [DamageType.COLD] = resolvers.mbonus_material(15, 5),
  801. },
  802. on_melee_hit = {
  803. [DamageType.ICE] = resolvers.mbonus_material(10, 5),
  804. },
  805. },
  806. }
  807.  
  808. newEntity{
  809. power_source = {arcane=true},
  810. name = "bloodlich's ", prefix=true, instant_resolve=true,
  811. keywords = {bloodlich=true},
  812. level_range = {40, 50},
  813. greater_ego = 1,
  814. rarity = 40,
  815. cost = 90,
  816. wielder = {
  817. inc_stats = {
  818. [Stats.STAT_MAG] = resolvers.mbonus_material(9, 1),
  819. },
  820. inc_damage = {
  821. [DamageType.ACID] = resolvers.mbonus_material(10, 5),
  822. [DamageType.LIGHTNING] = resolvers.mbonus_material(10, 5),
  823. [DamageType.FIRE] = resolvers.mbonus_material(10, 5),
  824. [DamageType.COLD] = resolvers.mbonus_material(10, 5),
  825. },
  826. },
  827. }
  828.  
  829. newEntity{
  830. power_source = {arcane=true},
  831. name = " of conflagration", suffix=true, instant_resolve=true,
  832. keywords = {conflagration=true},
  833. level_range = {30, 50},
  834. greater_ego = 1,
  835. rarity = 30,
  836. cost = 60,
  837. wielder = {
  838. mana_regen = resolvers.mbonus_material(50, 10, function(e, v) v=v/100 return 0, -v end),
  839. },
  840. }
  841.  
  842. newEntity{
  843. power_source = {arcane=true},
  844. name = " of lightning", suffix=true, instant_resolve=true,
  845. keywords = {lightning=true},
  846. level_range = {30, 50},
  847. greater_ego = 1,
  848. rarity = 30,
  849. cost = 60,
  850. max_power = 30, power_regen = 1,
  851. use_talent = { id = Talents.T_CHAIN_LIGHTNING, level = 3, power = 20 },
  852. wielder = {
  853.  
  854. },
  855. }
  856.  
  857. newEntity{
  858. power_source = {arcane=true},
  859. name = " of the stars", suffix=true, instant_resolve=true,
  860. keywords = {stars=true},
  861. level_range = {1, 50},
  862. greater_ego = 1,
  863. rarity = 15,
  864. cost = 30,
  865. max_power = 30, power_regen = 1,
  866. use_talent = { id = Talents.T_STARFALL, level = 2, power = 20 },
  867. wielder = {
  868. combat_spellpower = resolvers.mbonus_material(12, 3),
  869. },
  870. }
  871.  
  872. newEntity{
  873. power_source = {arcane=true},
  874. name = " of ruination", suffix=true, instant_resolve=true,
  875. keywords = {ruination=true},
  876. level_range = {1, 50},
  877. greater_ego = 1,
  878. rarity = 15,
  879. cost = 30,
  880. max_power = 40, power_regen = 1,
  881. use_talent = { id = Talents.T_CORRUPTED_NEGATION, level = 2, power = 30 },
  882. wielder = {
  883. },
  884. }
  885.  
  886.  
  887. newEntity{
  888. power_source = {arcane=true},
  889. name = " of divination", suffix=true, instant_resolve=true,
  890. keywords = {divination=true},
  891. level_range = {1, 50},
  892. rarity = 8,
  893. cost = 8,
  894. wielder = {
  895. talents_types_mastery = {
  896. ["spell/divination"] = resolvers.mbonus_material(1, 1, function(e, v) v=v/10 return 0, v end),
  897. },
  898. },
  899. }
  900.  
  901. ]]
Advertisement
Add Comment
Please, Sign In to add comment