diff --git a/game/modules/tome/data/talents/techniques/2hweapon.lua b/game/modules/tome/data/talents/techniques/2hweapon.lua index f7aaaaf0cd3f28519e59ad69b9367b229ed81f08..59bb22055b555f680fb5f81cad7853ea835caed2 100644 --- a/game/modules/tome/data/talents/techniques/2hweapon.lua +++ b/game/modules/tome/data/talents/techniques/2hweapon.lua @@ -71,7 +71,7 @@ newTalent{ on_pre_use = function(self, t, silent) if not self:hasTwoHandedWeapon() then if not silent then game.logPlayer(self, "You require a two handed weapon to use this talent.") end return false end return true end, getDam = function(self, t) return self:combatScale(self:getStr(7, true) * self:getTalentLevel(t), 5, 0, 40, 35)end, getAtk = function(self, t) return self:combatScale(self:getDex(7, true) * self:getTalentLevel(t), 5, 0, 40, 35) end , - getImmune = function(self, t) return self:combatTalentLimit(t, 1, 0.17, 0.5) end, + getImmune = function(self, t) return self:combatTalentLimit(t, 1, 0.22, 0.5) end, activate = function(self, t) local weapon = self:hasTwoHandedWeapon() if not weapon then diff --git a/game/modules/tome/data/talents/techniques/agility.lua b/game/modules/tome/data/talents/techniques/agility.lua index 109ea2345a766b9343910ee12ea1858e2ef373b8..1e97abd834a44e8be40d8b06328ae9f062aaa5a8 100644 --- a/game/modules/tome/data/talents/techniques/agility.lua +++ b/game/modules/tome/data/talents/techniques/agility.lua @@ -250,9 +250,9 @@ newTalent{ no_energy = true, tactical = { BUFF = 2 }, on_pre_use = function(self, t, silent) return archerPreUse(self, t, silent) end, - getAttackSpeed = function(self, t) return math.floor(self:combatTalentLimit(t, 35, 10, 25))/100 end, + getAttackSpeed = function(self, t) return math.floor(self:combatTalentLimit(t, 35, 15, 30))/100 end, getMovementSpeed = function(self, t) return math.floor(self:combatTalentScale(t, 25, 50))/100 end, - getTurn = function(self, t) return math.floor(self:combatTalentLimit(t, 20, 4, 12)) end, + getTurn = function(self, t) return math.floor(self:combatTalentLimit(t, 20, 5, 12)) end, on_pre_use = function(self, t, silent) if not archerPreUse(self, t, silent, "sling") then return false end return true diff --git a/game/modules/tome/data/talents/techniques/archery.lua b/game/modules/tome/data/talents/techniques/archery.lua index 7a965659a4ccb2d2095d8ca236826b95a69d1ca0..231b4774eca37592cde2f9b55ae2511c3682b5fd 100644 --- a/game/modules/tome/data/talents/techniques/archery.lua +++ b/game/modules/tome/data/talents/techniques/archery.lua @@ -290,7 +290,7 @@ newTalent{ on_pre_use = function(self, t, silent) return archerPreUse(self, t, silent) end, getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 1.0, 1.5) end, getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 3, 7)) end, - getSpeedPenalty = function(self, t) return math.floor(self:combatTalentLimit(t, 50, 10, 40))/100 end, + getSpeedPenalty = function(self, t) return math.floor(self:combatTalentLimit(t, 50, 15, 40))/100 end, getChance = function(self,t) local chance = 20 if self:hasEffect(self.EFF_TRUESHOT) then chance = chance + (chance * self:callTalent(self.T_TRUESHOT, "getMarkChance")/100) end @@ -668,8 +668,8 @@ newTalent{ mode = "passive", require = techs_dex_req4, getSpeed = function(self, t) return math.floor(self:combatTalentLimit(t, 25, 5, 15))/100 end, - getTalentCount = function(self, t) return math.floor(self:combatTalentLimit(t, 4, 1, 2.5)) end, - getCooldown = function(self, t) return math.floor(self:combatTalentLimit(t, 5, 1, 3)) end, + getTalentCount = function(self, t) return math.floor(self:combatTalentLimit(t, 4, 1, 3.5)) end, + getCooldown = function(self, t) return math.floor(self:combatTalentLimit(t, 5, 2, 4.5)) end, proc = function(self, t) if not self:isTalentCoolingDown(t) then self:setEffect(self.EFF_BULLSEYE, 2, {src=self, power=self:callTalent(self.T_BULLSEYE, "getSpeed")}) diff --git a/game/modules/tome/data/talents/techniques/assassination.lua b/game/modules/tome/data/talents/techniques/assassination.lua index 600f07afee3851cfa378b2df7f3e37205cb7035b..2a8765cca17ac2a12db6fc6dac29907f26585370 100644 --- a/game/modules/tome/data/talents/techniques/assassination.lua +++ b/game/modules/tome/data/talents/techniques/assassination.lua @@ -30,7 +30,7 @@ newTalent{ stamina = 24, require = techs_dex_req_high1, getDamage = function (self, t) return self:combatTalentWeaponDamage(t, 1.0, 1.5) end, - getPercent = function(self, t) return self:combatTalentLimit(t, 0.3, 0.1, 0.2) end, + getPercent = function(self, t) return self:combatTalentLimit(t, 0.3, 0.1, 0.25) end, target = function(self, t) return {type="hit", range=self:getTalentRange(t)} end, range = 1, requires_target = true, @@ -92,7 +92,7 @@ newTalent{ require = techs_dex_req_high2, points = 5, mode = "passive", - radius = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 1.5, 4.4)) end, + radius = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 2, 5.5)) end, range = 0, getDuration = function(self, t) return self:combatTalentScale(t, 3, 5) end, target = function(self, t) @@ -164,7 +164,7 @@ newTalent{ no_break_stealth = true, 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, + getPercent = function(self, t) return self:combatTalentLimit(t, 50, 20, 40) end, getDamage = function(self,t) return self:combatTalentStatDamage(t, "dex", 15, 180) end, target = function(self, t) return {type="hit", range=self:getTalentRange(t), talent=t} diff --git a/game/modules/tome/data/talents/techniques/battle-tactics.lua b/game/modules/tome/data/talents/techniques/battle-tactics.lua index f31e8e925d9390bf0450f549a9e96b4a873146fb..2b5a70ea539d80326143d7c2907fd09029417ced 100644 --- a/game/modules/tome/data/talents/techniques/battle-tactics.lua +++ b/game/modules/tome/data/talents/techniques/battle-tactics.lua @@ -27,7 +27,7 @@ newTalent{ stamina = 25, tactical = { ATTACK = 3 }, no_energy = true, - getdur = function(self,t) return math.floor(self:combatTalentLimit(t, 10, 3, 8)) end, -- Limit to <10 + getdur = function(self,t) return math.floor(self:combatTalentLimit(t, 10, 4, 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)}) @@ -65,7 +65,7 @@ newTalent{ target = function(self, t) return {type="hit", range=self:getTalentRange(t)} end, range = 1, tactical = { ATTACK = { weapon = 1, cut = 1 }, DISABLE = 2 }, - healloss = function(self,t) return self:combatTalentLimit(t, 150, 25, 75) end, -- Limit to < 150% + healloss = function(self,t) return self:combatTalentLimit(t, 150, 40, 75) end, -- Limit to < 150% action = function(self, t) local tg = self:getTalentTarget(t) local x, y, target = self:getTarget(tg) @@ -109,7 +109,7 @@ newTalent{ tactical = { DEFEND = 2 }, -- AI for this could be better --Note: this can result in > 100% resistancs (before cap) at high talent levels to keep up with opposing resistance lowering talents resistCoeff = function(self, t) return self:combatTalentScale(t, 25, 45) end, - getCapApproach = function(self, t) return self:combatTalentLimit(t, 1, 0.15, 0.5) end, + getCapApproach = function(self, t) return self:combatTalentLimit(t, 1, 0.25, 0.5) end, getResist = function(self, t) return (1 - self.life / self.max_life)*t.resistCoeff(self, t) end, getResistCap = function(self, t) return util.bound((100-(self.resists_cap.all or 100))*t.getCapApproach(self, t), 0, 100) end, remove_on_zero = true, diff --git a/game/modules/tome/data/talents/techniques/bloodthirst.lua b/game/modules/tome/data/talents/techniques/bloodthirst.lua index 4b4950f029c363c7f16e3a3b036463133b258f4e..f7dfac02b6100061130ebb21107b65ba56586bf5 100644 --- a/game/modules/tome/data/talents/techniques/bloodthirst.lua +++ b/game/modules/tome/data/talents/techniques/bloodthirst.lua @@ -23,7 +23,7 @@ newTalent{ require = techs_req_high1, points = 5, mode = "passive", - threshold = function(self,t) return self:combatTalentLimit(t, 10, 45, 25) end, -- Limit >10% + threshold = function(self,t) return self:combatTalentLimit(t, 10, 45, 20) end, -- Limit >10% getCrit = function(self, t) return self:combatTalentScale(t, 2.8, 14) end, do_terror = function(self, t, target, dam) if dam < target.max_life * t.threshold(self, t) / 100 then return end @@ -57,7 +57,7 @@ newTalent{ require = techs_req_high2, points = 5, mode = "passive", - getHealth = function(self,t) return self:combatTalentLimit(t, 50, 2, 10) end, -- Limit max health increase to <+50% + getHealth = function(self,t) return self:combatTalentLimit(t, 50, 5, 14) end, -- Limit max health increase to <+50% getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 6, 10)) end, getRegen = function (self, t) return self:combatTalentScale(t, 1.7, 5) end, getMax = function(self, t) return 5*self:combatTalentScale(t, 1.7, 5) end, @@ -112,8 +112,8 @@ newTalent{ return val 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, 10, 3, 6, true)) end, -- Limit < 10 + getHealPercent = function(self,t) return self:combatTalentLimit(t, 50, 5, 20) end, -- Limit <50% + getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 3.5, 7)) 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 diff --git a/game/modules/tome/data/talents/techniques/combat-techniques.lua b/game/modules/tome/data/talents/techniques/combat-techniques.lua index 236bee897b3bac9b134f8e5179d5ba97874b4b75..4d9a7ad9e367605ae3863e11daf215c13591e171 100644 --- a/game/modules/tome/data/talents/techniques/combat-techniques.lua +++ b/game/modules/tome/data/talents/techniques/combat-techniques.lua @@ -29,7 +29,7 @@ newTalent{ 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, hate = function(self, t) return self:attr("swap_combat_techniques_hate") and (self:knowTalent(self.T_STEAMROLLER) and 1 or 6) end, - cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 0, 36, 20)) end, --Limit to >0 + cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 0, 35, 15)) end, --Limit to >0 tactical = { ATTACK = { weapon = 1, stun = 1 }, CLOSEIN = 3 }, requires_target = true, is_melee = true, @@ -135,7 +135,7 @@ newTalent{ require = techs_strdex_req3, no_energy = true, tactical = { BUFF = 2 }, - getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 7, 2, 5)) end, -- Limit < 25 + getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 8, 3.5, 6.5)) end, -- Limit < 8 getAtk = function(self, t) return self:combatTalentScale(t, 40, 100, 0.75) end, action = function(self, t) self:setEffect(self.EFF_ATTACK, t.getDuration(self, t), {power = t.getAtk(self, t)}) diff --git a/game/modules/tome/data/talents/techniques/combat-training.lua b/game/modules/tome/data/talents/techniques/combat-training.lua index 7f9f526faedf61210c44c7df1a1d1440336d64f5..2f1ccb20274bf277a0c337f54b7be59ed1346614 100644 --- a/game/modules/tome/data/talents/techniques/combat-training.lua +++ b/game/modules/tome/data/talents/techniques/combat-training.lua @@ -129,7 +129,7 @@ newTalent{ getFatigue = function(self, t, fake) -- Note: drakeskin body armour @ 8% + drakeskin leather cap @ 5% + drakeskin leather boots @ 5% = 18% if fake or self:hasLightArmor() then - return self:combatTalentLimit(t, 50, 5, 18) + return self:combatTalentLimit(t, 50, 10, 25, false, 1.0) else return 0 end end, diff --git a/game/modules/tome/data/talents/techniques/conditioning.lua b/game/modules/tome/data/talents/techniques/conditioning.lua index e38a432521ce1b3415fe576ff60a6a4a51ebc20b..8ae3806e6f87df8cfdbb2aa3baad3f4eb4ae5b01 100644 --- a/game/modules/tome/data/talents/techniques/conditioning.lua +++ b/game/modules/tome/data/talents/techniques/conditioning.lua @@ -27,7 +27,7 @@ newTalent{ getHealValues = function(self, t) return self:combatTalentStatDamage(t, "con", 1, 200) end, - getWoundReduction = function(self, t) return self:combatTalentLimit(t, 0.6, 0.17, 0.5) end, -- Limit <60%% + getWoundReduction = function(self, t) return self:combatTalentLimit(t, 0.6, 0.225, 0.5) end, -- Limit <60%% getDuration = function(self, t) return 8 end, do_vitality_recovery = function(self, t) if self:isTalentCoolingDown(t) then return end @@ -53,7 +53,7 @@ newTalent{ require = techs_con_req2, mode = "passive", points = 5, - getChance = function(self, t) return self:combatStatLimit("con", 1, .28, .745)*self:combatTalentLimit(t,100, 28,74.8) end, -- Limit < 100% + getChance = function(self, t) return self:combatStatLimit("con", 1, .28, .745)*self:combatTalentLimit(t, 100, 45, 80) end, -- Limit < 100% callbackOnActBase = function(self, t) local effs = {} -- Go through all spell effects @@ -152,7 +152,7 @@ newTalent{ if self.stamina/self.max_stamina < 0.5 or tgt and core.fov.distance(self.x, self.y, tgt.x, tgt.y) < 10 and self:hasLOS(tgt.x, tgt.y) then return true end end, getAttackPower = function(self, t) return self:combatTalentStatDamage(t, "con", 5, 45) end, - getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 3, 7)) end, -- Limit < 24 + getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 4, 7)) end, -- Limit < 24 no_energy = true, action = function(self, t) self:setEffect(self.EFF_ADRENALINE_SURGE, t.getDuration(self, t), {power = t.getAttackPower(self, t)}) diff --git a/game/modules/tome/data/talents/techniques/duelist.lua b/game/modules/tome/data/talents/techniques/duelist.lua index 1826245235f34e0d2ce2850e9ea1be97bf26daf8..923588efee4d887e9cca6dde65cb6c0b279916c3 100644 --- a/game/modules/tome/data/talents/techniques/duelist.lua +++ b/game/modules/tome/data/talents/techniques/duelist.lua @@ -57,7 +57,7 @@ newTalent{ end return self:combatScale(dam, 5, 10, 50, 250) end, - getoffmult = function(self,t) return self:combatTalentLimit(t, 1, 0.6, 0.80) end, -- limit <100% + getoffmult = function(self,t) return self:combatTalentLimit(t, 1, 0.6, 0.85) end, -- limit <100% callbackOnActBase = function(self, t) local mh, oh = self:hasDualWeapon() if (mh and oh) and oh.subtype ~= "mindstar" then @@ -94,8 +94,8 @@ newTalent{ require = techs_dex_req2, points = 5, mode = "passive", - getStamina = function(self, t) return self:combatTalentLimit(t, 15, 1, 4) end, -- Limit < 15 (effectively scales with actor speed) - getSpeed = function(self, t) return self:combatTalentLimit(t, 25, 5, 10) end, -- Limit < 25% of a turn gained + getStamina = function(self, t) return self:combatTalentLimit(t, 15, 2, 5) end, -- Limit < 15 (effectively scales with actor speed) + getSpeed = function(self, t) return self:combatTalentLimit(t, 25, 5, 15) end, -- Limit < 25% of a turn gained do_tempo = do_tempo, callbackOnMeleeMiss = do_tempo, callbackOnArcheryMiss = do_tempo, @@ -132,9 +132,9 @@ newTalent{ is_melee = true, range = 1, target = function(self, t) return {type="hit", range=self:getTalentRange(t)} end, - getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 6, 2, 3.4)) end, -- fix + getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 6, 2, 4.5)) end, getParryEfficiency = function(self, t) -- return increased parry efficiency - return math.floor(self:combatTalentLimit(t, 75, 15, 50)) + return math.floor(self:combatTalentLimit(t, 75, 20, 50)) end, on_pre_use = function(self, t, silent) if self:attr("never_move") then diff --git a/game/modules/tome/data/talents/techniques/finishing-moves.lua b/game/modules/tome/data/talents/techniques/finishing-moves.lua index 544504b00dba99bcb5bbc829d0a4ea06bfa20cba..f50490ab527d128e5952335cc456e7fda7c150fc 100644 --- a/game/modules/tome/data/talents/techniques/finishing-moves.lua +++ b/game/modules/tome/data/talents/techniques/finishing-moves.lua @@ -136,7 +136,7 @@ newTalent{ points = 5, random_ego = "attack", cooldown = function(self, t) - return math.ceil(self:combatTalentLimit(t, 0, 30, 10)) -- Limit > 0 + return math.ceil(self:combatTalentLimit(t, 0, 25, 10)) -- Limit > 0 end, stamina = 20, tactical = { ATTACKAREA = { weapon = 2 }, CLOSEIN = 1 }, diff --git a/game/modules/tome/data/talents/techniques/marksmanship.lua b/game/modules/tome/data/talents/techniques/marksmanship.lua index 5ac663065a7666219b45d7500a3c2d04709af00c..31b21f3a1b15211bea312710c30ce6722c45ef53 100644 --- a/game/modules/tome/data/talents/techniques/marksmanship.lua +++ b/game/modules/tome/data/talents/techniques/marksmanship.lua @@ -129,9 +129,9 @@ newTalent{ require = techs_dex_req4, random_ego = "attack", tactical = { BUFF = 3 }, - getSpeed = function(self, t) return self:combatTalentLimit(t, 40, 10, 30)/100 end, + getSpeed = function(self, t) return self:combatTalentLimit(t, 40, 15, 33)/100 end, getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 4, 7)) end, - getMarkChance = function(self,t) return self:combatTalentLimit(t, 100, 10, 50) end, + getMarkChance = function(self,t) return self:combatTalentLimit(t, 100, 25, 55) end, action = function(self, t) local dur = t.getDuration(self,t) local speed = t.getSpeed(self,t) diff --git a/game/modules/tome/data/talents/techniques/mobility.lua b/game/modules/tome/data/talents/techniques/mobility.lua index 740ce2af31d5cd6ac0100c4c01c225db725731a0..48bdc4e01585e35a6b9e7a885be1376ebf7957f6 100644 --- a/game/modules/tome/data/talents/techniques/mobility.lua +++ b/game/modules/tome/data/talents/techniques/mobility.lua @@ -59,7 +59,7 @@ newTalent{ return true end, target = function(self, t) return {type="hit", range=self:getTalentRange(t)} end, - getDist = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 3, 7)/(1 + self:combatFatigue()/100)) end, + getDist = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 3.5, 7.5)/(1 + self:combatFatigue()/100)) end, action = function(self, t) local tg = self:getTalentTarget(t) local tx, ty, target = self:getTarget(tg) @@ -291,10 +291,6 @@ newTalent { cooldown = 5, no_energy = true, tactical = { DEFEND = 2 }, --- pinImmune = function(self, t) return self:combatTalentLimit(t, 1, .17, .5) end, -- limit < 100% --- passives = function(self, t, p) --- self:talentTemporaryValue(p, "pin_immune", t.pinImmune(self, t)) --- end, on_pre_use = function(self, t, silent, fake) if self:hasHeavyArmor() then if not silent then game.logPlayer(self, "%s is not usable while wearing heavy armour.", t.name) end @@ -303,11 +299,11 @@ newTalent { return true end, getReduction = function(self, t, fake) -- % reduction based on both TL and Defense - return math.max(0.1, self:combatTalentLimit(t, 0.8, 0.25, 0.6))*self:combatLimit(self:combatDefense(fake), 1.0, 0.25, 0, 0.5, 50) -- vs TL/def: 1/10 == ~08%, 1.3/10 == ~10%, 1.3/50 == ~16%, 6.5/50 == ~32%, 6.5/100 = ~40% + return math.max(0.1, self:combatTalentLimit(t, 0.8, 0.25, 0.6))*self:combatLimit(self:combatDefense(fake), 1.0, 0.25, 0, 0.55, 50) -- vs TL/def: 1/10 == ~08%, 1.3/10 == ~10%, 1.3/50 == ~16%, 6.5/50 == ~32%, 6.5/100 = ~40% end, getStamina = function(self, t) return 12*(1 + self:combatFatigue()/100)*math.max(0.1, self:combatTalentLimit(t, 0.8, 0.25, 0.45)) end, getLifeTrigger = function(self, t) - return self:combatTalentLimit(t, 10, 30, 15) -- Limit trigger > 10% life + return self:combatTalentLimit(t, 10, 30, 13.5) -- Limit trigger > 10% life end, callbackOnTakeDamage = function(self, t, src, x, y, type, dam, state) if dam > 0 and state and not (self:attr("encased_in_ice") or self:attr("invulnerable")) then diff --git a/game/modules/tome/data/talents/techniques/reflexes.lua b/game/modules/tome/data/talents/techniques/reflexes.lua index ce1ac1c92bc34f72df1b78aa487d363870e77b51..6615a7c1f98924d6744277d377ea2ffcfb6f2044 100644 --- a/game/modules/tome/data/talents/techniques/reflexes.lua +++ b/game/modules/tome/data/talents/techniques/reflexes.lua @@ -89,7 +89,7 @@ newTalent{ no_energy = true, require = techs_dex_req2, tactical = { BUFF = 2 }, - getChance = function(self, t) return math.floor(self:combatTalentLimit(t, 40, 10, 30)) end, + getChance = function(self, t) return math.floor(self:combatTalentLimit(t, 35, 15, 30)) end, getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 0.2, 0.6) end, -- called by _M:attackTarget in mod.class.interface.Combat.lua proc = function(self, t, target) @@ -186,7 +186,7 @@ newTalent{ require = techs_dex_req4, random_ego = "defensive", tactical = { ESCAPE = 2, DEFEND = 2 }, - getDamageReduction = function(self, t) return self:combatTalentLimit(t, 70, 15, 40) end, + getDamageReduction = function(self, t) return self:combatTalentLimit(t, 70, 25, 45) end, getSpeed = function(self, t) return self:combatTalentScale(t, 150, 350) end, getStamina = function(self, t) return self:combatTalentScale(t, 5, 10) end, action = function(self, t) diff --git a/game/modules/tome/data/talents/techniques/skirmisher-slings.lua b/game/modules/tome/data/talents/techniques/skirmisher-slings.lua index e08127cf02396fd67374da473c88f63e545819d8..f57a04b9dace4cea497f4c0c03d681bc44ee70a6 100644 --- a/game/modules/tome/data/talents/techniques/skirmisher-slings.lua +++ b/game/modules/tome/data/talents/techniques/skirmisher-slings.lua @@ -64,7 +64,7 @@ newTalent { end end, speed = function(self, t) return self:getSpeed('archery') * 0.5 end, - getAttackSpeed = function(self,t) return self:combatTalentLimit(t, 40, 10, 25) end, + getAttackSpeed = function(self,t) return self:combatTalentLimit(t, 40, 15, 30) end, display_speed = function(self, t) return ("Double Archery (#LIGHT_GREEN#%d%%#LAST# of a turn)"): tformat(self:getSpeed('archery') * 50) diff --git a/game/modules/tome/data/talents/techniques/sniper.lua b/game/modules/tome/data/talents/techniques/sniper.lua index 257ada624530334a72732837489c7c32adf250b0..bffe94456d67802fe94e0369ab470566aa23b400 100644 --- a/game/modules/tome/data/talents/techniques/sniper.lua +++ b/game/modules/tome/data/talents/techniques/sniper.lua @@ -71,9 +71,9 @@ newTalent{ end return true end, - getAvoidance = function(self, t) return math.floor(self:combatTalentLimit(t, 25, 5, 15)) end, + getAvoidance = function(self, t) return math.floor(self:combatTalentLimit(t, 25, 8, 17.5)) end, getSight = function(self, t) return math.floor(self:combatTalentScale(t, 1, 3, "log")) end, - getRadius = function(self, t) return math.ceil(self:combatTalentLimit(t, 0, 8.9, 4.5)) end, + getRadius = function(self, t) return math.ceil(self:combatTalentLimit(t, 0, 8, 4)) end, sustain_lists = "break_with_stealth", activate = function(self, t) local ret = {} @@ -161,8 +161,8 @@ newTalent{ tactical = { BUFF = 2 }, on_pre_use = function(self, t, silent) return archerPreUse(self, t, silent, "bow") end, getPower = function(self, t) return self:combatTalentStatDamage(t, "dex", 15, 50) end, - getSpeed = function(self, t) return math.floor(self:combatTalentLimit(t, 150, 50, 100)) end, - getDamage = function(self, t) return self:combatTalentLimit(t, 8.0, 2.0, 4.0) end, + getSpeed = function(self, t) return math.floor(self:combatTalentLimit(t, 150, 55, 115)) end, + getDamage = function(self, t) return self:combatTalentLimit(t, 8.0, 2.0, 4.5) end, getMarkChance = function(self, t) return math.floor(self:combatTalentScale(t, 2, 10)) end, sustain_slots = 'archery_stance', activate = function(self, t) @@ -212,7 +212,7 @@ newTalent{ no_npc_use = true, --no way am i giving a npc a 300%+ ranged shot on_pre_use = function(self, t, silent) return archerPreUse(self, t, silent, "bow") end, getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 1.7, 3.5) end, -- very high damage as this effectively takes 2 turns - getDamageReduction = function(self, t) return math.floor(self:combatTalentLimit(t, 90, 30, 70)) end, + getDamageReduction = function(self, t) return math.floor(self:combatTalentLimit(t, 90, 40, 70)) end, action = function(self, t) local dam = t.getDamage(self,t) local reduction = t.getDamageReduction(self,t) diff --git a/game/modules/tome/data/talents/techniques/strength-of-the-berserker.lua b/game/modules/tome/data/talents/techniques/strength-of-the-berserker.lua index fed0aedacf17ec8b956e155b994e38f6b2f769de..e49dfd786da238e4b83e3043b6b3e8c3bd05840f 100644 --- a/game/modules/tome/data/talents/techniques/strength-of-the-berserker.lua +++ b/game/modules/tome/data/talents/techniques/strength-of-the-berserker.lua @@ -70,7 +70,7 @@ newTalent{ on_pre_use = function(self, t, silent) if not self:hasTwoHandedWeapon() then if not silent then game.logPlayer(self, "You require a two handed weapon to use this talent.") end return false end return true end, getDam = function(self, t) return self:combatScale(self:getStr(7, true) * self:getTalentLevel(t), 5, 0, 40, 35)end, getAtk = function(self, t) return self:combatScale(self:getDex(7, true) * self:getTalentLevel(t), 5, 0, 40, 35) end , - getImmune = function(self, t) return self:combatTalentLimit(t, 1, 0.17, 0.5) end, + getImmune = function(self, t) return self:combatTalentLimit(t, 1, 0.22, 0.55) end, hasFoes = function(self) for i = 1, #self.fov.actors_dist do local act = self.fov.actors_dist[i] @@ -217,7 +217,7 @@ newTalent{ tactical = { CLOSEIN = 2, STAMINA = 2, BUFF = 2 }, getDur = function(self, t) return math.floor(self:combatTalentLimit(t, 19, 4, 8)) end, getStamina = function(self, t) return self:combatStatScale("con", 4, 25) end, - getSpeed = function(self, t) return self:combatTalentLimit(t, 70, 10, 30) end, + getSpeed = function(self, t) return self:combatTalentLimit(t, 70, 15, 35) end, on_pre_use = function(self, t, silent) if not self:hasTwoHandedWeapon() and self:getStamina() > self:getMaxStamina() * 0.3 then if not silent then game.logPlayer(self, "You require a two handed weapon and less stamina to use this talent.") end return false end diff --git a/game/modules/tome/data/talents/techniques/throwing-knives.lua b/game/modules/tome/data/talents/techniques/throwing-knives.lua index 8d711c8fe126061e0b173a1854a2820077e19dfb..870917ed22f99e0d9eb807ede26ed725b75b941e 100644 --- a/game/modules/tome/data/talents/techniques/throwing-knives.lua +++ b/game/modules/tome/data/talents/techniques/throwing-knives.lua @@ -123,7 +123,7 @@ newTalent{ proj_speed = 10, tactical = { ATTACK = { PHYSICAL = 0.2 } }, no_break_stealth = true, - range = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 4.2, 7)) end, + range = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 4, 7)) end, requires_target = true, target = function(self, t) return {type="bolt", range=self:getTalentRange(t), selffire=false, talent=t, display={display='', particle="arrow", particle_args={tile="shockbolt/object/knife_steel"} }} @@ -132,8 +132,8 @@ newTalent{ local eff = self:hasEffect(self.EFF_THROWING_KNIVES) if eff and eff.stacks > 0 then return true end end, - getBaseDamage = function(self, t) return self:combatTalentLimit(t, 72, 9, 35) end, -- Scale as dagger damage by material tier (~voratun dagger @ TL 6.5), limit base damage < voratun greatmaul - getBaseApr = function(self, t) return self:combatTalentScale(t, 2, 10) end, + getBaseDamage = function(self, t) return self:combatTalentLimit(t, 72, 10, 42) end, -- Scale as dagger damage by material tier (~voratun dagger @ TL 6.5), limit base damage < voratun greatmaul + getBaseApr = function(self, t) return self:combatTalentScale(t, 3, 10) end, getReload = function(self, t) return 2 end, getNb = function(self, t) return math.floor(self:combatTalentScale(t, 6, 9.5, 0.25)) end, getBaseCrit = function(self, t) return self:combatTalentScale(t, 2, 5) end, @@ -220,7 +220,7 @@ newTalent{ tactical = { ATTACKAREA = { PHYSICAL = 2}}, speed = "throwing", proj_speed = 10, - getDamage = function (self, t) return self:combatTalentLimit(t, 1, 0.3, 0.75) end, + getDamage = function (self, t) return self:combatTalentLimit(t, 1, 0.4, 0.75) end, getNb = function(self, t) return math.floor(self:combatTalentScale(t, 8, 20)) end, range = 0, cooldown = 10, @@ -282,7 +282,7 @@ newTalent{ range = 0, getCrit = function(self, t) return self:combatTalentScale(t, 3, 15) end, getCritPower = function(self, t) return self:combatTalentScale(t, 7, 20) end, - getChance = function(self, t) return self:combatTalentLimit(t, 100, 15, 45) end, + getChance = function(self, t) return self:combatTalentLimit(t, 100, 20, 45) end, info = function(self, t) local crit = t.getCrit(self,t) local power = t.getCritPower(self,t) @@ -303,8 +303,8 @@ newTalent{ sustain_stamina = 30, tactical = { BUFF = 2 }, range = 7, - getSpeed = function(self, t) return self:combatTalentLimit(t, 1, 0.10, 0.35) end, -- Limit < +100% attack speed - getChance = function(self, t) return self:combatTalentLimit(t, 100, 8, 25) end, + getSpeed = function(self, t) return self:combatTalentLimit(t, 1, 0.15, 0.35) end, -- Limit < +100% attack speed + getChance = function(self, t) return self:combatTalentLimit(t, 100, 10, 25) end, activate = function(self, t) local ret = { } diff --git a/game/modules/tome/data/talents/techniques/thuggery.lua b/game/modules/tome/data/talents/techniques/thuggery.lua index 3597d3165373ac26ff6c4895f32a85e2ec34960e..42770426c2204217e20dbde35fe61918277d1475 100644 --- a/game/modules/tome/data/talents/techniques/thuggery.lua +++ b/game/modules/tome/data/talents/techniques/thuggery.lua @@ -85,7 +85,7 @@ newTalent{ mode = "passive", points = 5, require = techs_req2, - getImmune = function(self, t) return self:combatTalentLimit(t, 1, 0.15, 0.5) end, + getImmune = function(self, t) return self:combatTalentLimit(t, 1, 0.2, 0.5) end, passives = function(self, t, p) local immune = t.getImmune(self, t) self:talentTemporaryValue(p, "stun_immune", immune) diff --git a/game/modules/tome/data/talents/techniques/tireless-combatant.lua b/game/modules/tome/data/talents/techniques/tireless-combatant.lua index 50c9d26783ef83a709c1cd33394654748daad53c..c6edfc5add61124e78177679bfed72ba542970bd 100644 --- a/game/modules/tome/data/talents/techniques/tireless-combatant.lua +++ b/game/modules/tome/data/talents/techniques/tireless-combatant.lua @@ -199,7 +199,7 @@ newTalent { return self:combatTalentScale(t, 0.7, 2.5) end, getResistCap = function(self, t) - return self:combatTalentLimit(t, 30, 0.7, 2.5)/t.getMax(self, t) -- Limit < 30% + return self:combatTalentLimit(t, 30, 1, 3.5)/t.getMax(self, t) -- Limit < 30% end, getDuration = function(self, t) return 3 diff --git a/game/modules/tome/data/talents/techniques/unarmed-discipline.lua b/game/modules/tome/data/talents/techniques/unarmed-discipline.lua index 3e29e09e550395bcb25c29f45b8e2e5c5c1ce327..383feddfa7b0e141ee9ed16354ab855a70c1714d 100644 --- a/game/modules/tome/data/talents/techniques/unarmed-discipline.lua +++ b/game/modules/tome/data/talents/techniques/unarmed-discipline.lua @@ -114,7 +114,7 @@ newTalent{ points = 5, mode = "passive", getStamina = function(self, t) return self:combatTalentLimit(t, 6, 1, 4) end, - getChance = function(self, t) return self:combatTalentLimit(t, 70, 15, 60) end, + getChance = function(self, t) return self:combatTalentLimit(t, 70, 25, 60) end, info = function(self, t) local stamina = t.getStamina(self, t) local chance = t.getChance(self, t) @@ -172,7 +172,7 @@ newTalent{ requires_target = true, radius = function(self,t) return self:combatTalentScale(t, 1, 3) end, getDamage = function(self, t) return 0.2 + getStrikingStyle(self, dam) end, - getMult = function(self, t) return self:combatTalentLimit(t, 100, 15, 40) end, + getMult = function(self, t) return self:combatTalentLimit(t, 100, 25, 40) end, action = function(self, t) local tg = self:getTalentTarget(t) local x, y, target = self:getTarget(tg) diff --git a/game/modules/tome/data/talents/techniques/weaponshield.lua b/game/modules/tome/data/talents/techniques/weaponshield.lua index 668027b02b8d0aa448a52c42397545e09f445253..dcb944b1000c51ffef107c41e16833a42ee52841 100644 --- a/game/modules/tome/data/talents/techniques/weaponshield.lua +++ b/game/modules/tome/data/talents/techniques/weaponshield.lua @@ -200,7 +200,7 @@ newTalent{ on_pre_use = function(self, t, silent) if not self:hasShield() then if not silent then game.logPlayer(self, "You require a weapon and a shield to use this talent.") end return false end return true end, getArmor = function(self,t) return self:combatTalentStatDamage(t, "str", 6, 30) + self:combatTalentStatDamage(t, "dex", 6, 30) end, getBlock = function(self, t) return self:combatTalentStatDamage(t, "str", 20, 75) + self:combatTalentStatDamage(t, "dex", 20, 75) end, - stunKBresist = function(self, t) return self:combatTalentLimit(t, 1, 0.15, 0.50) end, -- Limit <100% + stunKBresist = function(self, t) return self:combatTalentLimit(t, 1, 0.2, 0.50) end, -- Limit <100% activate = function(self, t) local shield = self:hasShield() if not shield then