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
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Skill.PassiveTrigger.PassiveEff_5007
#
# @todo:͵ȡĿ±êÉíÉÏÔöÒæÀàÐÍbuff£¨¼¼ÄÜÀàÐÍ3¡¢5£©
# @author hxp
# @date 2025-09-25
# @version 1.0
#
# ÏêϸÃèÊö: ÍµÈ¡Ä¿±êÉíÉÏÔöÒæÀàÐÍbuff£¨¼¼ÄÜÀàÐÍ3¡¢5£©
#
#-------------------------------------------------------------------------------
#"""Version = 2025-09-25 17:30"""
#-------------------------------------------------------------------------------
 
import TurnBuff
import ChConfig
import GameWorld
import random
 
def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
    stealCnt = max(1, curEffect.GetEffectValue(0)) # ÍµÈ¡¸öÊý
    checkInStateList = curEffect.GetEffectValue(1) # ¿É¸½¼ÓÑéÖ¤´¦ÓÚxx״̬ [״̬1, ×´Ì¬2, ...]
    if checkInStateList:
        if not tagObj.CheckInState(checkInStateList):
            GameWorld.DebugLog("Ä¿±ê²»ÔÚÒÔÏÂ״̬²»ÄÜ͵: tagID=%s,checkInStateList=%s" % (tagObj.GetID(), checkInStateList))
            return
        
    plsBuffList = []
    buffMgr = tagObj.GetBuffManager()
    for index in range(buffMgr.GetBuffCount()):
        buff = buffMgr.GetBuffByIndex(index)
        skillData = buff.GetSkillData()
        if skillData.GetSkillType() not in [ChConfig.Def_SkillType_LstPlsBuff, ChConfig.Def_SkillType_PlsBuff]:
            continue
        plsBuffList.append(buff)
        
    if not plsBuffList:
        GameWorld.DebugLog("Ä¿±êûÓÐÔöÒæbuff: tagID=%s" % (tagObj.GetID()))
        return
    
    random.shuffle(plsBuffList) # Ëæ»ú
    
    for tagBuff in plsBuffList:
        if stealCnt <= 0:
            break
        skillID = tagBuff.GetSkillID()
        buffOwner = batObj
        GameWorld.DebugLog("͵ȡbuff: tagID=%s,tagBuffID=%s" % (tagObj.GetID(), tagBuff.GetBuffID()))
        addBuff = TurnBuff.DoAddBuffBySkillID(turnFight, batObj, skillID, buffOwner, connSkill, isSync=False)
        if not addBuff:
            continue
        stealCnt -= 1
        TurnBuff.CopyBuff(turnFight, batObj, addBuff, tagBuff, connSkill, True)
        TurnBuff.DoBuffDel(turnFight, tagObj, tagBuff)
        
    return True