129 【战斗】战斗系统-服务端(词条技能1021、1022、1024;增加触发方式25-受到持续伤害,26-敌方单位死亡时,27-己方单位死亡时;优化效果6008可配置免控类型;)
21个文件已修改
79 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6002.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6003.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6004.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6005.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6006.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6007.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6008.py 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6009.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6010.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6011.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6012.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6013.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6014.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6015.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6016.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6017.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6018.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_Attr.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4053,7 +4053,10 @@
TriggerWay_BeAnyEffect, # 受到任意效果时(除直接攻击外的任意效果,如buff、dot、治疗、额外怒技)22
TriggerWay_BuffAddByOwner, # buff添加时(施法者触发) 23
TriggerWay_BeHurt, # 掉血时 24
) = range(1, 1 + 24)
TriggerWay_BeDOTHurt, # 受到持续伤害 25
TriggerWay_EnemyDie, # 敌方单位死亡时 26
TriggerWay_FriendDie, # 己方单位死亡时 27
) = range(1, 1 + 27)
# 不加载的被动触发方式,一般用于本技能固定触发逻辑用的
TriggerWayNoLoadList = [TriggerWay_CurSkillEff, TriggerWay_CurSkillEffLst]
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6002.py
@@ -15,7 +15,7 @@
#"""Version = 2025-09-16 17:00"""
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    checkInStateList = curEffect.GetEffectValue(1)
    if checkInStateList:
        if not defender.CheckInState(checkInStateList):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6003.py
@@ -15,7 +15,7 @@
#"""Version = 2025-09-16 17:30"""
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    checkInStateList = curEffect.GetEffectValue(1)
    if checkInStateList:
        if not defender.CheckInState(checkInStateList):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6004.py
@@ -18,7 +18,7 @@
import BattleObj
#import GameWorld
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    checkInStateList = curEffect.GetEffectValue(1)
    if checkInStateList:
        checkMainSkillTag = curEffect.GetEffectValue(2)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6005.py
@@ -15,7 +15,7 @@
#"""Version = 2025-10-30 10:00"""
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    addPer = curEffect.GetEffectValue(0) # 每层增加的万分比
    batLineup = attacker.GetBatLineup()
    deadCnt = batLineup.getDeadObjCnt()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6006.py
@@ -15,7 +15,7 @@
#"""Version = 2025-09-23 17:00"""
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    checkHeroJob = curEffect.GetEffectValue(1)
    if checkHeroJob:
        if checkHeroJob != defender.GetJob():
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6007.py
@@ -15,5 +15,5 @@
#"""Version = 2025-09-22 16:00"""
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    return curEffect.GetEffectValue(0)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6008.py
@@ -14,8 +14,18 @@
#-------------------------------------------------------------------------------
#"""Version = 2025-09-22 16:00"""
#-------------------------------------------------------------------------------
import IpyGameDataPY
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    lowerThanPer = curEffect.GetEffectValue(0)
    immuneGroup = curEffect.GetEffectValue(1) # 0-全部控制;1-强控;2-弱控
    nowPer = attacker.GetHP() / float(attacker.GetMaxHP()) * 100
    if immuneGroup:
        buffStateGroupDict = IpyGameDataPY.GetFuncEvalCfg("BuffStateGroup", 1, {})
        buffStateList = buffStateGroupDict.get(str(immuneGroup), [])
        if connSkill.GetCurBuffState() not in buffStateList:
            #GameWorld.DebugLog("不在免疫的buff状态里,不免疫")
            return
    return 1 if nowPer < lowerThanPer else 0
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6009.py
@@ -15,7 +15,7 @@
#"""Version = 2025-09-23 19:00"""
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    lowerThanPer = curEffect.GetEffectValue(0)
    nowPer = defender.GetHP() / float(defender.GetMaxHP()) * 100
    return 1 if nowPer < lowerThanPer else 0
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6010.py
@@ -15,7 +15,7 @@
#"""Version = 2025-09-24 19:00"""
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    checkHPPer = curEffect.GetEffectValue(1)
    checkType = curEffect.GetEffectValue(2)
    nowPer = attacker.GetHP() / float(attacker.GetMaxHP()) * 100
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6011.py
@@ -16,7 +16,7 @@
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    layerPer = curEffect.GetEffectValue(0) # 每层增加的万分比
    buffStateList = curEffect.GetEffectValue(1) # buff״̬ [״̬1, ״̬2, ...]
    if not buffStateList:
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6012.py
@@ -15,5 +15,5 @@
#"""Version = 2025-09-24 19:00"""
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    return curEffect.GetEffectValue(0)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6013.py
@@ -15,7 +15,7 @@
#"""Version = 2025-09-24 19:00"""
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    perAttr = curEffect.GetEffectValue(0) # 每万分比
    attrID = curEffect.GetEffectValue(1) # 属性ID
    toPer = curEffect.GetEffectValue(2) # 转化为x万分比最终增伤
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6014.py
@@ -15,5 +15,5 @@
#"""Version = 2025-09-25 18:00"""
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    return curEffect.GetEffectValue(0)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6015.py
@@ -15,5 +15,5 @@
#"""Version = 2025-10-28 17:00"""
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    return curEffect.GetEffectValue(0)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6016.py
@@ -15,5 +15,5 @@
#"""Version = 2025-10-28 18:00"""
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    return curEffect.GetEffectValue(0)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6017.py
@@ -15,6 +15,6 @@
#"""Version = 2025-10-30 10:00"""
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    invalidSkillID = curEffect.GetEffectValue(0) #无效的技能ID
    return invalidSkillID
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6018.py
@@ -15,6 +15,6 @@
#"""Version = 2025-10-30 10:00"""
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    oneXPAddPer = curEffect.GetEffectValue(0) #每1点xp增加万分比
    return attacker.GetXP() * oneXPAddPer
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_Attr.py
@@ -17,7 +17,7 @@
import GameWorld
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    
    attrID = curEffect.GetEffectID()
    attrValue = curEffect.GetEffectValue(0)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py
