ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py
@@ -31,49 +31,81 @@
    buffEffInfo and GameWorld.DebugLog("    被动Buff效果: %s" % buffEffInfo)
    return
def OnTriggerPassiveEffect(turnFight, batObj, triggerType, connSkill=None):
def OnTriggerPassiveEffect(turnFight, batObj, triggerWay, tagObj=None, connSkill=None, connSkillTypeID=0):
    ''' 触发被动效果,可能触发技能、buff,需根据优先级触发
    '''
    passiveEffMgr = batObj.GetPassiveEffManager()
    effInfoList = passiveEffMgr.GetPassiveEffByTrigger(triggerType, connSkill=connSkill)
    if not connSkillTypeID and connSkill:
        connSkillTypeID = connSkill.GetSkillTypeID()
    effInfoList = passiveEffMgr.GetPassiveEffByTrigger(triggerWay, connSkillTypeID)
    if not effInfoList:
        return
    # [["skill/buff", skillID/buffID, effIDList], ...]
    GameWorld.DebugLog("触发被动: triggerType=%s,objID=%s,%s" % (triggerType, batObj.GetID(), effInfoList))
    tagID = tagObj.GetID() if tagObj else 0
    GameWorld.DebugLog("触发被动: triggerWay=%s,objID=%s,tagID=%s,%s" % (triggerWay, batObj.GetID(), tagID, effInfoList))
    for effInfo in effInfoList:
        sign = effInfo[0]
        if sign == "skill":
            skillID, effIDList = effInfo[1:]
            __doTriggerPassiveEffectBySkill(turnFight, batObj, skillID, effIDList, connSkill)
            __doTriggerPassiveEffectBySkill(turnFight, batObj, tagObj, triggerWay, skillID, effIDList, connSkill)
            
        elif sign == "buff":
            buffID, effIDList = effInfo[1:]
            __doTriggerPassiveEffectByBuff(turnFight, batObj, buffID, effIDList, connSkill)
            __doTriggerPassiveEffectByBuff(turnFight, batObj, tagObj, triggerWay, buffID, effIDList, connSkill)
            
    return
def __doTriggerPassiveEffectBySkill(turnFight, batObj, skillID, effIDList, connSkill=None):
    return
def __doTriggerPassiveEffectByBuff(turnFight, batObj, buffID, effIDList, connSkill=None):
    buffMgr = batObj.GetBuffManager()
    curBuff = buffMgr.GetBuff(buffID)
    if not curBuff:
def __doTriggerPassiveEffectBySkill(turnFight, batObj, tagObj, triggerWay, skillID, effIDList, connSkill=None):
    skillMgr = batObj.GetSkillManager()
    effSkill = skillMgr.FindSkillByID(skillID)
    if not effSkill:
        return
    skillData = curBuff.GetSkillData()
    
    for effID in effIDList:
        curEffect = skillData.GetEffectByID(effID)
        curEffect = effSkill.GetEffectByID(effID, triggerWay)
        if not curEffect:
            continue
        pyName = "PassiveEff_%s" % effID
        callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "DoBuffEffectLogic"))
        if not callFunc:
            continue
        callFunc(turnFight, batObj, curBuff, curEffect, connSkill)
        DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill)
        
    return
def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill):
    effID = curEffect.GetEffectID()
    if not effID:
        return
    pyName = "PassiveEff_%s" % effID
    callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "DoSkillEffectLogic"))
    if not callFunc:
        return
    callFunc(turnFight, batObj, tagObj, effSkill, curEffect, connSkill)
    return
def __doTriggerPassiveEffectByBuff(turnFight, batObj, tagObj, triggerWay, buffID, effIDList, connSkill=None):
    buffMgr = batObj.GetBuffManager()
    effBuff = buffMgr.GetBuff(buffID)
    if not effBuff:
        return
    skillData = effBuff.GetSkillData()
    for effID in effIDList:
        curEffect = skillData.GetEffectByID(effID, triggerWay)
        if not curEffect:
            continue
        DoBuffEffectLogic(turnFight, batObj, tagObj, effBuff, curEffect, connSkill)
    return
def DoBuffEffectLogic(turnFight, batObj, tagObj, effBuff, curEffect, connSkill):
    effID = curEffect.GetEffectID()
    if not effID:
        return
    pyName = "PassiveEff_%s" % effID
    callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "DoBuffEffectLogic"))
    if not callFunc:
        return
    callFunc(turnFight, batObj, tagObj, effBuff, curEffect, connSkill)
    return
def GetTriggerPassiveValue(batObj, triggerType, tagObj=None, useSkill=None):
    ''' 获取触发被动的值,一般用于某种条件下才会产生的值,如xx情况下属性变化 或 xx情况下是否发生什么
    @return: 触发的值,0-没有触发或本身触发的值为0;大于0-触发的具体值