| | |
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | | import ChConfig
|
| | |
|
| | | def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
|
| | | addRate = curEffect.GetEffectValue(0)
|
| | | onlyFirstUse = curEffect.GetEffectValue(1) # 是否仅首次释放技能有效
|
| | | if onlyFirstUse:
|
| | | skillID = connSkill.GetSkillID() if connSkill else skillkwargs.get("connSkillID", 0)
|
| | | if onlyFirstUse:
|
| | | if not skillID:
|
| | | #GameWorld.DebugLog("没有增加概率的技能ID! %s" % skillkwargs)
|
| | | return
|
| | |
| | | if useCnt > 0:
|
| | | GameWorld.DebugLog("技能非首次使用不增加额外概率! skillID=%s,useCnt=%s" % (skillID, useCnt))
|
| | | return
|
| | | return curEffect.GetEffectValue(0)
|
| | | |
| | | failAddRateEx = curEffect.GetEffectValue(2) # 失败次数额外增加概率
|
| | | if failAddRateEx:
|
| | | failCnt = attacker.GetSkillHappenFailCnt(skillID)
|
| | | mustHappenFailCnt = curEffect.GetEffectValue(3) # x次失败后必定释放,大于0有效
|
| | | if mustHappenFailCnt and failCnt >= mustHappenFailCnt:
|
| | | addRate = ChConfig.Def_MaxRateValue # 强制增加满概率
|
| | | GameWorld.DebugLog("技能概率失败次数必定成功: mustHappenFailCnt=%s,failCnt=%s,addRate=%s" % (mustHappenFailCnt, failCnt, addRate))
|
| | | elif failCnt > 0:
|
| | | addRate = failAddRateEx * failCnt
|
| | | GameWorld.DebugLog("技能概率失败次数增加概率: failAddRateEx=%s,failCnt=%s,addRate=%s" % (failAddRateEx, failCnt, addRate))
|
| | | |
| | | if effBuff:
|
| | | buffLayer = effBuff.GetLayer()
|
| | | if buffLayer > 1:
|
| | | addRate *= buffLayer
|
| | | GameWorld.DebugLog("多层buff增加技能概率! skillID=%s,buffLayer=%s,addRate=%s" % (effBuff.GetSkillID(), buffLayer, addRate))
|
| | | |
| | | return addRate
|