EquipWash.lua 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658
  1. -- 装备图鉴
  2. local Msg = require("core.Msg")
  3. local EquipExcel = require("excel.equip").equip
  4. local EquipRareExcel = require("excel.equip").rare
  5. local EquipTeXiao = require("excel.equip").texiao
  6. local ItemDefine = require("bag.ItemDefine")
  7. local Grid = require("bag.Grid")
  8. local EquipLogic = require("equip.EquipLogic")
  9. local BagLogic = require("bag.BagLogic")
  10. local EquipLogicGrid = require("equip.EquipLogicGrid")
  11. local Lang = require("common.Lang")
  12. local Broadcast = require("broadcast.Broadcast")
  13. local HeroLogic = require("hero.HeroLogic")
  14. local Util = require("common.Util")
  15. local HeroGrowUp = require("absAct.HeroGrowUp")
  16. local ObjHuman = require("core.ObjHuman")
  17. local TriggerLogic = require("trigger.TriggerLogic")
  18. local TriggerDefine = require("trigger.TriggerDefine")
  19. local HeroExcel = require("excel.hero")
  20. local EQUIPREFINING_EFFECT = 1 -- 效果
  21. local EQUIPREFINING_HERONAME = 2 -- 英雄名
  22. local EQUIPEFINING_DEL_GOODID = 183 -- 消耗的物品ID
  23. local EQUIPEFINING_DEL_TYPE_1 = 5 -- 重置效果消耗
  24. local EQUIPEFINING_DEL_TYPE_2 = 1 -- 重置英雄名消耗
  25. -- 取出合适的装备
  26. local function getEquipGrid(human, bagIndex, heroUuid, pos)
  27. local equipGrid = human.db.equipBag[bagIndex]
  28. if not equipGrid then
  29. -- 取英雄身上的
  30. local heroGrid, heroIndex = HeroLogic.getHeroGridByUuid(human, heroUuid)
  31. if not heroGrid then return end
  32. equipGrid = heroGrid.equip and heroGrid.equip[pos]
  33. return equipGrid, heroGrid, heroIndex
  34. end
  35. return equipGrid, nil, nil
  36. end
  37. -- 获得装备洗练数据中被锁定属性的数量, 索引...
  38. local function getEquipLockAttrInfo(equipGrid)
  39. if not equipGrid or not equipGrid.attr or #equipGrid.attr <= 1 then
  40. return
  41. end
  42. local num = 0
  43. local idxList = {}
  44. for idx, attrInfo in ipairs(equipGrid.attr) do
  45. if attrInfo[4] and attrInfo[4] == 1 then
  46. num = num + 1
  47. idxList[idx] = idx
  48. end
  49. end
  50. return num, idxList
  51. end
  52. -- 查询装备图鉴 全部信息
  53. function fenjieQuey(human, inputList)
  54. local indexTable = { }
  55. for i = 1, inputList[0] do
  56. local index = inputList[i]
  57. local equipGrid = human.db.equipBag[index]
  58. if not equipGrid then
  59. return
  60. end
  61. if not EquipRareExcel[equipGrid.quality] then return end
  62. if indexTable[index] then
  63. -- 重复id
  64. return
  65. end
  66. indexTable[index] = true
  67. end
  68. local itemList = { }
  69. for i = 1, inputList[0] do
  70. local index = inputList[i]
  71. local equipGrid = human.db.equipBag[index]
  72. local equipConfig = EquipExcel[equipGrid.id]
  73. if not equipConfig then return end
  74. for k, v in ipairs(EquipRareExcel[equipGrid.quality].disassembly) do
  75. itemList[v[1]] = itemList[v[1]] or 0
  76. itemList[v[1]] = itemList[v[1]] + v[2]
  77. end
  78. end
  79. local msgRet = Msg.gc.GC_EQUIP_FEN_JIE_QUERY
  80. local len = 0
  81. for k, v in pairs(itemList) do
  82. len = len + 1
  83. Grid.makeItem(msgRet.list[len], k, v)
  84. end
  85. msgRet.list[0] = len
  86. Msg.send(msgRet, human.fd)
  87. end
  88. -- 查询装备图鉴 全部信息
  89. function fenjieDo(human, inputList)
  90. local indexTable = { }
  91. for i = 1, inputList[0] do
  92. local index = inputList[i]
  93. local equipGrid = human.db.equipBag[index]
  94. if not equipGrid then
  95. return
  96. end
  97. if not EquipRareExcel[equipGrid.quality] then return end
  98. if indexTable[index] then
  99. -- 重复id
  100. return
  101. end
  102. indexTable[index] = true
  103. end
  104. local itemList = { }
  105. for i = 1, inputList[0] do
  106. local index = inputList[i]
  107. local equipGrid = human.db.equipBag[index]
  108. local equipConfig = EquipExcel[equipGrid.id]
  109. if not equipConfig then return end
  110. for k, v in ipairs(EquipRareExcel[equipGrid.quality].disassembly) do
  111. itemList[v[1]] = itemList[v[1]] or 0
  112. itemList[v[1]] = itemList[v[1]] + v[2]
  113. end
  114. EquipLogic.delEquip(human, index, "equip_fenjie")
  115. HeroGrowUp.onCallback(human, HeroGrowUp.TASKTYPE21, 1)
  116. end
  117. BagLogic.addItemList(human, itemList, "equip_fenjie")
  118. local msgRet = Msg.gc.GC_EQUIP_FEN_JIE_DO
  119. Msg.send(msgRet, human.fd)
  120. end
  121. -- 洗练查询
  122. function randomQuery(human, bagIndex, heroUuid, pos)
  123. local equipGrid = getEquipGrid(human, bagIndex, heroUuid, pos)
  124. if not equipGrid then return end
  125. local rareExcel = EquipRareExcel[equipGrid.quality]
  126. if not rareExcel then return end
  127. local attrLockNum = getEquipLockAttrInfo(equipGrid)
  128. local msgRet = Msg.gc.GC_EQUIP_RAMDOM_QUERY
  129. Grid.makeItem(msgRet.equipOld, equipGrid.id, 1, nil, equipGrid, bagIndex)
  130. -- 当前洗练属性
  131. local washAttr = equipGrid.washAttr
  132. local washQuality = equipGrid.washQuality
  133. msgRet.equipNew[0] = 0
  134. if washAttr and washQuality then
  135. local washEquipGrid = EquipLogicGrid.createTempGrid(equipGrid.id, equipGrid.washAttr, equipGrid.washQuality)
  136. Grid.makeItem(msgRet.equipNew[1], washEquipGrid.id, 1, nil, washEquipGrid, bagIndex)
  137. msgRet.equipNew[0] = 1
  138. end
  139. msgRet.needItem[0] = #rareExcel.rebirth
  140. for i = 1, msgRet.needItem[0] do
  141. -- Grid.makeItem(msgRet.needItem[i], rareExcel.rebirth[i][1], rareExcel.rebirth[i][2])
  142. local itemCnt = rareExcel.rebirth[i][2]
  143. if attrLockNum and attrLockNum > 0 then
  144. itemCnt = itemCnt * (attrLockNum + 1)
  145. end
  146. Grid.makeItem(msgRet.needItem[i], rareExcel.rebirth[i][1], itemCnt)
  147. end
  148. Msg.send(msgRet, human.fd)
  149. end
  150. -- 已穿戴的装备
  151. function putList(human, pos)
  152. local msgRet = Msg.gc.GC_EQUIP_PUT_LIST
  153. local cnt = 0
  154. for index = 1, human.db.heroBag[0] do
  155. local heroGrid = human.db.heroBag[index]
  156. if heroGrid and heroGrid.lv >= 2 then
  157. -- 所有部位
  158. if pos == 0 then
  159. for i = 1, ItemDefine.EQUIP_MAX_CNT do
  160. local equipGrid = heroGrid.equip and heroGrid.equip[i]
  161. if equipGrid then
  162. cnt = cnt + 1
  163. local net = msgRet.putList[cnt]
  164. if i ~= ItemDefine.EQUIP_SUBTYPE_SHUIJIN then
  165. Grid.makeItem(net.equip, equipGrid.id, 1, nil, equipGrid)
  166. net.pos = i
  167. end
  168. if cnt >= 10 then
  169. msgRet.isEnd = 0
  170. msgRet.putList[0] = cnt
  171. Msg.send(msgRet, human.fd)
  172. cnt = 0
  173. end
  174. end
  175. end
  176. else
  177. local equipGrid = heroGrid.equip and heroGrid.equip[pos]
  178. if equipGrid then
  179. cnt = cnt + 1
  180. local net = msgRet.putList[cnt]
  181. if i ~= ItemDefine.EQUIP_SUBTYPE_SHUIJIN then
  182. Grid.makeItem(net.equip, equipGrid.id, 1, nil, equipGrid)
  183. net.pos = pos
  184. end
  185. if cnt >= 10 then
  186. msgRet.isEnd = 0
  187. msgRet.putList[0] = cnt
  188. Msg.send(msgRet, human.fd)
  189. cnt = 0
  190. end
  191. end
  192. end
  193. end
  194. end
  195. msgRet.isEnd = 1
  196. msgRet.putList[0] = cnt
  197. Msg.send(msgRet, human.fd)
  198. end
  199. -- 洗练
  200. function randomDo(human, bagIndex, heroUuid, pos)
  201. local equipGrid = getEquipGrid(human, bagIndex, heroUuid, pos)
  202. if not equipGrid then return end
  203. local rareExcel = EquipRareExcel[equipGrid.quality]
  204. if not rareExcel then return end
  205. local attrLockNum, idxList = getEquipLockAttrInfo(equipGrid)
  206. for i = 1, #rareExcel.rebirth do
  207. local needItemID = rareExcel.rebirth[i][1]
  208. local needItemCnt = rareExcel.rebirth[i][2]
  209. if attrLockNum and attrLockNum > 0 then
  210. needItemCnt = needItemCnt * (attrLockNum + 1)
  211. end
  212. local nowItemCnt = BagLogic.getItemCnt(human, needItemID)
  213. if nowItemCnt < needItemCnt then
  214. return Broadcast.sendErr(human, Util.format(Lang.XIANZHI_NO_ITEM, ItemDefine.getValue(needItemID,"name")))
  215. end
  216. end
  217. for i = 1, #rareExcel.rebirth do
  218. local needItemID = rareExcel.rebirth[i][1]
  219. local needItemCnt = rareExcel.rebirth[i][2]
  220. if attrLockNum and attrLockNum > 0 then
  221. needItemCnt = needItemCnt * (attrLockNum + 1)
  222. end
  223. BagLogic.delItem(human, needItemID, needItemCnt, "equip_wash")
  224. end
  225. local excludeAttrList
  226. if idxList then
  227. excludeAttrList = {}
  228. for idx in pairs(idxList) do
  229. local attrType = equipGrid.attr[idx] and equipGrid.attr[idx][1]
  230. if attrType then
  231. excludeAttrList[attrType] = 1
  232. end
  233. end
  234. end
  235. local attr, quality = EquipLogic.randomAttr(equipGrid.id, true, equipGrid.quality, excludeAttrList)
  236. for idx in pairs(idxList or {}) do
  237. if attr[idx] and equipGrid.attr[idx] then
  238. attr[idx][1] = equipGrid.attr[idx][1] -- attrType
  239. attr[idx][2] = equipGrid.attr[idx][2] -- attrValue
  240. attr[idx][3] = equipGrid.attr[idx][3] -- color
  241. end
  242. end
  243. equipGrid.washAttr = attr
  244. equipGrid.washQuality = quality
  245. HeroGrowUp.onCallback(human, HeroGrowUp.TASKTYPE19, 1)
  246. Broadcast.sendErr(human, Lang.EQUIP_WASH_RANDOM_SUC)
  247. randomQuery(human, bagIndex, heroUuid, pos)
  248. TriggerLogic.PublishEvent(TriggerDefine.EQUIP_REFINEMENT, human.db._id, 1)
  249. end
  250. -- 洗练保存
  251. function randomSave(human, bagIndex, heroUuid, pos)
  252. local equipGrid, heroGrid, heroIndex = getEquipGrid(human, bagIndex, heroUuid, pos)
  253. if not equipGrid then return end
  254. local washAttr = equipGrid.washAttr
  255. local washQuality = equipGrid.washQuality
  256. if not washAttr or not washQuality then return end
  257. -- equipGrid.attr = washAttr
  258. local _, idxList = getEquipLockAttrInfo(equipGrid)
  259. for idx, attrInfo in ipairs(washAttr) do
  260. if not idxList or not idxList[idx] then
  261. equipGrid.attr[idx] = attrInfo
  262. end
  263. end
  264. equipGrid.quality = washQuality
  265. equipGrid.washAttr = nil
  266. equipGrid.washQuality = nil
  267. EquipLogic.checkAttr(equipGrid)
  268. -- 更新背包的
  269. if not heroGrid then
  270. EquipLogic.sendEquipChange(human, bagIndex, equipGrid, EquipLogic.EQUIP_BAG_OP_CHANGE)
  271. end
  272. Broadcast.sendErr(human, Lang.EQUIP_WASH_SAVE_SUC)
  273. randomQuery(human, bagIndex, heroUuid, pos)
  274. --刷新属性
  275. if heroGrid and heroIndex and heroGrid.id then
  276. -- if not heroGrid or not heroIndex or not then
  277. -- return Broadcast.sendErr(human, Lang.DRILL_CHOOSE_FRIEND_ERR_INFO)
  278. -- end
  279. ObjHuman.doCalcHero(human, heroIndex)
  280. HeroLogic.sendHeroBagDynamic(human, heroGrid.id, heroIndex)
  281. end
  282. end
  283. -- 锁定/解锁装备洗练属性
  284. function LockEquipAttr(human, bagIndex, heroUuid, pos, opType, attrIdx)
  285. if opType ~= 0 and opType ~= 1 then
  286. return Broadcast.sendErr(human, Lang.COMMON_ARGUMENT_ERROR)
  287. end
  288. local equipGrid = getEquipGrid(human, bagIndex, heroUuid, pos)
  289. if not equipGrid then
  290. return Broadcast.sendErr(human, Lang.EQUIP_GRID_ERR)
  291. end
  292. if not equipGrid.attr or #equipGrid.attr <= 1 then
  293. return Broadcast.sendErr(human, Lang.EQUIP_ATTR_CANNOT_LOCK)
  294. end
  295. -- 洗练结束才能锁定
  296. if equipGrid.washAttr then
  297. return Broadcast.sendErr(human, Lang.EQUIP_ATTR_CANNOT_LOCK)
  298. end
  299. if not equipGrid.attr[attrIdx] then
  300. return Broadcast.sendErr(human, Lang.COMMON_ARGUMENT_ERROR)
  301. end
  302. local attrLockNum, idxList = getEquipLockAttrInfo(equipGrid)
  303. if not attrLockNum then
  304. Broadcast.sendErr(human, Lang.EQUIP_ATTR_CANNOT_LOCK)
  305. end
  306. if opType == 1 then
  307. if attrLockNum + 1 >= #equipGrid.attr then
  308. return Broadcast.sendErr(human, Lang.EQUIP_ATTR_CANNOT_LOCK_ALL)
  309. end
  310. if idxList[attrIdx] then
  311. return Broadcast.sendErr(human, Lang.EQUIP_ATTR_LOCKED)
  312. end
  313. else
  314. if not idxList[attrIdx] then
  315. return Broadcast.sendErr(human, Lang.EQUIP_ATTR_UNLOCK)
  316. end
  317. end
  318. -- 更新数据
  319. equipGrid.attr[attrIdx][4] = opType
  320. -- 推送数据给客户端
  321. randomQuery(human, bagIndex, heroUuid, pos)
  322. end
  323. -- 取消装备未选择的洗练属性
  324. function CancelEquipRandomAttr(human, bagIndex, heroUuid, pos)
  325. local equipGrid = getEquipGrid(human, bagIndex, heroUuid, pos)
  326. if not equipGrid then
  327. return Broadcast.sendErr(human, Lang.EQUIP_GRID_ERR)
  328. end
  329. equipGrid.washAttr = nil
  330. equipGrid.washQuality = nil
  331. randomQuery(human, bagIndex, heroUuid, pos)
  332. end
  333. local function EquipRefining_GetData(equipGrid, tMsgData)
  334. local baseRate = 1
  335. --装备特效
  336. local effectLen = 0
  337. local msgEffects = tMsgData.tLefteffects
  338. for effectId in pairs(equipGrid.effectList or {}) do
  339. effectLen = effectLen + 1
  340. local effectCfg = EquipTeXiao[effectId]
  341. msgEffects[effectLen].name = effectCfg.name
  342. msgEffects[effectLen].color = effectCfg.quality
  343. msgEffects[effectLen].attr.key = effectCfg.attrs[1][1]
  344. msgEffects[effectLen].attr.value = effectCfg.attrs[1][2]
  345. end
  346. msgEffects[0] = effectLen
  347. -- 英雄专属
  348. if equipGrid.exclusiveHeroId then
  349. local heroCfg = HeroExcel.hero[equipGrid.exclusiveHeroId]
  350. tMsgData.tLeftHero = heroCfg.name
  351. end
  352. if equipGrid.RefiningEffectList then
  353. effectLen = 0
  354. local tData = tMsgData.tRighteffects
  355. for effectId in pairs(equipGrid.RefiningEffectList) do
  356. effectLen = effectLen + 1
  357. local effectCfg = EquipTeXiao[effectId]
  358. tData[effectLen].name = effectCfg.name
  359. tData[effectLen].color = effectCfg.quality
  360. tData[effectLen].attr.key = effectCfg.attrs[1][1]
  361. tData[effectLen].attr.value = effectCfg.attrs[1][2]
  362. end
  363. tData[0] = effectLen
  364. end
  365. if equipGrid.RefiningHeroId then
  366. local heroCfg = HeroExcel.hero[equipGrid.RefiningHeroId]
  367. tMsgData.tRightHero = heroCfg.name
  368. end
  369. end
  370. local function EquipRefining_CheckCanDo(id)
  371. local itemConfig = ItemDefine.getConfig(id)
  372. if not itemConfig then
  373. return false
  374. end
  375. if itemConfig.subType ~= ItemDefine.EQUIP_SUBTYPE_RING and itemConfig.subType ~= ItemDefine.EQUIP_SUBTYPE_AMULET then
  376. return false
  377. end
  378. return true
  379. end
  380. local function EquipRefining_CheckEffect(tNowEffect, tGetEffect)
  381. local bRet = false
  382. if nil == _G.next(tGetEffect) and nil ~= _G.next(tNowEffect) then
  383. return true
  384. end
  385. if nil ~= _G.next(tGetEffect) and nil == _G.next(tNowEffect) then
  386. return true
  387. end
  388. for effectId in pairs(tGetEffect) do
  389. if not tNowEffect[effectId] then
  390. bRet = true
  391. break
  392. end
  393. end
  394. return bRet
  395. end
  396. local function EquipRefining_CheckHeroID(nNowHeroID, nGetHeroID)
  397. local bRet = false
  398. if nNowHeroID then
  399. if not nGetHeroID then
  400. bRet = true
  401. else
  402. if nNowHeroID ~= nGetHeroID then
  403. bRet = true
  404. end
  405. end
  406. else
  407. if nGetHeroID then
  408. bRet = true
  409. end
  410. end
  411. return bRet
  412. end
  413. -- 装备精炼查询
  414. function EquipRefiningQuery(human, bagIndex, heroUuid, pos)
  415. local equipGrid = getEquipGrid(human, bagIndex, heroUuid, pos)
  416. if not equipGrid then
  417. return Broadcast.sendErr(human, Lang.EQUIP_GRID_ERR)
  418. end
  419. if false == EquipRefining_CheckCanDo(equipGrid.id) then
  420. return
  421. end
  422. local tMsgData = Msg.gc.GC_EQUIP_REFINING_QUERY
  423. tMsgData.tLefteffects[0] = 0
  424. tMsgData.tLeftHero = ""
  425. tMsgData.tRighteffects[0] = 0
  426. tMsgData.tRightHero = ""
  427. Grid.makeItem(tMsgData.tEffectItem, EQUIPEFINING_DEL_GOODID, EQUIPEFINING_DEL_TYPE_1)
  428. Grid.makeItem(tMsgData.tHeroItem, EQUIPEFINING_DEL_GOODID, EQUIPEFINING_DEL_TYPE_2)
  429. EquipRefining_GetData(equipGrid, tMsgData)
  430. Msg.send(tMsgData, human.fd)
  431. end
  432. -- 开始装备精炼
  433. function EquipRefiningDo(human, bagIndex, heroUuid, pos, nOperate)
  434. local equipGrid = getEquipGrid(human, bagIndex, heroUuid, pos)
  435. if not equipGrid then
  436. return Broadcast.sendErr(human, Lang.EQUIP_GRID_ERR)
  437. end
  438. if false == EquipRefining_CheckCanDo(equipGrid.id) then
  439. return
  440. end
  441. local nNeedNum = nOperate == EQUIPREFINING_EFFECT and EQUIPEFINING_DEL_TYPE_1
  442. or (nOperate == EQUIPREFINING_HERONAME and EQUIPEFINING_DEL_TYPE_2 or (EQUIPEFINING_DEL_TYPE_1 + EQUIPEFINING_DEL_TYPE_2))
  443. local nowItemCnt = BagLogic.getItemCnt(human, EQUIPEFINING_DEL_GOODID)
  444. if nowItemCnt < nNeedNum then
  445. return Broadcast.sendErr(human, Util.format(Lang.XIANZHI_NO_ITEM, ItemDefine.getValue(EQUIPEFINING_DEL_GOODID,"name")))
  446. end
  447. BagLogic.delItem(human, EQUIPEFINING_DEL_GOODID, nNeedNum, "equip_wash")
  448. local tNowEffect = {}
  449. if equipGrid.effectList then
  450. for effectId in pairs (equipGrid.effectList) do
  451. tNowEffect[effectId] = 1
  452. end
  453. end
  454. if nOperate == EQUIPREFINING_EFFECT then
  455. for i = 1, 15, 1 do
  456. equipGrid.RefiningEffectList = EquipLogic.randEffectAttrList(equipGrid.id)
  457. if true == EquipRefining_CheckEffect(tNowEffect, equipGrid.RefiningEffectList) then
  458. break
  459. end
  460. end
  461. elseif EQUIPREFINING_HERONAME == nOperate then
  462. for i = 1, 15, 1 do
  463. equipGrid.RefiningHeroId = EquipLogic.randHeroExclusive(equipGrid.id)
  464. if true == EquipRefining_CheckHeroID(equipGrid.exclusiveHeroId, equipGrid.RefiningHeroId) then
  465. break
  466. end
  467. end
  468. else
  469. for i = 1, 15, 1 do
  470. equipGrid.RefiningEffectList = EquipLogic.randEffectAttrList(equipGrid.id)
  471. equipGrid.RefiningHeroId = EquipLogic.randHeroExclusive(equipGrid.id)
  472. if true == EquipRefining_CheckEffect(tNowEffect, equipGrid.RefiningEffectList) and
  473. true == EquipRefining_CheckHeroID(equipGrid.exclusiveHeroId, equipGrid.RefiningHeroId) then
  474. break
  475. end
  476. end
  477. end
  478. local tMsgData = Msg.gc.GC_EQUIP_REFINING_DO
  479. tMsgData.tLeftHero = ""
  480. tMsgData.tRightHero = ""
  481. tMsgData.tLefteffects[0] = 0
  482. tMsgData.tRighteffects[0] = 0
  483. EquipRefining_GetData(equipGrid, tMsgData)
  484. Msg.send(tMsgData, human.fd)
  485. end
  486. -- 放弃精炼
  487. function EquipRefiningAbandon(human, bagIndex, heroUuid, pos)
  488. local equipGrid = getEquipGrid(human, bagIndex, heroUuid, pos)
  489. if not equipGrid then
  490. return Broadcast.sendErr(human, Lang.EQUIP_GRID_ERR)
  491. end
  492. if false == EquipRefining_CheckCanDo(equipGrid.id) then
  493. return
  494. end
  495. if equipGrid.RefiningEffectList then
  496. equipGrid.RefiningEffectList = nil
  497. end
  498. if equipGrid.RefiningHeroId then
  499. equipGrid.RefiningHeroId = nil
  500. end
  501. EquipRefiningQuery(human, bagIndex, heroUuid, pos)
  502. end
  503. function EquipRefiningSave(human, bagIndex, heroUuid, pos)
  504. local equipGrid, heroGrid, heroIndex = getEquipGrid(human, bagIndex, heroUuid, pos)
  505. if not equipGrid then
  506. return Broadcast.sendErr(human, Lang.EQUIP_GRID_ERR)
  507. end
  508. if false == EquipRefining_CheckCanDo(equipGrid.id) then
  509. return
  510. end
  511. if equipGrid.RefiningEffectList then
  512. equipGrid.effectList = equipGrid.RefiningEffectList
  513. end
  514. if equipGrid.RefiningHeroId then
  515. equipGrid.exclusiveHeroId = equipGrid.RefiningHeroId
  516. end
  517. equipGrid.RefiningEffectList = nil
  518. equipGrid.RefiningHeroId = nil
  519. EquipLogic.checkAttr(equipGrid)
  520. if not heroGrid then
  521. EquipLogic.sendEquipChange(human, bagIndex, equipGrid, EquipLogic.EQUIP_BAG_OP_CHANGE)
  522. end
  523. --刷新属性
  524. if heroGrid and heroIndex and heroGrid.id then
  525. ObjHuman.doCalcHero(human, heroIndex)
  526. HeroLogic.sendHeroBagDynamic(human, heroGrid.id, heroIndex)
  527. end
  528. EquipRefiningQuery(human, bagIndex, heroUuid, pos)
  529. end