#!/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
|