diff --git a/skynet b/skynet index 7d39312..6c77857 160000 --- a/skynet +++ b/skynet @@ -1 +1 @@ -Subproject commit 7d39312ae9d50054c4b8dbb675da8024ccb5a834 +Subproject commit 6c778575d99577c0c653b65b4025e2a88e6ce705 diff --git a/src/models/HeroPlugin.lua b/src/models/HeroPlugin.lua index 6cfde19..a2d820e 100644 --- a/src/models/HeroPlugin.lua +++ b/src/models/HeroPlugin.lua @@ -18,6 +18,28 @@ function HeroPlugin.bind(Hero) return math.min(#csvdb["unit_expCsv"], csvdb["unit_breakCsv"][self:getProperty("breakL")].levelLimit) end + + -- 纯% 的属性 + local PercentAttr = { + crit = 6, -- 暴击 + critHurt = 8, -- 暴伤 + vampire = 9, -- 吸血 + pierce = 10, -- 穿透 + } + -- base 原, add 增加值 ,atype 增加类型(0 值 1%) + local function addAttr(base, add, atype, attrName) + base = base or 0 + add = add or 0 + if PercentAttr[attrName] then + atype = 0 + end + if atype == 1 then + return base * add / 100 + else + return add + end + end + --角色自身 = 初始 *(1+升级)*(1+突破)*(1+觉醒)+ 天赋升级 + 天赋阶段 function Hero:getBaseAttrs(params) params = params or {} @@ -53,7 +75,7 @@ function HeroPlugin.bind(Hero) for _, attrName in pairs(AttsEnumEx) do if talentAttrS[attrName] then - talentAttrS[attrName] = (unitData[attrName] or 0) * talentAttrS[attrName] / 100 + talentAttrS[attrName] = addAttr(unitData[attrName], talentAttrS[attrName], 1, attrName) end end @@ -66,9 +88,9 @@ function HeroPlugin.bind(Hero) local blData = csvdb["unit_breakCsv"][breakL] local wData = csvdb["unit_wakeCsv"][wakeL] for attr, value in pairs(attrs) do - attrs[attr] = attrs[attr] * (1 + (lData[attr .. "Level"] or 0) / 100) - * (1 + (blData[attr .. "Level"] or 0) / 100) - * (1 + (wData[attr .. "Level"] or 0) / 100) + (talentAttrS[attr] or 0) + attrs[attr] = attrs[attr] + addAttr(attrs[attr], lData[attr .. "Level"], 1, attr) + attrs[attr] = attrs[attr] + addAttr(attrs[attr], blData[attr .. "Level"], 1, attr) + attrs[attr] = attrs[attr] + addAttr(attrs[attr], wData[attr .. "Level"], 1, attr) + (talentAttrS[attr] or 0) end return attrs @@ -83,13 +105,15 @@ function HeroPlugin.bind(Hero) local equipAttrs = self:getRuneEquipAttrs() for _, attName in pairs(AttsEnumEx) do - attrs[attName] = ((attrs[attName] or 0) + equipAttrs.value[attName]) * (1 + equipAttrs.percent[attName] / 100) + attrs[attName] = attrs[attName] or 0 + attrs[attName] = attrs[attName] + addAttr(attrs[attName], equipAttrs.value[attName], 0, attName) + attrs[attName] = attrs[attName] + addAttr(attrs[attName], equipAttrs.percent[attName], 1, attName) end -- 羁绊加成 if params.activeRelation then - for k, v in pairs(AttsEnumEx) do - attrs[v] = (attrs[v] or 0) * (1 + (params.activeRelation[v] or 0) / 100) + for k, attName in pairs(AttsEnumEx) do + attrs[attName] = attrs[attName] + addAttr(attrs[attName], params.activeRelation[attName], 1, attName) end end return attrs @@ -143,8 +167,9 @@ function HeroPlugin.bind(Hero) local rune = self.owner.runeBag[uid] local buildData = csvdb["rune_buildCsv"][rune:getProperty("level")] for k,v in pairs(rune:getProperty("attrs"):toNumMap()) do - attrs.value[AttsEnumEx[k]] = attrs.value[AttsEnumEx[k]] + (v / 10 * (1 + buildData.effect/100)) -- 零件的加成属性有特殊需求 填的是 10倍的值 - + local attName = AttsEnumEx[k] + -- 零件的加成属性有特殊需求 填的是 10倍的值 + attrs.value[attName] = attrs.value[attName] + (v / 10) + addAttr(v / 10, buildData[attName], 1, attName) end local csvData = csvdb["runeCsv"][rune:getProperty("type")][rune:getProperty("id")] if not suits[csvData.suit] then suits[csvData.suit] = {} end -- libgit2 0.21.2