From d3141684a2efd63ec4d70a6d26cd771fe2b257b8 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 20 十一月 2019 16:39:56 +0800
Subject: [PATCH] 8341 【恺英】【后端】强化进化系统优化(强化等级上限修改为关联进化等级,去除星级关联,进化修改)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py |  145 ++++++++++++++++++++----------------------------
 1 files changed, 60 insertions(+), 85 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 1392c23..4897a13 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
@@ -58,15 +58,16 @@
     
     # 判断 1.装备  2.最高强化等级, 3.铜钱数
     if packType not in ChConfig.Pack_EquipPart_CanPlusStar:
-        GameWorld.DebugLog("packType not in ChConfig.Pack_EquipPart_CanPlusStar", playerID)
+        #GameWorld.DebugLog("packType not in ChConfig.Pack_EquipPart_CanPlusStar", playerID)
         return
+    
     ipyData = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'GridIndex':index})
     if not ipyData:
         return
     equipPlace = ipyData.GetEquipPlace()
-    indexList = ChConfig.Pack_EquipPart_CanPlusStar[packType]
-    if equipPlace not in indexList:
-        GameWorld.Log("    index not in ChConfig.Pack_EquipPart_CanPlusStar", playerID)
+    equipPlaceList = ChConfig.Pack_EquipPart_CanPlusStar[packType]
+    if equipPlace not in equipPlaceList:
+        #GameWorld.Log("index=%s, equipPlace=%s not in ChConfig.Pack_EquipPart_CanPlusStar" % (index, equipPlace), playerID)
         return
     
     # 暂不判断开启等级由客户端处理   
@@ -74,94 +75,58 @@
     curPack = curPlayer.GetItemManager().GetPack(packType)
     curEquip = curPack.GetAt(index)
     if not curEquip or curEquip.IsEmpty():
-        GameWorld.DebugLog("OnEquipMayaPlus() equip is empty")
+        GameWorld.DebugLog("equip is empty")
         return
     
-    maxPlusLV = ItemCommon.GetItemMaxPlusLV(curPlayer, index, curEquip)
-    curPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
-    if curPartPlusLV >= maxPlusLV:
-        GameWorld.Log("OnEquipMayaPlus:curPartPlusLV(%s) >= maxPlusLV(%s)" % (curPartPlusLV, maxPlusLV), playerID)
-        return
-
-    # 强化处理
-    result = DoLogic_EquipMayaPlus(curPlayer, curEquip, packType, index)
-    
-    updPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
-    #GameWorld.Log("    result=%s,curStarLV=%s,updStarLV=%s" % (result, curPartPlusLV, updPartStarLV), playerID)
-    if result == ChConfig.Def_ComposeState_None:
-        return
-    
-    #===========================================================================
-    # curPlayer.Sync_MakeItemAnswer(ShareDefine.Def_mitEquipMayaPlus, result)
-    
-    # 每日活动
-    PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_EquipPlus)
-    PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_EquipPlus, 1)
-    #===========================================================================
-    
-
-    # 强化变更时处理
-    if curPartPlusLV != updPartPlusLV:
-        DoLogic_OnEquipPartStarLVChange(curPlayer, packType, ItemCommon.GetItemClassLV(curEquip))
-        # 增加强化成就
-        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlus, 1)
-        EventShell.EventRespons_EquipPlus(curPlayer, ipyData.GetClassLV(), updPartPlusLV)
-    return
-
-     
-
-## 开始装备强化
-#  @param index 为装备位
-#  @return 
-def DoLogic_EquipMayaPlus(curPlayer, curEquip, packType, index):
-    result = ChConfig.Def_ComposeState_None
-
     findType = ChEquip.GetEquipPlusType(curEquip)
-    if findType == -1:
-        return result
+    if not findType:
+        return
     
     curPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
-    ipyData = IpyGameDataPY.GetIpyGameData("ItemPlus", findType, curPartPlusLV)
-    if not ipyData:
+    plusIpyData = IpyGameDataPY.GetIpyGameData("ItemPlus", findType, curPartPlusLV)
+    if not plusIpyData:
         return
-    costSilver = ipyData.GetCostCount()
-
-    if not PlayerControl.HaveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, costSilver):
-        # 金币不足,返回
-        return result
-
-    totalExp = ipyData.GetTotalExp()
-    curExp = ChEquip.GetEquipPartProficiency(curPlayer, packType, index) + ipyData.GetAddExp()
-
+    costSilver = plusIpyData.GetCostCount()
+    if not costSilver:
+        #GameWorld.DebugLog("已到强化最大等级! curPartPlusLV=%s" % curPartPlusLV, playerID)        
+        return
+    
+    curEvolveLV = ChEquip.GetEquipPartPlusEvolveLV(curPlayer, packType, index) # 进化等级
+    nextEvolveLV = curEvolveLV + 1
+    evolveIpyData = IpyGameDataPY.GetIpyGameDataNotLog('EquipPlusEvolve', equipPlace, nextEvolveLV)
+    if not evolveIpyData:
+        return
+    maxPlusLV = evolveIpyData.GetNeedPlusLV()
+    if curPartPlusLV >= maxPlusLV:
+        GameWorld.Log("已到当前强化最大等级,进化后增加强化等级上限! curPartPlusLV(%s) >= maxPlusLV(%s), curEvolveLV=%s" 
+                      % (curPartPlusLV, maxPlusLV, curEvolveLV), playerID)
+        return
+    
+    if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, costSilver, isNotify=False):
+        return
+    
+    totalExp = plusIpyData.GetTotalExp()
+    curExp = ChEquip.GetEquipPartProficiency(curPlayer, packType, index) + plusIpyData.GetAddExp()
+    
     if curExp >= totalExp:
         #升级