@@ -163,7 +163,7 @@
            callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "GetHappenValue"))
            if not callFunc:
                continue
            value = callFunc(atkObj, defObj, effect, effSkill, effBuff, **kwargs)
            value = callFunc(atkObj, defObj, effect, effSkill, effBuff, connSkill, **kwargs)
            if value is None:
                continue
            
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -1001,13 +1001,17 @@
            
    # 统计击杀
    killObjList = [] # 击杀其他阵营目标列表
    dieObjList = [] # 死亡的单位列表
    for tagObj in useSkill.GetTagObjList():
        tagID = tagObj.GetID()
        if tagObj.IsAlive() and tagObj.GetHP() <= 0 and tagObj.GetFaction() != curObj.GetFaction():
        if tagObj.IsAlive() and tagObj.GetHP() <= 0:
            dieObjList.append(tagObj)
            if tagObj.GetFaction() != curObj.GetFaction():
            killObjList.append(tagObj)
            TurnAttack.SetObjKilled(turnFight, tagObj, curObj, useSkill)
    useSkill.SetKillObjList(killObjList)
    if curObj.IsAlive() and curObj.GetHP() <= 0:
        dieObjList.append(curObj)
        TurnAttack.SetObjKilled(turnFight, curObj)
        
    # 统计伤血,可能单个技能对同一目标造成多次伤害
@@ -1087,6 +1091,23 @@
            TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_KillOneObj, tagObj, connSkill=useSkill)
        TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_KillTagObj, tagObj, connSkill=useSkill)
        
    if dieObjList:
        for faction in [ChConfig.Def_FactionA, ChConfig.Def_FactionB]:
            batFaction = turnFight.getBatFaction(faction)
            for lineupNum in batFaction.lineupDict.keys():
                batLineup = batFaction.getBatlineup(lineupNum)
                for lineupObjID in batLineup.posObjIDDict.values():
                    lineupObj = batObjMgr.getBatObj(lineupObjID)
                    if not lineupObj.IsAlive():
                        continue
                    for dieObj in dieObjList:
                        # 敌方单位死亡时
                        if lineupObj.GetFaction() != dieObj.GetFaction():
                            TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_EnemyDie, dieObj, connSkill=useSkill)
                        # 己方单位死亡时
                        else:
                            TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendDie, dieObj, connSkill=useSkill)
    triggerOne = False
    batType = useSkill.GetBatType()
    isAttackDirect = (isUseSkill and not SkillCommon.IsBuff(useSkill) and useSkill.GetSkillType() in [ChConfig.Def_SkillType_Atk])
@@ -1107,6 +1128,9 @@
            TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeAttackedDirect, curObj, connSkill=useSkill)
        else:
            TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeAnyEffect, curObj, connSkill=useSkill)
            # 受到持续伤害
            if tagID in beHurtObjIDList:
                TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeDOTHurt, curObj, connSkill=useSkill)
            
        # 使用技能后
        if isUseSkill: