129 【战斗】战斗系统-服务端(关羽技能;增加效果6009-目标生命值低于x%必定暴击;增加技能计算方式类型5-按目标已损失生命计算伤害;)
3个文件已修改
1个文件已添加
37 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6008.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6009.py 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 = []
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
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6009.py
New file
@@ -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
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: