#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#  
 | 
#---------------------------------------------------------------------  
 | 
##@package AIType_62  
 | 
# @todo: ÍòÄê±ùÀεÚËĹØÕÙ»½ÊÞAI (Õ¾Á¢Êͷż¼ÄÜ)  
 | 
#  
 | 
# @author zhangd  
 | 
# @date 2011-07-19 11:20  
 | 
# @version 1.1  
 | 
#  
 | 
# @note:   
 | 
# @change: "2011-07-19 21:00" zhangd ÐÞ¸Äbuff²»Ë¢ÐÂbug  
 | 
#---------------------------------------------------------------------  
 | 
"""Version = 2011-07-19 21:00"""  
 | 
#---------------------------------------------------------------------  
 | 
#µ¼Èë  
 | 
import IPY_GameWorld  
 | 
import GameWorld  
 | 
import NPCCommon  
 | 
import BaseAttack  
 | 
import ChConfig  
 | 
import SkillShell  
 | 
import AICommon  
 | 
import GameObj  
 | 
#---------------------------------------------------------------------  
 | 
  
 | 
#---------------------------------------------------------------------  
 | 
  
 | 
#---------------------------------------------------------------------  
 | 
## ³õʼ»¯  
 | 
#  @param curNPC µ±Ç°npc  
 | 
#  @return None  
 | 
#  @remarks ÐþÌìÕæÑÔÕÙ»½µÄ½á½ç³õʼ»¯  
 | 
def DoInit(curNPC):  
 | 
    curNPC.GetNPCAngry().Init(ChConfig.Def_NormalNPCAngryCount)  
 | 
    return  
 | 
  
 | 
  
 | 
## Ö´ÐÐAI  
 | 
#  @param curNPC µ±Ç°npc  
 | 
#  @param tick µ±Ç°Ê±¼ä  
 | 
#  @return None  
 | 
#  @remarks ÐþÌìÕæÑÔÕÙ»½µÄ½á½çÖ´ÐÐAI  
 | 
def ProcessAI(curNPC, tick):  
 | 
      
 | 
    #NPCÒÑËÀÍö£¬Ìø³ö  
 | 
    if curNPC.IsAlive() != True:  
 | 
        return  
 | 
      
 | 
    npcControl = NPCCommon.NPCControl(curNPC)  
 | 
      
 | 
    #ÕÙ»½ÊÞ³¬¹ý´æ»îʱ¼ä, ÉèÖÃËÀÍö  
 | 
    if curNPC.GetLastTime() != 0 and tick - curNPC.GetBornTime() >= curNPC.GetLastTime():  
 | 
        npcControl.SetKilled()  
 | 
        return  
 | 
  
 | 
    #Ë¢ÐÂ×Ô¼ºµÄbuff  
 | 
    npcControl.RefreshBuffState(tick)    
 | 
    if GameObj.GetHP(curNPC) == 0 :  
 | 
        # BUFFË¢ÐÂÖпÉÄܻᵼÖÂNPCËÀÍö  
 | 
        return  
 | 
              
 | 
    #---¹¥»÷Âß¼---  
 | 
      
 | 
    #¹¥»÷¼ä¸ôûÓе½, Ìø³ö  
 | 
    if tick - curNPC.GetAttackTick() < curNPC.GetAtkInterval():  
 | 
        return  
 | 
      
 | 
    curAngry = npcControl.GetMaxAngryTag()  
 | 
      
 | 
    if not curAngry:  
 | 
        return  
 | 
      
 | 
    #³ðºÞ¶ÔÏóÀàÐÍ,³ðºÞ¶ÔÏóID  
 | 
    curNPCAngryType = curAngry.GetObjType()  
 | 
    curNPCAngryID = curAngry.GetObjID()  
 | 
      
 | 
    curTag = GameWorld.GetObj(curNPCAngryID, curNPCAngryType)    
 | 
      
 | 
    if curTag == None or GameObj.GetHP(curTag) <= 0:  
 | 
        return  
 | 
       
 | 
    skillManager = curNPC.GetSkillManager()  
 | 
    skillCnt = skillManager.GetSkillCount()  
 | 
    # ±éÀúʹÓü¼ÄÜ  
 | 
    for index in range(skillCnt):  
 | 
        curSkill = skillManager.GetSkillByIndex(index)  
 | 
      
 | 
        if curSkill == None:  
 | 
            continue  
 | 
      
 | 
        #Àäȴʱ¼äδµ½£¬Ìø³ö  
 | 
        if tick - curSkill.GetLastUseTick() < curSkill.GetCoolDownTime():  
 | 
            continue  
 | 
      
 | 
        #ʹÓü¼ÄÜ  
 | 
        result = SkillShell.ObjAutoUseSkill(curNPC, curTag, curSkill, tick)  
 | 
          
 | 
        if result:  
 | 
            return  
 | 
      
 | 
    return  
 |