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