From 531ef1778441b79979e3d5c9367a53f407a0c604 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期一, 27 八月 2018 19:13:35 +0800
Subject: [PATCH] fix:#1721 【BUG】娲皇遗迹,未获得奖励时,副本时间到,扣了次数

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py |   18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
index 926c040..0708705 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
@@ -1580,6 +1580,7 @@
     dMissSuccessRate += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, None, ChConfig.TriggerType_MissSuccessPer)
     skillID = curSkill.GetSkillID() if curSkill else 0
     
+    
     atkIsBoss = 0 # 攻击方是否boss
     suppressValueLV = 0 # 等级最终压制值, 由压制规则及相关参数计算得出,可作为伤害公式计算参数使用
     suppressValueFP = 0 # 战力最终压制值, 由压制规则及相关参数计算得出,可作为伤害公式计算参数使用
@@ -1588,6 +1589,13 @@
     suppressNPCFightPower = 0 # 压制NPC战力
     #当攻击方为NPC,防守方为玩家时,计算压制等级 及 压制战力
     if atkObjType == IPY_GameWorld.gotNPC and defObjType == IPY_GameWorld.gotPlayer:
+        
+        if curSkill and curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_RealmSuppress:
+            # 境界压制技能不对高等级境界玩家产生攻击
+            aRealmLV, dRealmLV = GetPVERealmLVs(atkObj, defObj, atkObjType, defObjType) 
+            if aRealmLV <= dRealmLV:
+                return 0, ChConfig.Def_HurtType_Immune   # 免疫
+        
         atkIsBoss = 1 if ChConfig.IsGameBoss(atkObj) else 0
         if NPCCommon.GetIsLVSuppress(atkObj):
             suppressLV = max(0, aLV - dLV)
@@ -1660,6 +1668,7 @@
     #------- 攻击方
     aMinAtk = atkObj.GetMinAtk()        # 攻击方最小攻击
     aMaxAtk = atkObj.GetMaxAtk()        # 攻击方最大攻击
+    
     aIceAtk = atkObj.GetIceAtk()        # 冰攻, 元素真伤, 玩家及NPC通用
     aIceAtk += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddIceAtk)
     #------- 防守方
@@ -1680,6 +1689,7 @@
         aDamagePer += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddDamagePer)
         
         aDamagePerPVP = PlayerControl.GetDamagePerPVP(atkObj)     # 外层PVP伤害加成
+        aFinalHurtPer = PlayerControl.GetFinalHurtPer(atkObj) # 最外层伤害加成
         aFinalHurt = PlayerControl.GetFinalHurt(atkObj)     # 最终固定伤害
         # 被动增加最终伤害
         aFinalHurt += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddFinalValue)
@@ -1695,9 +1705,9 @@
             aSkillAtkRate += atkObj.GetSkillAtkRate()
         aDamagePer = 0      # 外层伤害加成
         aDamagePerPVP = 0   # 外层PVP伤害加成
+        aFinalHurtPer = 0 # 最外层伤害加成
         aFinalHurt = NPCCommon.GetFinalHurt(atkObj) # 最终固定伤害
         aFightPower = NPCCommon.GetSuppressFightPower(atkObj)
-
         
     #防守方的类型
     if defObjType == IPY_GameWorld.gotPlayer:
@@ -1734,7 +1744,7 @@
             suppressFPFormula = hurtDist[suppressFormulaKeyFP]
             suppressValueFP = eval(FormulaControl.GetCompileFormula(suppressFormulaKeyFP, suppressFPFormula))
     
-    # 境界压制百分比, 仅限PVP
+    # 境界压制百分比
     SuppressValueRealmRate = 10000 # 默认值
     suppressRealm = 0
     if atkObjType == IPY_GameWorld.gotPlayer and defObjType == IPY_GameWorld.gotPlayer:
@@ -1789,6 +1799,10 @@
     hurtFormula = hurtDist[hurtFormulaKey]
     hurtValue = int(eval(FormulaControl.GetCompileFormula(hurtFormulaKey, hurtFormula)))
     
+    if hurtType == ChConfig.Def_HurtType_Normal and SuppressValueRealmRate > 10000:
+        # 存在压制
+        return hurtValue, ChConfig.Def_HurtType_RealmSupress
+    
     return hurtValue, hurtType
 
 

--
Gitblit v1.8.0