EquipLogicGrid.lua 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. local lua_mongo = _G.lua_mongo
  2. -- local Msg = require("core.Msg")
  3. -- local Util = require("common.Util")
  4. -- local Grid = require("bag.Grid")
  5. -- local ItemDefine = require("bag.ItemDefine")
  6. local EquipExcel = require("excel.equip").equip
  7. -- local EquipLogic = require("equip.EquipLogic")
  8. local ItemDefine = require("bag.ItemDefine")
  9. local Util = require("common.Util")
  10. local HeroLogic = require("hero.HeroLogic")
  11. local HeroExcel = require("excel.hero")
  12. -- 装备品质
  13. EQUIP_COLOR_1 = 1 -- 绿
  14. EQUIP_COLOR_2 = 2 -- 蓝
  15. EQUIP_COLOR_3 = 3 -- 紫
  16. EQUIP_COLOR_4 = 4 -- 橙
  17. EQUIP_COLOR_5 = 5 -- 红
  18. -- 装备洗练时, 品质权重
  19. EQUIPWASH_COLOR_WEIGHT = {
  20. [EQUIP_COLOR_1] = 30,
  21. [EQUIP_COLOR_2] = 25,
  22. [EQUIP_COLOR_3] = 20,
  23. [EQUIP_COLOR_4] = 15,
  24. [EQUIP_COLOR_5] = 10,
  25. }
  26. -- 装备洗练时, 品质与属性值的倍数范围(需要除以100)
  27. EQUIPWASH_COLOR_MUL = {
  28. [EQUIP_COLOR_1] = {61, 75},
  29. [EQUIP_COLOR_2] = {76, 90},
  30. [EQUIP_COLOR_3] = {91, 105},
  31. [EQUIP_COLOR_4] = {106, 120},
  32. [EQUIP_COLOR_5] = {121, 135},
  33. }
  34. -- 生成戒指、护符的基础属性的最终值
  35. local function generateNewBaseAttr(equipId)
  36. local equipCfg = EquipExcel[equipId]
  37. local baseAttr = Util.copyTable(equipCfg.base)
  38. local randMul = math.random(equipCfg.randomseed[1][1], equipCfg.randomseed[1][2])
  39. for _, attrInfo in ipairs(baseAttr) do
  40. attrInfo[2] = math.floor(attrInfo[2] * randMul / 100)
  41. end
  42. return baseAttr
  43. end
  44. -- 生成装备基础属性的随机加成值
  45. function GenEquipBaseRandomVal(equipId)
  46. local val = 1
  47. local equipCfg = EquipExcel[equipId]
  48. if equipCfg and equipCfg.baserandom then
  49. local valAreaTb = equipCfg.baserandom[1]
  50. local minVal = (valAreaTb[1] or 1) * 100
  51. local maxVal = (valAreaTb[2] or 1) * 100
  52. val = math.random(minVal, maxVal)
  53. val = val / 100
  54. end
  55. return val
  56. end
  57. -- 创建装备
  58. function createGrid(id)
  59. local equipCfg = EquipExcel[id]
  60. if not equipCfg then
  61. assert()
  62. return
  63. end
  64. local equip = {}
  65. equip.id = id
  66. equip.uuid = lua_mongo.id() --唯一标识
  67. equip.attr = nil --当前属性
  68. equip.skill = nil
  69. equip.quality = 1 --默认为1
  70. equip.putUuid = nil --装备者
  71. equip.washAttr = nil --当前洗练属性
  72. equip.washQuality = nil --当前洗练品质
  73. equip.baseRandVal = GenEquipBaseRandomVal(id)
  74. if equipCfg.subType == ItemDefine.EQUIP_SUBTYPE_RING or equipCfg.subType == ItemDefine.EQUIP_SUBTYPE_AMULET then
  75. equip.quality = equipCfg.quality
  76. equip.baseAttr = generateNewBaseAttr(id)
  77. end
  78. return equip
  79. end
  80. --
  81. function createTempGrid(id, washAttr, washQuality)
  82. if not EquipExcel[id] then
  83. assert()
  84. return
  85. end
  86. local equip = {}
  87. equip.id = id
  88. equip.attr = washAttr --当前属性
  89. equip.quality = washQuality --默认为1
  90. return equip
  91. end
  92. -- 获取穿戴装备的英雄的职业
  93. function GetEquipOwnerJob(human, equipGrid)
  94. local jobId = 2 --默认是战士职业
  95. if not human or not equipGrid or not equipGrid.putUuid then
  96. return jobId
  97. end
  98. local heroGrid = HeroLogic.getHeroGridByUuid(human, equipGrid.putUuid)
  99. if not heroGrid then
  100. return jobId
  101. end
  102. local heroCfg = HeroExcel.hero[heroGrid.id]
  103. if not heroCfg then
  104. return jobId
  105. end
  106. jobId = heroCfg.job or 0
  107. return jobId
  108. end
  109. -- 合并装备套装属性(用于装备等级>=15级的装备)
  110. function MergeEquipSuitIm(targetData, sourceData)
  111. if not targetData or not sourceData or not next(sourceData) then
  112. return
  113. end
  114. targetData[#targetData+1] = {sourceData[1], sourceData[2]}
  115. end