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