From a4e9d95f1afee7c045a78e1bed3ede1867eb3a87 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期五, 08 三月 2019 16:33:40 +0800
Subject: [PATCH] 6291 【后端】【2.0】限时仙盟boss

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py |   57 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 52 insertions(+), 5 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
index ed698f5..67b4e12 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
@@ -28,6 +28,7 @@
 import SkillCommon
 import PyGameData
 import ChConfig
+import ChEquip
 
 import random
 
@@ -142,7 +143,7 @@
     destEquip = zhuXianEquipPack.GetAt(reqEquipPlaceIndex)
     desItemID, desUserData = [0, ''] if destEquip.IsEmpty() else [destEquip.GetItemTypeID(), destEquip.GetUserData()]
     srcItemID, srcUserData = curEquip.GetItemTypeID(), curEquip.GetUserData()
-    if not ItemCommon.DoLogicSwitchItem(curPlayer, curEquip, destEquip, ShareDefine.rptZhuXianEquip):
+    if not ItemCommon.DoLogicSwitchItem(curPlayer, destEquip, curEquip, ShareDefine.rptZhuXianEquip):
         return
     dataDict = {'dotype':'EquipZhuXianItem', 'desItemID':desItemID, 'desUserData':desUserData, 'srcItemID':srcItemID, 'srcUserData':srcUserData}
     DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_EquipChange, dataDict)
@@ -189,6 +190,7 @@
 
 
 def CalcZhuXianAttr(curPlayer):
+    return
     ## 刷新诛仙属性
     playerID = curPlayer.GetPlayerID()
     PyGameData.g_zhuXianSkillAddPerDict.pop(playerID, None)
@@ -196,10 +198,11 @@
     
     allAttrList = [{} for _ in range(4)]
     allAttrListZXSuit = [{} for _ in range(4)]
+    allAttrListZXStone = [{} for _ in range(4)]
     equipScoreTotal = 0  #为解决装备评分、战力不一致的情况,装备战力改为由评分作为参数计算战力
     equipPlaceClassLVDict = {}  #装备位对应装备阶 {装备位:阶, ...}
     equipPlaceBaseAttrDict = {}  #装备位对应基础属性字典 {装备位:{属性ID:value, ...}, ...}
-    
+    equipPlaceStoneLVDict = {}  #装备位对应宝石等级 {装备位:[宝石等级,..], ...}
     attrIDSkillPlusDict = IpyGameDataPY.GetFuncEvalCfg("SkillPlusAttrID", 1, {})  # 属性ID对应影响的技能TypeID列表 {属性ID:[技能TypeID列表, ...], ...}
     addAttrIDList = range(ShareDefine.Def_Effect_SkillAddPer1, ShareDefine.Def_Effect_SkillAddPer7 + 1)
     reduceAttrIDList = range(ShareDefine.Def_Effect_SkillReducePer1, ShareDefine.Def_Effect_SkillReducePer7 + 1)
@@ -241,7 +244,11 @@
                     zxSkillPlusAttrDict[legendAttrID] = zxSkillPlusAttrDict.get(legendAttrID, 0) + legendAttrValue
                 else:
                     PlayerControl.CalcAttrDict_Type(legendAttrID, legendAttrValue, allAttrList)
-                    
+        #宝石属性
+        gemlvList = ChEquip.CalcEquipStone_Effect(curPlayer, equipPlace, allAttrListZXStone)
+        equipPlaceStoneLVDict[equipPlace] = gemlvList
+            
+        
 #    GameWorld.DebugLog("诛仙装备属性: allAttrList=%s" % (allAttrList))
 #    GameWorld.DebugLog("    zxSkillPlusAttrDict=%s" % (zxSkillPlusAttrDict))
 #    GameWorld.DebugLog("    equipPlaceClassLVDict=%s" % (equipPlaceClassLVDict))
@@ -272,6 +279,10 @@
                                ShareDefine.Def_Effect_ZXRuyiAttrPer:ShareDefine.zxetRuyi,
                                ShareDefine.Def_Effect_ZXPendantAttrPer:ShareDefine.zxetPendant,
                                ShareDefine.Def_Effect_ZXRingAttrPer:ShareDefine.zxetRing,
