From 818774d25af38005782d7d46914a229e725ea8c7 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 08 十一月 2019 16:50:54 +0800
Subject: [PATCH] 8333 【主干】【后端】boss之家死亡在复活点复活,不退出副本(死亡不退出副本,支持地图内复活,支持地图内传送到其他副本)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py |   29 +++++++++++++++++++++++++++--
 1 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py
index 7a50f53..dbaf5d3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py
@@ -127,6 +127,7 @@
 #  @return None
 #  @remarks 函数详细说明.
 def OnNPCAttacked(atkObj, curNPC, skill, tick):
+    NPCCommon.OnNPCAttacked(atkObj, curNPC, skill, tick)
     callFunc = GameWorld.GetExecFunc(NPCAI, "AIType_%d.%s"%(curNPC.GetAIType(), "OnAttacked"))
     if callFunc == None:
         return None
@@ -134,7 +135,14 @@
     callFunc(atkObj, curNPC, skill, tick)
     
     PlayerActivity.OnAttackNPCActivity(atkObj, curNPC)
-    
+    return
+
+def OnCheckCanDie(atkObj, curNPC, skill, tick):
+    callFunc = GameWorld.GetExecFunc(NPCAI, "AIType_%d.%s"%(curNPC.GetAIType(), "OnCheckCanDie"))
+    if callFunc == None:
+        return True
+    return callFunc(atkObj, curNPC, skill, tick)
+
 #---------------------------------------------------------------------
 ## 初始化NPC 
 #  @param tick 当前时间
@@ -352,7 +360,19 @@
     for curNPC in gameTruck_List:
         ProcessNPCAI(curNPC, tick)
     
+    # 宠物AI
+    ProcessPetAI(gameWorld, gameNPC, tick)
+    
+# 宠物AI需求减弱特殊处理, 减少性能消耗
+def ProcessPetAI(gameWorld, gameNPC, tick):
     #---处理宠物的AI---
+    #未到刷新间隔
+    if tick - gameWorld.GetTickByType(ChConfig.TYPE_Map_Tick_PetAITick) < \
+                ChConfig.TYPE_Map_Tick_Time[ChConfig.TYPE_Map_Tick_PetAITick]:
+        return
+    
+    gameWorld.SetTickByType(ChConfig.TYPE_Map_Tick_PetAITick, tick)
+    
     gamePet_List = []
     
     for index in range(0, gameNPC.GetPetCount()):
@@ -419,7 +439,7 @@
         GameWorld.GetGameFB().SetGameFBDict(ChConfig.Def_FBDict_NPCShowEndTick % npcID, 0)
         GameWorld.DebugLog("NPC秀结束,开始处理AI!npcID=%s,tick=%s,endTick=%s" % (npcID, tick, endTick))
         
-    callFunc = GameWorld.GetExecFunc(NPCAI, "AIType_%d.%s"%(curNPC.GetAIType(), "ProcessAI"))
+    callFunc = GameWorld.GetExecFunc(NPCAI, "AIType_%s.%s"%(GetAIName(curNPC), "ProcessAI"))
     if callFunc == None:
         #NPCAI不可使用
 #        #默认call类型1的AI
@@ -429,7 +449,12 @@
         return
     
     callFunc(curNPC, tick)
+    return
 
+def GetAIName(curNPC):
+    if curNPC.GetType() in [ChConfig.ntPriWoodPilePVE, ChConfig.ntPriWoodPilePVP]:
+        return "PriWood"
+    return curNPC.GetAIType()
 
 ##################################################logic
 

--
Gitblit v1.8.0