From 8425301e40c12eb29f934960723e8e1e675bb41e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 19 九月 2023 17:39:50 +0800
Subject: [PATCH] 9939 【BT0.1】【主干】装备升星修改(装备分解支持按品质及是否套装给固定物品)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEquipDecompose.py |   41 +++++++++++++++++++++++++++--------------
 1 files changed, 27 insertions(+), 14 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEquipDecompose.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEquipDecompose.py
index f2bfcf5..d07852a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEquipDecompose.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEquipDecompose.py
@@ -75,7 +75,7 @@
 def EatItems(curPlayer, eatIndexList, eatItemIDList, isAuto=False):
     if len(eatIndexList) != len(eatItemIDList):
         return 0, 0
-    drDelItemList, totalAddExp, delAllCnt = __GetCanEatItemInfo(curPlayer, eatIndexList, eatItemIDList)
+    drDelItemList, totalAddExp, delAllCnt, giveItemIDDict = __GetCanEatItemInfo(curPlayer, eatIndexList, eatItemIDList)
     if not totalAddExp:
         GameWorld.DebugLog("    装备吸收 没有可吞噬物品!")
         return 0, 0
@@ -109,7 +109,7 @@
                 minCnt = cnt
                 minItemID = itemid
         
-        giveItemIDDict = {}
+        #giveItemIDDict = {}
         for _ in xrange(giveCnt):
             itmeID = GameWorld.GetResultByRandomList(awardRateList)
             if not itmeID:
@@ -118,17 +118,18 @@
                 itmeID = minItemID
                 
             giveItemIDDict[itmeID] = giveItemIDDict.get(itmeID, 0) + 1
-        if giveItemIDDict:
-            for giveItemID, itemCnt in giveItemIDDict.items(): 
-                jsonItemList.append(ItemCommon.GetJsonItem([giveItemID,itemCnt,1]))
-            needSpace = len(giveItemIDDict)
-            packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
-            if packSpace < needSpace:
-                prizeItemList = [[giveItemID, itemCnt, 1] for giveItemID, itemCnt in giveItemIDDict.items()]
-                PlayerControl.SendMailByKey("DefaultLackSpace", [curPlayer.GetPlayerID()], prizeItemList)
-            else:
-                for giveItemID, itemCnt in giveItemIDDict.items():
-                    ItemControler.GivePlayerItem(curPlayer, giveItemID, itemCnt, 0, [IPY_GameWorld.rptItem])
+            
+    if giveItemIDDict:
+        for giveItemID, itemCnt in giveItemIDDict.items(): 
+            jsonItemList.append(ItemCommon.GetJsonItem([giveItemID,itemCnt,1]))
+        needSpace = len(giveItemIDDict)
+        packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
+        if packSpace < needSpace:
+            prizeItemList = [[giveItemID, itemCnt, 1] for giveItemID, itemCnt in giveItemIDDict.items()]
+            PlayerControl.SendMailByKey("DefaultLackSpace", [curPlayer.GetPlayerID()], prizeItemList)
+        else:
+            for giveItemID, itemCnt in giveItemIDDict.items():
+                ItemControler.GivePlayerItem(curPlayer, giveItemID, itemCnt, 0, [IPY_GameWorld.rptItem])
     
     #同步客户端
     Sync_EDLVInfo(curPlayer, jsonItemList)
@@ -150,6 +151,9 @@
     eatItemList = []
     totalAddExp = 0
     allitemCnt = 0
+    awardItemDict = {}
+    eatEquipAwardDict = IpyGameDataPY.GetFuncEvalCfg('EquipDecomposeAward', 4, {})
+    eatEquipAwardDictSuite = IpyGameDataPY.GetFuncEvalCfg('EquipDecomposeAward', 5, {})
     petEatItemAddExpPer = PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_EatItem)
     itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
     for i, index in enumerate(expIndexList):
@@ -173,6 +177,15 @@
                 GameWorld.DebugLog("    tagPetEatEquip.txt,未配置该物品! eatItemID=%s, EquipColor=%s,EquipClass=%s" % (eatItemID, itemColor, itemClass))
                 continue
             baseExp = ipyData.GetExp()
+            
+            equipAwardDict = eatEquipAwardDictSuite if eatItem.GetSuiteID() else eatEquipAwardDict
+            if str(itemColor) in equipAwardDict:
+                awardItemList = equipAwardDict[str(itemColor)]
+                for awardID, awardCount in awardItemList:
+                    awardItemDict[awardID] = awardItemDict.get(awardID, 0) + awardCount
+                GameWorld.DebugLog("分解装备额外奖励: eatEquip=%s,itemColor=%s,suiteID=%s,awardItemList=%s total:%s" 
+                                   % (eatItem.GetItemTypeID(), itemColor, eatItem.GetSuiteID(), awardItemList, awardItemDict))
+                
         else:
             GameWorld.ErrLog('    不可分解的道具index=%s eatItemID=%s'%(index, eatItemID))
             continue
@@ -192,7 +205,7 @@
         totalAddExp += totalAddExp * petEatItemAddExpPer / ChConfig.Def_MaxRateValue
             
     PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_DecomposeEquip, allitemCnt)
-    return eatItemList, totalAddExp, allitemCnt
+    return eatItemList, totalAddExp, allitemCnt, awardItemDict
 
 
 ##获取吞噬结果

--
Gitblit v1.8.0