ElfLogic.lua 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615
  1. -- 精灵系统
  2. --db
  3. --[=[
  4. human.db.elfData = {
  5. [elfId1] = {
  6. level = 0,
  7. star = 0,
  8. },
  9. [elfId2] = {
  10. level = 0,
  11. star = 0,
  12. },
  13. }
  14. ]=]--
  15. local Msg = require("core.Msg")
  16. local Lang = require("common.Lang")
  17. local Broadcast = require("broadcast.Broadcast")
  18. local ElfConfig = require("excel.elf")
  19. local ItemConfig = require("excel.item").item
  20. local Grid = require("bag.Grid")
  21. local BagLogic = require("bag.BagLogic")
  22. local Skill = require("combat.Skill")
  23. local RoleAttr = require("role.RoleAttr")
  24. local RoleDefine = require("role.RoleDefine")
  25. local ObjHuman = require("core.ObjHuman")
  26. local RoleSystemLogic = require("roleSystem.RoleSystemLogic")
  27. local RoleSystemDefine = require("roleSystem.RoleSystemDefine")
  28. local HuanJingTowerLogic = require("huanjingTower.HuanjingTowerLogic")
  29. local TalismanLogic = require("talisman.TalismanLogic")
  30. local TriggerLogic = require("trigger.TriggerLogic")
  31. local TriggerDefine = require("trigger.TriggerDefine")
  32. local ELF_UPGRADELV_LOG_TAG = "elfUpGradeLv"
  33. local ELF_UPGRADESTAR_LOG_TAG = "elfUpGradeStar"
  34. local ELF_COND_TOWER_LEVEL = 600
  35. local function initElfData(human)
  36. human.db.elfData = {}
  37. end
  38. local function getElfData(human)
  39. return human.db.elfData
  40. end
  41. local function updateElfData(human, elfId, newLevel, newStar)
  42. local elfData = getElfData(human)
  43. if not elfData then
  44. initElfData(human)
  45. elfData = getElfData(human)
  46. end
  47. elfData[elfId] = elfData[elfId] or {level = 0, star = 0}
  48. if newLevel then
  49. elfData[elfId].level = newLevel
  50. end
  51. if newStar then
  52. elfData[elfId].star = newStar
  53. end
  54. end
  55. -- 获取来自秘宝的属性倍数加成
  56. local function getAttrMulFromTalisman(human)
  57. local attrMul = TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.Elf_Attr_Mul)
  58. attrMul = attrMul / 100
  59. return attrMul
  60. end
  61. local function getNextStarCostCnt(nextStar)
  62. for _, starCfg in ipairs(ElfConfig.UpGradeStar) do
  63. if nextStar == starCfg.star then
  64. return starCfg.itemCnt
  65. end
  66. end
  67. return 0
  68. end
  69. local function generateCfgByQuality(targetQuality)
  70. local tbl = {}
  71. for id, cfg in ipairs(ElfConfig.Elf) do
  72. if cfg.elfQuality == targetQuality then
  73. tbl[id] = cfg
  74. end
  75. end
  76. if not next(tbl) then
  77. return nil
  78. end
  79. return tbl
  80. end
  81. local function getElfCfgById(targetElfId)
  82. for _, elfCfg in ipairs(ElfConfig.Elf) do
  83. if elfCfg.elfId == targetElfId then
  84. return elfCfg
  85. end
  86. end
  87. end
  88. -- 计算一共可以升多少级, 消耗多少道具
  89. local function calcUpGrade(nowLv, itemAllCnt, maxLv)
  90. local addLv, oldItemAllCnt, itemCostCnt = 0, itemAllCnt, 0
  91. while true do
  92. nowLv = nowLv + 1
  93. if nowLv > maxLv then
  94. break
  95. end
  96. itemCostCnt = nowLv * 3 + 2
  97. if itemAllCnt < itemCostCnt then
  98. break
  99. end
  100. addLv = addLv + 1
  101. itemAllCnt = itemAllCnt - itemCostCnt
  102. end
  103. local useItemCnt = oldItemAllCnt - itemAllCnt
  104. return addLv, useItemCnt
  105. end
  106. -- 计算当前所有精灵的总星级
  107. local function calcAllElfStar(elfDataList)
  108. local stars = 0
  109. for _, elfData in pairs(elfDataList) do
  110. stars = stars + elfData.star
  111. end
  112. return stars
  113. end
  114. -- 计算精灵当前等级加成属性之和
  115. local function calcLvAttr(elfLv, attrCfg)
  116. local nowAttrVal = 0
  117. for i=1, elfLv do
  118. nowAttrVal = nowAttrVal + attrCfg[1] * i + attrCfg[2]
  119. end
  120. return nowAttrVal
  121. end
  122. local function populateMsgSimpleData(net, elfCfg, itemCfg, elfData)
  123. if not net or not elfCfg or not itemCfg then
  124. return
  125. end
  126. local elfNowLv = elfData and elfData.level or 0
  127. local elfNowStar = elfData and elfData.star or 0
  128. net.elfId = elfCfg.elfId
  129. net.elfName = itemCfg.name
  130. net.elfIcon = itemCfg.icon
  131. net.elfLv = elfNowLv
  132. net.elfStar = elfNowStar
  133. net.elfQuality = elfCfg.elfQuality
  134. net.maxLv = elfCfg.elfMaxLv
  135. net.maxStar = elfCfg.elfMaxStar
  136. local upGradeLvItemId = elfCfg.upGradeLvItemId
  137. local upGradeLvItemCnt = elfNowLv >= elfCfg.elfMaxLv and 0 or (elfNowLv + 1) * 3 + 2
  138. Grid.makeItem(net.elfUpGradeLvCost, upGradeLvItemId, upGradeLvItemCnt)
  139. local upGradeStarItemId = elfCfg.upGradeStarItemId
  140. local upGradeStarItemCnt = elfNowStar >= elfCfg.elfMaxStar and 0 or getNextStarCostCnt(elfNowStar+1)
  141. Grid.makeItem(net.elfUpGradeStarCost, upGradeStarItemId, upGradeStarItemCnt)
  142. end
  143. local function populateMsgAttr(attrNet, attrCfg, attrId, elfLv, isMax, attrMul)
  144. local sumAttrVal = calcLvAttr(elfLv, attrCfg)
  145. attrNet.nowAttr.key = attrId
  146. attrNet.nowAttr.value = sumAttrVal * (1 + attrMul)
  147. attrNet.addAtrr.key = attrId
  148. attrNet.addAtrr.value = (attrCfg[1] * (elfLv + 1) + attrCfg[2]) * (1 + attrMul)
  149. if isMax then
  150. attrNet.addAtrr.value = 0
  151. end
  152. end
  153. local function populateMsgAttr2(attrNet, attrId, attrVal, elfStar, isMax, attrMul)
  154. attrMul = 1 + attrMul
  155. attrNet.nowAttr.key = attrId
  156. attrNet.nowAttr.value = attrVal * elfStar * attrMul
  157. attrNet.addAtrr.key = attrId
  158. attrNet.addAtrr.value = attrVal
  159. if isMax then
  160. attrNet.addAtrr.value = 0
  161. end
  162. end
  163. --是否开启本系统
  164. local function isOpen(human)
  165. local towerLevel = HuanJingTowerLogic.getTowerLevel(human)
  166. if towerLevel >= ELF_COND_TOWER_LEVEL then
  167. return true
  168. end
  169. return false
  170. end
  171. -- 重算战力
  172. local function updatePower(human)
  173. RoleAttr.cleanHeroAttrCache(human)
  174. RoleAttr.doCalc(human)
  175. ObjHuman.sendAttr(human, RoleDefine.ZHANDOULI)
  176. end
  177. --红点判断
  178. local function dotJudgment(human, cfgHtbl)
  179. local elfData = getElfData(human)
  180. for _, cfg in pairs(cfgHtbl) do
  181. local nowLevel, nowStar = 0, 0
  182. if elfData and elfData[cfg.elfId] then
  183. nowLevel = elfData[cfg.elfId].level
  184. nowStar = elfData[cfg.elfId].star
  185. end
  186. if nowStar < cfg.elfMaxStar then
  187. local upGradeStarCostCnt = getNextStarCostCnt(nowStar+1)
  188. if BagLogic.getItemCnt(human, cfg.upGradeStarItemId) >= upGradeStarCostCnt then
  189. return true
  190. end
  191. end
  192. -- 需要精灵可激活或已激活
  193. if nowStar >= 1 and nowLevel < cfg.elfMaxLv then
  194. nowLevel = nowLevel + 1
  195. local costItemCnt = nowLevel * 3 + 2
  196. if BagLogic.getItemCnt(human, cfg.upGradeLvItemId) >= costItemCnt then
  197. return true
  198. end
  199. end
  200. end
  201. return false
  202. end
  203. -- 红点更新
  204. local function updateDot(human, targetQuality)
  205. local cfgHtbl = generateCfgByQuality(targetQuality)
  206. -- 该品质的所有精灵不能升星和升级了
  207. if not dotJudgment(human, cfgHtbl) then
  208. local dotID = 0
  209. if targetQuality == 1 then
  210. dotID = RoleSystemDefine.ROLE_SYS_ID_2032
  211. elseif targetQuality == 2 then
  212. dotID = RoleSystemDefine.ROLE_SYS_ID_2033
  213. elseif targetQuality == 3 then
  214. dotID = RoleSystemDefine.ROLE_SYS_ID_2034
  215. else
  216. dotID = RoleSystemDefine.ROLE_SYS_ID_2035
  217. end
  218. --刷新单页
  219. RoleSystemLogic.onDot(human, dotID)
  220. --刷新入口处
  221. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_2031)
  222. end
  223. end
  224. -- 外部调用,精灵加成
  225. function doCalcHero(human, addAttrs)
  226. if not human or not human.db then
  227. return
  228. end
  229. local elfData = getElfData(human)
  230. if not elfData then
  231. return
  232. end
  233. local attrMul = getAttrMulFromTalisman(human)
  234. attrMul = 1 + attrMul
  235. for elfId, singleElfData in pairs(elfData) do
  236. local elfCfg = getElfCfgById(elfId)
  237. if elfCfg then
  238. -- 等级加成
  239. if singleElfData.level > 0 then
  240. local atkVal = calcLvAttr(singleElfData.level, elfCfg.nAttack1)
  241. local hpVal = calcLvAttr(singleElfData.level, elfCfg.nLife1)
  242. RoleAttr.updateValue(RoleDefine.ATK, atkVal * attrMul, addAttrs)
  243. RoleAttr.updateValue(RoleDefine.HP, hpVal * attrMul, addAttrs)
  244. end
  245. -- 星级加成
  246. RoleAttr.updateValue(RoleDefine.ATK, elfCfg.nAttack2 * singleElfData.star * attrMul, addAttrs)
  247. RoleAttr.updateValue(RoleDefine.HP, elfCfg.nLife2 * singleElfData.star * attrMul, addAttrs)
  248. RoleAttr.updateValue(RoleDefine.DEF, elfCfg.nDefense2 * singleElfData.star * attrMul, addAttrs)
  249. RoleAttr.updateValue(RoleDefine.SPEED, elfCfg.nSpeed2 * singleElfData.star * attrMul, addAttrs)
  250. end
  251. end
  252. end
  253. -- 外部调用, 本系统是否开启
  254. function ModuleisOpen(human)
  255. return isOpen(human)
  256. end
  257. -- 外部调用, 是否有红点
  258. function isDot(human, dotConfig)
  259. if not isOpen(human) then
  260. return false
  261. end
  262. --入口处的红点判断
  263. if dotConfig.id == RoleSystemDefine.ROLE_SYS_ID_2031 then
  264. return dotJudgment(human, ElfConfig.Elf)
  265. else
  266. --单个分页的红点
  267. local elfQuality = 0
  268. if dotConfig.id == RoleSystemDefine.ROLE_SYS_ID_2032 then
  269. elfQuality = 1
  270. elseif dotConfig.id == RoleSystemDefine.ROLE_SYS_ID_2033 then
  271. elfQuality = 2
  272. elseif dotConfig.id == RoleSystemDefine.ROLE_SYS_ID_2034 then
  273. elfQuality = 3
  274. else
  275. elfQuality = 4
  276. end
  277. local cfgHtbl = generateCfgByQuality(elfQuality)
  278. if not cfgHtbl then
  279. return false
  280. end
  281. return dotJudgment(human, cfgHtbl)
  282. end
  283. end
  284. -- 外部调用,是否激活了精灵
  285. function IsActivateElf(human, elfId)
  286. if not isOpen(human) then
  287. return false
  288. end
  289. local elfData = getElfData(human)
  290. if not elfData or not elfData[elfId] then
  291. return false
  292. end
  293. return true
  294. end
  295. -- 外部调用,获取精灵当前技能
  296. function GetElfSkill(human, elfId)
  297. -- if not isOpen(human) then
  298. -- return
  299. -- end
  300. local elfData = getElfData(human)
  301. if not elfData or not elfData[elfId] then
  302. return
  303. end
  304. local elfNowStar = elfData[elfId].star
  305. local elfCfg = getElfCfgById(elfId)
  306. if not elfCfg then
  307. return
  308. end
  309. return elfCfg.skillArr[elfNowStar]
  310. end
  311. -- 请求某个品质的所有精灵的简单数据
  312. function Elf_SimpleData_Query(human, targetElfQuality)
  313. if not isOpen(human) then
  314. return Broadcast.sendErr(human, Lang.COMMOM_NOT_ENABLED)
  315. end
  316. local elfData = getElfData(human) or {}
  317. local msgRet = Msg.gc.GC_ELF_SIMPLEDATA_QUERY
  318. local elfArr = msgRet.elfArr
  319. elfArr[0] = 0
  320. local len = 0
  321. msgRet.allStars = calcAllElfStar(elfData)
  322. for _, elfCfg in ipairs(ElfConfig.Elf) do
  323. if elfCfg.elfQuality == targetElfQuality then
  324. local elfId = elfCfg.elfId
  325. local itemCfg = ItemConfig[elfId]
  326. if itemCfg then
  327. len = len + 1
  328. populateMsgSimpleData(elfArr[len], elfCfg, itemCfg, elfData[elfId])
  329. end
  330. end
  331. end
  332. elfArr[0] = len
  333. Msg.send(msgRet, human.fd)
  334. end
  335. -- 请求某个精灵的详细数据
  336. function Elf_SingleElf_Query(human, elfId)
  337. if not isOpen(human) then
  338. return Broadcast.sendErr(human, Lang.COMMOM_NOT_ENABLED)
  339. end
  340. local itemCfg = ItemConfig[elfId]
  341. local elfCfg = getElfCfgById(elfId)
  342. if not itemCfg or not elfCfg then
  343. return Broadcast.sendErr(human, Lang.COMMON_COMFIG_ERROR)
  344. end
  345. local elfData = getElfData(human) or {}
  346. local targetElfData = elfData[elfId]
  347. local msgRet = Msg.gc.GC_ELF_SINGLE_QUERY
  348. populateMsgSimpleData(msgRet.elfSimpleData, elfCfg, itemCfg, targetElfData)
  349. local elfNowLv = targetElfData and targetElfData.level or 0
  350. local elfNowStar = targetElfData and targetElfData.star or 0
  351. local isMaxLv, isMaxStar = false, false
  352. if elfNowLv >= elfCfg.elfMaxLv then
  353. isMaxLv = true
  354. end
  355. if elfNowStar >= elfCfg.elfMaxStar then
  356. isMaxStar = true
  357. end
  358. local elfSkillDataMsg = msgRet.elfSkillData
  359. elfSkillDataMsg.nowSkillDesc = ""
  360. local elfNowSkillId = elfCfg.skillArr[elfNowStar]
  361. local nowSkillCfg = Skill.GetSkillConfig(elfNowSkillId)
  362. if nowSkillCfg then
  363. elfSkillDataMsg.nowSkillDesc = nowSkillCfg.desc
  364. end
  365. elfSkillDataMsg.nextSkillDesc = ""
  366. local elfNextSkillId = isMaxStar and elfCfg.skillArr[#elfCfg.skillArr] or elfCfg.skillArr[elfNowStar+1]
  367. local nextSkillCfg = Skill.GetSkillConfig(elfNextSkillId)
  368. if nextSkillCfg then
  369. elfSkillDataMsg.nextSkillDesc = nextSkillCfg.desc
  370. end
  371. elfSkillDataMsg.maxSkillDesc = ""
  372. local elfMaxSkillId = elfCfg.skillArr[#elfCfg.skillArr]
  373. local maxSkillCfg = Skill.GetSkillConfig(elfMaxSkillId)
  374. if maxSkillCfg then
  375. elfSkillDataMsg.maxSkillDesc = maxSkillCfg.desc
  376. end
  377. local attrMul = getAttrMulFromTalisman(human)
  378. msgRet.elfLvAttrInfo[0] = 2
  379. populateMsgAttr(msgRet.elfLvAttrInfo[1], elfCfg.nAttack1, RoleDefine.ATK, elfNowLv, isMaxLv, attrMul)
  380. populateMsgAttr(msgRet.elfLvAttrInfo[2], elfCfg.nLife1, RoleDefine.HP, elfNowLv, isMaxLv, attrMul)
  381. msgRet.elfStarAttrInfo[0] = 4
  382. populateMsgAttr2(msgRet.elfStarAttrInfo[1], RoleDefine.HP, elfCfg.nLife2, elfNowStar, isMaxStar, attrMul)
  383. populateMsgAttr2(msgRet.elfStarAttrInfo[2], RoleDefine.ATK, elfCfg.nAttack2, elfNowStar, isMaxStar, attrMul)
  384. populateMsgAttr2(msgRet.elfStarAttrInfo[3], RoleDefine.DEF, elfCfg.nDefense2, elfNowStar, isMaxStar, attrMul)
  385. populateMsgAttr2(msgRet.elfStarAttrInfo[4], RoleDefine.SPEED, elfCfg.nSpeed2, elfNowStar, isMaxStar, attrMul)
  386. Msg.send(msgRet, human.fd)
  387. end
  388. -- 精灵升级
  389. function Elf_UpGradeLv(human, elfId, opType)
  390. if not isOpen(human) then
  391. return Broadcast.sendErr(human, Lang.COMMOM_NOT_ENABLED)
  392. end
  393. local elfCfg = getElfCfgById(elfId)
  394. if not elfCfg then
  395. return Broadcast.sendErr(human, Lang.COMMON_COMFIG_ERROR)
  396. end
  397. local elfData = getElfData(human) or {}
  398. if not elfData[elfId] then
  399. return Broadcast.sendErr(human, Lang.ELF_NOT_ACTIVATE)
  400. end
  401. local elfNowLv = elfData[elfId].level or 0
  402. if elfNowLv >= elfCfg.elfMaxLv then
  403. return Broadcast.sendErr(human, Lang.COMMON_MAXLEVEL)
  404. end
  405. local upGradeLvItemId = elfCfg.upGradeLvItemId
  406. local upGradeLvItemCnt = 0
  407. local itemAllCnt = BagLogic.getItemCnt(human, upGradeLvItemId)
  408. if itemAllCnt <= 0 then
  409. return Broadcast.sendErr(human, Lang.COMMON_ITEM_NOT_ENOUGH)
  410. end
  411. -- if BagLogic.getItemCnt(human, upGradeLvItemId) < upGradeLvItemCnt then
  412. -- return Broadcast.sendErr(human, Lang.COMMON_ITEM_NOT_ENOUGH)
  413. -- end
  414. local addLv = 0
  415. if opType == 1 then
  416. addLv = 1
  417. upGradeLvItemCnt = (elfNowLv + 1) * 3 + 2
  418. elseif opType == 2 then
  419. addLv, upGradeLvItemCnt = calcUpGrade(elfNowLv, itemAllCnt, elfCfg.elfMaxLv)
  420. else
  421. return Broadcast.sendErr(human, Lang.COMMON_ARGUMENT_ERROR)
  422. end
  423. if addLv == 0 or BagLogic.getItemCnt(human, upGradeLvItemId) < upGradeLvItemCnt then
  424. return Broadcast.sendErr(human, Lang.COMMON_ITEM_NOT_ENOUGH)
  425. end
  426. BagLogic.delItem(human, upGradeLvItemId, upGradeLvItemCnt, ELF_UPGRADELV_LOG_TAG)
  427. updateElfData(human, elfId, elfNowLv+addLv)
  428. Elf_SingleElf_Query(human, elfId)
  429. updatePower(human)
  430. -- 红点刷新
  431. updateDot(human, elfCfg.elfQuality)
  432. end
  433. -- 精灵升星
  434. function Elf_UpGradeStar(human, elfId)
  435. if not isOpen(human) then
  436. return Broadcast.sendErr(human, Lang.COMMOM_NOT_ENABLED)
  437. end
  438. local elfCfg = getElfCfgById(elfId)
  439. if not elfCfg then
  440. return Broadcast.sendErr(human, Lang.COMMON_COMFIG_ERROR)
  441. end
  442. local elfData = getElfData(human) or {}
  443. local elfNowStar = elfData[elfId] and elfData[elfId].star or 0
  444. if elfNowStar >= elfCfg.elfMaxStar then
  445. return Broadcast.sendErr(human, Lang.COMMON_MAXLEVEL)
  446. end
  447. local nextStar = elfNowStar+1
  448. local upGradeStarItemId = elfCfg.upGradeStarItemId
  449. local upGradeStarItemCnt = getNextStarCostCnt(nextStar)
  450. if upGradeStarItemCnt == 0 then
  451. return Broadcast.sendErr(human, Lang.ELF_MAX_STAR)
  452. end
  453. if BagLogic.getItemCnt(human, upGradeStarItemId) < upGradeStarItemCnt then
  454. return Broadcast.sendErr(human, Lang.COMMON_ITEM_NOT_ENOUGH)
  455. end
  456. BagLogic.delItem(human, upGradeStarItemId, upGradeStarItemCnt, ELF_UPGRADESTAR_LOG_TAG)
  457. updateElfData(human, elfId, nil, nextStar)
  458. Elf_SingleElf_Query(human, elfId)
  459. updatePower(human)
  460. -- 红点刷新
  461. updateDot(human, elfCfg.elfQuality)
  462. local nAllStar = calcAllElfStar(elfData)
  463. TriggerLogic.PublishEvent(TriggerDefine.EVENT_TYPE_JINGLING_STAR, human.db._id, 1)
  464. end
  465. -- 布阵界面, 请求精灵数据
  466. function Elf_GetElfData_FromPosPage(human, targetElfQuality)
  467. local msgRet = Msg.gc.GC_ELF_POS_QUERY
  468. local elfArr = msgRet.elfArr
  469. elfArr[0] = 0
  470. local len = 0
  471. local elfData = getElfData(human) or {}
  472. for _, elfCfg in ipairs(ElfConfig.Elf) do
  473. if elfCfg.elfQuality == targetElfQuality then
  474. local elfId = elfCfg.elfId
  475. local itemCfg = ItemConfig[elfId]
  476. if itemCfg then
  477. len = len + 1
  478. local elfNowLv = elfData and elfData.level or 0
  479. local elfNowStar = elfData[elfId] and elfData[elfId].star or 0
  480. elfArr[len].elfId = elfId
  481. elfArr[len].elfName = itemCfg.name
  482. elfArr[len].elfIcon = itemCfg.icon
  483. elfArr[len].elfLv = elfNowLv
  484. elfArr[len].elfStar = elfNowStar
  485. elfArr[len].elfQuality = targetElfQuality
  486. elfArr[len].nowSkillDesc = ""
  487. elfArr[len].nowSkillIcon = ""
  488. local elfNowSkillId = elfCfg.skillArr[elfNowStar]
  489. local nowSkillCfg = Skill.GetSkillConfig(elfNowSkillId)
  490. if nowSkillCfg then
  491. elfArr[len].nowSkillDesc = nowSkillCfg.desc
  492. elfArr[len].nowSkillIcon = nowSkillCfg.icon
  493. end
  494. end
  495. end
  496. end
  497. elfArr[0] = len
  498. Msg.send(msgRet, human.fd)
  499. end