From 033a680f4c973fbac074a95152c6d313d4a71091 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 12 六月 2019 17:12:39 +0800
Subject: [PATCH] 7220 【后端】【2.0】灵器开发1.0版(增加灵器属性表,灵器战力由评分计算,评分由基础属性+灵器属性组成,原翅膀模块改为灵器模块)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py                |  107 ++++++++------------------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py     |   13 ++-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py                 |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py               |   26 ++++++
 PySysDB/PySysDBPY.h                                                                                |   12 ++
 ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py                                      |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py        |    8 -
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                    |    9 +-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWing.py           |   38 ---------
 10 files changed, 94 insertions(+), 127 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 634bf0f..db5930b 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -10,7 +10,7 @@
 	list		Skills;		//被动技能
 };
 
-//灵根表 #tagDienstgrad
+//灵根表 #tagRolePoint
 
 struct	tagRolePoint
 {
@@ -21,6 +21,16 @@
 	list		PointQualityIntervalList;		//点数品质进阶属性点区间列表
 };
 
+//灵器属性表 #tagLingQiAttr
+
+struct	tagLingQiAttr
+{
+	BYTE		_ItemID;	//属性ID
+	list		LingQiAttrID;		//灵器属性ID
+	list		LingQiAttrValue;		//灵器属性数值
+	DWORD		LingQiAttrScore;	//灵器属性评分
+};
+
 //境界表 #tagRealm
 
 struct	tagRealm
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 810b9f2..f2c2d12 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -1344,7 +1344,7 @@
 Def_MFPType_Plus, # 强化 2
 Def_MFPType_Stone, # 宝石 3
 Def_MFPType_LingGen, # 灵根 4
-Def_MFPType_Wing, # 翅膀 5
+Def_MFPType_LingQi, # 灵器 5
 Def_MFPType_Wash, # 洗练 6
 Def_MFPType_Pet, # 灵宠 7
 Def_MFPType_Horse, # 坐骑 8
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index f12cf73..6e0eaad 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4344,7 +4344,7 @@
 Def_CalcAttrFunc_Plus, # 装备位强化 5
 Def_CalcAttrFunc_Stone, # 装备宝石 6
 Def_CalcAttrFunc_Wash, # 洗练 7
-Def_CalcAttrFunc_Wing, # 翅膀 8
+Def_CalcAttrFunc_Wing, # 翅膀 - 废弃 8
 Def_CalcAttrFunc_Pet, # 灵宠 9
 Def_CalcAttrFunc_Horse, # 坐骑 10
 Def_CalcAttrFunc_Prestige, # 境界 11
@@ -4374,12 +4374,13 @@
 Def_CalcAttrFunc_MagicWeapon4, # 王者法宝 35
 Def_CalcAttrFunc_Coat, # 时装 36
 Def_CalcAttrFunc_LingQi, # 灵器 37
-) = range(38)
+Def_CalcAttrFunc_LingQiAttr, # 灵器属性 38
+) = range(39)
 
 # 技能功能点列表  - 默认不算战力,不享受百分比加成,技能功能点暂时配置,之后优化技能属性逻辑后可去掉
 CalcAttrFuncSkillList = [Def_CalcAttrFunc_HorseSkill, Def_CalcAttrFunc_PetSkill, Def_CalcAttrFunc_DogzBattleSkill]
 # 不计算战力的功能点列表 - 由其他方式计算的战力的功能点,如装备用评分计算
-CalcAttrFuncNoFightPowerList = [Def_CalcAttrFunc_Equip, Def_CalcAttrFunc_DogzEquip]
+CalcAttrFuncNoFightPowerList = [Def_CalcAttrFunc_Equip, Def_CalcAttrFunc_DogzEquip, Def_CalcAttrFunc_LingQiAttr]
 
 #战斗力分组类型对应功能点属性分类索引列表,并不是一一对应的,有些战斗力类型可由多个功能点组成
 #***注意***: 以下功能点需包含上面定义的所有功能点,不然会导致有些属性无法加上
@@ -4389,7 +4390,7 @@
                             ShareDefine.Def_MFPType_Star:[Def_CalcAttrFunc_Star],
                             ShareDefine.Def_MFPType_Plus:[Def_CalcAttrFunc_Plus],
                             ShareDefine.Def_MFPType_Stone:[Def_CalcAttrFunc_Stone],
