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,7 +762,7 @@ function _M.drawHeroRpc(agent, data) | ||
762 | 762 | ||
763 | -- 开始抽 | 763 | -- 开始抽 |
764 | local resultPool = {} | 764 | local resultPool = {} |
765 | - local function fillDrawPool(fixRare, fixCamp, ssrUp) | 765 | + local function fillDrawPool(fixRare, fixCamp, ssrUp, floorBack) |
766 | local condition = {"rare", "camp"} | 766 | local condition = {"rare", "camp"} |
767 | local values = {fixRare, fixCamp} | 767 | local values = {fixRare, fixCamp} |
768 | 768 | ||
@@ -781,8 +781,16 @@ function _M.drawHeroRpc(agent, data) | @@ -781,8 +781,16 @@ function _M.drawHeroRpc(agent, data) | ||
781 | for _, weight in pairs(lpool) do | 781 | for _, weight in pairs(lpool) do |
782 | all = all + weight[1] | 782 | all = all + weight[1] |
783 | end | 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 | end | 794 | end |
787 | 795 | ||
788 | if next(lpool) then | 796 | if next(lpool) then |
@@ -791,7 +799,7 @@ function _M.drawHeroRpc(agent, data) | @@ -791,7 +799,7 @@ function _M.drawHeroRpc(agent, data) | ||
791 | end | 799 | end |
792 | end | 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 | if oneData["pool_" .. pool] and oneData["pool_" .. pool] ~= "" then | 803 | if oneData["pool_" .. pool] and oneData["pool_" .. pool] ~= "" then |
796 | local itemData = csvdb["itemCsv"][itemId] | 804 | local itemData = csvdb["itemCsv"][itemId] |
797 | while itemData do | 805 | while itemData do |
@@ -839,13 +847,15 @@ function _M.drawHeroRpc(agent, data) | @@ -839,13 +847,15 @@ function _M.drawHeroRpc(agent, data) | ||
839 | 847 | ||
840 | local ssrUp = 0 | 848 | local ssrUp = 0 |
841 | if draw_ssr_up_count_rate then | 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 | end | 851 | end |
844 | while not next(resultPool) do | 852 | while not next(resultPool) do |
845 | if isNewerSSR then | 853 | if isNewerSSR then |
846 | fillDrawPool(4) -- 新手保底的 ssr | 854 | fillDrawPool(4) -- 新手保底的 ssr |
847 | elseif isFloorBack then | 855 | elseif isFloorBack then |
848 | - fillDrawPool(3) -- 保底 sr 【郑斌】明确 | 856 | + -- 保底 sr 【郑斌】明确 |
857 | + -- 保底 sr 改为 池子随机 sr 或者 ssr【郑斌】 | ||
858 | + fillDrawPool(nil, nil, nil, true) | ||
849 | else | 859 | else |
850 | fillDrawPool(nil, nil, ssrUp) | 860 | fillDrawPool(nil, nil, ssrUp) |
851 | end | 861 | end |
@@ -857,17 +867,17 @@ function _M.drawHeroRpc(agent, data) | @@ -857,17 +867,17 @@ function _M.drawHeroRpc(agent, data) | ||
857 | if itemData.quality == 4 then | 867 | if itemData.quality == 4 then |
858 | ssrCount = ssrCount + 1 | 868 | ssrCount = ssrCount + 1 |
859 | ssrUpCount = 0 | 869 | ssrUpCount = 0 |
860 | - | ||
861 | if btype == 4 then | 870 | if btype == 4 then |
862 | newerHadSSR = newerHadSSR + 1 | 871 | newerHadSSR = newerHadSSR + 1 |
863 | end | 872 | end |
864 | - elseif itemData.quality == 3 then | ||
865 | - floorHeroCount = 0 | ||
866 | - ssrUpCount = ssrUpCount + 1 | ||
867 | else | 873 | else |
868 | ssrUpCount = ssrUpCount + 1 | 874 | ssrUpCount = ssrUpCount + 1 |
869 | end | 875 | end |
870 | 876 | ||
877 | + if itemData.quality >= 3 then | ||
878 | + floorHeroCount = 0 | ||
879 | + end | ||
880 | + | ||
871 | if role:isHaveHero(itemData.id - ItemStartId.Hero) then | 881 | if role:isHaveHero(itemData.id - ItemStartId.Hero) then |
872 | local fragId = itemData.id - ItemStartId.Hero | 882 | local fragId = itemData.id - ItemStartId.Hero |
873 | local heroData = csvdb["unitCsv"][fragId] | 883 | local heroData = csvdb["unitCsv"][fragId] |