| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| ##@package NPCAI.AIType_56  | 
| #  | 
| # @todo:Ëþ·ÀÀàÌØÊâ¹ÖÎïAI, ×Ô±¬¹Ö  | 
| # @author hxp  | 
| # @date 2018-03-29  | 
| # @version 1.0  | 
| #  | 
| # ÏêϸÃèÊö: Ëþ·ÀÀàÌØÊâ¹ÖÎïAI, ³åÏòÖ¸¶¨Ä¿±êNPCID, È»ºó×Ô±¬, Ö§³ÖÔ¤¾¯×Ô±¬  | 
| #  | 
| #-------------------------------------------------------------------------------  | 
| #"""Version = 2018-03-29 15:30"""  | 
| #-------------------------------------------------------------------------------  | 
|   | 
| import ChConfig  | 
| import FBDefenseCommon  | 
| import IPY_GameWorld  | 
| import GameWorld  | 
| import NPCCommon  | 
| import AICommon  | 
| import FBLogic  | 
|   | 
| #-------------------------------------------------------------------------------  | 
|   | 
| ## ³õʼ»¯  | 
| #  @param curNPC µ±Ç°npc  | 
| #  @return None  | 
| #  @remarks º¯ÊýÏêϸ˵Ã÷.  | 
| def DoInit(curNPC):  | 
|     curNPC.GetNPCAngry().Init(ChConfig.Def_NormalNPCAngryCount)  | 
|     return  | 
|   | 
| def OnNPCReborn(curNPC):  | 
|     curNPC.SetIsNeedProcess(True)  | 
|     return  | 
|   | 
| ## »ñÈ¡NPCÊÇ·ñÏÞÖÆ¹¥»÷Ä¿±ê£¬AIÌØÊâ¶îÍâÅÐ¶Ï  | 
| def GetNPCAttackTagLimit(curNPC, tagObj):  | 
|     tagNPCIDList = [31704003] # Ö®ºó¿É¸ù¾Ý²»Í¬µÄÐèÇó¿ªÅäÖò»Í¬µÄ¹¥»÷Ä¿±ê£¬Ä¿Ç°Ö»ÓÐÊØÎÀÈ˻ʣ¬ÔÝʱдËÀ  | 
|     tagObjType = tagObj.GetGameObjType()  | 
|     if tagObjType == IPY_GameWorld.gotNPC:  | 
|         if tagObj.GetNPCID() in tagNPCIDList:  | 
|             #GameWorld.DebugLog("Ö»¹¥»÷Ö¸¶¨Ä¿±êNPCID£¬ÆäËûĬÈÏÏÞÖÆ!")  | 
|             return False  | 
|     #GameWorld.DebugLog("¹¥»÷Ä¿±êÊÜÏÞ!tagID=%s" % tagObj.GetID())  | 
|     return True  | 
|   | 
| ## Ö´ÐÐAI  | 
| #  @param curNPC µ±Ç°npc  | 
| #  @param tick µ±Ç°Ê±¼ä  | 
| #  @return None  | 
| #  @remarks º¯ÊýÏêϸ˵Ã÷.  | 
| def ProcessAI(curNPC, tick):  | 
|       | 
|     if not FBDefenseCommon.NormalCheck(curNPC, tick):  | 
|         return  | 
|       | 
|     if curNPC.GetCurAction() == IPY_GameWorld.laNPCMove:  | 
|         return  | 
|       | 
|     npcControl = NPCCommon.NPCControl(curNPC)  | 
|       | 
|     #Ô¤¾¯´¦Àí  | 
|     warningProcessRet = AICommon.DoNPCSkillWarningProcess(curNPC, tick)  | 
|     if warningProcessRet:  | 
|         if warningProcessRet == 1:  | 
|             __DoNPCSelfDestruction(npcControl, curNPC, tick)  | 
|         return  | 
|       | 
|     tagNPC = GameWorld.FindNPCByNPCID(31704003)  | 
|     if not tagNPC:  | 
|         return  | 
|       | 
|     #»ñµÃ¼¼ÄܹÜÀíÆ÷  | 
|     skillManager = curNPC.GetSkillManager()  | 
|     destructSkill = skillManager.GetSkillByIndex(0)  | 
|       | 
|     tagDist = GameWorld.GetDist(curNPC.GetPosX(), curNPC.GetPosY(), tagNPC.GetPosX(), tagNPC.GetPosY())  | 
|     if tagDist > 1:  | 
|         npcControl.MoveToObj_Detel(tagNPC, 1)  | 
|         return  | 
|       | 
|     # Êͷż¼Äܳɹ¦£¬×Ôɱ£¬´¥·¢±¬Õ¨ÌØÐ§¼¼ÄÜ  | 
|     if AICommon.DoNPCUseSkill(curNPC, tagNPC, destructSkill, tagDist, tick):  | 
|         if curNPC.GetCurAction() != IPY_GameWorld.laNPCSkillWarning:  | 
|             __DoNPCSelfDestruction(npcControl, curNPC, tick)  | 
|               | 
|     return  | 
|   | 
| def __DoNPCSelfDestruction(npcControl, curNPC, tick):  | 
|     FBLogic.DoFB_NPCSelfDestruction(curNPC, tick)  | 
|     npcControl.SetKilled()  | 
|     return  | 
|   |