MonthDrunkery.lua 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. -- 月度活动 酒馆达标 悬赏大师
  2. -- human.db.actMonthTask.drunk
  3. local Util = require("common.Util")
  4. local Msg = require("core.Msg")
  5. local ObjHuman = require("core.ObjHuman")
  6. local MonthactExcel = require("excel.monthAct")
  7. local MailExcel = require("excel.mail")
  8. local Grid = require("bag.Grid")
  9. local MonthActFill = require("monthAct.MonthDataFill")
  10. local MonthActLogic = require("monthAct.MonthActLogic")
  11. local MailManager = require("mail.MailManager")
  12. local YunYingLogic = require("yunying.YunYingLogic")
  13. MONTHACT_DRUNK_TYPE_1 = 1 -- 酒馆达标活动 完成%d星 佣兵任务
  14. MONTHACT_DRUNK_FINISH_TYPE = 2 -- 酒馆达标活动完成所有其他任务的任务type
  15. local function getNowValue(human, id)
  16. if not human.db.actMonthTask or
  17. not human.db.actMonthTask.drunk then
  18. return 0
  19. end
  20. return human.db.actMonthTask.drunk[id] or 0
  21. end
  22. local function setNowValue(human, id, value)
  23. human.db.actMonthTask = human.db.actMonthTask or {}
  24. human.db.actMonthTask.drunk = human.db.actMonthTask.drunk or {}
  25. human.db.actMonthTask.drunk[id] = value
  26. end
  27. -- 检查酒馆活动是否全部完成
  28. local function checkDrunkActAllFinish(human)
  29. local isok, finishId = isFinish(human)
  30. if not isok then return end
  31. local cf = MonthactExcel.drunkery[finishId]
  32. if not cf then return end
  33. --检查是否已经触发过奖励
  34. if getNowValue(human, finishId) > 0 then
  35. return
  36. end
  37. -- 改db 发放奖励
  38. setNowValue(human, finishId, 1)
  39. ObjHuman.save(human)
  40. local title = MailExcel.mail[12].title
  41. local content = MailExcel.mail[12].content
  42. local senderName = MailExcel.mail[12].senderName
  43. MailManager.add(MailManager.SYSTEM, human.db._id, title, content, cf.reward, senderName)
  44. end
  45. local function addDrunkCnt(human, id, addNum)
  46. --检查id是否非法
  47. local cf = MonthactExcel.drunkery[id]
  48. if not cf then return end
  49. local oldStep = getNowValue(human, id)
  50. if oldStep >= cf.taskCnt then return end
  51. local newStep = math.min(oldStep + addNum, cf.taskCnt)
  52. setNowValue(human, id, newStep)
  53. if newStep < cf.taskCnt then return end
  54. ObjHuman.save(human)
  55. --达成任务 发放奖励 并且检查是否全部完成
  56. local title = MailExcel.mail[11].title
  57. local content = Util.format(MailExcel.mail[11].content, cf.special)
  58. local senderName = MailExcel.mail[11].senderName
  59. MailManager.add(MailManager.SYSTEM, human.db._id, title, content, cf.reward, senderName)
  60. checkDrunkActAllFinish(human)
  61. for k, v in pairs(funcID) do
  62. YunYingLogic.updateIcon(YYInfo[k], human)
  63. break
  64. end
  65. end
  66. function isFinish(human)
  67. for id, cf in ipairs(MonthactExcel.drunkery) do
  68. if cf.type == MONTHACT_DRUNK_FINISH_TYPE then
  69. return true, id
  70. end
  71. if getNowValue(human, id) < cf.taskCnt then
  72. return
  73. end
  74. end
  75. end
  76. --查询
  77. function query(human)
  78. local msgRet = Msg.gc.GC_MONTHACT_DRUNK_QUERY
  79. msgRet.leftTime = MonthActLogic.getActLeftTime(human)
  80. for id, cf in ipairs(MonthactExcel.drunkery) do
  81. MonthActFill.makeMonthTaskData(msgRet.list[id], cf, id)
  82. msgRet.list[id].cur = getNowValue(human, id)
  83. end
  84. msgRet.list[0] = #MonthactExcel.drunkery
  85. --Msg.trace(msgRet)
  86. Msg.send(msgRet, human.fd)
  87. end
  88. -- 酒馆达标活动计数入口 Ex 之前
  89. function addDrunkCntEx(human, star, addNum)
  90. -- 检查活动是否结束
  91. MonthActLogic.checkActEndTime(human)
  92. star = star or 0
  93. for id, cf in ipairs(MonthactExcel.drunkery) do
  94. if cf.type == MONTHACT_DRUNK_TYPE_1 and star == cf.special then
  95. addDrunkCnt(human, id, addNum)
  96. break
  97. end
  98. end
  99. end
  100. --[[
  101. function isRed(human)
  102. if not isFinish(human) then return true end
  103. end
  104. --]]