From b90a0925f8f5f12c7c78878e2583ea8d3e609b28 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 21 五月 2019 21:07:31 +0800
Subject: [PATCH] 6895 子 【2.0】套装优化 / 【后端】【2.0】增加套装技能

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py |  120 +++++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 78 insertions(+), 42 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 ce36fbd..d98e2c5 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
@@ -6,12 +6,12 @@
 #
 ##@package Event.EventSrc.Operate_EquipPlus
 #
-# @todo:部位星级公共模式强化
+# @todo:部位强化公共模式强化
 # @author hxp
 # @date 2015-12-15
 # @version 1.2
 #
-# 详细描述: 部位星级公共模式强化
+# 详细描述: 部位强化公共模式强化
 #
 # @change: "2016-06-30 21:30" hxp 强化达人开服活动
 # @change: "2016-10-08 18:00" hxp 自动购买物品价格统一取商城物品价格
@@ -28,6 +28,7 @@
 import PlayerActivity
 import PlayerSuccess
 import IpyGameDataPY
+import PlayerActLogin
 import GameWorld
 import ChConfig
 import ChEquip
@@ -59,9 +60,12 @@
     if packType not in ChConfig.Pack_EquipPart_CanPlusStar:
         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 index not in indexList:
+    if equipPlace not in indexList:
         GameWorld.Log("    index not in ChConfig.Pack_EquipPart_CanPlusStar", playerID)
         return
     
@@ -73,17 +77,17 @@
         GameWorld.DebugLog("OnEquipMayaPlus() equip is empty")
         return
     
-    maxStarLV = ItemCommon.GetItemMaxStarLV(curEquip)
-    curPartStarLV = ChEquip.GetEquipPartStarLV(curPlayer, packType, index)
-    if curPartStarLV >= maxStarLV:
-        GameWorld.Log("OnEquipMayaPlus:curPartStarLV(%s) >= maxStarLV(%s)" % (curPartStarLV, maxStarLV), playerID)
+    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)
     
-    updPartStarLV = ChEquip.GetEquipPartStarLV(curPlayer, packType, index)
-    #GameWorld.Log("    result=%s,curStarLV=%s,updStarLV=%s" % (result, curPartStarLV, updPartStarLV), playerID)
+    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
     
@@ -92,15 +96,16 @@
     
     # 每日活动
     PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_EquipPlus)
+    PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_EquipPlus, 1)
     #===========================================================================
     
 
-    # 星级变更时处理
-    if curPartStarLV != updPartStarLV:
-        DoLogic_OnEquipPartStarLVChange(curPlayer, packType)
+    # 强化变更时处理
+    if curPartPlusLV != updPartPlusLV:
+        DoLogic_OnEquipPartStarLVChange(curPlayer, packType, ItemCommon.GetItemClassLV(curEquip))
         # 增加强化成就
         PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlus, 1)
-        EventShell.EventRespons_EquipPlus(curPlayer)
+        EventShell.EventRespons_EquipPlus(curPlayer, ipyData.GetClassLV(), updPartPlusLV)
     return
 
      
@@ -115,8 +120,8 @@
     if findType == -1:
         return result
     
-    curPartStarLV = ChEquip.GetEquipPartStarLV(curPlayer, packType, index)
-    ipyData = IpyGameDataPY.GetIpyGameData("ItemPlus", findType, curPartStarLV)
+    curPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
+    ipyData = IpyGameDataPY.GetIpyGameData("ItemPlus", findType, curPartPlusLV)
     if not ipyData:
         return
     costSilver = ipyData.GetCostCount()
@@ -130,15 +135,15 @@
 
     if curExp >= totalExp:
         #升级
-        curPartStarLV = __EquipMayaPlusChange(curPlayer, packType, curEquip, index)
+        curPartPlusLV = __EquipMayaPlusChange(curPlayer, packType, curEquip, index)
         curExp = curExp - totalExp
         
     ChEquip.SetEquipPartProficiency(curPlayer, packType, index, curExp)
