Commit fc316d1f24ff31d4cbd8acfaa944d4473af0a51f

Authored by zhouhaihai
1 parent 17ba67dd

冒险体力优化

src/actions/AdvAction.lua
... ... @@ -115,7 +115,7 @@ function _M.startAdvRpc( agent, data )
115 115 if advElM < relayData.unlockfloor then return 15 end --未解锁
116 116 end
117 117 else -- 普通模式判断
118   - if role.dailyData:getProperty("advC") >= role:getAdvHangLimit() then return 2 end -- 是否有体力
  118 + if not role:checkAdvCount(chapterData.limitlevel) then return 2 end -- 是否有体力
119 119 if layer >= chapterData.limitlevel then return 4 end
120 120 -- 关卡开放判断
121 121 if not role:advChapterIsOpen(chapterId) then return 5 end
... ... @@ -142,7 +142,7 @@ function _M.startAdvRpc( agent, data )
142 142 if AdvCommon.isEndless(chapterId) then
143 143 role.dailyData:updateProperty({field = "advElC", delta = 1})
144 144 else
145   - role.dailyData:updateProperty({field = "advC", delta = 1})
  145 + role:changeAdvCount(chapterData.limitlevel)
146 146 end
147 147  
148 148 local support = {} -- 支援效果
... ... @@ -246,7 +246,7 @@ function _M.startHangRpc(agent, data)
246 246 if not next(advRelay[chapterId] or {}) then return end -- 没有开放
247 247  
248 248  
249   - if role.dailyData:getProperty("advC") >= role:getAdvHangLimit() then return end -- 是否有体力
  249 + if not role:checkAdvCount(chapterData.limitlevel) then return end -- 是否有体力
250 250  
251 251 if not checkFormat(role, format, role:getAdvData():isRunning()) then return end --编队是否正确
252 252  
... ... @@ -285,7 +285,7 @@ function _M.startHangRpc(agent, data)
285 285  
286 286 role:changeUpdates({{type = "advHang", field = chapterId, value = info}})
287 287  
288   - role.dailyData:updateProperty({field = "advC", delta = 1})
  288 + role:changeAdvCount(chapterData.limitlevel)
289 289 role:checkTaskEnter("AdvStart", {id = chapterId})
290 290 role:log("adv_action", {desc = "startHang", int1 = chapterId})
291 291  
... ... @@ -365,11 +365,12 @@ function _M.endHangRpc(agent, data)
365 365 reward = role:award(idleReward, {log = {desc = "advHang", int1 = chapterId}})
366 366 else
367 367 if cancel then
368   - if role.dailyData:getProperty("advC") <= 0 then
369   - isFull = true
370   - else
371   - role.dailyData:updateProperty({field = "advC", delta = -1})
372   - end
  368 + role:changeAdvCount(-chapterData.limitlevel)
  369 + -- if role:getProperty("advC") <= 0 then
  370 + -- isFull = true
  371 + -- else
  372 + -- role:updateProperty({field = "advC", delta = -chapterData.limitlevel})
  373 + -- end
373 374 else
374 375 return
375 376 end
... ... @@ -405,7 +406,7 @@ function _M.buyAdvCountRpc(agent , data)
405 406 role.dailyData:updateProperty({field = "advElC", delta = -count})
406 407 role.dailyData:updateProperty({field = "advElBC", delta = count})
407 408 else
408   - role.dailyData:updateProperty({field = "advC", delta = -count})
  409 + role:changeAdvCount(-count * globalCsv.adv_daily_buy_num)
409 410 role.dailyData:updateProperty({field = "advBC", delta = count})
410 411 end
411 412 role:log("adv_action", {desc = "buyAdvCount", short1 = isEl and 1 or 0, int1 = count})
... ...
src/actions/GmAction.lua
... ... @@ -337,7 +337,7 @@ end
337 337  
338 338 table.insert(helpDes, {"冒险次数恢复", "advf"})
339 339 function _M.advf(role, pms)
340   - role.dailyData:updateProperty({field = "advC", value = 0})
  340 + role:updateProperty({field = "advC", value = 0})