-                            ShareDefine.Def_MFPType_Wing:[Def_CalcAttrFunc_Wing, Def_CalcAttrFunc_LingQi],
+                            ShareDefine.Def_MFPType_LingQi:[Def_CalcAttrFunc_LingQi, Def_CalcAttrFunc_LingQiAttr],
                             ShareDefine.Def_MFPType_Wash:[Def_CalcAttrFunc_Wash],
                             ShareDefine.Def_MFPType_Pet:[Def_CalcAttrFunc_Pet, Def_CalcAttrFunc_PetSign, Def_CalcAttrFunc_PetSkill],
                             ShareDefine.Def_MFPType_PetSoul:[Def_CalcAttrFunc_PetSoul],
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py
index 0011390..2f1f1bd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py
@@ -35,7 +35,7 @@
                    ShareDefine.Def_MFPType_Plus:"强化",
                    ShareDefine.Def_MFPType_Stone:"宝石",
                    ShareDefine.Def_MFPType_Wash:"洗练",
-                   ShareDefine.Def_MFPType_Wing:"翅膀",
+                   ShareDefine.Def_MFPType_LingQi:"灵器",
                    ShareDefine.Def_MFPType_Pet:"灵宠",
                    ShareDefine.Def_MFPType_Horse:"坐骑",
                    ShareDefine.Def_MFPType_Prestige:"境界",
@@ -64,8 +64,8 @@
                      ChConfig.Def_CalcAttrFunc_Plus:"强化",
                      ChConfig.Def_CalcAttrFunc_Stone:"宝石",
                      ChConfig.Def_CalcAttrFunc_Wash:"洗练",
-                     ChConfig.Def_CalcAttrFunc_Wing:"翅膀",
                      ChConfig.Def_CalcAttrFunc_LingQi:"灵器",
+                     ChConfig.Def_CalcAttrFunc_LingQiAttr:"灵器属性",
                      ChConfig.Def_CalcAttrFunc_Pet:"灵宠",
                      ChConfig.Def_CalcAttrFunc_Horse:"坐骑",
                      ChConfig.Def_CalcAttrFunc_Prestige:"境界",
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 915a280..a2216c5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -49,6 +49,13 @@
                         ("list", "PointQualityIntervalList", 0),
                         ),
 
