#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
##@package Skill.PassiveTrigger.PassiveEff_5008
|
#
|
# @todo:ת»¯Ä¿±êÉíÉÏÀàÐÍbuff£¨É¾³ý¾ÉµÄת»»³ÉÆäËûbuff£©
|
# @author hxp
|
# @date 2025-09-26
|
# @version 1.0
|
#
|
# ÏêϸÃèÊö: ת»¯Ä¿±êÉíÉÏÀàÐÍbuff£¨É¾³ý¾ÉµÄת»»³ÉÆäËûbuff£©
|
#
|
#-------------------------------------------------------------------------------
|
#"""Version = 2025-09-26 16:30"""
|
#-------------------------------------------------------------------------------
|
|
import TurnBuff
|
import GameWorld
|
import random
|
|
def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
|
skillTypeList = curEffect.GetEffectValue(0) # buff¼¼ÄÜÀàÐÍ
|
changeLayers = max(1, curEffect.GetEffectValue(1)) # ת»¯²ãÊý
|
changeToSkillID = curEffect.GetEffectValue(2) # ת»¯ÎªÆäËûbuff¼¼ÄÜID
|
|
tagBuffList = []
|
buffMgr = tagObj.GetBuffManager()
|
for index in range(buffMgr.GetBuffCount()):
|
buff = buffMgr.GetBuffByIndex(index)
|
skillData = buff.GetSkillData()
|
if skillData.GetSkillType() not in skillTypeList:
|
continue
|
if skillData.GetDispersedLimit():
|
continue
|
tagBuffList.append(buff)
|
|
if not tagBuffList:
|
GameWorld.DebugLog("Ä¿±êûÓпÉת»¯µÄbuff: tagID=%s,skillTypeList=%s" % (tagObj.GetID(), skillTypeList))
|
return
|
|
random.shuffle(tagBuffList) # Ëæ»ú
|
|
changeToLayer = 0
|
for tagBuff in tagBuffList:
|
if changeLayers <= 0:
|
break
|
skillID = tagBuff.GetSkillID()
|
curLayer = max(1, tagBuff.GetLayer()) # ÖÁÉÙËã1²ã
|
if curLayer > changeLayers:
|
updLayer = curLayer - changeLayers
|
changeLayers = 0
|
changeToLayer += changeLayers
|
else:
|
updLayer = 0
|
changeLayers -= curLayer
|
changeToLayer += curLayer
|
GameWorld.DebugLog("ת»¯buff: tagID=%s,tagBuffID=%s,skillID=%s,curLayer=%s,updLayer=%s,changeToLayer=%s"
|
% (tagObj.GetID(), tagBuff.GetBuffID(), skillID, curLayer, updLayer, changeToLayer))
|
TurnBuff.DoBuffLayerChange(turnFight, tagObj, tagBuff, updLayer, connSkill)
|
|
if changeToLayer <= 0:
|
return
|
|
buffOwner = batObj
|
TurnBuff.DoAddBuffBySkillID(turnFight, tagObj, changeToSkillID, buffOwner, connSkill, setLayerCnt=changeToLayer)
|
return True
|