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