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 |