| | |
| | | return []
|
| | | return callFunc(turnFight, attacker, defender, curSkill)
|
| | |
|
| | | def DoAddBuffBySkillID(turnFight, batObj, skillID, buffOwner=None, bySkill=None, afterLogic=False):
|
| | | def CopyBuff(turnFight, curBatObj, curBuff, tagBuff, bySkill=None, isNewAdd=False):
|
| | | '''拷贝buff数据,不含目标buffID、归属,并刷新时间
|
| | | '''
|
| | | skillData = curBuff.GetSkillData()
|
| | | curBuff.SetCalcTime(turnFight.getTimeline())
|
| | | curBuff.SetRemainTime(max(tagBuff.GetRemainTime(), skillData.GetLastTime()))
|
| | | curBuff.SetLayer(max(tagBuff.GetLayer(), skillData.GetLayerMax()))
|
| | | curBuff.SetValue1(tagBuff.GetValue1())
|
| | | curBuff.SetValue2(tagBuff.GetValue2())
|
| | | curBuff.SetValue3(tagBuff.GetValue3())
|
| | | GameWorld.DebugLog(" 拷贝buff: curBuffID=%s,tagBuffID=%s,Remain=%s,Layer=%s,Value=%s" |
| | | % (curBuff.GetBuffID(), tagBuff.GetBuffID(), curBuff.GetRemainTime(), curBuff.GetLayer(), |
| | | [curBuff.GetValue1(), curBuff.GetValue2(), curBuff.GetValue3()]))
|
| | | relatedSkillID = bySkill.GetSkillID() if bySkill else 0
|
| | | SyncBuffRefresh(turnFight, curBatObj, curBuff, relatedSkillID, isNewAdd)
|
| | | return
|
| | | |
| | | def DoAddBuffBySkillID(turnFight, batObj, skillID, buffOwner=None, bySkill=None, afterLogic=False, isSync=True):
|
| | | ## 根据技能ID添加buff
|
| | | if not skillID:
|
| | | return
|
| | |
| | | useSkill = poolMgr.acquire(BattleObj.PySkill, skillIpyData, ownerID)
|
| | | useSkill.SetTagObjList(tagObjList)
|
| | |
|
| | | isOK = OnAddBuff(turnFight, batObj, useSkill, buffOwner, bySkill, afterLogic)
|
| | | addBuff = OnAddBuff(turnFight, batObj, useSkill, buffOwner, bySkill, afterLogic, isSync=isSync)
|
| | |
|
| | | poolMgr.release(useSkill)
|
| | | return isOK
|
| | | return addBuff
|
| | |
|
| | | def OnAddBuff(turnFight, batObj, buffSkill, buffOwner=None, bySkill=None, afterLogic=False):
|
| | | def OnAddBuff(turnFight, batObj, buffSkill, buffOwner=None, bySkill=None, afterLogic=False, isSync=True):
|
| | | skillID = buffSkill.GetSkillID()
|
| | | bySkill = buffSkill.GetBySkill() if not bySkill else bySkill
|
| | | relatedSkillID = bySkill.GetSkillID() if bySkill else 0
|
| | |
| | | and batObj.CheckInState(ChConfig.BatObjState_Wudi):
|
| | | GameWorld.DebugLog("无敌状态下免疫该buff: curID=%s,skillID=%s,ownerID=%s,relatedSkillID=%s"
|
| | | % (curID, skillID, ownerID, relatedSkillID))
|
| | | return False
|
| | | return
|
| | |
|
| | | #被动触发免疫控制buff
|
| | | if buffSkill.GetSkillType() == ChConfig.Def_SkillType_Action:
|
| | | if TurnPassive.GetTriggerEffectValue(turnFight, batObj, buffOwner, ChConfig.PassiveEff_ImmuneControlBuff, buffSkill):
|
| | | GameWorld.DebugLog("血量低于百分x时免疫控制buff: curID=%s,skillID=%s,ownerID=%s,relatedSkillID=%s,hp:%s/%s"
|
| | | % (curID, skillID, ownerID, relatedSkillID, batObj.GetHP(), batObj.GetMaxHP()))
|
| | | return False
|
| | | return
|
| | |
|
| | | buffValueList = GetAddBuffValue(turnFight, buffOwner, batObj, buffSkill)
|
| | |
|
| | |
| | | buff.SetBuffValueList(buffValueList)
|
| | | if afterLogic and bySkill:
|
| | | bySkill.AddAfterLogic(ChConfig.AfterLogic_AddBuff, [batObj, buff, buffOwner])
|
| | | else:
|
| | | elif isSync:
|
| | | SyncBuffRefresh(turnFight, batObj, buff, relatedSkillID, isNewAdd=True)
|
| | |
|
| | | if nowLayerCnt != updLayerCnt:
|
| | | RefreshBuffEffect(turnFight, batObj, buff, False)
|
| | | return True
|
| | | return buff
|
| | |
|
| | | __addNewBuff(turnFight, batObj, buffMgr, buffSkill, buffValueList, buffOwner, bySkill, afterLogic, setLayerCnt=addLayerCnt)
|
| | | return True
|
| | | return __addNewBuff(turnFight, batObj, buffMgr, buffSkill, buffValueList, buffOwner, bySkill, afterLogic, setLayerCnt=addLayerCnt, isSync=isSync)
|
| | |
|
| | | def __addNewBuff(turnFight, batObj, buffMgr, buffSkill, buffValueList, buffOwner, bySkill=None, afterLogic=False, setLayerCnt=0):
|
| | | def __addNewBuff(turnFight, batObj, buffMgr, buffSkill, buffValueList, buffOwner, bySkill=None, afterLogic=False, setLayerCnt=0, isSync=True):
|
| | | curID = batObj.GetID()
|
| | | skillID = buffSkill.GetSkillID()
|
| | | buff = buffMgr.AddBuff(skillID)
|
| | |
| | |
|
| | | if afterLogic and bySkill:
|
| | | bySkill.AddAfterLogic(ChConfig.AfterLogic_AddBuff, [batObj, buff, buffOwner])
|
| | | else:
|
| | | elif isSync:
|
| | | SyncBuffRefresh(turnFight, batObj, buff, relatedSkillID, isNewAdd=True)
|
| | |
|
| | | RefreshBuffEffect(turnFight, batObj, buff, True)
|
| | | return
|
| | | return buff
|
| | |
|
| | | def RefreshBuffEffect(turnFight, batObj, curBuff, isNewBuff=False):
|
| | | ## 刷新buff效果
|