ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py
@@ -28,20 +28,21 @@
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)
#当前副本地图的状态
(
@@ -120,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
@@ -148,6 +159,7 @@
        
        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)
@@ -168,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
@@ -253,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
@@ -273,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
@@ -343,7 +360,7 @@
    return playerHurtList
def __DoLogicAllFamilyBossOver(isPass, tick):
def __DoLogicAllFamilyBossOver(isPass, tick, dropPosX, dropPosY):
    #结算
    FBCommon.SetFBStep(FB_Step_Over, tick)
    msgStr = str([])
@@ -365,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]
@@ -384,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:
@@ -475,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