ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py
@@ -106,86 +106,74 @@
    callFunc(turnFight, batObj, tagObj, effBuff, curEffect, connSkill)
    return
def GetTriggerPassiveValue(batObj, triggerType, tagObj=None, useSkill=None):
def GetTriggerEffectValue(turnFight, atkObj, defObj, calcEffID, connSkill=None):
    ''' 获取触发被动的值,一般用于某种条件下才会产生的值,如xx情况下属性变化 或 xx情况下是否发生什么
    @return: 触发的值,0-没有触发或本身触发的值为0;大于0-触发的具体值
    @param calcEffID: 需要统计的效果ID,可以是属性ID或者其他自定义效果ID
    @return: 触发的值,0-没有触发或本身触发的值为0;非0-触发的具体值
    '''
    return 0
#    attacker = FindRealAttacker(attacker)
#    if not attacker:
#        return 0
#
#    stopPassiveSkill = False   # 被动技能不能再触发被动技能,但可以触发天赋技能
#    if useSkill and SkillCommon.isPassiveSkill(useSkill) and isStopPassiveSkill:
#        #GameWorld.DebugLog("被动技能不能再次触发被动技能")
#        #return 0
#        if not PassPassiveLimit(useSkill):
#            stopPassiveSkill = True
#
#
#    passiveEff = GetPassiveEffManager().GetPassiveEff(attacker)
#    if not passiveEff:
#        return 0
#    buffDict = passiveEff.GetBuffsByTriggerType(triggerType)
#    if not buffDict:
#        return 0
#
#    # 当前战斗关系 pvp pve
#    battleRelationType = AttackCommon.GetBattleRelationType(attacker, defender)
#    if not AttackCommon.CheckBattleRelationType(attacker, defender, useSkill, battleRelationType):
#        return 0
#
#    useSkillID = useSkill.GetSkillID() if useSkill else 0
#    #tick = GameWorld.GetGameWorld().GetTick()
#    curValue = 0
#
#    for skillID, effectList in buffDict.items():
#        if skillID == useSkillID:
#            continue
#        curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
#        if not curSkill:
#            continue
#
#        if not IsValidPassiveSkill(curSkill):
#            continue
#
#        triggerCount = 0 # 成功触发次数
#        for effectInfo in effectList:
#            if stopPassiveSkill and curSkill.GetFuncType() != ChConfig.Def_SkillFuncType_GiftSkill:
#                # 只有天赋才可以再次被触发
#                continue
#            passiveEffect = effectInfo[0]
#            # 被动触发的技能
#            pyName = "PassiveBuff_%s"%passiveEffect.GetEffectID()
#
#            callFunc = GameWorld.GetExecFunc(PassiveBuff, "%s.%s" % (pyName, "CheckCanHappen"))
#            if not callFunc:
#                continue
#
#            # 条件不满足
#            if not callFunc(attacker, defender, passiveEffect, skillID, useSkill=useSkill, ownerID=effectInfo[1], ownerType=effectInfo[2]):
#                continue
#
#            callFunc = GameWorld.GetExecFunc(PassiveBuff, "%s.%s" % (pyName, "GetValue"))
#            if callFunc is None:
#                continue
#
#            # 如被动技能:千幻冥炎真实伤害从2变4倍
#            #curValue += GetPassiveSkillValueByTriggerType(attacker, defender, curSkill, ChConfig.TriggerType_PassiveBuffValue)
#            value = callFunc(attacker, defender, passiveEffect)
#            if triggerType in TriggerValueMaxList:
#                curValue = max(curValue, value) # 取最大值
#            elif triggerType in TriggerValueMinList:
#                if not curValue:
#                    curValue = value
#                elif value > 0:
#                    curValue = min(curValue, value) # 取最小值
#            else:
#                curValue += value
#
#            triggerCount += 1
#
#        if triggerCount:
#            OnTriggerBuffDel(attacker, curSkill, triggerCount)
#
#    return curValue
    triggerWay = ChConfig.TriggerWay_CalcEffValue
    passiveEffMgr = atkObj.GetPassiveEffManager()
    connSkillTypeID = connSkill.GetSkillTypeID() if connSkill else 0
    effInfoList = passiveEffMgr.GetPassiveEffByTrigger("%s_%s" % (triggerWay, calcEffID), connSkillTypeID)
    if not effInfoList:
        return 0
    curValue = 0
    skillMgr = atkObj.GetSkillManager()
    buffMgr = atkObj.GetBuffManager()
    # [["skill/buff", skillID/buffID, effIDList], ...]
    tagID = defObj.GetID() if defObj else 0
    GameWorld.DebugLog("统计被动效果值: calcEffID=%s,objID=%s,tagID=%s,%s" % (calcEffID, atkObj.GetID(), tagID, effInfoList))
    for effInfo in effInfoList:
        sign = effInfo[0]
        if sign == "skill":
            skillID, effIDList = effInfo[1:]
            effSkill = skillMgr.FindSkillByID(skillID)
        elif sign == "buff":
            buffID, effIDList = effInfo[1:]
            effBuff = buffMgr.GetBuff(buffID)
            if not effBuff:
                continue
            effSkill = effBuff.GetSkillData()
        else:
            continue
        if not effSkill:
            continue
        for effID in effIDList:
            effect = effSkill.GetEffectByID(effID, triggerWay)
            if not effect:
                continue
            effID = effect.GetEffectID()
            if not effID or effID != calcEffID:
                continue
            if effID in ChConfig.AttrIDList:
                pyName = "PassiveEff_Attr"
            else:
                pyName = "PassiveEff_%s" % effID
            callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "GetHappenValue"))
            if not callFunc:
                continue
            value = callFunc(atkObj, defObj, effect, effSkill)
            if value is None:
                continue
            #if triggerType in TriggerValueMaxList:
            #    curValue = max(curValue, value) # 取最大值
            #elif triggerType in TriggerValueMinList:
            #    if not curValue:
            #        curValue = value
            #    elif value > 0:
            #        curValue = min(curValue, value) # 取最小值
            #else:
            curValue += value
            #if skillTypeID not in Def_PassiveSkillValueNoCD:
            #    if curSkill.GetCoolDownTime():
            #        SkillCommon.SetSkillRemainTime(curSkill, 0, tick, attacker)
    return curValue