From 732aca3b8264a1cfc49975de2a92a6d6030befe7 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 13 十月 2025 14:12:17 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(主线支持定制掉落装备;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py |   35 +++++++++++++++++++++++++++--------
 1 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py
index 69d3df3..15c11a5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py
@@ -220,6 +220,8 @@
         return
     GameWorld.DebugLog("主线掉落装备: unXiantaoCntEquip=%s,dropEquipCnt=%s,treeLV=%s,objDropCntDict=%s" 
                        % (unXiantaoCntEquip, dropEquipCnt, treeLV, objDropCntDict), playerID)
+    dropAppointEquipDict = IpyGameDataPY.GetFuncEvalCfg("MainDropAppoint", 1, {})
+    appointDropCntMax = max(dropAppointEquipDict) if dropAppointEquipDict else 0
     
     for tagID, dropInfo in objDropCntDict.items():
         tagObj, dropCnt, bossType = dropInfo
@@ -251,15 +253,30 @@
         for _ in range(dropCnt):
             if dropEquipCnt <= 0:
                 break
-            itemColor = GameWorld.GetResultByRandomList(colorRateList)
-            if not itemColor:
-                continue
-            equipIDList = NPCCommon.__GetEquipIDList(0, color=itemColor, placeList=ChConfig.Def_MainEquipPlaces, findType="MainEquipDrop")
-            if not equipIDList:
-                continue
-            randEquipID = random.choice(equipIDList)
             
-            curItem = ItemControler.GetOutPutItemObj(randEquipID, 1, False, curPlayer=curPlayer)
+            setAttrDict = None
+            appointDropEquipCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AppointDropEquipCnt) + 1
+            if appointDropEquipCnt in dropAppointEquipDict:
+                appointInfo = dropAppointEquipDict[appointDropEquipCnt]
+                randEquipID = appointInfo[0]
+                equipLV = appointInfo[1] if len(appointInfo) > 1 else 0
+                appointID = appointInfo[2] if len(appointInfo) > 2 else 0
+                setAttrDict = {}
+                if equipLV > 0:
+                    setAttrDict["%s" % ShareDefine.Def_IudetItemLV] = equipLV
+                if appointID:
+                    setAttrDict[ShareDefine.Def_CItemKey_AppointID] = appointID
+                GameWorld.DebugLog("定制掉落第%s次: equipID=%s,setAttrDict=%s" % (appointDropEquipCnt, randEquipID, setAttrDict))
+            else:
+                itemColor = GameWorld.GetResultByRandomList(colorRateList)
+                if not itemColor:
+                    continue
+                equipIDList = NPCCommon.__GetEquipIDList(0, color=itemColor, placeList=ChConfig.Def_MainEquipPlaces, findType="MainEquipDrop")
+                if not equipIDList:
+                    continue
+                randEquipID = random.choice(equipIDList)
+                
+            curItem = ItemControler.GetOutPutItemObj(randEquipID, 1, False, curPlayer=curPlayer, setAttrDict=setAttrDict)
             if curItem == None:
                 continue
             curItem.SetIsBind(1) # 为1时代表是掉落
@@ -269,6 +286,8 @@
             
             dropEquipCnt -= 1
             
+            if appointDropEquipCnt <= appointDropCntMax:
+                PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AppointDropEquipCnt, appointDropEquipCnt)
     return
 
 def GMTestKill(curPlayer, useXiantao):

--
Gitblit v1.8.0