| | |
| | | buff.SetRemainTime(buffSkill.GetLastTime())
|
| | | buff.SetLayer(updLayerCnt)
|
| | | buff.SetBuffValueList(buffValueList)
|
| | | buff.ResetEffectValueEx()
|
| | | if afterLogic and bySkill:
|
| | | bySkill.AddAfterLogic(ChConfig.AfterLogic_AddBuff, [batObj, buff, buffOwner])
|
| | | elif isSync:
|
| | | SyncBuffRefresh(turnFight, batObj, buff, relatedSkillID, isNewAdd=True)
|
| | |
|
| | | if nowLayerCnt != updLayerCnt:
|
| | | RefreshBuffEffect(turnFight, batObj, buff, False)
|
| | | RefreshBuffEffect(turnFight, batObj, buff, buffSkill, buffOwner, refreshType=2)
|
| | | return buff
|
| | |
|
| | | return __addNewBuff(turnFight, batObj, buffMgr, buffSkill, buffValueList, buffOwner, bySkill, afterLogic, setLayerCnt=addLayerCnt, isSync=isSync)
|
| | |
| | | elif isSync:
|
| | | SyncBuffRefresh(turnFight, batObj, buff, relatedSkillID, isNewAdd=True)
|
| | |
|
| | | RefreshBuffEffect(turnFight, batObj, buff, True)
|
| | | RefreshBuffEffect(turnFight, batObj, buff, buffSkill, buffOwner, refreshType=1)
|
| | | return buff
|
| | |
|
| | | def RefreshBuffEffect(turnFight, batObj, curBuff, isNewBuff=False):
|
| | | def RefreshBuffEffect(turnFight, batObj, curBuff, buffSkill=None, buffOwner=None, refreshType=0):
|
| | | ## 刷新buff效果
|
| | | # @param buffSkill: 添加该buff时对应的buff技能ID,可能为None,如非添加时的刷新
|
| | | # @param refreshType: 0-普通刷新;1-新添加刷新;2-覆盖刷新
|
| | |
|
| | | isRefreshAttr = False # 是否刷属性
|
| | |
|
| | |
| | | continue
|
| | |
|
| | | if curEffect.GetTriggerWay():
|
| | | if curEffect.GetTriggerSrc() not in [ChConfig.TriggerSrc_Skill, ChConfig.TriggerSrc_SkillSelf] and isNewBuff:
|
| | | if curEffect.GetTriggerSrc() not in [ChConfig.TriggerSrc_Skill, ChConfig.TriggerSrc_SkillSelf] and refreshType == 1:
|
| | | passiveEffMgr.AddBuffPassiveEffect(curBuff, skillData, curEffect)
|
| | |
|
| | | elif effectID in ChConfig.AttrIDList:
|
| | | isRefreshAttr = True
|
| | | |
| | | if refreshType and buffSkill and buffOwner:
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, buffOwner, ChConfig.TriggerWay_BuffAddByOwner, connSkill=buffSkill, connBuff=curBuff)
|
| | |
|
| | | if isRefreshAttr:
|
| | | RefreshBuffAttr(batObj)
|
| | |
| | | curBuff.SetLayer(updLayer)
|
| | | relatedSkillID = relatedSkill.GetSkillID() if relatedSkill else 0
|
| | | SyncBuffRefresh(turnFight, batObj, curBuff, relatedSkillID)
|
| | | RefreshBuffEffect(turnFight, batObj, curBuff, False)
|
| | | RefreshBuffEffect(turnFight, batObj, curBuff)
|
| | | return
|
| | | DoBuffDel(turnFight, batObj, curBuff, relatedSkill)
|
| | | return
|
| | |
| | | buff = buffMgr.GetBuffByIndex(index)
|
| | | layer = max(1, buff.GetLayer())
|
| | | skillData = buff.GetSkillData()
|
| | | atkType = skillData.GetAtkType()
|
| | | if atkType:
|
| | | callFunc = GameWorld.GetExecFunc(TurnBuffs, "BuffAtkType_%d.%s" % (atkType, "CalcBuffAttrEx"))
|
| | | if callFunc:
|
| | | callFunc(batObj, buff, skillData, layer, buffAttrDict)
|
| | |
|
| | | for eIndex in range(skillData.GetEffectCount()):
|
| | | effect = skillData.GetEffect(eIndex)
|
| | |
| | | if effID not in ChConfig.AttrIDList:
|
| | | continue
|
| | | attrID = effID
|
| | | attrValue = effect.GetEffectValue(0) * layer
|
| | | attrValue = (effect.GetEffectValue(0) + buff.GetEffectValueEx(attrID)) * layer
|
| | | calcType = effect.GetEffectValue(1)
|
| | | if calcType == 2: # 减少,其他默认增加
|
| | | attrValue = -attrValue
|