+                "LingQiAttr":(
+                        ("BYTE", "ItemID", 1),
+                        ("list", "LingQiAttrID", 0),
+                        ("list", "LingQiAttrValue", 0),
+                        ("DWORD", "LingQiAttrScore", 0),
+                        ),
+
                 "Realm":(
                         ("WORD", "Lv", 1),
                         ("DWORD", "NeedLV", 0),
@@ -1504,6 +1511,21 @@
     def GetFightPowerPerPoint(self): return self.FightPowerPerPoint # 每点附加战斗力
     def GetPointQualityAttrDict(self): return self.PointQualityAttrDict # 点数品质进阶增加属性,  {职业:{属性ID:[阶段属性,..],..},..}
     def GetPointQualityIntervalList(self): return self.PointQualityIntervalList # 点数品质进阶属性点区间列表
+
+# 灵器属性表
+class IPY_LingQiAttr():
+    
+    def __init__(self):
+        self.ItemID = 0
+        self.LingQiAttrID = []
+        self.LingQiAttrValue = []
+        self.LingQiAttrScore = 0
+        return
+        
+    def GetItemID(self): return self.ItemID # 属性ID
+    def GetLingQiAttrID(self): return self.LingQiAttrID # 灵器属性ID
+    def GetLingQiAttrValue(self): return self.LingQiAttrValue # 灵器属性数值
+    def GetLingQiAttrScore(self): return self.LingQiAttrScore # 灵器属性评分
 
 # 境界表
 class IPY_Realm():
@@ -4516,6 +4538,8 @@
         self.ipyDienstgradLen = len(self.ipyDienstgradCache)
         self.ipyRolePointCache = self.__LoadFileData("RolePoint", IPY_RolePoint)
         self.ipyRolePointLen = len(self.ipyRolePointCache)
+        self.ipyLingQiAttrCache = self.__LoadFileData("LingQiAttr", IPY_LingQiAttr)
+        self.ipyLingQiAttrLen = len(self.ipyLingQiAttrCache)
         self.ipyRealmCache = self.__LoadFileData("Realm", IPY_Realm)
         self.ipyRealmLen = len(self.ipyRealmCache)
         self.ipyGodWeaponCache = self.__LoadFileData("GodWeapon", IPY_GodWeapon)
@@ -4980,6 +5004,8 @@
     def GetDienstgradByIndex(self, index): return self.ipyDienstgradCache[index]
     def GetRolePointCount(self): return self.ipyRolePointLen
     def GetRolePointByIndex(self, index): return self.ipyRolePointCache[index]
+    def GetLingQiAttrCount(self): return self.ipyLingQiAttrLen
+    def GetLingQiAttrByIndex(self, index): return self.ipyLingQiAttrCache[index]
     def GetRealmCount(self): return self.ipyRealmLen
     def GetRealmByIndex(self, index): return self.ipyRealmCache[index]
     def GetGodWeaponCount(self): return self.ipyGodWeaponLen
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
index 1b90e7e..1e2f19f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
@@ -579,13 +579,13 @@
     
     classLV = 0 # 灵器阶默认为0
     allAttrList = [{} for _ in range(4)]
+    lingQiAttrList = [{} for _ in range(4)]
     equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
+    equipScoreTotal = 0
+    lv = curPlayer.GetLV()
+    OutOfPrintAttrFormatDict = IpyGameDataPY.GetFuncEvalCfg("OutOfPrintValue", 2, {})
     
     for equipPlace in ChConfig.EquipPlace_LingQi:
-        
-        if equipPlace == ShareDefine.retWing:
-            PlayerWing.CalcWingAttr(curPlayer)
-            continue
         
         ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
         if not ipyData:
@@ -600,16 +600,44 @@
             # 过期
             continue
         
+        equipScoreTotal += ItemCommon.GetEquipGearScore(curEquip)
+        
+        itemID = curEquip.GetItemTypeID()
         #基础属性效果
         for effIndex in xrange(curEquip.GetEffectCount()):
             curEff = curEquip.GetEffectByIndex(effIndex)
             effID = curEff.GetEffectID()
             if effID == 0:
                 break
-            PlayerControl.CalcAttrDict_Type(effID, curEff.GetEffectValue(0), allAttrList)
+            PlayerControl.CalcAttrDict_Type(effID, curEff.GetEffectValue(0), lingQiAttrList)
             
-    #GameWorld.DebugLog("灵器属性: %s" % allAttrList)
+        #灵器属性
+        lingQiIpyData = IpyGameDataPY.GetIpyGameDataNotLog("LingQiAttr", itemID)
+        if lingQiIpyData:
+            lingQiAttrIDList = lingQiIpyData.GetLingQiAttrID()
+            lingQiAttrValueList = lingQiIpyData.GetLingQiAttrValue()
+            for lqIndex, lqAttrID in enumerate(lingQiAttrIDList):
+                if str(lqAttrID) in OutOfPrintAttrFormatDict:
+                    attrFormat = OutOfPrintAttrFormatDict[str(lqAttrID)]
+                    maxOOPValue = lingQiAttrValueList[lqIndex]
+                    lqAttrValue = eval(FormulaControl.GetCompileFormula("OutOfPrintAttrFormat_%s" % lqAttrID, attrFormat))
+                else:
+                    lqAttrValue = lingQiAttrValueList[lqIndex]
+                    
+                PlayerControl.CalcAttrDict_Type(lqAttrID, lqAttrValue, lingQiAttrList)
+                
+        #灵器各部位其他属性
+        if equipPlace == ShareDefine.retWing:
+            PlayerWing.CalcWingAttrEx(curPlayer, curEquip, allAttrList)
+        
+    lqFightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
+    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_LingQi, lqFightPowerEx)
+    
+    #GameWorld.DebugLog("灵器属性1: %s" % allAttrList)
+    #GameWorld.DebugLog("灵器属性2: %s" % lingQiAttrList)
+    #GameWorld.DebugLog("灵器评分战力: equipScoreTotal=%s, %s" % (equipScoreTotal, lqFightPowerEx))
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LingQi, allAttrList)
+    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LingQiAttr, lingQiAttrList)
     return
 
 def __CalcEquips_Effect(curPlayer, classLV):
@@ -752,9 +780,6 @@
                 PlayerControl.CalcAttrDict_Type(legendAttrID, legendAttrValue, allAttrListEquip)
                 #GameWorld.DebugLog("    传奇属性: ID=%s +%s" % (legendAttrID, legendAttrValue))
                 __CalcFuncAddEquipAttrPer(equipPlace, legendAttrID, legendAttrValue, equip_addEquipBaseAttrPerList)
