129 【战斗】战斗系统-服务端(孙鲁育所有技能;增加效果6025)
| | |
| | | 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,
|
| New file |
| | |
| | | #!/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
|
| | |
| | | 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
|
| | |
| | |
|
| | | 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])
|
| | |
|
| | |
| | | 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):
|
| | | ''' 计算治疗值
|
| | | '''
|
| | |
|
| | |
| | | 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()))
|