+                               ShareDefine.Def_Effect_ZXWeaponAttrPer:ShareDefine.zxetWeapon1,
+                               ShareDefine.Def_Effect_LXWeaponAttrPer:ShareDefine.zxetWeapon2,
+                               ShareDefine.Def_Effect_XXWeaponAttrPer:ShareDefine.zxetWeapon3,
+                               ShareDefine.Def_Effect_JXWeaponAttrPer:ShareDefine.zxetWeapon4,
                                }
     suitPlaceGroupDict = IpyGameDataPY.GetFuncEvalCfg("EquipZhuXian", 2, {})
     for suitType, placeGroupList in suitPlaceGroupDict.items():
@@ -314,10 +325,46 @@
                     PlayerControl.CalcAttrDict_Type(plusEffID, addValue, allAttrListZXSuit)
             else:
                 PlayerControl.CalcAttrDict_Type(suitEffID, suitEffValue, allAttrListZXSuit)
-                
+    #宝石共鸣属性
+    #GameWorld.DebugLog('equipPlaceStoneLVDict=%s'%equipPlaceStoneLVDict)
+    needStoneCnt = IpyGameDataPY.GetFuncCfg('GemResonance')
+    for suitType, placeGroupList in suitPlaceGroupDict.items():
+        suitType = int(suitType)
+        groupStoneLVList = []
+        for place in placeGroupList:
+            groupStoneLVList += equipPlaceStoneLVDict.get(place, [])
+        
+        if len(groupStoneLVList) < needStoneCnt:
+            continue
+        groupStoneLVList.sort(reverse=True)
+        shareStoneLV = min(groupStoneLVList[:needStoneCnt])
+        GameWorld.DebugLog("    激活诛仙宝石共鸣: suitType=%s, shareStoneLV=%s" % (suitType, shareStoneLV))
+        stoneAttrIpyData = IpyGameDataPY.GetIpyGameData("ZhuXianStoneAttr", suitType, shareStoneLV)
+        if not stoneAttrIpyData:
+            continue
+        attrIDList = stoneAttrIpyData.GetAttrIDList()
+        attrValueList = stoneAttrIpyData.GetAttrValueList()
+        if len(attrIDList) != len(attrValueList):
+            continue
+        for i, effID in enumerate(attrIDList):
+            effValue = attrValueList[i]
+            if effID in suitAttrIDPlusPlaceDict:
+                plusPlace = suitAttrIDPlusPlaceDict[effID]
+                if plusPlace not in equipPlaceBaseAttrDict:
+                    continue
+                plusEffDict = equipPlaceBaseAttrDict[plusPlace]
+                #GameWorld.DebugLog("            plusPlace=%s,plusEffDict=%s" % (plusPlace, plusEffDict))
+                for plusEffID, plusEffValue in plusEffDict.items():
+                    addValue = int(plusEffValue * (10000 + effValue) / 10000.0)
+                    #GameWorld.DebugLog("                plusEffID=%s,plusEffValue=%s,addValue=%s" % (plusEffID, plusEffValue, addValue))
+                    PlayerControl.CalcAttrDict_Type(plusEffID, addValue, allAttrListZXStone)
+            else:
+                PlayerControl.CalcAttrDict_Type(effID, effValue, allAttrListZXStone)
+        
     # 保存计算值
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_ZXEquip, allAttrList)
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_ZXEquipSuit, allAttrListZXSuit)
+    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_ZXEquipStone, allAttrListZXStone)
     
     #计算装备基础属性附加战力 (目前组成: 评分战力 + ...)
     equipFightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
@@ -411,7 +458,7 @@
             PlayerControl.SendMailByKey("DefaultLackSpace", [curPlayer.GetPlayerID()], prizeItemList)
         else:
             for giveItemID, itemCnt in giveItemDict.items():
-                ItemControler.GivePlayerItem(curPlayer, giveItemID, itemCnt, True, [IPY_GameWorld.rptItem], True)
+                ItemControler.GivePlayerItem(curPlayer, giveItemID, itemCnt, 0, [IPY_GameWorld.rptItem])
     
     #通知结果
     packData = ChPyNetSendPack.tagMCZhuXianDecomposeResult()

--
Gitblit v1.8.0