| | |
| | | # @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()):
|