#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#  
 | 
##@package Boss  
 | 
# ¸´»îµØÍ¼ÖÐ,ÒѾËÀÍöµÄÆÕͨNPC( ²¼¹ÖÆ÷²¼µÄ )  
 | 
#  
 | 
# @author Mark  
 | 
# @date 2010-4-21  
 | 
# @version 1.2  
 | 
#  
 | 
# ÐÞ¸Äʱ¼ä ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ  
 | 
# @change: "2013-01-16 19:00" wdb ·À·¶ËÀÍöµÄÕÙ»½ÊÞ±»reborn  
 | 
# @change: "2014-10-29 23:30" hxp Ôö¼Ó¿ÉˢбêʶµãˢеÄÊÀ½çboss  
 | 
#------------------------------------------------------------------------------   
 | 
#"""Version = 2014-10-29 23:30"""  
 | 
#---------------------------------------------------------------------  
 | 
# Ä£¿éÏêϸ˵Ã÷  
 | 
  
 | 
#µ¼Èë  
 | 
import GameWorld  
 | 
import ChConfig  
 | 
import IPY_GameWorld  
 | 
import NPCCommon  
 | 
import ShareDefine  
 | 
import IpyGameDataPY  
 | 
import CrossRealmPlayer  
 | 
#---------------------------------------------------------------------  
 | 
#È«¾Ö±äÁ¿  
 | 
#---------------------------------------------------------------------  
 | 
  
 | 
#---------------------------------------------------------------------  
 | 
#Â߼ʵÏÖ  
 | 
  
 | 
## GMÃüÁîÖ´ÐÐÈë¿Ú  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param msgList ²ÎÊýÁбí []  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def OnExec( curPlayer, msgList ):  
 | 
    # Ë¢Ð±êʶµãˢеÄbossÖØÉú  
 | 
    mapID = GameWorld.GetMap().GetMapID()  
 | 
  
 | 
    dataList = IpyGameDataPY.GetIpyGameDataByCondition('BOSSInfo', {"MapID":mapID}, returnList=True)  
 | 
    if dataList:  
 | 
        for ipyData in dataList:  
 | 
            bossID = ipyData.GetNPCID()  
 | 
            if not bossID:  
 | 
                continue  
 | 
              
 | 
            if mapID in ChConfig.Def_CrossZoneMapTableName:  
 | 
                tableName = ChConfig.Def_CrossZoneMapTableName[mapID]  
 | 
                realMapID = GameWorld.GetGameWorld().GetRealMapID()  
 | 
                copyMapID = GameWorld.GetGameWorld().GetCopyMapID()  
 | 
                zoneIpyData = IpyGameDataPY.GetIpyGameData(tableName, realMapID, mapID, copyMapID)  
 | 
                if not zoneIpyData:  
 | 
                    continue  
 | 
                zoneID = zoneIpyData.GetZoneID()  
 | 
                key = ShareDefine.Def_Notify_WorldKey_GameWorldBossRebornCross % (zoneID, bossID)  
 | 
            else:  
 | 
                key = ShareDefine.Def_Notify_WorldKey_GameWorldBossReborn % bossID  
 | 
            GameWorld.GetGameWorld().SetGameWorldDict(key, 1)  
 | 
              
 | 
            bossKey = ChConfig.Map_NPC_WorldBossLastReBornTick % bossID  
 | 
            GameWorld.GetGameFB().SetGameFBDict(bossKey, 0)  
 | 
              
 | 
            bossKey = ChConfig.Map_NPC_WorldBossLastReBornTick % ipyData.GetStoneNPCID()  
 | 
            GameWorld.GetGameFB().SetGameFBDict(bossKey, 0)  
 | 
              
 | 
            GameWorld.GetGameFB().SetGameFBDict(ChConfig.Map_NPC_ActivityBossRebornCount % ipyData.GetRefreshMark(), 0)  
 | 
          
 | 
    gameNPCManager = GameWorld.GetNPCManager()  
 | 
    tick = GameWorld.GetGameWorld().GetTick()  
 | 
      
 | 
    for index in range( 0, gameNPCManager.GetNPCCount() ):  
 | 
        curNPC = gameNPCManager.GetNPCByIndex( index )  
 | 
          
 | 
        if not curNPC.GetID() or not curNPC.GetNPCID():  
 | 
            return  
 | 
          
 | 
        if not ChConfig.IsGameBoss(curNPC):  
 | 
            continue  
 | 
          
 | 
        #ÒѾËÀÍöµÄNPC  
 | 
        if curNPC.GetCurAction() == IPY_GameWorld.laNPCDie or not curNPC.IsAlive():  
 | 
            npcControl = NPCCommon.NPCControl(curNPC)  
 | 
            npcControl.DoNPCReborn( tick )  
 | 
          
 | 
    return  
 | 
  
 | 
## ¸øÓè¿Í»§¶ËDEBUGÌáʾ  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param msg logÐÅÏ¢  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def Log( curPlayer, msg ):  
 | 
    GameWorld.DebugAnswer(curPlayer,  msg )  
 | 
    return  
 |