| | |
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_5011
|
| | | #
|
| | | # @todo:被击方触发释放技能(对攻击方或重新设置目标)
|
| | | # @todo:触发释放技能(可继承触发技能目标或重新设置目标)
|
| | | # @author hxp
|
| | | # @date 2025-08-25
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 被击方触发释放技能(对攻击方或重新设置目标)
|
| | | # 详细描述: 触发释放技能(可继承触发技能目标或重新设置目标)
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-08-25 12:00"""
|
| | |
| | |
|
| | | import TurnSkill
|
| | | import IpyGameDataPY
|
| | | import GameWorld
|
| | | import ChConfig
|
| | |
|
| | | def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill):
|
| | | effectID = curEffect.GetEffectID()
|
| | | skillID = curEffect.GetEffectValue(0)
|
| | | skillID = curEffect.GetEffectValue(0) # 技能ID,为0时释放本技能
|
| | | if not skillID:
|
| | | passiveSkill = effSkill
|
| | | else:
|
| | | passiveSkill = IpyGameDataPY.GetIpyGameData("Skill", skillID)
|
| | | if not passiveSkill:
|
| | | return
|
| | | passiveSkillID = passiveSkill.GetSkillID()
|
| | | # 继承主技能目标
|
| | | if passiveSkill.GetTagAim() == ChConfig.SkillTagAim_MainSkill:
|
| | | happenRate = passiveSkill.GetHappenRate()
|
| | | GameWorld.DebugLog("被动触发技能,继承主技能目标! effectID=%s,passiveSkillID=%s,happenRate=%s" % (effectID, passiveSkillID, happenRate))
|
| | | tagObjList = [tagObj]
|
| | | passiveTagObjList = []
|
| | | for tagObj in tagObjList:
|
| | | tagID = tagObj.GetID()
|
| | | if tagObj.GetHP() <= 0:
|
| | | GameWorld.DebugLog(" 已被击杀不触发: tagID=%s" % (tagID))
|
| | | continue
|
| | | if happenRate and happenRate != ChConfig.Def_MaxRateValue and not GameWorld.CanHappen(happenRate, ChConfig.Def_MaxRateValue):
|
| | | GameWorld.DebugLog(" 概率不触发: tagID=%s,happenRate=%s" % (tagID, happenRate))
|
| | | continue
|
| | | passiveTagObjList.append(tagObj)
|
| | | |
| | | if passiveTagObjList:
|
| | | TurnSkill.OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill)
|
| | | else:
|
| | | GameWorld.DebugLog("被动触发技能,重新锁定目标! effectID=%s,passiveSkillID=%s" % (effectID, passiveSkillID))
|
| | | TurnSkill.OnUseSkill(turnFight, batObj, passiveSkill, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill)
|
| | | |
| | | return
|
| | | effectID = curEffect.GetEffectID()
|
| | | effSkillID = effSkill.GetSkillID()
|
| | | return TurnSkill.OnUsePassiveSkill(turnFight, batObj, tagObj, passiveSkill, connSkill, effSkillID, effectID)
|
| | |
|
| | | def DoBuffEffectLogic(turnFight, batObj, tagObj, curBuff, curEffect, connSkill):
|
| | | return DoSkillEffectLogic(turnFight, batObj, tagObj, None, curEffect, connSkill)
|
| | | def DoBuffEffectLogic(turnFight, batObj, tagObj, effBuff, curEffect, connSkill):
|
| | | effSkill = effBuff.GetSkillData().GetIpyData()
|
| | | return DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill)
|