Commit bdfc994d45b81a30752b60ecbc7aa93c20332fef
Merge branch 'develop' into qa
* develop: 双倍掉掉落bug
Showing
2 changed files
with
36 additions
and
29 deletions
Show diff stats
src/actions/HangAction.lua
| ... | ... | @@ -19,7 +19,7 @@ local _M = {} |
| 19 | 19 | local function checkReward(role) |
| 20 | 20 | local hangInfo = role:getProperty("hangInfo") |
| 21 | 21 | if not hangInfo.carbonId or not hangInfo.coinTime or not hangInfo.itemTime then |
| 22 | - return | |
| 22 | + return false | |
| 23 | 23 | end |
| 24 | 24 | local carbonData = csvdb["idle_battleCsv"][hangInfo.carbonId] |
| 25 | 25 | local nowCoinTime = math.min(skynet.timex(), hangInfo.endCoinTime or 0) |
| ... | ... | @@ -33,11 +33,8 @@ local function checkReward(role) |
| 33 | 33 | local coinDoubleCount = math.max(0, math.floor((doubleTime) / globalCsv.idle_money_produce_cd)) * 2 |
| 34 | 34 | hangInfo.coinTime = nowCoinTime |
| 35 | 35 | |
| 36 | - doubleTime = role.activity:getActHangDoubleTime(hangInfo.itemTime, nowitemTime) | |
| 37 | - normalTime = nowItemTime - hangInfo.coinTime - doubleTime | |
| 36 | + normalTime = nowItemTime - hangInfo.itemTime | |
| 38 | 37 | local itemCount = math.max(0, math.floor((normalTime) / globalCsv.idle_item_produce_cd)) |
| 39 | - local itemDoubleCount = math.max(0, math.floor((doubleTime) / globalCsv.idle_item_produce_cd)) | |
| 40 | - itemCount = itemCount + itemDoubleCount | |
| 41 | 38 | hangInfo.itemTime = nowItemTime |
| 42 | 39 | |
| 43 | 40 | local items = role:getProperty("hangBag") |
| ... | ... | @@ -71,34 +68,42 @@ local function checkReward(role) |
| 71 | 68 | local tempPool = clone(pool) |
| 72 | 69 | while #tempPool > 0 do |
| 73 | 70 | local idx = math.randWeight(tempPool, 3) |
| 74 | - local cur = pool[idx] | |
| 75 | - if (items[cur[1]] and math.ceil((items[cur[1]] + cur[2]) / globalCsv.idle_field_limit) > math.ceil(items[cur[1]] / globalCsv.idle_field_limit)) | |
| 76 | - or not items[cur[1]] then --要占用新栏位的情况 | |
| 77 | - local addFC | |
| 78 | - if not items[cur[1]] then | |
| 79 | - addFC = math.ceil(cur[2] / globalCsv.idle_field_limit) | |
| 80 | - else | |
| 81 | - local frontC = items[cur[1]] % globalCsv.idle_field_limit | |
| 82 | - if frontC == 0 then | |
| 83 | - frontC = globalCsv.idle_field_limit | |
| 84 | - end | |
| 85 | - addFC = math.ceil((cur[2] - (globalCsv.idle_field_limit - frontC)) / globalCsv.idle_field_limit) | |
| 71 | + local cur = clone(pool[idx]) | |
| 72 | + if cur[1] ~= 1 then -- 轮空 id | |
| 73 | + if cur[1] == ItemId.BreakCost and doubleTime > 0 then | |
| 74 | + cur[2] = cur[2] * 2 | |
| 86 | 75 | end |
| 87 | - if curFC + addFC <= selfFC then | |
| 88 | - curFC = curFC + addFC | |
| 89 | - items[cur[1]] = (items[cur[1]] or 0) + cur[2] | |
| 90 | - break | |
| 76 | + if (items[cur[1]] and math.ceil((items[cur[1]] + cur[2]) / globalCsv.idle_field_limit) > math.ceil(items[cur[1]] / globalCsv.idle_field_limit)) | |
| 77 | + or not items[cur[1]] then --要占用新栏位的情况 | |
| 78 | + local addFC | |
| 79 | + if not items[cur[1]] then | |
| 80 | + addFC = math.ceil(cur[2] / globalCsv.idle_field_limit) | |
| 81 | + else | |
| 82 | + local frontC = items[cur[1]] % globalCsv.idle_field_limit | |
| 83 | + if frontC == 0 then | |
| 84 | + frontC = globalCsv.idle_field_limit | |
| 85 | + end | |
| 86 | + addFC = math.ceil((cur[2] - (globalCsv.idle_field_limit - frontC)) / globalCsv.idle_field_limit) | |
| 87 | + end | |
| 88 | + if curFC + addFC <= selfFC then | |
| 89 | + curFC = curFC + addFC | |
| 90 | + items[cur[1]] = (items[cur[1]] or 0) + cur[2] | |
| 91 | + break | |
| 92 | + else | |
| 93 | + --加不了,换别的东西 | |
| 94 | + table.remove(tempPool, idx) | |
| 95 | + end | |
| 91 | 96 | else |
| 92 | - --加不了,换别的东西 | |
| 93 | - table.remove(tempPool, idx) | |
| 97 | + items[cur[1]] = items[cur[1]] + cur[2] | |
| 98 | + break | |
| 94 | 99 | end |
| 95 | 100 | else |
| 96 | - items[cur[1]] = items[cur[1]] + cur[2] | |
| 97 | 101 | break |
| 98 | 102 | end |
| 99 | 103 | end |
| 100 | 104 | curIC = curIC + 1 |
| 101 | 105 | end |
| 106 | + | |
| 102 | 107 | for i = 1, itemCount do |
| 103 | 108 | randomItem() |
| 104 | 109 | end |
| ... | ... | @@ -106,6 +111,8 @@ local function checkReward(role) |
| 106 | 111 | if coinCount > 0 or itemCount > 0 then |
| 107 | 112 | return true |
| 108 | 113 | end |
| 114 | + | |
| 115 | + return false | |
| 109 | 116 | end |
| 110 | 117 | |
| 111 | 118 | --开始一个新的关卡 | ... | ... |
src/models/Activity.lua
| ... | ... | @@ -4,10 +4,10 @@ local string_format = string.format |
| 4 | 4 | Activity.ActivityType = { |
| 5 | 5 | Sign = 1, -- 签到 |
| 6 | 6 | DoubleDrop = 2, -- 双倍掉落 |
| 7 | - DrawHero = 3, --抽卡周 | |
| 8 | - FoodSell = 4, --贩卖周 | |
| 9 | - OpenBox = 5, --拆解周 | |
| 10 | - AdvDraw = 6, --拾荒抽周 | |
| 7 | + FoodSell = 3, --贩卖周 料理 | |
| 8 | + DrawHero = 4, --抽卡周 招募 | |
| 9 | + AdvDraw = 5, --拾荒抽周 资助 | |
| 10 | + OpenBox = 6, --拆解周 时钟箱 | |
| 11 | 11 | } |
| 12 | 12 | |
| 13 | 13 | |
| ... | ... | @@ -346,7 +346,7 @@ function Activity:getActHangDoubleTime(lastTs, nowTs) |
| 346 | 346 | local timeNow = skynet.timex() |
| 347 | 347 | lastTs = math.max(lastTs, openTs) |
| 348 | 348 | if isOpen then |
| 349 | - if nowTs > openTs then | |
| 349 | + if nowTs > openTs and nowTs > lastTs then | |
| 350 | 350 | return nowTs - lastTs |
| 351 | 351 | else |
| 352 | 352 | return 0 | ... | ... |