Grid.lua 19 KB

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