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
No related merge requests found
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