hxp
2026-01-27 849f499eceec264b1abd0bae174f7b7a10b99433
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py
@@ -27,7 +27,6 @@
import ItemControler
import IPY_GameWorld
import NetPackCommon
import PlayerBeauty
import PlayerArena
import PlayerLLMJ
import ItemCommon
@@ -257,12 +256,19 @@
    dropAppointEquipDict = IpyGameDataPY.GetFuncEvalCfg("MainDropAppoint", 1, {})
    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)]
        if bossType not in bossTypeDropRateDict:
            continue
        colorRateList = bossTypeDropRateDict.get(bossType, [])
        GameWorld.DebugLog("bossType=%s,colorRateList=%s,totalRate=%s" % (bossType, colorRateList, totalRate), playerID)
        lastColorEquipLucky = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LastColorEquipLucky)
        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
@@ -278,7 +284,13 @@
                setAttrDict[ShareDefine.Def_CItemKey_AppointID] = appointID
            GameWorld.DebugLog("定制掉落第%s次: equipID=%s,setAttrDict=%s" % (appointDropEquipCnt, randEquipID, setAttrDict))
        else:
            itemColor = GameWorld.GetResultByRandomList(colorRateList)
            if lastSureOutNeed and lastColorEquipLucky >= lastSureOutNeed:
                itemColor = lastColor
                GameWorld.DebugLog("保底必出最后一档品质: %s,lastColorEquipLucky=%s/%s" % (itemColor, lastColorEquipLucky, lastSureOutNeed))
            else:
                itemColor = GameWorld.GetResultByRandomList(colorRateList)
            if itemColor == lastColor or not lastSureOutNeed:
                lastColorEquipLucky = 0
            if not itemColor:
                continue
            equipIDList = NPCCommon.__GetEquipIDList(0, color=itemColor, placeList=ChConfig.Def_MainEquipPlaces, findType="MainEquipDrop")
@@ -291,8 +303,11 @@
            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)
        
        unXiantaoCntEquip -= dropOneNeed
        PlayerControl.SetUnXiantaoCntEquip(curPlayer, unXiantaoCntEquip)
@@ -318,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
@@ -334,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)