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
64
65
66
67
68
69
70
71
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Skill.PassiveTrigger.PassiveEff_5506
#
# @todo:´¥·¢Êͷż¼ÄÜ£¨Ñé֤Ŀ±ê״̬²ã¼¶£©
# @author hxp
# @date 2025-12-18
# @version 1.0
#
# ÏêϸÃèÊö: ´¥·¢Êͷż¼ÄÜ£¨Ñé֤Ŀ±ê״̬²ã¼¶£©
#
#-------------------------------------------------------------------------------
#"""Version = 2025-12-18 17:30"""
#-------------------------------------------------------------------------------
 
import TurnSkill
import GameWorld
import IpyGameDataPY
import BattleObj
import TurnBuff
 
def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
    if not tagObj:
        return
    
    skillID = curEffect.GetEffectValue(0) # ¼¼ÄÜID£¬Îª0ʱÊͷű¾¼¼ÄÜ
    checkStateList = curEffect.GetEffectValue(1) # ¿É¸½¼ÓÑé֤Ŀ±ê´¦ÓÚxx״̬
    needLayers = curEffect.GetEffectValue(2) # ´ïµ½x²ãʱ²Å´¥·¢
    isDelBuff = curEffect.GetEffectValue(3) # ²ãÊý²»×ãʱÊÇ·ñɾ³ýÊͷż¼ÄܶÔÓ¦buff
    
    layerTotal = 0
    tagBuffMgr = tagObj.GetBuffManager()
    for index in range(tagBuffMgr.GetBuffCount()):
        buff = tagBuffMgr.GetBuffByIndex(index)
        skillData = buff.GetSkillData()
        if skillData.GetCurBuffState() not in checkStateList:
            continue
        layerTotal += buff.GetLayer()
        
    if layerTotal < needLayers:
        GameWorld.DebugLogEx("buff״̬×ܲãÊý²»×ã²»´¥·¢5506! checkStateList=%s,layerTotal=%s < %s,isDelBuff=%s", checkStateList, layerTotal, needLayers, isDelBuff)
        if isDelBuff:
            delBuffSkillID = skillID if skillID else effSkill.GetSkillID()
            if not delBuffSkillID:
                return
            buff = tagBuffMgr.FindBuffBySkillID(delBuffSkillID)
            if buff:
                TurnBuff.DoBuffDel(turnFight, tagObj, buff, connSkill)
        return
    
    if not skillID:
        passiveSkill = effSkill
    else:
        passiveSkill = IpyGameDataPY.GetIpyGameData("Skill", skillID)
    if not passiveSkill:
        return
    effectID = curEffect.GetEffectID()
    effSkillID = effSkill.GetSkillID()
    return TurnSkill.OnUsePassiveSkill(turnFight, batObj, tagObj, passiveSkill, connSkill, effSkillID, effectID, connBuff, **kwargs)
 
def DoBuffEffectLogic(turnFight, batObj, tagObj, effBuff, curEffect, connSkill, connBuff, **kwargs):
    ownerID = effBuff.GetOwnerID()
    if not ownerID:
        return
    buffOwner = BattleObj.GetBatObjMgr().getBatObj(ownerID)
    if not buffOwner:
        return
    effSkill = effBuff.GetSkillData().GetIpyData()
    return DoSkillEffectLogic(turnFight, buffOwner, batObj, effSkill, curEffect, connSkill, connBuff, **kwargs)