HeroArtifacts.lua 36 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222
  1. -- 英雄神威灵装系统
  2. --db
  3. --[=[
  4. heroGrid.artifacts = {
  5. isActive = nil, -- 是否激活,激活后为true
  6. level = 0, -- 当前等级
  7. star = 0, -- 当前星级
  8. effectArr = { --特效
  9. {idx = 1, isLock = 0, lv = 0}
  10. },
  11. effectArrTemp = { --新洗练出且未替换的特效
  12. {idx = 1, lv = 0}
  13. },
  14. beSkillArr = { --被动技能
  15. {idx = 1, isLock = 0}
  16. },
  17. beSkillArrTemp = { --新洗练出且未替换的被动技能
  18. {idx = 1}
  19. },
  20. }
  21. ]=]--
  22. local Msg = require("core.Msg")
  23. local BagLogic = require("bag.BagLogic")
  24. local HeroLogic = require("hero.HeroLogic")
  25. local ObjHuman = require("core.ObjHuman")
  26. local Grid = require("bag.Grid")
  27. local RoleAttr = require("role.RoleAttr")
  28. local RoleDefine = require("role.RoleDefine")
  29. local HeroArtifactsConfig = require("excel.heroArtifacts")
  30. local Util = require("common.Util")
  31. local Lang = require("common.Lang")
  32. local Broadcast = require("broadcast.Broadcast")
  33. local GiftLogic
  34. local LOGTAG = "Artifacts" --日志标识
  35. local function initArtifactsData(heroGrid)
  36. heroGrid.artifacts = {
  37. level = 0,
  38. star = 0
  39. }
  40. end
  41. local function getArtifactsData(heroGrid)
  42. return heroGrid.artifacts
  43. end
  44. local function updateArtifactsState(heroGrid, state)
  45. local artifactsData = getArtifactsData(heroGrid)
  46. if not artifactsData then
  47. initArtifactsData(heroGrid)
  48. artifactsData = getArtifactsData(heroGrid)
  49. end
  50. artifactsData.isActive = state
  51. end
  52. local function upGradeArtifactsLv(heroGrid, addVal)
  53. local artifactsData = getArtifactsData(heroGrid)
  54. if not artifactsData then
  55. initArtifactsData(heroGrid)
  56. artifactsData = getArtifactsData(heroGrid)
  57. end
  58. artifactsData.level = artifactsData.level + addVal
  59. end
  60. local function upGradeArtifactsStar(heroGrid, addVal)
  61. local artifactsData = getArtifactsData(heroGrid)
  62. if not artifactsData then
  63. initArtifactsData(heroGrid)
  64. artifactsData = getArtifactsData(heroGrid)
  65. end
  66. artifactsData.star = artifactsData.star + addVal
  67. end
  68. local function resetArtifactsData(heroGrid)
  69. local artifactsData = getArtifactsData(heroGrid)
  70. artifactsData.level = 0
  71. artifactsData.star = 0
  72. artifactsData.isActive = nil
  73. artifactsData.effectArr = nil
  74. artifactsData.effectArrTemp = nil
  75. artifactsData.beSkillArr = nil
  76. artifactsData.beSkillArrTemp = nil
  77. end
  78. -- 是否开启
  79. local function isOpen(heroGrid)
  80. local varCfg = HeroArtifactsConfig.Var[1]
  81. if heroGrid.star < varCfg.openStarCond then
  82. return false
  83. end
  84. return true
  85. end
  86. -- 是否激活
  87. local function isActivate(heroGrid)
  88. local artifactsData = getArtifactsData(heroGrid)
  89. return artifactsData and artifactsData.isActive
  90. end
  91. -- 计算当前等级/星级的属性总加成
  92. local function calcAttrs(conf, currentStage)
  93. local attrList = {}
  94. for i=1, currentStage do
  95. local t = conf[i]
  96. local attrArr = t and t.attrArr
  97. for _, attrInfo in ipairs(attrArr or {}) do
  98. local attrId, attrVal = attrInfo[1],attrInfo[2]
  99. attrList[attrId] = (attrList[attrId] or 0) + attrVal
  100. end
  101. end
  102. return attrList
  103. end
  104. -- 获取神威灵装激活消耗
  105. local function getActivateCost()
  106. local varCfg = HeroArtifactsConfig.Var[1]
  107. local activateCostTb = varCfg.activateCost
  108. return activateCostTb[1][1],activateCostTb[1][2]
  109. end
  110. -- 获取等级/星级下一阶段的消耗
  111. local function getNextStageCost(currentStage, tp, isMax)
  112. local varCfg = HeroArtifactsConfig.Var[1]
  113. local itemId = varCfg.upGradeLvCostId
  114. local itemCnt = 0
  115. local upGradeCfg = HeroArtifactsConfig.UpGradeLv
  116. if tp == 2 then
  117. itemId = varCfg.upGradeStarCostId
  118. upGradeCfg = HeroArtifactsConfig.UpGradeStar
  119. end
  120. if not isMax then
  121. local nextStageCfg = upGradeCfg[currentStage+1]
  122. itemCnt = nextStageCfg.costCnt
  123. end
  124. return itemId, itemCnt
  125. end
  126. -- 获取升到当前等级/星级的总消耗
  127. local function getTaotalStageCost(currentStage, tp)
  128. local varCfg = HeroArtifactsConfig.Var[1]
  129. local itemId = varCfg.upGradeLvCostId
  130. local itemCnt = 0
  131. local upGradeCfg = HeroArtifactsConfig.UpGradeLv
  132. if tp == 2 then
  133. itemId = varCfg.upGradeStarCostId
  134. upGradeCfg = HeroArtifactsConfig.UpGradeStar
  135. end
  136. for i=1, currentStage do
  137. local stageCfg = upGradeCfg[i]
  138. itemCnt = itemCnt + stageCfg.costCnt
  139. end
  140. return itemId, itemCnt
  141. end
  142. -- 填充激活灵装协议结构数据
  143. local function populateActivateCostMsg(net)
  144. -- local varCfg = HeroArtifactsConfig.Var[1]
  145. -- local activateCostTb = varCfg.activateCost
  146. -- net[0] = #activateCostTb
  147. -- for k,v in ipairs(activateCostTb) do
  148. -- Grid.makeItem(net[k], v[1], v[2])
  149. -- end
  150. local itemId, itemCnt = getActivateCost()
  151. Grid.makeItem(net, itemId, itemCnt)
  152. end
  153. -- 填充灵装当前等级/星级总加成属性协议结构数据
  154. local function populateTotalAttrMsg(net, n, tp)
  155. local t
  156. if tp == 1 then
  157. t = HeroArtifactsConfig.UpGradeLv
  158. else
  159. t = HeroArtifactsConfig.UpGradeStar
  160. end
  161. local stage = n
  162. if n <= 0 then
  163. stage = 1
  164. end
  165. local attrList = calcAttrs(t, stage)
  166. net[0] = 0
  167. local len = 0
  168. for attrId, attrVal in pairs(attrList) do
  169. len = len + 1
  170. net[0] = len
  171. net[len].key = attrId
  172. net[len].value = n <= 0 and 0 or attrVal
  173. end
  174. end
  175. -- 填充灵装下一等级/星级加成属性协议结构数据
  176. local function populateNextAttrMsg(net, n, tp, isMax)
  177. local t
  178. if tp == 1 then
  179. t = HeroArtifactsConfig.UpGradeLv
  180. else
  181. t = HeroArtifactsConfig.UpGradeStar
  182. end
  183. net[0] = 0
  184. local cfg = t[n]
  185. local attrArrCfg = cfg and cfg.attrArr
  186. for k,v in ipairs(attrArrCfg or {}) do
  187. net[0] = k
  188. net[k].key = v[1]
  189. net[k].value = isMax and 0 or v[2]
  190. end
  191. end
  192. -- 判断属性是否是绝对值属性
  193. local function isAbsAttr(attrId)
  194. return RoleDefine.isAbsAttr(attrId)
  195. end
  196. -- 填充灵装特效协议结构数据
  197. local function populateEffectMsg(net, arr)
  198. for k, v in ipairs(arr) do
  199. net[0] = k
  200. local cfg = HeroArtifactsConfig.EffectList[v.idx]
  201. net[k].idx = v.idx
  202. net[k].name = cfg.effectName
  203. net[k].desc = cfg.effectDesc
  204. net[k].isLock = v.isLock or 0
  205. net[k].isActivate = 1
  206. net[k].activateStarCond = 1
  207. net[k].level = v.lv
  208. local attrVal = cfg.effectAttrValArr[v.lv] or 0
  209. if not isAbsAttr(cfg.effectAttrId) then
  210. attrVal = attrVal / 100
  211. end
  212. net[k].desc = Util.format(cfg.effectDesc, attrVal)
  213. end
  214. end
  215. -- 填充灵装被动技能协议结构数据
  216. local function populateBeSkillMsg(net, arr)
  217. local varCfg = HeroArtifactsConfig.Var[1]
  218. for i, activateBeSkillStar in ipairs(varCfg.activateBeSkillStarList) do
  219. net[0] = i
  220. net[i].idx = i
  221. net[i].name = ""
  222. net[i].desc = ""
  223. net[i].isLock = 0
  224. net[i].isActivate = 0
  225. net[i].activateStarCond = activateBeSkillStar
  226. net[i].level = 0
  227. if arr and arr[i] then
  228. local beSkillData = arr[i]
  229. local cfg = HeroArtifactsConfig.BeSkillList[beSkillData.idx]
  230. net[i].name = cfg.skillName
  231. net[i].desc = cfg.skillDesc
  232. net[i].isLock = beSkillData.isLock or 0
  233. net[i].isActivate = 1
  234. end
  235. end
  236. end
  237. -- 计算特效/被动技能的锁定数量
  238. local function calcLockNum(arr)
  239. local lockNum = 0
  240. for _, v in ipairs(arr or {}) do
  241. if v.isLock and v.isLock == 1 then
  242. lockNum = lockNum + 1
  243. end
  244. end
  245. return lockNum
  246. end
  247. -- 计算特效/被动技能洗练需要消耗的道具
  248. local function calcRefineCost(data, costIdArr, costNumArr)
  249. if not costIdArr or not costNumArr then
  250. return
  251. end
  252. if #costIdArr ~= #costNumArr then
  253. return
  254. end
  255. local lockNum = calcLockNum(data)
  256. lockNum = lockNum + 1
  257. local itemList = {}
  258. for i=1, #costIdArr do
  259. local itemId = costIdArr[i]
  260. local itemCntArr = costNumArr[i]
  261. local itemCnt = itemCntArr and itemCntArr[lockNum]
  262. if not itemId or not itemCnt then
  263. return
  264. end
  265. itemList[itemId] = (itemList[itemId] or 0) + itemCnt
  266. end
  267. return itemList
  268. end
  269. -- 生成要排除的特效/被动技能列表
  270. local function genExcludeList(arr, lockCond)
  271. if not arr then
  272. return
  273. end
  274. local excludeList = {}
  275. for _, v in ipairs(arr) do
  276. if not lockCond or (lockCond and v.isLock == 1) then
  277. excludeList[v.idx] = true
  278. end
  279. end
  280. return excludeList
  281. end
  282. -- 随机一个特效/被动技能
  283. local function randEffect(conf, excludeList)
  284. local totalWeight = 0
  285. local arr = {}
  286. for k,v in ipairs(conf) do
  287. if not excludeList or not excludeList[k] then
  288. totalWeight = totalWeight + v.weight
  289. arr[#arr+1] = {weight = v.weight, idx = k}
  290. end
  291. end
  292. local weight = 0
  293. local randVal = math.random(1, totalWeight)
  294. for _, v in ipairs(arr) do
  295. weight = weight + v.weight
  296. if randVal <= weight then
  297. return v.idx
  298. end
  299. end
  300. end
  301. -- 随机一个特效的等级
  302. local function randEffectLv()
  303. local totalWeight = 0
  304. for k,v in ipairs(HeroArtifactsConfig.EffectLvProb) do
  305. totalWeight = totalWeight + v.weight
  306. end
  307. local weight = 0
  308. local randVal = math.random(1, totalWeight)
  309. for _, v in ipairs(HeroArtifactsConfig.EffectLvProb) do
  310. weight = weight + v.weight
  311. if randVal <= weight then
  312. return v.level
  313. end
  314. end
  315. end
  316. -- 更新战力
  317. local function updatePower(human)
  318. RoleAttr.cleanHeroAttrCache(human)
  319. ObjHuman.doCalc(human)
  320. ObjHuman.sendAttr(human, RoleDefine.ZHANDOULI)
  321. end
  322. -- 刷新红点
  323. local function updateRedDot(human, heroGrid)
  324. HeroLogic.refreshDot(human, heroGrid.uuid)
  325. end
  326. -- 刷新战力和红点
  327. local function updatePowerAndRedDot(human, heroGrid)
  328. -- 更新战力
  329. RoleAttr.cleanHeroAttrCache(human)
  330. ObjHuman.doCalc(human)
  331. ObjHuman.sendAttr(human, RoleDefine.ZHANDOULI)
  332. -- 刷新红点
  333. HeroLogic.refreshDot(human, heroGrid.uuid)
  334. end
  335. -- 获取神威灵装的被动技能
  336. function GetArtifactsBeSkillList(heroGrid)
  337. if not heroGrid or not heroGrid.artifacts then
  338. return
  339. end
  340. local beSkillArr = heroGrid.artifacts.beSkillArr
  341. if not beSkillArr then
  342. return
  343. end
  344. local skillArr
  345. for _, skillInfo in ipairs(beSkillArr) do
  346. local cfgIdx = skillInfo.idx
  347. local skillCfg = HeroArtifactsConfig.BeSkillList[cfgIdx]
  348. if skillCfg and skillCfg.skillType == 2 then
  349. skillArr = skillArr or {}
  350. skillArr[#skillArr+1] = skillCfg.skillId
  351. end
  352. end
  353. return skillArr
  354. end
  355. -- 获取神威灵装对符文/战意的属性加成列表
  356. function GetFuwenStrengthenAttrList(heroGrid)
  357. if not heroGrid or not heroGrid.artifacts then
  358. return
  359. end
  360. local beSkillArr = heroGrid.artifacts.beSkillArr
  361. if not beSkillArr then
  362. return
  363. end
  364. local skillId_2_Attr = nil
  365. for _, skillInfo in ipairs(beSkillArr) do
  366. local skillCfg = HeroArtifactsConfig.BeSkillList[skillInfo.idx]
  367. if skillCfg and skillCfg.skillType == 1 and next(skillCfg.attr) then
  368. local attrArr = {}
  369. for i, attrInfo in ipairs(skillCfg.attr) do
  370. attrArr[i] = {attrInfo[1], attrInfo[2]}
  371. end
  372. skillId_2_Attr = skillId_2_Attr or {}
  373. for _, fuwenSkillId in ipairs(skillCfg.fuwenSkillIdArr) do
  374. skillId_2_Attr[fuwenSkillId] = attrArr
  375. end
  376. end
  377. end
  378. return skillId_2_Attr
  379. end
  380. -- 获取神威灵装对符文/战意的强化技能列表
  381. function GetFuwenStrengthenSkillList(heroGrid)
  382. if not heroGrid or not heroGrid.artifacts then
  383. return
  384. end
  385. local beSkillArr = heroGrid.artifacts.beSkillArr
  386. if not beSkillArr then
  387. return
  388. end
  389. local skillId_2_strengthenSkillId = nil
  390. for _, skillInfo in ipairs(beSkillArr) do
  391. local skillCfg = HeroArtifactsConfig.BeSkillList[skillInfo.idx]
  392. if skillCfg and skillCfg.skillType == 1 and next(skillCfg.strengthenSkillIdArr) then
  393. skillId_2_strengthenSkillId = skillId_2_strengthenSkillId or {}
  394. for i, fuwenSkillId in ipairs(skillCfg.fuwenSkillIdArr) do
  395. skillId_2_strengthenSkillId[fuwenSkillId] = skillCfg.strengthenSkillIdArr[i]
  396. end
  397. end
  398. end
  399. return skillId_2_strengthenSkillId
  400. end
  401. -- 神威灵装加成
  402. function doCalcHero(human, heroGrid, addAttrs)
  403. if not heroGrid or not heroGrid.artifacts then
  404. return
  405. end
  406. local artifactsData = heroGrid.artifacts
  407. if artifactsData.level > 0 then
  408. local attrList = calcAttrs(HeroArtifactsConfig.UpGradeLv, artifactsData.level)
  409. for attrId, attrVal in pairs(attrList) do
  410. RoleAttr.updateValue(attrId, attrVal, addAttrs)
  411. end
  412. end
  413. if artifactsData.star > 0 then
  414. local attrList = calcAttrs(HeroArtifactsConfig.UpGradeStar, artifactsData.star)
  415. for attrId, attrVal in pairs(attrList) do
  416. RoleAttr.updateValue(attrId, attrVal, addAttrs)
  417. end
  418. end
  419. -- 特效
  420. if artifactsData.effectArr then
  421. for _, effectInfo in ipairs(artifactsData.effectArr) do
  422. local effectCfg = HeroArtifactsConfig.EffectList[effectInfo.idx]
  423. if effectCfg then
  424. local effectLv = effectInfo.lv
  425. local attrId = effectCfg.effectAttrId
  426. local attrVal = effectCfg.effectAttrValArr[effectLv] or 0
  427. RoleAttr.updateValue(attrId, attrVal, addAttrs)
  428. end
  429. end
  430. end
  431. end
  432. -- 红点判断
  433. function isArtifactsDot(human, heroGrid)
  434. if not isOpen(heroGrid) then
  435. return false
  436. end
  437. if not isActivate(heroGrid) then
  438. local varCfg = HeroArtifactsConfig.Var[1]
  439. local activateCostTb = varCfg.activateCost
  440. local itemId, itemCnt = activateCostTb[1][1], activateCostTb[1][2]
  441. if BagLogic.getItemCnt(human, itemId) >= itemCnt then
  442. return true
  443. end
  444. return false
  445. end
  446. local artifactsData = getArtifactsData(heroGrid)
  447. local currentLevel = artifactsData and artifactsData.level or 0
  448. local maxLevel = HeroArtifactsConfig.UpGradeLv[#HeroArtifactsConfig.UpGradeLv].level
  449. if currentLevel < maxLevel then
  450. local itemId, itemCnt = getNextStageCost(currentLevel, 1)
  451. if BagLogic.getItemCnt(human, itemId) >= itemCnt then
  452. return true
  453. end
  454. end
  455. local currentStar = artifactsData and artifactsData.star or 0
  456. local maxStar = HeroArtifactsConfig.UpGradeStar[#HeroArtifactsConfig.UpGradeStar].star
  457. if currentStar < maxStar then
  458. local itemId, itemCnt = getNextStageCost(currentStar, 2)
  459. if BagLogic.getItemCnt(human, itemId) >= itemCnt then
  460. return true
  461. end
  462. end
  463. return false
  464. end
  465. -- 返还材料计算
  466. function CalcReturnItem(human, heroGrid)
  467. if not isOpen(heroGrid) then
  468. return
  469. end
  470. if not isActivate(heroGrid) then
  471. return
  472. end
  473. local artifactsData = getArtifactsData(heroGrid)
  474. local itemList = {}
  475. local itemId, itemCnt = getActivateCost()
  476. itemList[itemId] = (itemList[itemId] or 0) + itemCnt
  477. if artifactsData and artifactsData.level > 0 then
  478. itemId, itemCnt = getTaotalStageCost(artifactsData.level, 1)
  479. itemList[itemId] = (itemList[itemId] or 0) + itemCnt
  480. end
  481. if artifactsData and artifactsData.star > 0 then
  482. itemId, itemCnt = getTaotalStageCost(artifactsData.star, 2)
  483. itemList[itemId] = (itemList[itemId] or 0) + itemCnt
  484. end
  485. return itemList
  486. end
  487. -- 重置神威灵装数据
  488. function ResetArtifactsData(human, heroGrid)
  489. if not isOpen(heroGrid) then
  490. return
  491. end
  492. if not isActivate(heroGrid) then
  493. return
  494. end
  495. resetArtifactsData(heroGrid)
  496. end
  497. -- 神威灵装基础信息查询
  498. function HeroArtifacts_Base_Query(human, heroID, heroIndex)
  499. local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)
  500. if not heroGrid then
  501. return Broadcast.sendErr(human, Lang.FUWEN_HERO_GRID_ERR)
  502. end
  503. if not isOpen(heroGrid) then
  504. return Broadcast.sendErr(human, Lang.HEROPUB_STAR_NOT_ENOUGH)
  505. end
  506. local artifactsData = getArtifactsData(heroGrid)
  507. local currentLevel = artifactsData and artifactsData.level or 0
  508. local currentStar = artifactsData and artifactsData.star or 0
  509. local msgRet = Msg.gc.GC_HEROARTIFACTS_BASE_QUERY
  510. msgRet.artifactsLv = currentLevel
  511. msgRet.artifactsStar = currentStar
  512. msgRet.nowLevelAttrs[0] = 0
  513. msgRet.nowStarAttrs[0] = 0
  514. msgRet.effectArr[0] = 0
  515. msgRet.beSkillArr[0] = 0
  516. msgRet.isActivate = isActivate(heroGrid) and 1 or 0
  517. populateActivateCostMsg(msgRet.ActivateCost)
  518. populateTotalAttrMsg(msgRet.nowLevelAttrs, currentLevel, 1)
  519. populateTotalAttrMsg(msgRet.nowStarAttrs, currentStar, 2)
  520. if artifactsData and artifactsData.effectArr then
  521. populateEffectMsg(msgRet.effectArr, artifactsData.effectArr)
  522. end
  523. populateBeSkillMsg(msgRet.beSkillArr, artifactsData and artifactsData.beSkillArr)
  524. Msg.send(msgRet, human.fd)
  525. end
  526. -- 激活神威灵装
  527. function HeroArtifacts_Activate(human, heroID, heroIndex)
  528. local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)
  529. if not heroGrid then
  530. return Broadcast.sendErr(human, Lang.FUWEN_HERO_GRID_ERR)
  531. end
  532. if not isOpen(heroGrid) then
  533. return Broadcast.sendErr(human, Lang.HEROPUB_STAR_NOT_ENOUGH)
  534. end
  535. if isActivate(heroGrid) then
  536. return Broadcast.sendErr(human, Lang.BINGSHU_LEARN_ERR_HAD)
  537. end
  538. local itemId, itemCnt = getActivateCost()
  539. if BagLogic.getItemCnt(human, itemId) < itemCnt then
  540. return Broadcast.sendErr(human, Lang.COMMON_ITEM_NOT_ENOUGH)
  541. end
  542. BagLogic.delItem(human, itemId, itemCnt, LOGTAG)
  543. updateArtifactsState(heroGrid, true)
  544. HeroArtifacts_Base_Query(human, heroID, heroIndex)
  545. -- 弹窗礼包
  546. GiftLogic = GiftLogic or require("topup.GiftLogic")
  547. GiftLogic.trigger(human, GiftLogic.GIFT_ARTIFACTS_OPEN, {currentVal = 0}, GiftLogic.GIFT_SEC_TYPE3)
  548. end
  549. -- 神威灵装升级信息查询
  550. function HeroArtifacts_Lv_Query(human, heroID, heroIndex)
  551. local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)
  552. if not heroGrid then
  553. return Broadcast.sendErr(human, Lang.FUWEN_HERO_GRID_ERR)
  554. end
  555. if not isOpen(heroGrid) then
  556. return Broadcast.sendErr(human, Lang.HEROPUB_STAR_NOT_ENOUGH)
  557. end
  558. if not isActivate(heroGrid) then
  559. return Broadcast.sendErr(human, Lang.HERO_AF_NOT_ACTIVATE)
  560. end
  561. local artifactsData = getArtifactsData(heroGrid)
  562. local UpGradeLvCfg = HeroArtifactsConfig.UpGradeLv
  563. local currentLevel = artifactsData and artifactsData.level or 0
  564. local maxLevel = UpGradeLvCfg[#UpGradeLvCfg].level
  565. local isMax = currentLevel >= maxLevel
  566. local nextLevel = isMax and maxLevel or currentLevel + 1
  567. local msgRet = Msg.gc.GC_HEROARTIFACTS_LV_QUERY
  568. msgRet.artifactsLv = currentLevel
  569. msgRet.artifactsLvMax = maxLevel
  570. populateTotalAttrMsg(msgRet.nowLevelAttrs, currentLevel, 1)
  571. populateNextAttrMsg(msgRet.nextLevelAttrs, nextLevel, 1, isMax)
  572. local itemId, itemCnt = getNextStageCost(currentLevel, 1, isMax)
  573. Grid.makeItem(msgRet.cost, itemId, itemCnt)
  574. Msg.send(msgRet, human.fd)
  575. end
  576. -- 神威灵装升级
  577. function HeroArtifacts_UpGrade_Level(human, heroID, heroIndex)
  578. local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)
  579. if not heroGrid then
  580. return Broadcast.sendErr(human, Lang.FUWEN_HERO_GRID_ERR)
  581. end
  582. if not isOpen(heroGrid) then
  583. return Broadcast.sendErr(human, Lang.HEROPUB_STAR_NOT_ENOUGH)
  584. end
  585. if not isActivate(heroGrid) then
  586. return Broadcast.sendErr(human, Lang.HERO_AF_NOT_ACTIVATE)
  587. end
  588. local artifactsData = getArtifactsData(heroGrid)
  589. local currentLevel = artifactsData and artifactsData.level or 0
  590. local UpGradeLvCfg = HeroArtifactsConfig.UpGradeLv
  591. local maxLevel = UpGradeLvCfg[#UpGradeLvCfg].level
  592. if currentLevel >= maxLevel then
  593. return Broadcast.sendErr(human, Lang.HERO_AF_LV_MAX)
  594. end
  595. local itemId, itemCnt = getNextStageCost(currentLevel, 1)
  596. if BagLogic.getItemCnt(human, itemId) < itemCnt then
  597. return Broadcast.sendErr(human, Lang.COMMON_ITEM_NOT_ENOUGH)
  598. end
  599. BagLogic.delItem(human, itemId, itemCnt, LOGTAG)
  600. upGradeArtifactsLv(heroGrid, 1)
  601. HeroArtifacts_Lv_Query(human, heroID, heroIndex)
  602. updatePowerAndRedDot(human, heroGrid)
  603. end
  604. -- 神威灵装升星信息查询
  605. function HeroArtifacts_Star_Query(human, heroID, heroIndex)
  606. local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)
  607. if not heroGrid then
  608. return Broadcast.sendErr(human, Lang.FUWEN_HERO_GRID_ERR)
  609. end
  610. if not isOpen(heroGrid) then
  611. return Broadcast.sendErr(human, Lang.HEROPUB_STAR_NOT_ENOUGH)
  612. end
  613. if not isActivate(heroGrid) then
  614. return Broadcast.sendErr(human, Lang.HERO_AF_NOT_ACTIVATE)
  615. end
  616. local artifactsData = getArtifactsData(heroGrid)
  617. local upGradeStarCfg = HeroArtifactsConfig.UpGradeStar
  618. local currentStar = artifactsData and artifactsData.star or 0
  619. local maxStar = upGradeStarCfg[#upGradeStarCfg].star
  620. local isMax = currentStar >= maxStar
  621. local nextStar = isMax and maxStar or currentStar + 1
  622. local msgRet = Msg.gc.GC_HEROARTIFACTS_STAR_QUERY
  623. msgRet.artifactsStar = currentStar
  624. msgRet.artifactsStarMax = maxStar
  625. populateTotalAttrMsg(msgRet.nowStarAttrs, currentStar, 2)
  626. populateNextAttrMsg(msgRet.nextStarAttrs, nextStar, 2, isMax)
  627. local itemId, itemCnt = getNextStageCost(currentStar, 2, isMax)
  628. Grid.makeItem(msgRet.cost, itemId, itemCnt)
  629. if artifactsData and artifactsData.effectArr then
  630. populateEffectMsg(msgRet.effectArr, artifactsData.effectArr)
  631. end
  632. populateBeSkillMsg(msgRet.beSkillArr, artifactsData and artifactsData.beSkillArr)
  633. Msg.send(msgRet, human.fd)
  634. end
  635. -- 神威灵装升星
  636. function HeroArtifacts_UpGrade_Star(human, heroID, heroIndex)
  637. local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)
  638. if not heroGrid then
  639. return Broadcast.sendErr(human, Lang.FUWEN_HERO_GRID_ERR)
  640. end
  641. if not isOpen(heroGrid) then
  642. return Broadcast.sendErr(human, Lang.HEROPUB_STAR_NOT_ENOUGH)
  643. end
  644. if not isActivate(heroGrid) then
  645. return Broadcast.sendErr(human, Lang.HERO_AF_NOT_ACTIVATE)
  646. end
  647. local artifactsData = getArtifactsData(heroGrid)
  648. local currentStar = artifactsData and artifactsData.star or 0
  649. local upGradeStarCfg = HeroArtifactsConfig.UpGradeStar
  650. local maxStar = upGradeStarCfg[#upGradeStarCfg].star
  651. if currentStar >= maxStar then
  652. return Broadcast.sendErr(human, Lang.HERO_AF_LV_STAR)
  653. end
  654. local itemId, itemCnt = getNextStageCost(currentStar, 2)
  655. if BagLogic.getItemCnt(human, itemId) < itemCnt then
  656. return Broadcast.sendErr(human, Lang.COMMON_ITEM_NOT_ENOUGH)
  657. end
  658. BagLogic.delItem(human, itemId, itemCnt, LOGTAG)
  659. upGradeArtifactsStar(heroGrid, 1)
  660. local nextStar = currentStar + 1
  661. local varCfg = HeroArtifactsConfig.Var[1]
  662. -- 激活新的特效
  663. if table.find(varCfg.activateEffectStarList, nextStar) then
  664. local excludeList = nil
  665. if artifactsData.effectArr then
  666. excludeList = genExcludeList(artifactsData.effectArr)
  667. end
  668. local effectIdx = randEffect(HeroArtifactsConfig.EffectList, excludeList)
  669. if not effectIdx then
  670. return Broadcast.sendErr(human, Lang.COMMON_COMFIG_ERROR)
  671. end
  672. local effectLv = randEffectLv()
  673. if not effectLv then
  674. return Broadcast.sendErr(human, Lang.COMMON_COMFIG_ERROR)
  675. end
  676. artifactsData.effectArr = artifactsData.effectArr or {}
  677. table.insert(artifactsData.effectArr, {idx = effectIdx, lv = effectLv})
  678. -- 处理新获得特效后,可能导致洗练界面两边数量不一致的情况
  679. if artifactsData.effectArrTemp then
  680. table.insert(artifactsData.effectArrTemp, {idx = effectIdx, lv = effectLv})
  681. end
  682. end
  683. -- 激活新的被动技能
  684. if table.find(varCfg.activateBeSkillStarList, nextStar) then
  685. local excludeList = nil
  686. if artifactsData.beSkillArr then
  687. excludeList = genExcludeList(artifactsData.beSkillArr)
  688. end
  689. local beSkillIdx = randEffect(HeroArtifactsConfig.BeSkillList, excludeList)
  690. if not beSkillIdx then
  691. return Broadcast.sendErr(human, Lang.COMMON_COMFIG_ERROR)
  692. end
  693. artifactsData.beSkillArr = artifactsData.beSkillArr or {}
  694. table.insert(artifactsData.effectArr, {idx = beSkillIdx} )
  695. -- 处理新获得被动技能后,可能导致洗练界面两边数量不一致的情况
  696. if artifactsData.beSkillArrTemp then
  697. table.insert(artifactsData.beSkillArrTemp, {idx = beSkillIdx} )
  698. end
  699. end
  700. HeroArtifacts_Star_Query(human, heroID, heroIndex)
  701. updatePowerAndRedDot(human, heroGrid)
  702. -- 弹窗礼包
  703. GiftLogic = GiftLogic or require("topup.GiftLogic")
  704. GiftLogic.trigger(human, GiftLogic.GIFT_ARTIFACTS_UPGRADE_STAR, {currentVal = nextStar}, GiftLogic.GIFT_SEC_TYPE3)
  705. end
  706. -- 神威灵装特效洗练信息查询
  707. function HeroArtifacts_EffectRefine_Query(human, heroID, heroIndex)
  708. local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)
  709. if not heroGrid then
  710. return Broadcast.sendErr(human, Lang.FUWEN_HERO_GRID_ERR)
  711. end
  712. if not isOpen(heroGrid) then
  713. return Broadcast.sendErr(human, Lang.HEROPUB_STAR_NOT_ENOUGH)
  714. end
  715. if not isActivate(heroGrid) then
  716. return Broadcast.sendErr(human, Lang.HERO_AF_NOT_ACTIVATE)
  717. end
  718. local artifactsData = getArtifactsData(heroGrid)
  719. local msgRet = Msg.gc.GC_HEROARTIFACTS_EFFECT_REFINE_QUERY
  720. msgRet.effectArr[0] = 0
  721. msgRet.effectArrTemp[0] = 0
  722. if artifactsData and artifactsData.effectArr then
  723. populateEffectMsg(msgRet.effectArr, artifactsData.effectArr)
  724. end
  725. if artifactsData and artifactsData.effectArrTemp then
  726. populateEffectMsg(msgRet.effectArrTemp, artifactsData.effectArrTemp)
  727. end
  728. msgRet.cost[0] = 0
  729. local varCfg = HeroArtifactsConfig.Var[1]
  730. local itemList = calcRefineCost(artifactsData and artifactsData.effectArr, varCfg.lockEffectCostIdList, varCfg.lockEffectCostNumList)
  731. if not itemList then
  732. return Broadcast.sendErr(human, Lang.DATA_ERR)
  733. end
  734. local len = 0
  735. for itemId, itemCnt in pairs(itemList) do
  736. len = len + 1
  737. msgRet.cost[0] = len
  738. Grid.makeItem(msgRet.cost[len], itemId, itemCnt)
  739. end
  740. Msg.send(msgRet, human.fd)
  741. end
  742. -- 锁定/解锁神威灵装特效
  743. function HeroArtifacts_Effect_Lock(human, heroID, heroIndex, effectIdxArr)
  744. local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)
  745. if not heroGrid then
  746. return Broadcast.sendErr(human, Lang.FUWEN_HERO_GRID_ERR)
  747. end
  748. if not isOpen(heroGrid) then
  749. return Broadcast.sendErr(human, Lang.HEROPUB_STAR_NOT_ENOUGH)
  750. end
  751. if not isActivate(heroGrid) then
  752. return Broadcast.sendErr(human, Lang.HERO_AF_NOT_ACTIVATE)
  753. end
  754. local artifactsData = getArtifactsData(heroGrid)
  755. if not artifactsData or not artifactsData.effectArr then
  756. return Broadcast.sendErr(human, Lang.HERO_AF_NO_EFFECT)
  757. end
  758. if #effectIdxArr >= #artifactsData.effectArr then
  759. return Broadcast.sendErr(human, Lang.HERO_AF_CANNOT_LOCK)
  760. end
  761. for _, v in ipairs(artifactsData.effectArr) do
  762. if table.find(effectIdxArr, v.idx) then
  763. v.isLock = 1
  764. else
  765. v.isLock = 0
  766. end
  767. end
  768. HeroArtifacts_EffectRefine_Query(human, heroID, heroIndex)
  769. end
  770. -- 洗练神威灵装特效
  771. function HeroArtifacts_EffectRefine_Do(human, heroID, heroIndex)
  772. local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)
  773. if not heroGrid then
  774. return Broadcast.sendErr(human, Lang.FUWEN_HERO_GRID_ERR)
  775. end
  776. if not isOpen(heroGrid) then
  777. return Broadcast.sendErr(human, Lang.HEROPUB_STAR_NOT_ENOUGH)
  778. end
  779. if not isActivate(heroGrid) then
  780. return Broadcast.sendErr(human, Lang.HERO_AF_NOT_ACTIVATE)
  781. end
  782. local artifactsData = getArtifactsData(heroGrid)
  783. if not artifactsData or not artifactsData.effectArr then
  784. return Broadcast.sendErr(human, Lang.HERO_AF_NO_EFFECT)
  785. end
  786. local varCfg = HeroArtifactsConfig.Var[1]
  787. local itemList = calcRefineCost(artifactsData.effectArr, varCfg.lockEffectCostIdList, varCfg.lockEffectCostNumList)
  788. if not itemList then
  789. return Broadcast.sendErr(human, Lang.DATA_ERR)
  790. end
  791. for itemId, itemCnt in pairs(itemList) do
  792. if BagLogic.getItemCnt(human, itemId) < itemCnt then
  793. return Broadcast.sendErr(human, Lang.COMMON_ITEM_NOT_ENOUGH)
  794. end
  795. end
  796. for itemId, itemCnt in pairs(itemList) do
  797. BagLogic.delItem(human, itemId, itemCnt, LOGTAG)
  798. end
  799. artifactsData.effectArrTemp = Util.copyTable(artifactsData.effectArr)
  800. for _, effctInfo in ipairs(artifactsData.effectArrTemp) do
  801. if not effctInfo.isLock or effctInfo.isLock == 0 then
  802. local excludeList = genExcludeList(artifactsData.effectArrTemp, true)
  803. local effectIdx = randEffect(HeroArtifactsConfig.EffectList, excludeList)
  804. v.idx = effectIdx
  805. local effectLv = randEffectLv()
  806. v.lv = effectLv
  807. end
  808. end
  809. HeroArtifacts_EffectRefine_Query(human, heroID, heroIndex)
  810. updatePower(human)
  811. end
  812. -- 处理洗练出的神威灵装特效
  813. -- opType: 0-放弃,1-替换
  814. function HeroArtifacts_EffectRefine_Handle(human, heroID, heroIndex, opType)
  815. local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)
  816. if not heroGrid then
  817. return Broadcast.sendErr(human, Lang.FUWEN_HERO_GRID_ERR)
  818. end
  819. if not isOpen(heroGrid) then
  820. return Broadcast.sendErr(human, Lang.HEROPUB_STAR_NOT_ENOUGH)
  821. end
  822. if not isActivate(heroGrid) then
  823. return Broadcast.sendErr(human, Lang.HERO_AF_NOT_ACTIVATE)
  824. end
  825. if opType ~= 0 and opType ~= 1 then
  826. return Broadcast.sendErr(human, Lang.COMMON_ARGUMENT_ERROR)
  827. end
  828. local artifactsData = getArtifactsData(heroGrid)
  829. if not artifactsData or not artifactsData.effectArrTemp then
  830. return Broadcast.sendErr(human, Lang.HERO_AF_NO_REFINE_EFFECT)
  831. end
  832. if opType == 1 then
  833. for i, v in ipairs(artifactsData.effectArrTemp) do
  834. artifactsData.effectArr[i].idx = v.idx
  835. artifactsData.effectArr[i].lv = v.lv
  836. end
  837. end
  838. artifactsData.effectArrTemp = nil
  839. HeroArtifacts_EffectRefine_Query(human, heroID, heroIndex)
  840. updatePower(human)
  841. end
  842. -- 神威灵装被动技能洗练信息查询
  843. function HeroArtifacts_BeSkillRefine_Query(human, heroID, heroIndex)
  844. local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)
  845. if not heroGrid then
  846. return Broadcast.sendErr(human, Lang.FUWEN_HERO_GRID_ERR)
  847. end
  848. if not isOpen(heroGrid) then
  849. return Broadcast.sendErr(human, Lang.HEROPUB_STAR_NOT_ENOUGH)
  850. end
  851. if not isActivate(heroGrid) then
  852. return Broadcast.sendErr(human, Lang.HERO_AF_NOT_ACTIVATE)
  853. end
  854. local artifactsData = getArtifactsData(heroGrid)
  855. local msgRet = Msg.gc.GC_HEROARTIFACTS_BESKILL_REFINE_QUERY
  856. msgRet.beSkillArr[0] = 0
  857. msgRet.beSkillArrTemp[0] = 0
  858. if artifactsData and artifactsData.beSkillArr then
  859. populateBeSkillMsg(msgRet.beSkillArr, artifactsData.beSkillArr)
  860. end
  861. if artifactsData and artifactsData.beSkillArrTemp then
  862. populateBeSkillMsg(msgRet.beSkillArrTemp, artifactsData.beSkillArrTemp)
  863. end
  864. msgRet.cost[0] = 0
  865. local varCfg = HeroArtifactsConfig.Var[1]
  866. local itemList = calcRefineCost(artifactsData and artifactsData.beSkillArr, varCfg.lockBeSkillCostIdList, varCfg.lockBeSkillCostNumList)
  867. if not itemList then
  868. return Broadcast.sendErr(human, Lang.DATA_ERR)
  869. end
  870. local len = 0
  871. for itemId, itemCnt in pairs(itemList) do
  872. len = len + 1
  873. msgRet.cost[0] = len
  874. Grid.makeItem(msgRet.cost[len], itemId, itemCnt)
  875. end
  876. Msg.send(msgRet, human.fd)
  877. end
  878. -- 锁定/解锁神威灵装被动技能
  879. function HeroArtifacts_BeSkill_Lock(human, heroID, heroIndex, beSkillIdxArr)
  880. local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)
  881. if not heroGrid then
  882. return Broadcast.sendErr(human, Lang.FUWEN_HERO_GRID_ERR)
  883. end
  884. if not isOpen(heroGrid) then
  885. return Broadcast.sendErr(human, Lang.HEROPUB_STAR_NOT_ENOUGH)
  886. end
  887. if not isActivate(heroGrid) then
  888. return Broadcast.sendErr(human, Lang.HERO_AF_NOT_ACTIVATE)
  889. end
  890. local artifactsData = getArtifactsData(heroGrid)
  891. if not artifactsData or not artifactsData.beSkillArr then
  892. return Broadcast.sendErr(human, Lang.HERO_AF_NO_BESKILL)
  893. end
  894. if #beSkillIdxArr >= #artifactsData.beSkillArr then
  895. return Broadcast.sendErr(human, Lang.HERO_AF_CANNOT_LOCK)
  896. end
  897. for _, v in ipairs(artifactsData.beSkillArr) do
  898. if table.find(beSkillIdxArr, v.idx) then
  899. v.isLock = 1
  900. else
  901. v.isLock = 0
  902. end
  903. end
  904. HeroArtifacts_BeSkillRefine_Query(human, heroID, heroIndex)
  905. end
  906. -- 洗练神威灵装被动技能
  907. function HeroArtifacts_BeSkillRefine_Do(human, heroID, heroIndex)
  908. local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)
  909. if not heroGrid then
  910. return Broadcast.sendErr(human, Lang.FUWEN_HERO_GRID_ERR)
  911. end
  912. if not isOpen(heroGrid) then
  913. return Broadcast.sendErr(human, Lang.HEROPUB_STAR_NOT_ENOUGH)
  914. end
  915. if not isActivate(heroGrid) then
  916. return Broadcast.sendErr(human, Lang.HERO_AF_NOT_ACTIVATE)
  917. end
  918. local artifactsData = getArtifactsData(heroGrid)
  919. if not artifactsData or not artifactsData.beSkillArr then
  920. return Broadcast.sendErr(human, Lang.HERO_AF_NO_BESKILL)
  921. end
  922. local varCfg = HeroArtifactsConfig.Var[1]
  923. local itemList = calcRefineCost(artifactsData.beSkillArr, varCfg.lockBeSkillCostIdList, varCfg.lockBeSkillCostNumList)
  924. if not itemList then
  925. return Broadcast.sendErr(human, Lang.DATA_ERR)
  926. end
  927. for itemId, itemCnt in pairs(itemList) do
  928. if BagLogic.getItemCnt(human, itemId) < itemCnt then
  929. return Broadcast.sendErr(human, Lang.COMMON_ITEM_NOT_ENOUGH)
  930. end
  931. end
  932. for itemId, itemCnt in pairs(itemList) do
  933. BagLogic.delItem(human, itemId, itemCnt, LOGTAG)
  934. end
  935. artifactsData.beSkillArrTemp = Util.copyTable(artifactsData.beSkillArr)
  936. for _, effctInfo in ipairs(artifactsData.beSkillArrTemp) do
  937. if not effctInfo.isLock or effctInfo.isLock == 0 then
  938. local excludeList = genExcludeList(artifactsData.beSkillArrTemp, true)
  939. local beSkillIdx = randEffect(HeroArtifactsConfig.BeSkillList, excludeList)
  940. v.idx = beSkillIdx
  941. end
  942. end
  943. HeroArtifacts_BeSkillRefine_Query(human, heroID, heroIndex)
  944. updatePower(human)
  945. end
  946. -- 处理洗练出的神威灵装被动技能
  947. -- opType: 0-放弃,1-替换
  948. function HeroArtifacts_BeSkillRefine_Handle(human, heroID, heroIndex, opType)
  949. local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)
  950. if not heroGrid then
  951. return Broadcast.sendErr(human, Lang.FUWEN_HERO_GRID_ERR)
  952. end
  953. if not isOpen(heroGrid) then
  954. return Broadcast.sendErr(human, Lang.HEROPUB_STAR_NOT_ENOUGH)
  955. end
  956. if not isActivate(heroGrid) then
  957. return Broadcast.sendErr(human, Lang.HERO_AF_NOT_ACTIVATE)
  958. end
  959. if opType ~= 0 and opType ~= 1 then
  960. return Broadcast.sendErr(human, Lang.COMMON_ARGUMENT_ERROR)
  961. end
  962. local artifactsData = getArtifactsData(heroGrid)
  963. if not artifactsData or not artifactsData.beSkillArrTemp then
  964. return Broadcast.sendErr(human, Lang.HERO_AF_NO_REFINE_BESKILL)
  965. end
  966. if opType == 1 then
  967. for i, v in ipairs(artifactsData.beSkillArrTemp) do
  968. artifactsData.beSkillArr[i].idx = v.idx
  969. end
  970. end
  971. artifactsData.beSkillArrTemp = nil
  972. HeroArtifacts_BeSkillRefine_Query(human, heroID, heroIndex)
  973. updatePower(human)
  974. end