Grid.lua 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605
  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[idx].lock = v[4] or 0
  216. net.equip[1].tzAttr[0] = idx
  217. end
  218. else
  219. local randomAttr = EquipLogic.getEquipTzAttr(itemConfig)
  220. if randomAttr then
  221. -- for _, attr in pairs(randomAttr) do
  222. -- attrLen = attrLen + 1
  223. -- net.equip[1].tzAttr[attrLen] = net.equip[1].tzAttr[attrLen] or {}
  224. -- net.equip[1].tzAttr[attrLen].key = attr[1]
  225. -- net.equip[1].tzAttr[attrLen].value = attr[2]
  226. -- end
  227. for idx, v in ipairs(randomAttr) do
  228. attrLen = attrLen + 1
  229. net.equip[1].tzAttr[idx] = net.equip[1].tzAttr[idx] or {}
  230. net.equip[1].tzAttr[idx].attr.key = v[1]
  231. net.equip[1].tzAttr[idx].attr.value = v[2]
  232. net.equip[1].tzAttr[idx].color = v[3] or 1
  233. net.equip[1].tzAttr[idx].lock = v[4] or 0
  234. -- net.equip[1].tzAttr[0] = idx
  235. end
  236. end
  237. net.equip[1].tzAttr[0] = attrLen
  238. end
  239. -- net.equip[1].tzAttr[0] = attrLen
  240. end
  241. if itemConfig.subType == ItemDefine.EQUIP_SUBTYPE_SHENQI then
  242. local shenqiUpNeedConfig = EquipExcel.shenqiUpNeed[net.id]
  243. local nextID = shenqiUpNeedConfig and shenqiUpNeedConfig.nextID
  244. net.equip[1].args = net.equip[1].args or {}
  245. net.equip[1].args[0] = 1
  246. net.equip[1].args[1] = (not nextID or nextID < 1) and 1 or 0
  247. end
  248. -- 装备套装属性
  249. net.equip[1].suit = net.equip[1].suit or {}
  250. net.equip[1].suit[0] = 0
  251. if itemConfig.suitIm then
  252. net.equip[1].suit = net.equip[1].suit or {}
  253. net.equip[1].suit[0] = 1
  254. net.equip[1].suit[1] = net.equip[1].suit[1] or {}
  255. net.equip[1].suit[1].attr = net.equip[1].suit[1].attr or {}
  256. net.equip[1].suit[1].attr[0] = #itemConfig.suitIm
  257. net.equip[1].suit[1].gemAttr[0] = 0
  258. if gemBonus then
  259. net.equip[1].suit[1].gemAttr[0] = #itemConfig.suitIm
  260. end
  261. for i=1,net.equip[1].suit[1].attr[0] do
  262. net.equip[1].suit[1].attr[i] = net.equip[1].suit[1].attr[i] or {}
  263. net.equip[1].suit[1].attr[i].key = itemConfig.suitIm[i][1]
  264. net.equip[1].suit[1].attr[i].value = itemConfig.suitIm[i][2]
  265. if gemBonus and (gemBonus[i+1] or gemBonus.sp_suit) then
  266. net.equip[1].suit[1].gemAttr[i] = net.equip[1].suit[1].gemAttr[i] or {}
  267. net.equip[1].suit[1].gemAttr[i].key = itemConfig.suitIm[i][1]
  268. if itemConfig.subType == ItemDefine.EQUIP_SUBTYPE_RING or itemConfig.subType == ItemDefine.EQUIP_SUBTYPE_AMULET then
  269. net.equip[1].suit[1].gemAttr[i].value = gemBonus.sp_suit * 100
  270. else
  271. --这里i+1的原因是,装备套装属性配置suitIm中, idx为1的value是2件套加成, idx为2的是3件套加成,以此类推
  272. net.equip[1].suit[1].gemAttr[i].value = gemBonus[i+1] * 100 --转成百分比发给客户端
  273. end
  274. end
  275. end
  276. net.equip[1].suit[1].id = itemConfig.suit
  277. net.equip[1].suit[1].name = itemConfig.suitName
  278. net.equip[1].suit[1].num = itemConfig.suitNum
  279. end
  280. -- 装备职业专属属性
  281. net.equip[1].job = itemConfig.job
  282. net.equip[1].jobAttr = net.equip[1].jobAttr or {}
  283. net.equip[1].jobAttr[0] = #itemConfig.jobAttr
  284. for i = 1, net.equip[1].jobAttr[0] do
  285. net.equip[1].jobAttr[i] = net.equip[1].jobAttr[i] or {}
  286. net.equip[1].jobAttr[i].key = itemConfig.jobAttr[i][1]
  287. net.equip[1].jobAttr[i].value = itemConfig.jobAttr[i][2]
  288. end
  289. -- 装备阵营专属属性
  290. net.equip[1].camp = itemConfig.camp
  291. net.equip[1].campAttr = net.equip[1].campAttr or {}
  292. net.equip[1].campAttr[0] = #itemConfig.campAttr
  293. for i = 1, net.equip[1].campAttr[0] do
  294. net.equip[1].campAttr[i] = net.equip[1].campAttr[i] or {}
  295. net.equip[1].campAttr[i].key = itemConfig.campAttr[i][1]
  296. net.equip[1].campAttr[i].value = itemConfig.campAttr[i][2]
  297. end
  298. end
  299. -- 封装碎片信息 Suipian
  300. function makeItemSuipian(net, itemConfig)
  301. if itemConfig.mainType ~= ItemDefine.MAINTYPE_ITEM then
  302. return
  303. end
  304. if itemConfig.subType ~= ItemDefine.ITEM_SUBTYPE_SUIPIAN and
  305. itemConfig.subType ~= ItemDefine.ITEM_SUBTYPE_SUIPIAN_SKIN and
  306. itemConfig.subType ~= ItemDefine.ITEM_SUBTYPE_SUIPIAN_TALISMAM and
  307. itemConfig.subType ~= ItemDefine.ITEM_SUBTYPE_SUIPIAN_RELIC then
  308. return
  309. end
  310. net.suipian[0] = 1
  311. net.suipian[1] = net.suipian[1] or {}
  312. net.suipian[1].fullcnt = itemConfig.fullCnt
  313. net.suipian[1].get = itemConfig.get[1] or 0
  314. if itemConfig.subType == ItemDefine.ITEM_SUBTYPE_SUIPIAN or itemConfig.subType == ItemDefine.ITEM_SUBTYPE_SUIPIAN_SKIN then
  315. net.suipian[1].camp = itemConfig.cond[1] or 0
  316. net.suipian[1].star = itemConfig.cond[2] or 0
  317. local heroID = itemConfig.get[3]
  318. local heroConfig = HeroExcel.hero[heroID]
  319. net.suipian[1].grade = heroConfig and heroConfig.grade or 0
  320. if itemConfig.get[1] == SuipianLogic.SUMMON_TYPE_TARGET then
  321. local dropType = itemConfig.get[2]
  322. if dropType == SuipianLogic.SUMMON_SUBTYPE_HERO then
  323. local heroID = itemConfig.get[3]
  324. local heroConfig = HeroExcel.hero[heroID]
  325. if heroConfig then
  326. net.suipian[1].camp = heroConfig.camp
  327. net.suipian[1].star = heroConfig.star
  328. net.icon = heroConfig.head
  329. end
  330. end
  331. end
  332. elseif itemConfig.subType == ItemDefine.ITEM_SUBTYPE_SUIPIAN_TALISMAM or itemConfig.subType == ItemDefine.ITEM_SUBTYPE_SUIPIAN_RELIC then
  333. net.suipian[1].camp = 0
  334. net.suipian[1].star = 0
  335. net.suipian[1].grade = itemConfig.rare or 0
  336. end
  337. end
  338. --------------------------------------------- 可操作 -------------------------------------------------------
  339. -- 可操作行为
  340. function getOpflagAtBag(id)
  341. local itemConfig = ItemDefine.getConfig(id)
  342. if not itemConfig then return flag end
  343. if itemConfig then
  344. itemConfig.id = id
  345. end
  346. local flag = 0
  347. -- 使用道具
  348. if canUse(itemConfig) then
  349. flag = Util.setBit(flag, ItemDefine.ITEM_OP_USE)
  350. end
  351. -- 使用箱子
  352. if canUseBox(itemConfig) then
  353. flag = Util.setBit(flag, ItemDefine.ITEM_OP_USE_BOX)
  354. end
  355. -- 批量使用
  356. if canUseBatch(itemConfig) then
  357. flag = Util.setBit(flag, ItemDefine.ITEM_OP_USE_BATCH)
  358. end
  359. -- 详情
  360. if canDetail(itemConfig) then
  361. flag = Util.setBit(flag, ItemDefine.ITEM_OP_DETAIL)
  362. end
  363. -- 是否可出售
  364. if canSell(itemConfig) then
  365. flag = Util.setBit(flag, ItemDefine.ITEM_OP_SELL)
  366. end
  367. -- 是否用来源
  368. if canSource(itemConfig) then
  369. flag = Util.setBit(flag, ItemDefine.ITEM_OP_SOURCE)
  370. end
  371. -- 是否可以合成
  372. if canHeCheng(itemConfig) then
  373. flag = Util.setBit(flag, ItemDefine.ITEM_OP_HECHENG)
  374. end
  375. -- 能否穿戴
  376. if canEquip(itemConfig) then
  377. flag = Util.setBit(flag, ItemDefine.ITEM_OP_EQUIP)
  378. end
  379. -- 能否重铸
  380. if canCZhu(itemConfig) then
  381. flag = Util.setBit(flag, ItemDefine.ITEM_OP_CZHU)
  382. end
  383. -- 能否分解
  384. if canFJie(itemConfig) then
  385. flag = Util.setBit(flag, ItemDefine.ITEM_OP_FJIE)
  386. end
  387. return flag
  388. end
  389. function getOpflag(itemConfig)
  390. local flag = 0
  391. if not itemConfig then return flag end
  392. -- 预览
  393. if canYulan(itemConfig) then
  394. flag = Util.setBit(flag, ItemDefine.ITEM_OP_YULAN)
  395. end
  396. -- 是否用来源
  397. if canSource(itemConfig) then
  398. flag = Util.setBit(flag, ItemDefine.ITEM_OP_SOURCE)
  399. end
  400. return flag
  401. end
  402. -- 可否使用
  403. function canUse(itemConfig)
  404. if not itemConfig then return end
  405. if not itemConfig.panelID then return end
  406. return itemConfig.panelID > 0
  407. end
  408. -- 可否使用
  409. function canUseBox(itemConfig)
  410. if not itemConfig then return end
  411. if not itemConfig.cmd then return end
  412. local cmdstr = itemConfig.cmd[1]
  413. if not cmdstr then return end
  414. if cmdstr == "box" then
  415. return true
  416. end
  417. end
  418. -- 是否可出售
  419. function canSell(itemConfig)
  420. if not itemConfig then return end
  421. if not itemConfig.price then return end
  422. return #itemConfig.price > 0
  423. end
  424. -- 是否可出售
  425. function canSource(itemConfig)
  426. if not itemConfig then return end
  427. if not itemConfig.getway then return end
  428. return #itemConfig.getway > 0
  429. end
  430. -- 可否批量使用
  431. function canUseBatch(itemConfig)
  432. if not itemConfig then return end
  433. if not itemConfig.cmd then return end
  434. local cmdstr = itemConfig.cmd[1]
  435. if not cmdstr then return end
  436. if cmdstr == "box" or "UseSkinItem" == cmdstr then
  437. return
  438. end
  439. return true
  440. end
  441. -- 可否预览
  442. function canYulan(itemConfig)
  443. if not itemConfig then return end
  444. local cmdStr = itemConfig.cmd and itemConfig.cmd[1]
  445. if cmdStr and cmdStr == "box" then
  446. return true
  447. end
  448. --[[local getWay = itemConfig.get and itemConfig.get[1]
  449. if getWay == SuipianLogic.SUMMON_TYPE_DROP or
  450. getWay == SuipianLogic.SUMMON_TYPE_HERO_SP or
  451. getWay == SuipianLogic.SUMMON_TYPE_SHENQI_SP then
  452. local suipianType = itemConfig.get[2]
  453. if suipianType == SuipianLogic.SUMMON_SUBTYPE_HERO or
  454. suipianType == SuipianLogic.SUMMON_SUBTYPE_EQUIP then
  455. return true
  456. end
  457. end]]
  458. end
  459. -- 可否查看英雄详情
  460. function canDetail(itemConfig)
  461. local getWay = itemConfig.get and itemConfig.get[1]
  462. if getWay == SuipianLogic.SUMMON_TYPE_TARGET then
  463. local suipianType = itemConfig.get[2]
  464. if suipianType == SuipianLogic.SUMMON_SUBTYPE_HERO then
  465. local heroID = itemConfig.get[3]
  466. if HeroExcel.hero[heroID] then
  467. return true
  468. end
  469. end
  470. if suipianType == SuipianLogic.SUMMON_SUBTYPE_SKIN then
  471. local skinID = itemConfig.get[3]
  472. if SkinExcel.skin[skinID] then
  473. return true
  474. end
  475. end
  476. end
  477. end
  478. -- 可否合成
  479. function canHeCheng(itemConfig)
  480. local getWay = itemConfig.get and itemConfig.get[1]
  481. if getWay == SuipianLogic.SUMMON_TYPE_TARGET or getWay == SuipianLogic.SUMMON_TYPE_DROP then
  482. local suipianType = itemConfig.get[2]
  483. if suipianType == SuipianLogic.SUMMON_SUBTYPE_HERO then
  484. return true
  485. end
  486. if suipianType == SuipianLogic.SUMMON_SUBTYPE_SKIN then
  487. return true
  488. end
  489. if suipianType == SuipianLogic.SUMMON_SUBTYPE_TALISAM then
  490. return true
  491. end
  492. if suipianType == SuipianLogic.SUMMON_SUBTYPE_RELIC then
  493. return true
  494. end
  495. end
  496. if ItemDefine.isFuwen(itemConfig.id) then
  497. return true
  498. end
  499. end
  500. -- 可否穿戴
  501. function canEquip(itemConfig)
  502. if ItemDefine.isEquip(itemConfig.id) then
  503. return true
  504. end
  505. if ItemDefine.isFuwen(itemConfig.id) then
  506. return true
  507. end
  508. end
  509. -- 可否重铸
  510. function canCZhu(itemConfig)
  511. if ItemDefine.isFuwen(itemConfig.id) then
  512. return true
  513. end
  514. end
  515. -- 可否重铸
  516. function canFJie(itemConfig)
  517. if ItemDefine.isFuwen(itemConfig.id) then
  518. return true
  519. end
  520. end