ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
@@ -41,6 +41,9 @@
def GetObjName(gameObj):
    objName = gameObj.GetName()
    mirrorPlayerID = gameObj.GetDictByKey(ChConfig.Def_NPC_Dict_MirrorPlayerID)
    if mirrorPlayerID:
        objName = "%s[%s]" % (objName, mirrorPlayerID)
    faction = GameObj.GetFaction(gameObj)
    fightPlaceNum = gameObj.GetDictByKey(ChConfig.Def_Obj_Dict_FightPetPlaceNum)
    return "%s%s %s" % ("A" if faction == 1 else "B", fightPlaceNum, objName)
@@ -89,7 +92,7 @@
    tagObj = None
    if tagPlayerID:
        npcID = ChConfig.Def_NPCID_PVP
        tagObj = NPCCommon.SummonMapNpc(npcID, posX, posY, sightLevel=playerID, pvpPlayerID=tagPlayerID)
        tagObj = NPCCommon.SummonMapNpc(npcID, posX, posY, sightLevel=playerID, mirrorPlayerID=tagPlayerID)
        if not tagObj:
            return
        PlusData = PlayerViewCacheTube.GetPlayerPropPlusDictByID(playerID)[1] # 从缓存中获取
@@ -343,6 +346,8 @@
    tagID = tagObj.GetID()
    if curObj.GetGameObjType() == IPY_GameWorld.gotPlayer: 
        atkOK = PlayerAttack(curObj, tagObj, tick)
    elif curObj.GetDictByKey(ChConfig.Def_NPC_Dict_MirrorPlayerID):
        atkOK = PlayerMirrorAttack(curObj, tagObj, tick)
    else:
        atkOK = NPCAttack(curObj, tagObj, tick)
        
@@ -468,14 +473,49 @@
        GameWorld.DebugLog("        %s 技能攻击: curID=%s,tagID=%s,atkOK=%s" % (objName, curObj.GetID(), tagObj.GetID(), atkOK))
    return atkOK
def PlayerMirrorAttack(playerNPC, tagObj, tick):
    ## 玩家镜像攻击
    playerID = playerNPC.GetDictByKey(ChConfig.Def_NPC_Dict_MirrorPlayerID)
    objName = "● %s" % GetObjName(playerNPC)
    tagObjID = tagObj.GetID()
    autoUseSkillTypeIDList = IpyGameDataPY.GetFuncEvalCfg("TurnFight", 2, {})
    tagDist = 0
    skillManager = playerNPC.GetSkillManager()
    for skillTypeID in autoUseSkillTypeIDList:
        curSkill = skillManager.FindSkillBySkillTypeID(skillTypeID)
        if not curSkill:
            continue
        skillID = curSkill.GetSkillID()
        #被动技能无法使用
        if SkillCommon.isPassiveSkill(curSkill):
            continue
        #还在冷却时间内无法释放
        if SkillCommon.RefreshSkillRemainTime(curSkill, tick) != 0:
            continue
        if not AICommon.DoNPCUseSkill(playerNPC, tagObj, curSkill, tagDist, tick):
            GameWorld.DebugLog("        %s 技能攻击失败: playerID=%s,tagID=%s,skillID=%s" % (objName, playerID, tagObjID, skillID))
            continue
        GameWorld.DebugLog("        %s 技能攻击成功: playerID=%s,tagID=%s,skillID=%s" % (objName, playerID, tagObjID, skillID))
        return skillID
    #普通攻击
    atkOK = BaseAttack.Attack(playerNPC, tagObj, None, tick)
    if atkOK:
        GameWorld.DebugLog("        %s 普通攻击: curID=%s,tagID=%s,atkOK=%s" % (objName, playerID, tagObjID, atkOK))
    else:
        GameWorld.DebugLog("        %s 攻击失败: curID=%s,tagID=%s,atkOK=%s" % (objName, playerID, tagObjID, atkOK))
    return atkOK
def PlayerAttack(curPlayer, tagObj, tick):
    ## 玩家攻击, 参考技能使用 #def UseSkillEx(index, clientData, tick):
    playerID = curPlayer.GetPlayerID()
    job = curPlayer.GetJob()
    jobAutoUseSkillDict = IpyGameDataPY.GetFuncEvalCfg("TurnFight", 2, {})
    if job not in jobAutoUseSkillDict:
        return
    skillList = jobAutoUseSkillDict[job]
    autoUseSkillTypeIDList = IpyGameDataPY.GetFuncEvalCfg("TurnFight", 2, {})
    
    posX, posY = tagPosX, tagPosY = curPlayer.GetPosX(), curPlayer.GetPosY()
    tagObjType, tagObjID = tagObj.GetGameObjType(), tagObj.GetID()
@@ -493,10 +533,11 @@
    
    useSkillResult = False
    skillMgr = curPlayer.GetSkillManager()
    for skillID in skillList:
        curSkill = skillMgr.FindSkillBySkillID(skillID)
    for skillTypeID in autoUseSkillTypeIDList:
        curSkill = skillMgr.FindSkillBySkillTypeID(skillTypeID)
        if not curSkill:
            continue
        skillID = curSkill.GetSkillID()
        
        #CheckSkillCondition
        #被动技能无法使用