-        curPartPlusLV = __EquipMayaPlusChange(curPlayer, packType, curEquip, index)
+        curPartPlusLV += 1
         curExp = curExp - totalExp
+        __EquipMayaPlusChange(curPlayer, packType, curEquip, index, curPartPlusLV)
         
+    DataRecordPack.DR_UpStarLVSuccess(curPlayer, curExp, curPartPlusLV)
     ChEquip.SetEquipPartProficiency(curPlayer, packType, index, curExp)
     ChEquip.NotifyEquipPartPlusLV(curPlayer, packType, index)
-    # 支付金币
-    PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, costSilver, isNotify=False)
+    PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_EquipPlus)
+    PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_EquipPlus, 1)
+    return
 
-    DataRecordPack.DR_UpStarLVSuccess(curPlayer, curExp, curPartPlusLV)
-    return ChConfig.Def_ComposeState_Sucess
-
-
-
-## 玛雅加强等级改变
-#  @param curPlayer: 玩家
-#  @param packType: 背包类型
-#  @param curEquip: 当前装备
-#  @param succeedRate: 成功率
-#  @param failStarLV: 失败时的强化数
-#  @return 
-def __EquipMayaPlusChange(curPlayer, packType, curEquip, index):
-    curPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
-    updPlusLV = curPlusLV + 1
+def __EquipMayaPlusChange(curPlayer, packType, curEquip, index, updPlusLV):
+    ## 玛雅加强等级改变
+    
     ChEquip.SetEquipPartPlusLV(curPlayer, packType, index, curEquip, updPlusLV)
     
     broadCastLVList = IpyGameDataPY.GetFuncEvalCfg("StrengthenLevelBroadCast", 1)
-    #GameWorld.DebugLog("PlusLVChange index=%s,updPlusLV=%s,broadCastLVList=%s" % (index, updPlusLV, broadCastLVList))
     if updPlusLV in broadCastLVList:
         itemID = curEquip.GetItemTypeID()
         userData = curEquip.GetUserData()
@@ -169,12 +134,18 @@
         msgParamList = [curPlayer.GetPlayerName(), itemID, userData, guid, updPlusLV]
         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)
+    EventShell.EventRespons_EquipPlus(curPlayer, classLV, updPlusLV)
+     
     # 开服活动数据
-    #OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_PlusLV, ChEquip.GetTotalPlusLV(curPlayer))
-    return updPlusLV
+    OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_PlusLV, ChEquip.GetTotalPlusLV(curPlayer))
+    return
 
 
 def DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV):
@@ -204,29 +175,33 @@
     if not ItemCommon.CheckItemCanUse(curEquip):
         return
     curEvolveLV = ChEquip.GetEquipPartPlusEvolveLV(curPlayer, packType, equipPackindex)
-    maxEvolveLV = ItemCommon.GetItemMaxPlusEvolveLV(curPlayer, equipPackindex, curEquip)
-    if curEvolveLV >= maxEvolveLV:
-        GameWorld.DebugLog('装备强化进化, 已达最大进化等级equipPackindex=%s, maxEvolveLV=%s'%(equipPackindex, maxEvolveLV))
-        return
     nextEvolveLV = curEvolveLV + 1
     equipPlace = curEquip.GetEquipPlace()
     ipyData = IpyGameDataPY.GetIpyGameData('EquipPlusEvolve', equipPlace, nextEvolveLV)
     if not ipyData:
         return
+    needPlusLV = ipyData.GetNeedPlusLV()
+    curPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, equipPackindex)
+    if curPartPlusLV < needPlusLV:
+        GameWorld.DebugLog("强化等级不足,无法进化! curPartPlusLV=%s < needPlusLV=%s, nextEvolveLV=%s" 
+                           % (curPartPlusLV, needPlusLV, nextEvolveLV))
+        return
+    
     costItemDict = ipyData.GetCostItem()
     delItemDict = {}
     itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
     for itemID, itemCnt in costItemDict.items():
         hasEnough, indexList, findItemIsBind, lackCnt = ItemCommon.GetItem_FromPack_ByID_ExEx(itemID, itemPack, itemCnt)
         if not hasEnough:
-            GameWorld.DebugLog('装备强化进化 材料不足itemID= %s,itemCnt=%s'%(itemID, itemCnt))
+            GameWorld.DebugLog('装备强化进化 材料不足itemID= %s,itemCnt=%s' % (itemID, itemCnt))
             return
         delItemDict[tuple(indexList)] = itemCnt
     for itemIndexList, delCnt in delItemDict.items():
         ItemCommon.ReduceItem(curPlayer, itemPack, itemIndexList, delCnt, True, ChConfig.ItemDel_EquipPlusEvolve)
-    
+        
     ChEquip.SetEquipPartPlusEvolveLV(curPlayer, packType, equipPackindex, nextEvolveLV)
     DoLogic_OnEquipPartStarLVChange(curPlayer, packType, ItemCommon.GetItemClassLV(curEquip))
     ChEquip.NotifyEquipPartPlusLV(curPlayer, packType, equipPackindex)
     EventShell.EventRespons_EquipPlusEvolve(curPlayer, nextEvolveLV)
     return
+

--
Gitblit v1.8.0