| | |
| | | buff.SetLayer(updLayerCnt)
|
| | | buff.SetBuffValueList(buffValueList)
|
| | | buff.ResetEffectValueEx()
|
| | | if afterLogic and bySkill:
|
| | | bySkill.AddAfterLogic(ChConfig.AfterLogic_AddBuff, [batObj, buff, buffOwner])
|
| | | if afterLogic and buffSkill:
|
| | | buffSkill.AddAfterLogic(ChConfig.AfterLogic_AddBuff, [batObj, buff, buffOwner])
|
| | | elif isSync:
|
| | | SyncBuffRefresh(turnFight, batObj, buff, relatedSkillID, isNewAdd=True)
|
| | |
|
| | | RefreshBuffEffect(turnFight, batObj, buff, buffSkill, buffOwner, refreshType=2)
|
| | | return buff
|
| | |
|
| | | newBuff = __addNewBuff(turnFight, batObj, buffMgr, buffSkill, buffValueList, buffOwner, bySkill, afterLogic, setLayerCnt=addLayerCnt, isSync=isSync)
|
| | | if skillType == ChConfig.Def_SkillType_Halo and newBuff:
|
| | | __addHaloBuffEffObjID(curID, newBuff, skillID, ownerID, haloSrcBuff)
|
| | | newBuff = __addNewBuff(turnFight, batObj, buffMgr, buffSkill, buffValueList, buffOwner, bySkill, afterLogic, setLayerCnt=addLayerCnt, isSync=isSync, haloSrcBuff=haloSrcBuff)
|
| | | return newBuff
|
| | |
|
| | | def __addNewBuff(turnFight, batObj, buffMgr, buffSkill, buffValueList, buffOwner, bySkill=None, afterLogic=False, setLayerCnt=0, isSync=True):
|
| | | def __addNewBuff(turnFight, batObj, buffMgr, buffSkill, buffValueList, buffOwner, bySkill=None, afterLogic=False, setLayerCnt=0, isSync=True, haloSrcBuff=None):
|
| | | curID = batObj.GetID()
|
| | | skillID = buffSkill.GetSkillID()
|
| | | buff = buffMgr.AddBuff(skillID)
|
| | |
| | | ownerID = buffOwner.GetID()
|
| | | buffID = buff.GetBuffID()
|
| | | timing = batObj.GetTiming()
|
| | | skillType = buffSkill.GetSkillType()
|
| | | remainTime = buffSkill.GetLastTime()
|
| | | remainTime += TurnPassive.GetTriggerEffectValue(turnFight, buffOwner, batObj, ChConfig.PassiveEff_AddBuffTime, buffSkill)
|
| | |
|
| | |
| | | if curBuffState:
|
| | | buffMgr.AddBuffState(curBuffState, buffID)
|
| | |
|
| | | if afterLogic and bySkill:
|
| | | bySkill.AddAfterLogic(ChConfig.AfterLogic_AddBuff, [batObj, buff, buffOwner])
|
| | | if skillType == ChConfig.Def_SkillType_Halo:
|
| | | __addHaloBuffEffObjID(curID, buff, skillID, ownerID, haloSrcBuff)
|
| | | |
| | | if afterLogic and buffSkill:
|
| | | buffSkill.AddAfterLogic(ChConfig.AfterLogic_AddBuff, [batObj, buff, buffOwner])
|
| | | elif isSync:
|
| | | SyncBuffRefresh(turnFight, batObj, buff, relatedSkillID, isNewAdd=True)
|
| | |
|
| | | RefreshBuffEffect(turnFight, batObj, buff, buffSkill, buffOwner, refreshType=1)
|
| | |
|
| | | #受控时
|
| | | #添加buff时有需要后置处理触发被动的,如受控
|
| | | if curBuffState and IsControlledHardState(curBuffState):
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, batObj, ChConfig.TriggerWay_BeControlledHard, tagObj=buffOwner, connSkill=buffSkill, connBuff=buff)
|
| | | batObjMgr = BattleObj.GetBatObjMgr()
|
| | | ownerBatLineup = buffOwner.GetTFBatLineup()
|
| | | for lineupObjID in ownerBatLineup.posObjIDDict.values():
|
| | | lineupObj = batObjMgr.getBatObj(lineupObjID)
|
| | | if not lineupObj.IsAlive():
|
| | | continue
|
| | | # 敌方被控时
|
| | | if lineupObj.GetFaction() != batObj.GetFaction():
|
| | | TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_EnemyBeControlledHard, batObj, connSkill=buffSkill)
|
| | | |
| | | buffSkill.AddAfterLogic(ChConfig.AfterLogic_TriggerAddBuff, [ChConfig.TriggerWay_BeControlledHard, batObj, buff, buffOwner])
|
| | | |
| | | #添加持续减益buff
|
| | | if skillType == ChConfig.Def_SkillType_LstDepBuff:
|
| | | buffSkill.AddAfterLogic(ChConfig.AfterLogic_TriggerAddBuff, [ChConfig.TriggerWay_AddDOTBuff, batObj, buff, buffOwner])
|
| | | |
| | | return buff
|
| | |
|
| | | def IsControlledHardState(state):
|
| | |
| | | if not batFaction:
|
| | | return
|
| | | batLineup = batFaction.getBatlineup(1)
|
| | | if ChConfig.HeroID_Simayi not in batLineup.heroObjIDDict:
|
| | | return
|
| | | smyObjID = batLineup.heroObjIDDict[ChConfig.HeroID_Simayi]
|
| | | smyObj = BattleObj.GetBatObjMgr().getBatObj(smyObjID)
|
| | | smyObj = batLineup.getHeroObj(ChConfig.HeroID_Simayi)
|
| | | if not smyObj or not smyObj.IsAlive():
|
| | | return
|
| | | smySkillID = ChConfig.SkillID_SmyFanzhao
|
| | |
| | | haloSrcBuff.AddHaloObjID(curID) # 光源先添加新目标
|
| | | haloObjIDList = haloSrcBuff.GetHaloObjIDList()
|
| | | newBuff.SetHaloObjIDList(haloObjIDList) # 新buff直接同步设置为光源有效目标
|
| | | newBuff.SetLayer(haloSrcBuff.GetLayer()) # 同步为光源的层级
|
| | |
|
| | | batObjMgr = BattleObj.GetBatObjMgr()
|
| | | for haloObjID in haloObjIDList:
|
| | |
| | | # 重新添加本阵营有效光环
|
| | | batObjMgr = BattleObj.GetBatObjMgr()
|
| | | batLineup = batObj.GetTFBatLineup()
|
| | | for tagObjID in batLineup.posObjIDDict.values():
|
| | | for tagObjID in batLineup.getAllPosObjIDList():
|
| | | tagObj = batObjMgr.getBatObj(tagObjID)
|
| | | if not tagObj.IsAlive():
|
| | | continue
|
| | |
| | | GameWorld.DebugLogEx("复活后重新添加本阵营光环: objID=%s,ownerID=%s,haloSkillID=%s", objID, tagObjID, haloSkillID)
|
| | | haloSkill = tagObj.GetSkillManager().FindSkillByID(haloSkillID)
|
| | | if not haloSkill:
|
| | | DoAddBuffBySkillID(turnFight, batObj, haloSkillID, buffOwner=tagObj)
|
| | | continue
|
| | | OnAddBuff(turnFight, batObj, haloSkill, buffOwner=tagObj)
|
| | |
|