From 532ee8a00dac025085c781f6d62f7d12072ea6b0 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 04 三月 2020 20:18:43 +0800
Subject: [PATCH] 8397 【开发】个人boss新增评级

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py |   37 +++++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 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 6015f9d..150225a 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
@@ -566,6 +566,43 @@
                 curPlayer.Sync_TimeTick(timeType, 0, diffSecond * 1000, True)
     return updGrade
 
+def UpdateCustomFBGrade(curPlayer, tick, gradeTimeList, timeType=IPY_GameWorld.tttFlagTake):
+    '''更新当前副本星级、评级
+    @param gradeTimeList: 评级分段时间列表,单位秒 [最高评级可用时间, 下级可用时间, ..., 最低级可用时间]
+    @param curPlayer: 触发的玩家,一般是DoEnter时调用,会同步更新一次副本评级并将信息通知该玩家
+    @note: 星级:1-1星;2-2星 ...            [60, 20, 10]
+            评级:1-D;2-C;3-B;4-A;5-S;    [60, 30, 30, 20, 10]
+    '''
+    lowest = 1
+    curGrade = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomSceneGrade)
+    #最后一个评级了,不再处理
+    if curGrade == lowest:
+        return curGrade
+    
+    fbStepTick = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomSceneStepTick)
+    useSecond = int((tick - fbStepTick) / 1000.0) # 战斗阶段已耗总秒数
+    diffSecond = 0
+    updGrade = len(gradeTimeList)
+    gSecondTotal = 0
+    for gSecond in gradeTimeList:
+        gSecondTotal += gSecond
+        diffSecond = gSecondTotal - useSecond
+        # 还在当前评级段
+        if diffSecond > 0:
+            break
+        updGrade -= 1 # 用时超过当前评级段,降级
+    updGrade = max(lowest, updGrade) # 保底最低级
+    if curGrade == updGrade:
+        return curGrade
+    curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomSceneGrade, updGrade)
+    
+    GameWorld.DebugLog("UpdateCustomFBGrade useSecond=%s,gradeTimeList=%s,curGrade=%s,updGrade=%s,diffSecond=%s" 
+                       % (useSecond, gradeTimeList, curGrade, updGrade, diffSecond))
+    
+    if updGrade != lowest:
+        curPlayer.Sync_TimeTick(timeType, 0, diffSecond * 1000, True)
+    return updGrade
+
 def NotifyFBOver(curPlayer, dataMapID, lineID, isPass, overDict={}):
     ## 通知玩家副本总结, 该函数统一几个必带参数
     overDict.update({Over_dataMapID:dataMapID, Over_lineID:lineID, Over_isPass:int(isPass)})

--
Gitblit v1.8.0