Commit c09e52e9ab4fc6f86107904046335bc068a3a45f

Authored by Chris Davidson
1 parent 0686fb99

Very cursory revision of Staff egos

... ... @@ -21,10 +21,6 @@ local Stats = require "engine.interface.ActorStats"
21 21 local Talents = require "engine.interface.ActorTalents"
22 22 local DamageType = require "engine.DamageType"
23 23
24   ---load("/data/general/objects/egos/charged-attack.lua")
25   ---load("/data/general/objects/egos/charged-defensive.lua")
26   ---load("/data/general/objects/egos/charged-utility.lua")
27   -
28 24 newEntity{
29 25 power_source = {technique=true},
30 26 name = "cruel ", prefix=true, instant_resolve=true,
... ... @@ -97,16 +93,15 @@ newEntity{
97 93 power_source = {arcane=true},
98 94 name = "blighted ", prefix=true, instant_resolve=true,
99 95 keywords = {blight=true},
100   - level_range = {30, 50},
  96 + level_range = {20, 50},
101 97 greater_ego = 1,
102 98 rarity = 30,
103 99 cost = 40,
104 100 wielder = {
105 101 vim_on_crit = resolvers.mbonus_material(5, 1),
106 102 max_vim = resolvers.mbonus_material(30, 10),
107   - melee_project = {
108   - [DamageType.ITEM_BLIGHT_DISEASE] = resolvers.mbonus_material(15, 5),
109   - },
  103 + combat_spellpower = resolvers.mbonus_material(10, 2),
  104 + combat_spellcrit = resolvers.mbonus_material(5, 5),
110 105 },
111 106 }
112 107
... ... @@ -114,31 +109,30 @@ newEntity{
114 109 power_source = {arcane=true},
115 110 name = "ethereal ", prefix=true, instant_resolve=true,
116 111 keywords = {ethereal=true},
117   - level_range = {30, 50},
  112 + level_range = {20, 50},
118 113 greater_ego = 1,
119 114 rarity = 30,
120 115 cost = 40,
121 116 wielder = {
122 117 combat_spellpower = resolvers.mbonus_material(5, 3),
123 118 combat_def = resolvers.mbonus_material(15, 10),
124   - damage_shield_penetrate = resolvers.mbonus_material(40, 10),
125   - melee_project = {
126   - [DamageType.RANDOM_CONFUSION] = resolvers.mbonus_material(8, 4),
127   - },
  119 + damage_shield_penetrate = resolvers.mbonus_material(30, 10),
  120 + shield_factor=resolvers.mbonus_material(20, 5),
128 121 },
129 122 }
130 123
  124 +-- Applies all of a Command Staff subtype instead of just one selected element.. I think
131 125 newEntity{
132 126 power_source = {arcane=true},
133 127 name = "greater ", prefix=true, instant_resolve=true,
134 128 keywords = {greater=true},
135   - level_range = {30, 50},
  129 + level_range = {20, 50},
136 130 greater_ego = 1,
137 131 rarity = 30,
138 132 cost = 45,
139 133 combat = {is_greater = true,},
140 134 wielder = {
141   - combat_spellpower = resolvers.mbonus_material(4, 3),
  135 + combat_spellpower = resolvers.mbonus_material(10, 3),
142 136 },
143 137 resolvers.command_staff(),
144 138 }
... ... @@ -147,7 +141,7 @@ newEntity{
147 141 power_source = {arcane=true},
148 142 name = "void walker's ", prefix=true, instant_resolve=true,
149 143 keywords = {['v. walkers']=true},
150   - level_range = {30, 50},
  144 + level_range = {20, 50},
151 145 greater_ego = 1,
152 146 rarity = 40,
153 147 cost = 30,
... ... @@ -178,6 +172,7 @@ newEntity{
178 172 },
179 173 }
180 174
  175 +-- this ego needs something
181 176 newEntity{
182 177 power_source = {nature=true},
183 178 name = " of illumination", suffix=true, instant_resolve=true,
... ... @@ -188,9 +183,6 @@ newEntity{
188 183 wielder = {
189 184 combat_def = resolvers.mbonus_material(10, 5),
190 185 lite = resolvers.mbonus_material(3, 2),
191   - melee_project = {
192   - [DamageType.ITEM_LIGHT_BLIND] = resolvers.mbonus_material(15, 5),
193   - },
194 186 },
195 187 resolvers.charmt(Talents.T_ILLUMINATE, {1,2}, 6, "T_GLOBAL_CD",
196 188 {no_npc_use = function(self, who) return self:restrictAIUseObject(who) end} -- don't let dumb ai do stupid things with this
... ... @@ -221,82 +213,7 @@ newEntity{
221 213 },
222 214 }
223 215
224   -newEntity{
225   - power_source = {arcane=true},
226   - name = " of projection", suffix=true, instant_resolve=true,
227   - keywords = {projection=true},
228   - level_range = {1, 50},
229   - rarity = 10,
230   - cost = 15,
231   - wielder = {
232   - combat_spellpower = resolvers.mbonus_material(3, 2),
233   - combat_spellcrit = resolvers.mbonus_material(2, 2),
234   - },
235   - resolvers.charm(
236   - function(self, who)
237   - local damtype = engine.DamageType:get(self.combat.element or "ARCANE")
238   - local range = self.use_power.range(self)
239   - local dam = who:damDesc(damtype, self.use_power.damage(self, who))
240   - local damrange = self.use_power.damrange(self, who)
241   - return ("project a bolt elemental energy from the staff (to range %d) dealing %0.2f to %0.2f %s damage"):format(range, dam, dam*damrange, damtype.name)
242   - end,
243   - 5,
244   - function(self, who)
245   - local tg = self.use_power.target(self, who)
246   - local weapon = who:hasStaffWeapon()
247   - if not weapon then
248   - game.logPlayer(who, "You have no appropriate weapon.")
249   - return
250   - end
251   - local combat = weapon.combat
252   - local explosion, particle, trail
253   -
254   - local DamageType = require "engine.DamageType"
255   - local damtype = combat.element or DamageType.ARCANE
256   - if damtype == DamageType.FIRE then explosion = "flame" particle = "bolt_fire" trail = "firetrail"
257   - elseif damtype == DamageType.COLD then explosion = "freeze" particle = "ice_shards" trail = "icetrail"
258   - elseif damtype == DamageType.ACID then explosion = "acid" particle = "bolt_acid" trail = "acidtrail"
259   - elseif damtype == DamageType.LIGHTNING then explosion = "lightning_explosion" particle = "bolt_lightning" trail = "lightningtrail"
260   - elseif damtype == DamageType.LIGHT then explosion = "light" particle = "bolt_light" trail = "lighttrail"
261   - elseif damtype == DamageType.DARKNESS then explosion = "dark" particle = "bolt_dark" trail = "darktrail"
262   - elseif damtype == DamageType.NATURE then explosion = "slime" particle = "bolt_slime" trail = "slimetrail"
263   - elseif damtype == DamageType.BLIGHT then explosion = "slime" particle = "bolt_slime" trail = "slimetrail"
264   - elseif damtype == DamageType.PHYSICAL then explosion = "dark" particle = "stone_shards" trail = "earthtrail"
265   - elseif damtype == DamageType.TEMPORAL then explosion = "light" particle = "temporal_bolt" trail = "lighttrail"
266   - else explosion = "manathrust" particle = "bolt_arcane" trail = "arcanetrail" --damtype = DamageType.ARCANE
267   - end
268   -
269   - local x, y = who:getTarget(tg)
270   - if not x or not y then return nil end
271   -
272   - -- Compute damage
273   - local dam = self.use_power.damage(self, who)
274   - local damrange = self.use_power.damrange(self, who)
275   - local damTyp = DamageType:get(damtype or "ARCANE")
276   - tg.name = damTyp.name .. " bolt"
277   - dam = rng.range(dam, dam * damrange)
278   - dam = who:spellCrit(dam)
279   -
280   - game.logSeen(who, "%s fires a bolt of %s%s#LAST# energy from %s %s!", who.name:capitalize(), damTyp.text_color, damTyp.name, who:his_her(), self:getName({no_add_name = true, do_color = true}))
281   - who:projectile(tg, x, y, damtype, dam, {type=explosion, particle=particle, trail=trail})
282   -
283   - game:playSoundNear(who, "talents/arcane")
284   - return {id=true, used=true}
285   - end,
286   - "T_GLOBAL_CD",
287   - {range = function(self, who) return 5 + self.material_level end,
288   - target = function(self, who) return {type="bolt", range=self.use_power.range(self), speed=20, display = {particle=particle, trail=trail},} end,
289   - requires_target = true,
290   - tactical = { ATTACK = function(who, t, aitarget)
291   - local weapon = who:hasStaffWeapon()
292   - if not weapon or not weapon.combat then return 1 end
293   - return {[weapon.combat.element or "ARCANE"] = 1 + (who.talents["T_STAFF_MASTERY"] or 0)/2.5} -- tactical AI adds staff skill to effective talent level of this ability
294   - end },
295   - damage = function(self, who) return who:combatDamage(self.combat) end,
296   - damrange = function(self, who) return who:combatDamageRange(self.combat) end}
297   - ),
298   -}
299   -
  216 +-- Adds wards for each element on the staff?
300 217 newEntity{
301 218 power_source = {arcane=true},
302 219 name = " of warding", suffix=true, instant_resolve=true,
... ... @@ -317,11 +234,12 @@ newEntity{
317 234 resolvers.command_staff(),
318 235 }
319 236
  237 +-- 50% of all staff elements as resistance penetration
320 238 newEntity{
321 239 power_source = {arcane=true},
322 240 name = " of breaching", suffix=true, instant_resolve=true,
323 241 keywords = {breaching=true},
324   - level_range = {30, 50},
  242 + level_range = {20, 50},
325 243 greater_ego = 1,
326 244 rarity = 30,
327 245 cost = 40,
... ... @@ -335,95 +253,21 @@ newEntity{
335 253
336 254 newEntity{
337 255 power_source = {arcane=true},
338   - name = " of blasting", suffix=true, instant_resolve=true,
339   - keywords = {blasting=true},
340   - level_range = {30, 50},
341   - greater_ego = 1,
342   - rarity = 30,
343   - cost = 40,
344   - wielder = {
345   - combat_spellpower = resolvers.mbonus_material(5, 5),
346   - combat_spellcrit = resolvers.mbonus_material(5, 5),
347   - },
348   - resolvers.charm(
349   - function(self, who)
350   - local damtype = engine.DamageType:get(self.combat.element or "ARCANE")
351   - local radius = self.use_power.radius(self)
352   - local dam = who:damDesc(damtype, self.use_power.damage(self, who))
353   - local damrange = self.use_power.damrange(self, who)
354   - return ("unleash an elemental blastwave, dealing %0.2f to %0.2f %s damage in a radius %d around the user"):format(dam, dam*damrange, damtype.name, radius)
355   - end,
356   - 10,
357   - function(self, who)
358   - local tg = self.use_power.target(self, who)
359   - local weapon = who:hasStaffWeapon()
360   - if not weapon then return end
361   - local combat = weapon.combat
362   - if not combat then return end
363   -
364   - local DamageType = require "engine.DamageType"
365   - local damtype = combat.element or DamageType.ARCANE
366   - local explosion
367   -
368   - if damtype == DamageType.FIRE then explosion = "flame"
369   - elseif damtype == DamageType.COLD then explosion = "freeze"
370   - elseif damtype == DamageType.ACID then explosion = "acid"
371   - elseif damtype == DamageType.LIGHTNING then explosion = "lightning_explosion"
372   - elseif damtype == DamageType.LIGHT then explosion = "light"
373   - elseif damtype == DamageType.DARKNESS then explosion = "dark"
374   - elseif damtype == DamageType.NATURE then explosion = "slime"
375   - elseif damtype == DamageType.BLIGHT then explosion = "slime"
376   - elseif damtype == DamageType.PHYSICAL then explosion = "dark"
377   - elseif damtype == DamageType.TEMPORAL then explosion = "light"
378   - else explosion = "manathrust" -- damtype = DamageType.ARCANE
379   - end
380   -
381   - -- Compute damage
382   - local dam = self.use_power.damage(self, who)
383   - local damrange = self.use_power.damrange(self, who)
384   - local damTyp = DamageType:get(damtype or "ARCANE")
385   - dam = rng.range(dam, dam * damrange)
386   - dam = who:spellCrit(dam)
387   -
388   - game.logSeen(who, "%s unleashes a blastwave of %s%s#LAST# energy from %s %s!", who.name:capitalize(), damTyp.text_color, damTyp.name, who:his_her(), self:getName({no_add_name = true, do_color = true}))
389   - who:project(tg, who.x, who.y, damtype, dam, {type=explosion})
390   -
391   - game:playSoundNear(who, "talents/arcane")
392   - return {id=true, used=true}
393   - end,
394   - "T_GLOBAL_CD",
395   - {range = 0,
396   - radius = function(self, who) return 1 + self.material_level end,
397   - target = function(self, who) return {type="ball", range=self.use_power.range, radius=self.use_power.radius(self, who), selffire=false} end,
398   - requires_target = true,
399   - no_npc_use = function(self, who) return self:restrictAIUseObject(who) end, -- don't let dumb ai blow up friends
400   - tactical = { ATTACKAREA = function(who, t, aitarget)
401   - local weapon = who:hasStaffWeapon()
402   - if not weapon or not weapon.combat then return 1 end
403   - return {[weapon.combat.element or "ARCANE"] = 1 + (who.talents["T_STAFF_MASTERY"] or 0)/2.5} -- tactical AI adds staff skill to effective talent level of this ability
404   - end },
405   - damage = function(self, who) return who:combatDamage(self.combat) end,
406   - damrange = function(self, who) return who:combatDamageRange(self.combat) end}
407   - ),
408   -}
409   -
410   -newEntity{
411   - power_source = {arcane=true},
412 256 name = " of channeling", suffix=true, instant_resolve=true,
413 257 keywords = {channeling=true},
414   - level_range = {30, 50},
  258 + level_range = {20, 50},
415 259 greater_ego = 1,
416 260 rarity = 20,
417 261 cost = 45,
418 262 wielder = {
419 263 combat_spellpower = resolvers.mbonus_material(10, 8),
420   - mana_regen = resolvers.mbonus_material(30, 10, function(e, v) v=v/100 return 0, v end),
  264 + mana_regen = resolvers.mbonus_material(50, 10, function(e, v) v=v/100 return 0, v end),
421 265 },
422   - resolvers.charm("channel mana (increasing mana regeneration by 500%% for ten turns)", 30,
  266 + resolvers.charm("channel mana (increasing mana regeneration by 2000%% for 5 turns)", 30,
423 267 function(self, who)
424 268 if who.mana_regen > 0 and not who:hasEffect(who.EFF_MANASURGE) then
425 269 game.logSeen(who, "%s channels mana through %s %s!", who.name:capitalize(), who:his_her(), self:getName({no_add_name = true, do_color = true}))
426   - who:setEffect(who.EFF_MANASURGE, 10, {power=who.mana_regen * 5})
  270 + who:setEffect(who.EFF_MANASURGE, 5, {power=who.mana_regen * 20})
427 271 else
428 272 if who.mana_regen < 0 then
429 273 game.logPlayer(who, "Your negative mana regeneration rate is unaffected by the staff.")
... ... @@ -444,7 +288,7 @@ newEntity{
444 288 power_source = {arcane=true},
445 289 name = " of greater warding", suffix=true, instant_resolve=true,
446 290 keywords = {['g. warding']=true},
447   - level_range = {30, 50},
  291 + level_range = {20, 50},
448 292 greater_ego = 1,
449 293 rarity = 30,
450 294 cost = 40,
... ... @@ -465,9 +309,9 @@ newEntity{
465 309 power_source = {arcane=true},
466 310 name = " of invocation", suffix=true, instant_resolve=true,
467 311 keywords = {invocation=true},
468   - level_range = {30, 50},
  312 + level_range = {20, 50},
469 313 greater_ego = 1,
470   - rarity = 30,
  314 + rarity = 50,
471 315 cost = 40,
472 316 wielder = {
473 317 combat_spellpower = resolvers.mbonus_material(5, 5),
... ... @@ -535,11 +379,12 @@ newEntity{
535 379 ),
536 380 }
537 381
  382 +-- Adds 50% of each damage element on the staff to resists.. I think
538 383 newEntity{
539 384 power_source = {arcane=true},
540 385 name = " of protection", suffix=true, instant_resolve=true,
541 386 keywords = {protection=true},
542   - level_range = {30, 50},
  387 + level_range = {20, 50},
543 388 greater_ego = 1,
544 389 rarity = 30,
545 390 cost = 40,
... ... @@ -555,7 +400,7 @@ newEntity{
555 400 power_source = {arcane=true},
556 401 name = " of wizardry", suffix=true, instant_resolve=true,
557 402 keywords = {wizardry=true},
558   - level_range = {30, 50},
  403 + level_range = {20, 50},
559 404 greater_ego = 1,
560 405 rarity = 18,
561 406 cost = 45,
... ... @@ -570,7 +415,7 @@ newEntity{
570 415 power_source = {nature=true},
571 416 name = "lifebinding ", prefix=true, instant_resolve=true,
572 417 keywords = {lifebinding=true},
573   - level_range = {30, 50},
  418 + level_range = {20, 50},
574 419 greater_ego = 1,
575 420 rarity = 16,
576 421 cost = 35,
... ... @@ -588,7 +433,7 @@ newEntity{
588 433 power_source = {arcane=true},
589 434 name = "infernal ", prefix=true, instant_resolve=true,
590 435 keywords = {infernal=true},
591   - level_range = {30, 50},
  436 + level_range = {20, 50},
592 437 greater_ego = 1,
593 438 rarity = 16,
594 439 cost = 35,
... ... @@ -606,7 +451,7 @@ newEntity{
606 451 power_source = {arcane=true},
607 452 name = "bloodlich's ", prefix=true, instant_resolve=true,
608 453 keywords = {bloodlich=true},
609   - level_range = {40, 50},
  454 + level_range = {30, 50},
610 455 greater_ego = 1,
611 456 rarity = 40,
612 457 cost = 90,
... ... @@ -628,7 +473,7 @@ newEntity{
628 473 power_source = {arcane=true},
629 474 name = "magelord's ", prefix=true, instant_resolve=true,
630 475 keywords = {magelord=true},
631   - level_range = {30, 50},
  476 + level_range = {20, 50},
632 477 greater_ego = 1,
633 478 rarity = 30,
634 479 cost = 60,
... ... @@ -669,7 +514,7 @@ newEntity{
669 514 slot_forbid = false,
670 515 twohanded = false,
671 516 keywords = {magewarrior=true},
672   - level_range = {30, 50},
  517 + level_range = {20, 50},
673 518 greater_ego = 1,
674 519 rarity = 35,
675 520 cost = 60,
... ... @@ -682,7 +527,6 @@ newEntity{
682 527 combat_spellpower = resolvers.mbonus_material(5, 5),
683 528 combat_physcrit = resolvers.mbonus_material(5, 5),
684 529 combat_spellcrit = resolvers.mbonus_material(2, 2),
685   - combat_critical_power = resolvers.mbonus_material(7, 7),
686 530 },
687 531 resolvers.genericlast(function(e)
688 532 if e.moddable_tile:find("_hand_08_0[1-5]") then
... ... @@ -691,338 +535,16 @@ newEntity{
691 535 end)
692 536 }
693 537
694   -
695   ---[[
696 538 newEntity{
697 539 power_source = {arcane=true},
698   - name = "magma ", prefix=true, instant_resolve=true,
699   - keywords = {magma=true},
700   - level_range = {1, 50},
701   - rarity = 3,
702   - cost = 5,
703   - wielder = {
704   - inc_damage={ [DamageType.FIRE] = resolvers.mbonus_material(25, 8), },
705   - },
706   -}
707   -
708   -newEntity{
709   - power_source = {arcane=true},
710   - name = "temporal ", prefix=true, instant_resolve=true,
711   - keywords = {temporal=true},
712   - level_range = {1, 50},
713   - rarity = 3,
714   - cost = 5,
715   - wielder = {
716   - inc_damage={ [DamageType.TEMPORAL] = resolvers.mbonus_material(25, 8), },
717   - },
718   -}
719   -
720   -newEntity{
721   - power_source = {arcane=true},
722   - name = "icy ", prefix=true, instant_resolve=true,
723   - keywords = {icy=true},
724   - level_range = {1, 50},
725   - rarity = 3,
726   - cost = 5,
727   - wielder = {
728   - inc_damage={ [DamageType.COLD] = resolvers.mbonus_material(25, 8), },
729   - },
730   -}
731   -
732   -newEntity{
733   - power_source = {arcane=true},
734   - name = "acidic ", prefix=true, instant_resolve=true,
735   - keywords = {acidic=true},
736   - level_range = {1, 50},
737   - rarity = 3,
738   - cost = 5,
739   - wielder = {
740   - inc_damage={ [DamageType.ACID] = resolvers.mbonus_material(25, 8), },
741   - },
742   -}
743   -
744   -newEntity{
745   - power_source = {arcane=true},
746   - name = "crackling ", prefix=true, instant_resolve=true,
747   - keywords = {crackling=true},
748   - level_range = {1, 50},
749   - rarity = 3,
750   - cost = 5,
751   - wielder = {
752   - inc_damage={ [DamageType.LIGHTNING] = resolvers.mbonus_material(25, 8), },
753   - },
754   -}
755   -
756   -newEntity{
757   - power_source = {nature=true},
758   - name = "naturalist's ", prefix=true, instant_resolve=true,
759   - keywords = {naturalist=true},
760   - level_range = {1, 50},
761   - rarity = 3,
762   - cost = 5,
763   - wielder = {
764   - inc_damage={ [DamageType.NATURE] = resolvers.mbonus_material(25, 8), },
765   - },
766   -}
767   -
768   -newEntity{
769   - power_source = {nature=true},
770   - name = "sunbathed ", prefix=true, instant_resolve=true,
771   - keywords = {sunbathed=true},
772   - level_range = {1, 50},
773   - rarity = 3,
774   - cost = 5,
775   - wielder = {
776   - inc_damage={ [DamageType.LIGHT] = resolvers.mbonus_material(25, 8), },
777   - },
778   -}
779   -
780   -newEntity{
781   - power_source = {nature=true},
782   - name = "shadow ", prefix=true, instant_resolve=true,
783   - keywords = {shadow=true},
784   - level_range = {1, 50},
785   - rarity = 3,
786   - cost = 5,
787   - wielder = {
788   - inc_damage={ [DamageType.DARKNESS] = resolvers.mbonus_material(25, 8), },
789   - },
790   -}
791   -
792   -newEntity{
793   - power_source = {arcane=true},
794   - name = " of conveyance", suffix=true, instant_resolve=true,
795   - keywords = {conveyance=true},
796   - level_range = {1, 50},
797   - rarity = 10,
798   - cost = 10,
799   - wielder = {
800   - talents_types_mastery = {
801   - ["spell/conveyance"] = resolvers.mbonus_material(1, 1, function(e, v) v=v/10 return 0, v end),
802   - },
803   - },
804   - max_power = 120, power_regen = 1,
805   - use_power = { name = "teleport you anywhere on the level, randomly", power = 70, use = function(self, who)
806   - game.level.map:particleEmitter(who.x, who.y, 1, "teleport")
807   - who:teleportRandom(who.x, who.y, 200)
808   - game.level.map:particleEmitter(who.x, who.y, 1, "teleport")
809   - game.logSeen(who, "%s uses %s!", who.name:capitalize(), self:getName{no_count=true})
810   - return {id=true, used=true}
811   - end}
812   -}
813   -
814   -newEntity{
815   - power_source = {arcane=true},
816   - name = " of blasting", suffix=true, instant_resolve=true,
817   - keywords = {blasting=true},
818   - level_range = {30, 50},
819   - greater_ego = 1,
820   - rarity = 18,
821   - cost = 45,
822   - wielder = {
823   - },
824   - max_power = 15, power_regen = 1,
825   - use_talent = { id = Talents.T_BLASTWAVE, level = 2, power = 10 },
826   -}
827   -
828   -newEntity{
829   - power_source = {nature=true},
830   - name = "lifebinding ", prefix=true, instant_resolve=true,
831   - keywords = {lifebinding=true},
832   - level_range = {30, 50},
833   - greater_ego = 1,
834   - rarity = 16,
835   - cost = 35,
836   - wielder = {
837   - combat_spellpower = resolvers.mbonus_material(7, 3),
838   - life_regen = resolvers.mbonus_material(15, 5, function(e, v) v=v/10 return 0, v end),
839   - healing_factor = resolvers.mbonus_material(20, 10, function(e, v) v=v/100 return 0, v end),
840   - inc_stats = {
841   - [Stats.STAT_CON] = resolvers.mbonus_material(4, 3),
842   - },
843   - },
844   -}
845   -
846   -newEntity{
847   - power_source = {arcane=true},
848   - name = "infernal ", prefix=true, instant_resolve=true,
849   - keywords = {infernal=true},
850   - level_range = {30, 50},
851   - greater_ego = 1,
852   - rarity = 16,
853   - cost = 35,
854   - wielder = {
855   - combat_spellpower = resolvers.mbonus_material(7, 3),
856   - see_invisible = resolvers.mbonus_material(15, 5),
857   - inc_damage = {
858   - [DamageType.FIRE] = resolvers.mbonus_material(20, 5),
859   - [DamageType.BLIGHT] = resolvers.mbonus_material(20, 5),
860   - },
861   - },
862   -}
863   -
864   -newEntity{
865   - power_source = {arcane=true},
866   - name = "chronomancer's ", prefix=true, instant_resolve=true,
867   - keywords = {chronomancer=true},
868   - level_range = {30, 50},
869   - greater_ego = 1,
870   - rarity = 16,
871   - cost = 35,
872   - wielder = {
873   - combat_spellpower = resolvers.mbonus_material(7, 3),
874   - movement_speed = 0.1,
875   - inc_damage = {
876   - [DamageType.TEMPORAL] = resolvers.mbonus_material(20, 5),
877   - },
878   - },
879   -
880   -}
881   -
882   -newEntity{
883   - power_source = {nature=true},
884   - name = "abyssal ", prefix=true, instant_resolve=true,
885   - keywords = {abyssal=true},
886   - level_range = {30, 50},
887   - greater_ego = 1,
888   - rarity = 40,
889   - cost = 80,
890   - wielder = {
891   - inc_damage = {
892   - [DamageType.COLD] = resolvers.mbonus_material(25, 5),
893   - [DamageType.DARKNESS] = resolvers.mbonus_material(25, 5),
894   - },
895   - resists_pen = {
896   - [DamageType.COLD] = resolvers.mbonus_material(15, 5),
897   - [DamageType.DARKNESS] = resolvers.mbonus_material(15, 5),
898   - },
899   - },
900   -}
901   -
902   -newEntity{
903   - power_source = {arcane=true},
904   - name = "magelord's ", prefix=true, instant_resolve=true,
905   - keywords = {magelord=true},
906   - level_range = {10, 50},
907   - greater_ego = 1,
908   - rarity = 40,
909   - cost = 60,
910   - wielder = {
911   - max_mana = resolvers.mbonus_material(100, 20),
912   - combat_spellpower = resolvers.mbonus_material(20, 5),
913   - },
914   -}
915   -
916   -newEntity{
917   - power_source = {arcane=true},
918   - name = "polar ", prefix=true, instant_resolve=true,
919   - keywords = {polar=true},
920   - level_range = {10, 50},
921   - greater_ego = 1,
922   - rarity = 15,
923   - cost = 30,
924   - wielder = {
925   - combat_spellpower = resolvers.mbonus_material(12, 3),
926   - inc_damage = {
927   - [DamageType.COLD] = resolvers.mbonus_material(15, 5),
928   - },
929   - on_melee_hit = {
930   - [DamageType.ICE] = resolvers.mbonus_material(10, 5),
931   - },
932   - },
933   -}
934   -
935   -newEntity{
936   - power_source = {arcane=true},
937   - name = "bloodlich's ", prefix=true, instant_resolve=true,
938   - keywords = {bloodlich=true},
  540 + name = " of the prodigy", suffix=true, instant_resolve=true,
  541 + keywords = {prodigy=true},
939 542 level_range = {40, 50},
940 543 greater_ego = 1,
941   - rarity = 40,
942   - cost = 90,
943   - wielder = {
944   - inc_stats = {
945   - [Stats.STAT_MAG] = resolvers.mbonus_material(9, 1),
946   - },
947   - inc_damage = {
948   - [DamageType.ACID] = resolvers.mbonus_material(10, 5),
949   - [DamageType.LIGHTNING] = resolvers.mbonus_material(10, 5),
950   - [DamageType.FIRE] = resolvers.mbonus_material(10, 5),
951   - [DamageType.COLD] = resolvers.mbonus_material(10, 5),
952   - },
953   - },
954   -}
955   -
956   -newEntity{
957   - power_source = {arcane=true},
958   - name = " of conflagration", suffix=true, instant_resolve=true,
959   - keywords = {conflagration=true},
960   - level_range = {30, 50},
961   - greater_ego = 1,
962   - rarity = 30,
963   - cost = 60,
964   - wielder = {
965   - mana_regen = resolvers.mbonus_material(50, 10, function(e, v) v=v/100 return 0, -v end),
966   - },
967   -}
968   -
969   -newEntity{
970   - power_source = {arcane=true},
971   - name = " of lightning", suffix=true, instant_resolve=true,
972   - keywords = {lightning=true},
973   - level_range = {30, 50},
974   - greater_ego = 1,
975   - rarity = 30,
976   - cost = 60,
977   - max_power = 30, power_regen = 1,
978   - use_talent = { id = Talents.T_CHAIN_LIGHTNING, level = 3, power = 20 },
979   - wielder = {
980   -
981   - },
982   -}
983   -
984   -newEntity{
985   - power_source = {arcane=true},
986   - name = " of the stars", suffix=true, instant_resolve=true,
987   - keywords = {stars=true},
988   - level_range = {1, 50},
989   - greater_ego = 1,
990   - rarity = 15,
991   - cost = 30,
992   - max_power = 30, power_regen = 1,
993   - use_talent = { id = Talents.T_STARFALL, level = 2, power = 20 },
994   - wielder = {
995   - combat_spellpower = resolvers.mbonus_material(12, 3),
996   - },
997   -}
998   -
999   -newEntity{
1000   - power_source = {arcane=true},
1001   - name = " of ruination", suffix=true, instant_resolve=true,
1002   - keywords = {ruination=true},
1003   - level_range = {1, 50},
1004   - greater_ego = 1,
1005   - rarity = 15,
1006   - cost = 30,
1007   - max_power = 40, power_regen = 1,
1008   - use_talent = { id = Talents.T_CORRUPTED_NEGATION, level = 2, power = 30 },
1009   - wielder = {
1010   - },
1011   -}
1012   -
1013   -
1014   -newEntity{
1015   - power_source = {arcane=true},
1016   - name = " of divination", suffix=true, instant_resolve=true,
1017   - keywords = {divination=true},
1018   - level_range = {1, 50},
1019   - rarity = 8,
1020   - cost = 8,
  544 + rarity = 80,
  545 + cost = 45,
1021 546 wielder = {
1022   - talents_types_mastery = {
1023   - ["spell/divination"] = resolvers.mbonus_material(1, 1, function(e, v) v=v/10 return 0, v end),
1024   - },
  547 + spellsurge_on_crit = resolvers.mbonus_material(5, 5),
  548 + inc_stats = { [Stats.STAT_MAG] = resolvers.mbonus_material(15, 5), [Stats.STAT_WIL] = resolvers.mbonus_material(15, 5), [Stats.STAT_CUN] = resolvers.mbonus_material(15, 5) },
1025 549 },
1026   -}
1027   -
1028   -]]
  550 +}
\ No newline at end of file
... ...