Grid.lua 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600
  1. ------------------------------------------------
  2. -- 道具格子
  3. ------------------------------------------------
  4. local HeroExcel = require("excel.hero")
  5. local EquipExcel = require("excel.equip")
  6. local FuwenExcel = require("excel.fuwen")
  7. local SkinExcel = require("excel.skin")
  8. local Util = require("common.Util")
  9. local ItemDefine = require("bag.ItemDefine")
  10. local SuipianLogic = require("bag.SuipianLogic")
  11. local RoleAttr = require("role.RoleAttr")
  12. local EquipLogic = require("equip.EquipLogic")
  13. -- 填充装备,道具信息
  14. function makeItem(net, itemID, itemCnt, shuijingAttrID, itemGrid, itemIndex, opFlag, equipQuality, gemBonus)
  15. local itemConfig = ItemDefine.getConfig(itemID)
  16. net.id = itemConfig and itemID or 0
  17. net.cnt = itemConfig and itemCnt or 0
  18. net.name = itemConfig and itemConfig.name or ""
  19. net.mainType = itemConfig and itemConfig.mainType or 0
  20. net.subType = itemConfig and itemConfig.subType or 0
  21. net.order = itemConfig and itemConfig.order or 0
  22. net.icon = itemConfig and itemConfig.icon or 0
  23. net.desc1 = itemConfig and itemConfig.desc1 or ""
  24. net.desc2 = itemConfig and itemConfig.desc2 or ""
  25. local priceId = itemConfig and itemConfig.price and itemConfig.price[1] or 0
  26. local priceConfig = ItemDefine.getConfig(priceId)
  27. net.priceIcon = priceConfig and priceConfig.icon or 0
  28. net.price = itemConfig and itemConfig.price and itemConfig.price[2] or 0
  29. net.rare = itemConfig and itemConfig.rare or 0
  30. net.score = itemConfig and itemConfig.score or 0
  31. net.getway = net.getway or {}
  32. net.getway[0] = (itemConfig and itemConfig.getway) and #itemConfig.getway or 0
  33. for i=1, net.getway[0] do
  34. net.getway[i] = itemConfig.getway[i]
  35. end
  36. net.panelID = itemConfig and itemConfig.panelID or 0
  37. net.isShow = itemConfig and itemConfig.isShow or 0
  38. net.effects = itemConfig and itemConfig.effects or 0
  39. net.opflag = opFlag or getOpflag(itemConfig) or 0
  40. net.suipian = net.suipian or {}
  41. net.equip = net.equip or {}
  42. net.fuwen= net.fuwen or {}
  43. net.suipian[0] = 0
  44. net.equip[0] = 0
  45. net.fuwen[0] = 0
  46. if not itemConfig then return end
  47. makeItemSuipian(net, itemConfig)
  48. makeItemFuwen(net, itemID, itemConfig, itemGrid, itemIndex)
  49. makeItemEquip(net, itemConfig, itemGrid, itemIndex, shuijingAttrID, equipQuality, gemBonus)
  50. end
  51. function makeFuwenSkill(net, skillID)
  52. local skillConfig = FuwenExcel.skill[skillID]
  53. net.skillID = skillID
  54. net.skillIcon = skillConfig.icon
  55. net.skillName = skillConfig.name
  56. net.skillDesc = skillConfig.desc
  57. net.lv = skillConfig.lv
  58. net.isRare = skillConfig.rare or 0
  59. net.isOnlyBinshu = 0
  60. if skillConfig.isBingshuSkill == 1 and skillConfig.isFuwenSkill == 0 then
  61. net.isOnlyBinshu = 1
  62. end
  63. end
  64. function makeItemFuwen(net, itemID, itemConfig, fuwenGrid, fuwenIndex)
  65. if itemConfig.mainType ~= ItemDefine.MAINTYPE_FUWEN then
  66. return
  67. end
  68. local netTemp = nil
  69. if net.fuwen then
  70. net.fuwen[0] = 1
  71. net.fuwen[1] = net.fuwen[1] or {}
  72. netTemp = net.fuwen[1]
  73. else
  74. netTemp = net
  75. end
  76. netTemp.id = itemID
  77. netTemp.index = fuwenIndex or 0
  78. netTemp.fenjieGet = itemConfig.fenjieJinghua
  79. netTemp.refine = 0
  80. netTemp.attrs = netTemp.attrs or {}
  81. netTemp.attrs[0] = 0
  82. netTemp.skills = netTemp.skills or {}
  83. netTemp.skills[0] = 0
  84. netTemp.zhandouli = 0
  85. if fuwenGrid ~= nil then
  86. netTemp.refine = fuwenGrid.refine or 0
  87. local zhandouli = 0
  88. for zz = 1, #fuwenGrid.attr do
  89. local key = fuwenGrid.attr[zz][1]
  90. local value = fuwenGrid.attr[zz][2]
  91. netTemp.attrs[zz] = netTemp.attrs[zz] or {}
  92. netTemp.attrs[zz].key = key
  93. netTemp.attrs[zz].value = value
  94. zhandouli = zhandouli + RoleAttr.getPointByKey(key) * value
  95. end
  96. netTemp.attrs[0] = #fuwenGrid.attr
  97. if fuwenGrid.skill == nil then
  98. netTemp.skills[0] = 0
  99. else
  100. for zz = 1,#fuwenGrid.skill do
  101. local skillID = fuwenGrid.skill[zz]
  102. netTemp.skills[zz] = netTemp.skills[zz] or {}
  103. makeFuwenSkill(netTemp.skills[zz], skillID)
  104. end
  105. netTemp.skills[0] = #fuwenGrid.skill
  106. end
  107. netTemp.zhandouli = math.floor(zhandouli)
  108. end
  109. end
  110. function makeItemEquip(net, itemConfig, equipGrid, equipIndex, shuijingAttrID, equipQuality, gemBonus)
  111. if itemConfig.mainType ~= ItemDefine.MAINTYPE_EQUIP then
  112. return
  113. end
  114. net.equip[0] = 1
  115. net.equip[1] = net.equip[1] or {}
  116. net.equip[1].index = equipIndex or 0
  117. net.equip[1].level = itemConfig.level
  118. net.equip[1].exp = itemConfig.shenqiExp or 0
  119. net.equip[1].star = itemConfig.star or 0
  120. net.equip[1].uuid = equipGrid and equipGrid.uuid or ""
  121. net.equip[1].putUuid = equipGrid and equipGrid.putUuid or ""
  122. net.equip[1].args = net.equip[1].args or {}
  123. net.equip[1].args[0] = 0
  124. net.equip[1].suitID = itemConfig.suit or 0
  125. local maxQuality = EquipLogic.getEquipMaxQuality(itemConfig)
  126. net.rare = equipGrid and equipGrid.quality or equipQuality or maxQuality
  127. -- 装备基础属性
  128. if itemConfig.subType == ItemDefine.EQUIP_SUBTYPE_SHUIJIN then
  129. -- 水晶属性
  130. net.equip[1].attr = net.equip[1].attr or {}
  131. net.equip[1].attr[0] = 0
  132. net.equip[1].args[0] = 1
  133. local upcf = EquipExcel.shuijingUpNeed[net.id]
  134. net.equip[1].args[1] = (not upcf or upcf.nextID < 1) and 1 or 0 -- 是否满级
  135. if shuijingAttrID then
  136. local shuijingConfig = EquipExcel.shuijingAttr[shuijingAttrID]
  137. local shuijingAttrTB = shuijingConfig.attr
  138. net.equip[1].attr[0] = #shuijingAttrTB
  139. for i=1, net.equip[1].attr[0] do
  140. net.equip[1].attr[i] = net.equip[1].attr[i] or {}
  141. net.equip[1].attr[i].key = shuijingAttrTB[i][1]
  142. net.equip[1].attr[i].value = shuijingAttrTB[i][2]
  143. end
  144. end
  145. else
  146. local baseRate = EquipLogic.getEquipBaseRate(net.rare)
  147. net.score = math.floor(net.score * baseRate)
  148. local succinctRate = baseRate
  149. local baseAttrInfo = itemConfig.base
  150. if equipGrid and equipGrid.baseAttr then
  151. baseAttrInfo = equipGrid.baseAttr
  152. end
  153. net.equip[1].effects[0] = 0
  154. net.equip[1].heroExclusive = ""
  155. if itemConfig.subType == ItemDefine.EQUIP_SUBTYPE_RING or itemConfig.subType == ItemDefine.EQUIP_SUBTYPE_AMULET then
  156. baseRate = 1
  157. --装备特效
  158. if equipGrid then
  159. local effectLen = 0
  160. local msgEffects = net.equip[1].effects
  161. for effectId in pairs(equipGrid.effectList or {}) do
  162. effectLen = effectLen + 1
  163. local effectCfg = EquipExcel.texiao[effectId]
  164. msgEffects[effectLen].name = effectCfg.name
  165. msgEffects[effectLen].color = effectCfg.quality
  166. msgEffects[effectLen].attr.key = effectCfg.attrs[1][1]
  167. msgEffects[effectLen].attr.value = effectCfg.attrs[1][2]
  168. end
  169. msgEffects[0] = effectLen
  170. -- 英雄专属
  171. if equipGrid.exclusiveHeroId then
  172. local heroCfg = HeroExcel.hero[equipGrid.exclusiveHeroId]
  173. net.equip[1].heroExclusive = heroCfg.name
  174. end
  175. end
  176. end
  177. --宝石
  178. net.equip[1].gemBaseAttr[0] = 0
  179. if gemBonus then
  180. net.equip[1].gemBaseAttr[0] = #baseAttrInfo
  181. end
  182. -- 基础属性
  183. net.equip[1].baseAttr = {}
  184. net.equip[1].baseAttr[0] = #baseAttrInfo
  185. for i=1, net.equip[1].baseAttr[0] do
  186. net.equip[1].baseAttr[i] = net.equip[1].baseAttr[i] or {}
  187. net.equip[1].baseAttr[i].key = baseAttrInfo[i][1]
  188. net.equip[1].baseAttr[i].value = math.floor(baseAttrInfo[i][2] * baseRate)
  189. if gemBonus then
  190. net.equip[1].gemBaseAttr[i].key = baseAttrInfo[i][1]
  191. if itemConfig.subType == ItemDefine.EQUIP_SUBTYPE_RING or itemConfig.subType == ItemDefine.EQUIP_SUBTYPE_AMULET then
  192. net.equip[1].gemBaseAttr[i].value = math.floor(baseAttrInfo[i][2] * baseRate * gemBonus.sp_base)
  193. else
  194. net.equip[1].gemBaseAttr[i].value = math.floor(baseAttrInfo[i][2] * baseRate * gemBonus.base)
  195. end
  196. end
  197. end
  198. -- 洗练属性
  199. local attrLen = 0
  200. net.equip[1].tzAttr = net.equip[1].tzAttr or {}
  201. if equipGrid then
  202. EquipLogic.checkAttr(equipGrid)
  203. -- for key, value in pairs(equipGrid.attr) do
  204. -- attrLen = attrLen + 1
  205. -- net.equip[1].tzAttr[attrLen] = net.equip[1].tzAttr[attrLen] or {}
  206. -- net.equip[1].tzAttr[attrLen].attr.key = key
  207. -- net.equip[1].tzAttr[attrLen].value = math.floor(value * baseRate)
  208. -- end
  209. for idx, v in ipairs(equipGrid.attr) do
  210. net.equip[1].tzAttr[idx] = net.equip[1].tzAttr[idx] or {}
  211. net.equip[1].tzAttr[idx].attr.key = v[1]
  212. net.equip[1].tzAttr[idx].attr.value = math.floor(v[2] * succinctRate)
  213. net.equip[1].tzAttr[idx].color = v[3] or 1
  214. net.equip[1].tzAttr[0] = idx
  215. end
  216. else
  217. local randomAttr = EquipLogic.getEquipTzAttr(itemConfig)
  218. if randomAttr then
  219. -- for _, attr in pairs(randomAttr) do
  220. -- attrLen = attrLen + 1
  221. -- net.equip[1].tzAttr[attrLen] = net.equip[1].tzAttr[attrLen] or {}
  222. -- net.equip[1].tzAttr[attrLen].key = attr[1]
  223. -- net.equip[1].tzAttr[attrLen].value = attr[2]
  224. -- end
  225. for idx, v in ipairs(randomAttr) do
  226. attrLen = attrLen + 1
  227. net.equip[1].tzAttr[idx] = net.equip[1].tzAttr[idx] or {}
  228. net.equip[1].tzAttr[idx].attr.key = v[1]
  229. net.equip[1].tzAttr[idx].attr.value = v[2]
  230. net.equip[1].tzAttr[idx].color = v[3] or 1
  231. -- net.equip[1].tzAttr[0] = idx
  232. end
  233. end
  234. net.equip[1].tzAttr[0] = attrLen
  235. end
  236. -- net.equip[1].tzAttr[0] = attrLen
  237. end
  238. if itemConfig.subType == ItemDefine.EQUIP_SUBTYPE_SHENQI then
  239. local shenqiUpNeedConfig = EquipExcel.shenqiUpNeed[net.id]
  240. local nextID = shenqiUpNeedConfig and shenqiUpNeedConfig.nextID
  241. net.equip[1].args = net.equip[1].args or {}
  242. net.equip[1].args[0] = 1
  243. net.equip[1].args[1] = (not nextID or nextID < 1) and 1 or 0
  244. end
  245. -- 装备套装属性
  246. net.equip[1].suit = net.equip[1].suit or {}
  247. net.equip[1].suit[0] = 0
  248. if itemConfig.suitIm then
  249. net.equip[1].suit = net.equip[1].suit or {}
  250. net.equip[1].suit[0] = 1
  251. net.equip[1].suit[1] = net.equip[1].suit[1] or {}
  252. net.equip[1].suit[1].attr = net.equip[1].suit[1].attr or {}
  253. net.equip[1].suit[1].attr[0] = #itemConfig.suitIm
  254. net.equip[1].suit[1].gemAttr[0] = 0
  255. if gemBonus then
  256. net.equip[1].suit[1].gemAttr[0] = #itemConfig.suitIm
  257. end
  258. for i=1,net.equip[1].suit[1].attr[0] do
  259. net.equip[1].suit[1].attr[i] = net.equip[1].suit[1].attr[i] or {}
  260. net.equip[1].suit[1].attr[i].key = itemConfig.suitIm[i][1]
  261. net.equip[1].suit[1].attr[i].value = itemConfig.suitIm[i][2]
  262. if gemBonus and (gemBonus[i+1] or gemBonus.sp_suit) then
  263. net.equip[1].suit[1].gemAttr[i] = net.equip[1].suit[1].gemAttr[i] or {}
  264. net.equip[1].suit[1].gemAttr[i].key = itemConfig.suitIm[i][1]
  265. if itemConfig.subType == ItemDefine.EQUIP_SUBTYPE_RING or itemConfig.subType == ItemDefine.EQUIP_SUBTYPE_AMULET then
  266. net.equip[1].suit[1].gemAttr[i].value = gemBonus.sp_suit * 100
  267. else
  268. --这里i+1的原因是,装备套装属性配置suitIm中, idx为1的value是2件套加成, idx为2的是3件套加成,以此类推
  269. net.equip[1].suit[1].gemAttr[i].value = gemBonus[i+1] * 100 --转成百分比发给客户端
  270. end
  271. end
  272. end
  273. net.equip[1].suit[1].id = itemConfig.suit
  274. net.equip[1].suit[1].name = itemConfig.suitName
  275. net.equip[1].suit[1].num = itemConfig.suitNum
  276. end
  277. -- 装备职业专属属性
  278. net.equip[1].job = itemConfig.job
  279. net.equip[1].jobAttr = net.equip[1].jobAttr or {}
  280. net.equip[1].jobAttr[0] = #itemConfig.jobAttr
  281. for i = 1, net.equip[1].jobAttr[0] do
  282. net.equip[1].jobAttr[i] = net.equip[1].jobAttr[i] or {}
  283. net.equip[1].jobAttr[i].key = itemConfig.jobAttr[i][1]
  284. net.equip[1].jobAttr[i].value = itemConfig.jobAttr[i][2]
  285. end
  286. -- 装备阵营专属属性
  287. net.equip[1].camp = itemConfig.camp
  288. net.equip[1].campAttr = net.equip[1].campAttr or {}
  289. net.equip[1].campAttr[0] = #itemConfig.campAttr
  290. for i = 1, net.equip[1].campAttr[0] do
  291. net.equip[1].campAttr[i] = net.equip[1].campAttr[i] or {}
  292. net.equip[1].campAttr[i].key = itemConfig.campAttr[i][1]
  293. net.equip[1].campAttr[i].value = itemConfig.campAttr[i][2]
  294. end
  295. end
  296. -- 封装碎片信息 Suipian
  297. function makeItemSuipian(net, itemConfig)
  298. if itemConfig.mainType ~= ItemDefine.MAINTYPE_ITEM then
  299. return
  300. end
  301. if itemConfig.subType ~= ItemDefine.ITEM_SUBTYPE_SUIPIAN and
  302. itemConfig.subType ~= ItemDefine.ITEM_SUBTYPE_SUIPIAN_SKIN and
  303. itemConfig.subType ~= ItemDefine.ITEM_SUBTYPE_SUIPIAN_TALISMAM and
  304. itemConfig.subType ~= ItemDefine.ITEM_SUBTYPE_SUIPIAN_RELIC then
  305. return
  306. end
  307. net.suipian[0] = 1
  308. net.suipian[1] = net.suipian[1] or {}
  309. net.suipian[1].fullcnt = itemConfig.fullCnt
  310. net.suipian[1].get = itemConfig.get[1] or 0
  311. if itemConfig.subType == ItemDefine.ITEM_SUBTYPE_SUIPIAN or itemConfig.subType == ItemDefine.ITEM_SUBTYPE_SUIPIAN_SKIN then
  312. net.suipian[1].camp = itemConfig.cond[1] or 0
  313. net.suipian[1].star = itemConfig.cond[2] or 0
  314. local heroID = itemConfig.get[3]
  315. local heroConfig = HeroExcel.hero[heroID]
  316. net.suipian[1].grade = heroConfig and heroConfig.grade or 0
  317. if itemConfig.get[1] == SuipianLogic.SUMMON_TYPE_TARGET then
  318. local dropType = itemConfig.get[2]
  319. if dropType == SuipianLogic.SUMMON_SUBTYPE_HERO then
  320. local heroID = itemConfig.get[3]
  321. local heroConfig = HeroExcel.hero[heroID]
  322. if heroConfig then
  323. net.suipian[1].camp = heroConfig.camp
  324. net.suipian[1].star = heroConfig.star
  325. net.icon = heroConfig.head
  326. end
  327. end
  328. end
  329. elseif itemConfig.subType == ItemDefine.ITEM_SUBTYPE_SUIPIAN_TALISMAM or itemConfig.subType == ItemDefine.ITEM_SUBTYPE_SUIPIAN_RELIC then
  330. net.suipian[1].camp = 0
  331. net.suipian[1].star = 0
  332. net.suipian[1].grade = itemConfig.rare or 0
  333. end
  334. end
  335. --------------------------------------------- 可操作 -------------------------------------------------------
  336. -- 可操作行为
  337. function getOpflagAtBag(id)
  338. local itemConfig = ItemDefine.getConfig(id)
  339. if not itemConfig then return flag end
  340. if itemConfig then
  341. itemConfig.id = id
  342. end
  343. local flag = 0
  344. -- 使用道具
  345. if canUse(itemConfig) then
  346. flag = Util.setBit(flag, ItemDefine.ITEM_OP_USE)
  347. end
  348. -- 使用箱子
  349. if canUseBox(itemConfig) then
  350. flag = Util.setBit(flag, ItemDefine.ITEM_OP_USE_BOX)
  351. end
  352. -- 批量使用
  353. if canUseBatch(itemConfig) then
  354. flag = Util.setBit(flag, ItemDefine.ITEM_OP_USE_BATCH)
  355. end
  356. -- 详情
  357. if canDetail(itemConfig) then
  358. flag = Util.setBit(flag, ItemDefine.ITEM_OP_DETAIL)
  359. end
  360. -- 是否可出售
  361. if canSell(itemConfig) then
  362. flag = Util.setBit(flag, ItemDefine.ITEM_OP_SELL)
  363. end
  364. -- 是否用来源
  365. if canSource(itemConfig) then
  366. flag = Util.setBit(flag, ItemDefine.ITEM_OP_SOURCE)
  367. end
  368. -- 是否可以合成
  369. if canHeCheng(itemConfig) then
  370. flag = Util.setBit(flag, ItemDefine.ITEM_OP_HECHENG)
  371. end
  372. -- 能否穿戴
  373. if canEquip(itemConfig) then
  374. flag = Util.setBit(flag, ItemDefine.ITEM_OP_EQUIP)
  375. end
  376. -- 能否重铸
  377. if canCZhu(itemConfig) then
  378. flag = Util.setBit(flag, ItemDefine.ITEM_OP_CZHU)
  379. end
  380. -- 能否分解
  381. if canFJie(itemConfig) then
  382. flag = Util.setBit(flag, ItemDefine.ITEM_OP_FJIE)
  383. end
  384. return flag
  385. end
  386. function getOpflag(itemConfig)
  387. local flag = 0
  388. if not itemConfig then return flag end
  389. -- 预览
  390. if canYulan(itemConfig) then
  391. flag = Util.setBit(flag, ItemDefine.ITEM_OP_YULAN)
  392. end
  393. -- 是否用来源
  394. if canSource(itemConfig) then
  395. flag = Util.setBit(flag, ItemDefine.ITEM_OP_SOURCE)
  396. end
  397. return flag
  398. end
  399. -- 可否使用
  400. function canUse(itemConfig)
  401. if not itemConfig then return end
  402. if not itemConfig.panelID then return end
  403. return itemConfig.panelID > 0
  404. end
  405. -- 可否使用
  406. function canUseBox(itemConfig)
  407. if not itemConfig then return end
  408. if not itemConfig.cmd then return end
  409. local cmdstr = itemConfig.cmd[1]
  410. if not cmdstr then return end
  411. if cmdstr == "box" then
  412. return true
  413. end
  414. end
  415. -- 是否可出售
  416. function canSell(itemConfig)
  417. if not itemConfig then return end
  418. if not itemConfig.price then return end
  419. return #itemConfig.price > 0
  420. end
  421. -- 是否可出售
  422. function canSource(itemConfig)
  423. if not itemConfig then return end
  424. if not itemConfig.getway then return end
  425. return #itemConfig.getway > 0
  426. end
  427. -- 可否批量使用
  428. function canUseBatch(itemConfig)
  429. if not itemConfig then return end
  430. if not itemConfig.cmd then return end
  431. local cmdstr = itemConfig.cmd[1]
  432. if not cmdstr then return end
  433. if cmdstr == "box" or "UseSkinItem" == cmdstr then
  434. return
  435. end
  436. return true
  437. end
  438. -- 可否预览
  439. function canYulan(itemConfig)
  440. if not itemConfig then return end
  441. local cmdStr = itemConfig.cmd and itemConfig.cmd[1]
  442. if cmdStr and cmdStr == "box" then
  443. return true
  444. end
  445. --[[local getWay = itemConfig.get and itemConfig.get[1]
  446. if getWay == SuipianLogic.SUMMON_TYPE_DROP or
  447. getWay == SuipianLogic.SUMMON_TYPE_HERO_SP or
  448. getWay == SuipianLogic.SUMMON_TYPE_SHENQI_SP then
  449. local suipianType = itemConfig.get[2]
  450. if suipianType == SuipianLogic.SUMMON_SUBTYPE_HERO or
  451. suipianType == SuipianLogic.SUMMON_SUBTYPE_EQUIP then
  452. return true
  453. end
  454. end]]
  455. end
  456. -- 可否查看英雄详情
  457. function canDetail(itemConfig)
  458. local getWay = itemConfig.get and itemConfig.get[1]
  459. if getWay == SuipianLogic.SUMMON_TYPE_TARGET then
  460. local suipianType = itemConfig.get[2]
  461. if suipianType == SuipianLogic.SUMMON_SUBTYPE_HERO then
  462. local heroID = itemConfig.get[3]
  463. if HeroExcel.hero[heroID] then
  464. return true
  465. end
  466. end
  467. if suipianType == SuipianLogic.SUMMON_SUBTYPE_SKIN then
  468. local skinID = itemConfig.get[3]
  469. if SkinExcel.skin[skinID] then
  470. return true
  471. end
  472. end
  473. end
  474. end
  475. -- 可否合成
  476. function canHeCheng(itemConfig)
  477. local getWay = itemConfig.get and itemConfig.get[1]
  478. if getWay == SuipianLogic.SUMMON_TYPE_TARGET or getWay == SuipianLogic.SUMMON_TYPE_DROP then
  479. local suipianType = itemConfig.get[2]
  480. if suipianType == SuipianLogic.SUMMON_SUBTYPE_HERO then
  481. return true
  482. end
  483. if suipianType == SuipianLogic.SUMMON_SUBTYPE_SKIN then
  484. return true
  485. end
  486. if suipianType == SuipianLogic.SUMMON_SUBTYPE_TALISAM then
  487. return true
  488. end
  489. if suipianType == SuipianLogic.SUMMON_SUBTYPE_RELIC then
  490. return true
  491. end
  492. end
  493. if ItemDefine.isFuwen(itemConfig.id) then
  494. return true
  495. end
  496. end
  497. -- 可否穿戴
  498. function canEquip(itemConfig)
  499. if ItemDefine.isEquip(itemConfig.id) then
  500. return true
  501. end
  502. if ItemDefine.isFuwen(itemConfig.id) then
  503. return true
  504. end
  505. end
  506. -- 可否重铸
  507. function canCZhu(itemConfig)
  508. if ItemDefine.isFuwen(itemConfig.id) then
  509. return true
  510. end
  511. end
  512. -- 可否重铸
  513. function canFJie(itemConfig)
  514. if ItemDefine.isFuwen(itemConfig.id) then
  515. return true
  516. end
  517. end