#!/usr/bin/python
|
# -*- coding: GBK -*-
|
|
##@package AIType_200
|
# ÈÎÎñ²É¼¯NPC AI
|
#
|
# @author Alee
|
# @date 2010-4-21
|
# @version 1.3
|
#
|
# @change: "2010-05-12 18:30" zhengyang Ìí¼Ó×¢ÊÍ
|
# @change: "2010-06-28 11:10" chenxuewei ¸ü¸Äº¯ÊýÃû
|
# @change: "2017-04-10 22:30" hxp »÷ɱ²É¼¯ÎïÇ¿ÖÆÌí¼ÓÒ»´ÎÉËѪ£¬·ÀÖ¹ÎÞ·¨»ñÈ¡µ½»÷ɱÕßÐÅÏ¢
|
#
|
#---------------------------------------------------------------------
|
#µ¼Èë
|
import IPY_GameWorld
|
import NPCCommon
|
import AICommon
|
import GameWorld
|
import ChConfig
|
import AttackCommon
|
import GameObj
|
#---------------------------------------------------------------------
|
#È«¾Ö
|
#---------------------------------------------------------------------
|
##ÈÎÎñ²É¼¯NPC AIÂß¼´¦Àí
|
#@param curNPC NPCʵÀý
|
#@param tick ʱ¼ä´Á
|
#@return ·µ»ØÖµÎÞÒâÒå
|
#@remarks ÈÎÎñ²É¼¯NPC AIÂß¼´¦Àí
|
def ProcessAI(curNPC, tick):
|
npcControl = NPCCommon.NPCControl(curNPC)
|
|
if curNPC.GetCurAction() == IPY_GameWorld.laNPCDie:
|
#NPCËÀÍö, ½øÈëËÀÍöµ¹¼ÆÊ±
|
if npcControl.DieTick(tick) == 0:
|
return
|
|
#Ë¢ÐÂ×Ô¼ºµÄBuff
|
npcControl.RefreshBuffState(tick)
|
|
|
##²É¼¯½á¹û
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param curNPC µ±Ç°npc
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def OnCollectEnd(curPlayer, curNPC):
|
dist = GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), curNPC.GetPosX(), curNPC.GetPosY())
|
|
if dist > ChConfig.Def_EventDist:
|
curPlayer.ResetPos(curPlayer.GetPosX(), curPlayer.GetPosY())
|
return
|
|
AICommon.ClearPlayerPreparing( curNPC )
|
|
GameObj.SetHP(curNPC, GameObj.GetHP(curNPC) - 1)
|
|
#¹ã²¥Ò»´ÎѪÁ¿
|
curNPC.Notify_HPEx()
|
|
#ËÀÍö
|
if GameObj.GetHP(curNPC) <= 0:
|
#ClearPlayerPreparing»áÇå¿ÕÉËѪÁбí,ÕâÀïÇ¿ÖÆÔÚSetKilled֮ǰÌí¼ÓÉËѪÁбí,·ÀÖ¹ÓÐÐèÒªÓõ½»ñÈ¡²É¼¯Îï»÷ɱÕßʱÎÞ·¨»ñÈ¡µ½µÄÎÊÌâ
|
curNPC_HurtList = curNPC.GetPlayerHurtList()
|
AttackCommon.AddHurtValue(curNPC, curPlayer.GetPlayerID(), ChConfig.Def_NPCHurtTypePlayer, 1)
|
npcControl = NPCCommon.NPCControl(curNPC)
|
npcControl.SetKilled()
|
|
return True
|
|