RoleAttr.lua 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496
  1. ----------------------------------
  2. -- 人物属性
  3. -- doCalc 重算人物属性
  4. -- doCalcHero 重算英雄属性 并赋值到human缓存中
  5. -- calcMonsterConf 重算怪物属性 返回属性列表attrs
  6. -- calcHeroGrid 根据英雄grid重算英雄属性 返回属性列表attrs
  7. -- updateValue 更新属性
  8. -- calcZhandouli 根据属性计算战力
  9. -- calcPingFen 计算评分
  10. ----------------------------------
  11. local RoleExcel = require("excel.role")
  12. local HeroExcel = require("excel.hero").hero
  13. -- local skillExcel = require("excel.skill").skill
  14. local MonsterExcel = require("excel.monster").monster
  15. local MonsterAttrExcel = require("excel.monster").monsterAttr
  16. local BattleMonsterExcel = require("excel.battlemonster")
  17. local BattleMonsterExcel2 = require("excel.battlemonster2")
  18. local Util = require("common.Util")
  19. local BeSkill = require("combat.BeSkill")
  20. local RoleHeadLogic = require("role.RoleHeadLogic")
  21. local FuwenLogic = require("fuwen.FuwenLogic")
  22. local HeroLogic = require("hero.HeroLogic")
  23. local HeroEquip = require("hero.HeroEquip")
  24. local RoleDefine = require("role.RoleDefine")
  25. local TheStarsLogic = require("theStars.TheStarsLogic")
  26. local UnionTecLogic = require("union.UnionTecLogic")
  27. local MoshouLogic = require("moshou.MoshouLogic")
  28. local UnionLivenessLogic = require("union.UnionLivenessLogic")
  29. local ChengjiuLogic = require("chengjiu.ChengjiuLogic")
  30. local AssessExcel = require("excel.assess")
  31. local EquipExcel = require("excel.equip")
  32. local FuwenExcel = require("excel.fuwen")
  33. local RoleStrongLogic = require("role.RoleStrongLogic")
  34. local ItemDefine = require("bag.ItemDefine")
  35. local EquipLogic = require("equip.EquipLogic")
  36. local CombatPosLogic = require("combat.CombatPosLogic")
  37. local CombatDefine = require("combat.CombatDefine")
  38. local RoleRealmLogic = require("roleSystem.RoleRealmLogic")
  39. local TalismanLogic = require("talisman.TalismanLogic")
  40. local HeroExclusiveWeapon = require("hero.HeroExclusiveWeapon")
  41. local WinnerRelicLogic = require("winnerRelic.WinnerRelicLogic")
  42. local HeroPubLogic = require("hero.HeroPubLogic")
  43. local HeroSeed = require("hero.HeroSeed")
  44. local ElfLogic = require("elf.ElfLogic")
  45. local HeroTianYuan = require("hero.HeroTianYuan")
  46. local HeroArtifacts = require("hero.HeroArtifacts")
  47. local RecycleItem = require("bag.RecycleItem")
  48. local function printAttr(attr, szText)
  49. for i = RoleDefine.ATK, RoleDefine.SPEED, 1 do
  50. print(szText.."[printAttr] i = "..i .." value = "..attr[i].."\n")
  51. end
  52. print("\n")
  53. end
  54. -- 计算人数属性
  55. function doCalc(human)
  56. human.attr = human.attr or {}
  57. human.heroAttrs = human.heroAttrs or {}
  58. Util.cleanTable(human.attr)
  59. local attr = human.attr
  60. -- 取个人前六英雄的战斗力
  61. local zhandouli = CombatPosLogic.getCombatHeroZDL(human, CombatDefine.COMBAT_TYPE1)
  62. local lvConfig = RoleExcel.exp[human.db.lv+1]
  63. -- 人物属性
  64. attr[RoleDefine.LEVEL] = human.db.lv
  65. attr[RoleDefine.EXP] = human.db.exp
  66. attr[RoleDefine.EXP_MAX] = lvConfig and lvConfig.exp or 0
  67. attr[RoleDefine.ZUANSHI] = human.db.zuanshi
  68. attr[RoleDefine.JINBI] = human.db.jinbi
  69. attr[RoleDefine.FRIENDHEART] = human.db.friendHeart
  70. attr[RoleDefine.ZHANDOULI] = zhandouli
  71. human.db.zhandouli = zhandouli
  72. RoleStrongLogic.doCalcMoShouPingFen(human, attr)
  73. end
  74. function cleanHeroAttrCache(human)
  75. human.heroAttrs = {}
  76. end
  77. -- 重算英雄属性
  78. function doCalcHero(human, index)
  79. local heroGrid = human.db.heroBag[index]
  80. local attrs = calcHeroGrid(heroGrid, index, human)
  81. if not attrs then return end
  82. RoleStrongLogic.doCalcMoShouPingFen(human, attrs)
  83. human.heroAttrs = human.heroAttrs or {}
  84. human.heroAttrs[index] = human.heroAttrs[index] or {}
  85. Util.copyTableSimple(attrs, human.heroAttrs[index])
  86. end
  87. -- 获取怪物属性 用的地方有点多,不一定改
  88. function calcMonsterConf(monsterID, attrID, attrInput)
  89. local monsterConfig = MonsterExcel[monsterID] or BattleMonsterExcel.monster[monsterID] or BattleMonsterExcel2.monster[monsterID]
  90. local attrsConfig = attrID and MonsterAttrExcel[attrID]
  91. if not attrsConfig then
  92. -- attrsConfig = attrID and BattleMonsterExcel.monsterAttr[attrID]
  93. attrsConfig = attrID and (BattleMonsterExcel.monsterAttr[attrID] or BattleMonsterExcel2.monsterAttr[attrID])
  94. end
  95. if not attrsConfig then
  96. attrID = 1
  97. attrsConfig = MonsterAttrExcel[attrID]
  98. end
  99. local attrs = {}
  100. initCombatAttr(attrs)
  101. attrs[RoleDefine.INIT_MP] = 50
  102. attrs[RoleDefine.JINGZHUN] = RoleDefine.DEFAUT_MINGZHONG
  103. attrs[RoleDefine.BAOJI_HURT_RATE] = RoleDefine.DEFAUT_BAOJI_HURT_RATE
  104. -- 怪物基础属性
  105. if attrInput then
  106. for _, attr in ipairs(attrInput) do
  107. local key = attr[1]
  108. local value = attr[2]
  109. attrs[key] = (attrs[key] or 0) + value
  110. end
  111. else
  112. for _, attr in ipairs(attrsConfig.attrs) do
  113. local key = attr[1]
  114. local value = attr[2]
  115. attrs[key] = (attrs[key] or 0) + value
  116. end
  117. end
  118. -- 怪物被动技能属性
  119. BeSkill.doCalcHero(nil, attrs, nil, monsterConfig)
  120. checkLimit(attrs)
  121. attrs[RoleDefine.ZHANDOULI] = calcZhandouli(attrs)
  122. return attrs
  123. end
  124. -- 根据英雄grid重算英雄属性
  125. -- 如果新增加了模块用于 heroOtherAttrs 计算属性, 需要同步到 CombatLogic中的FieldsCombat
  126. function calcHeroGrid(heroGrid, index, human)
  127. if type(heroGrid) ~= "table" then
  128. return
  129. end
  130. local tempHeroAttrs = {}
  131. local heroBaseAttrs = {}
  132. local heroOtherAttrs = {}
  133. -- 结果表需预置全部属性键,供 calcFinalValue 遍历合并
  134. initCombatAttr(tempHeroAttrs)
  135. heroBaseAttrs[RoleDefine.INIT_MP] = 50
  136. -- 默认命中100% 暴击伤害
  137. heroBaseAttrs[RoleDefine.JINGZHUN] = RoleDefine.DEFAUT_MINGZHONG
  138. heroBaseAttrs[RoleDefine.BAOJI_HURT_RATE] = RoleDefine.DEFAUT_BAOJI_HURT_RATE
  139. --不同模块在英雄属性计算 begin
  140. HeroLogic.doCalcHero(heroGrid, heroBaseAttrs) -- 基础属性
  141. -- 防止循环引用
  142. local SkinLogic = require("skin.SkinLogic")
  143. --local heroSkinID, heroSkinSkill = SkinLogic.checkHeroSkin(human, index)
  144. if human and human.db and human.db.skinBag then -- 皮肤属性
  145. --HeroLogic.doCalcHeroSkin(heroSkinID, heroOtherAttrs)
  146. SkinLogic.doCalcSkinHero(human, heroBaseAttrs)
  147. end
  148. BeSkill.doCalcHero(heroGrid, heroBaseAttrs) -- 被动技能属性
  149. HeroEquip.doCalcHero(human, heroGrid, heroOtherAttrs) -- 装备
  150. FuwenLogic.doCalcHero(heroGrid, heroOtherAttrs) -- 符文
  151. UnionTecLogic.doCalcHero(human, heroGrid, heroOtherAttrs) -- 公会科技
  152. RoleHeadLogic.doCalcHero(human, heroOtherAttrs) --称号
  153. UnionLivenessLogic.doCalcHero(human, heroOtherAttrs) --公会活跃等级
  154. ChengjiuLogic.doCalcHero(human, heroOtherAttrs) --成就属性加成
  155. MoshouLogic.doCalcHero(human, heroGrid, heroOtherAttrs) -- 魔兽
  156. RoleRealmLogic.doCalcHero(human, heroOtherAttrs) --境界
  157. TalismanLogic.doCalcHero(human, heroGrid, heroOtherAttrs) --秘宝
  158. HeroExclusiveWeapon.doCalcHero(human, heroGrid, heroOtherAttrs) -- 专属武器
  159. WinnerRelicLogic.doCalcHero(human, heroGrid, heroOtherAttrs) --圣者遗物
  160. HeroPubLogic.doCalcHero(human, heroOtherAttrs) --英雄酒馆
  161. HeroSeed.doCalcHero(human, heroGrid, heroOtherAttrs) -- 英雄种子
  162. ElfLogic.doCalcHero(human, heroOtherAttrs) --精灵系统
  163. HeroTianYuan.doCalcHero(human, heroGrid, heroOtherAttrs) -- 英雄天元
  164. HeroArtifacts.doCalcHero(human, heroGrid, heroOtherAttrs) -- 英雄神威灵装
  165. RecycleItem.doCalcHero(human, heroOtherAttrs) -- 收纳箱
  166. --不同模块在英雄属性计算 end
  167. -- 计算评分
  168. calcPingFen(human, heroGrid, heroOtherAttrs)
  169. -- 最终计算
  170. calcFinalValue(heroBaseAttrs, heroOtherAttrs, tempHeroAttrs)
  171. heroGrid.zhandouli = tempHeroAttrs[RoleDefine.ZHANDOULI] or 0
  172. return tempHeroAttrs
  173. end
  174. -- 更新属性
  175. function updateValue(k, v, attrs, isBuff)
  176. if k == RoleDefine.FANSHE_ZHUANGJIA then
  177. attrs[k] = v --反射装甲直接取值
  178. elseif isBuff then
  179. attrs[k] = (attrs[k] or 0) + v --战斗中添加buff属性叠加全按累加方式计算
  180. else
  181. --if RoleDefine.isBasicRate(k) then
  182. -- attrs[k] = (10000 + attrs[k])*(10000 + v)/10000 - 10000 --几何计算
  183. --else
  184. attrs[k] = (attrs[k] or 0) + v --累加计算
  185. --end
  186. end
  187. end
  188. -- 计算战力
  189. function calcZhandouli(attrs)
  190. local zhandouli = 0
  191. for key, zdlcf in pairs(RoleExcel.zdlPoint) do
  192. local value = zdlcf.point
  193. if attrs[key] and attrs[key] > 0 then
  194. -- 减去默认命中
  195. local attr = attrs[key]
  196. if key == RoleDefine.JINGZHUN then
  197. attr = attr - RoleDefine.DEFAUT_MINGZHONG
  198. attr = attr < 0 and 0 or attr
  199. end
  200. -- 减去默认爆伤
  201. if key == RoleDefine.BAOJI_HURT_RATE then
  202. attr = attr - RoleDefine.DEFAUT_BAOJI_HURT_RATE
  203. attr = attr < 0 and 0 or attr
  204. end
  205. zhandouli = zhandouli + attr * value
  206. end
  207. end
  208. return math.ceil(zhandouli)
  209. end
  210. -- 计算英雄评分
  211. function calcPingFen(human, heroGrid, attr)
  212. local heroConfig = HeroExcel[heroGrid.id]
  213. if not heroConfig then return end
  214. local totalPingFen = 0
  215. -- 英雄等级评分
  216. local lv = heroGrid.lv
  217. if not lv or lv <= 0 then
  218. lv = 1
  219. elseif lv > #AssessExcel.lv then
  220. lv = #AssessExcel.lv
  221. end
  222. local lvPingFen = AssessExcel.lv[lv].grade
  223. -- 英雄星级评分
  224. local star = heroGrid.star
  225. local starPingFen = AssessExcel.star[star].grade
  226. -- 英雄进阶评分
  227. local quality = heroGrid.quality
  228. local qualityPingFen = AssessExcel.quality[quality] and AssessExcel.quality[quality].grade or 0
  229. -- 英雄装备评分
  230. local equipPingFen = 0
  231. if heroGrid.equip then
  232. local mathFloor = math.floor
  233. for i = 1, ItemDefine.EQUIP_MAX_CNT do
  234. local equipGrid = heroGrid.equip[i]
  235. if equipGrid then
  236. local baseRate = EquipLogic.getEquipBaseRate(equipGrid.quality)
  237. local equipConfig = EquipExcel.equip[equipGrid.id]
  238. if equipConfig then
  239. local score = equipConfig.score
  240. score = mathFloor(score * baseRate)
  241. equipPingFen = equipPingFen + score
  242. end
  243. end
  244. end
  245. end
  246. -- 英雄符文评分
  247. local fuWenPingFen = 0
  248. for i = 1, 2 do
  249. if heroGrid.fuwen and
  250. heroGrid.fuwen[i] and
  251. heroGrid.fuwen[i].id ~= nil then
  252. local fuwenId = heroGrid.fuwen[i].id
  253. local skillLen = heroGrid.fuwen[i].skill and #heroGrid.fuwen[i].skill or 0
  254. for k = 1,skillLen do
  255. local skillID = heroGrid.fuwen[i].skill[k]
  256. local skillConfig = FuwenExcel.skill[skillID]
  257. fuWenPingFen = fuWenPingFen + AssessExcel.fuWen[skillConfig.lv].grade
  258. end
  259. end
  260. end
  261. -- 公会技能评分
  262. local unionTecPingFen = 0
  263. if human then
  264. if human.db.unionUuid and human.db.unionUuid ~= "" and
  265. human.db.technology and human.db.technology[heroConfig.job] then
  266. local technology = human.db.technology[heroConfig.job]
  267. local techCfg = nil
  268. for i = 1, UnionTecLogic.TEC_TIER_CNT do
  269. local tech = technology[i]
  270. local assessCfg = AssessExcel.union[i]
  271. if tech ~= nil and tech.lv ~= nil and tech.lv > 0 and assessCfg then
  272. unionTecPingFen = unionTecPingFen + assessCfg.grade * tech.lv
  273. end
  274. end
  275. end
  276. end
  277. attr[RoleDefine.PINGFEN_LV] = lvPingFen
  278. attr[RoleDefine.PINGFEN_STAR] = starPingFen
  279. attr[RoleDefine.PINGFEN_JINJIE] = qualityPingFen
  280. attr[RoleDefine.PINGFEN_EQUIP] = equipPingFen
  281. attr[RoleDefine.PINGFEN_FUWEN] = fuWenPingFen
  282. attr[RoleDefine.PINGFEN_UNION] = unionTecPingFen
  283. end
  284. function getPointByKey(key)
  285. local cf = RoleExcel.zdlPoint[key]
  286. if not cf then return 0 end
  287. return cf.point
  288. end
  289. -- 某些属性是有上下限的
  290. function checkLimit(attrs)
  291. attrs[RoleDefine.BAOJI] = math.max(attrs[RoleDefine.BAOJI], 0)
  292. end
  293. -- 计算最终属性
  294. local CHECKNEGATIVE = {}
  295. CHECKNEGATIVE[RoleDefine.STEAL_ATK] = 1
  296. CHECKNEGATIVE[RoleDefine.STEAL_DEF] = 1
  297. function calcFinalValue(heroAttrs, otherAttrs, attrs)
  298. local heroAtk = (heroAttrs[RoleDefine.ATK] or 0) * (1 + (heroAttrs[RoleDefine.ATK_RATE] or 0)/10000) * (1 + (otherAttrs[RoleDefine.ATK_RATE] or 0)/10000)
  299. local heroDef = (heroAttrs[RoleDefine.DEF] or 0) * (1 + (heroAttrs[RoleDefine.DEF_RATE] or 0)/10000) * (1 + (otherAttrs[RoleDefine.DEF_RATE] or 0)/10000)
  300. local heroHp = (heroAttrs[RoleDefine.HP] or 0) * (1 + (heroAttrs[RoleDefine.HP_RATE] or 0)/10000) * (1 + (otherAttrs[RoleDefine.HP_RATE] or 0)/10000)
  301. local heroSpeed = (heroAttrs[RoleDefine.SPEED] or 0) * (1 + (heroAttrs[RoleDefine.SPEED_RATE] or 0)/10000) * (1 + (otherAttrs[RoleDefine.SPEED_RATE] or 0)/10000)
  302. local otherAtk = (otherAttrs[RoleDefine.ATK] or 0) * (1 + (otherAttrs[RoleDefine.ATK_RATE] or 0)/10000)
  303. local otherDef = (otherAttrs[RoleDefine.DEF] or 0) * (1 + (otherAttrs[RoleDefine.DEF_RATE] or 0)/10000)
  304. local otherHp = (otherAttrs[RoleDefine.HP] or 0) * (1 + (otherAttrs[RoleDefine.HP_RATE] or 0)/10000)
  305. local otherSpeed = (otherAttrs[RoleDefine.SPEED] or 0) * (1 + (otherAttrs[RoleDefine.SPEED_RATE] or 0)/10000)
  306. for k,v in pairs(attrs) do
  307. local val
  308. if k == RoleDefine.ATK then
  309. val = heroAtk + otherAtk
  310. elseif k == RoleDefine.DEF then
  311. val = heroDef + otherDef
  312. elseif k == RoleDefine.HP then
  313. val = heroHp + otherHp
  314. elseif k == RoleDefine.SPEED then
  315. val = heroSpeed + otherSpeed
  316. else
  317. val = (heroAttrs[k] or 0) + (otherAttrs[k] or 0)
  318. end
  319. if not CHECKNEGATIVE[k] then
  320. val = math.max(val, 0)
  321. end
  322. attrs[k] = math.floor(val)
  323. end
  324. attrs[RoleDefine.ATK_RATE] = 0
  325. attrs[RoleDefine.DEF_RATE] = 0
  326. attrs[RoleDefine.HP_RATE] = 0
  327. attrs[RoleDefine.SPEED_RATE] = 0
  328. checkLimit(attrs)
  329. attrs[RoleDefine.ZHANDOULI] = calcZhandouli(attrs)
  330. end
  331. -- 初始化属性
  332. function initCombatAttr(attr)
  333. attr[RoleDefine.ZHANDOULI] = 0
  334. attr[RoleDefine.PINGFEN_LV] = 0
  335. attr[RoleDefine.PINGFEN_STAR] = 0
  336. attr[RoleDefine.PINGFEN_JINJIE] = 0
  337. attr[RoleDefine.PINGFEN_EQUIP] = 0
  338. attr[RoleDefine.PINGFEN_UNION] = 0
  339. attr[RoleDefine.PINGFEN_FUWEN] = 0
  340. attr[RoleDefine.PINGFEN_MOSHOU] = 0
  341. attr[RoleDefine.ATK] = 0
  342. attr[RoleDefine.DEF] = 0
  343. attr[RoleDefine.HP] = 0
  344. attr[RoleDefine.SPEED] = 0
  345. attr[RoleDefine.SKILL_HURT_RATE] = 0
  346. attr[RoleDefine.JINGZHUN] = 0
  347. attr[RoleDefine.GEDANG] = 0
  348. attr[RoleDefine.BAOJI] = 0
  349. attr[RoleDefine.BAOJI_HURT_RATE] = 0
  350. attr[RoleDefine.POJIA] = 0
  351. attr[RoleDefine.MIANKONG_RATE] = 0
  352. attr[RoleDefine.JIANSHANG_RATE] = 0
  353. attr[RoleDefine.SHENSHENG_HURT_RATE] = 0
  354. attr[RoleDefine.INIT_MP] = 0
  355. attr[RoleDefine.SHANBI] = 0
  356. attr[RoleDefine.KONG_RATE] = 0
  357. attr[RoleDefine.POJIA_DK] = 0
  358. attr[RoleDefine.ATK_RATE] = 0
  359. attr[RoleDefine.DEF_RATE] = 0
  360. attr[RoleDefine.HP_RATE] = 0
  361. attr[RoleDefine.SPEED_RATE] = 0
  362. attr[RoleDefine.XURUO] = 0
  363. attr[RoleDefine.JOB_HURT_RATE1] = 0
  364. attr[RoleDefine.JOB_HURT_RATE2] = 0
  365. attr[RoleDefine.JOB_HURT_RATE3] = 0
  366. attr[RoleDefine.JOB_HURT_RATE4] = 0
  367. attr[RoleDefine.JOB_HURT_RATE5] = 0
  368. attr[RoleDefine.STATUS_HURT_RATE1] = 0
  369. attr[RoleDefine.STATUS_HURT_RATE2] = 0
  370. attr[RoleDefine.STATUS_HURT_RATE3] = 0
  371. attr[RoleDefine.STATUS_HURT_RATE4] = 0
  372. attr[RoleDefine.STATUS_HURT_RATE5] = 0
  373. attr[RoleDefine.STATUS_HURT_RATE6] = 0
  374. attr[RoleDefine.STATUS_HURT_RATE7] = 0
  375. attr[RoleDefine.STATUS_BAOJI_RATE1] = 0
  376. attr[RoleDefine.STATUS_BAOJI_RATE2] = 0
  377. attr[RoleDefine.STATUS_BAOJI_RATE3] = 0
  378. attr[RoleDefine.STATUS_BAOJI_RATE4] = 0
  379. attr[RoleDefine.STATUS_BAOJI_RATE5] = 0
  380. attr[RoleDefine.STATUS_BAOJI_RATE6] = 0
  381. attr[RoleDefine.STATUS_BAOJI_RATE7] = 0
  382. attr[RoleDefine.STATUS_BAOJI_RATE8] = 0
  383. attr[RoleDefine.STATUS_MIANYI_RATE1] = 0
  384. attr[RoleDefine.STATUS_MIANYI_RATE2] = 0
  385. attr[RoleDefine.STATUS_MIANYI_RATE3] = 0
  386. attr[RoleDefine.STATUS_MIANYI_RATE4] = 0
  387. attr[RoleDefine.STATUS_MIANYI_RATE5] = 0
  388. attr[RoleDefine.STATUS_MIANYI_RATE6] = 0
  389. attr[RoleDefine.STATUS_MIANYI_RATE7] = 0
  390. attr[RoleDefine.STATUS_MIANYI_RATE8] = 0
  391. attr[RoleDefine.HP_ADD_RATE] = 0
  392. attr[RoleDefine.CHIXU_HURT_DEL_RATE] = 0
  393. attr[RoleDefine.ZAOCHENG_HP_ADD_RATE] = 0
  394. attr[RoleDefine.PHY_HURT_ADD_RATE] = 0
  395. attr[RoleDefine.MAGIC_HURT_ADD_RATE] = 0
  396. attr[RoleDefine.ANTI_BAOJI] = 0
  397. attr[RoleDefine.JIANSHANG_PHY_RATE] = 0
  398. attr[RoleDefine.JIANSHANG_MAGIC_RATE] = 0
  399. attr[RoleDefine.STEAL_ATK] = 0
  400. attr[RoleDefine.STEAL_DEF] = 0
  401. attr[RoleDefine.HURT_RATE] = 0
  402. attr[RoleDefine.BAOJI_HURT_RATE_EXTRA] = 0
  403. attr[RoleDefine.FANSHE_ZHUANGJIA] = 0
  404. attr[RoleDefine.HUDUN_COMBAT] = 0
  405. attr[RoleDefine.HURT_RATE_MAX] = 0
  406. attr[RoleDefine.STATUS_BAOJI_HURT_RATE1] = 0
  407. attr[RoleDefine.STATUS_BAOJI_HURT_RATE2] = 0
  408. attr[RoleDefine.STATUS_BAOJI_HURT_RATE3] = 0
  409. attr[RoleDefine.STATUS_BAOJI_HURT_RATE4] = 0
  410. attr[RoleDefine.STATUS_BAOJI_HURT_RATE5] = 0
  411. attr[RoleDefine.STATUS_BAOJI_HURT_RATE6] = 0
  412. attr[RoleDefine.STATUS_BAOJI_HURT_RATE7] = 0
  413. attr[RoleDefine.STATUS_BAOJI_HURT_RATE8] = 0
  414. attr[RoleDefine.ANTI_BAOJI_HURT_RATE] = 0
  415. attr[RoleDefine.JOB_JIANSHANG_RATE1] = 0
  416. attr[RoleDefine.JOB_JIANSHANG_RATE2] = 0
  417. attr[RoleDefine.JOB_JIANSHANG_RATE3] = 0
  418. attr[RoleDefine.JOB_JIANSHANG_RATE4] = 0
  419. attr[RoleDefine.JOB_JIANSHANG_RATE5] = 0
  420. attr[RoleDefine.ATK_JIANSHANG_RATE] = 0
  421. attr[RoleDefine.CAMP_JIANSHANG_RATE1] = 0
  422. attr[RoleDefine.CAMP_JIANSHANG_RATE2] = 0
  423. attr[RoleDefine.CAMP_JIANSHANG_RATE3] = 0
  424. attr[RoleDefine.CAMP_JIANSHANG_RATE4] = 0
  425. attr[RoleDefine.CAMP_JIANSHANG_RATE5] = 0
  426. attr[RoleDefine.CAMP_HURT_RATE1] = 0
  427. attr[RoleDefine.CAMP_HURT_RATE2] = 0
  428. attr[RoleDefine.CAMP_HURT_RATE3] = 0
  429. attr[RoleDefine.CAMP_HURT_RATE4] = 0
  430. attr[RoleDefine.CAMP_HURT_RATE5] = 0
  431. attr[RoleDefine.STATUS_DIKANG_RATE9] = 0
  432. attr[RoleDefine.AT_PHY_HURT_ADD_RATE] = 0
  433. attr[RoleDefine.AT_MAGIC_HURT_ADD_RATE] = 0
  434. end