| #!/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  |