-    ChEquip.NotifyEquipPartStarLV(curPlayer, packType, index)
+    ChEquip.NotifyEquipPartPlusLV(curPlayer, packType, index)
     # 支付金币
     PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, costSilver, isNotify=False)
 
-    DataRecordPack.DR_UpStarLVSuccess(curPlayer, curExp, curPartStarLV)
+    DataRecordPack.DR_UpStarLVSuccess(curPlayer, curExp, curPartPlusLV)
     return ChConfig.Def_ComposeState_Sucess
 
 
@@ -148,49 +153,80 @@
 #  @param packType: 背包类型
 #  @param curEquip: 当前装备
 #  @param succeedRate: 成功率
-#  @param failStarLV: 失败时的星级数
+#  @param failStarLV: 失败时的强化数
 #  @return 
 def __EquipMayaPlusChange(curPlayer, packType, curEquip, index):
-    curPlusLV = ChEquip.GetEquipPartStarLV(curPlayer, packType, index)
+    curPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
     updPlusLV = curPlusLV + 1
-    ChEquip.SetEquipPartStarLV(curPlayer, packType, index, curEquip, 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:
-        msgParamList = [curPlayer.GetPlayerName()] + ItemCommon.GetNotifySuperItemInfo(curPlayer, curEquip, index) + [updPlusLV]
+        itemID = curEquip.GetItemTypeID()
+        userData = curEquip.GetUserData()
+        guid = ItemCommon.CacheNotifyEquipDetailInfo(curPlayer, curEquip)
+        msgParamList = [curPlayer.GetPlayerName(), itemID, userData, guid, updPlusLV]
         PlayerControl.WorldNotify(0, "StrengthenCongratulation", msgParamList)
         
     # 成就
-    PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlusLV, 1, [updPlusLV])
-    
-    
-                    
-    #任务触发
-    #EventShell.EventRespons_OnEquipPartStarUp(curPlayer, setLV)
+    #PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlusLV, 1, [updPlusLV])
+
     # 开服活动数据
     OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_PlusLV, ChEquip.GetTotalPlusLV(curPlayer))
     return updPlusLV
 
 
-def DoLogic_OnEquipPartStarLVChange(curPlayer, packType):
+def DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV):
     #先刷装备BUFF 再计算属性
     curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrActivatyNotify, ChConfig.Def_AttrActivatyNotify_Plus)
-    ChEquip.RefreshPlayerEquipAttribute(curPlayer)
+    ChEquip.RefreshPlayerEquipAttribute(curPlayer, classLV)
     
     #刷新所有属性
     playControl = PlayerControl.PlayerControl(curPlayer)
     playControl.RefreshPlayerAttrState()
     return
 
-
-## 全身12部位强化等级最低的一件强化等级
-#def GetMinPlusLV(curPlayer):
-#    packType = IPY_GameWorld.rptEquip
-#    minPlusLV = GetMaxEquipPartStarLV()
-#    equipPartIndexList = ChConfig.Pack_EquipPart_CanPlusStar.get(packType, [])
-#    for i in equipPartIndexList:
-#        partStarLV = ChEquip.GetEquipPartStarLV(curPlayer, packType, i)
-#        if partStarLV < minPlusLV:
-#            minPlusLV = partStarLV
-#    return minPlusLV
+#// A3 16 装备强化进化 #tagCMEquipPlusEvolve
+#struct    tagCMEquipPlusEvolve
+#{
+#    tagHead        Head;
+#    WORD        ItemIndex;        //装备在背包中索引
+#};
+def OnEquipPlusEvolve(playerIndex, clientData, tick):
+    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
+    
+    equipPackindex = clientData.ItemIndex
+    
+    packType = IPY_GameWorld.rptEquip
+    curPack = curPlayer.GetItemManager().GetPack(packType)
+    curEquip = curPack.GetAt(equipPackindex)
+    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
+    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))
+            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