hxp
5 天以前 e42a83be74a36868aeaf8e43ee20babb38e0397b
129 【战斗】战斗系统-服务端(孙鲁育所有技能;增加效果6025)
3个文件已修改
1个文件已添加
52 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6025.py 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4044,6 +4044,7 @@
PassiveEff_IgnoreShield = 6022 # 穿盾效果,无视护盾值
PassiveEff_ChangeHurtTypeByBuff = 6023 # 变更本次伤害类型(可验证由xx状态buff触发的)
PassiveEff_ReduceLayer5023 = 6024 # 减少5023效果所需的buff状态层数
PassiveEff_AddCureMulti = 6025 # 提升治疗技能最终治疗效果(根据身上buff状态层数)
# 被动效果ID有触发值时就返回的
PassiveEffHappenValueList = [PassiveEff_ChangeHurtType, PassiveEff_ImmuneControlBuff, PassiveEff_MustSuperHit, PassiveEff_SkillInvalid, 
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6025.py
New file
@@ -0,0 +1,37 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Skill.PassiveTrigger.PassiveEff_6025
#
# @todo:提升治疗技能最终治疗效果(根据身上buff状态层数)
# @author hxp
# @date 2025-12-14
# @version 1.0
#
# 详细描述: 提升治疗技能最终治疗效果(根据身上buff状态层数)
#
#-------------------------------------------------------------------------------
#"""Version = 2025-12-14 19:00"""
#-------------------------------------------------------------------------------
import TurnBuff
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    if "turnFight" not in skillkwargs:
        return
    turnFight = skillkwargs["turnFight"]
    addPerLayer = curEffect.GetEffectValue(0) # 每层提升百分比
    buffState = curEffect.GetEffectValue(1) # 攻击方身上的buff状态
    isDelBuff = curEffect.GetEffectValue(2) # 触发效果后是否扣除buff
    layerTotal = 0
    buffMgr = attacker.GetBuffManager()
    for buff in buffMgr.FindBuffListByState(buffState):
        layerTotal += buff.GetLayer()
        if isDelBuff:
            TurnBuff.DoBuffDel(turnFight, attacker, buff, connSkill)
    return layerTotal * addPerLayer
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py
@@ -174,6 +174,7 @@
            callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "GetHappenValue"))
            if not callFunc:
                continue
            kwargs["turnFight"] = turnFight
            value = callFunc(atkObj, defObj, effect, effSkill, effBuff, connSkill, **kwargs)
            if value is None:
                continue
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -845,8 +845,13 @@
    
    calcCureResults = []
    relativeObj = GetRelativeObj(turnFight, curBatObj)
    multiValue = 1
    addCureMulti = TurnPassive.GetTriggerEffectValue(turnFight, curBatObj, None, ChConfig.PassiveEff_AddCureMulti, useSkill)
    if addCureMulti:
        multiValue += addCureMulti / 100.0
    for tagBatObj in useSkill.GetTagObjList():
        cureHP = CalcCureHP(turnFight, curBatObj, tagBatObj, useSkill, relativeObj=relativeObj)
        cureHP = CalcCureHP(turnFight, curBatObj, tagBatObj, useSkill, relativeObj=relativeObj, multiValue=multiValue)
        poisonCureOwner = GetPoisonCureOwner(tagBatObj)
        calcCureResults.append([tagBatObj, cureHP, poisonCureOwner])
        
@@ -2588,7 +2593,7 @@
    TurnAttack.AddTurnObjCureHP(atkObj, atkObj, suckHP, cureHP)
    return
def CalcCureHP(turnFight, userObj, tagObj, curSkill, relativeObj=None):
def CalcCureHP(turnFight, userObj, tagObj, curSkill, relativeObj=None, multiValue=1):
    ''' 计算治疗值
    '''
    
@@ -2629,6 +2634,10 @@
        cureHP += cureHPEx
        GameWorld.DebugLogEx("    额外治疗值(%s): cureType=%s,baseValue=%s,skillPer=%s,cureHP=%s", cureHPEx, cureType, baseValue, skillPer, cureHP)
        
    if multiValue and multiValue != 1:
        cureHP = int(cureHP * multiValue)
        GameWorld.DebugLogEx("    治疗倍值: cureHP=%s,multiValue=%s", cureHP, multiValue)
    hurtShareEff = curSkill.GetEffectByID(ChConfig.SkillEff_HurtShare)
    if hurtShareEff:
        tagCnt = max(1, len(curSkill.GetTagObjList()))