Skip to content
Snippets Groups Projects
Commit 14bc75d9 authored by Lisa Greene's avatar Lisa Greene
Browse files

Tune wild gifts talent scaling

parent b57c89f5
No related branches found
No related tags found
1 merge request!663Misc talent scaling changes
Showing
with 48 additions and 48 deletions
...@@ -89,7 +89,7 @@ newTalent{ ...@@ -89,7 +89,7 @@ newTalent{
on_learn = function(self, t) self.resists[DamageType.COLD] = (self.resists[DamageType.COLD] or 0) + 1 end, on_learn = function(self, t) self.resists[DamageType.COLD] = (self.resists[DamageType.COLD] or 0) + 1 end,
on_unlearn = function(self, t) self.resists[DamageType.COLD] = (self.resists[DamageType.COLD] or 0) - 1 end, on_unlearn = function(self, t) self.resists[DamageType.COLD] = (self.resists[DamageType.COLD] or 0) - 1 end,
getArmor = function(self, t) return self:combatTalentMindDamage(t, 5, 25) end, getArmor = function(self, t) return self:combatTalentMindDamage(t, 5, 25) end,
getLifePct = function(self, t) return self:combatTalentLimit(t, 1, 0.02, 0.10) end, -- Limit < 100% bonus getLifePct = function(self, t) return self:combatTalentLimit(t, 1, 0.05, 0.15) end, -- Limit < 100% bonus
getDamageOnMeleeHit = function(self, t) return 10 + self:combatTalentMindDamage(t, 10, 30) end, getDamageOnMeleeHit = function(self, t) return 10 + self:combatTalentMindDamage(t, 10, 30) end,
activate = function(self, t) activate = function(self, t)
return { return {
......
...@@ -122,7 +122,7 @@ newTalent{ ...@@ -122,7 +122,7 @@ newTalent{
tactical = { ATTACKAREA = { ACID = 2 }, DISABLE = { knockback = 1 } }, tactical = { ATTACKAREA = { ACID = 2 }, DISABLE = { knockback = 1 } },
target = function(self, t) return {type="ball", radius=self:getTalentRadius(t), range=self:getTalentRange(t), talent=t} end, target = function(self, t) return {type="ball", radius=self:getTalentRadius(t), range=self:getTalentRange(t), talent=t} end,
getDamage = function(self, t) return self:combatTalentMindDamage(t, 20, 290) end, getDamage = function(self, t) return self:combatTalentMindDamage(t, 20, 290) end,
getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 12, 5, 8)) end, -- Limit < 12 getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 12, 5, 8.5)) end, -- Limit < 12
getNb = function(self, t) local l = self:getTalentLevel(t) getNb = function(self, t) local l = self:getTalentLevel(t)
if l < 3 then return 2 if l < 3 then return 2
elseif l < 5 then return 3 elseif l < 5 then return 3
......
...@@ -32,9 +32,9 @@ newTalent{ ...@@ -32,9 +32,9 @@ newTalent{
end, end,
getValues = function(self, t) getValues = function(self, t)
return return
self:combatTalentLimit(t, 1, 0.07, 0.15), self:combatTalentLimit(t, 1, 0.08, 0.165),
self:combatTalentScale(t, 6, 10), self:combatTalentScale(t, 6, 10),
self:combatTalentLimit(t, 0.5, 0.067, 0.185), self:combatTalentLimit(t, 0.5, 0.075, 0.2),
self:combatTalentScale(t, 5, 9, "log") self:combatTalentScale(t, 5, 9, "log")
end, end,
getDamage = function(self, t) return 30 end, getDamage = function(self, t) return 30 end,
......
...@@ -98,7 +98,7 @@ newTalent{ ...@@ -98,7 +98,7 @@ newTalent{
require = gifts_req3, require = gifts_req3,
points = 5, points = 5,
equilibrium = 15, equilibrium = 15,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 0, 11, 7)) end, cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 0, 11, 6)) end,
requires_target = true, requires_target = true,
range = 20, range = 20,
tactical = { HEAL = 2, CLOSEIN = 2 }, tactical = { HEAL = 2, CLOSEIN = 2 },
...@@ -144,7 +144,7 @@ newTalent{ ...@@ -144,7 +144,7 @@ newTalent{
require = gifts_req4, require = gifts_req4,
points = 5, points = 5,
equilibrium = 15, equilibrium = 15,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 0, 11, 7)) end, cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 0, 11, 6)) end,
requires_target = true, requires_target = true,
range = 20, range = 20,
tactical = { ATTACK = { PHYSICAL = 2 }, CLOSEIN = 2 }, tactical = { ATTACK = { PHYSICAL = 2 }, CLOSEIN = 2 },
......
...@@ -60,7 +60,7 @@ newTalent{ ...@@ -60,7 +60,7 @@ newTalent{
getSave = function(self, t) return self:combatTalentMindDamage(t, 5, 50) end, getSave = function(self, t) return self:combatTalentMindDamage(t, 5, 50) end,
getResist = function(self, t) return self:combatTalentMindDamage(t, 5, 40) end, getResist = function(self, t) return self:combatTalentMindDamage(t, 5, 40) end,
getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 3, 7)) end, getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 3, 7)) end,
getAffinity = function(self, t) return self:combatTalentLimit(t, 50, 5, 20) end, -- Limit <50% getAffinity = function(self, t) return self:combatTalentLimit(t, 50, 8, 25) end, -- Limit <50%
getPower = function(self, t) return self:combatTalentMindDamage(t, 2, 8) end, getPower = function(self, t) return self:combatTalentMindDamage(t, 2, 8) end,
trigger = function(self, t, target, source_t) -- called in damage_types.lua default projector trigger = function(self, t, target, source_t) -- called in damage_types.lua default projector
self:setEffect(self.EFF_NATURE_REPLENISHMENT, t.getDuration(self, t), {power = t.getPower(self, t)}) self:setEffect(self.EFF_NATURE_REPLENISHMENT, t.getDuration(self, t), {power = t.getPower(self, t)})
...@@ -98,7 +98,7 @@ newTalent{ ...@@ -98,7 +98,7 @@ newTalent{
tactical = { ATTACKAREA = { ACID = 2 }, DISABLE = {blind = 1} }, tactical = { ATTACKAREA = { ACID = 2 }, DISABLE = {blind = 1} },
getDuration = function(self, t) return 5 end, getDuration = function(self, t) return 5 end,
getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 120) end, getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 120) end,
getChance = function(self, t) return self:combatTalentLimit(t, 100, 20, 40) end, --Limit < 100% getChance = function(self, t) return self:combatTalentLimit(t, 100, 25, 40) end, --Limit < 100%
removeEffect = function(self, target) -- remove one random beneficial magical effect or sustain removeEffect = function(self, target) -- remove one random beneficial magical effect or sustain
-- Go through all beneficial magical effects -- Go through all beneficial magical effects
local effs = {} local effs = {}
...@@ -170,7 +170,7 @@ newTalent{ ...@@ -170,7 +170,7 @@ newTalent{
points = 5, points = 5,
equilibrium = 20, equilibrium = 20,
cooldown = 20, cooldown = 20,
radius = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 4, 6)) end, --Limit < 10 radius = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 4, 8)) end, --Limit < 10
tactical = { ATTACKAREA = { NATURE = 2 }, EQUILIBRIUM = 1 }, tactical = { ATTACKAREA = { NATURE = 2 }, EQUILIBRIUM = 1 },
getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 4, 8)) end, getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 4, 8)) end,
getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 100) end, getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 100) end,
......
...@@ -36,7 +36,7 @@ newTalent{ ...@@ -36,7 +36,7 @@ newTalent{
return false return false
end, end,
is_heal = true, is_heal = true,
getdur = function(self,t) return math.floor(self:combatTalentLimit(t, 30, 6, 10)) end, -- limit to <30 getdur = function(self,t) return math.floor(self:combatTalentLimit(t, 30, 6, 14)) end, -- limit to <30
action = function(self, t) action = function(self, t)
local nb = 0 local nb = 0
for eff_id, p in pairs(self.tmp) do for eff_id, p in pairs(self.tmp) do
...@@ -152,9 +152,9 @@ newTalent{ ...@@ -152,9 +152,9 @@ newTalent{
direct_hit = true, direct_hit = true,
requires_target = true, requires_target = true,
range = 0, range = 0,
radius = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 2, 5.2)) end, -- Limit < 10 radius = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 3.5, 7)) end, -- Limit < 10
target = function(self, t) return {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false, talent=t} end, -- To be improved after AI update target = function(self, t) return {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false, talent=t} end, -- To be improved after AI update
getDur = function(self, t) return math.floor(self:combatTalentLimit(t, 20, 4, 8)) end, -- Limit < 20 getDur = function(self, t) return math.floor(self:combatTalentLimit(t, 20, 6, 10)) end, -- Limit < 20
getPct = function(self, t) return self:combatTalentLimit(t, 1, 0.4, 0.7) end, -- Limit < 100% healing transfer getPct = function(self, t) return self:combatTalentLimit(t, 1, 0.4, 0.7) end, -- Limit < 100% healing transfer
getEquilibrium = function(self, t) return self:combatTalentScale(t, 5, 10, "log", 0, 3) end, -- slow scaling since this can affect a lot of heals quickly getEquilibrium = function(self, t) return self:combatTalentScale(t, 5, 10, "log", 0, 3) end, -- slow scaling since this can affect a lot of heals quickly
action = function(self, t) action = function(self, t)
......
...@@ -121,7 +121,7 @@ newTalent{ ...@@ -121,7 +121,7 @@ newTalent{
local bonus = self:knowTalent(self.T_CHROMATIC_FURY) and self:combatTalentStatDamage(t, "wil", 60, 750) or 0 local bonus = self:knowTalent(self.T_CHROMATIC_FURY) and self:combatTalentStatDamage(t, "wil", 60, 750) or 0
return self:combatTalentStatDamage(t, "str", 60, 750) + bonus return self:combatTalentStatDamage(t, "str", 60, 750) + bonus
end, end,
getEffect = function(self, t) return math.ceil(self:combatTalentLimit(t, 50, 10, 20)) end, getEffect = function(self, t) return math.ceil(self:combatTalentLimit(t, 50, 15, 30)) end,
on_learn = function(self, t) on_learn = function(self, t)
self.resists[DamageType.NATURE] = (self.resists[DamageType.NATURE] or 0) + 3 self.resists[DamageType.NATURE] = (self.resists[DamageType.NATURE] or 0) + 3
self.inc_damage[DamageType.NATURE] = (self.inc_damage[DamageType.NATURE] or 0) + 4 self.inc_damage[DamageType.NATURE] = (self.inc_damage[DamageType.NATURE] or 0) + 4
...@@ -141,7 +141,7 @@ newTalent{ ...@@ -141,7 +141,7 @@ newTalent{
self:project(tg, x, y, function(px, py) self:project(tg, x, y, function(px, py)
local target = game.level.map(px, py, Map.ACTOR) local target = game.level.map(px, py, Map.ACTOR)
if target and target:canBe("poison") then if target and target:canBe("poison") then
target:setEffect(self.EFF_CRIPPLING_POISON, 6, {src=self, power=dam/6, fail=math.ceil(self:combatTalentLimit(t, 100, 10, 20))}) target:setEffect(self.EFF_CRIPPLING_POISON, 6, {src=self, power=dam/6, fail=math.ceil(self:combatTalentLimit(t, 100, 15, 30))})
end end
end) end)
...@@ -169,8 +169,8 @@ newTalent{ ...@@ -169,8 +169,8 @@ newTalent{
require = gifts_req_high3, require = gifts_req_high3,
points = 5, points = 5,
mode = "passive", mode = "passive",
resistKnockback = function(self, t) return self:combatTalentLimit(t, 1, .17, .5) end, -- Limit < 100% resistKnockback = function(self, t) return self:combatTalentLimit(t, 1, .2, .5) end, -- Limit < 100%
resistBlindStun = function(self, t) return self:combatTalentLimit(t, 1, .07, .25) end, -- Limit < 100% resistBlindStun = function(self, t) return self:combatTalentLimit(t, 1, .1, .25) end, -- Limit < 100%
passives = function(self, t, p) passives = function(self, t, p)
self:talentTemporaryValue(p, "knockback_immune", t.resistKnockback(self, t)) self:talentTemporaryValue(p, "knockback_immune", t.resistKnockback(self, t))
self:talentTemporaryValue(p, "stun_immune", t.resistBlindStun(self, t)) self:talentTemporaryValue(p, "stun_immune", t.resistBlindStun(self, t))
...@@ -189,9 +189,9 @@ newTalent{ ...@@ -189,9 +189,9 @@ newTalent{
points = 5, points = 5,
mode = "passive", mode = "passive",
no_npc_use = true, -- breaths are high damage on rares already; should really change this to be less binary in general, this is weird design no_npc_use = true, -- breaths are high damage on rares already; should really change this to be less binary in general, this is weird design
getDamageIncrease = function(self, t) return self:combatTalentLimit(t, 50, 5, 15) end, -- Limit < 50% getDamageIncrease = function(self, t) return self:combatTalentLimit(t, 50, 8, 20) end, -- Limit < 50%
getResists = function(self, t) return self:combatTalentScale(t, 0.6, 2.5) end, getResists = function(self, t) return self:combatTalentScale(t, 0.6, 2.5) end,
getResistPen = function(self, t) return self:combatTalentLimit(t, 50, 5, 15) end, -- Limit < 50% getResistPen = function(self, t) return self:combatTalentLimit(t, 50, 12, 30) end, -- Limit < 50%
passives = function(self, t, p) passives = function(self, t, p)
local dam_inc = t.getDamageIncrease(self, t) local dam_inc = t.getDamageIncrease(self, t)
local resists = t.getResists(self, t) local resists = t.getResists(self, t)
......
...@@ -88,7 +88,7 @@ newTalent{ ...@@ -88,7 +88,7 @@ newTalent{
tactical = { ATTACK = 2, DISABLE = 2 }, tactical = { ATTACK = 2, DISABLE = 2 },
target = function(self, t) return {type="hit", range=self:getTalentRange(t)} end, target = function(self, t) return {type="hit", range=self:getTalentRange(t)} end,
on_pre_use = function(self, t, silent) if not self:hasPsiblades(true, false) then if not silent then game.logPlayer(self, "You require a psiblade in your mainhand to use this talent.") end return false end return true end, on_pre_use = function(self, t, silent) if not self:hasPsiblades(true, false) then if not silent then game.logPlayer(self, "You require a psiblade in your mainhand to use this talent.") end return false end return true end,
speedPenalty = function(self, t) return self:combatTalentLimit(t, 1, 0.18, 0.23) end, speedPenalty = function(self, t) return self:combatTalentLimit(t, 1, 0.2, 0.45) end,
action = function(self, t) action = function(self, t)
local tg = self:getTalentTarget(t) local tg = self:getTalentTarget(t)
local x, y, target = self:getTarget(tg) local x, y, target = self:getTarget(tg)
......
...@@ -35,7 +35,7 @@ newTalent{ ...@@ -35,7 +35,7 @@ newTalent{
no_energy = true, no_energy = true,
tactical = { ATTACKAREA = {NATURE=1}, DISABLE = {pin = 1} }, tactical = { ATTACKAREA = {NATURE=1}, DISABLE = {pin = 1} },
getDamage = function(self, t) return self:combatTalentMindDamage(t, 6, 40) end, getDamage = function(self, t) return self:combatTalentMindDamage(t, 6, 40) end,
getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 16, 4, 8)) end, -- Limit < 16 getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 16, 4, 10)) end, -- Limit < 16
getSlow = function(self, t) return math.ceil(self:combatTalentLimit(t, 100, 36, 60)) end, -- Limit < 100% getSlow = function(self, t) return math.ceil(self:combatTalentLimit(t, 100, 36, 60)) end, -- Limit < 100%
getPin = function(self, t) return math.ceil(self:combatTalentLimit(t, 100, 25, 45)) end, -- Limit < 100% getPin = function(self, t) return math.ceil(self:combatTalentLimit(t, 100, 25, 45)) end, -- Limit < 100%
range = 0, range = 0,
...@@ -86,7 +86,7 @@ newTalent{ ...@@ -86,7 +86,7 @@ newTalent{
tactical = { ATTACKAREA = {NATURE=1}, HEAL = 1 }, tactical = { ATTACKAREA = {NATURE=1}, HEAL = 1 },
requires_target = true, requires_target = true,
getDamage = function(self, t) return self:combatTalentMindDamage(t, 6, 40) end, getDamage = function(self, t) return self:combatTalentMindDamage(t, 6, 40) end,
getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 16, 4, 8)) end, -- Limit < 16 getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 16, 4, 10)) end, -- Limit < 16
getHeal = function(self, t) return math.floor(self:combatTalentLimit(t, 200, 62, 110)) end, -- Limit < 200% getHeal = function(self, t) return math.floor(self:combatTalentLimit(t, 200, 62, 110)) end, -- Limit < 200%
range = 0, range = 0,
radius = function(self, t) radius = function(self, t)
...@@ -134,8 +134,8 @@ newTalent{ ...@@ -134,8 +134,8 @@ newTalent{
no_energy = true, no_energy = true,
tactical = { ATTACKAREA = {NATURE=1}, DISABLE = 2 }, tactical = { ATTACKAREA = {NATURE=1}, DISABLE = 2 },
getDamage = function(self, t) return self:combatTalentMindDamage(t, 6, 40) end, getDamage = function(self, t) return self:combatTalentMindDamage(t, 6, 40) end,
getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 16, 4, 8)) end, -- Limit < 16 getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 16, 4, 10)) end, -- Limit < 16
getFail = function(self, t) return self:combatTalentLimit(t, 50, 19, 35) end, -- Limit < 50% getFail = function(self, t) return self:combatTalentLimit(t, 50, 20, 35) end, -- Limit < 50%
range = 0, range = 0,
radius = function(self, t) radius = function(self, t)
return math.floor(self:combatTalentScale(t,2.5, 4.5, nil, 0, 0, true)) return math.floor(self:combatTalentScale(t,2.5, 4.5, nil, 0, 0, true))
...@@ -182,7 +182,7 @@ newTalent{ ...@@ -182,7 +182,7 @@ newTalent{
no_energy = true, no_energy = true,
tactical = { ATTACKAREA = {NATURE=1}, DISABLE = {confusion = 1} }, tactical = { ATTACKAREA = {NATURE=1}, DISABLE = {confusion = 1} },
getDamage = function(self, t) return self:combatTalentMindDamage(t, 6, 40) end, getDamage = function(self, t) return self:combatTalentMindDamage(t, 6, 40) end,
getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 16, 4, 8)) end, -- Limit < 16 getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 16, 4, 10)) end, -- Limit < 16
getChance = function(self, t) return math.ceil(self:combatTalentLimit(t, 100, 25.5, 47.5)) end, -- Limit < 100% getChance = function(self, t) return math.ceil(self:combatTalentLimit(t, 100, 25.5, 47.5)) end, -- Limit < 100%
getPower = function(self, t) return math.max(0,self:combatTalentLimit(t, 50, 20, 40)) end, -- Limit < 50% getPower = function(self, t) return math.max(0,self:combatTalentLimit(t, 50, 20, 40)) end, -- Limit < 50%
range = 0, range = 0,
......
...@@ -37,7 +37,7 @@ newTalent{ ...@@ -37,7 +37,7 @@ newTalent{
if self:getTalentLevel(t)>=4 then return {NATURE = 1 } end if self:getTalentLevel(t)>=4 then return {NATURE = 1 } end
end end
}, },
getDur = function(self, t) return math.floor(self:combatTalentLimit(t, 20, 4, 6.5)) end, -- Limit < 20 getDur = function(self, t) return math.floor(self:combatTalentLimit(t, 20, 4, 8)) end, -- Limit < 20
getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 50) end, getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 50) end,
-- note meditation recovery: local pt = 2 + self:combatTalentMindDamage(t, 20, 120) / 10 = O(<1) -- note meditation recovery: local pt = 2 + self:combatTalentMindDamage(t, 20, 120) / 10 = O(<1)
getEqui = function(self, t) return self:combatTalentMindDamage(t, 2, 8) end, getEqui = function(self, t) return self:combatTalentMindDamage(t, 2, 8) end,
......
...@@ -31,11 +31,11 @@ newTalent{ ...@@ -31,11 +31,11 @@ newTalent{
end end
}, },
getMaxHP = function(self, t) return getMaxHP = function(self, t) return
50 + self:combatTalentMindDamage(t, 30, 250) + self.max_life * self:combatTalentLimit(t, 0.25, .025, .1) 50 + self:combatTalentMindDamage(t, 30, 250) + self.max_life * self:combatTalentLimit(t, 0.25, .035, .125)
end, end,
getMax = function(self, t) local _, _, max = checkMaxSummon(self, true) return math.min(max, math.max(1, math.floor(self:combatTalentLimit(t, 6, 1, 3.1)))) end, --Limit < 6 getMax = function(self, t) local _, _, max = checkMaxSummon(self, true) return math.min(max, math.max(1, math.floor(self:combatTalentLimit(t, 6, 1.1, 4.1)))) end, --Limit < 6
getChance = function(self, t) return self:combatLimit(self:combatTalentStatDamage(t, "cun", 10, 400), 100, 20, 0, 61, 234) end, -- Limit < 100% getChance = function(self, t) return self:combatLimit(self:combatTalentStatDamage(t, "cun", 10, 400), 100, 20, 0, 61, 234) end, -- Limit < 100%
getOozeResist = function(self, t) return self:combatTalentLimit(t, 70, 15, 30) end, --Limit < 70% getOozeResist = function(self, t) return self:combatTalentLimit(t, 70, 15, 35) end, --Limit < 70%
getSummonTime = function(self, t) return math.floor(self:combatTalentScale(t, 6, 10)) end, getSummonTime = function(self, t) return math.floor(self:combatTalentScale(t, 6, 10)) end,
-- called in mod.class.Actor.onTakeHit -- called in mod.class.Actor.onTakeHit
spawn = function(self, t, life) spawn = function(self, t, life)
...@@ -252,7 +252,7 @@ newTalent{ ...@@ -252,7 +252,7 @@ newTalent{
mode = "passive", mode = "passive",
--compare to lethality: self:combatTalentScale(t, 7.5, 25, 0.75) --compare to lethality: self:combatTalentScale(t, 7.5, 25, 0.75)
critResist = function(self, t) return self:combatTalentScale(t, 15, 50, 0.75) end, critResist = function(self, t) return self:combatTalentScale(t, 15, 50, 0.75) end,
immunities = function(self, t) return self:combatTalentLimit(t, 1, 0.2, 0.7) end, -- Limit < 100% immunities immunities = function(self, t) return self:combatTalentLimit(t, 1, 0.25, 0.65) end, -- Limit < 100% immunities
passives = function(self, t, p) passives = function(self, t, p)
self:talentTemporaryValue(p, "blind_immune", t.immunities(self, t)) self:talentTemporaryValue(p, "blind_immune", t.immunities(self, t))
self:talentTemporaryValue(p, "poison_immune", t.immunities(self, t)) self:talentTemporaryValue(p, "poison_immune", t.immunities(self, t))
......
...@@ -96,8 +96,8 @@ newTalent{ ...@@ -96,8 +96,8 @@ newTalent{
tactical = { DISABLE = 2 }, tactical = { DISABLE = 2 },
requires_target = true, requires_target = true,
getChance = function(self, t) return math.max(0, self:combatLimit(self:combatTalentMindDamage(t, 10, 70), 100, 39, 9, 86, 56)) end, -- Limit < 100% getChance = function(self, t) return math.max(0, self:combatLimit(self:combatTalentMindDamage(t, 10, 70), 100, 39, 9, 86, 56)) end, -- Limit < 100%
getNb = function(self, t) return math.ceil(self:combatTalentLimit(t, 4, 1, 2)) end, getNb = function(self, t) return math.ceil(self:combatTalentLimit(t, 4, .9, 3.1)) end,
getTurns = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 2, 6)) end, getTurns = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 3, 6.5)) end,
action = function(self, t) action = function(self, t)
local tg = self:getTalentTarget(t) local tg = self:getTalentTarget(t)
local x, y = self:getTarget(tg) local x, y = self:getTarget(tg)
...@@ -135,8 +135,8 @@ newTalent{ ...@@ -135,8 +135,8 @@ newTalent{
return main and off return main and off
end, end,
tactical = { BUFF = 2 }, tactical = { BUFF = 2 },
getResistPenalty = function(self, t) return self:combatTalentLimit(t, 100, 15, 50) end, -- Limit < 100% getResistPenalty = function(self, t) return self:combatTalentLimit(t, 100, 20, 50) end, -- Limit < 100%
getChance = function(self, t) return math.max(0,self:combatTalentLimit(t, 100, 14, 70)) end, -- Limit < 100% getChance = function(self, t) return math.max(0,self:combatTalentLimit(t, 70, 25, 55)) end, -- Limit < 100%
freespit = function(self, t, target) freespit = function(self, t, target)
if game.party:hasMember(self) then if game.party:hasMember(self) then
for act, def in pairs(game.party.members) do for act, def in pairs(game.party.members) do
......
...@@ -23,7 +23,7 @@ newTalent{ ...@@ -23,7 +23,7 @@ newTalent{
require = gifts_req1, require = gifts_req1,
points = 5, points = 5,
equilibrium = 4, equilibrium = 4,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 4, 10, 7)) end, cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 4, 10, 5.9)) end,
range = 1, range = 1,
no_message = true, no_message = true,
tactical = { ATTACK = { weapon = 1 }, EQUILIBRIUM = 0.5}, tactical = { ATTACK = { weapon = 1 }, EQUILIBRIUM = 0.5},
......
...@@ -30,7 +30,7 @@ newTalent{ ...@@ -30,7 +30,7 @@ newTalent{
proj_speed = 6, proj_speed = 6,
requires_target = true, requires_target = true,
getTargetCount = function(self, t) return math.floor(self:combatTalentScale(t, 1, 5, "log")) end, getTargetCount = function(self, t) return math.floor(self:combatTalentScale(t, 1, 5, "log")) end,
bouncePercent = function(self, t) return self:combatTalentLimit(t, 100, 50, 60) end, --Limit < 100% bouncePercent = function(self, t) return self:combatTalentLimit(t, 100, 45, 70) end, --Limit < 100%
action = function(self, t) action = function(self, t)
local tg = {type="bolt", range=self:getTalentRange(t), selffire=false, talent=t, display={particle="bolt_slime"}, name = t.name, speed = t.proj_speed} local tg = {type="bolt", range=self:getTalentRange(t), selffire=false, talent=t, display={particle="bolt_slime"}, name = t.name, speed = t.proj_speed}
local x, y = self:getTarget(tg) local x, y = self:getTarget(tg)
...@@ -73,9 +73,9 @@ newTalent{ ...@@ -73,9 +73,9 @@ newTalent{
local defaults = {target.EFF_SPYDRIC_POISON, target.EFF_INSIDIOUS_POISON, target.EFF_CRIPPLING_POISON, target.EFF_NUMBING_POISON} local defaults = {target.EFF_SPYDRIC_POISON, target.EFF_INSIDIOUS_POISON, target.EFF_CRIPPLING_POISON, target.EFF_NUMBING_POISON}
local poison = rng.table(self.poisonous_spores_list or defaults) local poison = rng.table(self.poisonous_spores_list or defaults)
target:setEffect(poison, 10, {src=self, power=dam/10, target:setEffect(poison, 10, {src=self, power=dam/10,
reduce=self:combatTalentLimit(t, 100, 12, 20), reduce=self:combatTalentLimit(t, 100, 12.5, 25),
fail=math.ceil(self:combatTalentLimit(t, 100, 6, 10)), fail=math.ceil(self:combatTalentLimit(t, 100, 7, 12)),
heal_factor=self:combatTalentLimit(t, 100, 24, 40)}) heal_factor=self:combatTalentLimit(t, 100, 25, 40)})
end end
end, 0, {type="slime"}) end, 0, {type="slime"})
...@@ -103,7 +103,7 @@ newTalent{ ...@@ -103,7 +103,7 @@ newTalent{
range = 1, range = 1,
requires_target = false, requires_target = false,
tactical = { DEFEND = 1 }, tactical = { DEFEND = 1 },
getChance = function(self, t) return self:combatTalentLimit(t, 100, 7, 15) end, -- Limit < 100% getChance = function(self, t) return self:combatTalentLimit(t, 100, 7, 18) end, -- Limit < 100%
getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 50) end, getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 50) end,
activate = function(self, t) activate = function(self, t)
game:playSoundNear(self, "talents/slime") game:playSoundNear(self, "talents/slime")
......
...@@ -94,7 +94,7 @@ newTalent{ ...@@ -94,7 +94,7 @@ newTalent{
mode = "passive", mode = "passive",
points = 5, points = 5,
getChance = function(self, t) return math.min(100, 30 + self:getTalentLevel(t) * 15) end, getChance = function(self, t) return math.min(100, 30 + self:getTalentLevel(t) * 15) end,
getReduction = function(self, t) return math.floor(self:combatTalentLimit(t, 5, 1, 3.1)) end, -- Limit < 5 getReduction = function(self, t) return math.floor(self:combatTalentLimit(t, 5, 1.5, 4.1)) end, -- Limit < 5
info = function(self, t) info = function(self, t)
return ([[While Master Summoner is active, each new summon will reduce the remaining cooldown of Pheromones, Detonate and Wild Summon. return ([[While Master Summoner is active, each new summon will reduce the remaining cooldown of Pheromones, Detonate and Wild Summon.
%d%% chance to reduce them by %d.]]):tformat(t.getChance(self, t), t.getReduction(self, t)) %d%% chance to reduce them by %d.]]):tformat(t.getChance(self, t), t.getReduction(self, t))
...@@ -114,7 +114,7 @@ newTalent{ ...@@ -114,7 +114,7 @@ newTalent{
on_pre_use = function(self, t, silent) on_pre_use = function(self, t, silent)
return self:isTalentActive(self.T_MASTER_SUMMONER) return self:isTalentActive(self.T_MASTER_SUMMONER)
end, end,
duration = function(self, t) return math.floor(self:combatTalentLimit(t, 15, 1, 6)) end, -- Limit <25 duration = function(self, t) return math.floor(self:combatTalentLimit(t, 15, 3, 7)) end, -- Limit <15
action = function(self, t) action = function(self, t)
self:setEffect(self.EFF_WILD_SUMMON, t.duration(self,t), {chance=100}) self:setEffect(self.EFF_WILD_SUMMON, t.duration(self,t), {chance=100})
game:playSoundNear(self, "talents/teleport") game:playSoundNear(self, "talents/teleport")
......
...@@ -73,8 +73,8 @@ newTalent{ ...@@ -73,8 +73,8 @@ newTalent{
explodeFire = function(self,t) return self:combatTalentMindDamage(t, 30, 120) end, explodeFire = function(self,t) return self:combatTalentMindDamage(t, 30, 120) end,
hydraAffinity = function(self,t) return self:combatTalentLimit(t, 50, 15, 40) end, hydraAffinity = function(self,t) return self:combatTalentLimit(t, 50, 15, 40) end,
hydraRegen = function(self,t) return self:combatTalentMindDamage (t, 8, 40) end, hydraRegen = function(self,t) return self:combatTalentMindDamage (t, 8, 40) end,
jellySlow = function(self,t) return self:combatTalentLimit(t, 0.60, 0.10, 0.35) end, jellySlow = function(self,t) return self:combatTalentLimit(t, 0.60, 0.25, 0.48) end,
minotaurConfuse = function(self,t) return self:combatTalentLimit(t, 50, 15, 35) end, minotaurConfuse = function(self,t) return self:combatTalentLimit(t, 50, 20, 35) end,
golemArmour = function(self,t) return self:combatTalentScale(t, 15, 33) end, golemArmour = function(self,t) return self:combatTalentScale(t, 15, 33) end,
golemHardiness = function(self,t) return 15 + self:getTalentLevelRaw(t)*10 end, golemHardiness = function(self,t) return 15 + self:getTalentLevelRaw(t)*10 end,
shellShielding = function(self,t) return self:combatTalentMindDamage(t, 10, 35) end, shellShielding = function(self,t) return self:combatTalentMindDamage(t, 10, 35) end,
...@@ -131,8 +131,8 @@ newTalent{ ...@@ -131,8 +131,8 @@ newTalent{
require = gifts_req3, require = gifts_req3,
mode = "passive", mode = "passive",
points = 5, points = 5,
incLife = function(self, t) return self:combatTalentLimit(t, 1, 0.05, 0.20) end, incLife = function(self, t) return self:combatTalentLimit(t, 1, 0.125, 0.25) end,
incDur = function(self, t) return math.floor(self:combatTalentLimit(t, 6, 1, 2.8)) end, incDur = function(self, t) return math.floor(self:combatTalentLimit(t, 6, 2, 5)) end,
info = function(self, t) info = function(self, t)
return ([[Increases all your summons' max life by %0.1f%% and extends your summons' maximum lifetime by %d turns.]]):tformat(100*t.incLife(self, t), t.incDur(self,t)) return ([[Increases all your summons' max life by %0.1f%% and extends your summons' maximum lifetime by %d turns.]]):tformat(100*t.incLife(self, t), t.incDur(self,t))
end, end,
......
...@@ -339,8 +339,8 @@ newTalent{ ...@@ -339,8 +339,8 @@ newTalent{
on_pre_use_ai = aiSummonPreUse, on_pre_use_ai = aiSummonPreUse,
aiSummonGrid = aiSummonGridRanged, aiSummonGrid = aiSummonGridRanged,
tactical = { BUFF = 0.2 }, tactical = { BUFF = 0.2 },
getReduc = function(self, t) return self:combatTalentLimit(t, 85, 25, 70) end, -- Limit <85% getReduc = function(self, t) return self:combatTalentLimit(t, 85, 35, 65) end, -- Limit <85%
getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 25, 2.7, 5.6)) end, -- Limit <25 getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 25, 3.5, 6.5)) end, -- Limit <25
action = function(self, t) action = function(self, t)
self:setEffect(self.EFF_FRANTIC_SUMMONING, t.getDuration(self, t), {power=t.getReduc(self, t)}) self:setEffect(self.EFF_FRANTIC_SUMMONING, t.getDuration(self, t), {power=t.getReduc(self, t)})
return true return true
......
...@@ -25,7 +25,7 @@ newTalent{ ...@@ -25,7 +25,7 @@ newTalent{
random_ego = "attack", random_ego = "attack",
message = _t"@Source@ spits acid!", message = _t"@Source@ spits acid!",
equilibrium = 3, equilibrium = 3,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 3, 6.9, 5.5)) end, -- Limit >=3 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 3, 6.9, 4)) end, -- Limit >=3
tactical = { ATTACK = { ACID = 2 } }, tactical = { ATTACK = { ACID = 2 } },
range = function(self, t) return math.floor(self:combatTalentScale(t, 5.5, 7.5)) end, range = function(self, t) return math.floor(self:combatTalentScale(t, 5.5, 7.5)) end,
on_learn = function(self, t) on_learn = function(self, t)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment