From 49cfc84f644219fefb382215e1765a8fd81fde48 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 25 九月 2025 09:49:52 +0800 Subject: [PATCH] 129 【战斗】战斗系统-服务端(甘宁技能;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py | 25 ++++++++++++++++++------- 1 files changed, 18 insertions(+), 7 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py index 5492ff9..12a06ea 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py @@ -976,7 +976,8 @@ # return enhanceSkillID = curEffect.GetEffectValue(0) checkInStateList = curEffect.GetEffectValue(1) - GameWorld.DebugLog("额外触发的技能: enhanceSkillID=%s,checkInStateList=%s" % (enhanceSkillID, checkInStateList)) + checkHeroJob = curEffect.GetEffectValue(2) + GameWorld.DebugLog("额外触发的技能: enhanceSkillID=%s,checkInStateList=%s,checkHeroJob=%s" % (enhanceSkillID, checkInStateList, checkHeroJob)) tagObjList = useSkill.GetTagObjList() enhanceSkillData = IpyGameDataPY.GetIpyGameData("Skill", enhanceSkillID) @@ -1001,6 +1002,9 @@ if not tagObj.CheckInState(checkInStateList): GameWorld.DebugLog(" 不在状态下不触发: tagID=%s not in state:%s" % (tagID, checkInStateList)) continue + if checkHeroJob and checkHeroJob != tagObj.GetJob(): + GameWorld.DebugLog(" 非目标职业不触发: tagID=%s,job=%s != %s" % (tagID, tagObj.GetJob(), checkHeroJob)) + continue if enhanceRate and enhanceRate != ChConfig.Def_MaxRateValue and not GameWorld.CanHappen(enhanceRate, ChConfig.Def_MaxRateValue): GameWorld.DebugLog(" 概率不触发: tagID=%s,enhanceRate=%s" % (tagID, enhanceRate)) continue @@ -1014,14 +1018,21 @@ # 只执行一次,防止群攻时额外触发多次 GameWorld.DebugLog("重新锁定目标! enhanceSkillID=%s" % enhanceSkillID) - if checkInStateList: - inState = False + if checkInStateList or checkHeroJob: + inState, haveJob = False, False for tagObj in tagObjList: - if tagObj.CheckInState(checkInStateList): + tagID = tagObj.GetID() + if tagID in effIgnoreObjIDList: + continue + if not inState and tagObj.CheckInState(checkInStateList): inState = True - break - if not inState: - GameWorld.DebugLog(" 没有目标在状态下不触发: tagObj not in state:%s" % str(checkInStateList)) + if not haveJob and checkHeroJob and checkHeroJob == tagObj.GetJob(): + haveJob = True + if checkInStateList and not inState: + GameWorld.DebugLog(" 没有命中目标在状态下不触发: tagObj not in state:%s" % str(checkInStateList)) + return + if checkHeroJob and not haveJob: + GameWorld.DebugLog(" 没有命中目标为目标职业不触发: checkHeroJob=%s" % checkHeroJob) return OnUseSkill(turnFight, curBatObj, enhanceSkillData, batType=ChConfig.TurnBattleType_Enhance, bySkill=useSkill) return -- Gitblit v1.8.0