DropSpecial.lua 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. -- 有两种特殊的掉落
  2. -- 英雄:根据星级 阵营(可多个) 是否精英抽选
  3. -- 神器:根据部位 等级 稀有度 阵营抽选
  4. local HeroExcel = require("excel.hero")
  5. local EquipExcel = require("excel.equip")
  6. local ItemExcel = require("excel.item").item
  7. local Grid = require("bag.Grid")
  8. local SuipianLogic = require("bag.SuipianLogic")
  9. local ItemDefine = require("bag.ItemDefine")
  10. local Msg = require("core.Msg")
  11. ITEM_HERO_SUIPIAN = ITEM_HERO_SUIPIAN or {}
  12. -- 碎片缓存
  13. function initAfterStart()
  14. for id, itemConfig in pairs(ItemExcel) do
  15. if itemConfig.mainType == ItemDefine.MAINTYPE_ITEM and
  16. itemConfig.subType == ItemDefine.ITEM_SUBTYPE_SUIPIAN then
  17. if itemConfig.get[1] ~= SuipianLogic.SUMMON_TYPE_TARGET and
  18. itemConfig.get[2] == SuipianLogic.SUMMON_SUBTYPE_HERO then
  19. local camp = itemConfig.cond[1]
  20. local star = itemConfig.cond[2]
  21. if not ITEM_HERO_SUIPIAN[camp] or not ITEM_HERO_SUIPIAN[camp][star] then
  22. ITEM_HERO_SUIPIAN[camp] = ITEM_HERO_SUIPIAN[camp] or {}
  23. ITEM_HERO_SUIPIAN[camp][star] = id
  24. end
  25. end
  26. end
  27. end
  28. end
  29. -- 根据星级 是否精英抽选英雄 阵营
  30. local tableHeroDrop
  31. function getDropHeroTable(star, isElite, campTb)
  32. tableHeroDrop = {}
  33. for heroID, heroConfig in pairs(HeroExcel.hero) do
  34. if star == heroConfig.star then -- 星级
  35. if heroConfig.isElite >= isElite then -- 是否精英
  36. local isMatchCamp = nil
  37. for i = 1, #campTb do
  38. if campTb[i] == heroConfig.camp then
  39. isMatchCamp = true
  40. break
  41. end
  42. end
  43. if isMatchCamp == true then
  44. tableHeroDrop[#tableHeroDrop + 1] = heroID
  45. end
  46. end
  47. end
  48. end
  49. end
  50. -- 根据部位 等级 稀有度 阵营抽选神器
  51. local tableShenqiDrop
  52. function getDropEquipTable(pos, lv, rare, campTb)
  53. tableShenqiDrop = {}
  54. for equipID, equipConfig in pairs(EquipExcel.equip) do
  55. if equipConfig.type == 3 then
  56. if equipConfig.pos == pos then
  57. if equipConfig.level == lv then
  58. if equipConfig.rare == rare then
  59. local isMatchCamp = nil
  60. for i = 1, #campTb do
  61. if campTb[i] == equipConfig.camp then
  62. isMatchCamp = true
  63. break
  64. end
  65. end
  66. if isMatchCamp == true then
  67. tableShenqiDrop[#tableShenqiDrop + 1] = equipID
  68. end
  69. end
  70. end
  71. end
  72. end
  73. end
  74. end
  75. -- getWay
  76. function queryHeroGetWay(human, id, camp, star)
  77. local itemConfig = ItemExcel[id]
  78. local msgRet = Msg.gc.GC_ITEM_SUIPIAN_GETWAR_BY_HERO_ID
  79. if itemConfig then
  80. Grid.makeItem(msgRet.net, id, 1)
  81. else
  82. if not ITEM_HERO_SUIPIAN[camp] then return end
  83. if not ITEM_HERO_SUIPIAN[camp][star] then return end
  84. local itemID = ITEM_HERO_SUIPIAN[camp][star]
  85. Grid.makeItem(msgRet.net, itemID, 1)
  86. end
  87. Msg.send(msgRet, human.fd)
  88. end