|  |  | 
 |  |  | #  @remarks 函数详细说明.
 | 
 |  |  | def OnNPCDie(curNPC,HurtType,HurtID):
 | 
 |  |  |     PassiveBuffEffMng.GetPassiveEffManager().RemovePassiveEff((curNPC.GetID(), IPY_GameWorld.gotNPC))
 | 
 |  |  |      | 
 |  |  |     # 召唤NPC死亡触发被动技能
 | 
 |  |  |     owner = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curNPC)
 | 
 |  |  |     if owner:
 | 
 |  |  |         owner.SetDict("summondie", curNPC.GetNPCID())
 | 
 |  |  |         PassiveBuffEffMng.OnPassiveSkillTrigger(owner, None, None, ChConfig.TriggerType_SummonDie,
 | 
 |  |  |                                                 GameWorld.GetGameWorld().GetTick())
 | 
 |  |  |          | 
 |  |  |     callFunc = GameWorld.GetExecFunc(NPCAI, "AIType_%d.%s"%(curNPC.GetAIType(), "OnDie"))
 | 
 |  |  |     if callFunc == None:
 | 
 |  |  |         return None
 | 
 |  |  |     
 | 
 |  |  |     callFunc(curNPC,HurtType,HurtID)
 | 
 |  |  |     return
 | 
 |  |  | 
 | 
 |  |  | def OnNPCSetDead(curNPC):
 | 
 |  |  |     callFunc = GameWorld.GetExecFunc(NPCAI, "AIType_%d.%s"%(curNPC.GetAIType(), "OnNPCSetDead"))
 | 
 |  |  |     if callFunc == None:
 | 
 |  |  |         return None
 | 
 |  |  |     callFunc(curNPC)
 | 
 |  |  |     return
 | 
 |  |  | 
 | 
 |  |  | def OnNPCReborn(curNPC):
 | 
 |  |  | 
 |  |  |     callFunc(atkObj, curNPC, skill, tick)
 | 
 |  |  |     
 | 
 |  |  |     PlayerActivity.OnAttackNPCActivity(atkObj, curNPC)
 | 
 |  |  |      | 
 |  |  | 
 | 
 |  |  | 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 当前时间
 | 
 |  |  | 
 |  |  |             
 | 
 |  |  |             if curNPC == None:
 | 
 |  |  |                 continue
 | 
 |  |  | 
 | 
 |  |  |              | 
 |  |  |             #2018.10.9修改:增加boss条件过滤,用标试点刷出来的boss也是召唤兽,放在bossAI中处理,此处不处理
 | 
 |  |  |             if ChConfig.IsGameBoss(curNPC):
 | 
 |  |  |                 continue
 | 
 |  |  |              | 
 |  |  |         normal_NPC_List.append(curNPC)
 | 
 |  |  |     
 | 
 |  |  |     for curNPC in normal_NPC_List:
 | 
 |  |  | 
 |  |  |         if curNPC.GetType() == IPY_GameWorld.ntElf:
 | 
 |  |  |             continue
 | 
 |  |  |         
 | 
 |  |  |         if curNPC.GetOwner() == None:
 | 
 |  |  |         if curNPC.GetOwner() == None and not ChConfig.IsGameBoss(curNPC):
 | 
 |  |  |             #2009.8.17修改
 | 
 |  |  |             #如果一个召唤兽的主人为None, 划归为普通NPC, 为了减少副本中的CPU使用率
 | 
 |  |  |             #2018.10.9修改:增加boss条件过滤,用标试点刷出来的boss也是召唤兽,也需要处理
 | 
 |  |  |             continue
 | 
 |  |  |         
 | 
 |  |  |         if not curNPC.IsAlive():
 | 
 |  |  | 
 |  |  |     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()):
 |