9887 【主干】【骨折1、2】【小7】【1元】【BT10】本服与跨服竞技场PK公式优化(优化PVP木桩时某些PVP技能有效)
3个文件已修改
44 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_222.py 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
@@ -453,18 +453,30 @@
    return ChConfig.Def_BattleRelationType_PVE
# 判断PK关系是否可攻击 Def_BattleRelationType_CommNoBoss也可攻击 只是攻击无效果
def CheckBattleRelationType(skillBattleType, battleRelationType):
def CheckBattleRelationType(attacker, defender, curSkill, battleRelationType):
    skillBattleType = SkillCommon.GetSkillBattleType(curSkill)
    if skillBattleType in [ChConfig.Def_BattleRelationType_Comm, ChConfig.Def_BattleRelationType_CommNoBoss]:
        return True
    
    #if battleRelationType in [ChConfig.Def_BattleRelationType_Comm, ChConfig.Def_BattleRelationType_CommNoBoss]:
    #    return True
    
    # 当非PVP关系时,特殊PVP技能
    if battleRelationType != ChConfig.Def_BattleRelationType_PVP:
        if curSkill.GetSkillType() in [ChConfig.Def_SkillType_Atk, ChConfig.Def_SkillType_Passive] \
            and SkillCommon.GetSkillBattleType(curSkill) == ChConfig.Def_BattleRelationType_PVP:
            if attacker.GetGameObjType() == IPY_GameWorld.gotPlayer and IsPVPNPC(defender):
                #GameWorld.DebugLog("---特殊PVP关系 atkID=%s vs defID=%s, skillID=%s" % (attacker.GetID(), defender.GetID(), curSkill.GetSkillID()))
                return True
    if skillBattleType != battleRelationType:
        # PK模式的判定
        return False
    return True
def IsPVPNPC(obj):
    return obj.GetGameObjType() == IPY_GameWorld.gotNPC and obj.GetType() in [ChConfig.ntPriWoodPilePVP]
## 获取攻击类型
#  @param attack 攻击方对象
#  @param attackUseSkill 攻击方使用的技能
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_222.py
@@ -105,9 +105,7 @@
        return True
    
    battleRelationType = AttackCommon.GetBattleRelationType(curNPC, curObj)
    skillBattleType = SkillCommon.GetSkillBattleType(curSkill)
    if not AttackCommon.CheckBattleRelationType(skillBattleType, battleRelationType):
    if not AttackCommon.CheckBattleRelationType(curNPC, curObj, curSkill, battleRelationType):
        # PK模式的判定
        return False
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
@@ -1067,8 +1067,7 @@
        if SkillCommon.RefreshSkillRemainTime(curSkill, tick):
            continue
        
        skillBattleType = SkillCommon.GetSkillBattleType(curSkill)
        if not AttackCommon.CheckBattleRelationType(skillBattleType, battleRelationType):
        if not AttackCommon.CheckBattleRelationType(attacker, defender, curSkill, battleRelationType):
            # PK模式的判定
            continue
        
@@ -1206,8 +1205,7 @@
            continue
        result = True   # 代表有效触发,但不关系触发结果
        
        skillBattleType = SkillCommon.GetSkillBattleType(curSkill)
        if not AttackCommon.CheckBattleRelationType(skillBattleType, battleRelationType):
        if not AttackCommon.CheckBattleRelationType(attacker, defender, curSkill, battleRelationType):
            # PK模式的判定
            continue
        
@@ -1307,8 +1305,7 @@
        effect = SkillCommon.GetSkillEffectByEffectID(curSkill, effectID)
        if not effect:
            continue
        skillBattleType = SkillCommon.GetSkillBattleType(curSkill)
        if not AttackCommon.CheckBattleRelationType(skillBattleType, battleRelationType):
        if not AttackCommon.CheckBattleRelationType(attacker, defender, curSkill, battleRelationType):
            continue
        
        pyName = "PassiveSkill_%s" % effectID
@@ -1369,8 +1366,7 @@
        effect = SkillCommon.GetSkillEffectByEffectID(curSkill, effectID)
        if not effect:
            continue
        skillBattleType = SkillCommon.GetSkillBattleType(curSkill)
        if not AttackCommon.CheckBattleRelationType(skillBattleType, battleRelationType):
        if not AttackCommon.CheckBattleRelationType(attacker, defender, curSkill, battleRelationType):
            continue
        
        pyName = "PassiveSkill_%s" % effectID
@@ -1419,8 +1415,7 @@
            continue
        if SkillCommon.RefreshSkillRemainTime(curSkill, tick):
            continue
        skillBattleType = SkillCommon.GetSkillBattleType(curSkill)
        if not AttackCommon.CheckBattleRelationType(skillBattleType, battleRelationType):
        if not AttackCommon.CheckBattleRelationType(attacker, defender, curSkill, battleRelationType):
            # PK模式的判定
            continue
            
@@ -1453,8 +1448,7 @@
    
    # 当前战斗关系 pvp pve
    battleRelationType = AttackCommon.GetBattleRelationType(attacker, defender)
    skillBattleType = SkillCommon.GetSkillBattleType(tagSkill)
    if not AttackCommon.CheckBattleRelationType(skillBattleType, battleRelationType):
    if not AttackCommon.CheckBattleRelationType(attacker, defender, tagSkill, battleRelationType):
        return
    
@@ -1554,9 +1548,8 @@
            skillData = callFunc(passiveEffect)
            if not skillData:
                continue
            skillBattleType = SkillCommon.GetSkillBattleType(skillData)
            if not AttackCommon.CheckBattleRelationType(skillBattleType, battleRelationType):
            if not AttackCommon.CheckBattleRelationType(attacker, defender, skillData, battleRelationType):
                # PK模式的判定
                continue
            
@@ -1597,8 +1590,7 @@
    
    # 当前战斗关系 pvp pve
    battleRelationType = AttackCommon.GetBattleRelationType(attacker, defender)
    skillBattleType = SkillCommon.GetSkillBattleType(useSkill)
    if not AttackCommon.CheckBattleRelationType(skillBattleType, battleRelationType):
    if not AttackCommon.CheckBattleRelationType(attacker, defender, useSkill, battleRelationType):
        return 0
    
    useSkillID = useSkill.GetSkillID() if useSkill else 0