From 8eec7c10e8d56fad0159556eb1ef7f3d6d68a479 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 26 一月 2021 11:40:17 +0800
Subject: [PATCH] 8710 【开发】【主干】【BT2】根据世界等级配置奖励(集字活动支持按世界等级配置不同奖励);

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py |   81 ++++++++++++++++++++++++++++++++--------
 1 files changed, 65 insertions(+), 16 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
index 8be890e..672fbf9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
@@ -85,11 +85,20 @@
         return
     
     curPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
+    classLV = ItemCommon.GetItemClassLV(curEquip)
+    plusMaxIpyData = IpyGameDataPY.GetIpyGameData("ItemPlusMax", findType, classLV)
+    if not plusMaxIpyData:
+        return
+    plusLVMax = plusMaxIpyData.GetPlusLVMax()
+    if curPartPlusLV >= plusLVMax:
+        #GameWorld.DebugLog("强化达到本阶最大等级,无法强化! classLV=%s,plusLVMax=%s,curPartPlusLV=%s" % (classLV, plusLVMax, curPartPlusLV))
+        return
     plusIpyData = IpyGameDataPY.GetIpyGameData("ItemPlus", findType, curPartPlusLV)
     if not plusIpyData:
         return
     costSilver = plusIpyData.GetCostCount()
-    if not costSilver:
+    costItemInfo = plusIpyData.GetCostItemInfo()
+    if not costSilver and not costItemInfo:
         #GameWorld.DebugLog("已到强化最大等级! curPartPlusLV=%s" % curPartPlusLV, playerID)        
         return
     
@@ -104,19 +113,42 @@
                       % (curPartPlusLV, maxPlusLV, curEvolveLV), playerID)
         return
     
-    if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, costSilver, isNotify=False):
+    if costSilver and not PlayerControl.HaveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, costSilver):
+        GameWorld.DebugLog("铜钱不足,无法强化! costSilver=%s" % costSilver)
         return
     
-    totalExp = plusIpyData.GetTotalExp()
-    curExp = ChEquip.GetEquipPartProficiency(curPlayer, packType, index) + plusIpyData.GetAddExp()
+    costItemID, costItemCount = 0, 0
+    if costItemInfo:
+        costItemID, costItemCount = costItemInfo
+        itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
+        hasEnough, itemIndexList = ItemCommon.GetItem_FromPack_ByID(costItemID, itemPack, costItemCount)
+        if not hasEnough:
+            GameWorld.DebugLog("材料不足,无法强化! costItemID=%s, costItemCount=%s" % (costItemID, costItemCount))
+            return
+        
+    if costSilver:
+        PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, costSilver, isNotify=False)
     
-    if curExp >= totalExp:
-        #升级
+    if costItemID:
+        ItemCommon.ReduceItem(curPlayer, itemPack, itemIndexList, costItemCount, True, ChConfig.ItemDel_EquipPlus)
+        
+    isLVUp = False
+    curExp = 0
+    addExp = plusIpyData.GetAddExp()
+    totalExp = plusIpyData.GetTotalExp()
+    if addExp and totalExp:
+        curExp = ChEquip.GetEquipPartProficiency(curPlayer, packType, index) + addExp
+        if curExp >= totalExp:
+            curExp = curExp - totalExp
+            isLVUp = True
+    else:
+        isLVUp = True
+        
+    if isLVUp:
         curPartPlusLV += 1
-        curExp = curExp - totalExp
         __EquipMayaPlusChange(curPlayer, packType, curEquip, index, curPartPlusLV)
         
-    DataRecordPack.DR_UpStarLVSuccess(curPlayer, curExp, curPartPlusLV)
+    #DataRecordPack.DR_UpStarLVSuccess(curPlayer, curExp, curPartPlusLV)
     ChEquip.SetEquipPartProficiency(curPlayer, packType, index, curExp)
     ChEquip.NotifyEquipPartPlusLV(curPlayer, packType, index)
     PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_EquipPlus)
@@ -137,16 +169,33 @@
         PlayerControl.WorldNotify(0, "StrengthenCongratulation", msgParamList)
         
     classLV = ItemCommon.GetItemClassLV(curEquip) 
-    # 成就
-    #PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlusLV, 1, [updPlusLV])
     
     DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV)
-    # 增加强化成就
-    PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlus, 1)
+    # 强化成就
+    __UpdateEquipPlusSuccess(curPlayer, classLV)
     EventShell.EventRespons_EquipPlus(curPlayer, classLV, updPlusLV)
-     
+    
     # 开服活动数据
-    OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_PlusLV, ChEquip.GetTotalPlusLV(curPlayer))
+    #OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_Plus, ChEquip.GetTotalPlusLV(curPlayer))
+    return
+
+def __UpdateEquipPlusSuccess(curPlayer, classLV):
+    ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'ClassLV':classLV}, True)
+    if not ipyDataList:
+        return
+    
+    packType = IPY_GameWorld.rptEquip
+    plusLVCountDict = {}
+    for ipyData in ipyDataList:
+        index = ipyData.GetGridIndex()
+        plusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
+        if not plusLV:
+            continue
+        conditionKey = (classLV, plusLV)
+        plusLVCountDict[conditionKey] = plusLVCountDict.get(conditionKey, 0) + 1
+        
+    #GameWorld.DebugLog("强化成就数据: classLV=%s,plusLVCountDict=%s" % (classLV, plusLVCountDict))
+    PlayerSuccess.UpdateSuccessProgressByConditions(curPlayer, ShareDefine.SuccType_EquipPlus, plusLVCountDict)
     return
 
 def DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV):
@@ -198,7 +247,7 @@
             return
         delItemDict[tuple(indexList)] = itemCnt
     for itemIndexList, delCnt in delItemDict.items():
-        ItemCommon.ReduceItem(curPlayer, itemPack, itemIndexList, delCnt, True, ChConfig.ItemDel_EquipPlusEvolve)
+        ItemCommon.ReduceItem(curPlayer, itemPack, itemIndexList, delCnt, True, ChConfig.ItemDel_EquipPlus)
         
     ChEquip.SetEquipPartPlusEvolveLV(curPlayer, packType, equipPackindex, nextEvolveLV)
     DoLogic_OnEquipPartStarLVChange(curPlayer, packType, ItemCommon.GetItemClassLV(curEquip))
@@ -250,7 +299,7 @@
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipPartMasterPlusLV % classLV, actMasterPlusLV)
         
     SyncEquipMasterPlusLVInfo(curPlayer, classLV)
-    
+    ChEquip.ChangeEquipEffectByPlusMaster(curPlayer, classLV)
     #刷新所有属性
     DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV)
     return

--
Gitblit v1.8.0