From c98b8d50ba3d7a4a8ecd7952674c09ea1161e08b Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期四, 31 一月 2019 10:04:53 +0800
Subject: [PATCH] 6105 【后端】【1.5.200】诛仙宝石开发(升级修改)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py |   37 +++++++++++++++++++++++++++++++++----
 1 files changed, 33 insertions(+), 4 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py
index ecb5a2f..0b6e4fc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py
@@ -22,10 +22,12 @@
 import PlayerControl
 import PlayerSuccess
 import IPY_GameWorld
+import DataRecordPack
 import ShareDefine
 import ItemCommon
 import ChConfig
 import ChEquip
+import EventShell
 
 import random
 
@@ -39,7 +41,10 @@
 
 def GetEquipWashMaxLV(curPlayer, equipPlace):
     # @return: 0-未开放; >=1-该装备位最大可洗练等级
-    maxLVDict = IpyGameDataPY.GetFuncEvalCfg("EquipWashMaxLV", 1)
+    washType = GetEquipWashType(equipPlace)
+    if not washType:
+        return 0
+    maxLVDict = IpyGameDataPY.GetFuncEvalCfg("EquipWashGroup%s" % washType, 2)
     if not maxLVDict:
         return 0
     equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
@@ -153,8 +158,8 @@
                            % (costItemID, costItemCount, bindCnt, unBindCnt), playerID)
         return
     
-    goldWashCostList = washData.GetGoldWashCostList()
-    if not goldWashCostList or len(goldWashCostList) != Def_EquipWashMaxAttrCount:
+    goldWashCostItemCountList = washData.GetGoldWashCostList() # 洗练必增条数消耗必增道具个数
+    if not goldWashCostItemCountList or len(goldWashCostItemCountList) != Def_EquipWashMaxAttrCount:
         return
     
     randAttrDict = {} # 随机变更值字典 {属性编号:随机值, ...}
@@ -189,7 +194,22 @@
         fixMaxValueDict[attrNum] = randValueMax
         
     checkUseGoldCnt = len(useGoldAttrNumList)
-    needGold = 0 if checkUseGoldCnt <= 0 else goldWashCostList[checkUseGoldCnt - 1]
+    needGold = 0
+    needMustID = IpyGameDataPY.GetFuncCfg("EquipWashMustID", 1)
+    needMustIDCount = 0 if checkUseGoldCnt <= 0 else goldWashCostItemCountList[checkUseGoldCnt - 1]
+    delMustIDCount = needMustIDCount
+    mustItemIndexList, mustBindCnt, mustUnBindCnt = [], 0, 0
+    if needMustIDCount:
+        mustItemIndexList, mustBindCnt, mustUnBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, needMustID, needMustIDCount)
+        mustItemLackCount = max(0, needMustIDCount - (mustBindCnt + mustUnBindCnt))
+        if mustItemLackCount > 0:
+            needGold = ItemCommon.GetAutoBuyItemNeedGold({needMustID:mustItemLackCount})
+            if needGold <= 0:
+                GameWorld.ErrLog("自动购买必增道具所需仙玉异常!needMustID=%s,mustItemLackCount=%s,needGold=%s" 
+                                 % (needMustID, mustItemLackCount, needGold), playerID)
+                return
+            delMustIDCount = needMustIDCount - mustItemLackCount
+            
     if needGold and not PlayerControl.HaveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, needGold):
         GameWorld.DebugLog("仙玉不足,无法洗练!checkUseGoldCnt=%s,needGold=%s" % (checkUseGoldCnt, needGold), playerID)
         return
@@ -203,6 +223,9 @@
         
     # 扣除消耗
     ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, costItemCount, "EquipWash")
+    if delMustIDCount:
+        ItemCommon.DelCostItemByBind(curPlayer, mustItemIndexList, mustBindCnt, mustUnBindCnt, delMustIDCount, "EquipWash")
+        
     if needGold:
         infoDict = {"EquipPlace":equipPlace, "WashType":washType, "WashLV":washLV, "CheckUseGoldCnt":checkUseGoldCnt}
         PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, needGold, ChConfig.Def_Cost_EquipWash, infoDict)
@@ -252,6 +275,8 @@
         if attrNum in useGoldAttrNumList:
             isRefreshAttr = True
             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipWashValue % (equipPlace, attrNum), tempValue)
+            dataDict = {'equipPlace':equipPlace,'attrNum':attrNum,'oldValue':washValue,'newValue':tempValue}
+            DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_EquipWash, dataDict)
             GameWorld.DebugLog("    勾选洗练,直接更新数值: %s" % tempValue, playerID)
         else:
             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipWashValueTemp % (equipPlace, attrNum), tempValue)
@@ -317,7 +342,10 @@
         
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipWashValueTemp % (equipPlace, attrNum), 0)
         if isSave == 1:
+            oldValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipWashValue % (equipPlace, attrNum))
             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipWashValue % (equipPlace, attrNum), tempValue)
+            dataDict = {'equipPlace':equipPlace,'attrNum':attrNum,'oldValue':oldValue,'newValue':tempValue}
+            DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_EquipWash, dataDict)
             GameWorld.DebugLog("保存洗练数据: equipPlace=%s,attrNum=%s,tempValue=%s" % (equipPlace, attrNum, tempValue), playerID)
             
     if isSave == 1:
@@ -357,6 +385,7 @@
             washSpecLVIpyData = IpyGameDataPY.GetIpyGameDataNotLog("EquipWashSpec", washType, washLV)
             if washSpecLVIpyData:
                 PlayerControl.WorldNotify(0, "WashMasterCongratulation", [curPlayer.GetPlayerName(), curPlayer.GetPlayerID(), washType, washLV])
+        EventShell.EventRespons_EquipWash(curPlayer, washType, washLV)
         break
     return True
 

--
Gitblit v1.8.0