From b100e60651bd69472519d964f2e225148cfe7774 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 20 一月 2026 18:27:05 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(命格青龙、白虎调整为光环技能;优化光环技能支持层级;增加出发方式60-冰冻目标时;优化触发方式受控时、敌方受控时触发时机,解决受控触发被动导致的技能标签嵌套顺序问题;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 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 7f7dead..256b80d 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
@@ -257,6 +257,7 @@
     appointDropCntMax = max(dropAppointEquipDict) if dropAppointEquipDict else 0
     
     lastSureOutNeed = ipyData.GetLastSureOutNeed() # 最后一档保底必出
+    lastColorCnt = IpyGameDataPY.GetFuncCfg("ItemRecordEquip", 1) # 有产出的最后几个品质需要记录
     
     for index in range(dropEquipCnt):
         bossType = bossTypeList[index % len(bossTypeList)]
@@ -264,7 +265,10 @@
             continue
         colorRateList = bossTypeDropRateDict.get(bossType, [])
         lastColorEquipLucky = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LastColorEquipLucky)
-        GameWorld.DebugLog("lastColorEquipLucky=%s/%s,bossType=%s,colorRateList=%s,totalRate=%s" % (lastColorEquipLucky, lastSureOutNeed, bossType, colorRateList, totalRate), playerID)
+        lastColor = colorRateList[-1][1]
+        needRecordColorMin = lastColor - lastColorCnt + 1
+        GameWorld.DebugLog("lastColorEquipLucky=%s/%s,bossType=%s,lastColor=%s,colorRateList=%s,totalRate=%s" 
+                           % (lastColorEquipLucky, lastSureOutNeed, bossType, lastColor, colorRateList, totalRate), playerID)
         
         setAttrDict = None
         appointDropEquipCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AppointDropEquipCnt) + 1
@@ -280,13 +284,12 @@
                 setAttrDict[ShareDefine.Def_CItemKey_AppointID] = appointID
             GameWorld.DebugLog("定制掉落第%s次: equipID=%s,setAttrDict=%s" % (appointDropEquipCnt, randEquipID, setAttrDict))
         else:
-            lastColor = colorRateList[-1][1]
             if lastSureOutNeed and lastColorEquipLucky >= lastSureOutNeed:
                 itemColor = lastColor
                 GameWorld.DebugLog("保底必出最后一档品质: %s,lastColorEquipLucky=%s/%s" % (itemColor, lastColorEquipLucky, lastSureOutNeed))
             else:
                 itemColor = GameWorld.GetResultByRandomList(colorRateList)
-            if itemColor == lastColor:
+            if itemColor == lastColor or not lastSureOutNeed:
                 lastColorEquipLucky = 0
             if not itemColor:
                 continue
@@ -300,7 +303,8 @@
             continue
         curItem.SetIsBind(1) # 为1时代表是掉落
         #GameWorld.DebugLog("掉落装备: randEquipID=%s,%s" % (randEquipID, curItem.GetGUID()), playerID)
-        if not ItemControler.DoLogic_PutItemInPack(curPlayer, curItem, packIndexList=[IPY_GameWorld.rptIdentify]):
+        isForceDR = curItem.GetItemColor() >= needRecordColorMin # 记录流向
+        if not ItemControler.DoLogic_PutItemInPack(curPlayer, curItem, event=["MainDrop", isForceDR, {}], packIndexList=[IPY_GameWorld.rptIdentify]):
             continue
         
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LastColorEquipLucky, lastColorEquipLucky)
@@ -329,7 +333,7 @@
     atkObj = None
     batFactionA = turnFight.getBatFaction(ChConfig.Def_FactionA)
     batLineup = batFactionA.getBatlineup(1)
-    for objID in batLineup.posObjIDDict.values():
+    for objID in batLineup.getBatHeroObjIDList():
         atkObj = batObjMgr.getBatObj(objID)
         if atkObj.IsAlive():
             break
@@ -345,7 +349,7 @@
     killObjList = []
     batFactionB = turnFight.getBatFaction(ChConfig.Def_FactionB)
     batLineup = batFactionB.getBatlineup(1)
-    for objID in batLineup.posObjIDDict.values():
+    for objID in batLineup.getBatHeroObjIDList():
         tagObj = batObjMgr.getBatObj(objID)
         if tagObj.IsAlive():
             killObjList.append(tagObj)

--
Gitblit v1.8.0