#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
##@package Skill.PassiveTrigger.PassiveEff_5022
|
#
|
# @todo:¶îÍâÔö¼Ó/¼õÉÙbuffЧ¹ûID/ÊôÐÔIDÖµ
|
# @author hxp
|
# @date 2025-10-30
|
# @version 1.0
|
#
|
# ÏêϸÃèÊö: ¶îÍâÔö¼Ó/¼õÉÙbuffЧ¹ûID/ÊôÐÔIDÖµ
|
#
|
#-------------------------------------------------------------------------------
|
#"""Version = 2025-10-30 16:00"""
|
#-------------------------------------------------------------------------------
|
|
import GameWorld
|
import BattleObj
|
|
def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
|
effEx1 = curEffect.GetEffectValue(0) # Ö§³Ö¶à¸öÊôÐÔ
|
effEx2 = curEffect.GetEffectValue(1) # Ö§³Ö¶à¸öÊôÐÔ
|
calcRule = curEffect.GetEffectValue(2) # ¸½¼Ó¼ÆËã¹æÔò£¬Ã»ÅäÖÃĬÈÏÔö¼Ó¹Ì¶¨Öµ
|
|
calcLayer = 1 # ûÅäÖõÄĬÈÏ1²ã£¬Ï൱Óڹ̶¨Öµ
|
if calcRule:
|
ruleType = calcRule[0]
|
# 100 - °´ÓÑ·½Ä³¸ö¹ú¼ÒÎ佫Êý ²ÎÊý1£º¹ú¼Ò
|
if ruleType == 100:
|
country = calcRule[1] if len(calcRule) > 1 else 0
|
onlyAlive = calcRule[2] if len(calcRule) > 2 else 0
|
batLineup = batObj.GetBatLineup()
|
countryCnt = 0
|
batObjMgr = BattleObj.GetBatObjMgr()
|
for objID in batLineup.posObjIDDict.values():
|
batObj = batObjMgr.getBatObj(objID)
|
if not batObj:
|
continue
|
if batObj.GetCountry() != country:
|
continue
|
if onlyAlive and not batObj.IsAlive():
|
continue
|
countryCnt += 1
|
calcLayer = countryCnt
|
GameWorld.DebugLogEx("°´ÓÑ·½Ä³¸ö¹ú¼ÒÎ佫Êý¼ÆËã¶îÍâbuffÊôÐÔ: ruleType=%s,country=%s,countryCnt=%s,onlyAlive=%s", ruleType, country, countryCnt, onlyAlive)
|
# 101 - ½ö¶ÔÖ¸¶¨ÐÔ±ðÓÐЧ ²ÎÊý1£ºÐÔ±ð
|
elif ruleType == 101:
|
onlySex = calcRule[1] if len(calcRule) > 1 else 0
|
if tagObj.GetSex() != onlySex:
|
GameWorld.DebugLogEx("5022¶îÍâbuff¶Ô¸ÃÐÔ±ðÎÞЧ: ruleType=%s,onlySex=%s,tagSex=%s,tagID=%s", ruleType, onlySex, tagObj.GetSex(), tagObj.GetID())
|
return
|
|
if calcLayer <= 0:
|
return
|
|
for effEX in [effEx1, effEx2]:
|
if not isinstance(effEX, list) or len(effEX) != 3:
|
continue
|
attrID, attrValue, calcType = effEX
|
if calcLayer > 1:
|
attrValue = int(attrValue * calcLayer)
|
GameWorld.DebugLogEx("¶îÍâbuffЧ¹ûID/ÊôÐÔIDÖµ: attrID=%s,attrValue=%s,calcType=%s", attrID, attrValue, calcType)
|
connBuff.AddEffectValueEx(attrID, attrValue, calcType)
|
return True
|