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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Skill.PassiveTrigger.PassiveEff_5002
#
# @todo:½áËãÄ¿±êijÖÖ״̬³ÖÐøbuffËùÓлغÏЧ¹û
# @author hxp
# @date 2025-08-28
# @version 1.0
#
# ÏêϸÃèÊö: ½áËãÄ¿±êijÖÖ״̬³ÖÐøbuffËùÓлغÏЧ¹û
#
#-------------------------------------------------------------------------------
#"""Version = 2025-08-28 10:30"""
#-------------------------------------------------------------------------------
 
import TurnBuff
import GameWorld
import IpyGameDataPY
import TurnSkill
 
def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill):
    effectID = curEffect.GetEffectID()
    buffState = curEffect.GetEffectValue(0)
    needLayers = curEffect.GetEffectValue(1) # Àۼƴﵽ¶àÉÙ²ãʱ²Å½áËã
    noDel = curEffect.GetEffectValue(2) # ÊÇ·ñ²»¿Û³ýÊ£Óà»ØºÏ£¬Ä¬ÈÏ0-¿Û³ý 1-²»¿Û³ý
    exSkillID = curEffect.GetEffectValue(3) # ¶îÍâÊͷż¼ÄÜID£¬0²»ÊÍ·Å£¨¿É¶ÔbuffЯ´øÕß»òÖØÉèÄ¿±ê£©
    #GameWorld.DebugLog("DoBuffEffectLogic: effectID=%s, buffState=%s, needLayers=%s, noDel=%s, exSkillID=%s" % (effectID, buffState, needLayers, noDel, exSkillID))
    if not buffState or not needLayers:
        return
    
    layerTotal = 0
    buffList = []
    buffMgr = tagObj.GetBuffManager()
    for index in range(buffMgr.GetBuffCount()):
        buff = buffMgr.GetBuffByIndex(index)
        skillData = buff.GetSkillData()
        if skillData.GetCurBuffState() != buffState:
            continue
        layerTotal += buff.GetLayer()
        buffList.append(buff)
        
    if layerTotal < needLayers:
        GameWorld.DebugLog("buff״̬×ܲãÊý²»×ã²»´¥·¢! buffState=%s,layerTotal=%s < %s" % (buffState, layerTotal, needLayers))
        return
    
    GameWorld.DebugLog("½áËãÄ¿±êijÖÖ״̬³ÖÐøbuffËùÓлغÏЧ¹û: layerTotal=%s,buffCnt=%s,noDel=%s" % (layerTotal, len(buffList), noDel))
    for buff in buffList:
        GameWorld.DebugLog("buffID=%s,RemainTime=%s" % (buff.GetBuffID(), buff.GetRemainTime()))
        for _ in range(buff.GetRemainTime()):
            TurnBuff.DoBuffProcess(turnFight, tagObj, buff)
        if noDel:
            continue
        TurnBuff.DoBuffDel(turnFight, tagObj, buff)
        
    if exSkillID:
        effSkillID = effSkill.GetSkillID()
        passiveSkill = IpyGameDataPY.GetIpyGameData("Skill", exSkillID)
        if passiveSkill:
            TurnSkill.OnUsePassiveSkill(turnFight, batObj, tagObj, passiveSkill, connSkill, effSkillID, effectID)
            
    return True