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