#!/usr/bin/python # -*- coding: GBK -*- # #--------------------------------------------------------------------- ##@package AIType_61 # @todo: ÍòÄê±ùÀεڶþ¹ØBossÕÙ»½ÊÞAI £¨³åÏòÍæ¼Ò×Ô±¬£© # # @author zhangd # @date 2011-07-15 18:00 # @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 FBDefenseCommon import random import GameObj #--------------------------------------------------------------------- #--------------------------------------------------------------------- ## ³õʼ»¯ # @param curNPC µ±Ç°npc # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def DoInit(curNPC): curNPC.GetNPCAngry().Init(ChConfig.Def_NormalNPCAngryCount) curNPC.SetIsNeedProcess(True) return ## Ö´ÐÐAI # @param curNPC µ±Ç°npc # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. 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 #---¹¥»÷Âß¼­--- playerList = NPCCommon.GetInSightPlayerList_NPC(curNPC) if not playerList: return tagPlayer = random.choice(playerList) #»ñµÃ¼¼ÄܹÜÀíÆ÷ skillManager = curNPC.GetSkillManager() SkillOne = skillManager.GetSkillByIndex(0) # skillTwo = skillManager.GetSkillByIndex(1) tagDist = GameWorld.GetDist(curNPC.GetPosX(), curNPC.GetPosY(), tagPlayer.GetPosX(), tagPlayer.GetPosY()) if tagDist > SkillOne.GetAtkDist(): npcControl.MoveToObj_Detel(tagPlayer, 1) return result = AICommon.DoNPCUseSkill(curNPC, tagPlayer, SkillOne, tagDist, tick) # Êͷż¼Äܳɹ¦£¬×Ôɱ£¬´¥·¢±¬Õ¨ÌØÐ§¼¼ÄÜ if result: npcControl.SetKilled() return result ##ËÀºó·Å±¬Õ¨ÌØÐ§¼¼ÄÜ # @param curNPC µ±Ç°npc # @param hurtType É˺¦ÕßµÄobjÀàÐÍ # @param hurtID É˺¦ÕßµÄobjID # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def OnDie(curNPC, hurtType, hurtID): FBDefenseCommon.DeadUseSkillByIndex(curNPC, 1)