ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py
@@ -69,6 +69,12 @@
        maxCnt = FBCommon.GetEnterFBMaxCnt(curPlayer, mapID)
        if enterCnt + 2 > maxCnt:
            return False
    if lineID in newbielineList:
        hasEnter = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False,
                                               [ChConfig.Def_FBMapID_SealDemon])
        if hasEnter:
            GameWorld.DebugLog("    已进入过该新手线路 %s" % lineID)
            return False
    return True
@@ -451,6 +457,9 @@
def GiveSealDemonAward(curPlayer, lineID, rank, isMail=False, isClientSend=False, dropItemMapInfo=[]):
    newbielineList = IpyGameDataPY.GetFuncEvalCfg('SealDemonNewbieLine')
    isNewbieLine = lineID in newbielineList
    sealDemonIpyData = GetSealDemonIpyData(lineID)
    if not sealDemonIpyData:
        return {}
    prizeMultiple = 1
    addCnt = 1
    if isNewbieLine:
@@ -461,17 +470,19 @@
    elif isClientSend:
        return {}
    else:
        prizeMultiple = 2 if rank == 1 else 1 # 第一名执行双倍掉落奖励,其他一次
        #prizeMultiple = 2 if rank == 1 else 1 # 第一名执行双倍掉落奖励,其他一次
        prizeMultiple = 1 # 去除第一名双倍逻辑,改为放在额外奖励产出
        isDouble = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FMTDouble)
        if isDouble:
            addCnt = 2
    equipList = []
    prizeItemDict ={}
    bossID = CurFBLineBOSSID(lineID)
    extraItemList = sealDemonIpyData.GetOwnerAwardItemEx() * addCnt if rank == 1 else []
    #for _ in xrange(addCnt):
    jsonItemList, totalExp, totalMoney = NPCCommon.GiveKillNPCDropPrize(curPlayer, ChConfig.Def_FBMapID_SealDemon, {bossID:addCnt}, 
                                                                        mailTypeKey="SealDemonMail", isMail=isMail, prizeMultiple=prizeMultiple,
                                                                        dropItemMapInfo=dropItemMapInfo)
                                                                        mailTypeKey="SealDemonMail", isMail=isMail, extraItemList=extraItemList, prizeMultiple=prizeMultiple,
                                                                        dropItemMapInfo=dropItemMapInfo,isVirtualDrop=isClientSend)
    for jsonItem in jsonItemList:
        if 'UserData' in jsonItem:
            equipList.append(jsonItem)
@@ -483,21 +494,6 @@
                       % (lineID, bossID, rank, totalExp, totalMoney, jsonItemList), curPlayer.GetPlayerID())
    
    prizeItemList = equipList + FBCommon.GetJsonItemList(prizeItemDict.items())
    #===============================================================================================
    # if not isMail:
    #    for itemDict in prizeItemList:
    #        itemID = itemDict["ItemID"]
    #        itemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
    #        if not itemData:
    #            continue
    #        userData = itemDict.get("UserData", '')
    #        equipInfo = [itemData.GetEquipPlace(), ItemCommon.GetItemClassLV(itemData), itemData.GetItemColor(),
    #                 itemData.GetItemQuality(), userData]
    #        mapID = ChConfig.Def_FBMapID_SealDemon
    #        NPCCommon.SendGameServerGoodItemRecord(mapID, bossID, curPlayer.GetName(),
    #                                               curPlayer.GetPlayerID(), itemID, equipInfo)
    #===============================================================================================
    
    if rank == 1:
        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FMTFirst, addCnt)
@@ -585,25 +581,16 @@
    GameWorld.DebugLog('封魔坛 客户端副本发送结束mapID=%s,lineID=%s,dataList=%s' % (mapID,lineID,dataList), curPlayer.GetPlayerID())
    rank, hurt = dataList[:2]
    prizeItemList = GiveSealDemonAward(curPlayer, lineID, rank, False, True, [curPlayer.GetPosX(), curPlayer.GetPosY(), True])
    if rank == 1:
    if rank == 1 and prizeItemList:
        bossID = CurFBLineBOSSID(lineID)
        NPCCommon.GameServer_KillGameWorldBoss(bossID, curPlayer.GetName(), hurt, False)
    if not prizeItemList:
        leaveTick = FBCommon.GetFBLineStepTime(mapID, lineID) * 1000
        GameWorld.Log("没有奖励,直接通知前端结算!mapID=%s,lineID=%s" % (mapID, lineID), curPlayer.GetPlayerID())
        curPlayer.Sync_TimeTick(IPY_GameWorld.tttLeaveMap, 0, leaveTick, True)
        overDict = {FBCommon.Over_rank:rank, FBCommon.Over_itemInfo:prizeItemList}
        FBCommon.NotifyFBOver(curPlayer, ChConfig.Def_FBMapID_SealDemon, lineID, 1, overDict)
        return
    gameFB = GameWorld.GetGameFB()
    tick = GameWorld.GetGameWorld().GetTick()
    gameFB.SetGameFBDict(FBDict_IsOver, tick)
    gameFB.SetPlayerGameFBDict(curPlayer.GetPlayerID(), FBPlayerDict_Rank, rank)
    curPlayer.Sync_TimeTick(ChConfig.tttPickupItem, 0, ChConfig.Def_FBPickupItemTime, True)
    return
    #GameWorld.Log("通知前端结算!mapID=%s,lineID=%s" % (mapID, lineID), curPlayer.GetPlayerID())
    overDict = {FBCommon.Over_rank:rank, FBCommon.Over_itemInfo:prizeItemList}
    FBCommon.NotifyFBOver(curPlayer, mapID, lineID, 1, overDict)
    PlayerControl.SetCustomMap(curPlayer, 0, 0)
    return
def GetBossRemainHPPer(copyMapID, funcLineID, tick):
    bossID = CurFBLineBOSSID(funcLineID)
@@ -624,6 +611,14 @@
        return 0
    bossID = ipyData.GetNPCID()
    return bossID
def GetSealDemonIpyData(lineID= -1):
    #该分线刷的BOSSID
    if lineID == -1:
        lineID = GameWorld.GetGameWorld().GetPropertyID() - 1
    if lineID == -1:
        return
    return IpyGameDataPY.GetIpyGameDataByCondition('SealDemon', {'LineID':lineID})
##玩家死亡.
# @param curPlayer:死亡的玩家 
@@ -657,4 +652,3 @@
    packData.OldDouble = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FMTOldDouble)
    NetPackCommon.SendFakePack(curPlayer, packData)
    return