Commit 8cd3770f752dbb5189b45200d871e06749ccb813
1 parent
e621c84d
挂机关卡可以选择,经验金币根据最高关卡计算
Showing
5 changed files
with
69 additions
and
56 deletions
Show diff stats
src/actions/HangAction.lua
... | ... | @@ -22,6 +22,7 @@ local function checkReward(role) |
22 | 22 | return false |
23 | 23 | end |
24 | 24 | local carbonData = csvdb["idle_battleCsv"][hangInfo.carbonId] |
25 | + local expCarbonData = csvdb["idle_battleCsv"][hangInfo.expCarbonId] | |
25 | 26 | local nowCoinTime = math.min(skynet.timex(), hangInfo.endCoinTime or 0) |
26 | 27 | local nowItemTime = math.min(skynet.timex(), hangInfo.endItemTime or 0) |
27 | 28 | |
... | ... | @@ -39,9 +40,9 @@ local function checkReward(role) |
39 | 40 | |
40 | 41 | local items = role:getProperty("hangBag") |
41 | 42 | coinCount = coinCount + coinDoubleCount |
42 | - items[ItemId.Gold] = math.floor((items[ItemId.Gold] or 0) + coinCount * carbonData.money) | |
43 | - items[ItemId.Exp] = math.floor((items[ItemId.Exp] or 0) + coinCount * carbonData.exp) | |
44 | - items[ItemId.PlayerExp] = math.floor((items[ItemId.PlayerExp] or 0) + coinCount * carbonData.playerExp) | |
43 | + items[ItemId.Gold] = math.floor((items[ItemId.Gold] or 0) + coinCount * expCarbonData.money) | |
44 | + items[ItemId.Exp] = math.floor((items[ItemId.Exp] or 0) + coinCount * expCarbonData.exp) | |
45 | + items[ItemId.PlayerExp] = math.floor((items[ItemId.PlayerExp] or 0) + coinCount * expCarbonData.playerExp) | |
45 | 46 | |
46 | 47 | local pool = {} |
47 | 48 | for _, temp in pairs(carbonData.item:toArray()) do |
... | ... | @@ -139,6 +140,7 @@ function _M.startRpc( agent, data ) |
139 | 140 | local hangInfo = role:getProperty("hangInfo") |
140 | 141 | local isNew = not hangInfo.carbonId |
141 | 142 | hangInfo.carbonId = carbonId |
143 | + hangInfo.expCarbonId = isNew and carbonId or hangInfo.expCarbonId | |
142 | 144 | local nowTime = skynet.timex() |
143 | 145 | if isNew then |
144 | 146 | hangInfo.coinTime = nowTime |
... | ... | @@ -193,7 +195,7 @@ function _M.startBattleRpc(agent, data) |
193 | 195 | return 1 |
194 | 196 | end |
195 | 197 | |
196 | - local hangInfo = role:getProperty("hangInfo") | |
198 | + local hangInfo = role:getProperty("hangInfo") or {} | |
197 | 199 | if curData.main ~= 1 then |
198 | 200 | if carbonId ~= hangInfo.carbonId then |
199 | 201 | return 2 |
... | ... | @@ -214,7 +216,7 @@ end |
214 | 216 | function _M.endBattleRpc(agent, data) |
215 | 217 | local role = agent.role |
216 | 218 | local msg = MsgPack.unpack(data) |
217 | - local hangInfo = role:getProperty("hangInfo") | |
219 | + local hangInfo = role:getProperty("hangInfo") or {} | |
218 | 220 | if not msg.key or msg.key ~= _BattleKey then |
219 | 221 | SendPacket(actionCodes.Hang_endBattleRpc, MsgPack.pack({errorCode = 1})) |
220 | 222 | return true |
... | ... | @@ -225,6 +227,7 @@ function _M.endBattleRpc(agent, data) |
225 | 227 | if not carbonData then |
226 | 228 | return 2 |
227 | 229 | end |
230 | + | |
228 | 231 | if carbonData.main ~= 1 then |
229 | 232 | if carbonId ~= hangInfo.carbonId then |
230 | 233 | return 3 |
... | ... | @@ -273,8 +276,8 @@ function _M.endBattleRpc(agent, data) |
273 | 276 | end |
274 | 277 | local nextCarbonId = role:getNextCarbonId(carbonId) |
275 | 278 | -- 设置挂机关卡 |
276 | - if isWin and hangInfo.carbonId < nextCarbonId then | |
277 | - hangInfo.carbonId = nextCarbonId | |
279 | + if isWin and (hangInfo.carbonId or 0) < nextCarbonId then | |
280 | + hangInfo.expCarbonId = nextCarbonId | |
278 | 281 | local cfg = csvdb["idle_battleCsv"][nextCarbonId] |
279 | 282 | if cfg then |
280 | 283 | hangInfo.bossTime = skynet.timex() + cfg.idle_time |
... | ... | @@ -382,6 +385,7 @@ function _M.quickRpc(agent , data) |
382 | 385 | local hangInfo = role:getProperty("hangInfo") |
383 | 386 | if not hangInfo.carbonId then return end |
384 | 387 | local carbonData = csvdb["idle_battleCsv"][hangInfo.carbonId] |
388 | + local expCarbonData = csvdb["idle_battleCsv"][hangInfo.expCarbonId] | |
385 | 389 | |
386 | 390 | local curCount = role.dailyData:getProperty("hangQC") + 1 |
387 | 391 | local costs = globalCsv.idle_quickproduce_cost:toArray(true, "=") |
... | ... | @@ -398,9 +402,9 @@ function _M.quickRpc(agent , data) |
398 | 402 | |
399 | 403 | local coinCount = math.floor(time / globalCsv.idle_money_produce_cd) |
400 | 404 | local itemCount = math.floor(time / globalCsv.idle_item_produce_cd) |
401 | - reward[ItemId.Gold] = math.floor((reward[ItemId.Gold] or 0) + coinCount * carbonData.money) | |
402 | - reward[ItemId.Exp] = math.floor((reward[ItemId.Exp] or 0) + coinCount * carbonData.exp) | |
403 | - reward[ItemId.PlayerExp] = math.floor((reward[ItemId.PlayerExp] or 0) + coinCount * carbonData.playerExp) | |
405 | + reward[ItemId.Gold] = math.floor((reward[ItemId.Gold] or 0) + coinCount * expCarbonData.money) | |
406 | + reward[ItemId.Exp] = math.floor((reward[ItemId.Exp] or 0) + coinCount * expCarbonData.exp) | |
407 | + reward[ItemId.PlayerExp] = math.floor((reward[ItemId.PlayerExp] or 0) + coinCount * expCarbonData.playerExp) | |
404 | 408 | |
405 | 409 | local pool = {} |
406 | 410 | for _, temp in pairs(carbonData.item:toArray()) do | ... | ... |
src/actions/HeroAction.lua
... | ... | @@ -734,6 +734,13 @@ function _M.drawHeroRpc(agent, data) |
734 | 734 | if btype ~= 1 then |
735 | 735 | subType = 1 |
736 | 736 | end |
737 | + | |
738 | + if btype == 1 then | |
739 | + -- 判断定向卡池活动开启 | |
740 | + if not role.activity:isOpen("RaceDraw") then | |
741 | + return | |
742 | + end | |
743 | + end | |
737 | 744 | |
738 | 745 | local buildTypeData = csvdb["build_typeCsv"][btype] |
739 | 746 | if not buildTypeData then return 2 end | ... | ... |
src/actions/RoleAction.lua
... | ... | @@ -615,52 +615,57 @@ end |
615 | 615 | function _M.openSpeedUpBoxRpc(agent, data) |
616 | 616 | local role = agent.role |
617 | 617 | local msg = MsgPack.unpack(data) |
618 | - | |
619 | - local id = msg.id | |
620 | - local count = msg.count | |
621 | - local itemData = csvdb["itemCsv"][id] | |
622 | - if not itemData or itemData.type ~= ItemType.SpeedBox then return end | |
623 | - | |
624 | - if math.illegalNum(count, 1, role:getItemCount(id)) then return end | |
625 | - local useType, hour = table.unpack(itemData.use_effect:toArray(true, "=")) | |
626 | - local time = hour * 60 * 60 | |
618 | + local itemInfo = msg.itemInfo | |
627 | 619 | |
628 | 620 | local reward = {} |
629 | - if useType == 1 then -- 挂机齿轮 | |
630 | - local hangInfo = role:getProperty("hangInfo") | |
631 | - if not hangInfo.carbonId then | |
632 | - return | |
633 | - end | |
634 | - local carbonData = csvdb["idle_battleCsv"][hangInfo.carbonId] | |
635 | - reward[ItemId.Gold] = math.floor(time / globalCsv.idle_money_produce_cd) * carbonData.money * count | |
636 | - elseif useType == 2 then -- 挂机经验 | |
637 | - local hangInfo = role:getProperty("hangInfo") | |
638 | - if not hangInfo.carbonId then | |
639 | - return | |
640 | - end | |
641 | - local carbonData = csvdb["idle_battleCsv"][hangInfo.carbonId] | |
642 | - reward[ItemId.Exp] = math.floor(time / globalCsv.idle_money_produce_cd) * carbonData.exp * count | |
643 | - elseif useType == 3 then -- 食材商人收入 | |
644 | - local buildType = 6 | |
645 | - local level = role.dinerData:getProperty("buildL"):getv(buildType, 1) | |
646 | - local buildingData = csvdb["diner_buildingCsv"][buildType][level] | |
647 | - if not buildingData then | |
648 | - return 1 | |
649 | - end | |
650 | - local gfood = role.dinerData:getProperty("gfood") | |
651 | - if not next(gfood) then return end | |
652 | - for k , v in pairs(gfood) do | |
653 | - local itemId = v.id | |
654 | - local speed = globalCsv.diner_get_food_speed[csvdb["itemCsv"][itemId].quality] * buildingData.speed / 100 | |
655 | - reward[itemId] = math.floor(time / speed) * count | |
621 | + for i = 1, #itemInfo do | |
622 | + local pair = itemInfo[i] | |
623 | + local id = pair[1] | |
624 | + local count = pair[2] | |
625 | + local itemData = csvdb["itemCsv"][id] | |
626 | + if not itemData or itemData.type ~= ItemType.SpeedBox then return end | |
627 | + | |
628 | + if math.illegalNum(count, 1, role:getItemCount(id)) then return 1 end | |
629 | + local useType, hour = table.unpack(itemData.use_effect:toArray(true, "=")) | |
630 | + local time = hour * 60 * 60 | |
631 | + | |
632 | + if useType == 1 then -- 挂机齿轮 | |
633 | + local hangInfo = role:getProperty("hangInfo") | |
634 | + if not hangInfo.expCarbonId then | |
635 | + return 2 | |
636 | + end | |
637 | + local carbonData = csvdb["idle_battleCsv"][hangInfo.expCarbonId] | |
638 | + reward[ItemId.Gold] = (reward[ItemId.Gold] or 0) + math.floor(time / globalCsv.idle_money_produce_cd) * carbonData.money * count | |
639 | + elseif useType == 2 then -- 挂机经验 | |
640 | + local hangInfo = role:getProperty("hangInfo") | |
641 | + if not hangInfo.expCarbonId then | |
642 | + return 3 | |
643 | + end | |
644 | + local carbonData = csvdb["idle_battleCsv"][hangInfo.expCarbonId] | |
645 | + reward[ItemId.Exp] = (reward[ItemId.Exp] or 0) + math.floor(time / globalCsv.idle_money_produce_cd) * carbonData.exp * count | |
646 | + elseif useType == 3 then -- 食材商人收入 | |
647 | + local buildType = 6 | |
648 | + local level = role.dinerData:getProperty("buildL"):getv(buildType, 1) | |
649 | + local buildingData = csvdb["diner_buildingCsv"][buildType][level] | |
650 | + if not buildingData then | |
651 | + return 4 | |
652 | + end | |
653 | + local gfood = role.dinerData:getProperty("gfood") | |
654 | + if not next(gfood) then return 5 end | |
655 | + for k , v in pairs(gfood) do | |
656 | + local itemId = v.id | |
657 | + local speed = globalCsv.diner_get_food_speed[csvdb["itemCsv"][itemId].quality] * buildingData.speed / 100 | |
658 | + reward[itemId] = (reward[itemId] or 0) + math.floor(time / speed) * count | |
659 | + end | |
660 | + else | |
661 | + return 6 | |
656 | 662 | end |
657 | - else | |
658 | - return | |
663 | + | |
664 | + role:costItems({[id] = count}, {log = {desc = "speedUpBox"}}) | |
659 | 665 | end |
660 | 666 | |
661 | - role:costItems({[id] = count}, {log = {desc = "speedUpBox"}}) | |
662 | 667 | local change |
663 | - reward, change = role:award(reward, {log = {desc = "speedUpBox"}, int1 = id, int2 = count}) | |
668 | + reward, change = role:award(reward, {log = {desc = "speedUpBox"}}) | |
664 | 669 | |
665 | 670 | SendPacket(actionCodes.Role_openSpeedUpBoxRpc, MsgPack.pack(role:packReward(reward, change))) |
666 | 671 | return true | ... | ... |
src/models/Activity.lua
src/models/RolePlugin.lua
... | ... | @@ -1691,13 +1691,9 @@ function RolePlugin.bind(Role) |
1691 | 1691 | if not csvdb["idle_battleCsv"][nextId] then |
1692 | 1692 | nextId = makeCarbonId(diff, chapterId + 1, 1) |
1693 | 1693 | if not csvdb["idle_battleCsv"][nextId] then |
1694 | - if diff + 1 == 3 then | |
1694 | + nextId = makeCarbonId(diff + 1, 1, 1) | |
1695 | + if not csvdb["idle_battleCsv"][nextId] then | |
1695 | 1696 | nextId = 0 |
1696 | - else | |
1697 | - nextId = makeCarbonId(diff + 1, 1, 1) | |
1698 | - if not csvdb["idle_battleCsv"][nextId] then | |
1699 | - nextId = 0 | |
1700 | - end | |
1701 | 1697 | end |
1702 | 1698 | end |
1703 | 1699 | end | ... | ... |
-
mentioned in commit 52f8c5f05d0a531232a7dd7887becd2a77986aa1
-
mentioned in commit 52f8c5f05d0a531232a7dd7887becd2a77986aa1
-
mentioned in commit ba6d85edc65900830c7e168102d70671881b5808
-
mentioned in commit ba6d85edc65900830c7e168102d70671881b5808