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