Commit fe29684994d7de3c6389d8c0d2a8848589783110
1 parent
d93ec42c
归还消耗指定道具或钻石
Showing
2 changed files
with
24 additions
and
7 deletions
Show diff stats
src/actions/HeroAction.lua
... | ... | @@ -604,7 +604,6 @@ end |
604 | 604 | function _M.getResetRewardRpc(agent, data) |
605 | 605 | local role = agent.role |
606 | 606 | local msg = MsgPack.unpack(data) |
607 | - local pay = msg.pay | |
608 | 607 | |
609 | 608 | local hero = role.heros[msg.id] |
610 | 609 | if not hero then return end |
... | ... | @@ -617,12 +616,30 @@ function _M.getResetRewardRpc(agent, data) |
617 | 616 | local tmpLevel = level |
618 | 617 | if level <= 1 and talent == "" then return end |
619 | 618 | |
619 | + local pay = true | |
620 | 620 | if level <= 60 then |
621 | 621 | pay = false |
622 | 622 | end |
623 | 623 | |
624 | - if pay and not role:costDiamond({count = globalCsv.unit_heroBack_cost or 200, log = {desc = "resetHero", int1 = msg.id}}) then | |
625 | - return 1 | |
624 | + if pay then | |
625 | + local costArr = globalCsv.unit_heroBack_cost:toArray(true, "=") | |
626 | + local itemCount = role:getItemCount(costArr[1]) | |
627 | + local totalCost = {} | |
628 | + if itemCount >= costArr[2] then | |
629 | + totalCost[costArr[1]] = costArr[2] | |
630 | + else | |
631 | + local diamond = (costArr[2] - itemCount) * costArr[3] | |
632 | + if role:getItemCount(ItemId.Diamond) < diamond then | |
633 | + return 1 | |
634 | + end | |
635 | + totalCost[costArr[1]] = itemCount | |
636 | + totalCost[ItemId.Diamond] = diamond | |
637 | + end | |
638 | + | |
639 | + --if pay and not role:costDiamond({count = globalCsv.unit_heroBack_cost or 200, log = {desc = "resetHero", int1 = msg.id}}) then | |
640 | + -- return 1 | |
641 | + --end | |
642 | + role:costItems(totalCost, {log = {desc = "resetHero", int1 = msg.id}}) | |
626 | 643 | end |
627 | 644 | |
628 | 645 | local reward = {} |
... | ... | @@ -677,10 +694,10 @@ function _M.getResetRewardRpc(agent, data) |
677 | 694 | }) |
678 | 695 | hero:mylog({desc = "resetHero"}) |
679 | 696 | |
680 | - local coef = globalCsv.unit_back_discount | |
681 | - coef = (pay or tmpLevel <= 60) and 1 or coef | |
697 | + --local coef = globalCsv.unit_back_discount | |
698 | + --coef = (pay or tmpLevel <= 60) and 1 or coef | |
682 | 699 | for itemId, count in pairs(reward) do |
683 | - reward[itemId] = math.floor(count * coef) | |
700 | + reward[itemId] = count | |
684 | 701 | end |
685 | 702 | local change |
686 | 703 | reward, change = role:award(reward, {log = {desc = "resetHero", int1 = msg.id, int2 = hero:getProperty("type")}}) | ... | ... |