ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py
@@ -21,26 +21,28 @@
import GameWorldProcess
import IpyGameDataPY
import ChConfig
import PlayerBossReborn
import PyGameData
import PlayerControl
import ShareDefine
import NPCCustomRefresh
import PlayerAuctionHouse
import ItemControler
import PlayerWeekParty
import PlayerActivity
import NPCCommon
import EventReport
import GameObj
FBPlayerDict_EncourageLV = 'FBPlayerDict_EncourageLV'  # 鼓舞等级
FBDict_IsOver = 'FBDict_IsOver'  #是否已结算, 结算时的tick
FBDict_IsEncourage = 'FBDict_IsEncourage'  #是否鼓舞过
FBDict_EncourageCnt = 'FBDict_EncourageCnt'  #鼓舞过次数
Map_FB_StartTick = 'Map_FB_StartTick' #活动开始时间
(
    Def_BossTime,  #BOSS时间
    Def_LeaveTime,  #离开时间
    Def_HPSpeed,  #掉血速度公式
    ) = range(3)
    ) = range(2)
#当前副本地图的状态
(
@@ -119,13 +121,23 @@
    if mapID != ChConfig.Def_FBMapID_AllFamilyBoss:
        return
    GameWorld.DebugLog('    多仙盟BOSS活动状态变更 state=%s' % state)
    if not state:
    if state:
        if not GameWorld.GetGameWorld().GetGameWorldDictByKey(Map_FB_StartTick):
            GameWorld.GetGameWorld().SetGameWorldDict(Map_FB_StartTick, tick)
    else:
        GameWorld.GetGameWorld().SetGameWorldDict(Map_FB_StartTick, 0)
        if not GameWorld.GetGameFB().GetGameFBDictByKey(FBDict_IsOver):
            GameWorld.GetGameFB().SetGameFBDict(FBDict_IsOver, tick)
            __DoLogicAllFamilyBossOver(0, tick)
            __DoLogicAllFamilyBossOver(0, tick, 0, 0)
    return
def __GetRemainTick(tick):
    ##活动剩余毫秒
    mapID = GameWorld.GetMap().GetMapID()
    startTick = GameWorld.GetGameWorld().GetGameWorldDictByKey(Map_FB_StartTick)
    closeFB_RemainTick = max(0, FBCommon.GetFBLineStepTime(mapID)[Def_BossTime] * 1000 - (tick - startTick))
    return closeFB_RemainTick
## 进副本
#  @param curPlayer
@@ -146,7 +158,8 @@
        FBCommon.AddEnterFBCount(curPlayer, ChConfig.Def_FBMapID_AllFamilyBoss, 1)
        
        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyBoss1, 1)
        PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_FamilyBoss, 1)
        PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_FamilyBoss, 1)
        if fbStep == FB_Step_Open:
            FBCommon.SetFBStep(FB_Step_Fighting, tick)
@@ -167,7 +180,9 @@
        FBCommon.AddFbEncourageBuff(curPlayer, FBPlayerDict_EncourageLV, tick, familyID)
    else:
        FBCommon.SendFBEncourageInfo(curPlayer, encourageLV, familyID)
    closeFB_RemainTick = __GetRemainTick(tick)
    curPlayer.Sync_TimeTick(IPY_GameWorld.tttTowerTake, 0, closeFB_RemainTick, True)
    DoFBHelp(curPlayer, tick)
    return
