Commit 54833afed55cc1151ec58da0f7e34550ef293e05

Authored by zhouhaihai
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]