341 341 role.dailyData:updateProperty({field = "advElC", value = 0})
342 342  
343 343 role:log("gm_action", {desc = "advf", key1 = pms.sender})
... ...
src/actions/HangAction.lua
... ... @@ -562,7 +562,6 @@ end
562 562 function _M.chatLineRpc(agent, data)
563 563 local role = agent.role
564 564 local msg = MsgPack.unpack(data)
565   -
566 565 local id = msg.id
567 566  
568 567 local idleData = csvdb["idle_battleCsv"][id]
... ...
src/models/Daily.lua
... ... @@ -10,7 +10,6 @@ Daily.schema = {
10 10 commentHero = {"string", ""}, -- 单日评论食灵记录 type=1
11 11 hangQC = {"number", 0}, -- 挂机快速次数
12 12 dinerQC = {"number", 0}, -- 贩卖加速次数
13   - advC = {"number", 0}, -- 冒险次数(消耗体力)
14 13 advElC = {"number", 0}, -- 无尽次数(消耗体力)
15 14 advBC = {"number", 0}, -- 冒险次数购买次数(冒险体力购买次数)
16 15 advElBC = {"number", 0}, -- 无尽次数购买次数(冒险体力购买次数)
... ... @@ -52,7 +51,7 @@ function Daily:refreshDailyData(notify)
52 51 redisproxy:del(FRIEND_POINT:format(self.owner:getProperty("id")))
53 52 local dataMap = {}
54 53 for field, schema in pairs(self.schema) do
55   - if field == "advC" or field == "advElC" then
  54 + if field == "advElC" then
56 55 if self:getProperty(field) > 0 then
57 56 dataMap[field] = 0
58 57 end
... ... @@ -85,7 +84,6 @@ function Daily:data()
85 84 return {
86 85 hangQC = self:getProperty("hangQC"),
87 86 dinerQC = self:getProperty("dinerQC"),
88   - advC = self:getProperty("advC"),
89 87 advBC = self:getProperty("advBC"),
90 88 advElC = self:getProperty("advElC"),
91 89 advElBC = self:getProperty("advElBC"),
... ...
src/models/Role.lua
... ... @@ -83,6 +83,8 @@ Role.schema = {
83 83 advRelay = {"table", {}}, -- 冒险中继点记录 {[chapter] = {[level] = 1}, [-1] = {[level] = 1}} -- -1 无尽 方便重置
84 84 advSup = {"table", {}}, -- 冒险支援效果 待选项
85 85 advLimit = {"table", {}}, -- 冒险事件每次的limit
  86 + advC = {"number", 0}, -- 冒险次数(消耗体力)
  87 + advCT = {"number", 0}, -- 冒险次数 上次恢复时间
86 88  
87 89 --挂机相关
88 90 hangPass = {"table", {}}, -- 挂机通过的最大关卡
... ... @@ -324,6 +326,8 @@ function Role:data()
324 326 advShop = self:getProperty("advShop"),
325 327 advEAchiev = self:getProperty("advEAchiev"),
326 328 advSup = self:getProperty("advSup"),
  329 + advC = self:getProperty("advC"),
  330 + advCT = self:getProperty("advCT"),
327 331  
328 332 hangPass = self:getProperty("hangPass"),
329 333 hangGift = self:getProperty("hangGift"),
... ...
src/models/RolePlugin.lua
... ... @@ -838,6 +838,37 @@ function RolePlugin.bind(Role)
838 838 return globalCsv.adv_daily_cross_count + self:getFuncLv(FuncOpenType.AdvCount)
839 839 end
840 840  
  841 + function Role:checkAdvCount(need)
  842 + local oldCount = self:getProperty("advC")
  843 + local oldTime = self:getProperty("advCT")
  844 + local newCount = oldCount
  845 + if oldCount > 0 then
  846 + local add = math.max(math.floor((skynet.timex() - oldTime) / (globalCsv.adv_daily_regain_min * 60)), 0)
  847 + newCount = math.max(oldCount - add, 0)
  848 + end
  849 +
  850 + return newCount + need <= self:getAdvHangLimit()
  851 + end
  852 +
  853 + --忽略上限
  854 + function Role:changeAdvCount(change)
  855 + local count = self:getProperty("advC")
  856 + local ctime = self:getProperty("advCT")
  857 + if ctime == 0 then
  858 + ctime = skynet.timex()
  859 + end
  860 + local add = math.max(math.floor((skynet.timex() - ctime) / (globalCsv.adv_daily_regain_min * 60)), 0)
  861 + local nextTime = ctime + add * (globalCsv.adv_daily_regain_min * 60)
  862 + if count > 0 then
  863 + count = math.max(count - add, 0)
  864 + end
  865 +
  866 + self:updateProperties({
  867 + advC = count + change,
  868 + advCT = ctime,
  869 + })
  870 + end
  871 +
841 872 function Role:getAdvElLimit()
842 873 return globalCsv.adv_endless_daily_cross_count + self:getFuncLv(FuncOpenType.AdvCountEL)
843 874 end
... ...