From ded5e00b09f1cc82924ca5cfa4b7d50c6a703fa3 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 31 七月 2024 11:50:28 +0800
Subject: [PATCH] 10234 【越南】【香港】【主干】【砍树】聚魂-寻宝修改(满幸运支持饼图产出;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py |   32 +++++++++++++++++++++++---------
 1 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
index 5e6e783..06b10f3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
@@ -165,20 +165,28 @@
         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:
@@ -196,7 +204,11 @@
     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)
         
@@ -245,7 +257,7 @@
             doCount -= 1
             gridNum = GameWorld.GetResultByRandomList(commItemRateList)
             
-            if gridNum == luckyGridNum and gridNum in getGridResult:
+            if gridNum in luckyGridNumList and gridNum in getGridResult:
                 GameWorld.DebugLog("幸运物品已经出过,不再重复产出!")
                 continue
             
@@ -356,8 +368,10 @@
         
     # 加数据
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType), updTreasureCount)
-    if luckyGridNum in getGridResult:
-        updLuck = 0
+    for luckyGridNum in luckyGridNumList:
+        if luckyGridNum in getGridResult:
+            updLuck = 0
+            break
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureLuck % (treasureType), updLuck)
     
     addScoreType = setIpyData.GetAwardMoneyType() # 额外奖励货币类型
@@ -415,7 +429,7 @@
     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:
@@ -426,7 +440,7 @@
         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

--
Gitblit v1.8.0