129 【战斗】战斗系统-服务端(步练师所有技能; 5023效果增加可指定消耗层级或不消耗怒气;增加效果6031;)
3个文件已修改
1个文件已添加
60 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5023.py 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6031.py 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4074,6 +4074,7 @@
PassiveEff_AddChangeLayers5008 = 6028 # 增减5008效果的转化层数
PassiveEff_AddBatDamPerByLayer = 6029 # 提升技能战斗伤害(根据身上buff状态层数)
PassiveEff_LostHPProtect = 6030 # 掉血上限保护
PassiveEff_ImmuneControlDepBuff = 6031 # 某种buff状态层达到x时免疫减益控制效果
# 被动效果ID有触发值时就返回的
PassiveEffHappenValueList = [PassiveEff_ChangeHurtType, PassiveEff_ImmuneControlBuff, PassiveEff_MustSuperHit, PassiveEff_SkillInvalid, 
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5023.py
@@ -40,12 +40,18 @@
    if buffLayers < needLayers:
        GameWorld.DebugLogEx("buff状态层数不足不触发! buffState=%s,buffLayers=%s < %s", buffState, buffLayers, needLayers)
        return
    updLayer = buffLayers - needLayers
    GameWorld.DebugLogEx("消耗buff层释放技能: buffState=%s,buffLayers=%s,delLayers=%s,updLayer=%s", buffState, buffLayers, needLayers, updLayer)
    delLayers = curEffect.GetEffectValue(3) # 指定消耗层数
    if not delLayers:
        delLayers = needLayers
    updLayer = buffLayers - delLayers
    GameWorld.DebugLogEx("消耗buff层释放技能: buffState=%s,buffLayers=%s,delLayers=%s,updLayer=%s", buffState, buffLayers, delLayers, updLayer)
    TurnBuff.DoBuffLayerChange(turnFight, batObj, curBuff, updLayer, connSkill)
    
    if exSkillID:
        TurnSkill.OnUsePassiveSkill(turnFight, batObj, tagObj, exSkillID, connBuff=connBuff)
        noUseXP = curEffect.GetEffectValue(4) # 怒气时是否不消耗怒气
        if noUseXP:
            kwargs["noUseXP"] = 1
        TurnSkill.OnUsePassiveSkill(turnFight, batObj, tagObj, exSkillID, connBuff=connBuff, **kwargs)
            
    return True
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6031.py
New file
@@ -0,0 +1,33 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Skill.PassiveTrigger.PassiveEff_6031
#
# @todo:某种buff状态层达到x时免疫减益控制效果
# @author hxp
# @date 2025-12-23
# @version 1.0
#
# 详细描述: 某种buff状态层达到x时免疫减益控制效果
#
#-------------------------------------------------------------------------------
#"""Version = 2025-12-23 15:30"""
#-------------------------------------------------------------------------------
import GameWorld
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    buffState = curEffect.GetEffectValue(0) # buff״̬
    needLayers = curEffect.GetEffectValue(1) # 达到x层
    layerTotal = 0
    buffMgr = attacker.GetBuffManager()
    for buff in buffMgr.FindBuffListByState(buffState):
        layerTotal += buff.GetLayer()
    if layerTotal < needLayers:
        return
    GameWorld.DebugLogEx("某种buff状态层达到x时免疫减益控制效果! buffState=%s,layerTotal=%s >= %s", buffState, layerTotal, needLayers)
    return 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
@@ -85,12 +85,14 @@
    ownerID = buffOwner.GetID()
    
    skillType = buffSkill.GetSkillType()
    #无敌免疫持续减益buff、控制类buff
    if skillType in [ChConfig.Def_SkillType_LstDepBuff, ChConfig.Def_SkillType_Action] \
        and batObj.CheckInState(ChConfig.BatObjState_Wudi):
        GameWorld.DebugLogEx("无敌状态下免疫该buff: curID=%s,skillID=%s,ownerID=%s,relatedSkillID=%s", curID, skillID, ownerID, relatedSkillID)
        return
    #免疫减益buff、控制类buff
    if skillType in [ChConfig.Def_SkillType_LstDepBuff, ChConfig.Def_SkillType_DepBuff, ChConfig.Def_SkillType_Action]:
        if batObj.CheckInState(ChConfig.BatObjState_Wudi):
            GameWorld.DebugLogEx("无敌状态下免疫该buff: curID=%s,skillID=%s,ownerID=%s,relatedSkillID=%s", curID, skillID, ownerID, relatedSkillID)
            return
        if TurnPassive.GetTriggerEffectValue(turnFight, batObj, buffOwner, ChConfig.PassiveEff_ImmuneControlDepBuff, buffSkill):
            return
    #被动触发免疫控制buff
    if skillType == ChConfig.Def_SkillType_Action:
        if TurnPassive.GetTriggerEffectValue(turnFight, batObj, buffOwner, ChConfig.PassiveEff_ImmuneControlBuff, buffSkill):