-                
-        #绝世属性 - 暂不考虑
-        #CalcAttr_OutOfPrintAttr(curPlayer, curEquip, allAttrListOutOfPrintEquip)
         
         #物品强化属性
         __CalcAttr_ItemPlus(curPlayer, curEquip, packType, equipIndex, allAttrListPlus, plus_addEquipBaseAttrPerList)
@@ -791,8 +816,6 @@
     #__CalcFuncAddEquipAttrValue(allEquipBaseAttrDict, baseEquipBaseAttrDict, equipBaseAttrDict, stone_addEquipBaseAttrPerList, insideAttrDictStone, "Stone")
     #__CalcFuncAddEquipAttrValue(allEquipBaseAttrDict, baseEquipBaseAttrDict, equipBaseAttrDict, wash_addEquipBaseAttrPerList, insideAttrDictWash, "Wash")
     
-    #保存计算值
-    #PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipOutOfPrint, allAttrListOutOfPrintEquip)
     #计算装备基础属性附加战力 (目前组成: 评分战力 + ...)
     equipFightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
     
@@ -941,68 +964,6 @@
         PlayerControl.CalcAttrDict_Type(attrID, value, allAttrListEquip)
         #legendAttrDict[attrID] = legendAttrDict.get(attrID, 0) + value
         
-    return
-
-
-# 装备绝版属性,随等级变化需在升级再处理
-def CalcAttr_OutOfPrintAttr(curPlayer, curEquip, allAttrListOutOfPrintEquip):
-    ## 计算绝版属性
-    
-    # 绝版属性ID列表
-    OutOfPrintAttrIDList = [curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetOutOfPrintAttrID, i) \
-                        for i in range(curEquip.GetUserAttrCount(ShareDefine.Def_IudetOutOfPrintAttrID))]
-    # 绝版属性值列表
-    OutOfPrintAttrValueList = [curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetOutOfPrintAttrValue, i) \
-                           for i in range(curEquip.GetUserAttrCount(ShareDefine.Def_IudetOutOfPrintAttrValue))]
-    if not OutOfPrintAttrIDList or len(OutOfPrintAttrIDList) != len(OutOfPrintAttrValueList):
-        return
-    
-    lv = curPlayer.GetLV()
-    OutOfPrintAttrFormatDict = IpyGameDataPY.GetFuncEvalCfg("OutOfPrintValue", 2, {})
-    for i, attrID in enumerate(OutOfPrintAttrIDList):
-        if str(attrID) not in OutOfPrintAttrFormatDict:
-            continue
-        attrFormat = OutOfPrintAttrFormatDict[str(attrID)]
-        maxOOPValue = OutOfPrintAttrValueList[i]
-        value = eval(FormulaControl.GetCompileFormula("OutOfPrintAttrFormat_%s" % attrID, attrFormat))
-        GameWorld.DebugLog("加绝版属性: %s +%s" % (attrID, value))
-        PlayerControl.CalcAttrDict_Type(attrID, value, allAttrListOutOfPrintEquip)
-        
-    return
-
-
-## 计算装备对基本属性的改变 
-#  @return None
-def CalcEquips_OutOfPrint(curPlayer):
-    # 境界装备改版,先屏蔽,之后再处理
-    return
-    allAttrListOutOfPrintEquip = [{} for _ in range(4)]  # 绝版装备属性 需在等级变化独立计算
-    
-    packType = IPY_GameWorld.rptEquip
-    playerEquip = curPlayer.GetItemManager().GetPack(packType)
-
-    #玩家当前可装备的装备类型
-    for equipIndex in xrange(playerEquip.GetCount()):
-        if equipIndex not in ShareDefine.RoleEquipType :
-            continue
-        
-        # 翅膀属性在翅膀功能单独刷新
-        if equipIndex == ShareDefine.retWing:
-            continue
-        
-        curEquip = playerEquip.GetAt(equipIndex)
-        if curEquip.IsEmpty():
-            continue
-            
-        if not ItemCommon.CheckItemCanUseByExpireTime(curEquip):
-            # 过期
-            continue
-          
-        #绝世属性
-        CalcAttr_OutOfPrintAttr(curPlayer, curEquip, allAttrListOutOfPrintEquip)
-
-    #保存计算值
-    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipOutOfPrint, allAttrListOutOfPrintEquip)
     return
 
 def __CalcAttr_ItemPlus(curPlayer, curEquip, packType, equipIndex, allAttrList, plus_addEquipBaseAttrPerList):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
