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