Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.58 KB | None | 0 0
  1.     action = function(self, t)
  2.         local target = self
  3.  
  4.         if self:getTalentLevel(t) >= 3 then
  5.             local tg = {type="hit", range=self:getTalentRange(t)}
  6.             local tx, ty = self:getTarget(tg)
  7.             if tx and ty and game.level.map(tx, ty, Map.ACTOR) then
  8.                 local _ _, tx, ty = self:canProject(tg, tx, ty)
  9.                 if not tx then return nil end
  10.                 target = game.level.map(tx, ty, Map.ACTOR)
  11.                 if not target then return nil end
  12.  
  13.                 target = game.level.map(tx, ty, Map.ACTOR)
  14.             else return nil
  15.             end
  16.         end
  17.  
  18.         local effs = {}
  19.  
  20.         -- Go through all spell effects
  21.         if self:reactionToward(target) < 0 then
  22.             for eff_id, p in pairs(target.tmp) do
  23.                 local e = target.tempeffect_def[eff_id]
  24.                 if e.type == "magical" and e.status == "beneficial" then
  25.                     effs[#effs+1] = {"effect", eff_id}
  26.                 end
  27.             end
  28.  
  29.             -- Go through all sustained spells
  30.             for tid, act in pairs(target.sustain_talents) do
  31.                 if act then
  32.                     local talent = target:getTalentFromId(tid)
  33.                     if talent.is_spell then effs[#effs+1] = {"talent", tid} end
  34.                 end
  35.             end
  36.         else
  37.             for eff_id, p in pairs(target.tmp) do
  38.                 local e = target.tempeffect_def[eff_id]
  39.                 if e.type == "magical" and e.status == "detrimental" then
  40.                     effs[#effs+1] = {"effect", eff_id}
  41.                 end
  42.             end
  43.         end
  44.  
  45.         for i = 1, t.getRemoveCount(self, t) do
  46.             if #effs == 0 then break end
  47.             local eff = rng.tableRemove(effs)
  48.  
  49.             if eff[1] == "effect" then
  50.                 target:removeEffect(eff[2])
  51.             else
  52.                 target:forceUseTalent(eff[2], {ignore_energy=true})
  53.             end
  54.         end
  55.         game:playSoundNear(self, "talents/spell_generic")
  56.         return true
  57.     end,
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement