hxp
2019-01-30 03f617028885a2e8840500bb520f3418d54eb791
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -52,6 +52,7 @@
import PlayerMagicWeapon
import PlayerBossReborn
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerWeekParty
import FamilyRobBoss
import IpyGameDataPY
@@ -508,7 +509,19 @@
        
    ## 直接掉地板上
    if dropItemMapInfo:
        dropPosX, dropPosY, isOnlySelfSee = dropItemMapInfo
        dropPosX, dropPosY, isOnlySelfSee = dropItemMapInfo[:3]
        isDropDisperse = dropItemMapInfo[3] if len(dropItemMapInfo) > 3 else False # 堆叠的物品是否散开掉落
        if isDropDisperse:
            dropItemList = []
            for itemInfo in prizeItemList:
                if isinstance(itemInfo, list):
                    itemID, itemCount, isBind = itemInfo
                    for _ in xrange(itemCount):
                        dropItemList.append([itemID, 1, isBind])
                else:
                    dropItemList.append(itemInfo)
        else:
            dropItemList = prizeItemList
        index = 0
        playerID = curPlayer.GetPlayerID()
        gameMap = GameWorld.GetMap()
@@ -520,10 +533,10 @@
                #玩家不可移动这个点
                continue
            
            if index > len(prizeItemList) - 1:
            if index > len(dropItemList) - 1:
                break
            
            curItem = prizeItemList[index]
            curItem = dropItemList[index]
            index += 1
            if isinstance(curItem, list):
                itemID, itemCount, isBind = curItem
@@ -2068,7 +2081,7 @@
    if ChConfig.IsGameBoss(curNPC): 
        # 通知GameServer boss状态 封魔坛在副本里单独处理
        ipyData = IpyGameDataPY.GetIpyGameDataNotLog('BOSSInfo', npcid)
        if ipyData and ipyData.GetMapID() != ChConfig.Def_FBMapID_SealDemon:
        if ipyData and ipyData.GetMapID() not in [ChConfig.Def_FBMapID_SealDemon, ChConfig.Def_FBMapID_ZhuXianBoss]:
            GameServe_GameWorldBossState(npcid, 0)
            #GameWorld.GetGameWorld().SetGameWorldDict(ChConfig.Map_NPC_WorldBossDeadTick % npcid, GameWorld.GetGameWorld().GetTick())
            #因为存在boss分流,所以用gameFB字典,但是存活状态还是用GameWorld字典
@@ -2140,6 +2153,7 @@
        dataDict = {"objID":npcID, "bossID":npcID, "touchCnt":newCnt,
                    "AccID":curPlayer.GetAccID(), "PlayerID":curPlayer.GetPlayerID()}
        DataRecordPack.SendEventPack("AddKillBossCnt", dataDict, curPlayer)
        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillBoss, 1, [limitIndex])
        
    if isCrossServer:
        return
@@ -2151,6 +2165,7 @@
        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_WorldBOSS)
        PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_WorldBOSS, 1)
        PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_WorldBoss, 1)
        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_WorldBoss, 1)
        PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_WorldBOSS, 1)
        
    if mapID == ChConfig.Def_FBMapID_BossHome:
@@ -2161,6 +2176,7 @@
        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_BOSSHome)
        PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_BOSSHome, 1)
        PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1)
        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1)
        PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_BOSSHome, 1)
    return
    
@@ -3013,6 +3029,10 @@
        #    GameWorld.DebugLog("伤血玩家血量为0,清除该伤血!playerID=%s" % hurtID)
        #    return True
        
        if not hurtPlayer.GetVisible():
            GameWorld.DebugLog("伤血玩家不可见,清除该伤血!playerID=%s" % hurtID)
            return True
        if not self.GetIsInRefreshPoint(hurtPlayer.GetPosX(), hurtPlayer.GetPosY(), refreshPoint):
            GameWorld.DebugLog("伤血玩家不在boss范围里,清除该伤血!playerID=%s" % hurtID)
            return True
@@ -3044,6 +3064,10 @@
            if curTeamPlayer:
                if curTeamPlayer.GetCopyMapID() != copyMapID:
                    #GameWorld.DebugLog("队员不在本线路,不计!playerID=%s" % playerID)
                    continue
                if not curTeamPlayer.GetVisible():
                    #GameWorld.DebugLog("队员不可见,不计!playerID=%s" % playerID)
                    continue
                
                if curTeamPlayer.GetHP() <= 0 or curTeamPlayer.GetPlayerAction() == IPY_GameWorld.paDie:
@@ -5023,6 +5047,7 @@
        else:
            if curNPC.GetLV()>=curPlayer.GetLV() - IpyGameDataPY.GetFuncCfg('DailyQuestKillMonster'):
                PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_KillNPC)
            PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillSpecificNPC, 1, [npcID])
            
        if ChConfig.IsGameBoss(curNPC):
            OnPlayerKillBoss(curPlayer, npcID, mapID, False)