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