diff --git a/src/actions/HeroAction.lua b/src/actions/HeroAction.lua index 1afd164..5ba8167 100644 --- a/src/actions/HeroAction.lua +++ b/src/actions/HeroAction.lua @@ -865,6 +865,11 @@ function _M.drawHeroRpc(agent, data) local unitPool = csvdb["build_unitCsv"][poolId] if not unitPool then return 7 end + -- ssr硬性保底 + local isSSRup = false + if unitPool["rare_"..HeroQuality.SSR] or 0 > 0 then + isSSRup = true + end -- 开始抽 local resultPool = {} @@ -872,21 +877,38 @@ function _M.drawHeroRpc(agent, data) local condition = {"rare"} local values = {} + -- check ssr up + if isSSRup then + local ssrUpMap = role:getProperty("ssrUp") or {} + local ssrFloorCnt = ssrUpMap[poolId] or 0 + if ssrFloorCnt >= (globalCsv.draw_ssr_guarantee or 40) - 1 then + values[1] = HeroQuality.SSR + ssrUpMap[poolId] = 0 + else + for idx, field in ipairs(condition) do + if not values[idx] then + local lpool = {} + local curIdx = 1 + while unitPool[field .. "_" .. curIdx] do + lpool[curIdx] = {unitPool[field .. "_" .. curIdx]} + curIdx = curIdx + 1 + end + + if next(lpool) then + values[idx] = math.randWeight(lpool, 1) + end + end + end + if values[1] == HeroQuality.SSR then + ssrUpMap[poolId] = 0 + else + ssrUpMap[poolId] = ssrFloorCnt + 1 + end + end + role:updateProperty({field="ssrUp", value = ssrUpMap, notNotify = true}) + end - for idx, field in ipairs(condition) do - if not values[idx] then - local lpool = {} - local curIdx = 1 - while unitPool[field .. "_" .. curIdx] do - lpool[curIdx] = {unitPool[field .. "_" .. curIdx]} - curIdx = curIdx + 1 - end - if next(lpool) then - values[idx] = math.randWeight(lpool, 1) - end - end - end local weight = 0 local up_pool = nil -- libgit2 0.21.2