129 【战斗】战斗系统-服务端(司马微技能;增加效果6014-增加技能概率;)
| | |
| | | PassiveEff_AddSkillPerByBuffLayer = 6011 # 增加本次技能万分比(根据buff层级)
|
| | | PassiveEff_AddBuffLayerMax = 6012 # 添加buff层级上限: 数值1-增加层级上限
|
| | | PassiveEff_AddFinalDamPer = 6013 # 增加最终增伤(根据属性转化)
|
| | | PassiveEff_AddSkillRate = 6014 # 增加技能概率
|
| | |
|
| | | # 被动效果ID有触发值时就返回的
|
| | | PassiveEffHappenValueList = [PassiveEff_ChangeHurtType, PassiveEff_ImmuneControlBuff, PassiveEff_MustSuperHit]
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Skill.PassiveTrigger.PassiveEff_6014
|
| | | #
|
| | | # @todo:增加技能概率
|
| | | # @author hxp
|
| | | # @date 2025-09-25
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 增加技能概率
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-09-25 18:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
|
| | | return curEffect.GetEffectValue(0) |
| | |
| | | callFunc(turnFight, batObj, tagObj, effBuff, curEffect, connSkill, connBuff, **kwargs)
|
| | | return
|
| | |
|
| | | def GetTriggerEffectValue(turnFight, atkObj, defObj, calcEffID, connSkill=None, **kwargs):
|
| | | def GetTriggerEffectValue(turnFight, atkObj, defObj, calcEffID, connSkill=None, connSkillTypeID=0, **kwargs):
|
| | | ''' 获取触发被动的值,一般用于某种条件下才会产生的值,如xx情况下属性变化 或 xx情况下是否发生什么
|
| | | @param calcEffID: 需要统计的效果ID,可以是属性ID或者其他自定义效果ID
|
| | | @return: 触发的值,0-没有触发或本身触发的值为0;非0-触发的具体值
|
| | |
| | |
|
| | | triggerWay = ChConfig.TriggerWay_CalcEffValue
|
| | | passiveEffMgr = atkObj.GetPassiveEffManager()
|
| | | effInfoList = passiveEffMgr.GetPassiveEffByTrigger("%s_%s" % (triggerWay, calcEffID), connSkill)
|
| | | effInfoList = passiveEffMgr.GetPassiveEffByTrigger("%s_%s" % (triggerWay, calcEffID), connSkill, connSkillTypeID)
|
| | | if not effInfoList:
|
| | | return 0
|
| | |
|
| | |
| | | if not tagObjList:
|
| | | tagObjList = GetSkillTags(turnFight, curBatObj, useSkill)
|
| | | rate = useSkill.GetHappenRate()
|
| | | if rate and rate != ChConfig.Def_MaxRateValue: |
| | | if rate:
|
| | | rate += TurnPassive.GetTriggerEffectValue(turnFight, curBatObj, None, ChConfig.PassiveEff_AddSkillRate, useSkill)
|
| | | for tagObj in tagObjList[::-1]:
|
| | | if not GameWorld.CanHappen(rate, ChConfig.Def_MaxRateValue):
|
| | | tagObjList.remove(tagObj)
|
| | |
| | | GameWorld.DebugLog("继承主技能目标! enhanceSkillID=%s" % enhanceSkillID)
|
| | | # 额外触发的技能直接在外层检查概率,如果都没有触发则不需要再处理
|
| | | enhanceRate = enhanceSkillData.GetHappenRate()
|
| | | enhanceRate += TurnPassive.GetTriggerEffectValue(turnFight, curBatObj, None, ChConfig.PassiveEff_AddSkillRate, connSkillTypeID=enhanceSkillData.GetSkillTypeID())
|
| | | enchanceTagObjList = []
|
| | | for tagObj in tagObjList:
|
| | | tagID = tagObj.GetID()
|
| | |
| | | # 继承主技能目标
|
| | | if passiveSkill.GetTagAim() == ChConfig.SkillTagAim_MainSkill:
|
| | | happenRate = passiveSkill.GetHappenRate()
|
| | | happenRate += TurnPassive.GetTriggerEffectValue(turnFight, batObj, None, ChConfig.PassiveEff_AddSkillRate, passiveSkill)
|
| | | GameWorld.DebugLog("被动触发技能,继承主技能目标! effSkillID=%s,effectID=%s,passiveSkillID=%s,happenRate=%s,bySkillID=%s" % (effSkillID, effectID, passiveSkillID, happenRate, bySkillID))
|
| | | if not tagObj:
|
| | | return
|
| | |
| | | if not tagObj.IsAlive():
|
| | | GameWorld.DebugLog(" 已被击杀不触发: tagID=%s" % (tagID))
|
| | | return
|
| | | if happenRate and happenRate != ChConfig.Def_MaxRateValue and not GameWorld.CanHappen(happenRate, ChConfig.Def_MaxRateValue):
|
| | | if happenRate and not GameWorld.CanHappen(happenRate, ChConfig.Def_MaxRateValue):
|
| | | GameWorld.DebugLog(" 概率不触发: tagID=%s,happenRate=%s" % (tagID, happenRate))
|
| | | return
|
| | | passiveTagObjList = [tagObj]
|