diff --git a/game/modules/tome/class/interface/Combat.lua b/game/modules/tome/class/interface/Combat.lua index 586104d927b44f8b20cf612b226a2d11bd4c4a69..82ea0217b7c3f1e6e1294b21465a99d91e1fb83e 100644 --- a/game/modules/tome/class/interface/Combat.lua +++ b/game/modules/tome/class/interface/Combat.lua @@ -1021,15 +1021,6 @@ function _M:attackTargetHitProcs(target, weapon, dam, apr, armor, damtype, mult, t.do_throw(target, self, t) end - -- Greater Weapon Focus - local gwf = self:hasEffect(self.EFF_GREATER_WEAPON_FOCUS) - if hitted and not target.dead and weapon and gwf and not gwf.inside and rng.percent(gwf.chance) then - gwf.inside = true - game.logSeen(self, "%s focuses and gains an extra blow!", self.name:capitalize()) - self:attackTargetWith(target, weapon, damtype, mult) - gwf.inside = nil - end - -- Zero gravity if hitted and game.level.data.zero_gravity and rng.percent(util.bound(dam, 0, 100)) then target:knockback(self.x, self.y, math.ceil(math.log(dam))) diff --git a/game/modules/tome/data/talents/techniques/battle-tactics.lua b/game/modules/tome/data/talents/techniques/battle-tactics.lua index 8283584493f2ea87a2fe639c9709f9f7ba3e0cf4..f5f762eaf31112d135a5f1ca8b70fab5ebf52bbc 100644 --- a/game/modules/tome/data/talents/techniques/battle-tactics.lua +++ b/game/modules/tome/data/talents/techniques/battle-tactics.lua @@ -23,20 +23,20 @@ newTalent{ type = {"technique/battle-tactics", 1}, require = techs_req_high1, points = 5, - cooldown = 20, + cooldown = 15, stamina = 25, tactical = { ATTACK = 3 }, no_energy = true, - getdur = function(self,t) return math.floor(self:combatTalentLimit(t, 8, 2, 6)) end, -- Limit to <10 - getchance = function(self,t) return self:combatLimit(self:combatTalentStatDamage(t, "dex", 10, 60),100, 6.8, 6.8, 61, 61) end, -- Limit < 100% + getdur = function(self,t) return math.floor(self:combatTalentLimit(t, 10, 3, 8)) end, -- Limit to <10 + getchance = function(self,t) return self:combatLimit(self:combatTalentStatDamage(t, "dex", 10, 90),100, 6.8, 6.8, 61, 61) end, -- Limit < 100% action = function(self, t) self:setEffect(self.EFF_GREATER_WEAPON_FOCUS, t.getdur(self,t), {chance=t.getchance(self, t)}) return true end, info = function(self, t) - return ([[Concentrate on your blows; each strike has a %d%% chance to deal another, similar, blow for %d turns. - This works for all blows, even ones from other talents and from shield bashes. - The chance increases with your Dexterity.]]):format(t.getchance(self, t), t.getdur(self, t)) + return ([[Concentrate on your blows; for %d turns, each successful strike you land has a %d%% chance to trigger another, similar strike. + This works for all blows, even those from other talents and from shield bashes, but can happen only once each turn. + The chance increases with your Dexterity.]]):format(t.getdur(self, t), t.getchance(self, t)) end, } diff --git a/game/modules/tome/data/timed_effects/physical.lua b/game/modules/tome/data/timed_effects/physical.lua index 628b12d01ffa90e8b1f5e2263514cc6dad640f89..72d18656993601a1ff24a5e349800c104a31a3bd 100644 --- a/game/modules/tome/data/timed_effects/physical.lua +++ b/game/modules/tome/data/timed_effects/physical.lua @@ -1302,12 +1302,20 @@ newEffect{ newEffect{ name = "GREATER_WEAPON_FOCUS", image = "talents/greater_weapon_focus.png", desc = "Greater Weapon Focus", - long_desc = function(self, eff) return ("%d%% chance to score a secondary blow."):format(eff.chance) end, + long_desc = function(self, eff) return ("Each melee blow landed has a %d%% chance to trigger an additional melee blow (up to once per turn)."):format(eff.chance) end, type = "physical", subtype = { tactic=true }, status = "beneficial", - parameters = { chance=50 }, + parameters = { chance=25 }, + -- trigger once per turn for targets + callbackOnMeleeAttack = function(self, eff, target, hitted, crit, weapon, damtype, mult, dam, hd) + if hitted and weapon and not self.turn_procs._gwf and not target.dead and rng.percent(eff.chance) then + self.turn_procs._gwf = true + self:attackTargetWith(target, weapon, damtype, mult) + end + end, activate = function(self, eff) + eff.src = self end, deactivate = function(self, eff) end,