@@ -252,7 +267,7 @@
            hurtInfo.append(hurtDict)
    remainHPPer = GetBossRemainHPPer(0, tick)
    playerID = curPlayer.GetPlayerID()
    IsEncourage = GameWorld.GetGameFB().GetPlayerGameFBDictByKey(playerID, FBDict_IsEncourage)
    IsEncourage = GameWorld.GetGameFB().GetPlayerGameFBDictByKey(playerID, FBDict_EncourageCnt)
    fbHelpDict = {"hurtInfo":hurtInfo, 'IsEncourage':IsEncourage,'remainHPPer':remainHPPer,
                  'myHurt':myHurt % ChConfig.Def_PerPointValue,
                  'myHurtEx':myHurt / ChConfig.Def_PerPointValue, 'myRank':myRank, 'myMenberCnt':myMenberCnt
@@ -272,15 +287,18 @@
    if actionType == 0:
        playerID = curPlayer.GetID()
        gameFB = GameWorld.GetGameFB()
        if gameFB.GetPlayerGameFBDictByKey(playerID, FBDict_IsEncourage):
            GameWorld.DebugLog('只能鼓舞一次!', playerID)
        maxEncourageCnt = IpyGameDataPY.GetFuncCfg('LeagueBOSSReward1', 2)
        curEncourageCnt = gameFB.GetPlayerGameFBDictByKey(playerID, FBDict_EncourageCnt)
        if curEncourageCnt >= maxEncourageCnt:
            GameWorld.DebugLog('只能鼓舞%s次!'%maxEncourageCnt, playerID)
            return
        if FBCommon.FbEncourageBuff(curPlayer, FBPlayerDict_EncourageLV, actionInfo, tick, curPlayer.GetFamilyID()):
            gameFB.SetPlayerGameFBDict(playerID, FBDict_IsEncourage, 1)
            gameFB.SetPlayerGameFBDict(playerID, FBDict_EncourageCnt, curEncourageCnt+1)
            #给鼓舞奖励
            itemList = IpyGameDataPY.GetFuncEvalCfg('LeagueBOSSReward1')
            giveItemList = [[itemID, itemCnt, 0] for itemID, itemCnt in itemList]
            ItemControler.GivePlayerItemOrMail(curPlayer, giveItemList)
            DoFBHelp(curPlayer, tick)
    return
@@ -342,7 +360,7 @@
    return playerHurtList
def __DoLogicAllFamilyBossOver(isPass, tick):
def __DoLogicAllFamilyBossOver(isPass, tick, dropPosX, dropPosY):
    #结算
    FBCommon.SetFBStep(FB_Step_Over, tick)
    msgStr = str([])
@@ -364,6 +382,7 @@
        batchPlayerIDList, batchAddItemList, batchParamList, batchDetailList = [], [], [], []
        event = ["AllFamilyBoss", False, {}]
        needMemberCnt = IpyGameDataPY.GetFuncCfg('LeagueBOSSNumber1')
        bossID = CurFBLineBOSSID(lineID)
        for rank, hurtInfo in enumerate(playerHurtList, 1):
            familyID = hurtInfo[0]
            memberIDList = hurtInfo[1][2]
@@ -383,7 +402,8 @@
                member = playerManager.FindPlayerByID(memberID)
                if member:
                    if menberItemList:
                        ItemControler.GivePlayerItemOrMail(member, menberItemList, 'LeagueBOSS1', event)
                        NPCCommon.DoGiveItemByVirtualDrop(member, menberItemList, bossID, dropPosX, dropPosY, mailTypeKey='LeagueBOSS1')
                        #ItemControler.GivePlayerItemOrMail(member, menberItemList, 'LeagueBOSS1', event)
                    member.Sync_TimeTick(IPY_GameWorld.tttLeaveMap, 0, leaveTick, True)
                    FBCommon.NotifyFBOver(member, ChConfig.Def_FBMapID_AllFamilyBoss, lineID, isPass, overDict)
                elif menberItemList:
@@ -435,6 +455,8 @@
        if len(itemInfo) != 3:
            GameWorld.ErrLog('仙盟Boss奖励表配置错误 itemInfo=%s' % itemInfo)
            continue
        if not itemInfo[0]:
            continue
        if itemInfo[2]:
            familyAuctionItemList.append(itemInfo)
        else:
@@ -444,6 +466,8 @@
            resultItem = GameWorld.GetResultByRandomList(awardPieRateList)
            if len(resultItem) != 3:
                GameWorld.ErrLog('仙盟Boss奖励表配置错误 itemInfo=%s' % resultItem)
                continue
            if not resultItem[0]:
                continue
            if resultItem[2]:
                familyAuctionItemList.append(resultItem)
@@ -470,8 +494,8 @@
    GameWorld.DebugLog('结束 设置BOSS死亡')
    GameWorld.GetGameFB().SetGameFBDict(FBDict_IsOver, tick)
    __DoLogicAllFamilyBossOver(1, tick)
    dropPosX, dropPosY = curNPC.GetPosX(), curNPC.GetPosY()
    __DoLogicAllFamilyBossOver(1, tick, dropPosX, dropPosY)
    return