From e815ab83417d55c5009681832463fba2833cfe0d Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期一, 01 七月 2019 14:30:24 +0800
Subject: [PATCH] 7687 【后端】【主干】娲皇遗迹增加首次S级奖励

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py |   37 ++++++++++++++++++-------------------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py              |    1 +
 2 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
index e76cf2a..62e70f9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
@@ -90,6 +90,7 @@
 Over_grade = 'grade' #评级(5-S,4-A,3-B,2-C,1-D)
 Over_itemInfo = 'itemInfo' #物品列表 [{"ItemID":101, "ItemCount":10, "IsBind":1, "IsSuite":1, "UserData":"自定义属性字符串"}]
 Over_succItemInfo = 'succItemInfo' #物品列表
+Over_firstPassItem = 'firstPassItem' #物品列表
 Over_score = 'score' #已获得积分
 Over_extrScore = 'extrScore' #已获得额外积分
 Over_enterLV = 'enterLV' #进入时等级
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py
index 780e9b1..2a47654 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py
@@ -503,20 +503,25 @@
     needSyncFBData = False
     overDict = {}
     if isPass:
+        overDict = {FBCommon.Over_costTime:costTime, FBCommon.Over_grade:grade}
         curGrade = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [dataMapID])
         if curGrade < grade:
             GameWorld.DebugLog("    更新过关评级: dataMapID=%s,lineID=%s,curGrade=%s,rewardGrade=%s" 
                                % (dataMapID, lineID, curGrade, grade), curPlayer.GetPlayerID())
             GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, grade, False, [dataMapID])
             needSyncFBData = True
-    
+            if grade >= maxGrade: #首次S级奖励
+                lineReward = FBCommon.GetFBLineReward(dataMapID, lineID)
+                firstrewardItemList = [[itemID,itemCnt,0] for itemID,itemCnt in lineReward[0]]
+                ItemControler.GivePlayerItemOrMail(curPlayer, firstrewardItemList, 'QueenRelicsMail', event=["QueenRelics", False, {}])
+                overDict[FBCommon.Over_firstPassItem] = FBCommon.GetJsonItemList(firstrewardItemList)
         
-        overDict = {FBCommon.Over_costTime:costTime, FBCommon.Over_grade:grade}
+            
         if not nextLineID:#没有下一层则给奖励!!
             rewardRet = __GivePlayerQueenRelicsReward(curPlayer, dataMapID, rewardLine - 1, lineID, grade, maxGrade, rewardRateList)
             if rewardRet:
-                startRewardLineID, totalSP, rewardItemList = rewardRet
-                overDict.update({FBCommon.Over_sp:totalSP, FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(rewardItemList), 
+                startRewardLineID, rewardItemList = rewardRet
+                overDict.update({FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(rewardItemList), 
                                  "startRewardLineID":startRewardLineID})
         if lineID+1 > curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBHistoryMaxLine % dataMapID):
             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FBHistoryMaxLine % dataMapID, lineID+1)
@@ -561,9 +566,7 @@
 def __GivePlayerQueenRelicsReward(curPlayer, dataMapID, rewardLineID, curLineID, passGrade, maxGrade, rewardRateList):
     ## 给玩家过关奖励
     
-    totalSP = 0
     totalItemCountDict = {}
-    
     # 一般是不可能,这里做个理论数值防范
     if rewardLineID >= curLineID:
         GameWorld.ErrLog("玩家重复结算娲皇过关奖励!rewardLineID=%s >= curLineID=%s" % (rewardLineID, curLineID), curPlayer.GetPlayerID())
@@ -577,8 +580,7 @@
         rewardGrade = maxGrade if giveLineID < curLineID else passGrade
                     
         lineReward = FBCommon.GetFBLineReward(dataMapID, giveLineID)
-        rewardSP = lineReward[0]
-        rewardItemList = lineReward[1:]
+        rewardItemList = lineReward[1]
         rewardRateIndex = 0 if rewardGrade >= maxGrade else maxGrade - rewardGrade
         if rewardRateIndex < 0 or rewardRateIndex >= len(rewardRateList):
             GameWorld.ErrLog("    评级对应奖励比例索引异常: giveLineID=%s,rewardGrade=%s,rewardRateList=%s,maxGrade=%s,rewardRateIndex=%s" 
@@ -587,29 +589,26 @@
         rewardRate = rewardRateList[rewardRateIndex]
         
         if rewardRate < 100:
-            addSP = int(round(rewardSP * rewardRate / 100.0))
             giveItemList = []
             for itemID, itemCount in rewardItemList:
                 rewardCount = max(1, int(round(itemCount * rewardRate / 100.0))) # 确保至少1个
                 giveItemList.append([itemID, rewardCount])
         else:
-            addSP = rewardSP
             giveItemList = rewardItemList
             
-        GameWorld.DebugLog("    给关卡奖励: giveLineID=%s,rewardGrade=%s,rewardRateList=%s,rewardRate=%s,addSP=%s,giveItemList=%s" 
-                           % (giveLineID, rewardGrade, rewardRateList, rewardRate, addSP, giveItemList), curPlayer.GetPlayerID())
+        GameWorld.DebugLog("    给关卡奖励: giveLineID=%s,rewardGrade=%s,rewardRateList=%s,rewardRate=%s,giveItemList=%s" 
+                           % (giveLineID, rewardGrade, rewardRateList, rewardRate, giveItemList), curPlayer.GetPlayerID())
         
-        totalSP += addSP
+
         for itemID, itemCount in giveItemList:
             totalItemCountDict[itemID] = totalItemCountDict.get(itemID, 0) + itemCount
+        
     
     # 给奖励
-    PlayerControl.PlayerAddZhenQi(curPlayer, totalSP, eventName="QueenRelics")
-    
     rewardItemList = []
     for itemID, itemCount in totalItemCountDict.items():
-        rewardItemList.append([itemID, itemCount, 1])
-        
+        rewardItemList.append([itemID, itemCount, 0])
+    
     needSpace = len(rewardItemList)
     emptySpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
     if emptySpace < needSpace:
@@ -618,8 +617,8 @@
         for itemID, itemCount, isBind in rewardItemList:
             ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem], event=["QueenRelics", False, {}])
             
-    GameWorld.DebugLog("    总奖励:totalSP=%s,rewardItemList=%s" % (totalSP, rewardItemList), curPlayer.GetPlayerID())
-    return startRewardLineID, totalSP, rewardItemList
+    GameWorld.DebugLog("    总奖励:rewardItemList=%s" % (rewardItemList), curPlayer.GetPlayerID())
+    return startRewardLineID, rewardItemList
 
 
 ## 副本行为

--
Gitblit v1.8.0