| | |
| | | GameWorld.ErrLog("找不到该等级对应寻宝库配置!treasureType=%s,curLV=%s" % (treasureType, curPlayer.GetLV()), playerID)
|
| | | return
|
| | |
|
| | | luckyGridNum = setIpyData.GetLuckyGridNum() # 幸运物品概率公式
|
| | | luckyItemRateList = ipyData.GetLuckyItemRateList()
|
| | | luckyGridNumList = []
|
| | | if luckyItemRateList:
|
| | | for _, gridNum in luckyItemRateList:
|
| | | luckyGridNumList.append(gridNum)
|
| | | elif setIpyData.GetLuckyGridNum():
|
| | | luckyGridNumList = [setIpyData.GetLuckyGridNum()]
|
| | | GameWorld.DebugLog("luckyGridNumList=%s, %s" % (luckyGridNumList, luckyItemRateList), playerID)
|
| | | luckFormula = setIpyData.GetLuckyRateFormat() # 幸运物品概率公式
|
| | | addLuck = setIpyData.GetOnceLucky() * treasureCount # 增加幸运值
|
| | | maxLuck = setIpyData.GetFullLucky() # 满幸运值
|
| | | curLuck = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureLuck % (treasureType)) # 当前幸运值
|
| | | updLuck = curLuck + addLuck
|
| | |
|
| | | commItemRateList = GetUpdLuckyItemRateList(ipyData, luckyGridNum, curLuck, luckFormula, costType) # 常规产出物品格子饼图,幸运物品概率已变更
|
| | | commItemRateList = GetUpdLuckyItemRateList(ipyData, luckyGridNumList, curLuck, luckFormula, costType) # 常规产出物品格子饼图,幸运物品概率已变更
|
| | |
|
| | | curTreasureCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCount % (treasureType)) # 当前已寻宝次数
|
| | | updTreasureCount = curTreasureCount + treasureCount
|
| | | GameWorld.DebugLog("已经寻宝次数=%s,当前幸运=%s,commItemRateList=%s" % (curTreasureCount, curLuck, commItemRateList), playerID)
|
| | |
|
| | | goodGridNumList = [luckyGridNum] # 好物品格子编号 (幸运物品 + 必出 + 保底)
|
| | | goodGridNumList = [] # 好物品格子编号 (幸运物品 + 必出 + 保底)
|
| | | goodGridNumList += luckyGridNumList
|
| | | beSureCountDict = ipyData.GetGridItemRateList3() # 第x次必出产出格子编号饼图
|
| | | for gridRateList in beSureCountDict.values():
|
| | | for gridRateInfo in gridRateList:
|
| | |
| | | getGridResult = []
|
| | |
|
| | | # 1.满幸运必出
|
| | | if updLuck >= maxLuck:
|
| | | if updLuck >= maxLuck and luckyGridNumList:
|
| | | if luckyItemRateList:
|
| | | luckyGridNum = GameWorld.GetResultByRandomList(luckyItemRateList)
|
| | | else:
|
| | | luckyGridNum = luckyGridNumList[0]
|
| | | getGridResult.append(luckyGridNum)
|
| | | GameWorld.DebugLog("满幸运必出幸运物品: luckyGridNum=%s" % luckyGridNum, playerID)
|
| | |
|
| | |
| | | doCount -= 1
|
| | | gridNum = GameWorld.GetResultByRandomList(commItemRateList)
|
| | |
|
| | | if gridNum == luckyGridNum and gridNum in getGridResult:
|
| | | if gridNum in luckyGridNumList and gridNum in getGridResult:
|
| | | GameWorld.DebugLog("幸运物品已经出过,不再重复产出!")
|
| | | continue
|
| | |
|
| | |
| | |
|
| | | # 加数据
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType), updTreasureCount)
|
| | | for luckyGridNum in luckyGridNumList:
|
| | | if luckyGridNum in getGridResult:
|
| | | updLuck = 0
|
| | | break
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureLuck % (treasureType), updLuck)
|
| | |
|
| | | addScoreType = setIpyData.GetAwardMoneyType() # 额外奖励货币类型
|
| | |
| | | Sync_TreasureInfo(curPlayer, [treasureType])
|
| | | return
|
| | |
|
| | | def GetUpdLuckyItemRateList(ipyData, luckyGridNum, curLuck, luckFormula, costType):
|
| | | def GetUpdLuckyItemRateList(ipyData, luckyGridNumList, curLuck, luckFormula, costType):
|
| | | # 获取幸运物品提升概率后的饼图
|
| | | srcPieList = ipyData.GetGridItemRateListFree() if costType == 1 else ipyData.GetGridItemRateList1()
|
| | | if not srcPieList:
|
| | |
| | | rate, gridNum = rateInfo
|
| | | baseRate = rate if i == 0 else (rate - srcPieList[i - 1][0]) # 原概率
|
| | |
|
| | | if gridNum == luckyGridNum:
|
| | | if gridNum in luckyGridNumList:
|
| | | newRate = eval(FormulaControl.GetCompileFormula("TreasureLuckyRate", luckFormula))
|
| | | else:
|
| | | newRate = baseRate
|