From 2f70daba66fed14fcdef73ff2b2018a41a708741 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 23 九月 2025 18:59:12 +0800 Subject: [PATCH] 129 【战斗】战斗系统-服务端(关羽技能;增加效果6009-目标生命值低于x%必定暴击;增加技能计算方式类型5-按目标已损失生命计算伤害;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6008.py | 2 +- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6009.py | 21 +++++++++++++++++++++ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py | 6 ++++++ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 8 +++++--- 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py index 26475c4..ff9a710 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py @@ -1330,7 +1330,8 @@ Def_Calc_LastHurt, # 最后一次伤害值 2 Def_Calc_TagMaxHP, # 目标最大生命值 3 Def_Calc_ByBuffValue, # 触发buff的buff值 4 -) = range(5) +Def_Calc_TagLostHP, # 目标已损失生命 5 +) = range(6) #治疗类型(影响公式参数) Def_CureTypeList = ( @@ -4312,11 +4313,12 @@ PassiveEff_AddSkillPerByJob = 6006 # 增加本次技能万分比: 值1-增加的万分比;值2-验证目标职业 PassiveEff_AddSkillTagCnt = 6007 # 增加技能目标数:值1-增加目标个数 PassiveEff_ImmuneControlBuff = 6008 # 生命值低于x%时免疫控制效果:值1-百分比 +PassiveEff_MustSuperHit = 6009 # 生命值低于x%时必定暴击:值1-百分比 # 被动效果ID有触发值时就返回的 -PassiveEffHappenValueList = [PassiveEff_ChangeHurtType] +PassiveEffHappenValueList = [PassiveEff_ChangeHurtType, PassiveEff_ImmuneControlBuff, PassiveEff_MustSuperHit] # 被动效果ID触发值取最大值的 -PassiveEffValueMaxList = [] +PassiveEffValueMaxList = [PassiveEff_ChangeHurtMulti] # 被动效果ID触发值取最小值的 PassiveEffValueMinList = [] diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6008.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6008.py index 65a0d65..176d158 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6008.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6008.py @@ -17,5 +17,5 @@ def GetHappenValue(attacker, defender, curEffect, effSkill, **skillkwargs): lowerThanPer = curEffect.GetEffectValue(0) - nowPer = attacker.GetHP() / float(attacker.GetMaxHP()) + nowPer = attacker.GetHP() / float(attacker.GetMaxHP()) * 100 return 1 if nowPer < lowerThanPer else 0 diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6009.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6009.py new file mode 100644 index 0000000..1c4d994 --- /dev/null +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6009.py @@ -0,0 +1,21 @@ +#!/usr/bin/python +# -*- coding: GBK -*- +#------------------------------------------------------------------------------- +# +##@package Skill.PassiveTrigger.PassiveEff_6009 +# +# @todo:目标生命值低于x%必定暴击 +# @author hxp +# @date 2025-09-23 +# @version 1.0 +# +# 详细描述: 目标生命值低于x%必定暴击 +# +#------------------------------------------------------------------------------- +#"""Version = 2025-09-23 19:00""" +#------------------------------------------------------------------------------- + +def GetHappenValue(attacker, defender, curEffect, effSkill, **skillkwargs): + lowerThanPer = curEffect.GetEffectValue(0) + nowPer = defender.GetHP() / float(defender.GetMaxHP()) * 100 + return 1 if nowPer < lowerThanPer else 0 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 0c989bb..1ee372c 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py @@ -1275,6 +1275,10 @@ return hurtValue, hurtTypes def CanSuperHit(turnFight, atkObj, defObj, curSkill): + if TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_MustSuperHit, curSkill): + GameWorld.DebugLog("目标血量低于百分x时必定暴击: defID=%s,hp:%s/%s" % (defObj.GetID(), defObj.GetHP(), defObj.GetMaxHP())) + return True + aSuperHitRate = atkObj.GetBatAttrValue(ChConfig.AttrID_SuperHitRate) aSuperHitRate += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.AttrID_SuperHitRate, curSkill) dSuperHitRateDef = defObj.GetBatAttrValue(ChConfig.AttrID_SuperHitRateDef) @@ -1503,6 +1507,8 @@ baseValue = curObj.GetLastHurtValue() elif calcType == ChConfig.Def_Calc_TagMaxHP: baseValue = 0 if not tagObj else tagObj.GetMaxHP() + elif calcType == ChConfig.Def_Calc_TagLostHP: + baseValue = 0 if not tagObj else max(0, tagObj.GetMaxHP() - tagObj.GetHP()) elif calcType == ChConfig.Def_Calc_ByBuffValue: byBuff = curSkill.GetByBuff() if byBuff: -- Gitblit v1.8.0