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,6 +18,28 @@ function HeroPlugin.bind(Hero)
18 return math.min(#csvdb["unit_expCsv"], csvdb["unit_breakCsv"][self:getProperty("breakL")].levelLimit) 18 return math.min(#csvdb["unit_expCsv"], csvdb["unit_breakCsv"][self:getProperty("breakL")].levelLimit)
19 end 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 --角色自身 = 初始 *(1+升级)*(1+突破)*(1+觉醒)+ 天赋升级 + 天赋阶段 43 --角色自身 = 初始 *(1+升级)*(1+突破)*(1+觉醒)+ 天赋升级 + 天赋阶段
22 function Hero:getBaseAttrs(params) 44 function Hero:getBaseAttrs(params)
23 params = params or {} 45 params = params or {}
@@ -53,7 +75,7 @@ function HeroPlugin.bind(Hero) @@ -53,7 +75,7 @@ function HeroPlugin.bind(Hero)
53 75
54 for _, attrName in pairs(AttsEnumEx) do 76 for _, attrName in pairs(AttsEnumEx) do
55 if talentAttrS[attrName] then 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 end 79 end
58 end 80 end
59 81
@@ -66,9 +88,9 @@ function HeroPlugin.bind(Hero) @@ -66,9 +88,9 @@ function HeroPlugin.bind(Hero)
66 local blData = csvdb["unit_breakCsv"][breakL] 88 local blData = csvdb["unit_breakCsv"][breakL]
67 local wData = csvdb["unit_wakeCsv"][wakeL] 89 local wData = csvdb["unit_wakeCsv"][wakeL]
68 for attr, value in pairs(attrs) do 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 end 94 end
73 95
74 return attrs 96 return attrs
@@ -83,13 +105,15 @@ function HeroPlugin.bind(Hero) @@ -83,13 +105,15 @@ function HeroPlugin.bind(Hero)
83 local equipAttrs = self:getRuneEquipAttrs() 105 local equipAttrs = self:getRuneEquipAttrs()
84 106
85 for _, attName in pairs(AttsEnumEx) do 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 end 111 end
88 112
89 -- 羁绊加成 113 -- 羁绊加成
90 if params.activeRelation then 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 end 117 end
94 end 118 end
95 return attrs 119 return attrs
@@ -143,8 +167,9 @@ function HeroPlugin.bind(Hero) @@ -143,8 +167,9 @@ function HeroPlugin.bind(Hero)
143 local rune = self.owner.runeBag[uid] 167 local rune = self.owner.runeBag[uid]
144 local buildData = csvdb["rune_buildCsv"][rune:getProperty("level")] 168 local buildData = csvdb["rune_buildCsv"][rune:getProperty("level")]
145 for k,v in pairs(rune:getProperty("attrs"):toNumMap()) do 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 end 173 end
149 local csvData = csvdb["runeCsv"][rune:getProperty("type")][rune:getProperty("id")] 174 local csvData = csvdb["runeCsv"][rune:getProperty("type")][rune:getProperty("id")]
150 if not suits[csvData.suit] then suits[csvData.suit] = {} end 175 if not suits[csvData.suit] then suits[csvData.suit] = {} end