8c74292c
zhouahaihai
增加item 以及 角色突破
|
1
2
3
4
5
|
local HeroPlugin = {}
function HeroPlugin.bind(Hero)
|
f22a33af
zhouhaihai
自己的日志
|
6
|
function Hero:mylog(contents)
|
3133cb76
zhouhaihai
日志
|
7
8
9
10
11
12
13
|
contents = contents or {}
if contents["cint1"] or contents["cint2"] or contents["cint3"] then
print("heroLog error log have cint1 or cint2 or cint3 ", debug.traceback())
end
contents["cint1"] = self:getProperty("id")
contents["cint2"] = self:getProperty("type")
|
f22a33af
zhouhaihai
自己的日志
|
14
|
self.owner:mylog("hero_action", contents)
|
3133cb76
zhouhaihai
日志
|
15
16
|
end
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
17
18
19
20
|
function Hero:getMaxLevel()
return math.min(#csvdb["unit_expCsv"], csvdb["unit_breakCsv"][self:getProperty("breakL")].levelLimit)
end
|
028db777
zhouhaihai
属性加成
|
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
-- 纯% 的属性
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
|
c4262012
zhouhaihai
基础属性修改
|
43
|
--角色自身 = 初始 *(1+升级)*(1+突破)*(1+觉醒)+ 天赋升级 + 天赋阶段
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
44
45
46
47
48
49
50
|
function Hero:getBaseAttrs(params)
params = params or {}
local unitData = csvdb["unitCsv"][self:getProperty("type")]
local level = params.level or self:getProperty("level")
local breakL = params.breakL or self:getProperty("breakL")
local wakeL = params.wakeL or self:getProperty("wakeL")
local talent = params.talent or self:getProperty("talent")
|
96d591f7
liuzujun
天赋升级修改,增加英雄信赖
|
51
|
local heroCfgId = self:getProperty("type")
|
c4262012
zhouhaihai
基础属性修改
|
52
|
--天赋
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
53
|
local talentAttrS = {}
|
c4262012
zhouhaihai
基础属性修改
|
54
|
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
55
|
-- 四个基础属性
|
1c35c4cf
gaofengduan
fix hero awake
|
56
|
local curData = csvdb["unit_talentCsv"][talent:getv(0, 1)]
|
96d591f7
liuzujun
天赋升级修改,增加英雄信赖
|
57
|
local curTalentLvl = 0
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
58
|
if not curData then -- 已经满阶段了
|
96d591f7
liuzujun
天赋升级修改,增加英雄信赖
|
59
60
|
local cfgName = "unit_talent_"..heroCfgId.."Csv"
curData = csvdb[cfgName][#csvdb[cfgName]]
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
61
|
else
|
96d591f7
liuzujun
天赋升级修改,增加英雄信赖
|
62
|
curTalentLvl = talent:getv(1, 1)
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
63
|
end
|
96d591f7
liuzujun
天赋升级修改,增加英雄信赖
|
64
65
66
67
68
69
70
71
72
|
for lvl, cfg in pairs(curData) do
if lvl < curTalentLvl or curTalentLvl == 0 then
if cfg.effect ~= 99 then
local curVal = talentAttrS[cfg.effect] or 0
if curVal < cfg.strength then
talentAttrS[cfg.effect] = cfg.strength
end
end
end
|
c4262012
zhouhaihai
基础属性修改
|
73
|
end
|
c4262012
zhouhaihai
基础属性修改
|
74
|
|
cdbe8a36
zhouhaihai
天赋
|
75
76
|
for _, attrName in pairs(AttsEnumEx) do
if talentAttrS[attrName] then
|
96d591f7
liuzujun
天赋升级修改,增加英雄信赖
|
77
78
79
80
81
82
83
84
85
86
87
88
|
talentAttrS[attrName] = addAttr(unitData[attrName], talentAttrS[attrName], 0, attrName)
end
end
-- 信赖属性
local faithAttr = {}
local faith = self:getProperty("faith")
local faithConfig = csvdb["unit_trustCsv"]
for lvl = 1, #faithConfig do
if faith >= faithConfig[lvl].exp then
local add = faithConfig[lvl]["position_"..unitData.position]:toArray(true, "=")
faithAttr[add[1]] = (faithAttr[add[1]] or 0) + add[2]
|
cdbe8a36
zhouhaihai
天赋
|
89
|
end
|
c4262012
zhouhaihai
基础属性修改
|
90
|
end
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
91
|
|
c4262012
zhouhaihai
基础属性修改
|
92
93
94
95
96
97
98
|
local attrs = {}
for _, attName in pairs(AttsEnumEx) do
attrs[attName] = unitData[attName] or 0
end
--升级、突破、觉醒
local lData = csvdb["unit_expCsv"][level]
local blData = csvdb["unit_breakCsv"][breakL]
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
99
100
|
local wData = csvdb["unit_wakeCsv"][wakeL]
for attr, value in pairs(attrs) do
|
028db777
zhouhaihai
属性加成
|
101
102
|
attrs[attr] = attrs[attr] + addAttr(attrs[attr], lData[attr .. "Level"], 1, attr)
attrs[attr] = attrs[attr] + addAttr(attrs[attr], blData[attr .. "Level"], 1, attr)
|
96d591f7
liuzujun
天赋升级修改,增加英雄信赖
|
103
|
attrs[attr] = attrs[attr] + addAttr(attrs[attr], wData[attr .. "Level"], 1, attr) + (talentAttrS[attr] or 0) + (faithAttr[attr] or 0)
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
104
105
106
107
108
|
end
return attrs
end
|
ece975b6
zhouhaihai
属性计算
|
109
|
|
699f4a74
zhouhaihai
属性公式修改
|
110
|
--当前属性 = 角色属性值 * (1 + 装备套装(百分比) + 铭文套装(百分比))+ (装备(固定)+ 铭文(固定))
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
111
|
function Hero:getTotalAttrs(params)
|
b53593b5
zhouhaihai
羁绊加成
|
112
|
params = params or {}
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
113
|
local attrs = self:getBaseAttrs()
|
ece975b6
zhouhaihai
属性计算
|
114
115
116
117
|
-- 装备零件
local equipAttrs = self:getRuneEquipAttrs()
for _, attName in pairs(AttsEnumEx) do
|
028db777
zhouhaihai
属性加成
|
118
|
attrs[attName] = attrs[attName] or 0
|
028db777
zhouhaihai
属性加成
|
119
|
attrs[attName] = attrs[attName] + addAttr(attrs[attName], equipAttrs.percent[attName], 1, attName)
|
699f4a74
zhouhaihai
属性公式修改
|
120
|
attrs[attName] = attrs[attName] + addAttr(attrs[attName], equipAttrs.value[attName], 0, attName)
|
ece975b6
zhouhaihai
属性计算
|
121
122
|
end
|
b53593b5
zhouhaihai
羁绊加成
|
123
124
|
-- 羁绊加成
if params.activeRelation then
|
028db777
zhouhaihai
属性加成
|
125
126
|
for k, attName in pairs(AttsEnumEx) do
attrs[attName] = attrs[attName] + addAttr(attrs[attName], params.activeRelation[attName], 1, attName)
|
b53593b5
zhouhaihai
羁绊加成
|
127
128
|
end
end
|
ece975b6
zhouhaihai
属性计算
|
129
130
131
132
133
|
return attrs
end
-- 当前零件和装备增加属性
function Hero:getRuneEquipAttrs()
|
acfc2f02
zhouhaihai
零件套装增加冒险战斗被动
|
134
|
local attrs = {value = {}, percent = {}}
|
ece975b6
zhouhaihai
属性计算
|
135
136
|
for _, attName in pairs(AttsEnumEx) do
attrs.value[attName] = 0
|
acfc2f02
zhouhaihai
零件套装增加冒险战斗被动
|
137
|
attrs.percent[attName] = 0
|
ece975b6
zhouhaihai
属性计算
|
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
end
local equipSuits = {}
-- 装备效果
for typ,level in pairs(self:getProperty("equip"):toNumMap()) do
if level > 0 then
local data = csvdb["equipCsv"][typ][level]
for k,v in pairs(data.attr1:toNumMap()) do
attrs.value[AttsEnumEx[k]] = attrs.value[AttsEnumEx[k]] + v
end
for k,v in pairs(data.attr2:toNumMap()) do
attrs.value[AttsEnumEx[k]] = attrs.value[AttsEnumEx[k]] + v
end
if data.suit ~= "" then
if not equipSuits[data.suit] then equipSuits[data.suit] = {} end
table.insert(equipSuits[data.suit], data)
end
end
end
-- 装备套装效果
for suitId,eDatas in pairs(equipSuits) do
local suitCsv = csvdb["equip_suitCsv"][tonumber(suitId)]
if suitCsv then
local effects = suitCsv.effect:toTableArray(true)
local count = #eDatas
if count >= 2 then
|
acfc2f02
zhouhaihai
零件套装增加冒险战斗被动
|
163
|
attrs.percent[AttsEnumEx[effects[1][1]]] = attrs.percent[AttsEnumEx[effects[1][1]]] + effects[1][2]
|
ece975b6
zhouhaihai
属性计算
|
164
165
|
end
if count >= 3 then
|
acfc2f02
zhouhaihai
零件套装增加冒险战斗被动
|
166
|
attrs.percent[AttsEnumEx[effects[2][1]]] = attrs.percent[AttsEnumEx[effects[2][1]]] + effects[1][2]
|
ece975b6
zhouhaihai
属性计算
|
167
168
|
end
if count >= 4 then
|
acfc2f02
zhouhaihai
零件套装增加冒险战斗被动
|
169
|
attrs.percent[AttsEnumEx[effects[3][1]]] = attrs.percent[AttsEnumEx[effects[3][1]]] + effects[3][2]
|
ece975b6
zhouhaihai
属性计算
|
170
171
172
173
|
end
end
end
-- 零件效果
|
031dcf99
zhouhaihai
修改战斗属性计算 冒险增加效果类型
|
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
|
local suits = {}
for _, uid in pairs(self:getProperty("rune"):toNumMap()) do
if uid > 0 then
local rune = self.owner.runeBag[uid]
local csvData = csvdb["runeCsv"][rune:getProperty("type")][rune:getProperty("id")]
local runeRareData = csvdb["rune_rareCsv"][csvData.rarity]
local buildData = csvdb["rune_buildCsv"][rune:getProperty("level")]
for k, v in pairs(rune:getProperty("attrs"):toNumMap()) do
local attName = AttsEnumEx[k]
--零件的加成属性有特殊需求 填的是 10倍的值
--rare的effect不影响 特殊属性
--铭文单件普通属性=attr*(1+[rune_build表effect]/100*[rune_rare表effect]/100)
--铭文单件特殊属性=attr+[rune_build表effect]
local effect = buildData[attName]
if not PercentAttr[attName] then
effect = buildData[attName] * runeRareData.effect / 100
end
|
01accc9c
zhouhaihai
属性计算
|
193
|
attrs.value[attName] = attrs.value[attName] + (v / 100) + addAttr(v / 100, effect, 1, attName)
|
031dcf99
zhouhaihai
修改战斗属性计算 冒险增加效果类型
|
194
195
196
197
198
199
|
end
if not suits[csvData.suit] then suits[csvData.suit] = {} end
table.insert(suits[csvData.suit],csvData)
end
end
|
ece975b6
zhouhaihai
属性计算
|
200
201
202
203
204
205
|
-- 零件套装效果
for suitId,runeDatas in pairs(suits) do
local suitCsv = csvdb["rune_suitCsv"][tonumber(suitId)]
if suitCsv then
local effects = suitCsv.effect:toTableArray(true)
local count = #runeDatas
|
acfc2f02
zhouhaihai
零件套装增加冒险战斗被动
|
206
207
208
209
210
|
if count >= 2 and AttsEnumEx[effects[1][1]]then
attrs.percent[AttsEnumEx[effects[1][1]]] = attrs.percent[AttsEnumEx[effects[1][1]]] + effects[1][2]
end
if count >= 4 and AttsEnumEx[effects[2][1]] then
attrs.percent[AttsEnumEx[effects[2][1]]] = attrs.percent[AttsEnumEx[effects[2][1]]] + effects[2][2]
|
ece975b6
zhouhaihai
属性计算
|
211
|
end
|
acfc2f02
zhouhaihai
零件套装增加冒险战斗被动
|
212
213
|
if count >= 6 and AttsEnumEx[effects[3][1]] then
attrs.percent[AttsEnumEx[effects[3][1]]] = attrs.percent[AttsEnumEx[effects[3][1]]] + effects[3][2]
|
ece975b6
zhouhaihai
属性计算
|
214
215
216
|
end
end
end
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
217
218
|
return attrs
end
|
ece975b6
zhouhaihai
属性计算
|
219
|
|
475a6d03
zhouhaihai
战斗力
|
220
|
|
17d9316a
zhouhaihai
修改 公式
|
221
|
-- 战斗力(当前属性)= POWER[(生命 + 防御 * 7 + 闪避 * 4)*(攻击*4 + 命中 * 2)*(1 + 暴击几率/100 * 暴击伤害/100)* 攻击速度 / 60000 ,0.8 ]
|
475a6d03
zhouhaihai
战斗力
|
222
223
|
function Hero:getBattleValue(activeRelation) -- isReal包括队伍加成
local attrs = self:getTotalAttrs({activeRelation = activeRelation})
|
17d9316a
zhouhaihai
修改 公式
|
224
|
local battleValue = ((attrs["hp"] + attrs["def"] * 7 + attrs["miss"] * 4) * (attrs["atk"] * 4 + attrs["hit"] * 2) * (1 + attrs["crit"]/100 * attrs["critHurt"]/100) * attrs["atkSpeed"] / 600000) ^ 0.8
|
475a6d03
zhouhaihai
战斗力
|
225
|
return math.floor(battleValue)
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
226
227
228
229
230
231
232
233
234
235
|
end
function Hero:saveBattleValue()
local battleValue = self:getBattleValue()
if battleValue ~= self:getProperty("battleV") then
self:setProperty("battleV", battleValue)
end
return battleValue
end
|
1c35c4cf
gaofengduan
fix hero awake
|
236
|
-- 技能1234 对应必杀技,冒险技,被动技,战斗技
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
237
|
function Hero:getSkillLevel(idx)
|
0889982f
zhouhaihai
优化角色技能等级
|
238
239
240
241
242
243
244
245
246
247
|
local level = 1
for wakeL = 1, self:getProperty("wakeL") do
local wakeData = csvdb["unit_wakeCsv"][wakeL]
for _, slot in ipairs(wakeData.skill:toArray(true,"=")) do
if slot == idx then
level = level + 1
end
end
end
return level
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
248
249
|
end
|
f2fa488d
wangyujie
删除skin相关
|
250
|
function Hero:getSkillData(idx)
|
1c35c4cf
gaofengduan
fix hero awake
|
251
|
local unitData = csvdb["unitCsv"][self:getProperty("type")]
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
252
|
if idx == 1 then
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
253
|
return csvdb["skill_specialCsv"][unitData.special]
|
1c35c4cf
gaofengduan
fix hero awake
|
254
|
elseif idx == 2 then
|
61421173
zhouhaihai
冒险技能取战斗的
|
255
|
return csvdb["adv_battle_specialCsv"][unitData.adv]
|
1c35c4cf
gaofengduan
fix hero awake
|
256
257
258
259
|
elseif idx == 3 then
return csvdb["skill_passiveCsv"][unitData.passive]
elseif idx == 4 then
return csvdb["skill_blockCsv"][unitData.block]
|
a43410e1
zhengshouren
整理格式,使用tab替代空格
|
260
261
262
|
end
return {}
end
|
a6508219
zhouhaihai
挂机奖励
|
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
function Hero:getRunes()
local rune = self:getProperty("rune")
if not rune or rune == "" then
rune = "1=0 2=0 3=0 4=0 5=0 6=0"
end
local result = rune:toNumMap()
for i = 1, 6 do
if not result[i] then
result[i] = 0
end
end
return result
end
-- 101 冒险战斗被动技
-- 102 挂机战斗被动技
function Hero:getRuneSkill(skillType)
local suits = {}
for _,uid in pairs(self:getRunes()) do
if uid > 0 then
local runeData = self.owner.runeBag[uid]
if not runeData then return end
|
02538652
zhouhaihai
复制bug
|
286
|
local csvData = csvdb["runeCsv"][runeData:getProperty("type")][runeData:getProperty("id")]
|
a6508219
zhouhaihai
挂机奖励
|
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
|
if not suits[csvData.suit] then suits[csvData.suit] = {} end
table.insert(suits[csvData.suit],csvData)
end
end
for suitId,runes in pairs(suits) do
local suitCsv = csvdb["rune_suitCsv"][tonumber(suitId)]
if not suitCsv then return end
local effects = suitCsv.effect:toTableArray(true)
local count = #runes
if count >= 2 and effects[1][1] == skillType then
return effects[1][2]
end
if count >= 4 and effects[2][1] == skillType then
return effects[2][2]
end
if count >= 6 and effects[3][1] == skillType then
return effects[3][2]
end
end
return
end
|
96d591f7
liuzujun
天赋升级修改,增加英雄信赖
|
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
|
-- 添加英雄信赖
function Hero:addHeroFaith(exp)
local faith = self:getProperty("faith")
local config = csvdb["unit_trustCsv"]
local star = self:getProperty("wakeL")
local tmpExp = faith + exp
for lvl = 1, #config do
if star < config[lvl].star then
break
end
if tmpExp < config[lvl].exp then
faith = tmpExp
break
else
faith = config[lvl].exp
end
end
self:setProperty("faith", faith)
end
|
8c74292c
zhouahaihai
增加item 以及 角色突破
|
330
331
332
333
|
end
return HeroPlugin
|