From 50e41acd370d6545269cc59f7bed734ea9f7b398 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 30 十月 2018 12:03:12 +0800
Subject: [PATCH] 4380 【主干】【后端】装备传奇属性战力优化

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py          |   10 ++++++++--
 PySysDB/PySysDBPY.h                                                                           |    2 ++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py   |   16 ++++++++++++++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/CalcNoLineEffect.py |    8 +++++++-
 4 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 4d07715..7352d82 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -450,6 +450,8 @@
 	DWORD		CftAtkSpeed;	//攻速系数
 	DWORD		CftLuckyHit;	//会心一击系数
 	DWORD		CftSpeedPer;	//移动速度百分比系数
+	DWORD		CftAtkPer;	//攻击百分比系数
+	DWORD		CftMaxHPPer;	//生命百分比系数
 };
 
 //NPC掉落表
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 329abfb..c638168 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -377,6 +377,8 @@
                         ("DWORD", "CftAtkSpeed", 0),
                         ("DWORD", "CftLuckyHit", 0),
                         ("DWORD", "CftSpeedPer", 0),
+                        ("DWORD", "CftAtkPer", 0),
+                        ("DWORD", "CftMaxHPPer", 0),
                         ),
 
                 "NPCDropItem":(
@@ -1757,7 +1759,9 @@
         self.CftFaintDefRate = 0
         self.CftAtkSpeed = 0
         self.CftLuckyHit = 0
-        self.CftSpeedPer = 0
+        self.CftSpeedPer = 0
+        self.CftAtkPer = 0
+        self.CftMaxHPPer = 0
         return
         
     def GetLV(self): return self.LV # 等级
@@ -1780,7 +1784,9 @@
     def GetCftFaintDefRate(self): return self.CftFaintDefRate # 控制抵抗系数
     def GetCftAtkSpeed(self): return self.CftAtkSpeed # 攻速系数
     def GetCftLuckyHit(self): return self.CftLuckyHit # 会心一击系数
-    def GetCftSpeedPer(self): return self.CftSpeedPer # 移动速度百分比系数
+    def GetCftSpeedPer(self): return self.CftSpeedPer # 移动速度百分比系数
+    def GetCftAtkPer(self): return self.CftAtkPer # 攻击百分比系数
+    def GetCftMaxHPPer(self): return self.CftMaxHPPer # 生命百分比系数
 
 # NPC掉落表
 class IPY_NPCDropItem():
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 0afbe39..4204d7a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -3356,7 +3356,8 @@
     
     __AttrName = "%s" # 参数为ChConfig.Def_Calc_AllAttrType_MAX对应所有属性列表索引
     __AttrNameNoline = "Noline_%s" # 参数为ChConfig.Def_Calc_AllAttrType_MAX对应所有属性列表索引
-    __NolineAttrList = [ChConfig.TYPE_Calc_AttrSpeed] # 需要记录的非线性战斗属性
+    __NolineAttrList = [ChConfig.TYPE_Calc_AttrSpeed, ChConfig.TYPE_Calc_AttrATKMin, ChConfig.TYPE_Calc_AttrATKMax, 
+                        ChConfig.TYPE_Calc_AttrMaxHP] # 需要记录的非线性战斗属性
     
     ## 初始化
     #  @param self 类实例
@@ -3465,9 +3466,20 @@
         AtkSpeedParameter = fpParam.GetCftAtkSpeed()
         LuckyHitParameter = fpParam.GetCftLuckyHit()
         
+        fpEx = 0
+        #装备模块特殊处理
+        if self.mfpType == ShareDefine.Def_MFPType_Equip:
+            AtkPer = getattr(self, self.__AttrNameNoline % ChConfig.TYPE_Calc_AttrATKMax) * fpParam.GetCftAtkPer() # 攻击百分比系数
+            MaxHPPer = getattr(self, self.__AttrNameNoline % ChConfig.TYPE_Calc_AttrMaxHP) * fpParam.GetCftMaxHPPer() # 生命百分比系数
+            fpEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 3))
+            GameWorld.DebugLog("装备模块攻击生命百分比传奇属性战力: fpEx=%s" % fpEx)
+        else:
+            AtkPer = 0
+            MaxHPPer = 0
+            
         #获取策划配置的表格
         FightpowerFormula = IpyGameDataPY.GetFuncCfg("FightpowerFormula")
-        totalFightPower = eval(FormulaControl.GetCompileFormula("FightpowerFormula", FightpowerFormula))
+        totalFightPower = eval(FormulaControl.GetCompileFormula("FightpowerFormula", FightpowerFormula)) + fpEx
         
         #GameWorld.DebugLog("MfpType=%s,FightPower=%s, %s" % (self.mfpType, totalFightPower, self.GetMFPAttrStr()))
         if totalFightPower > ShareDefine.Def_UpperLimit_DWord:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/CalcNoLineEffect.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/CalcNoLineEffect.py
index 8cc0ec7..67fea1e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/CalcNoLineEffect.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/CalcNoLineEffect.py
@@ -16,11 +16,12 @@
 # @change: "2013-11-13 21:00" Alee 移动速度独立处理
 # @change: "2015-07-29 17:30" hxp 伤害减免改为线性
 #---------------------------------------------------------------------
-"""Version = 2015-07-29 17:30"""
+#"""Version = 2015-07-29 17:30"""
 #---------------------------------------------------------------------
 import ChConfig
 import EffGetSet
 import GameWorld
+import ShareDefine
 #---------------------------------------------------------------------
 
 ## 给玩家添加非线性Buff效果 
@@ -69,6 +70,11 @@
                 #if not attrDict.has_key(key): # 如果该模块没有增加该属性,则跳过
                 if key not in attrDict: # 如果该模块没有增加该属性,则跳过
                     continue
+                #装备模块攻击、生命非线性属性提升的属性不计算战力,战力另外算
+                if mfpObj.mfpType == ShareDefine.Def_MFPType_Equip \
+                    and key in [ChConfig.TYPE_Calc_AttrATKMin, ChConfig.TYPE_Calc_AttrATKMax, ChConfig.TYPE_Calc_AttrMaxHP]:
+                    GameWorld.DebugLog("装备模块某些属性不计入战力计算: key=%s,value=%s" % (key, attrDict[key]))
+                    continue
                 curMValue = attrDict[key]
                 curMAddValue = curValue * curMValue / ChConfig.Def_MaxRateValue # 相对增加值
                 mfpObj.AddCalcMFPAttr(key, curMAddValue) # 给对应模块累加上非线性增加的战斗属性值

--
Gitblit v1.8.0