index 65694bb..aeceafb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -392,18 +392,19 @@
             break
         attrDict[effectID] = attrDict.get(effectID, 0) + curEffect.GetEffectValue(0)
         
-    skillGS = 0
+    gsValueEx = 0
     skillGSDict = IpyGameDataPY.GetFuncCfg("EquipGSFormula", 4)
     for i in xrange(curItem.GetAddSkillCount()):
         addSkillID = curItem.GetAddSkill(i)
         if not addSkillID:
             break
-        skillGS += skillGSDict.get(str(addSkillID), 0)
+        gsValueEx += skillGSDict.get(str(addSkillID), 0)
         
+    itemID = curItem.GetItemTypeID()
     classLV = GetItemClassLV(curItem)
     color = curItem.GetItemColor()
     isSuit = 1 if curItem.GetSuiteID() > 0 else 0
-    gsParamIpyData = IpyGameDataPY.GetIpyGameData("EquipGSParam", classLV, color, isSuit)
+    gsParamIpyData = IpyGameDataPY.GetIpyGameDataNotLog("EquipGSParam", classLV, color, isSuit)
     # 传奇属性
     legendAttrIDCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID)
     legendAttrValueCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue)
@@ -413,6 +414,10 @@
             attrValue = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValue, i)
             attrDict[attrID] = attrDict.get(attrID, 0) + attrValue
             
+    lingQiIpyData = IpyGameDataPY.GetIpyGameDataNotLog("LingQiAttr", itemID)
+    if lingQiIpyData:
+        gsValueEx += lingQiIpyData.GetLingQiAttrScore()
+        
     Atk = attrDict.get(ShareDefine.Def_Effect_Atk, 0)
     MinAtk = attrDict.get(ShareDefine.Def_Effect_MinAtk, 0) + Atk
     MaxAtk = attrDict.get(ShareDefine.Def_Effect_MaxAtk, 0) + Atk
@@ -489,7 +494,7 @@
         value = eval(FormulaControl.GetCompileFormula("EquipGSFormula3", IpyGameDataPY.GetFuncCfg("EquipGSFormula", 3)))
     else:
         value = eval(FormulaControl.GetCompileFormula("EquipGSFormula", IpyGameDataPY.GetFuncCfg("EquipGSFormula")))
-    value += skillGS
+    value += gsValueEx
     return value
 
 def GetZhuXianEquipTotalGS(curPlayer):
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 9f78673..d33b761 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -4057,7 +4057,7 @@
                 PlayerGreatMaster.Sync_GreatMasterFreeSkillPoint(curPlayer)
             # 升级需要执行的游戏功能处理
             GameFuncComm.DoFuncOpenLogic(curPlayer)
-            #ChEquip.CalcEquips_OutOfPrint(curPlayer)    # 缓存绝版属性
+            ChEquip.RefreshPlayerLingQiEquipAttr(curPlayer) # 灵器属性会随等级成长
             if aftLV%10 == 0:
                 # 控制下刷新次数
                 PlayerPet.CalcPetItemAddPlayerAttr(curPlayer)   # 宠物有随等级变化的技能
@@ -4247,7 +4247,6 @@
         ChEquip.RefreshPlayerEquipAttribute(curPlayer)
         ChEquip.RefreshPlayerLingQiEquipAttr(curPlayer)
         #SkillShell.RefreshPlayerBuffOnAttrAddEffect(curPlayer)
-        #PlayerWing.CalcWingAttr(curPlayer) # 翅膀暂时算在灵器里面
         PlayerHorse.CalcHorseAttrEx(curPlayer)
         PlayerPrestigeSys.CalcOfficialRankAttr(curPlayer)
         PlayerGodWeapon.CalcGodWeaponAttr(curPlayer)
@@ -4464,7 +4463,6 @@
                            ChConfig.TYPE_Calc_StoneBasePer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_Stone],
                            ChConfig.TYPE_Calc_RealmBasePer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_Prestige],
                            ChConfig.TYPE_Calc_HorseAtkPer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_Horse],
