From 7bd89df4994934b9a5810e6b62383e6773b8339b Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 12 十月 2023 20:28:47 +0800
Subject: [PATCH] 9952 【BT0.1】【主干】仙盟修改(传功)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AICommon.py |   67 ++++++++++++++++++++++-----------
 1 files changed, 45 insertions(+), 22 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AICommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AICommon.py
index 7095fc6..23c9aa9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AICommon.py
+++ b/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():
@@ -333,18 +334,21 @@
         useSkill = changeSkill
         #GameWorld.DebugLog("----随机技能 %s"%useSkill.GetSkillID())
       
-    if PetControl.IsPet(curNPC):
-        petOwner = PetControl.GetPetOwner(curNPC)
-        
-        if petOwner == None:
-            GameWorld.ErrLog("宠物(%s)找不到主人"%curNPC.GetRolePet().PetID)
-            return False
-        
-        #血量条件判定
-        effect = SkillCommon.GetSkillEffectByEffectID(useSkill, ChConfig.Def_Skill_Effect_HPPerLimit)
-        if effect:
-            if GameObj.GetHP(petOwner)*ChConfig.Def_MaxRateValue/GameObj.GetMaxHP(petOwner) >= effect.GetEffectValue(0):
-                return False
+    #===========================================================================
+    # 改成被动触发
+    # if PetControl.IsPet(curNPC):
+    #    petOwner = PetControl.GetPetOwner(curNPC)
+    #    
+    #    if petOwner == None:
+    #        GameWorld.ErrLog("宠物(%s)找不到主人"%curNPC.GetRolePet().PetID)
+    #        return False
+    #    
+    #    #血量条件判定
+    #    effect = SkillCommon.GetSkillEffectByEffectID(useSkill, ChConfig.Def_Skill_Effect_HPPerLimit)
+    #    if effect:
+    #        if GameObj.GetHP(petOwner)*ChConfig.Def_MaxRateValue/GameObj.GetMaxHP(petOwner) >= effect.GetEffectValue(0):
+    #            return False
+    #===========================================================================
     
     skillTag = SkillShell.GetSkillAffectTag(useSkill)
     skillAim = SkillShell.GetSkillFireAim(useSkill)
@@ -412,7 +416,7 @@
             continue
         
         #仇恨值
-        curAngryValue = curAngry.GetAngryValue()
+        curAngryValue = GameObj.GetAngryValue(curAngry)
         if curAngryValue == 0:
             continue
         
@@ -458,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()
     
@@ -472,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()))
@@ -480,12 +497,13 @@
         if SkillShell.GetSkillFireAim(useSkill) == ChConfig.Def_UseSkillAim_Obj:
             # 主目标对象判定, 不能释放则不进入队列
             curSkillUseTag = SkillShell.GetSkillAffectTag(useSkill)
-            hurtTypeList = ChConfig.Def_Dict_UseSkillTag_ObjType.get(curSkillUseTag)
-            if not hurtTypeList:
-                continue
-            
-            if tagObjType not in hurtTypeList:
-                continue
+            if curSkillUseTag != ChConfig.Def_UseSkillTag_AppointNPC:
+                hurtTypeList = ChConfig.Def_Dict_UseSkillTag_ObjType.get(curSkillUseTag)
+                if not hurtTypeList:
+                    continue
+                
+                if tagObjType not in hurtTypeList:
+                    continue
         
         if triggerDict != {}:
             if not CheckSkillTrigger(curNPC, triggerDict, index, tick):
@@ -626,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)
@@ -652,5 +670,10 @@
         
         curNPC.Move(destPosX, destPosY)
         return
+    
+    # 到达终点
+    if pointIndex == (len(movePointList) - 1):
+        FBLogic.OnTDNPCReachTheGoal(curNPC, tick)
+        
     return
 

--
Gitblit v1.8.0