| | |
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_5001
|
| | | #
|
| | | # @todo:buff层数结算持续buff
|
| | | # @todo:结算某持续buff回合效果(可以是攻击或治疗)
|
| | | # @author hxp
|
| | | # @date 2025-08-19
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: buff层数结算持续buff
|
| | | # 详细描述: 结算某持续buff回合效果(可以是攻击或治疗)
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-08-19 16:00"""
|
| | |
| | |
|
| | | import TurnBuff
|
| | |
|
| | | def DoBuffEffectLogic(turnFight, batObj, tagObj, curBuff, curEffect, connSkill):
|
| | | singleLayerCnt = max(1, curEffect.GetEffectValue(0)) # 单次消耗层数/次数
|
| | | noDel = curEffect.GetEffectValue(1) # 是否不扣除层数,默认0-扣除 1-不扣除
|
| | | isAll = curEffect.GetEffectValue(2) # 是否结算剩余全部层数/次数,默认0结算单次
|
| | | def DoBuffEffectLogic(turnFight, batObj, tagObj, effBuff, curEffect, connSkill):
|
| | | #结算一次扣除1回合
|
| | | remainTime = max(0, effBuff.GetRemainTime() - 1)
|
| | | effBuff.SetRemainTime(remainTime)
|
| | |
|
| | | skillData = curBuff.GetSkillData()
|
| | | nowLayerCnt = curBuff.GetLayer()
|
| | | TurnBuff.DoBuffProcess(turnFight, batObj, effBuff)
|
| | |
|
| | | # 全部层级
|
| | | if isAll:
|
| | | logicCnt = nowLayerCnt / singleLayerCnt
|
| | | updLayerCnt = 0
|
| | | if remainTime <= 0:
|
| | | TurnBuff.DoBuffDel(turnFight, batObj, effBuff)
|
| | | else:
|
| | | logicCnt = 1 # 执行逻辑次数
|
| | | updLayerCnt = nowLayerCnt - singleLayerCnt
|
| | | TurnBuff.SyncBuffRefresh(turnFight, batObj, effBuff)
|
| | |
|
| | | for _ in range(logicCnt):
|
| | | TurnBuff.DoBuffProcess(turnFight, batObj, curBuff)
|
| | | |
| | | # 消耗层级,有限制层级的才进行消耗
|
| | | if not noDel and skillData.GetLayerCnt():
|
| | | curBuff.SetLayer(max(updLayerCnt, 0))
|
| | | if updLayerCnt <= 0:
|
| | | TurnBuff.DoBuffDel(turnFight, batObj, curBuff)
|
| | | else:
|
| | | TurnBuff.SyncBuffRefresh(turnFight, batObj, curBuff)
|
| | | |
| | | return
|
| | | return True
|