#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package Skill.PassiveTrigger.PassiveEff_5015 # # @todo:¼¯»ð¹¥»÷Ä¿±ê # @author hxp # @date 2025-09-23 # @version 1.0 # # ÏêϸÃèÊö: ¼¯»ð¹¥»÷Ä¿±ê # #------------------------------------------------------------------------------- #"""Version = 2025-09-23 17:00""" #------------------------------------------------------------------------------- import BattleObj import TurnSkill import GameWorld import ChConfig import TurnBuff def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs): tagBuffMgr = tagObj.GetBuffManager() fireBuff = tagBuffMgr.FindBuffByState(ChConfig.BatObjState_FocusFire) if not fireBuff: #GameWorld.DebugLog("¶Ô·½Ã»Óм¯»ðbuff: tagID=%s" % (tagObj.GetID())) return pursueAtkRateList = curEffect.GetEffectValue(0) # ÓѾü°´xxÅÅÐòµ¹ÐòºóµÄ×·»÷¸ÅÂÊÁбí pursueSkillFuncType = curEffect.GetEffectValue(1) # ʹÓÃ×·»÷¼¼ÄÜ 1-ÆÕ¹¥£»2-Å­¼¼ country = batObj.GetCountry() faction = batObj.GetFaction() lineupNum = batObj.GetLineupNum() batFaction = turnFight.getBatFaction(faction) batLineup = batFaction.getBatlineup(lineupNum) objList = [] batObjMgr = BattleObj.GetBatObjMgr() for objID in batLineup.posObjIDDict.values(): curBatObj = batObjMgr.getBatObj(objID) if not curBatObj: continue objList.append(curBatObj) sortRule = 0 # ÏȰ´Õ½Á¦£¬ÓÐÐèÒªÔÙÀ©Õ¹Ð§¹ûÖµ if sortRule == 0: objList.sort(key=lambda o:(o.GetFightPower()), reverse=True) elif sortRule == 1: objList.sort(key=lambda o:(o.GetAtk()), reverse=True) else: pass #ÓѾü°üº¬×Ô¼º£¬Í¬¹ú¸ÅÂÊ·­±¶ for pursueIndex, curBatObj in enumerate(objList): if not tagObj.IsAlive(): break rate = pursueAtkRateList[pursueIndex] if len(pursueAtkRateList) > pursueIndex else 0 if curBatObj.GetCountry() == country: rate *= 2 GameWorld.DebugLog("ÓѾü¼¯»ð¸ÅÂÊ: objID=%s,rate=%s,pursueIndex=%s" % (curBatObj.GetID(), rate, pursueIndex)) if not GameWorld.CanHappen(rate, 100): continue passiveSkill = None skillManager = curBatObj.GetSkillManager() for index in range(0, skillManager.GetSkillCount()): skill = skillManager.GetSkillByIndex(index) if not skill: continue if skill.GetFuncType() == pursueSkillFuncType: passiveSkill = skill break if not passiveSkill: continue # ¼¯»ð×·»÷ÏÞÖÆÁ¬»÷ TurnSkill.OnUseSkill(turnFight, curBatObj, passiveSkill, [tagObj], batType=ChConfig.TurnBattleType_Pursue, bySkill=connSkill, comboLimit=True) # ɾ³ýÄ¿±ê¼¯»ðbuff TurnBuff.DoBuffDel(turnFight, tagObj, fireBuff, connSkill) return True