ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -76,9 +76,16 @@
        # 可扩展其他目标选择,如复活技能没有死亡单位时则使用另外的效果
        return
    
    objID = curBatObj.GetID()
    oneActionUseCnt = turnFight.GetOneActionUseSkillCnt(objID)
    if oneActionUseCnt >= 20:
        GameWorld.ErrLog("单次行动累计使用技能达到上限! objID=%s,oneActionUseCnt=%s" % (objID, oneActionUseCnt), turnFight.playerID)
        return
    oneActionUseCnt = turnFight.SetOneActionUseSkillCnt(objID, oneActionUseCnt + 1)
    bySkillID = bySkill.GetSkillID() if bySkill else 0
    GameWorld.DebugLog("使用技能: curID=%s,skillID=%s,tagCnt=%s,batType=%s,bySkillID=%s,HP:%s/%s"
                       % (curBatObj.GetID(), skillID, len(tagObjList), batType, bySkillID, curBatObj.GetHP(), curBatObj.GetMaxHP()))
    GameWorld.DebugLog("使用技能: curID=%s,skillID=%s,tagCnt=%s,batType=%s,bySkillID=%s,HP:%s/%s,oneActionUseCnt=%s"
                       % (objID, skillID, len(tagObjList), batType, bySkillID, curBatObj.GetHP(), curBatObj.GetMaxHP(), oneActionUseCnt))
    # 以下为技能可以使用的处理,之后的逻辑默认技能使用成功
    
    poolMgr = ObjPool.GetPoolMgr()
@@ -93,6 +100,11 @@
    useSkill.SetBatType(batType)
    useSkill.SetBySkill(bySkill)
    
    isTurnNormalSkill = SkillCommon.isTurnNormalSkill(useSkill)
    if isTurnNormalSkill:
        # 普攻追击时强制重新开始算连击
        useSkill.ComboCheckStart(batType == ChConfig.TurnBattleType_Pursue)
    curBatObj.ClearSkillTempAttr()
    tagIDList = []
    for tagObj in tagObjList:
@@ -103,7 +115,6 @@
    if useSkill.GetFuncType():
        curBatObj.SetMainTagIDList(tagIDList)
        
    objID = curBatObj.GetID()
    useTag = ""
    
    #这个技能是Buff
@@ -132,8 +143,10 @@
        turnFight.addBatPack(clientPack)
        
    # 处理反击 或 连击
    DoCombo(turnFight, curBatObj, useSkill)
    if isTurnNormalSkill:
        if not DoCombo(turnFight, curBatObj, useSkill):
            useSkill.ComboInterrupt()
    # 最后重置、回收对象
    useSkill.ResetUseRec()
    if usePoolSkill:
@@ -586,8 +599,7 @@
                纵排: 优先前面的单位
    '''
    
    if not SkillCommon.isTurnNormalSkill(useSkill):
        #GameWorld.DebugLog("非普攻不处理反击连击")
    if not useSkill.ComboEnable():
        return
    
    tagFriendly = useSkill.GetTagFriendly()
@@ -608,7 +620,7 @@
    if not tagObj:
        return
    
    comboNum = atkObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnComboNum)
    comboNum = useSkill.GetComboNum()
    aComboRate = atkObj.GetBatAttrValue(ChConfig.AttrID_ComboRate)
    aComboRate += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, tagObj, ChConfig.AttrID_ComboRate, useSkill)
    
@@ -620,14 +632,14 @@
        return
    GameWorld.DebugLog("● %s 【连击】 happenRate=%s,aComboRate=%s,dComboRateDef=%s,comboNum=%s" 
                       % (TurnAttack.GetObjName(atkObj), happenRate, aComboRate, dComboRateDef, comboNum))
    atkObj.SetDict(ChConfig.Def_Obj_Dict_TurnComboNum, comboNum + 1)
    useSkill.SetComboNum(comboNum + 1)
    
    # 连击特长
    DoHeroSpecialty(turnFight, atkObj, ChConfig.HeroSpecialty_Combo, useSkill.GetSkillID())
    
    # 连击根据技能目标配置逻辑重新选择目标
    OnUseSkill(turnFight, atkObj, useSkill, batType=ChConfig.TurnBattleType_Combo)
    return
    return True
def __getCanAtkBackSkill(useSkill, tagObj):
    ## 获取是否可反击及反击技能
@@ -872,7 +884,6 @@
        
        for tagObj in useSkill.GetTagObjList():
            tagID = tagObj.GetID()
            GameWorld.DebugLog("    tagID=%s" % (tagID))
            if tagID in missObjIDList:
                # 闪避了不触发
                continue
@@ -1052,11 +1063,11 @@
    if isTurnNormalSkill and not mustHit:
        aMissRateDef = atkObj.GetBatAttrValue(ChConfig.AttrID_MissRateDef) #atkObj.GetHit() # 抗闪避率 - 命中
        dMissRate = defObj.GetBatAttrValue(ChConfig.AttrID_MissRate) # 闪避率
        missNum = defObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnMissNum)
        missNum = curSkill.GetTagMissNum(defID)
        missRate = eval(IpyGameDataPY.GetFuncCompileCfg("MissCfg", 1))
        if GameWorld.CanHappen(missRate):
            GameWorld.DebugLog("闪避了! missRate=%s,dMissRate=%s,aMissRateDef=%s,missNum=%s" % (missRate, dMissRate, aMissRateDef, missNum))
            defObj.SetDict(ChConfig.Def_Obj_Dict_TurnMissNum, missRate + 1)
            curSkill.SetTagMissNum(defID, missRate + 1)
            return 0, pow(2, ChConfig.HurtType_Miss)
        
    hurtTypes = pow(2, ChConfig.HurtType_Normal)
@@ -1203,6 +1214,7 @@
        #被控制无法格挡
        return False
    
    defID = defObj.GetID()
    # 格挡印记
    buffMgr = defObj.GetBuffManager()
    parryYJBuff = buffMgr.FindBuffByState(ChConfig.BatObjState_ParryYJ)
@@ -1213,11 +1225,11 @@
    
    aParryRateDef = atkObj.GetBatAttrValue(ChConfig.AttrID_ParryRateDef)
    dParryRate = defObj.GetBatAttrValue(ChConfig.AttrID_ParryRate)
    parryNum = defObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnParryNum)
    parryNum = curSkill.GetTagParryNum(defID)
    happenRate = eval(IpyGameDataPY.GetFuncCompileCfg("ParryCfg", 1))
    if GameWorld.CanHappen(happenRate):
        GameWorld.DebugLog("格挡了: happenRate=%s,aParryRateDef=%s,dParryRate=%s,parryNum=%s" % (happenRate, aParryRateDef, dParryRate, parryNum))
        defObj.SetDict(ChConfig.Def_Obj_Dict_TurnParryNum, parryNum + 1)
        curSkill.SetTagParryNum(defID, parryNum + 1)
        return True
    return False