Commit 028db777beaa09fdf38520246df68df636056349
1 parent
8c7272a5
属性加成
Showing
2 changed files
with
35 additions
and
10 deletions
Show diff stats
src/models/HeroPlugin.lua
| ... | ... | @@ -18,6 +18,28 @@ function HeroPlugin.bind(Hero) |
| 18 | 18 | return math.min(#csvdb["unit_expCsv"], csvdb["unit_breakCsv"][self:getProperty("breakL")].levelLimit) |
| 19 | 19 | end |
| 20 | 20 | |
| 21 | + | |
| 22 | + -- 纯% 的属性 | |
| 23 | + local PercentAttr = { | |
| 24 | + crit = 6, -- 暴击 | |
| 25 | + critHurt = 8, -- 暴伤 | |
| 26 | + vampire = 9, -- 吸血 | |
| 27 | + pierce = 10, -- 穿透 | |
| 28 | + } | |
| 29 | + -- base 原, add 增加值 ,atype 增加类型(0 值 1%) | |
| 30 | + local function addAttr(base, add, atype, attrName) | |
| 31 | + base = base or 0 | |
| 32 | + add = add or 0 | |
| 33 | + if PercentAttr[attrName] then | |
| 34 | + atype = 0 | |
| 35 | + end | |
| 36 | + if atype == 1 then | |
| 37 | + return base * add / 100 | |
| 38 | + else | |
| 39 | + return add | |
| 40 | + end | |
| 41 | + end | |
| 42 | + | |
| 21 | 43 | --角色自身 = 初始 *(1+升级)*(1+突破)*(1+觉醒)+ 天赋升级 + 天赋阶段 |
| 22 | 44 | function Hero:getBaseAttrs(params) |
| 23 | 45 | params = params or {} |
| ... | ... | @@ -53,7 +75,7 @@ function HeroPlugin.bind(Hero) |
| 53 | 75 | |
| 54 | 76 | for _, attrName in pairs(AttsEnumEx) do |
| 55 | 77 | if talentAttrS[attrName] then |
| 56 | - talentAttrS[attrName] = (unitData[attrName] or 0) * talentAttrS[attrName] / 100 | |
| 78 | + talentAttrS[attrName] = addAttr(unitData[attrName], talentAttrS[attrName], 1, attrName) | |
| 57 | 79 | end |
| 58 | 80 | end |
| 59 | 81 | |
| ... | ... | @@ -66,9 +88,9 @@ function HeroPlugin.bind(Hero) |
| 66 | 88 | local blData = csvdb["unit_breakCsv"][breakL] |
| 67 | 89 | local wData = csvdb["unit_wakeCsv"][wakeL] |
| 68 | 90 | for attr, value in pairs(attrs) do |
| 69 | - attrs[attr] = attrs[attr] * (1 + (lData[attr .. "Level"] or 0) / 100) | |
| 70 | - * (1 + (blData[attr .. "Level"] or 0) / 100) | |
| 71 | - * (1 + (wData[attr .. "Level"] or 0) / 100) + (talentAttrS[attr] or 0) | |
| 91 | + attrs[attr] = attrs[attr] + addAttr(attrs[attr], lData[attr .. "Level"], 1, attr) | |
| 92 | + attrs[attr] = attrs[attr] + addAttr(attrs[attr], blData[attr .. "Level"], 1, attr) | |
| 93 | + attrs[attr] = attrs[attr] + addAttr(attrs[attr], wData[attr .. "Level"], 1, attr) + (talentAttrS[attr] or 0) | |
| 72 | 94 | end |
| 73 | 95 | |
| 74 | 96 | return attrs |
| ... | ... | @@ -83,13 +105,15 @@ function HeroPlugin.bind(Hero) |
| 83 | 105 | local equipAttrs = self:getRuneEquipAttrs() |
| 84 | 106 | |
| 85 | 107 | for _, attName in pairs(AttsEnumEx) do |
| 86 | - attrs[attName] = ((attrs[attName] or 0) + equipAttrs.value[attName]) * (1 + equipAttrs.percent[attName] / 100) | |
| 108 | + attrs[attName] = attrs[attName] or 0 | |
| 109 | + attrs[attName] = attrs[attName] + addAttr(attrs[attName], equipAttrs.value[attName], 0, attName) | |
| 110 | + attrs[attName] = attrs[attName] + addAttr(attrs[attName], equipAttrs.percent[attName], 1, attName) | |
| 87 | 111 | end |
| 88 | 112 | |
| 89 | 113 | -- 羁绊加成 |
| 90 | 114 | if params.activeRelation then |
| 91 | - for k, v in pairs(AttsEnumEx) do | |
| 92 | - attrs[v] = (attrs[v] or 0) * (1 + (params.activeRelation[v] or 0) / 100) | |
| 115 | + for k, attName in pairs(AttsEnumEx) do | |
| 116 | + attrs[attName] = attrs[attName] + addAttr(attrs[attName], params.activeRelation[attName], 1, attName) | |
| 93 | 117 | end |
| 94 | 118 | end |
| 95 | 119 | return attrs |
| ... | ... | @@ -143,8 +167,9 @@ function HeroPlugin.bind(Hero) |
| 143 | 167 | local rune = self.owner.runeBag[uid] |
| 144 | 168 | local buildData = csvdb["rune_buildCsv"][rune:getProperty("level")] |
| 145 | 169 | for k,v in pairs(rune:getProperty("attrs"):toNumMap()) do |
| 146 | - attrs.value[AttsEnumEx[k]] = attrs.value[AttsEnumEx[k]] + (v / 10 * (1 + buildData.effect/100)) -- 零件的加成属性有特殊需求 填的是 10倍的值 | |
| 147 | - | |
| 170 | + local attName = AttsEnumEx[k] | |
| 171 | + -- 零件的加成属性有特殊需求 填的是 10倍的值 | |
| 172 | + attrs.value[attName] = attrs.value[attName] + (v / 10) + addAttr(v / 10, buildData[attName], 1, attName) | |
| 148 | 173 | end |
| 149 | 174 | local csvData = csvdb["runeCsv"][rune:getProperty("type")][rune:getProperty("id")] |
| 150 | 175 | if not suits[csvData.suit] then suits[csvData.suit] = {} end | ... | ... |