From 143c55479cbb2f77883ca8a87c7f42c2ddcb8673 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 03 十二月 2024 15:31:51 +0800
Subject: [PATCH] 4999 【bt】【英文】【越南】优化灵宠战斗(主人不攻击时,灵宠达到攻击间隔也会主动攻击可攻击的目标;灵宠攻击目标增加可攻击视野内主动怪,攻击顺序为:主人攻击目标 > 攻击主人的目标 > 视野内主动怪)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_105.py |    5 +++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py    |   29 ++++++++++++++++++++++++++++-
 2 files changed, 33 insertions(+), 1 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_105.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_105.py
index 25acd59..c62bf78 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_105.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_105.py
@@ -18,6 +18,7 @@
 import AICommon
 import ChConfig
 import GameObj
+import PetControl
 
 Def_LastAI1ProTick = "LastAI1ProTick" # 最后一次执行tick
 
@@ -60,6 +61,10 @@
         posX, posY = petControl.GetMoveNearPos(curPlayer.GetPosX(), curPlayer.GetPosY(), 1)
         rolePet.ResetPos(posX, posY)
     
+    
+    if tick - rolePet.GetAttackTick() >= rolePet.GetAtkInterval():
+        PetControl.PetFight(curPlayer, tick)
+        
     #===========================================================================
     # skillManager = rolePet.GetSkillManager()
     # for index in range(0, skillManager.GetSkillCount()):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
index 371a3c2..33107f2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
@@ -47,6 +47,7 @@
 import PassiveBuffEffMng
 import ChNetSendPack
 import IpyGameDataPY
+import AttackCommon
 #---------------------------------------------------------------------
 
 DefPetRebornHPRate = 100  # 宠物死亡复活血量百分比
@@ -92,7 +93,33 @@
             curTag = curPlayer.GetAngryNPCByIndex(i)
             if not curTag or GameObj.GetHP(curTag) <= 0:
                 continue
-        
+            
+        # 还没有就从视野中查找
+        if not curTag or GameObj.GetHP(curTag) <= 0:
+            seePlayerCount = rolePet.GetInSightObjCount()
+            for i in range(0, seePlayerCount):
+                seeObj = rolePet.GetInSightObjByIndex(i)
+                if seeObj == None:
+                    continue
+                seeObjID = seeObj.GetID()
+                seeObjType = seeObj.GetGameObjType()
+                # 只允许主动攻击NPC,且目标NPC是主动怪
+                if seeObjType != IPY_GameWorld.gotNPC:
+                    continue
+                seeObjDetail = GameWorld.GetObj(seeObjID, seeObjType)
+                if not seeObjDetail:
+                    continue
+                if seeObjDetail.GetAtkType() == 1:
+                    # 1为非主动怪
+                    continue
+                if not AttackCommon.CheckCanAttackTag(rolePet, seeObjDetail):
+                    continue
+                relation = BaseAttack.GetTagRelation(rolePet, seeObjDetail, None, tick)[0]
+                if relation != ChConfig.Type_Relation_Enemy:
+                    continue
+                curTag = seeObjDetail
+                break
+                
     if not curTag or GameObj.GetHP(curTag) <= 0:
         return
     

--
Gitblit v1.8.0