Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- newTalent{
- name = "Unseen Heckler", shortname = "UNSEEN_HECKLER",
- type = {"spell/shadowkin", 3},
- require = spells_req3,
- points = 5,
- random_ego = "attack",
- cooldown = 6,
- hate = 12,
- range = 5,
- tactical = { ATTACK = { MIND = 2 } },
- no_break_stealth= true,
- direct_hit = true,
- requires_target = true,
- getDuration = function(self, t)
- return 4
- end,
- getDamage = function(self, t)
- return 0.5 * self:combatTalentMindDamage(t, 50, 300) + 0.5 * self:combatTalentSpellDamage(t, 50, 300)
- end,
- getJumpRange = function(self, t)
- return math.min(6, math.sqrt(self:getTalentLevel(t) * 2))
- end,
- getJumpCount = function(self, t)
- return math.min(3, self:getTalentLevelRaw(t))
- end,
- getJumpChance = function(self, t)
- return math.min(40, 15 * math.sqrt(self:getTalentLevel(t)))
- end,
- getJumpDuration = function(self, t)
- return 30
- end,
- getHateGain = function(self, t)
- return 2
- end,
- action = function(self, t)
- local range = self:getTalentRange(t)
- local tg = {type="hit", range=range}
- local x, y, target = self:getTarget(tg)
- if not x or not y or not target or core.fov.distance(self.x, self.y, x, y) > range or target:hasEffect(target.EFF_HATEFUL_WHISPER) then return nil end
- local duration = t.getDuration(self, t)
- local damage = self:mindCrit(t.getDamage(self, t))
- local mindpower = self:combatMindpower()
- local jumpRange = t.getJumpRange(self, t)
- local jumpCount = t.getJumpCount(self, t)
- local jumpChance = t.getJumpChance(self, t)
- local jumpDuration = t.getJumpDuration(self, t)
- local hateGain = t.getHateGain(self, t)
- target:setEffect(target.EFF_HATEFUL_WHISPER, duration, {
- src = self,
- damage = damage,
- duration = duration,
- mindpower = mindpower,
- jumpRange = jumpRange,
- jumpCount = jumpCount,
- jumpChance = jumpChance,
- jumpDuration = jumpDuration,
- hateGain = hateGain
- })
- game.level.map:particleEmitter(target.x, target.y, 1, "reproach", { dx = self.x - target.x, dy = self.y - target.y })
- return true
- end,
- info = function(self, t)
- local damage = t.getDamage(self, t)
- local jumpRange = t.getJumpRange(self, t)
- local jumpCount = t.getJumpCount(self, t)
- local jumpChance = t.getJumpChance(self, t)
- local hateGain = t.getHateGain(self, t)
- return ([[Send a whisper filled with hate to spread throughout your foes. When the whisper is first heard, they will suffer %d darkness damage and feed you %d hate. For the first %d turns, the whisper will travel from the original victim to a new one within a range of %0.1f. Every victim of the whisper has a %d%% chance of spreading it to another victim every turn.
- The damage increases with your Spellpower and Mindpower.]]):format(self.damDesc(self, DamageType.DARKNESS, damage), hateGain, jumpCount, jumpRange, jumpChance)
- end,
- }
- newTalent{
- name = "Twist the Veil", shortname = "TWIST_THE_VEIL",
- type = {"cunning/dark-veil",3},
- require = cuns_req3,
- no_energy = false,
- points = 5,
- mana = 135,
- cooldown = 20,
- tactical = { DEFEND = 2 },
- action = function(self, t)
- self:teleportRandom(self.x, self.y, 2)
- self:setEffect(self.EFF_INVISIBILITY, 1, {power=1000})
- self.talents_cd.T_STEALTH = nil
- return true
- end,
- info = function(self, t)
- return ([[Twist the veil of darkness around yourself, randomly moving %d%% grids away from your current posistion, and becoming invisble for one turn.
- This also resets the cooldown of your Stealth talent.]]):
- format(range))
- end,
- }
- newTalent{
- name = "Unveil", shortname = "UNVEIL",
- type = {"spell/vile-tactics", 4},
- require = make_require(4),
- no_energy = "false",
- points = 5,
- cooldown = 10,
- mana = 30,
- hate = 5,
- range = 0,
- radius = function(self, t) return math.floor(self:combatTalentScale(t, 3, 7)) end,
- target = function(self, t)
- return {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), friendlyfire=false, talent=t}
- end,
- action = function(src, x, y, type, dam, tmp)
- local target = game.level.map(x, y, Map.ACTOR)
- tmp = tmp or {}
- -- extra damage on hiding targets
- if target and target:attr("stealth") then
- dam = dam * 2
- if target and target:attr("invisible") then
- dam = dam * 2
- -- Dont lit magically unlit grids
- local a = game.level.map(x, y, Map.ACTOR)
- if a then
- a:setEffect(a.EFF_LUMINESCENCE, math.ceil(dam.turns), {power=dam.power, no_ct_effect=true})
- end}
- self:project(tg, self.x, self.y, DamageType.DARKNESS, self:mindCrit(self:combatTalentStatDamage(t, "cun", 40, 400)))
- self:project(tg, self.x, self.y, DamageType.CONFUSION, {
- dur=3,
- dam=40 + 6 * self:getTalentLevel(t),
- power_check=function() return self:combatPhysicalpower() end,
- resist_check=self.combatMindResist,
- })
- game.level.map:particleEmitter(self.x, self.y, self:getTalentRadius(t), "shout", {additive=true, life=10, size=3, distorion_factor=0.5, radius=self:getTalentRadius(t), nb_circles=8, rm=0.8, rM=1, gm=0, gM=0, bm=0.1, bM=0.2, am=0.4, aM=0.6})
- return true
- end,
- info = function(self, t)
- local radius = self:getTalentRadius(t)
- return ([[None can hide from you. Deals %d%% darkness damage in a radius of %d%%. This reveals hidden targets, and does double damage to them.
- The damage will scaling with your cunning]]):format(radius, self:combatTalentStatDamage(t, "cun", 40, 400))
- end,
- }
Advertisement
Add Comment
Please, Sign In to add comment