Commit fc316d1f24ff31d4cbd8acfaa944d4473af0a51f
1 parent
17ba67dd
冒险体力优化
Showing
6 changed files
with
48 additions
and
15 deletions
Show diff stats
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
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 | ... | ... |