#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package Skill.PassiveTrigger.PassiveEff_5028 # # @todo:ת»¯Ä¿±êÉíÉÏijÖÖ״̬buff£¨É¾³ý¾ÉµÄת»»³ÉÆäËûbuff£© # @author hxp # @date 2025-12-22 # @version 1.0 # # ÏêϸÃèÊö: ת»¯Ä¿±êÉíÉÏijÖÖ״̬buff£¨É¾³ý¾ÉµÄת»»³ÉÆäËûbuff£© # #------------------------------------------------------------------------------- #"""Version = 2025-12-22 16:30""" #------------------------------------------------------------------------------- import TurnBuff import GameWorld import TurnPassive import ChConfig import random def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs): buffState = curEffect.GetEffectValue(0) # buff״̬ changeLayers = max(1, curEffect.GetEffectValue(1)) # ת»¯²ãÊý rate = curEffect.GetEffectValue(2) # ת»¯¸ÅÂÊ changeToSkillID = curEffect.GetEffectValue(3) # ת»¯ÎªÆäËûbuff¼¼ÄÜID if not GameWorld.CanHappen(rate): GameWorld.DebugLogEx("5028¸ÅÂʲ»×ª»¯! rate=%s", rate) return tagBuffList = [] buffMgr = tagObj.GetBuffManager() for buff in buffMgr.FindBuffListByState(buffState): skillData = buff.GetSkillData() if skillData.GetDispersedLimit(): continue tagBuffList.append(buff) if not tagBuffList: GameWorld.DebugLog("Ä¿±êûÓпÉת»¯µÄbuff: tagID=%s,buffState=%s" % (tagObj.GetID(), buffState)) return random.shuffle(tagBuffList) # Ëæ»ú if changeLayers < len(tagBuffList): # ²»×ãʱ²Å¶îÍâÈ¡ÆäËû±»¶¯Ôö¼ÓµÄ effSkillTypeID = effSkill.GetSkillTypeID() changeLayers += TurnPassive.GetTriggerEffectValue(turnFight, batObj, tagObj, ChConfig.PassiveEff_AddChangeLayers5008, connSkillTypeID=effSkillTypeID, **kwargs) remainLayers = changeLayers # Ê£Óà¿Éת²ãÊý changeToLayer = 0 # ×îÖÕת²ãÊý for tagBuff in tagBuffList: if remainLayers <= 0: break skillID = tagBuff.GetSkillID() curLayer = max(1, tagBuff.GetLayer()) # ÖÁÉÙËã1²ã if curLayer > remainLayers: updLayer = curLayer - remainLayers changeToLayer += remainLayers remainLayers = 0 else: updLayer = 0 changeToLayer += curLayer remainLayers -= 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 if not changeToSkillID: changeToSkillID = effSkill.GetSkillID() buffOwner = batObj TurnBuff.DoAddBuffBySkillID(turnFight, tagObj, changeToSkillID, buffOwner, connSkill, setLayerCnt=changeToLayer) return True