| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #  | 
| # @todo: ³èÎïAI  | 
| #  | 
| # @author: Alee  | 
| # @date 2017-11-25 ÏÂÎç05:33:43  | 
| # @version 1.0  | 
| #  | 
| # @note: ³èÎïͬʱ¸úËæÈËÎïÒÆ¶¯ºÍÕ½¶·  | 
| #  | 
| #---------------------------------------------------------------------  | 
| #µ¼Èë  | 
| import NPCCommon  | 
| import IPY_GameWorld  | 
| import GameWorld  | 
| import SkillCommon  | 
| import AICommon  | 
| import ChConfig  | 
| import GameObj  | 
|   | 
| Def_LastAI1ProTick = "LastAI1ProTick" # ×îºóÒ»´ÎÖ´ÐÐtick  | 
|   | 
| #---------------------------------------------------------------------  | 
| ## ³õʼ»¯  | 
| #  @param rolePet ³èÎïʵÀý  | 
| #  @return None  | 
| #  @remarks ³õʼ»¯  | 
| def DoInit(rolePet):  | 
|     rolePet.GetNPCAngry().Init(1)  | 
|     return  | 
| #---------------------------------------------------------------------  | 
| ## Ö´ÐÐAI  | 
| #  @param rolePet ³èÎïʵÀý  | 
| #  @param tick µ±Ç°Ê±¼ä  | 
| #  @return None  | 
| #  @remarks Ö´ÐÐAI  | 
| def ProcessAI(rolePet, tick):  | 
|     ## Ö´ÐÐÆµÂÊ, ¸ù¾ÝÈËÊý½µµÍ---------------------------  | 
|     if tick - rolePet.GetDictByKey(Def_LastAI1ProTick) < 1500:  | 
|         return  | 
|     rolePet.SetDict(Def_LastAI1ProTick, tick)  | 
|     #-------------------------------------------------------  | 
|       | 
|     curPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, rolePet)  | 
|   | 
|     if curPlayer == None:  | 
|         GameWorld.ErrLog('³èÎï = %sÎÞ·¨²éÕÒÖ÷ÈË, AIÖ´ÐÐʧ°Ü'%(rolePet.GetID()))  | 
|         return  | 
|       | 
|     rolePetControl = NPCCommon.NPCControl(rolePet)  | 
|     rolePetControl.RefreshBuffState(tick)  | 
|       | 
|     dist = GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), rolePet.GetPosX(), rolePet.GetPosY())  | 
|     if dist > 12:  | 
|         # ·¢Éú´«Ë͵ÈÇé¿öµ¼Ö¾àÀëͻȻ¹ýÔ¶  | 
|         petControl = NPCCommon.NPCControl(rolePet)  | 
|         posX, posY = petControl.GetMoveNearPos(curPlayer.GetPosX(), curPlayer.GetPosY(), 1)  | 
|         rolePet.ResetPos(posX, posY)  | 
|       | 
|     skillManager = rolePet.GetSkillManager()  | 
|     for index in range(0, skillManager.GetSkillCount()):  | 
|         useSkill = skillManager.GetSkillByIndex(index)  | 
|         #ÒѾµ½Î²²¿ÁË  | 
|         if not useSkill or useSkill.GetSkillTypeID() == 0:  | 
|             break  | 
|           | 
|         if SkillCommon.isPassiveSkill(useSkill):  | 
|             #GameWorld.Log('±»¶¯¼¼Äܲ»ÊͷŲ»ÊÍ·Å = %s'%(useSkill.GetSkillName()))  | 
|             continue  | 
|           | 
|         effect = SkillCommon.GetSkillEffectByEffectID(useSkill, ChConfig.Def_Skill_Effect_HPPerLimit)  | 
|         if not effect:  | 
|             continue  | 
|           | 
|         if GameObj.GetHP(curPlayer)*ChConfig.Def_MaxRateValue/GameObj.GetMaxHP(curPlayer) >= effect.GetEffectValue(0):  | 
|             continue  | 
|           | 
|         AICommon.DoNPCUseSkill(rolePet, curPlayer, useSkill, 0, tick)  | 
|     return  | 
|   |