BossLogic.lua 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. ---------------------------------------------------------
  2. -- boss逻辑
  3. ---------------------------------------------------------
  4. local BossDBLogic = require("boss.BossDBLogic")
  5. local CombatDefine = require("combat.CombatDefine")
  6. local CombatLogic = require("combat.CombatLogic")
  7. local CombatImpl = require("combat.CombatImpl")
  8. local RoleLogic = require("role.RoleLogic")
  9. function makeBossHurtNet(net, uuid, hurt)
  10. if net == nil then return end
  11. if not RoleLogic.getRoleBaseByUuid(uuid, net.roleBase) then
  12. return
  13. end
  14. net.hurt = hurt or 0
  15. return true
  16. end
  17. function getCombatObjList(bossData, zhandouli)
  18. if not bossData then return end
  19. local objList, pet, rolebase = CombatLogic.getMonsterObjList(bossData.monsterOutID, CombatDefine.COMBAT_OBJ_TYPE3)
  20. if not objList then return end
  21. for index, obj in pairs(objList) do
  22. if BossDBLogic.getBossHp(bossData, index) <= 0 then
  23. objList[index] = nil
  24. end
  25. end
  26. if zhandouli then
  27. rolebase.zhandouli = zhandouli
  28. end
  29. return objList, pet, rolebase
  30. end
  31. -- 战斗设置
  32. function onFightBegin(human, bossData)
  33. for index = 1, CombatDefine.COMBAT_HERO_CNT do
  34. local defPos = CombatLogic.getPos(CombatDefine.DEFEND_SIDE, index)
  35. local defObj = CombatImpl.objList[defPos]
  36. if defObj ~= nil then -- 更新血量
  37. local obj = bossData.objList[index]
  38. if obj and obj.hp then
  39. defObj.hp = obj.hp
  40. end
  41. end
  42. end
  43. end
  44. -- 挑战结果
  45. function onFightEnd(human, bossData, combatInfo)
  46. local hurtSum = 0
  47. local hurtList = {}
  48. for index = 1, CombatDefine.COMBAT_HERO_CNT do
  49. local defPos = CombatLogic.getPos(CombatDefine.DEFEND_SIDE, index)
  50. local defObj = combatInfo.objList[defPos]
  51. local hurt = BossDBLogic.updateBossHp(bossData, index, defObj)
  52. hurtSum = hurtSum + hurt
  53. hurtList[index] = hurt
  54. end
  55. if bossData.bossType == BossDBLogic.BOSS_TYPE_UNION then
  56. -- 公会BOSS 伤害为0 不上榜
  57. if hurtSum > 0 then
  58. BossDBLogic.updateBossRecord(bossData, human.db._id, hurtSum)
  59. end
  60. else
  61. BossDBLogic.updateBossRecord(bossData, human.db._id, hurtSum)
  62. end
  63. BossDBLogic.updateBossData(bossData)
  64. return hurtSum, hurtList
  65. end
  66. function onFightHurt(human, bossData, combatInfo)
  67. local hurtSum = 0
  68. local hurtList = {}
  69. for index = 1, CombatDefine.COMBAT_HERO_CNT do
  70. local defPos = CombatLogic.getPos(CombatDefine.DEFEND_SIDE, index)
  71. local defObj = combatInfo.objList[defPos]
  72. local hurt = BossDBLogic.updateBossHp(bossData, index, defObj)
  73. hurtSum = hurtSum + hurt
  74. hurtList[index] = hurt
  75. end
  76. return hurtSum, hurtList
  77. end
  78. function updateFightHurt(human, bossData, hurtList, combatInfo)
  79. local hurtSum = 0
  80. for index = 1, CombatDefine.COMBAT_HERO_CNT do
  81. local hurt = hurtList[index]
  82. if hurt and hurt ~= 0 then
  83. local defPos = CombatLogic.getPos(CombatDefine.DEFEND_SIDE, index)
  84. local defObj = combatInfo.objList[defPos]
  85. local realhurt = BossDBLogic.updateBossHpByHurt(bossData, index, hurt, defObj)
  86. hurtSum = hurtSum + realhurt
  87. end
  88. end
  89. BossDBLogic.updateBossRecord(bossData, human.db._id, hurtSum)
  90. BossDBLogic.updateBossData(bossData)
  91. return hurtSum
  92. end
  93. function saodangEnd(human, bossData, hurtList)
  94. local hurtSum = 0
  95. for index = 1, CombatDefine.COMBAT_HERO_CNT do
  96. local hurt = hurtList[index]
  97. if hurt and hurt ~= 0 then
  98. local realhurt = BossDBLogic.updateBossHpSaoDang(bossData, index, hurt)
  99. hurtSum = hurtSum + realhurt
  100. end
  101. end
  102. BossDBLogic.updateBossRecord(bossData, human.db._id, hurtSum)
  103. BossDBLogic.updateBossData(bossData)
  104. return hurtSum
  105. end
  106. -- 添加记录点赞
  107. function giveLikeBossRecord(bossData, uuid)
  108. BossDBLogic.updateBossRecordLike(bossData, uuid)
  109. BossDBLogic.updateBossData(bossData)
  110. return true
  111. end