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] |