1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Skill.PassiveTrigger.PassiveEff_5001
#
# @todo:buff²ãÊý½áËã³ÖÐøbuff
# @author hxp
# @date 2025-08-19
# @version 1.0
#
# ÏêϸÃèÊö: buff²ãÊý½áËã³ÖÐøbuff
#
#-------------------------------------------------------------------------------
#"""Version = 2025-08-19 16:00"""
#-------------------------------------------------------------------------------
 
import TurnBuff
 
def DoBuffEffectLogic(turnFight, batObj, curBuff, curEffect, connSkill):
    singleLayerCnt = max(1, curEffect.GetEffectValue(0)) # µ¥´ÎÏûºÄ²ãÊý/´ÎÊý
    noDel = curEffect.GetEffectValue(1) # ÊÇ·ñ²»¿Û³ý²ãÊý£¬Ä¬ÈÏ0-¿Û³ý 1-²»¿Û³ý
    isAll = curEffect.GetEffectValue(2) # ÊÇ·ñ½áËãÊ£ÓàÈ«²¿²ãÊý/´ÎÊý£¬Ä¬ÈÏ0½áËãµ¥´Î
    
    skillData = curBuff.GetSkillData()
    nowLayerCnt = curBuff.GetLayer()
    
    # È«²¿²ã¼¶
    if isAll:
        logicCnt = nowLayerCnt / singleLayerCnt
        updLayerCnt = 0
    else:
        logicCnt = 1 # Ö´ÐÐÂß¼­´ÎÊý
        updLayerCnt = nowLayerCnt - singleLayerCnt
        
    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