Commit 028db777beaa09fdf38520246df68df636056349

Authored by zhouhaihai
1 parent 8c7272a5

属性加成

Showing 2 changed files with 35 additions and 10 deletions   Show diff stats
1   -Subproject commit 7d39312ae9d50054c4b8dbb675da8024ccb5a834
  1 +Subproject commit 6c778575d99577c0c653b65b4025e2a88e6ce705
... ...
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
... ...