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

Merge branch 'bnnsc1.7.0' into 'master'

Misc 1.7.1

Change Notes:  
* Lower level of enemies in bandit fortress vault  
* Reduce the frequency at which rares take talents in the Combat Techniques tree, potentially alleviating a concern that rares have too high accuracy in 1.7  
* Minimize use of raw talent level where effective should be used and has precedent for use  


See merge request !667
parents 08c3c502 5d0d2cce
No related branches found
No related tags found
1 merge request!667Misc 1.7.1
Pipeline #
Showing
with 43 additions and 39 deletions
...@@ -41,7 +41,7 @@ local stairs = function() ...@@ -41,7 +41,7 @@ local stairs = function()
__applied_difficulty = true, -- Difficulty already applied to parent zone __applied_difficulty = true, -- Difficulty already applied to parent zone
level_scheme = "player", level_scheme = "player",
max_level = 1, max_level = 1,
actor_adjust_level = function(zone, level, e) return zone.base_level + e:getRankLevelAdjust() + level.level+4 + rng.range(-2,6) end, actor_adjust_level = function(zone, level, e) return zone.base_level + e:getRankLevelAdjust() + level.level+2 + rng.range(-2,4) end,
width = 35, height = 60, width = 35, height = 60,
ambient_music = "Swashing the buck.ogg", -- check for better fit ambient_music = "Swashing the buck.ogg", -- check for better fit
persistent = "zone", persistent = "zone",
...@@ -108,16 +108,16 @@ for name, data in pairs(Birther.birth_descriptor_def.class["Rogue"].descriptor_c ...@@ -108,16 +108,16 @@ for name, data in pairs(Birther.birth_descriptor_def.class["Rogue"].descriptor_c
if Birther.birth_descriptor_def.subclass[name] and not Birther.birth_descriptor_def.subclass[name].not_on_random_boss then rogues[#rogues+1] = name end if Birther.birth_descriptor_def.subclass[name] and not Birther.birth_descriptor_def.subclass[name].not_on_random_boss then rogues[#rogues+1] = name end
end end
defineTile('g', "FLOOR", nil, {random_filter={name=(rng.table(thieves)), add_levels=4, random_boss={name_scheme=_t"#rng# the Guard", nb_classes=0, force_classes={(rng.table(rogues))}, loot_quality="store", loot_quantity=1, no_loot_randart=true, loot_unique=true, ai_move="move_complex", rank=3.2}}}) defineTile('g', "FLOOR", nil, {random_filter={name=(rng.table(thieves)), add_levels=1, random_boss={name_scheme=_t"#rng# the Guard", nb_classes=0, force_classes={(rng.table(rogues))}, loot_quality="store", loot_quantity=1, no_loot_randart=true, loot_unique=true, ai_move="move_complex", rank=3.2}}})
defineTile('G', "FLOOR", nil, {random_filter={name=(rng.table(thieves)), add_levels=6, random_boss={name_scheme=_t"#rng# the Guard", nb_classes=0, force_classes={(rng.table(rogues))}, loot_quality="store", loot_quantity=1, no_loot_randart=true, loot_unique=true, ai_move="move_complex", rank=3.2}}}) defineTile('G', "FLOOR", nil, {random_filter={name=(rng.table(thieves)), add_levels=1, random_boss={name_scheme=_t"#rng# the Guard", nb_classes=0, force_classes={(rng.table(rogues))}, loot_quality="store", loot_quantity=1, no_loot_randart=true, loot_unique=true, ai_move="move_complex", rank=3.2}}})
defineTile('r', "FLOOR", nil, {random_filter={name=(rng.table(thieves)), add_levels=4}}) defineTile('r', "FLOOR", nil, {random_filter={name=(rng.table(thieves)), add_levels=2}})
defineTile('R', "FLOOR", nil, {random_filter={name=(rng.table(thieves)), add_levels=7}}) defineTile('R', "FLOOR", nil, {random_filter={name=(rng.table(thieves)), add_levels=4}})
defineTile('l', "FLOOR", nil, {random_filter={add_levels=10, name = "bandit lord"}}) defineTile('l', "FLOOR", nil, {random_filter={add_levels=4, name = "bandit lord"}})
defineTile('a', "FLOOR", {random_filter={add_levels=5, tome_mod="vault"}}, nil) defineTile('a', "FLOOR", {random_filter={add_levels=5, tome_mod="vault"}}, nil)
defineTile('$', "FLOOR", {random_filter={add_levels=25, type="money"}}) defineTile('$', "FLOOR", {random_filter={add_levels=25, type="money"}})
defineTile('t', "FLOOR", nil, nil, {random_filter={add_levels=20}}) defineTile('t', "FLOOR", nil, nil, {random_filter={add_levels=20}})
defineTile('j', "FLOOR", {random_filter={add_levels=10, type="jewelry", tome_mod="gvault"}}) defineTile('j', "FLOOR", {random_filter={add_levels=10, type="jewelry", tome_mod="gvault"}})
defineTile('<', stairs(), nil, {random_filter={name=(rng.table(thieves)), add_levels=6, random_boss={name_scheme=_t"#rng# the Guard", nb_classes=0, force_classes={(rng.table(rogues))}, loot_quality="store", loot_quantity=1, no_loot_randart=true, loot_unique=true, ai_move="move_complex", rank=3.2, defineTile('<', stairs(), nil, {random_filter={name=(rng.table(thieves)), random_boss={name_scheme=_t"#rng# the Guard", nb_classes=0, force_classes={(rng.table(rogues))}, loot_quality="store", loot_quantity=1, no_loot_randart=true, loot_unique=true, ai_move="move_complex", rank=3.2,
on_die=function(self, who) -- drop lore note on death on_die=function(self, who) -- drop lore note on death
local lore = mod.class.Object.new{ local lore = mod.class.Object.new{
type = "lore", subtype="lore", type = "lore", subtype="lore",
......
...@@ -71,16 +71,16 @@ defineTile('!', "DOOR_VAULT") ...@@ -71,16 +71,16 @@ defineTile('!', "DOOR_VAULT")
defineTile('>', "DYNAMIC_ZONE_EXIT") defineTile('>', "DYNAMIC_ZONE_EXIT")
defineTile('*', "FLOOR", nil, nil, {random_filter={add_levels=20}}) defineTile('*', "FLOOR", nil, nil, {random_filter={add_levels=20}})
defineTile('g', "FLOOR", nil, {random_filter={name=(rng.table(thieves)), add_levels=3, random_boss={name_scheme=_t"#rng# the Guard", nb_classes=0, force_classes={(rng.table(rogues))}, loot_quality="store", loot_quantity=1, no_loot_randart=true, loot_unique=true, ai_move="move_complex", rank=3.2}}}) defineTile('g', "FLOOR", nil, {random_filter={name=(rng.table(thieves)), random_boss={name_scheme=_t"#rng# the Guard", nb_classes=0, force_classes={(rng.table(rogues))}, loot_quality="store", loot_quantity=1, no_loot_randart=true, loot_unique=true, ai_move="move_complex", rank=3.2}}})
defineTile('G', "FLOOR", nil, {random_filter={name=(rng.table(thieves)), add_levels=5, random_boss={name_scheme=_t"#rng# the Guard", nb_classes=0, force_classes={(rng.table(rogues))}, loot_quality="store", loot_quantity=1, no_loot_randart=true, loot_unique=true, ai_move="move_complex", rank=3.2}}}) defineTile('G', "FLOOR", nil, {random_filter={name=(rng.table(thieves)), random_boss={name_scheme=_t"#rng# the Guard", nb_classes=0, force_classes={(rng.table(rogues))}, loot_quality="store", loot_quantity=1, no_loot_randart=true, loot_unique=true, ai_move="move_complex", rank=3.2}}})
defineTile('t', "FLOOR", nil, {random_filter={name=(rng.table(thugs)), add_levels=4, random_boss={name_scheme=_t"#rng# the Thug", nb_classes=0, force_classes={(rng.table(thuggeries))}, loot_quality="store", loot_quantity=1, ai_move="move_complex", rank=3.5}}}) defineTile('t', "FLOOR", nil, {random_filter={name=(rng.table(thugs)), random_boss={name_scheme=_t"#rng# the Thug", nb_classes=0, force_classes={(rng.table(thuggeries))}, loot_quality="store", loot_quantity=1, ai_move="move_complex", rank=3.5}}})
defineTile('T', "FLOOR", nil, {random_filter={name=(rng.table(thugs)), add_levels=6, random_boss={name_scheme=_t"#rng# the Thug", nb_classes=0, force_classes={(rng.table(thuggeries))}, loot_quality="store", loot_quantity=1, ai_move="move_complex", rank=3.5}}}) defineTile('T', "FLOOR", nil, {random_filter={name=(rng.table(thugs)), random_boss={name_scheme=_t"#rng# the Thug", nb_classes=0, force_classes={(rng.table(thuggeries))}, loot_quality="store", loot_quantity=1, ai_move="move_complex", rank=3.5}}})
defineTile('r', "FLOOR", nil, {random_filter={name=(rng.table(thieves)), add_levels=2}}) defineTile('r', "FLOOR", nil, {random_filter={name=(rng.table(thieves))}})
defineTile('R', "FLOOR", nil, {random_filter={name=(rng.table(thieves)), add_levels=3}}) defineTile('R', "FLOOR", nil, {random_filter={name=(rng.table(thieves))}})
defineTile('l', "FLOOR", nil, {random_filter={add_levels=10, name = "bandit lord"}}) defineTile('l', "FLOOR", nil, {random_filter={name = "bandit lord"}})
defineTile('i', "FLOOR", nil, {random_filter={name=(rng.table(thugs)), add_levels=3}}) defineTile('i', "FLOOR", nil, {random_filter={name=(rng.table(thugs)), add_levels=1}})
defineTile('I', "FLOOR", nil, {random_filter={name=(rng.table(thugs)), add_levels=6}}) defineTile('I', "FLOOR", nil, {random_filter={name=(rng.table(thugs)), add_levels=1}})
defineTile('B', "FLOOR", nil, {random_filter={name=(rng.table(bosses)), add_levels=8, random_boss={name_scheme=_t"Bandit Leader #rng#", nb_classes=0, force_classes={(rng.table(rogues)), (rng.table(thuggeries))}, loot_quality="store", loot_quantity=1, loot_unique=true, ai_move="move_complex", rank=4, defineTile('B', "FLOOR", nil, {random_filter={name=(rng.table(bosses)), add_levels=2, random_boss={name_scheme=_t"Bandit Leader #rng#", nb_classes=0, force_classes={(rng.table(rogues)), (rng.table(thuggeries))}, loot_quality="store", loot_quantity=1, loot_unique=true, ai_move="move_complex", rank=4,
on_die=function(self, who) -- drop lore note on death on_die=function(self, who) -- drop lore note on death
local lore = mod.class.Object.new{ local lore = mod.class.Object.new{
type = "lore", subtype="lore", type = "lore", subtype="lore",
......
...@@ -76,7 +76,7 @@ newTalent{ ...@@ -76,7 +76,7 @@ newTalent{
jellySlow = function(self,t) return self:combatTalentLimit(t, 0.60, 0.25, 0.48) 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, 20, 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:getTalentLevel(t)*7.7 end,
shellShielding = function(self,t) return self:combatTalentMindDamage(t, 10, 35) end, shellShielding = function(self,t) return self:combatTalentMindDamage(t, 10, 35) end,
spiderKnockback = function(self,t) return 1 + math.floor(self:getTalentLevel(t)) end, spiderKnockback = function(self,t) return 1 + math.floor(self:getTalentLevel(t)) end,
action = function(self, t) action = function(self, t)
......
...@@ -143,7 +143,7 @@ newTalent{ ...@@ -143,7 +143,7 @@ newTalent{
mode = "sustained", no_sustain_autoreset = true, mode = "sustained", no_sustain_autoreset = true,
points = 5, points = 5,
sustain_psi = 10, sustain_psi = 10,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 5, 14, 8, true)) end, --Limit > 5 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 5, 14, 8)) end, --Limit > 5
range = 0, range = 0,
no_energy = true, no_energy = true,
tactical = { DEFEND = 2 }, tactical = { DEFEND = 2 },
...@@ -206,7 +206,7 @@ newTalent{ ...@@ -206,7 +206,7 @@ newTalent{
mode = "sustained", no_sustain_autoreset = true, mode = "sustained", no_sustain_autoreset = true,
points = 5, points = 5,
sustain_psi = 10, sustain_psi = 10,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 5, 14, 8, true)) end, --Limit > 5 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 5, 14, 8)) end, --Limit > 5
range = 0, range = 0,
no_energy = true, no_energy = true,
tactical = { DEFEND = 2 }, tactical = { DEFEND = 2 },
...@@ -271,7 +271,7 @@ newTalent{ ...@@ -271,7 +271,7 @@ newTalent{
mode = "sustained", no_sustain_autoreset = true, mode = "sustained", no_sustain_autoreset = true,
points = 5, points = 5,
sustain_psi = 10, sustain_psi = 10,
cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 5, 14, 8, true)) end, --Limit > 5 cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 5, 14, 8)) end, --Limit > 5
range = 0, range = 0,
no_energy = true, no_energy = true,
tactical = { DEFEND = 2 }, tactical = { DEFEND = 2 },
......
...@@ -25,7 +25,7 @@ newTalent{ ...@@ -25,7 +25,7 @@ newTalent{
points = 5, points = 5,
psi = 0, psi = 0,
cooldown = function(self, t) cooldown = function(self, t)
return math.max(6, math.ceil(25 - self:getTalentLevelRaw(t)*3)) return math.max(6, math.ceil(25 - self:getTalentLevel(t)*2.5))
end, end,
tactical = { DISABLE = 2, PSI = 1 }, tactical = { DISABLE = 2, PSI = 1 },
direct_hit = true, direct_hit = true,
...@@ -90,7 +90,7 @@ newTalent{ ...@@ -90,7 +90,7 @@ newTalent{
require = psi_wil_req2, require = psi_wil_req2,
points = 5, points = 5,
cooldown = function(self, t) cooldown = function(self, t)
return math.max(6, math.ceil(25 - self:getTalentLevelRaw(t)*3)) return math.max(6, math.ceil(25 - self:getTalentLevel(t)*2.5))
end, end,
psi = 0, psi = 0,
tactical = { ATTACKAREA = { COLD = 2 }, DISABLE = { stun = 2 }, PSI = 1 }, tactical = { ATTACKAREA = { COLD = 2 }, DISABLE = { stun = 2 }, PSI = 1 },
...@@ -151,7 +151,7 @@ newTalent{ ...@@ -151,7 +151,7 @@ newTalent{
points = 5, points = 5,
psi = 0, psi = 0,
cooldown = function(self, t) cooldown = function(self, t)
return math.max(6, math.ceil(25 - self:getTalentLevelRaw(t)*3)) return math.max(6, math.ceil(25 - self:getTalentLevel(t)*2.5))
end, end,
tactical = { ATTACKAREA = { LIGHTNING = 2 }, DISABLE = { stun = 1 }, PSI = 1 }, tactical = { ATTACKAREA = { LIGHTNING = 2 }, DISABLE = { stun = 1 }, PSI = 1 },
direct_hit = true, direct_hit = true,
......
...@@ -276,7 +276,7 @@ newTalent{ ...@@ -276,7 +276,7 @@ newTalent{
tactical = { BUFF = 2 }, tactical = { BUFF = 2 },
getNbRemove = function(self, t) return math.floor(self:combatTalentScale(t, 1, 4)) end, getNbRemove = function(self, t) return math.floor(self:combatTalentScale(t, 1, 4)) end,
getDamageIncrease = function(self, t) return self:combatTalentScale(t, 2.5, 10) end, getDamageIncrease = function(self, t) return self:combatTalentScale(t, 2.5, 10) end,
getResistPenalty = function(self, t) return self:combatTalentLimit(t, 60, 17, 50, true) end, -- Limit < 60% getResistPenalty = function(self, t) return self:combatTalentLimit(t, 60, 20, 50) end, -- Limit < 60%
activate = function(self, t) activate = function(self, t)
game:playSoundNear(self, "talents/arcane") game:playSoundNear(self, "talents/arcane")
......
...@@ -186,7 +186,7 @@ newTalent{ ...@@ -186,7 +186,7 @@ newTalent{
cooldown = 30, cooldown = 30,
tactical = { BUFF = 2 }, tactical = { BUFF = 2 },
getDamageIncrease = function(self, t) return self:combatTalentScale(t, 2.5, 10) end, getDamageIncrease = function(self, t) return self:combatTalentScale(t, 2.5, 10) end,
getResistPenalty = function(self, t) return self:combatTalentLimit(t, 100, 17, 50, true) end, getResistPenalty = function(self, t) return self:combatTalentLimit(t, 60, 20, 50) end,
getVampiric = function(self, t) return math.floor(self:combatTalentLimit(t, 60, 3, 8)) end, getVampiric = function(self, t) return math.floor(self:combatTalentLimit(t, 60, 3, 8)) end,
callbackPriorities={callbackOnActBase = 100}, -- trigger after most others callbackPriorities={callbackOnActBase = 100}, -- trigger after most others
callbackOnActBase = function(self, t) callbackOnActBase = function(self, t)
......
...@@ -130,7 +130,7 @@ newTalent{ ...@@ -130,7 +130,7 @@ newTalent{
local radius = self:getTalentRadius(t) local radius = self:getTalentRadius(t)
return ([[You summon a corpselight that radiates cold for 7 turns in radius %d. return ([[You summon a corpselight that radiates cold for 7 turns in radius %d.
Every turn all foes inside take %0.2f cold damage. Every turn all foes inside take %0.2f cold damage.
Anytime you cast a spell inside your corpselight's area it grows by one stack, each stack giving +1 radius and +10%% damage. Anytime you cast a spell while standing inside your corpselight's area it grows by one stack, each stack giving +1 radius and +10%% damage.
The corpselight can gain at most %d stacks and the radius will never extend beyond 10. The corpselight can gain at most %d stacks and the radius will never extend beyond 10.
If cast while under 1 life it spawns with 3 stacks. If cast while under 1 life it spawns with 3 stacks.
The damage will increase with your Spellpower.]]): The damage will increase with your Spellpower.]]):
......
...@@ -154,7 +154,7 @@ newTalent{ ...@@ -154,7 +154,7 @@ newTalent{
tactical = { BUFF = 2 }, tactical = { BUFF = 2 },
sustain_mana = 50, sustain_mana = 50,
cooldown = 30, cooldown = 30,
getLightningDamageIncrease = function(self, t) return self:getTalentLevelRaw(t) * 2 end, getLightningDamageIncrease = function(self, t) return self:combatTalentScale(t, 2.5, 10) end,
getResistPenalty = function(self, t) return self:combatTalentLimit(t, 60, 20, 50) end, getResistPenalty = function(self, t) return self:combatTalentLimit(t, 60, 20, 50) end,
getDaze = function(self, t) return self:getTalentLevel(t) * 9 end, getDaze = function(self, t) return self:getTalentLevel(t) * 9 end,
activate = function(self, t) activate = function(self, t)
......
...@@ -87,7 +87,7 @@ newTalent { ...@@ -87,7 +87,7 @@ newTalent {
return preUse(self, t, silent) return preUse(self, t, silent)
end, end,
getDist = function(self, t) getDist = function(self, t)
if self:getTalentLevelRaw(t) >= 3 then if self:getTalentLevel(t) >= 3 then
return 3 return 3
else else
return 2 return 2
...@@ -114,7 +114,7 @@ newTalent { ...@@ -114,7 +114,7 @@ newTalent {
local autocrit = false local autocrit = false
if self:knowTalent(self.T_SKIRMISHER_BUCKLER_MASTERY) then if self:knowTalent(self.T_SKIRMISHER_BUCKLER_MASTERY) then
local t2 = self:getTalentFromId(self.T_SKIRMISHER_BUCKLER_MASTERY) local t2 = self:getTalentFromId(self.T_SKIRMISHER_BUCKLER_MASTERY)
if self:getTalentLevelRaw(t2) >= 5 then if self:getTalentLevel(t2) >= 5 then
autocrit = true autocrit = true
end end
end end
...@@ -188,7 +188,7 @@ newTalent { ...@@ -188,7 +188,7 @@ newTalent {
local crit = "" local crit = ""
local t2 = self:getTalentFromId(self.T_SKIRMISHER_BASH_AND_SMASH) local t2 = self:getTalentFromId(self.T_SKIRMISHER_BASH_AND_SMASH)
if t2 then if t2 then
if self:getTalentLevelRaw(t2) >= 5 then if self:getTalentLevel(t2) >= 5 then
crit = _t" At talent level 5, your Bash and Smash shield hits are guaranteed criticals." crit = _t" At talent level 5, your Bash and Smash shield hits are guaranteed criticals."
else else
crit = _t" At talent level 5, your Bash and Smash shield hit is a guaranteed critical." crit = _t" At talent level 5, your Bash and Smash shield hit is a guaranteed critical."
......
...@@ -25,6 +25,7 @@ newTalent{ ...@@ -25,6 +25,7 @@ newTalent{
type = {"technique/combat-techniques-active", 1}, type = {"technique/combat-techniques-active", 1},
message = _t"@Source@ rushes out!", message = _t"@Source@ rushes out!",
require = techs_strdex_req1, require = techs_strdex_req1,
random_boss_rarity = 50, -- common tree, don't take too often
points = 5, points = 5,
random_ego = "attack", random_ego = "attack",
stamina = function(self, t) return not self:attr("swap_combat_techniques_hate") and (self:knowTalent(self.T_STEAMROLLER) and 2 or 22) end, stamina = function(self, t) return not self:attr("swap_combat_techniques_hate") and (self:knowTalent(self.T_STEAMROLLER) and 2 or 22) end,
...@@ -95,6 +96,7 @@ newTalent{ ...@@ -95,6 +96,7 @@ newTalent{
mode = "sustained", mode = "sustained",
points = 5, points = 5,
require = techs_strdex_req2, require = techs_strdex_req2,
random_boss_rarity = 33, -- prevent rares from having too much accuracy
cooldown = 30, cooldown = 30,
sustain_stamina = function(self, t) return not self:attr("swap_combat_techniques_hate") and 30 end, sustain_stamina = function(self, t) return not self:attr("swap_combat_techniques_hate") and 30 end,
sustain_hate = function(self, t) return self:attr("swap_combat_techniques_hate") and 9 end, sustain_hate = function(self, t) return self:attr("swap_combat_techniques_hate") and 9 end,
...@@ -133,6 +135,7 @@ newTalent{ ...@@ -133,6 +135,7 @@ newTalent{
stamina = function(self, t) return not self:attr("swap_combat_techniques_hate") and 25 end, stamina = function(self, t) return not self:attr("swap_combat_techniques_hate") and 25 end,
hate = function(self, t) return self:attr("swap_combat_techniques_hate") and 7 end, hate = function(self, t) return self:attr("swap_combat_techniques_hate") and 7 end,
require = techs_strdex_req3, require = techs_strdex_req3,
random_boss_rarity = 33, -- prevent rares from having too much accuracy
no_energy = true, no_energy = true,
tactical = { BUFF = 2 }, tactical = { BUFF = 2 },
getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 8, 3.5, 6.5)) end, -- Limit < 8 getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 8, 3.5, 6.5)) end, -- Limit < 8
...@@ -156,7 +159,7 @@ newTalent{ ...@@ -156,7 +159,7 @@ newTalent{
hate = function(self, t) return self:attr("swap_combat_techniques_hate") and 7 end, hate = function(self, t) return self:attr("swap_combat_techniques_hate") and 7 end,
no_energy = true, no_energy = true,
require = techs_strdex_req4, require = techs_strdex_req4,
random_boss_rarity = 33, -- common tree on classes and global speed is immensely powerful random_boss_rarity = 25, -- common tree on classes and global speed is immensely powerful
tactical = { BUFF = 2, CLOSEIN = 2, ESCAPE = 2 }, tactical = { BUFF = 2, CLOSEIN = 2, ESCAPE = 2 },
on_pre_use_ai = function(self, t) -- don't use out of combat on_pre_use_ai = function(self, t) -- don't use out of combat
local target = self.ai_target.actor local target = self.ai_target.actor
...@@ -221,7 +224,7 @@ newTalent{ ...@@ -221,7 +224,7 @@ newTalent{
require = techs_strdex_req3, require = techs_strdex_req3,
mode = "passive", mode = "passive",
points = 5, points = 5,
random_boss_rarity = 50, -- super common tree and this disproportionately targets mages random_boss_rarity = 35, -- super common tree and this disproportionately targets mages
getSaves = function(self, t) return math.floor(self:combatTalentScale(t, 12, 48)) end, getSaves = function(self, t) return math.floor(self:combatTalentScale(t, 12, 48)) end,
passives = function(self, t, p) passives = function(self, t, p)
self:talentTemporaryValue(p, "combat_spellresist", t.getSaves(self,t)) self:talentTemporaryValue(p, "combat_spellresist", t.getSaves(self,t))
...@@ -237,6 +240,7 @@ newTalent{ ...@@ -237,6 +240,7 @@ newTalent{
require = techs_strdex_req4, require = techs_strdex_req4,
mode = "passive", mode = "passive",
-- called by mod.class.Actor:die -- called by mod.class.Actor:die
no_npc_use = true, --useless for NPCs
getStamRecover = function(self, t) return self:combatTalentScale(t, 5, 20, 0.5) end, -- Lower scaling than other recovery talents because it effectively scales with character speed and can trigger more than once a turn getStamRecover = function(self, t) return self:combatTalentScale(t, 5, 20, 0.5) end, -- Lower scaling than other recovery talents because it effectively scales with character speed and can trigger more than once a turn
getHateRecover = function(self, t) return self:combatTalentScale(t, 1, 4.5, 0.5) end, getHateRecover = function(self, t) return self:combatTalentScale(t, 1, 4.5, 0.5) end,
points = 5, points = 5,
......
...@@ -59,7 +59,7 @@ newTalent { ...@@ -59,7 +59,7 @@ newTalent {
-- Add new regens if needed -- Add new regens if needed
if nb_foes == 0 then if nb_foes == 0 then
self.temp_skirmisherBreathingStamina = self:addTemporaryValue("stamina_regen", t.getRestoreRate(self, t)) self.temp_skirmisherBreathingStamina = self:addTemporaryValue("stamina_regen", t.getRestoreRate(self, t))
if self:getTalentLevelRaw(t) >= 3 then if self:getTalentLevel(t) >= 3 then
self.temp_skirmisherBreathingLife = self:addTemporaryValue("life_regen", t.getRestoreRate(self, t)) self.temp_skirmisherBreathingLife = self:addTemporaryValue("life_regen", t.getRestoreRate(self, t))
end end
end end
...@@ -67,7 +67,7 @@ newTalent { ...@@ -67,7 +67,7 @@ newTalent {
end, end,
info = function(self, t) info = function(self, t)
local stamina = t.getRestoreRate(self, t) local stamina = t.getRestoreRate(self, t)
return ([[Any time you do not have an opponent in a square adjacent to you, you gain %0.1f Stamina regeneration. With the third talent point, you also gain an equal amount of life regen when Breathing Room is active.]]) return ([[Any time you do not have an opponent in a square adjacent to you, you gain %0.1f Stamina regeneration. At talent level 3 or more, you also gain an equal amount of life regen when Breathing Room is active.]])
:tformat(stamina) :tformat(stamina)
end, end,
} }
...@@ -174,7 +174,7 @@ newTalent { ...@@ -174,7 +174,7 @@ newTalent {
if nb_foes >= 1 then if nb_foes >= 1 then
if nb_foes > 4 then nb_foes = 4 end if nb_foes > 4 then nb_foes = 4 end
self.temp_skirmisherDauntlessStamina = self:addTemporaryValue("stamina_regen", t.getStaminaRate(self, t) * nb_foes) self.temp_skirmisherDauntlessStamina = self:addTemporaryValue("stamina_regen", t.getStaminaRate(self, t) * nb_foes)
if self:getTalentLevelRaw(t) >= 3 then if self:getTalentLevel(t) >= 3 then
self.temp_skirmisherDauntlessLife = self:addTemporaryValue("life_regen", t.getLifeRate(self, t) * nb_foes) self.temp_skirmisherDauntlessLife = self:addTemporaryValue("life_regen", t.getLifeRate(self, t) * nb_foes)
end end
end end
...@@ -183,7 +183,7 @@ newTalent { ...@@ -183,7 +183,7 @@ newTalent {
info = function(self, t) info = function(self, t)
local stamina = t.getStaminaRate(self, t) local stamina = t.getStaminaRate(self, t)
local health = t.getLifeRate(self, t) local health = t.getLifeRate(self, t)
return ([[When the going gets tough, you get tougher. You gain %0.1f Stamina regen per enemy in sight, and beginning with the third talent point, you also gain %0.1f life regen per enemy. The bonuses cap at 4 enemies.]]) return ([[When the going gets tough, you get tougher. You gain %0.1f Stamina regen per enemy in sight, and beginning at talent level 3 and above, you also gain %0.1f life regen per enemy. The bonuses cap at 4 enemies.]])
:tformat(stamina, health) :tformat(stamina, health)
end, end,
} }
...@@ -208,7 +208,7 @@ newTalent { ...@@ -208,7 +208,7 @@ newTalent {
return 5 return 5
end, end,
getMult = function(self, t, fake) getMult = function(self, t, fake)
if self:getTalentLevelRaw(t) >= 5 or fake then if self:getTalentLevel(t) >= 5 or fake then
return 1.2 return 1.2
else else
return 1 return 1
...@@ -235,7 +235,7 @@ newTalent { ...@@ -235,7 +235,7 @@ newTalent {
local cap = t.getResistCap(self, t) local cap = t.getResistCap(self, t)
local mult = (t.getMult(self, t, true) - 1) * 100 local mult = (t.getMult(self, t, true) - 1) * 100
return ([[For each turn you spend stamina, you gain %0.1f%% resist all and %0.1f%% all resistances cap for %d turns. The buff stacks up to %d times, and each new application refreshes the duration. return ([[For each turn you spend stamina, you gain %0.1f%% resist all and %0.1f%% all resistances cap for %d turns. The buff stacks up to %d times, and each new application refreshes the duration.
Additionally, at the fifth talent point, Breathing Room and Dauntless Challenger are %d%% more effective.]]) Additionally, at talent level 5 and above, Breathing Room and Dauntless Challenger are %d%% more effective.]])
:tformat(resist, cap, duration, max, mult) :tformat(resist, cap, duration, max, mult)
end, end,
} }
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