ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
@@ -974,20 +974,22 @@
        if not curTag:
            continue
        
        if curSkillUseTag == ChConfig.Def_UseSkillTag_CanAttackNPC:
            if NPCCommon.GetNpcObjOwnerIsPlayer(curTag):
                #npc主人是玩家不能攻击
        #非自定义场景才需要判断
        if not attacker.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
            if curSkillUseTag == ChConfig.Def_UseSkillTag_CanAttackNPC:
                if NPCCommon.GetNpcObjOwnerIsPlayer(curTag):
                    #npc主人是玩家不能攻击
                    continue
            if GameWorld.GetDist(curTag.GetPosX(), curTag.GetPosY(), attacker.GetPosX(), attacker.GetPosY()) > attacker.GetSight():
                # 最远距离防范
                GameWorld.DebugLog("#--- 最远距离防范[%s-%s]"%(attacker.GetID(), curTag.GetID()))
                continue
        if GameWorld.GetDist(curTag.GetPosX(), curTag.GetPosY(), attacker.GetPosX(), attacker.GetPosY()) > attacker.GetSight():
            # 最远距离防范
            GameWorld.DebugLog("#--- 最远距离防范[%s-%s]"%(attacker.GetID(), curTag.GetID()))
            continue
        if CheckFunc != None:
            #检查是否受影响
            if not CheckFunc(attacker, curTag, curSkill, tick):
                continue
            if CheckFunc != None:
                #检查是否受影响
                if not CheckFunc(attacker, curTag, curSkill, tick):
                    continue
        
        resultList.append(curTag)
            
@@ -1093,6 +1095,9 @@
    
    #不在影响对象列表中
    if curObjType not in hurtTypeList:
        return None, None
    if attacker.GetSightLevel() != curObj.GetSightLevel():
        return None, None
    
    #攻击对象
@@ -1512,7 +1517,7 @@
        
        if curPlayerSkill:
            
            if not IsSkipSkillCD:
            if not IsSkipSkillCD(curPlayer, target, curSkill, tick):
                #设置玩家所学技能冷却CD
                SkillCommon.SetSkillRemainTime(curPlayerSkill, PlayerControl.GetReduceSkillCDPer(curPlayer), tick, curPlayer)
            #调用任务触发器
@@ -1550,7 +1555,7 @@
            return True
    return False
    
### 不管什么技能都会到此处
#只对第一目标造成某伤害类型时触发技能
def OnHurtTypeTriggerSkillFirstObj(attacker, curSkill, tick):
    if g_skillHurtList.GetHurtCount() == 0:
@@ -1571,7 +1576,8 @@
    elif hurtType == ChConfig.Def_HurtType_ThumpHit:
        PassiveBuffEffMng.OnPassiveSkillTrigger(attacker, defender, curSkill, ChConfig.TriggerType_ThumpHit, tick)
    return
# 根据伤血类型触发技能,群攻只触发一次,放在伤血列表被清之前
def OnHurtTypeTriggerSkill(attacker, target, curSkill, tick):
    usePassiveSkillResult = True    # 第一次判断不能调用,即代表都不可用无需循环
@@ -1585,8 +1591,10 @@
        
        skillHurtLists.append([hurtObj.GetObjID(), hurtObj.GetObjType(), hurtObj.GetAttackType()])
    
    #只对第一目标造成某伤害类型时触发技能, 需先存储 skillHurtLists
    OnHurtTypeTriggerSkillFirstObj(attacker, curSkill, tick)
    # #持续攻击类BUFF 类剑刃风暴是先给自身一个持续性buff,这一次不算伤害不可触发
    if curSkill and ChConfig.Def_SkillType_LstPlsBuffAtk != curSkill.GetSkillType():
        #只对第一目标造成某伤害类型时触发技能, 需先存储 skillHurtLists
        OnHurtTypeTriggerSkillFirstObj(attacker, curSkill, tick)
    
    skillIDSet = set()
    for hurtList in skillHurtLists:
@@ -1643,8 +1651,6 @@
    
    # 根据伤血类型触发技能,群攻只触发一次,放在伤血列表被清之前
    OnHurtTypeTriggerSkill(attacker, defender, curSkill, tick)
    #释放技能即可处理的 不区分攻击和非攻击
    PassiveBuffEffMng.OnPassiveSkillTrigger(attacker, defender, curSkill, ChConfig.TriggerType_SkillSuccess, tick)
    
    # 普通或者可以主动释放的攻击性技能
    if not curSkill or (curSkill.GetSkillType() == ChConfig.Def_SkillType_Atk and\
@@ -1666,6 +1672,10 @@
    else:
        PassiveBuffEffMng.OnPassiveSkillTrigger(attacker, defender, curSkill, ChConfig.TriggerType_SkillOverNoAttack, tick)
    
    #释放技能即可处理的 不区分攻击和非攻击
    PassiveBuffEffMng.OnPassiveSkillTrigger(attacker, defender, curSkill, ChConfig.TriggerType_SkillSuccess, tick)
    PassiveBuffEffMng.OnPassiveSkillTrigger(attacker, defender, curSkill, ChConfig.TriggerType_SkillSuccessExpend, tick)
    return