From 9aea16ac225ef51e37b71d40f5908cf422543826 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 06 十一月 2018 21:18:19 +0800
Subject: [PATCH] 2683 子 天赋技能和新增双职业各两个技能 / 【后端】天赋技能 ----- 补齐第一版

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py |   42 +++++++++++++++++++++++++++++++++++++-----
 1 files changed, 37 insertions(+), 5 deletions(-)

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 41f0d14..49cd1c6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
@@ -93,6 +93,7 @@
     changeItemHoleCnt = 0#curItem.GetCanPlaceStoneCount()
     changeItemUseData = curItem.GetUserData()
     itemQuality = curItem.GetItemQuality()
+    endureReduceType = curItem.GetEndureReduceType()
     #changeItemIsHorse = (curItem.GetType() == ChConfig.Def_Item_Type_Horse)
     
     #执行换装动作
@@ -111,7 +112,8 @@
         #通知客户端交换物品
         curPlayer.ChangeEquip(changeItemID, equipPlace, changeItemStarLV, changeItemHoleCnt, changeItemStoneCnt, changeItemUseData)
         
-    
+    if not endureReduceType:
+        EventShell.EventRespons_EquipByPlace(curPlayer, equipPlace)
     #记录橙装、红装
     #===========================================================================
     # if itemQuality in [ChConfig.Def_Quality_Orange, ChConfig.Def_Quality_Red]:
@@ -431,6 +433,7 @@
 ## 计算装备对基本属性的改变 
 #  @return None
 def __CalcEquips_Effect(curPlayer):
+    baseEquipAttrDict = {}
     baseEquipAttr_Weapon = [{} for _ in range(4)] # 武器基础, 物品表装备基础效果属性
     baseEquipAttr_Armor = [{} for _ in range(4)] # 防具基础, 物品表装备基础效果属性
     baseEquipAttr_Relics = [{} for _ in range(4)] # 圣器基础, 物品表装备基础效果属性
@@ -496,7 +499,8 @@
             #其他非基础部位的
             else:
                 PlayerControl.CalcAttrDict_Type(effectID, effectValue, allAttrListEquip)
-                
+            baseEquipAttrDict[effectID] = baseEquipAttrDict.get(effectID, 0) + effectValue
+            
         groupType = GetEquipPartSuiteGroupType(curPlayer, equipIndex)
         for suiteType in range(1, maxSuiteType+1):
             suitelv = GetEquipPartSuiteLV(curPlayer, equipIndex, suiteType)
@@ -537,6 +541,16 @@
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Suit, allAttrListSuit)
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wash, allAttrListWash)
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipOutOfPrint, allAttrListOutOfPrintEquip)
+    
+    #计算装备基础属性附加战力
+    LV = curPlayer.GetLV()
+    Atk = baseEquipAttrDict.get(ShareDefine.Def_Effect_Atk, 0)
+    MinAtk = baseEquipAttrDict.get(ShareDefine.Def_Effect_MinAtk, 0) + Atk
+    MaxAtk = baseEquipAttrDict.get(ShareDefine.Def_Effect_MaxAtk, 0) + Atk
+    MaxHP = baseEquipAttrDict.get(ShareDefine.Def_Effect_MaxHP, 0)
+    Def = baseEquipAttrDict.get(ShareDefine.Def_Effect_Def, 0)
+    fightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
+    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Equip, fightPowerEx)
     return
 
 
@@ -729,7 +743,7 @@
     for suiteKey, cnt in suitCntDict.items():
         groupType,suiteType,suiteLV = suiteKey.split('_')
         suiteLV = int(suiteLV)
-        job = 0 if groupType == '2' else myjob #仙器组合默认职业0
+        job = 0 if groupType == ChConfig.EquipGroupType_Relics else myjob #仙器组合默认职业0
         ipyData = IpyGameDataPY.GetIpyGameData('EquipSuitAttr', int(groupType), int(suiteType), int(suiteLV), job)
         if not ipyData:
             continue
@@ -750,7 +764,7 @@
         paramList= [name, cnt, suiteLV, groupType, suiteType]
         notifyRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartSuiteNotify % (groupType, suiteType, cnt))
         if not notifyRecord & pow(2, suiteLV):
-            if groupType == '1':
+            if groupType == ChConfig.EquipGroupType_Armor:
                 if cnt >=5:
                     PlayerControl.WorldNotify(0, 'EquipSuit5', paramList)
                     notifyRecord |= pow(2, suiteLV)
@@ -966,6 +980,24 @@
             break
     return findGroupType
 
+#  获取满套装化的最低阶数,如5件套,4件5级,1件3级,则返回3
+def GetEquipSuitsLVByType(curPlayer, suitType, groupType):
+    suiteLV = 999
+    equipSuitTypeDict = IpyGameDataPY.GetFuncEvalCfg('EquipSuitType')
+    if groupType not in equipSuitTypeDict:
+        return 0
+    maxCnt = len(equipSuitTypeDict[groupType])
+    cnt = 0
+    for equipPlace in equipSuitTypeDict[groupType]:
+        curSuiteLV = GetEquipPartSuiteLV(curPlayer, equipPlace, suitType)
+        if curSuiteLV > 0:
+            cnt += 1
+        suiteLV = min(curSuiteLV, suiteLV)
+        
+    if cnt != maxCnt:
+        return 0
+    return 0 if suiteLV == 999 else suiteLV
+
 
 ## 通知公共部位套装等级
 def NotifyEquipPartSuiteLV(curPlayer, index=None):
@@ -1072,7 +1104,7 @@
     
     SyncAllEquipAttrActiveInfo(curPlayer, activeType)
     if activeType == 0:
-        PlayerMagicWeapon.CalcMagicWeaponAttr(curPlayer)
+        PlayerMagicWeapon.CalcMagicWeaponSoulAttr(curPlayer)
     else:
         RefreshPlayerEquipAttribute(curPlayer)
     

--
Gitblit v1.8.0