hxp
2023-10-12 7bd89df4994934b9a5810e6b62383e6773b8339b
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AICommon.py
@@ -31,6 +31,7 @@
import PetControl
import ReadChConfig
import GameObj
import FBLogic
#---------------------------------------------------------------------
#---------------------------------------------------------------------
@@ -176,7 +177,7 @@
        # SetIsNeedProcess(False) 应该及时清理仇恨,回血可以不用即时
        curNPC.GetNPCAngry().Clear()
        
#    if curNPC.GetHP() != curNPC.GetMaxHP():
#    if GameObj.GetHP(curNPC) != GameObj.GetMaxHP(curNPC):
#        if curNPC.GetIsBoss() != ChConfig.Def_NPCType_Ogre_Normal:
#            return
#        
@@ -232,7 +233,7 @@
        curPlayer = GameWorld.GetObj(hurtObjID, IPY_GameWorld.gotPlayer)
        
        #无法查找玩家,或者已经死亡
        if curPlayer == None or curPlayer.GetHP() <= 0:
        if curPlayer == None or GameObj.GetHP(curPlayer) <= 0:
            continue
        
        if srcPlayer and curPlayer.GetID() == srcPlayer.GetID():
@@ -415,7 +416,7 @@
            continue
        
        #仇恨值
        curAngryValue = curAngry.GetAngryValue()
        curAngryValue = GameObj.GetAngryValue(curAngry)
        if curAngryValue == 0:
            continue
        
@@ -461,6 +462,11 @@
    if npcID in npcUseSkillOnDieDict:
        useSkillIDOnDie = npcUseSkillOnDieDict[npcID][0]
        
    useSkillAfterOtherDieDict = {}
    useSkillAfterOtherDieNPCDict = ReadChConfig.GetEvalChConfig("NPCLogic_AI_UseSkillAfterOtherDie")
    if npcID in useSkillAfterOtherDieNPCDict:
        useSkillAfterOtherDieDict = useSkillAfterOtherDieNPCDict[npcID]
    skillManager = curNPC.GetSkillManager()
    tagObjType = curTag.GetGameObjType()
    
@@ -475,6 +481,14 @@
            #GameWorld.DebugLog("死亡释放的技能仅在死亡时才能释放!useSkillIDOnDie=%s" % useSkillIDOnDie)
            continue
        
        skillTypeID = useSkill.GetSkillTypeID()
        if skillTypeID in useSkillAfterOtherDieDict:
            checkIsDeadNPCID = useSkillAfterOtherDieDict[skillTypeID]
            if GameWorld.FindNPCByNPCID(checkIsDeadNPCID):
                #GameWorld.DebugLog("目标NPC还活着,该技能未解锁,无法释放!npcID=%s,skillTypeID=%s,checkIsDeadNPCID=%s"
                #                   % (npcID, skillTypeID, checkIsDeadNPCID))
                continue
        #被动技能不释放
        if SkillCommon.isPassiveSkill(useSkill):
            #GameWorld.Log('被动技能不释放不释放 = %s'%(useSkill.GetSkillName()))
@@ -506,7 +520,7 @@
        return False
    
    useSkillList.sort() # 按使用次数优先升序排,使用次数低的优先判断使用
    GameWorld.DebugLog('技能使用顺序 = useSkillList%s' % str(useSkillList), curNPC.GetID())
    #GameWorld.DebugLog('技能使用顺序 = useSkillList%s' % str(useSkillList), curNPC.GetID())
    
    for useCnt, index, useSkill in useSkillList:
        if DoNPCUseSkill(curNPC, curTag, useSkill, tagDist, tick):
@@ -630,7 +644,7 @@
    return
def NPCMoveByPointList(curNPC, movePointList):
def NPCMoveByPointList(curNPC, movePointList, tick):
    if not movePointList:
        return
    pointIndex = curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_MovePointIndex)
@@ -656,5 +670,10 @@
        
        curNPC.Move(destPosX, destPosY)
        return
    # 到达终点
    if pointIndex == (len(movePointList) - 1):
        FBLogic.OnTDNPCReachTheGoal(curNPC, tick)
    return