From 23772c7a582ffd920706330d52b8603e9859ef4c Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期五, 07 十二月 2018 19:39:06 +0800
Subject: [PATCH] 4856 许愿池重置修改

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py |  114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 112 insertions(+), 2 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
index 22f2be1..d2cc301 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
@@ -30,8 +30,10 @@
 import EventShell
 import PlayerActivity
 import PlayerFairyCeremony
+import PlayerVip
 
 import copy
+
 
 ##功能开启
 def DoRefineStoveOpen(curPlayer):
@@ -43,8 +45,13 @@
 ##登录处理
 def DoOnLogin(curPlayer, tick):
     Sycn_AlchemyMsg(curPlayer)
+    Sycn_AlchemyPrayMsg(curPlayer)
     return
 
+def OnDay(curPlayer):
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AlchemyPrayCnt, 0)
+    Sycn_AlchemyPrayMsg(curPlayer)
+    return
 
 #// A5 76 玩家炼丹 #tagCMPlayerRefine
 #
@@ -191,7 +198,12 @@
         GameWorld.DebugLog("更新炼丹产出特殊物品次数: makeItemID=%s,outputCount=%s" % (makeItemID, outputCount), playerID)
         
     #给物品
-    ItemControler.GivePlayerItem(curPlayer, makeItemID, itemCount, delItemHasBind, [IPY_GameWorld.rptItem], 
+    notBindItemList = IpyGameDataPY.GetFuncEvalCfg("SpecialAlchemy", 4) # 固定不绑定的物品
+    if makeItemID in notBindItemList:
+        makeItemBind = False
+    else:
+        makeItemBind = delItemHasBind
+    ItemControler.GivePlayerItem(curPlayer, makeItemID, itemCount, makeItemBind, [IPY_GameWorld.rptItem], 
                                  event=[ChConfig.ItemGive_Refine, False, {}])
     
     Sycn_AlchemyMsg(curPlayer, makeItemID)
@@ -298,8 +310,9 @@
 def CalcStoveAttr(curPlayer):
     # 果实加成
     allAttrYaoList = [{} for _ in range(4)]
-    PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrYaoList, ShareDefine.Def_AttrFruitFunc_Stove)
+    fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrYaoList, ShareDefine.Def_AttrFruitFunc_Stove)
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_StoveYao, allAttrYaoList)
+    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_StoveYao, fightPowerEx)
     
     allAttrList = [{} for _ in range(4)]
     alchemyLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyLV)
@@ -312,3 +325,100 @@
     
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Stove, allAttrList)
     return
+
+g_needAlchemyLVDict = {}
+def GetIsCanOutByAlchemyLV(curPlayer, itemID):
+    #判断当前丹炉等级是否可产出该丹药
+    global g_needAlchemyLVDict
+    if not g_needAlchemyLVDict:
+        ipyMgr = IpyGameDataPY.IPY_Data()
+        for i in xrange(ipyMgr.GetAlchemyCount()):
+            ipyData = ipyMgr.GetAlchemyByIndex(i)
+            needAlchemyLV = ipyData.GetNeedAlchemyLV()
+            itemList = ipyData.GetAlchemyItem()
+            for itemInfo in itemList:
+                g_needAlchemyLVDict[itemInfo[1]] = needAlchemyLV
+        for i in xrange(ipyMgr.GetAlchemySpecCount()):
+            ipyData = ipyMgr.GetAlchemySpecByIndex(i)
+            needAlchemyLV = ipyData.GetNeedAlchemyLV()
+            itemList = ipyData.GetAlchemyItem()
+            for itemInfo in itemList:
+                g_needAlchemyLVDict[itemInfo[1]] = needAlchemyLV
+    return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyLV) >= g_needAlchemyLVDict.get(itemID, 0)
+
+
+#// A5 14 祈福丹药 #tagCMPrayElixir
+#
+#struct    tagCMPrayElixir
+#
+#{
+#    tagHead        Head;
+#};
+def PlayerPrayElixir(index, clientPack, tick):
+    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+    prayCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyPrayCnt)
+    limitCnt = PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_PrayElixir)
+    if prayCnt >= limitCnt:
+        GameWorld.DebugLog('今日祈福丹药次数已满!prayCnt=%s'%prayCnt)
+        return
+    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, 1) 
+    if not packSpace:
+        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
+        return
+    
+    alchemyItemList = IpyGameDataPY.GetFuncEvalCfg('GodAlchemy')
+    
+    newItemInfoList = []
+    for itemInfo in alchemyItemList:
+        itemID = itemInfo[1]
+        if not GetIsCanOutByAlchemyLV(curPlayer, itemID):
+            #GameWorld.DebugLog('祈福丹药,炼丹等级未达到,移除产出库!itemID=%s'%itemID)
+            continue
+        if PlayerAttrFruit.IsFruitEatFull(curPlayer, itemID):
+            #GameWorld.DebugLog('祈福丹药,使用次数已满,移除产出库!itemID=%s'%itemID)
+            continue
+        newItemInfoList.append(itemInfo)
+    if not newItemInfoList:
+        GameWorld.DebugLog('祈福丹药,没有丹药可产出!!')
+        return
+    
+    makeItemInfo = GameWorld.GetResultByWeightList(newItemInfoList)
+    if not makeItemInfo:
+        GameWorld.DebugLog("祈福丹药, 结果错误!")
+        return
+    
+    makeItemID, itemCount = makeItemInfo
+    makeItemData = GameWorld.GetGameData().GetItemByTypeID(makeItemID)
+    if not makeItemData:
+        return
+    
+    costMoney = IpyGameDataPY.GetFuncCfg('GodAlchemy', 2)
+    if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, costMoney, ChConfig.Def_Cost_AlchemyPray):
+        return
+    #给物品
+    ItemControler.GivePlayerItem(curPlayer, makeItemID, itemCount, True, [IPY_GameWorld.rptItem], 
+                                 event=[ChConfig.ItemGive_Refine, False, {}])
+    #GameWorld.DebugLog('makeItemID=%s,newItemInfoList=%s'%(makeItemID, newItemInfoList))
+    
+    
+    #紫色及以上全服广播
+    notifyColor = IpyGameDataPY.GetFuncCfg("AlchemyNotify", 1)
+    needNotifyItemIDList = IpyGameDataPY.GetFuncEvalCfg("AlchemyNotify", 2)
+    notNotifyItemIDList = IpyGameDataPY.GetFuncEvalCfg("AlchemyNotify", 3)
+    if makeItemID not in notNotifyItemIDList and (makeItemID in needNotifyItemIDList or makeItemData.GetItemColor() >= notifyColor):
+        PlayerControl.WorldNotify(0, "BlastfurnaceBlessing", [curPlayer.GetPlayerName(), makeItemID])
+        
+    #更新次数
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AlchemyPrayCnt, prayCnt+1)
+    Sycn_AlchemyPrayMsg(curPlayer, makeItemID)
+    return
+
+def Sycn_AlchemyPrayMsg(curPlayer, itemID=0):
+    #祈福丹药结果
+    if not itemID and not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_RefineStove):
+        return
+    pack = ChPyNetSendPack.tagMCPrayElixirResult()
+    pack.PrayCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyPrayCnt)
+    pack.ItemID = itemID
+    NetPackCommon.SendFakePack(curPlayer, pack)
+    return
\ No newline at end of file

--
Gitblit v1.8.0