CombatPetCalc.lua 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. local Util = require("common.Util")
  2. local CombatDefine = require("combat.CombatDefine")
  3. local SkillExcel = require("excel.skill").skill
  4. local BufferExcel = require("excel.buffer").buffer
  5. local MoshouExcel = require("excel.moshou")
  6. local MoshouGrid = require("moshou.MoshouGrid")
  7. local CombatImpl = require("combat.CombatImpl")
  8. local MoshouLogic = require("moshou.MoshouLogic")
  9. local function calcHurt(skillConf,lv)
  10. local hurt = skillConf.hurtRate[1]
  11. local hurtRateGrow = skillConf.hurtRateGrow
  12. hurt = hurt + hurtRateGrow * (lv - 1)
  13. return hurt
  14. end
  15. local function calcArgs(skillConf,lv)
  16. local args = Util.copyTable(skillConf.args)
  17. local argsGrow = skillConf.argsGrow
  18. local cmd = skillConf.cmd
  19. if #argsGrow > 0 then
  20. if cmd == "attr" then
  21. for i = 1,#args do
  22. local v1 = args[i]
  23. local v2 = argsGrow[i]
  24. v1[2] = v1[2] + math.ceil((lv / v2[2]) * v2[1])
  25. end
  26. elseif cmd == "hp" or cmd == "hpHurt" or cmd == "hurt" or cmd == "jobHurt" or cmd == "jobHurt" then
  27. local v2 = argsGrow[1]
  28. args[2] = args[2] + math.ceil((lv / v2[2]) * v2[1])
  29. elseif cmd == "mp" then
  30. local v2 = argsGrow[1]
  31. args[1] = args[1] + math.ceil((lv / v2[2]) * v2[1])
  32. end
  33. end
  34. return args
  35. end
  36. function calcGrowArgs(pet)
  37. local skillID = pet.skillList[1][1]
  38. local skillConf = SkillExcel[skillID]
  39. if skillConf.type == CombatDefine.SKILL_TYPE4 then
  40. pet.hurt = calcHurt(skillConf, pet.lv)
  41. pet.args = calcArgs(skillConf, pet.lv)
  42. end
  43. end
  44. function clacBuffArgs(pet)
  45. local skillID = pet.skillList[1][1]
  46. local skillConf = SkillExcel[skillID]
  47. if not skillConf then return end
  48. pet.buffers = pet.buffers or {}
  49. local lv = pet.lv
  50. local len = 0
  51. for i = 1,#skillConf.buffers do
  52. local bufLv = lv - 1
  53. local bufferId = skillConf.buffers[i][1]
  54. local buffConf = BufferExcel[bufferId]
  55. if buffConf and #buffConf.args > 0 then
  56. pet.buffers[bufferId] = pet.buffers[bufferId] or {}
  57. if buffConf.cmd == "attr" or buffConf.cmd == "attrQusan" then
  58. local bugArg = {}
  59. for j = 1,#buffConf.args do
  60. local attrId = buffConf.args[j][1]
  61. local val = buffConf.args[j][2]
  62. local growRate = 0
  63. if buffConf.argsGrow[j] then
  64. local growLv = buffConf.argsGrow[j][2]
  65. if bufLv >= growLv then
  66. growRate = buffConf.argsGrow[j][1]
  67. growRate = math.floor(bufLv/growLv) * growRate
  68. end
  69. table.insert(bugArg, {attrId,growRate+val})
  70. end
  71. end
  72. pet.buffers[bufferId].args = bugArg
  73. len = len + 1
  74. elseif #buffConf.args > 0 then
  75. local bugArg = {}
  76. local attrId = buffConf.args[1]
  77. local val = buffConf.args[2] or 0
  78. local growRate = 0
  79. if #buffConf.argsGrow > 0 then
  80. local growLv = buffConf.argsGrow[1][2]
  81. if bufLv >= growLv then
  82. growRate = buffConf.argsGrow[1][1]
  83. growRate = math.floor(bufLv/growLv) * growRate
  84. end
  85. end
  86. --print(" bufferId attrId , val + growRate ", bufferId , attrId, val + growRate)
  87. bugArg = {attrId, val + growRate}
  88. pet.buffers[bufferId].args = bugArg
  89. len = len + 1
  90. end
  91. end
  92. end
  93. pet.buffers[0] = len
  94. end