129 【战斗】战斗系统-服务端(关羽技能;增加效果6009-目标生命值低于x%必定暴击;增加技能计算方式类型5-按目标已损失生命计算伤害;)
| | |
| | | Def_Calc_LastHurt, # 最后一次伤害值 2
|
| | | Def_Calc_TagMaxHP, # 目标最大生命值 3
|
| | | Def_Calc_ByBuffValue, # 触发buff的buff值 4
|
| | | ) = range(5)
|
| | | Def_Calc_TagLostHP, # 目标已损失生命 5
|
| | | ) = range(6)
|
| | |
|
| | | #治疗类型(影响公式参数)
|
| | | Def_CureTypeList = (
|
| | |
| | | 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 = []
|
| | |
|
| | |
| | |
|
| | | 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
|
New file |
| | |
| | | #!/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
|
| | |
| | | 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)
|
| | |
| | | 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:
|