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