129 【战斗】战斗系统-服务端(张星彩所有技能;增加效果6033;)
| | |
| | | PassiveEff_LostHPProtect = 6030 # 掉血上限保护
|
| | | PassiveEff_ImmuneControlDepBuff = 6031 # 某种buff状态层达到x时免疫减益控制效果
|
| | | PassiveEff_AddCureMultiBySkillType = 6032 # 提升治疗技能最终治疗效果(根据目标buff类型层数)
|
| | | PassiveEff_ImmuneBadBuff = 6033 # 概率免疫buff类型(免疫添加,针对减益、控制、dot类)
|
| | |
|
| | | # 被动效果ID有触发值时就返回的
|
| | | PassiveEffHappenValueList = [PassiveEff_ChangeHurtType, PassiveEff_ImmuneControlBuff, PassiveEff_MustSuperHit, PassiveEff_SkillInvalid,
|
| | | PassiveEff_IgnoreShield]
|
| | | PassiveEff_IgnoreShield, PassiveEff_ImmuneBadBuff]
|
| | | # 被动效果ID触发值取最大值的
|
| | | PassiveEffValueMaxList = [PassiveEff_ChangeHurtMulti]
|
| | | # 被动效果ID触发值取最小值的
|
| | |
| | | #"""Version = 2025-09-24 19:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import TurnBuff
|
| | |
|
| | | def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
|
| | | layerPer = curEffect.GetEffectValue(0) # 每层增加的万分比
|
| | | buffStateList = curEffect.GetEffectValue(1) # buff״̬ [״̬1, ״̬2, ...]
|
| | | checkTag = curEffect.GetEffectValue(2) # buff检查自己还是对方: 0-自己,1-对方
|
| | | isDelBuff = curEffect.GetEffectValue(3) # 触发效果后是否扣除buff
|
| | | if not buffStateList:
|
| | | return
|
| | |
|
| | | if isDelBuff:
|
| | | if "turnFight" not in skillkwargs:
|
| | | return
|
| | | turnFight = skillkwargs["turnFight"]
|
| | | |
| | | layerTotal = 0
|
| | | if checkTag:
|
| | | buffMgr = defender.GetBuffManager()
|
| | | else:
|
| | | buffMgr = attacker.GetBuffManager()
|
| | | buffObj = defender if checkTag else attacker
|
| | | buffMgr = buffObj.GetBuffManager()
|
| | | for buffState in buffStateList:
|
| | | for buff in buffMgr.FindBuffListByState(buffState):
|
| | | for buff in buffMgr.FindBuffListByState(buffState)[::-1]:
|
| | | layerTotal += buff.GetLayer()
|
| | | |
| | | if isDelBuff:
|
| | | TurnBuff.DoBuffDel(turnFight, buffObj, buff, connSkill)
|
| | | |
| | | return layerTotal * layerPer
|
| New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_6033
|
| | | #
|
| | | # @todo:概率免疫buff类型(免疫添加,针对减益、控制、dot类)
|
| | | # @author hxp
|
| | | # @date 2025-12-26
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 概率免疫buff类型(免疫添加,针对减益、控制、dot类)
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-12-26 19:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | |
|
| | | def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
|
| | | rate = curEffect.GetEffectValue(0) # 概率万分率
|
| | | skillTypeList = curEffect.GetEffectValue(1) # 目标buff类型[类型1, 2, ...]
|
| | | |
| | | if skillTypeList:
|
| | | if not connSkill:
|
| | | return
|
| | | if connSkill.GetSkillType() not in skillTypeList:
|
| | | return
|
| | | |
| | | if not GameWorld.CanHappen(rate):
|
| | | #GameWorld.DebugLogEx("概率不触发免疫该buff! skillID=%s,rate=%s", effSkill.GetSkillID(), rate)
|
| | | return
|
| | | GameWorld.DebugLogEx("概率触发免疫该buff! skillID=%s", effSkill.GetSkillID(), rate)
|
| | | return True
|
| | |
| | | return
|
| | | if TurnPassive.GetTriggerEffectValue(turnFight, batObj, buffOwner, ChConfig.PassiveEff_ImmuneControlDepBuff, buffSkill):
|
| | | return
|
| | | if TurnPassive.GetTriggerEffectValue(turnFight, batObj, buffOwner, ChConfig.PassiveEff_ImmuneBadBuff, buffSkill):
|
| | | return
|
| | |
|
| | | #被动触发免疫控制buff
|
| | | if skillType == ChConfig.Def_SkillType_Action:
|