| | |
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_6009
|
| | | #
|
| | | # @todo:目标生命值低于x%必定暴击
|
| | | # @todo:必定暴击
|
| | | # @author hxp
|
| | | # @date 2025-09-23
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 目标生命值低于x%必定暴击
|
| | | # 详细描述: 必定暴击
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-09-23 19:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | |
|
| | | def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
|
| | | lowerThanPer = curEffect.GetEffectValue(0)
|
| | | nowPer = defender.GetHP() / float(defender.GetMaxHP()) * 100
|
| | | return 1 if nowPer < lowerThanPer else 0
|
| | | checkValue = curEffect.GetEffectValue(0) # 判断参数
|
| | | checkType = curEffect.GetEffectValue(1) # 判断方式: 0-按目标生命, 1-按目标状态
|
| | | defID = defender.GetID()
|
| | | |
| | | # 0 - 按目标生命低于x%;参数:单值即可,如30就是30%
|
| | | if checkType == 0:
|
| | | lowerThanPer = checkValue
|
| | | defHP = defender.GetHP()
|
| | | defMaxHP = defender.GetMaxHP()
|
| | | nowPer = defHP / float(defMaxHP) * 100
|
| | | if nowPer < lowerThanPer:
|
| | | GameWorld.DebugLogEx("必定暴击->目标血量低于%s%%: defID=%s,hp:%s/%s", lowerThanPer, defID, defHP, defMaxHP)
|
| | | return 1
|
| | | |
| | | # 1 - 按目标处于状态;参数:支持多状态列表 [状态1, ...]
|
| | | elif checkType == 1:
|
| | | if defender.CheckInState(checkValue):
|
| | | GameWorld.DebugLogEx("必定暴击->目标处于状态%s: defID=%s", checkValue, defID)
|
| | | return 1
|
| | | |
| | | return
|