From a91b826dc1ed03b93d2dc98e72ca718f8d290d52 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 01 三月 2019 18:02:59 +0800
Subject: [PATCH] 6318 【后端】【2.0】召唤兽释放技能增加根据等级来
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AICommon.py | 87 +++++++++++++++++++++++++++++++++----------
1 files changed, 67 insertions(+), 20 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 d449a62..09a4ecf 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
@@ -333,18 +333,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)
@@ -395,6 +398,44 @@
#---------------------------------------------------------------------
+
+
+def GetCanUseRealmSuppressSkll(curNPC, curSkill):
+ if curSkill.GetFuncType() != ChConfig.Def_SkillFuncType_RealmSuppress:
+ # 非境界压制技能返回可用
+ return True
+
+ # 境界压制技能需判断 周围是否有低境界玩家
+ npcRealmLV = NPCCommon.GetRealmLV(curNPC)
+ angryManager = curNPC.GetNPCAngry()
+
+ for i in range(0, angryManager.GetAngryCount()) :
+ curAngry = angryManager.GetAngryValueTag(i)
+ if curAngry == None or curAngry.GetObjID() == 0:
+ continue
+
+ #仇恨值
+ curAngryValue = curAngry.GetAngryValue()
+ if curAngryValue == 0:
+ continue
+
+ if curAngry.GetIsDisable():
+ continue
+
+ angryID = curAngry.GetObjID()
+ angryObjType = curAngry.GetObjType()
+ if angryObjType != IPY_GameWorld.gotPlayer:
+ continue
+
+ curTag = GameWorld.GetObj(angryID, angryObjType)
+ if not curTag:
+ continue
+ if curTag.GetOfficialRank() < npcRealmLV:
+ return True
+
+ return False
+
+
##NPC自动释放技能
# @param curNPC NPC实例
# @param curTag 攻击目标
@@ -442,17 +483,22 @@
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):
continue
+ # 境界压制需要根据仇恨列表中的玩家是否有压制
+ if not GetCanUseRealmSuppressSkll(curNPC, useSkill):
+ continue
+
useCnt = curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_SkillUseCnt % useSkill.GetSkillTypeID()) # 该技能已使用次数
useSkillList.append([useCnt, index, useSkill])
@@ -460,7 +506,7 @@
return False
useSkillList.sort() # 按使用次数优先升序排,使用次数低的优先判断使用
- #GameWorld.DebugLog('技能使用顺序 = useSkillList%s' % str(useSkillList), curNPC.GetID())
+ GameWorld.DebugLog('技能使用顺序 = useSkillList%s' % str(useSkillList), curNPC.GetID())
for useCnt, index, useSkill in useSkillList:
if DoNPCUseSkill(curNPC, curTag, useSkill, tagDist, tick):
@@ -477,9 +523,10 @@
# @return 布尔值
def CheckSkillTrigger(curNPC, triggerDict, npcSkillindex, tick):
skillInfo = triggerDict.get(npcSkillindex)
+
if skillInfo != None:
#当前血量
- hpPercent = int(curNPC.GetHP()/float(GameObj.GetMaxHP(curNPC))*100)
+ hpPercent = int(GameObj.GetHP(curNPC)/float(GameObj.GetMaxHP(curNPC))*100)
checkHP = skillInfo[0]
#血量未到
--
Gitblit v1.8.0