Commit 54833afed55cc1151ec58da0f7e34550ef293e05
1 parent
b2747fbc
抽英雄
Showing
1 changed file
with
20 additions
and
10 deletions
Show diff stats
src/actions/HeroAction.lua
... | ... | @@ -762,7 +762,7 @@ function _M.drawHeroRpc(agent, data) |
762 | 762 | |
763 | 763 | -- 开始抽 |
764 | 764 | local resultPool = {} |
765 | - local function fillDrawPool(fixRare, fixCamp, ssrUp) | |
765 | + local function fillDrawPool(fixRare, fixCamp, ssrUp, floorBack) | |
766 | 766 | local condition = {"rare", "camp"} |
767 | 767 | local values = {fixRare, fixCamp} |
768 | 768 | |
... | ... | @@ -781,8 +781,16 @@ function _M.drawHeroRpc(agent, data) |
781 | 781 | for _, weight in pairs(lpool) do |
782 | 782 | all = all + weight[1] |
783 | 783 | end |
784 | - | |
785 | - lpool[4][1] = lpool[4][1] + (ssrUp or 0) * all | |
784 | + --[[ | |
785 | + SSR概率值:初始概率 + 步长概率 | |
786 | + SR概率值:初始概率 * [ (初始概率+R初始概率) - 步长概率 ] /(初始概率+R初始概率) | |
787 | + R概率值:初始概率 * [ (初始概率+SR初始概率) - 步长概率 ] /(初始概率+SR初始概率) | |
788 | + ]] | |
789 | + local ssrAdd = (ssrUp or 0) * all | |
790 | + local last = all - lpool[4][1] | |
791 | + lpool[4][1] = lpool[4][1] + ssrAdd | |
792 | + lpool[3][1] = lpool[3][1] * (last - ssrAdd) / last | |
793 | + lpool[2][1] = lpool[2][1] * (last - ssrAdd) / last | |
786 | 794 | end |
787 | 795 | |
788 | 796 | if next(lpool) then |
... | ... | @@ -791,7 +799,7 @@ function _M.drawHeroRpc(agent, data) |
791 | 799 | end |
792 | 800 | end |
793 | 801 | |
794 | - for itemId, oneData in pairs(csvdb["build_poolCsv"]) do | |
802 | + for itemId, oneData in pairs(floorBack and csvdb["build_floorCsv"] or csvdb["build_poolCsv"]) do | |
795 | 803 | if oneData["pool_" .. pool] and oneData["pool_" .. pool] ~= "" then |
796 | 804 | local itemData = csvdb["itemCsv"][itemId] |
797 | 805 | while itemData do |
... | ... | @@ -839,13 +847,15 @@ function _M.drawHeroRpc(agent, data) |
839 | 847 | |
840 | 848 | local ssrUp = 0 |
841 | 849 | if draw_ssr_up_count_rate then |
842 | - ssrUp = math.floor(ssrUpCount / draw_ssr_up_count_rate[1]) * draw_ssr_up_count_rate[2] / 100 | |
850 | + ssrUp = math.min(math.floor(ssrUpCount / draw_ssr_up_count_rate[1]) * draw_ssr_up_count_rate[2], draw_ssr_up_count_rate[3]) / 100 | |
843 | 851 | end |
844 | 852 | while not next(resultPool) do |
845 | 853 | if isNewerSSR then |
846 | 854 | fillDrawPool(4) -- 新手保底的 ssr |
847 | 855 | elseif isFloorBack then |
848 | - fillDrawPool(3) -- 保底 sr 【郑斌】明确 | |
856 | + -- 保底 sr 【郑斌】明确 | |
857 | + -- 保底 sr 改为 池子随机 sr 或者 ssr【郑斌】 | |
858 | + fillDrawPool(nil, nil, nil, true) | |
849 | 859 | else |
850 | 860 | fillDrawPool(nil, nil, ssrUp) |
851 | 861 | end |
... | ... | @@ -857,17 +867,17 @@ function _M.drawHeroRpc(agent, data) |
857 | 867 | if itemData.quality == 4 then |
858 | 868 | ssrCount = ssrCount + 1 |
859 | 869 | ssrUpCount = 0 |
860 | - | |
861 | 870 | if btype == 4 then |
862 | 871 | newerHadSSR = newerHadSSR + 1 |
863 | 872 | end |
864 | - elseif itemData.quality == 3 then | |
865 | - floorHeroCount = 0 | |
866 | - ssrUpCount = ssrUpCount + 1 | |
867 | 873 | else |
868 | 874 | ssrUpCount = ssrUpCount + 1 |
869 | 875 | end |
870 | 876 | |
877 | + if itemData.quality >= 3 then | |
878 | + floorHeroCount = 0 | |
879 | + end | |
880 | + | |
871 | 881 | if role:isHaveHero(itemData.id - ItemStartId.Hero) then |
872 | 882 | local fragId = itemData.id - ItemStartId.Hero |
873 | 883 | local heroData = csvdb["unitCsv"][fragId] | ... | ... |