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 | ... | ... |