| | |
| | |
|
| | | #GameWorld.DebugLog("偷取目标属性: atkID=%s,defID=%s,attrIndexAllowList=%s" % (attacker.GetID(), defender.GetID(), attrIndexAllowList))
|
| | | addBuffValueList = []
|
| | | # 效果ID | 属性项,万分率
|
| | | # 最多吸收目标3种属性 存入buffvalue,固定前3个效果
|
| | | # A值-属性ID B值-吸取万分率 C值-最高不超过自身属性万分率,配0不限制
|
| | | for i in range(3):
|
| | | effect = curSkill.GetEffect(i)
|
| | | attrIndex = effect.GetEffectValue(0)
|
| | | if not attrIndex:
|
| | | continue
|
| | | if attrIndexAllowList and attrIndex not in attrIndexAllowList:
|
| | | continue
|
| | | |
| | | attrRate = effect.GetEffectValue(1)
|
| | | tagValue = EffGetSet.GetValueByEffIndex(defender, attrIndex)
|
| | | addValue = int(tagValue * attrRate / float(ChConfig.Def_MaxRateValue))
|
| | | |
| | | maxRate = effect.GetEffectValue(2)
|
| | | curValue = EffGetSet.GetValueByEffIndex(attacker, attrIndex)
|
| | | if maxRate:
|
| | | maxValue = int(curValue * maxRate / float(ChConfig.Def_MaxRateValue))
|
| | | addValue = min(addValue, maxValue)
|
| | | buff = SkillCommon.FindBuffByID(attacker, curSkill.GetSkillTypeID())[0]
|
| | | if buff:
|
| | | addBuffValueList = [buff.GetValue(), buff.GetValue1(), buff.GetValue2()]
|
| | | #GameWorld.DebugLog("偷取目标属性,已经存在buff,直接取原值! atkID=%s,defID=%s,addBuffValueList=%s,layer=%s" |
| | | # % (attacker.GetID(), defender.GetID(), addBuffValueList, buff.GetLayer()))
|
| | | else:
|
| | | # 效果ID | 属性项,万分率
|
| | | # 最多吸收目标3种属性 存入buffvalue,固定前3个效果
|
| | | # A值-属性ID B值-吸取万分率 C值-最高不超过自身属性万分率,配0不限制
|
| | | for i in range(3):
|
| | | effect = curSkill.GetEffect(i)
|
| | | attrIndex = effect.GetEffectValue(0)
|
| | | if not attrIndex:
|
| | | continue
|
| | | if attrIndexAllowList and attrIndex not in attrIndexAllowList:
|
| | | continue
|
| | |
|
| | | addBuffValueList.append(addValue)
|
| | | GameWorld.DebugLog("偷取目标属性: atkID=%s,defID=%s,attrIndex=%s,attrRate=%s,addValue=%s,tagValue=%s,curValue=%s,maxRate=%s" |
| | | % (attacker.GetID(), defender.GetID(), attrIndex, attrRate, addValue, tagValue, curValue, maxRate))
|
| | | attrRate = effect.GetEffectValue(1)
|
| | | tagValue = EffGetSet.GetValueByEffIndex(defender, attrIndex)
|
| | | addValue = int(tagValue * attrRate / float(ChConfig.Def_MaxRateValue))
|
| | | |
| | | maxRate = effect.GetEffectValue(2)
|
| | | curValue = EffGetSet.GetValueByEffIndex(attacker, attrIndex)
|
| | | if maxRate:
|
| | | maxValue = int(curValue * maxRate / float(ChConfig.Def_MaxRateValue))
|
| | | addValue = min(addValue, maxValue)
|
| | | |
| | | addBuffValueList.append(addValue)
|
| | | GameWorld.DebugLog("偷取目标属性: atkID=%s,defID=%s,attrIndex=%s,attrRate=%s,addValue=%s,tagValue=%s,curValue=%s,maxRate=%s" |
| | | % (attacker.GetID(), defender.GetID(), attrIndex, attrRate, addValue, tagValue, curValue, maxRate))
|
| | |
|
| | | buffType = SkillCommon.GetBuffType(curSkill)
|
| | | BuffSkill.DoAddBuff(attacker, buffType, curSkill, tick, addBuffValueList, attacker)
|
| | | |
| | | return True
|
| | | return BuffSkill.DoAddBuff(attacker, buffType, curSkill, tick, addBuffValueList, attacker)
|
| | | #处理技能触发和攻击成功逻辑
|
| | | #return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
|