Skip to content
Snippets Groups Projects
Commit d882fa7f authored by DarkGod's avatar DarkGod
Browse files

Merge branch 'talent-tuning' into 'master'

Talent tuning

Tuning of various talents that are excessively powerful on NPCs.  
This accompanies !634, which causes tier 3 and 4 talents to show on NPCs with regularity. 

See merge request !635
parents 917385b6 b07af000
No related branches found
No related tags found
1 merge request!635Talent tuning
Pipeline #
Showing
with 20 additions and 14 deletions
......@@ -127,6 +127,7 @@ newTalent{
points = 5,
cooldown = 10,
sustain_positive = 10,
rnd_boss_restrict = true, -- martyrdom is fine on fixedbosses specifically given the talents but let's avoid it on randbosses
tactical = { BUFF = 2 },
range = 10,
getMartyrDamage = function(self, t) return self:combatTalentLimit(t, 50, 5, 25) end, --Limit < 50%
......
......@@ -143,7 +143,7 @@ newTalent{
cooldown = 15,
positive = 25,
negative = 25,
tactical = { ATTACKAREA = {LIGHT = 2} },
tactical = { ATTACKAREA = {LIGHT = 1.5, DARKNESS = 1.5} },
range = 0,
radius = 10,
direct_hit = true,
......
......@@ -199,7 +199,7 @@ newTalent{
tactical = { ATTACK = 2 },
requires_target = true,
range = 5,
-- no_npc_use = true,
random_boss_rarity = 50,
unlearn_on_clone = true,
target = function(self, t) return {type="bolt", range=self:getTalentRange(t), talent=t} end,
getDuration = function(self, t) return math.floor(self:combatTalentStatDamage(t, "cun", 3, 10)+1) end,
......
......@@ -56,6 +56,7 @@ newTalent{
vim = 30,
range = 10,
radius = 3,
random_boss_rarity = 50, -- prevent sustain removal from being too common on NPCs
tactical = { ATTACKAREA = {BLIGHT = 1}, DISABLE = 2 },
requires_target = true,
target = function(self, t)
......
......@@ -81,7 +81,7 @@ newTalent{
sustain_mana = 20,
require = cuns_req3,
tactical = { BUFF = 2 },
getManaRegen = function(self, t) return self:combatTalentScale(t, 1.5/5, 1, 0.75) / (1 - t.getAtkSpeed(self, t)/100) end,
getManaRegen = function(self, t) return self:combatTalentLimit(t, 1, 0.3, 0.8) * (1+t.getAtkSpeed(self, t)/100) end,
getAtkSpeed = function(self, t) return self:combatTalentScale(t, 2.2, 15) end,
activate = function(self, t)
local speed = t.getAtkSpeed(self, t)/100
......
......@@ -188,6 +188,7 @@ newTalent{
require = gifts_req_high4,
points = 5,
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
getDamageIncrease = function(self, t) return self:combatTalentLimit(t, 50, 5, 15) end, -- Limit < 50%
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%
......
......@@ -66,7 +66,7 @@ newTalent{
effectDuration = function(self, t) return math.floor(self:combatTalentScale(t, 5, 9)) end,
poisonDamage = function(self, t) return self:combatTalentMindDamage(t, 20, 133) end,
nbEscorts = function(self, t) return math.max(1,math.floor(self:combatTalentScale(t, 0.3, 2.7, "log"))) end,
resReduction = function(self, t) return self:combatTalentMindDamage(t, 12, 50) end,
resReduction = function(self, t) return self:combatTalentMindDamage(t, 12, 44) end,
amtHealing = function(self, t) return 30 + self:combatTalentMindDamage(t, 10, 350) end,
slowStrength = function(self, t) return self:combatLimit(self:combatTalentMindDamage(t, 5, 500), 1, 0.1, 0, 0.47 , 369) end, -- Limit speed loss to <100%
info = function(self, t)
......@@ -114,7 +114,7 @@ newTalent{
on_pre_use = function(self, t, silent)
return self:isTalentActive(self.T_MASTER_SUMMONER)
end,
duration = function(self, t) return math.floor(self:combatTalentLimit(t, 25, 1, 5)) end, -- Limit <25
duration = function(self, t) return math.floor(self:combatTalentLimit(t, 15, 1, 5)) end, -- Limit <25
action = function(self, t)
self:setEffect(self.EFF_WILD_SUMMON, t.duration(self,t), {chance=100})
game:playSoundNear(self, "talents/teleport")
......
......@@ -41,7 +41,6 @@ newTalent{
end,
}
newTalent{
name = "Shell Shield",
type = {"technique/other",1},
......@@ -340,7 +339,7 @@ newTalent{
on_pre_use_ai = aiSummonPreUse,
aiSummonGrid = aiSummonGridRanged,
tactical = { BUFF = 0.2 },
getReduc = function(self, t) return self:combatTalentLimit(t, 100, 25, 75) end, -- Limit <100%
getReduc = function(self, t) return self:combatTalentLimit(t, 85, 25, 70) end, -- Limit <85%
getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 25, 2.7, 5.6)) end, -- Limit <25
action = function(self, t)
self:setEffect(self.EFF_FRANTIC_SUMMONING, t.getDuration(self, t), {power=t.getReduc(self, t)})
......
......@@ -25,6 +25,7 @@ newTalent{
random_ego = "utility",
mana = 40,
cooldown = 25,
random_boss_rarity = 50,
-- no_energy = function(self, t) return self:getTalentLevel(t) >= 7 and true or false end,
tactical = { CURE = function(self, t, aitarget)
local nb = 0
......
......@@ -122,11 +122,11 @@ newTalent{
require = spells_req4,
points = 5,
mode = "sustained",
sustain_mana = 180,
sustain_mana = 120,
cooldown = 20,
use_only_arcane = 4,
tactical = { BUFF = 2 },
getHaste = function(self, t) return self:combatTalentLimit(t, 0.35, 0.05, 0.25) end,
getHaste = function(self, t) return self:combatTalentScale(t, 0.075, 0.26, 1/3) end, -- +10~30% for players, cube root scaling to prevent excessive strength on NPCs
activate = function(self, t)
game:playSoundNear(self, "talents/spell_generic")
local power = t.getHaste(self, t)
......
......@@ -162,7 +162,7 @@ newTalent{
stamina = 30,
requires_target = true,
no_break_stealth = true,
tactical = { ATTACK = { PHYSICAL = 2 }, BUFF = 1},
no_npc_use = true, -- lol
getPower = function(self, t) return self:combatTalentScale(t, 15, 40) end,
getPercent = function(self, t) return self:combatTalentLimit(t, 50, 10, 40) end,
getDamage = function(self,t) return self:combatTalentStatDamage(t, "dex", 15, 180) end,
......
......@@ -99,6 +99,7 @@ newTalent{
cooldown = 45,
stamina = 120,
fixed_cooldown = true,
random_boss_rarity = 20,
tactical = { DEFEND = 4, STAMINA = -2,
HEAL = function(self, t, target) -- up to 2 if there are enemies near
local val = 0
......@@ -112,7 +113,7 @@ newTalent{
end
},
getHealPercent = function(self,t) return self:combatTalentLimit(t, 50, 3.5, 17.5) end, -- Limit <50%
getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 15, 3, 7, true)) end, -- Limit < 25
getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 3, 6, true)) end, -- Limit < 10
action = function(self, t)
self:setEffect(self.EFF_UNSTOPPABLE, t.getDuration(self, t), {hp_per_kill=t.getHealPercent(self,t)})
return true
......
......@@ -152,13 +152,14 @@ newTalent{
stamina = 25,
no_energy = true,
require = techs_strdex_req4,
random_boss_rarity = 33, -- common tree on classes and global speed is immensely powerful
tactical = { BUFF = 2, CLOSEIN = 2, ESCAPE = 2 },
on_pre_use_ai = function(self, t) -- don't use out of combat
local target = self.ai_target.actor
if target and core.fov.distance(self.x, self.y, target.x, target.y) <= 10 and self:hasLOS(target.x, target.y, "block_move") then return true end
return false
end,
getSpeed = function(self, t) return self:combatTalentScale(t, 0.14, 0.45) end,
getSpeed = function(self, t) return self:combatTalentScale(t, 0.14, 0.4) end,
action = function(self, t)
self:setEffect(self.EFF_SPEED, 5, {power=t.getSpeed(self, t)})
return true
......@@ -207,6 +208,7 @@ newTalent{
require = techs_strdex_req3,
mode = "passive",
points = 5,
random_boss_rarity = 50, -- super common tree and this disproportionately targets mages
getSaves = function(self, t) return math.floor(self:combatTalentScale(t, 12, 48)) end,
passives = function(self, t, p)
self:talentTemporaryValue(p, "combat_spellresist", t.getSaves(self,t))
......
......@@ -206,7 +206,7 @@ newTalent{
cooldown = 8,
stamina = 12,
message = _t"@Source@ throws a wild haymaker!",
tactical = { ATTACK = { weapon = 2 } },
no_npc_use = true, -- easily reaches >400% weapon damage
requires_target = true,
range = 1,
target = function(self, t) return {type="hit", range=self:getTalentRange(t)} end,
......
......@@ -179,7 +179,7 @@ newTalent {
points = 5,
mode = "sustained",
no_energy = true,
tactical = { BUFF = 2, STAMINA = -2 },
no_npc_use = true, -- let's not allow NPCs to attack three times a turn for over 100% weapon damage at high TL
on_pre_use = function(self, t, silent) return archerPreUse(self, t, silent, "sling") end,
cooldown = function(self, t)
return 10
......
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