| | |
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_5022
|
| | | #
|
| | | # @todo:额外增加buff效果ID/属性ID值
|
| | | # @todo:额外增加/减少buff效果ID/属性ID值
|
| | | # @author hxp
|
| | | # @date 2025-10-30
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 额外增加buff效果ID/属性ID值
|
| | | # 详细描述: 额外增加/减少buff效果ID/属性ID值
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-10-30 16:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | | import BattleObj
|
| | |
|
| | | def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
|
| | | effValues = curEffect.GetEffectValues()
|
| | | for index in range(0, len(effValues), 2):
|
| | | attrID = effValues[index]
|
| | | attrValue = effValues[index + 1] if len(effValues) > index + 1 else 0
|
| | | GameWorld.DebugLog("额外增加buff效果ID/属性ID值: attrID=%s,attrValue=%s" % (attrID, attrValue))
|
| | | connBuff.AddEffectValueEx(attrID, attrValue)
|
| | | 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
|