EquipWash.lua 21 KB

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