-                           ChConfig.TYPE_Calc_WingHPPer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_Wing],
                            }
         #    3.2 统计各功能之间非线性属性交叉影响累加
         funcCrossAttrPerInfoDict = {} # 百分比交叉影响所提升的属性值 {功能属性编号:{提升的属性类型:数值, ...}, ...}
@@ -4500,7 +4498,7 @@
         #    3.3 统计所有功能固定属性影响累加
         allFixAttrDict = {} # 固定属性层级总属性基值
         for funcIndex, funcAttrList in enumerate(funcAttrInfoList):
-            # 技能模块不算计入功能固定属性、不计战力
+            # 技能模块不计入功能固定属性、不计战力
             if funcIndex in ChConfig.CalcAttrFuncSkillList:
                 continue
             AddAttrDictValue(allFixAttrDict, funcAttrList[ChConfig.CalcAttr_Battle])
@@ -4532,7 +4530,7 @@
             mfpAttrExDict = {}
             for funcIndex in attrFuncIndexList:
                 if funcIndex in ChConfig.CalcAttrFuncSkillList:
-                    # 技能模块不算计入功能固定属性、不计战力
+                    # 技能模块不计入功能固定属性、不计战力
                     continue
                 funcAttrList = funcAttrInfoList[funcIndex]
                 funcInsidePerAttrDict = funcInsidePerAttrList[funcIndex] # 功能点内部百分比加成属性
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWing.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWing.py
index cc27958..ef916c3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWing.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWing.py
@@ -84,7 +84,7 @@
         GameWorld.DebugLog("没有精炼值")
         return
     WingProgressUP(curWing, totalPoint, materialItemDict, curPlayer)
-    CalcWingAttr(curPlayer)
+    ChEquip.RefreshPlayerLingQiEquipAttr(curPlayer)
     PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
     PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_WingRefine, 1)
     return
@@ -278,36 +278,7 @@
 #  @param curPlayer 玩家
 #  @param allAttrList 属性列表
 #  @return None
-def CalcWingAttr(curPlayer):
-    
-    classLV = 0
-    equipPlace = ShareDefine.retWing
-    allAttrList = [{} for _ in range(4)]
-        
-    curWing = None
-    equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
-    if ipyData:
-        curWing = equipPack.GetAt(ipyData.GetGridIndex())
-        
-    if not ItemCommon.CheckItemCanUse(curWing):
-        #GameWorld.DebugLog("没有穿戴翅膀!")
-        PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wing, allAttrList)
-        return
-    
-    if not ItemCommon.CheckItemCanUseByExpireTime(curWing):
-        # 过期
-        PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wing, allAttrList)
-        return False
-    
-    # 物品表固定效果属性
-    for effIndex in xrange(curWing.GetEffectCount()):
-        curEff = curWing.GetEffectByIndex(effIndex)
-        effID = curEff.GetEffectID()
-        if effID == 0:
-            continue
-        PlayerControl.CalcAttrDict_Type(effID, curEff.GetEffectValue(0), allAttrList)
-    #GameWorld.DebugLog("翅膀固定属性: %s" % allAttrList)
+def CalcWingAttrEx(curPlayer, curWing, allAttrList):
     
     # 精炼属性
     wingAttrIpyData = GetWingRefineAttrData(curWing.GetItemTypeID())
@@ -321,11 +292,6 @@
         for effID, value in fujiaValueDict.items():
             PlayerControl.CalcAttrDict_Type(effID, int(value * rate), allAttrList)
     #GameWorld.DebugLog("    精炼属性: %s" % allAttrList)
-            
-    # 传奇属性
-    ChEquip.CalcAttr_LegendAttr(curPlayer, curWing, allAttrList)
-    #GameWorld.DebugLog("    传奇属性: %s" % allAttrList)
-    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wing, allAttrList)
     return
 
  
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 810b9f2..f2c2d12 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -1344,7 +1344,7 @@
 Def_MFPType_Plus, # 强化 2
 Def_MFPType_Stone, # 宝石 3
 Def_MFPType_LingGen, # 灵根 4
-Def_MFPType_Wing, # 翅膀 5
+Def_MFPType_LingQi, # 灵器 5
 Def_MFPType_Wash, # 洗练 6
 Def_MFPType_Pet, # 灵宠 7
 Def_MFPType_Horse, # 坐骑 8

--
Gitblit v1.8.0