129 【战斗】战斗系统-服务端(步练师所有技能; 5023效果增加可指定消耗层级或不消耗怒气;增加效果6031;)
| | |
| | | PassiveEff_AddChangeLayers5008 = 6028 # 增减5008效果的转化层数
|
| | | PassiveEff_AddBatDamPerByLayer = 6029 # 提升技能战斗伤害(根据身上buff状态层数)
|
| | | PassiveEff_LostHPProtect = 6030 # 掉血上限保护
|
| | | PassiveEff_ImmuneControlDepBuff = 6031 # 某种buff状态层达到x时免疫减益控制效果
|
| | |
|
| | | # 被动效果ID有触发值时就返回的
|
| | | PassiveEffHappenValueList = [PassiveEff_ChangeHurtType, PassiveEff_ImmuneControlBuff, PassiveEff_MustSuperHit, PassiveEff_SkillInvalid,
|
| | |
| | | if buffLayers < needLayers:
|
| | | GameWorld.DebugLogEx("buff状态层数不足不触发! buffState=%s,buffLayers=%s < %s", buffState, buffLayers, needLayers)
|
| | | return
|
| | | updLayer = buffLayers - needLayers
|
| | | GameWorld.DebugLogEx("消耗buff层释放技能: buffState=%s,buffLayers=%s,delLayers=%s,updLayer=%s", buffState, buffLayers, needLayers, updLayer)
|
| | | delLayers = curEffect.GetEffectValue(3) # 指定消耗层数
|
| | | if not delLayers:
|
| | | delLayers = needLayers
|
| | | updLayer = buffLayers - delLayers
|
| | | GameWorld.DebugLogEx("消耗buff层释放技能: buffState=%s,buffLayers=%s,delLayers=%s,updLayer=%s", buffState, buffLayers, delLayers, updLayer)
|
| | | TurnBuff.DoBuffLayerChange(turnFight, batObj, curBuff, updLayer, connSkill)
|
| | |
|
| | | if exSkillID:
|
| | | TurnSkill.OnUsePassiveSkill(turnFight, batObj, tagObj, exSkillID, connBuff=connBuff)
|
| | | noUseXP = curEffect.GetEffectValue(4) # 怒气时是否不消耗怒气
|
| | | if noUseXP:
|
| | | kwargs["noUseXP"] = 1
|
| | | TurnSkill.OnUsePassiveSkill(turnFight, batObj, tagObj, exSkillID, connBuff=connBuff, **kwargs)
|
| | |
|
| | | return True
|
| | |
|
| New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_6031
|
| | | #
|
| | | # @todo:某种buff状态层达到x时免疫减益控制效果
|
| | | # @author hxp
|
| | | # @date 2025-12-23
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 某种buff状态层达到x时免疫减益控制效果
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-12-23 15:30"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | |
|
| | | def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
|
| | | buffState = curEffect.GetEffectValue(0) # buff״̬
|
| | | needLayers = curEffect.GetEffectValue(1) # 达到x层
|
| | | |
| | | layerTotal = 0
|
| | | buffMgr = attacker.GetBuffManager()
|
| | | for buff in buffMgr.FindBuffListByState(buffState):
|
| | | layerTotal += buff.GetLayer()
|
| | | |
| | | if layerTotal < needLayers:
|
| | | return
|
| | | |
| | | GameWorld.DebugLogEx("某种buff状态层达到x时免疫减益控制效果! buffState=%s,layerTotal=%s >= %s", buffState, layerTotal, needLayers)
|
| | | return 1
|
| | |
| | | ownerID = buffOwner.GetID()
|
| | |
|
| | | skillType = buffSkill.GetSkillType()
|
| | | #无敌免疫持续减益buff、控制类buff
|
| | | if skillType in [ChConfig.Def_SkillType_LstDepBuff, ChConfig.Def_SkillType_Action] \
|
| | | and batObj.CheckInState(ChConfig.BatObjState_Wudi):
|
| | | GameWorld.DebugLogEx("无敌状态下免疫该buff: curID=%s,skillID=%s,ownerID=%s,relatedSkillID=%s", curID, skillID, ownerID, relatedSkillID)
|
| | | return
|
| | | |
| | | #免疫减益buff、控制类buff
|
| | | if skillType in [ChConfig.Def_SkillType_LstDepBuff, ChConfig.Def_SkillType_DepBuff, ChConfig.Def_SkillType_Action]:
|
| | | if batObj.CheckInState(ChConfig.BatObjState_Wudi):
|
| | | GameWorld.DebugLogEx("无敌状态下免疫该buff: curID=%s,skillID=%s,ownerID=%s,relatedSkillID=%s", curID, skillID, ownerID, relatedSkillID)
|
| | | return
|
| | | if TurnPassive.GetTriggerEffectValue(turnFight, batObj, buffOwner, ChConfig.PassiveEff_ImmuneControlDepBuff, buffSkill):
|
| | | return
|
| | | |
| | | #被动触发免疫控制buff
|
| | | if skillType == ChConfig.Def_SkillType_Action:
|
| | | if TurnPassive.GetTriggerEffectValue(turnFight, batObj, buffOwner, ChConfig.PassiveEff_ImmuneControlBuff, buffSkill):
|