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

Tune racial talent scaling

parent 1d720f70
No related branches found
No related tags found
No related merge requests found
Pipeline #
...@@ -65,7 +65,7 @@ newTalent{ ...@@ -65,7 +65,7 @@ newTalent{
mode = "passive", mode = "passive",
getSight = function(self, t) return math.floor(self:combatTalentScale(t, 1, 5, "log")) end, getSight = function(self, t) return math.floor(self:combatTalentScale(t, 1, 5, "log")) end,
getESight = function(self, t) return math.ceil(self:combatTalentScale(t, 0.3, 2.3, "log", 0, 2)) end, getESight = function(self, t) return math.ceil(self:combatTalentScale(t, 0.3, 2.3, "log", 0, 2)) end,
getImmune = function(self, t) return self:combatTalentLimit(t, 1, 0.1, 0.4) end, getImmune = function(self, t) return self:combatTalentLimit(t, 1, 0.15, 0.5, false, 1.0) end,
passives = function(self, t, p) passives = function(self, t, p)
self:talentTemporaryValue(p, "blind_immune", t.getImmune(self, t)) self:talentTemporaryValue(p, "blind_immune", t.getImmune(self, t))
self:talentTemporaryValue(p, "sight", t.getSight(self, t)) self:talentTemporaryValue(p, "sight", t.getSight(self, t))
...@@ -92,7 +92,7 @@ newTalent{ ...@@ -92,7 +92,7 @@ newTalent{
require = racial_req3, require = racial_req3,
points = 5, points = 5,
mode = "passive", mode = "passive",
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 0, 19, 5)) end, -- Limit > 0 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 0, 15, 5, false, 1.0)) end, -- Limit > 0
getSave = function(self, t) return self:combatTalentScale(t, 5, 35, 0.75) end, getSave = function(self, t) return self:combatTalentScale(t, 5, 35, 0.75) end,
power = function(self, t) return self:combatTalentScale(t, 7, 25) end, power = function(self, t) return self:combatTalentScale(t, 7, 25) end,
trigger = function(self, t, damtype) trigger = function(self, t, damtype)
...@@ -118,7 +118,7 @@ newTalent{ ...@@ -118,7 +118,7 @@ newTalent{
require = racial_req4, require = racial_req4,
points = 5, points = 5,
no_energy = true, no_energy = true,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 20, 47, 35)) end, -- Limit >20 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 20, 45, 30, false, 1.0)) end, -- Limit >20
on_pre_use_ai = function(self, t) on_pre_use_ai = function(self, t)
local aitarget = self.ai_target.actor local aitarget = self.ai_target.actor
if not aitarget then return end -- don't activate without a target if not aitarget then return end -- don't activate without a target
...@@ -145,7 +145,7 @@ newTalent{ ...@@ -145,7 +145,7 @@ newTalent{
t.tactical = tacs t.tactical = tacs
return tacs return tacs
end, end,
getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 2, 6.1)) end, -- Limit to < 10 getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 3, 7.1, false, 1.0)) end, -- Limit to < 10
action = function(self, t) action = function(self, t)
self:setEffect(self.EFF_HIGHBORN_S_BLOOM, t.getDuration(self, t), {}) self:setEffect(self.EFF_HIGHBORN_S_BLOOM, t.getDuration(self, t), {})
return true return true
...@@ -169,7 +169,7 @@ newTalent{ ...@@ -169,7 +169,7 @@ newTalent{
require = racial_req1, require = racial_req1,
points = 5, points = 5,
no_energy = true, no_energy = true,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 46, 30)) end, -- Limit to >10 turns cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 45, 25, false, 1.0)) end, -- Limit to >10 turns
getSpeed = function(self, t) return self:combatStatScale(math.max(self:getDex(), self:getMag()), 0.1, 0.476) end, getSpeed = function(self, t) return self:combatStatScale(math.max(self:getDex(), self:getMag()), 0.1, 0.476) end,
tactical = { DEFEND = 1 }, tactical = { DEFEND = 1 },
action = function(self, t) action = function(self, t)
...@@ -207,8 +207,8 @@ newTalent{ ...@@ -207,8 +207,8 @@ newTalent{
type = {"race/shalore", 3}, type = {"race/shalore", 3},
require = racial_req3, require = racial_req3,
points = 5, points = 5,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 5, 47, 25)) end, -- Limit > 5 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 5, 45, 25, false, 1.0)) end, -- Limit > 5
getChance = function(self, t) return self:combatTalentLimit(t, 100, 21, 45) end, -- Limit < 100% getChance = function(self, t) return self:combatTalentLimit(t, 100, 20, 45, false, 1.0) end, -- Limit < 100%
getInvis = function(self, t) return math.ceil(self:combatStatScale("mag" , 7, 25)) end, getInvis = function(self, t) return math.ceil(self:combatStatScale("mag" , 7, 25)) end,
mode = "sustained", mode = "sustained",
no_energy = true, no_energy = true,
...@@ -314,10 +314,10 @@ newTalent{ ...@@ -314,10 +314,10 @@ newTalent{
require = racial_req1, require = racial_req1,
points = 5, points = 5,
no_energy = true, no_energy = true,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 45, 25)) end, -- Limit >10 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 45, 25, false, 1.0)) end, -- Limit >10
tactical = { HEAL = 2 }, tactical = { HEAL = 2 },
on_pre_use = function(self, t) return not self:hasEffect(self.EFF_REGENERATION) end, on_pre_use = function(self, t) return not self:hasEffect(self.EFF_REGENERATION) end,
getHealMod = function(self, t) return self:combatTalentLimit(t, 50, 10, 30) end, getHealMod = function(self, t) return self:combatTalentLimit(t, 50, 15, 30, false, 1.0) end,
getHealing = function(self, t) return 6 + math.max(self:getWil(), self:getCon()) * 0.6 end, getHealing = function(self, t) return 6 + math.max(self:getWil(), self:getCon()) * 0.6 end,
action = function(self, t) action = function(self, t)
self:setEffect(self.EFF_REGENERATION, 8, {power=t.getHealing(self, t)}) self:setEffect(self.EFF_REGENERATION, 8, {power=t.getHealing(self, t)})
...@@ -357,7 +357,7 @@ newTalent{ ...@@ -357,7 +357,7 @@ newTalent{
require = racial_req3, require = racial_req3,
points = 5, points = 5,
mode = "passive", mode = "passive",
getDiseaseImmune = function(self, t) return self:combatTalentLimit(t, 1, 0.2, 0.75) end, -- Limit < 100% getDiseaseImmune = function(self, t) return self:combatTalentLimit(t, 1, 0.25, 0.7, false, 1.0) end, -- Limit < 100%
getBResist = function(self, t) return self:combatTalentScale(t, 3, 10) end, getBResist = function(self, t) return self:combatTalentScale(t, 3, 10) end,
getAllResist = function(self, t) return self:combatTalentScale(t, 2, 6.5) end, getAllResist = function(self, t) return self:combatTalentScale(t, 2, 6.5) end,
passives = function(self, t, p) passives = function(self, t, p)
...@@ -378,7 +378,7 @@ newTalent{ ...@@ -378,7 +378,7 @@ newTalent{
require = racial_req4, require = racial_req4,
points = 5, points = 5,
no_energy = true, no_energy = true,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 8, 46, 34)) end, -- limit >8 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 8, 45, 25, false, 1.0)) end, -- limit >8
tactical = { ATTACK = { PHYSICAL = 2 }, DISABLE = { stun = 1, knockback = 1 } }, tactical = { ATTACK = { PHYSICAL = 2 }, DISABLE = { stun = 1, knockback = 1 } },
range = 4, range = 4,
action = function(self, t) action = function(self, t)
...@@ -466,11 +466,11 @@ newTalent{ ...@@ -466,11 +466,11 @@ newTalent{
require = racial_req1, require = racial_req1,
points = 5, points = 5,
no_energy = true, no_energy = true,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 8, 45, 25)) end, -- Limit >8 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 8, 45, 25, false, 1.0)) end, -- Limit >8
getParams = function(self, t) getParams = function(self, t)
return { return {
armor = self:combatStatScale("con", 7, 25), armor = self:combatStatScale("con", 7, 25),
armor_hardiness = self:combatTalentLimit(t, 40, 20, 35), armor_hardiness = self:combatTalentLimit(t, 40, 20, 35, false, 1.0),
physical = self:combatStatScale("con", 12, 30, 0.75), physical = self:combatStatScale("con", 12, 30, 0.75),
spell = self:combatStatScale("con", 12, 30, 0.75), spell = self:combatStatScale("con", 12, 30, 0.75),
} }
...@@ -513,7 +513,7 @@ newTalent{ ...@@ -513,7 +513,7 @@ newTalent{
points = 5, points = 5,
mode = "passive", mode = "passive",
getMaxSaves = function(self, t) return self:combatTalentScale(t, 8, 50) end, getMaxSaves = function(self, t) return self:combatTalentScale(t, 8, 50) end,
getGold = function(self, t) return self:combatTalentLimit(t, 40, 85, 65) end, -- Limit > 40 getGold = function(self, t) return self:combatTalentLimit(t, 40, 85, 60, false, 1.0) end, -- Limit > 40
-- called by _M:combatPhysicalResist, _M:combatSpellResist, _M:combatMentalResist in mod.class.interface.Combat.lua -- called by _M:combatPhysicalResist, _M:combatSpellResist, _M:combatMentalResist in mod.class.interface.Combat.lua
getSaves = function(self, t) getSaves = function(self, t)
return util.bound(self.money / t.getGold(self, t), 0, t.getMaxSaves(self, t)) return util.bound(self.money / t.getGold(self, t), 0, t.getMaxSaves(self, t))
...@@ -531,7 +531,7 @@ newTalent{ ...@@ -531,7 +531,7 @@ newTalent{
type = {"race/dwarf", 4}, type = {"race/dwarf", 4},
require = racial_req4, require = racial_req4,
points = 5, points = 5,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 5, 45, 25)) end, -- Limit >5 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 5, 45, 25, false, 1.0)) end, -- Limit >5
range = 1, range = 1,
no_npc_use = true, no_npc_use = true,
getRange = function(self, t) getRange = function(self, t)
...@@ -575,7 +575,7 @@ newTalent{ ...@@ -575,7 +575,7 @@ newTalent{
require = racial_req1, require = racial_req1,
points = 5, points = 5,
no_energy = true, no_energy = true,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 5, 45, 25)) end, -- Limit >5 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 5, 45, 25, false, 1.0)) end, -- Limit >5
getParams = function(self, t) getParams = function(self, t)
return { return {
crit = self:combatStatScale("cun", 15, 60, 0.75), crit = self:combatStatScale("cun", 15, 60, 0.75),
...@@ -638,7 +638,7 @@ newTalent{ ...@@ -638,7 +638,7 @@ newTalent{
require = racial_req4, require = racial_req4,
points = 5, points = 5,
no_energy = true, no_energy = true,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 45, 25)) end, -- limit >10 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 45, 25, false, 1.0)) end, -- limit >10
tactical = { DEFEND = function(self, t, aitarget) tactical = { DEFEND = function(self, t, aitarget)
local count, t = 0 local count, t = 0
for tid, _ in pairs(aitarget.talents) do for tid, _ in pairs(aitarget.talents) do
...@@ -704,7 +704,7 @@ newTalent{ ...@@ -704,7 +704,7 @@ newTalent{
require = racial_req1, require = racial_req1,
points = 5, points = 5,
no_energy = true, no_energy = true,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 5, 46, 30)) end, -- Limit to >5 turns cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 5, 45, 25, false, 1.0)) end, -- Limit to >5 turns
getPower = function(self, t) return self:combatStatScale("con", 1, 6 ) end, getPower = function(self, t) return self:combatStatScale("con", 1, 6 ) end,
enemyCount = function(self, t) -- Count actors in LOS and seen enemyCount = function(self, t) -- Count actors in LOS and seen
local nb = 0 local nb = 0
...@@ -775,7 +775,7 @@ newTalent{ ...@@ -775,7 +775,7 @@ newTalent{
require = racial_req3, require = racial_req3,
points = 5, points = 5,
mode = "passive", mode = "passive",
getPen = function(self, t) return self:combatTalentLimit(t, 20, 7, 15) end, getPen = function(self, t) return self:combatTalentLimit(t, 20, 7, 15, false, 1.0) end,
getResist = function(self, t) return 5+self:combatTalentStatDamage(t, "con", 3, 10) end, getResist = function(self, t) return 5+self:combatTalentStatDamage(t, "con", 3, 10) end,
passives = function(self, t, p) passives = function(self, t, p)
self:talentTemporaryValue(p, "resists_pen", {all = t.getPen(self, t)}) self:talentTemporaryValue(p, "resists_pen", {all = t.getPen(self, t)})
...@@ -799,7 +799,7 @@ newTalent{ ...@@ -799,7 +799,7 @@ newTalent{
require = racial_req4, require = racial_req4,
points = 5, points = 5,
no_energy = true, no_energy = true,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 46, 30)) end, -- Limit to >10 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 45, 25, false, 1.0)) end, -- Limit to >10
remcount = function(self,t) return math.ceil(self:combatTalentScale(t, 0.5, 3, "log", 0, 3)) end, remcount = function(self,t) return math.ceil(self:combatTalentScale(t, 0.5, 3, "log", 0, 3)) end,
heal = function(self, t) return 50+self:combatTalentStatDamage(t, "wil", 100, 500) end, heal = function(self, t) return 50+self:combatTalentStatDamage(t, "wil", 100, 500) end,
tactical = { HEAL = 1, CURE = function(self, t, target) tactical = { HEAL = 1, CURE = function(self, t, target)
...@@ -864,7 +864,7 @@ newTalent{ ...@@ -864,7 +864,7 @@ newTalent{
require = racial_req1, require = racial_req1,
points = 5, points = 5,
no_energy = true, no_energy = true,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 47, 35)) end, -- Limit >10 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 45, 25, false, 1.0)) end, -- Limit >10
getduration = function(self) return math.floor(self:combatStatScale("wil", 5, 14)) end, getduration = function(self) return math.floor(self:combatStatScale("wil", 5, 14)) end,
range = 4, range = 4,
no_npc_use = true, no_npc_use = true,
...@@ -917,7 +917,7 @@ newTalent{ ...@@ -917,7 +917,7 @@ newTalent{
require = racial_req2, require = racial_req2,
points = 5, points = 5,
mode = "passive", mode = "passive",
getImmune = function(self, t) return self:combatTalentLimit(t, 1, 0.17, 0.6) end, -- Limit < 100% getImmune = function(self, t) return self:combatTalentLimit(t, 1, 0.2, 0.55, false, 1.0) end, -- Limit < 100%
getSave = function(self, t) return self:combatTalentScale(t, 5, 20, 0.75) end, getSave = function(self, t) return self:combatTalentScale(t, 5, 20, 0.75) end,
passives = function(self, t, p) passives = function(self, t, p)
self:talentTemporaryValue(p, "confusion_immune", t.getImmune(self, t)) self:talentTemporaryValue(p, "confusion_immune", t.getImmune(self, t))
...@@ -938,7 +938,7 @@ newTalent{ ...@@ -938,7 +938,7 @@ newTalent{
points = 5, points = 5,
mode = "passive", mode = "passive",
speedup = function(self, t) return self:combatTalentScale(t, 0.04, 0.15, 0.75) end, speedup = function(self, t) return self:combatTalentScale(t, 0.04, 0.15, 0.75) end,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 20, 50, 30)) end, cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 20, 45, 25, false, 1.0)) end,
passives = function(self, t, p) passives = function(self, t, p)
self:talentTemporaryValue(p, "global_speed_base", t.speedup(self, t)) self:talentTemporaryValue(p, "global_speed_base", t.speedup(self, t))
self:recomputeGlobalSpeed() self:recomputeGlobalSpeed()
...@@ -964,7 +964,7 @@ newTalent{ ...@@ -964,7 +964,7 @@ newTalent{
require = racial_req4, require = racial_req4,
points = 5, points = 5,
no_energy = true, no_energy = true,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 6, 47, 35)) end, -- Limit >6 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 6, 45, 25, false, 1.0)) end, -- Limit >6
range = 4, range = 4,
no_npc_use = true, -- make available to NPCs? no_npc_use = true, -- make available to NPCs?
action = function(self, t) action = function(self, t)
...@@ -1077,7 +1077,7 @@ newTalent{ ...@@ -1077,7 +1077,7 @@ newTalent{
require = racial_req1, require = racial_req1,
points = 5, points = 5,
no_energy = true, no_energy = true,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 47, 35)) end, -- Limit >10 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 45, 25, false, 1.0)) end, -- Limit >10
getduration = function(self) return math.floor(self:combatStatScale("str", 5, 12)) end, getduration = function(self) return math.floor(self:combatStatScale("str", 5, 12)) end,
range = 4, range = 4,
no_npc_use = true, no_npc_use = true,
...@@ -1131,7 +1131,7 @@ newTalent{ ...@@ -1131,7 +1131,7 @@ newTalent{
require = racial_req3, require = racial_req3,
points = 5, points = 5,
mode = "passive", mode = "passive",
getChance = function(self, t) return self:combatTalentLimit(t, 100, 20, 45) end, -- Limit < 100% getChance = function(self, t) return self:combatTalentLimit(t, 100, 25, 50, false, 1.0) end, -- Limit < 100%
callbackOnCrit = function(self, t) callbackOnCrit = function(self, t)
if self.turn_procs.scar_scripted_flesh then return end if self.turn_procs.scar_scripted_flesh then return end
if not rng.percent(t.getChance(self, t)) then return end if not rng.percent(t.getChance(self, t)) then return end
...@@ -1165,8 +1165,8 @@ newTalent{ ...@@ -1165,8 +1165,8 @@ newTalent{
points = 5, points = 5,
no_energy = true, no_energy = true,
no_unlearn_last = true, no_unlearn_last = true,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 6, 47, 35)) end, -- Limit >6 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 6, 45, 25, false, 1.0)) end, -- Limit >6
getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 15, 5, 10)) end, getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 15, 5, 10, false, 1.0)) end,
on_levelup_close = function(self, t, lvl, old_lvl, lvl_raw, old_lvl_raw) on_levelup_close = function(self, t, lvl, old_lvl, lvl_raw, old_lvl_raw)
if lvl_raw >= 5 and old_lvl_raw < 5 then if lvl_raw >= 5 and old_lvl_raw < 5 then
self.inscriptions_slots_added = self.inscriptions_slots_added - 1 self.inscriptions_slots_added = self.inscriptions_slots_added - 1
......
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