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 | ... | ... |