From 09fef77b16601ee5b0f53f34ccb23804b8448c8c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 28 五月 2025 17:59:13 +0800
Subject: [PATCH] 102 【主界面】官职晋升-服务端

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py   |  379 +----------------------------------------------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/RealmLVUP.py      |    8 
 /dev/null                                                                                         |   34 ----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerChangeJob.py     |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini                        |   14 -
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py              |   12 -
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py            |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py              |    2 
 PySysDB/PySysDBPY.h                                                                               |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py           |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py       |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                   |    8 -
 13 files changed, 22 insertions(+), 454 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index f607472..23cd4f0 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -175,11 +175,6 @@
 	DWORD		LVMax;	//等级上限
 	list		AddAttrType;	//境界加成属性类型	
 	list		AddAttrNum;	//境界加成属性值
-	DWORD		BuffID;	//给全服在线玩家增加buff
-	DWORD		ExpRate;	//修为池经验速率
-	DWORD		ExpLimit;	//修为池经验上限
-	dict		LearnSkillIDInfo;	//学习技能ID信息 {"职业":[技能ID, ...], ...}
-	BYTE		AddFreePoint;	//增加自由属性点
 };
 
 //境界进阶任务表
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index e70362f..f1590e3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -744,19 +744,11 @@
 Writer = alee
 Releaser = alee
 RegType = 0
-RegisterPackCount = 3
+RegisterPackCount = 1
 
 PacketCMD_1 = 0xA5
-PacketSubCMD_1 = 0x24
-PacketCallFunc_1 = OpenRealmFB
-
-PacketCMD_2 = 0xA5
-PacketSubCMD_2 = 0x21
-PacketCallFunc_2 = OnTakeOutRealmExp
-
-PacketCMD_3 = 0xA5
-PacketSubCMD_3 = 0x23
-PacketCallFunc_3 = DoRealmLVUp
+PacketSubCMD_1 = 0x23
+PacketCallFunc_1 = DoRealmLVUp
 
 ;炼体
 [PlayerLianTi]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 4fe0290..18818c9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4409,16 +4409,8 @@
 Def_PDict_FeastRedPacketCanGrabCnt = "FeastRedPacketCanGrabCnt"  # 节日红包可抢次数
 
 #境界
-Def_PDict_RealmVersionState = "RealmVersionState" #境界版本调整记录状态值
 Def_PDict_RealmTaskAwardState = "RealmTaskAwardState" #境界渡劫条件领奖状态,按二进制位存储是否已领取
 Def_PDict_RealmTaskValue = "RealmTaskValue_%s" #境界渡劫任务需要记录值,参数(任务ID)
-Def_PDict_RealmXXZLAward = "RealmXXZLAward" #境界修仙之路领奖状态;按二进制位存储每个任务ID是否已领取
-Def_PDict_RealmFBAttrAdd = "RealmFBAttrAdd_%s" #渡劫副本属性加成 参数属性ID
-Def_PDict_RealmExp = "RealmExp" #境界修为池总经验
-Def_PDict_RealmExpPoint = "RealmExpPoint" #境界修为池总经验点
-Def_PDict_RealmExpBeginTime = "RealmExpBeginTime" #境界修为池经验开始计时时间
-Def_PDict_RealmExpBuffRemainTime = "RealmExpBuffRemainTime" #境界修为池经验buff剩余时间
-Def_PDict_RealmExpBuffAddRate = "RealmExpBuffAddRate" #境界修为池经验增加百分比(万分率)
 
 #法宝
 Def_PDict_MagicWeaponIsWear = "MagicWeaponIsWear_%s" #法宝佩戴状态 参数法宝ID
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
index 5297eff..8df02d0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
@@ -5234,6 +5234,6 @@
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
     countType = clientData.Type 
     RunQuestEvent(curPlayer, "on_client_by_id", clientData.CountID, Def_RunQuestType_Normal)
-    if countType == 1:
-        PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_KillNPC, 1)
+    #if countType == 1:
+    #    PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_KillNPC, 1)
     return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
index a26c5f8..e2a7ce5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
@@ -7113,7 +7113,7 @@
 # @return None <Realmxxzlaward taskid="修仙之路任务ID"/>
 def ConditionType_Realmxxzlaward(curPlayer, curMission, curActionNode):
     taskID = GameWorld.ToIntDef(curActionNode.GetAttribute("taskid"), 0)
-    awardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmXXZLAward)
+    awardState = curPlayer.NomalDictGetProperty("RealmXXZLAward")
     if awardState&pow(2, taskID):
         return True
     return False
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/GetRealmExp.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/GetRealmExp.py
deleted file mode 100644
index 3741292..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/GetRealmExp.py
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.GetRealmExp
-#
-# @todo:获取当前境界修为经验
-# @author xdh
-# @date 2019-03-20
-# @version 1.0
-#
-# 详细描述: 获取当前境界修为经验
-#
-#---------------------------------------------------------------------
-"""Version = 2019-03-20 11:30"""
-
-import PlayerPrestigeSys
-import GameWorld
-import ChConfig
-#---------------------------------------------------------------------
-#逻辑实现
-## GM命令执行入口
-#  @param curPlayer 当前玩家
-#  @param list 参数列表 [npcID]
-#  @return None
-#  @remarks 函数详细说明.
-def OnExec(curPlayer, list):
-    curTotalRealmExp = PlayerPrestigeSys.UpdateRealmExp(curPlayer, isNotify=True)
-    buffRemainTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpBuffRemainTime)
-    GameWorld.DebugAnswer(curPlayer, "curTotalRealmExp=%s,buffRemainTime=%s" % (curTotalRealmExp, buffRemainTime))
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/RealmLVUP.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/RealmLVUP.py
index 362d190..b6677bc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/RealmLVUP.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/RealmLVUP.py
@@ -30,7 +30,7 @@
 def OnExec(curPlayer, cmdList):
     if not cmdList:
         GameWorld.DebugAnswer(curPlayer, "------------ %s" % GameWorld.GetCurrentDataTimeStr())
-        GameWorld.DebugAnswer(curPlayer, "重置境界阶级: RealmLVUP 0 [重置改版标记]")
+        GameWorld.DebugAnswer(curPlayer, "重置境界阶级: RealmLVUP 0")
         GameWorld.DebugAnswer(curPlayer, "执行境界升阶: RealmLVUP 1 [次数]")
         GameWorld.DebugAnswer(curPlayer, "设置境界任务: RealmLVUP t 任务ID 进度值")
         GameWorld.DebugAnswer(curPlayer, "注:可设置进度的任务类型:%s" % PlayerPrestigeSys.NeedTaskValueTypeList)
@@ -42,7 +42,6 @@
     
     value = cmdList[0]
     if value == 0:
-        reVersionState = cmdList[1] if len(cmdList) > 1 else 0
         curPlayer.SetOfficialRank(1)
         curPlayer.SetFreePoint(0)
         GameWorld.DebugAnswer(curPlayer, "重置境界!")
@@ -59,9 +58,6 @@
             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), 0)
             PlayerGubao.Sync_GubaoItemEffInfo(curPlayer, gubaoID, effType, force=True)
         GameWorld.DebugAnswer(curPlayer, "重置境界OK")
-        if reVersionState:
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmVersionState, 0)
-            GameWorld.DebugAnswer(curPlayer, "重置改版标记,重登会执行重置境界逻辑!")
         return
     if value == 1:
         doCount = cmdList[1] if len(cmdList) > 1 else 1
@@ -80,7 +76,7 @@
         taskID = cmdList[1] if len(cmdList) > 1 else 0
         taskValue = cmdList[2] if len(cmdList) > 2 else 0
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmTaskValue % taskID, taskValue)
-        PlayerPrestigeSys.SyncRealmFBState(curPlayer, taskIDList=[taskID])
+        PlayerPrestigeSys.SyncRealmInfo(curPlayer, taskIDList=[taskID])
         GameWorld.DebugAnswer(curPlayer, "设置任务ID:%s,进度值:%s" % (taskID, taskValue))
         
     return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_DuJie.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_DuJie.py
deleted file mode 100644
index 60d7882..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_DuJie.py
+++ /dev/null
@@ -1,581 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package GameWorldLogic.FBProcess.GameLogic_DuJie
-#
-# @todo:渡劫副本
-# @author xdh
-# @date 2017-10-10 14:30
-# @version 1.0
-#
-# 详细描述: 渡劫副本
-#
-#---------------------------------------------------------------------
-"""Version = 2017-10-10 14:30"""
-import FBCommon
-import ChConfig
-import IPY_GameWorld
-import PlayerControl
-import GameWorld
-import NPCCustomRefresh
-import IpyGameDataPY
-import PlayerPrestigeSys
-import GameFuncComm
-import ItemCommon
-import ShareDefine
-import ItemControler
-import PlayerSuccess
-import EventShell
-import EventReport
-
-import math
-import time
-
-#当前副本地图的状态
-(
-FB_Step_CallHelp, # 助战召唤
-FB_Step_MapPrepare, # 地图准备
-FB_Step_Fighting, # 战斗中
-FB_Step_LeaveTime, # 自由时间
-) = range(4)
-
-#---渡劫副本---
-DuJieFB_Star = 'DuJieFB_Star' #评级
-DuJieFB_RealmLV = "DuJieFB_RealmLV"     # 境界等级
-DuJieFB_LeaderPlayerID = "DuJieFB_LeaderPlayerID"     # 队长ID
-
-
-(
-Def_Time_MapPrepare, # 准备时间, 秒
-Def_Time_Fight, # 持续时间, 秒
-Def_Time_Leave, # 结束时间, 秒
-Def_StarTime, # 星级对应耗时配置, 秒
-Def_HelpAddAttrID, #护法可增加的属性
-) = range(5)
-
-
-def GetRealmFBTimeCfg():
-    lineID = 1 if FBCommon.GetFBPropertyMark() else 0
-    return FBCommon.GetFBLineStepTime(ChConfig.Def_FBMapID_DuJie, lineID)
-
-def GetDuJieBossID(curPlayer=None):
-    if curPlayer:
-        realmLV = curPlayer.GetOfficialRank()
-    else:
-        realmLV = GameWorld.GetGameFB().GetGameFBDictByKey(DuJieFB_RealmLV)
-    taskIpyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("RealmLVUPTask", realmLV)
-    if not taskIpyDataList:
-        return
-    for taskIpyData in taskIpyDataList:
-        if taskIpyData.GetTaskType() != PlayerPrestigeSys.RealmTaskType_Dujie:
-            continue
-        taskID = taskIpyData.GetTaskID()
-        if curPlayer:
-            if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmTaskValue % taskID):
-                GameWorld.DebugLog("玩家渡劫boss已完成击杀! realmLV=%s,taskID=%s" % (realmLV, taskID), curPlayer.GetPlayerID())
-                return
-        valueList = taskIpyData.GetNeedValueList()
-        return valueList[0] if valueList else 0
-    return
-
-#---FB接口----------
-##副本初始化
-# @param tick:时间戳
-# @return 返回值无意义
-def DoFBInit(tick):
-    #GameWorld.GetGameFB().GameServer_RegisterFBInfo(GetRealmFBTimeCfg()[Def_MaxPlayerCnt], '')
-    return
-
-##开启副本
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 开启副本
-def OnOpenFB(tick):
-    gameFB = GameWorld.GetGameFB()
-    gameFB.SetGameFBDict(DuJieFB_RealmLV, 0)
-    gameFB.SetGameFBDict(DuJieFB_Star, 0)
-    gameFB.SetGameFBDict(DuJieFB_LeaderPlayerID, 0)
-    return
-
-
-##关闭副本
-# @param tick 时间戳
-# @return 无意义
-# @remarks 
-def OnCloseFB(tick):
-    #副本踢出玩家
-    FBCommon.DoLogic_FBKickAllPlayer()
-    return
-
-##玩家死亡.
-# @param curPlayer:死亡的玩家 
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 玩家主动离开副本.
-def DoPlayerDead(curPlayer):
-    if curPlayer.GetID() == GameWorld.GetGameFB().GetGameFBDictByKey(DuJieFB_LeaderPlayerID):
-        __DoDoJieFBOver(False, GameWorld.GetGameWorld().GetTick())
-    return
-
-## 是否能够通过活动查询进入
-#  @param curPlayer 玩家实例
-#  @param mapID 地图ID
-#  @param lineID 线路id
-#  @param tick 时间戳
-#  @return 布尔值
-def OnEnterFBEvent(curPlayer, mapID, lineID, tick):
-    return __CheckEnter(curPlayer, mapID, lineID)
-
-
-##进入副本检查
-#  @param curPlayer 玩家实例
-#  @param mapID 地图ID
-#  @param lineID 线路id
-# @return None
-def __CheckEnter(curPlayer, mapID, lineID):
-    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Official):
-        GameWorld.DebugLog("爵位境界功能未开启, 无法开启渡劫!curLV=%s" % curPlayer.GetLV())
-        return False
-    if lineID == 0 or curPlayer.GetTeamLV() == IPY_GameWorld.tmlLeader or (lineID == 1 and curPlayer.GetTeamID() == 0):
-        bossID = GetDuJieBossID(curPlayer)
-        if not bossID:
-            GameWorld.ErrLog("没有可挑战的渡劫boss或已完成: realmLV=%s" % curPlayer.GetOfficialRank(), curPlayer.GetPlayerID())
-            return False
-        
-    return True
-
-
-##副本玩家进入点
-# @param curPlayer 玩家实例
-# @param mapID 地图ID
-# @param lineId 分线ID
-# @param ipyEnterPosInfo 功能线路IPY配置坐标信息
-# @param tick 时间戳
-# @return posX, posY, 随机半径(可选)
-def OnGetFBEnterPos(curPlayer, mapID, lineId, ipyEnterPosInfo, tick):
-    return ipyEnterPosInfo
-   
-
-
-##是否可以进入
-# @param ask 请求结构体
-# @param tick 时间戳
-# @return TChangeMapError
-# @remarks 
-def OnChangeMapAsk(ask, tick):
-    return IPY_GameWorld.cmeAccept
-
-
-##玩家进入副本
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 无意义
-# @remarks 玩家进入副本
-def DoEnterFB(curPlayer, tick):
-    gameFB = GameWorld.GetGameFB()
-    fbStep = gameFB.GetFBStep()
-    if fbStep == FB_Step_LeaveTime:
-        PlayerControl.PlayerLeaveFB(curPlayer)
-        return
-    
-    reqMapID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqFBMapID)
-    lineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqFBFuncLine)
-    if not FBCommon.GetHadSetFBPropertyMark(): #此处副本属性和功能线路ID不同,故分开设置
-        propertyMark = curPlayer.GetOfficialRank() if lineID else lineID #小境界0 大境界为境界等级
-        GameWorld.GetGameFB().SetGameFBDict(ChConfig.Map_FBDict_PropertyMark, propertyMark + 1)
-        PlayerControl.SetFBFuncLineID(curPlayer, reqMapID, lineID)
-        #FBCommon.SetFBPropertyMark(lineID)
-        #if lineID == 0:
-        FBCommon.SetFBStep(FB_Step_MapPrepare, tick)
-
-            
-    
-    
-    fbPlayerCnt = gameFB.GetGameFBDictByKey(ChConfig.Def_FB_NPCStrengthenPlayerCnt)
-    DuJieFBCfg = GetRealmFBTimeCfg()
-    if not gameFB.GetGameFBDictByKey(DuJieFB_LeaderPlayerID):
-        #重置属性加成
-         
-        for attrID in DuJieFBCfg[Def_HelpAddAttrID]:
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmFBAttrAdd % attrID, 0)
-        
-        GameWorld.DebugLog('玩家进入副本')
-        
-        #if lineID == 0 or fbPlayerCnt == 1 or curPlayer.GetTeamLV() == IPY_GameWorld.tmlLeader:
-        __SetFBLeaderPlayer(curPlayer)
-#            if gameFB.GetFBStep() == FB_Step_Fighting:
-#                __OnDuJieFBStart(tick)
-    fbStep = gameFB.GetFBStep()
-    
-    if fbStep == FB_Step_MapPrepare:
-        #初始化并通知等待倒计时
-        __EnterFBInPrepare(curPlayer, DuJieFBCfg[Def_Time_MapPrepare] * 1000, gameFB, tick)
-        
-    elif fbStep == FB_Step_Fighting:
-        #通知进入时间
-        notifyTick = max(DuJieFBCfg[Def_Time_Fight] * 1000 - (tick - gameFB.GetFBStepTick()), 0)
-        curPlayer.Sync_TimeTick(IPY_GameWorld.tttTowerTake, 0, notifyTick, True)
-        #__UpdDuJieFBStar(tick, True)
-
-    DoFBHelp(curPlayer, tick)
-    
-    return
-
-## 召唤助战完成
-def OnCallHelpBattleOK(curPlayer, tick):
-    lineID = 1 if FBCommon.GetFBPropertyMark() else 0
-    EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_DuJie, lineID, ChConfig.CME_Log_Start, 0)
-    DuJieFBCfg = GetRealmFBTimeCfg()
-    FBCommon.SetFBStep(FB_Step_MapPrepare, tick)
-    __EnterFBInPrepare(curPlayer, DuJieFBCfg[Def_Time_MapPrepare] * 1000, GameWorld.GetGameFB(), tick)
-    return
-
-def __SetFBLeaderPlayer(curPlayer):
-    ##设置副本渡劫主人
-    gameFB = GameWorld.GetGameFB()
-    gameFB.SetGameFBDict(DuJieFB_LeaderPlayerID, curPlayer.GetPlayerID())
-    gameFB.SetGameFBDict(DuJieFB_RealmLV, curPlayer.GetOfficialRank())
-    PlayerPrestigeSys.SyncRealmFBState(curPlayer)
-    
-    FBCommon.UpdateFBEnterTick(curPlayer)
-    #请求护法
-    OnGetMemberForHelpDujie(curPlayer, False)
-    return
-
-##副本定时器
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 副本定时器
-def OnProcess(tick):
-    fbStep = GameWorld.GetGameFB().GetFBStep()
-    
-    if fbStep == FB_Step_MapPrepare:
-        __DoLogic_MapPrepare(tick)
-    elif fbStep == FB_Step_Fighting:
-        __DoLogic_MapFighting(tick)
-    elif fbStep == FB_Step_LeaveTime:
-        __DoLogic_MapLeave(tick)
-    return
-
-
-## 更新当前副本星级
-def __UpdDuJieFBStar(tick, isForce=False):
-    return
-    gameFB = GameWorld.GetGameFB()
-    curStar = gameFB.GetGameFBDictByKey(DuJieFB_Star)
-    if curStar == 1:
-        return curStar
-    
-    useSecond = int(math.ceil((tick - gameFB.GetFBStepTick()) / 1000.0))
-    DuJieFBCfg = GetRealmFBTimeCfg()
-    starTimeList = DuJieFBCfg[Def_StarTime]
-    diffSecond = 0
-    updStar = 1 # 默认至少1星
-    for star, starTime in enumerate(starTimeList, 2):
-        if useSecond <= starTime:
-            updStar = star
-            diffSecond = starTime - useSecond
-            
-    if curStar == updStar and not isForce:
-        return curStar
-        
-    gameFB.SetGameFBDict(DuJieFB_Star, updStar)
-    
-    GameWorld.DebugLog("__UpdDuJieFBStar useSecond=%s,curStar=%s,updStar=%s, diffSecond=%s" 
-                       % (useSecond, curStar, updStar, diffSecond))
-    
-    
-    playerManager = GameWorld.GetMapCopyPlayerManager()
-    for index in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(index)
-        if not curPlayer:
-            continue
-        DoFBHelp(curPlayer, tick)
-        if updStar != 1:
-            curPlayer.Sync_TimeTick(IPY_GameWorld.tttFlagTake, 0, diffSecond * 1000, True)
-            
-    return updStar
-
-
-def __EnterFBInPrepare(curPlayer, downTime, gameFB, tick, notifyEff=False):
-    #通知准备倒计时
-    notifyTick = max(downTime - (tick - gameFB.GetFBStepTick()), 0)
-    curPlayer.Sync_TimeTick(IPY_GameWorld.tttWaitStart, 0, notifyTick, True)
-    
-    if notifyEff:
-        curPlayer.Sync_TimeTick(IPY_GameWorld.tttAddUpTime, 0, notifyTick, True)
-    return
-
-
-def __DoLogic_MapPrepare(tick):
-    invadeCfg = GetRealmFBTimeCfg()
-    if tick - GameWorld.GetGameFB().GetFBStepTick() < invadeCfg[Def_Time_MapPrepare] * 1000:
-        return
-    FBCommon.SetFBStep(FB_Step_Fighting, tick)
-    __OnDuJieFBStart(tick)
-    return
-
-
-def __DoLogic_MapFighting(tick):
-    invadeCfg = GetRealmFBTimeCfg()
-    
-    if tick - GameWorld.GetGameFB().GetFBStepTick() >= invadeCfg[Def_Time_Fight] * 1000:
-        __DoDoJieFBOver(False, tick)
-        return
-    __UpdDuJieFBStar(tick)
-    return
-
-def __DoLogic_MapLeave(tick):
-    invadeCfg = GetRealmFBTimeCfg()
-    if tick - GameWorld.GetGameFB().GetFBStepTick() < invadeCfg[Def_Time_Leave] * 1000:
-        return
-    # 时间到,踢出还在副本的玩家等...
-    #FBCommon.DoLogic_FBKickAllPlayer()
-    return
-
-def __OnDuJieFBStart(tick):
-    lineID = 1 if FBCommon.GetFBPropertyMark() else 0
-    if not GameWorld.GetGameFB().GetGameFBDictByKey(DuJieFB_LeaderPlayerID):
-        findLeader = False
-        playerManager = GameWorld.GetMapCopyPlayerManager()
-        for index in xrange(playerManager.GetPlayerCount()):
-            curPlayer = playerManager.GetPlayerByIndex(index)
-            if not curPlayer:
-                continue
-            if curPlayer.GetTeamLV() == IPY_GameWorld.tmlLeader or (lineID == 1 and curPlayer.GetTeamID() == 0):
-                __SetFBLeaderPlayer(curPlayer)
-                findLeader = True
-                break
-        if not findLeader:
-            GameWorld.Log('    准备倒计时已过,队长仍未进入副本!!! ')
-            FBCommon.DoLogic_FBKickAllPlayer()
-            return
-    DuJieFBCfg = GetRealmFBTimeCfg()
-    bossID = GetDuJieBossID()
-    if not bossID:
-        return
-    mapID = GameWorld.GetMap().GetMapID()
-    
-    refreshBossMark = FBCommon.GetFBLineRefreshNPC(mapID, lineID)
-    NPCCustomRefresh.SetNPCRefresh(refreshBossMark, [bossID])
-
-    # 通知开始
-    FBCommon.Sync_Player_TimeTick(IPY_GameWorld.tttTowerTake, DuJieFBCfg[Def_Time_Fight] * 1000) 
-    FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp)
-    __UpdDuJieFBStar(tick)
-    return
-
-
-def __DoDoJieFBOver(isPass, tick):
-    # 副本结束逻辑
-    gameFB = GameWorld.GetGameFB()
-    if gameFB.GetFBStep() != FB_Step_Fighting:
-        return
-    GameWorld.DebugLog("处理渡劫副本结束逻辑")
-    invadeCfg = GetRealmFBTimeCfg()
-    costTime = tick - gameFB.GetFBStepTick()
-    FBCommon.SetFBStep(FB_Step_LeaveTime, tick)
-
-    leaderPlayerID = gameFB.GetGameFBDictByKey(DuJieFB_LeaderPlayerID)
-    copyMapPlayerManager = GameWorld.GetMapCopyPlayerManager()
-    leaderPlayer = copyMapPlayerManager.FindPlayerByID(leaderPlayerID)
-    if not leaderPlayer:
-        #渡劫的人不在则算失败
-        isPass = False
-    
-    # 通知GameServer副本结束
-    msgStr = str([isPass, leaderPlayerID])
-    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'DuJieFBOver', msgStr, len(msgStr))
-
-    curStar = gameFB.GetGameFBDictByKey(DuJieFB_Star)
-    realmLV = gameFB.GetGameFBDictByKey(DuJieFB_RealmLV)
-
-    FBPropertyMark = FBCommon.GetFBPropertyMark()
-    lineID = 1 if FBPropertyMark else 0
-    leaveTick = invadeCfg[Def_Time_Leave] * 1000
-    overDict = {FBCommon.Over_costTime:costTime,FBCommon.Over_grade:curStar, FBCommon.Over_leaderID:leaderPlayerID}
-    playerCnt = copyMapPlayerManager.GetPlayerCount()
-    for i in xrange(playerCnt):
-        
-        curPlayer = copyMapPlayerManager.GetPlayerByIndex(i)
-        
-        if curPlayer == None or curPlayer.IsEmpty():
-            continue
-#        isHelpFight = lineID == 1 and curPlayer.GetPlayerID() != leaderPlayerID
-#        joinType = FBCommon.GetFBJoinType(curPlayer, isHelpFight)
-        EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_DuJie, lineID, ChConfig.CME_Log_End, 0, isPass)
-    
-        curPlayer.Sync_TimeTick(IPY_GameWorld.tttLeaveMap, 0, leaveTick, True)
-        if isPass and leaderPlayer:
-            if curPlayer.GetPlayerID() == leaderPlayerID:
-                #渡劫通过处理
-                PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_Dujie, 1)
-                #清除CD
-                FBCommon.SetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % ChConfig.Def_FBMapID_DuJie, 0)
-                FBCommon.SyncFBEnterTick(curPlayer)
-            
-            
-        FBCommon.NotifyFBOver(curPlayer, ChConfig.Def_FBMapID_DuJie, lineID, isPass, overDict)
-    
-    return
-
-def __GiveTeamAward(curPlayer, leaderPlayer, realmIpyData, curStar):
-    #帮忙打的给奖励
-    if not realmIpyData:
-        return
-    teamAwardDict = realmIpyData.GetTeamAward()
-    if not teamAwardDict:
-        return
-    
-    prizeItemList = teamAwardDict.get(curStar, [])
-    needSpace = len(prizeItemList)
-    emptySpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
-    isSendMail = int(needSpace > emptySpace) # 是否发送邮件
-    if isSendMail:
-        PlayerControl.SendMailByKey("RealmFBTeam", [curPlayer.GetPlayerID()], prizeItemList, [leaderPlayer.GetPlayerName()])
-        GameWorld.DebugLog("背包空间不够,发送邮件: mailItemList=%s" % str(prizeItemList), curPlayer.GetPlayerID())
-    else:
-        for itemID, itemCnt, isBind in prizeItemList:
-            ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem],
-                                            event=["Dojie", False, {}])
-    return
-
-##获得副本帮助信息
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 无意义
-# @remarks 用于通知阵营比分条
-def DoFBHelp(curPlayer, tick, helpDict={}):
-
-    gameFB = GameWorld.GetGameFB()
-    leaderPlayerID = gameFB.GetGameFBDictByKey(DuJieFB_LeaderPlayerID)
-#    curStar = gameFB.GetGameFBDictByKey(DuJieFB_Star)
-    helpDict[FBCommon.Help_leaderID] = leaderPlayerID
-    FBCommon.Notify_FBHelp(curPlayer, helpDict)
-    return
-
-def DoFB_Npc_KillNPC(attacker, curNPC, tick):
-    __FBNPCOnKilled(curNPC, tick)
-    return
-
-## 执行副本杀怪逻辑
-#  @param curPlayer 杀怪的人
-#  @param curNPC 被杀的怪
-#  @param tick 当前时间
-#  @return None
-def DoFB_Player_KillNPC(curPlayer, curNPC, tick):
-    __FBNPCOnKilled(curNPC, tick)
-    return
-
-def __FBNPCOnKilled(curNPC, tick):
-    bossID = curNPC.GetNPCID()
-    if bossID != GetDuJieBossID():
-        return
-    GameWorld.DebugLog('渡劫已被击杀!')
-    
-#    # 全服广播
-#    PlayerControl.WorldNotify(0, "jiazu_liubo_202580", [curPlayer.GetFamilyName(), mapID, bossID])
-    __DoDoJieFBOver(True, tick)
-    return
-## 检查是否可攻击, 主判定不可攻击的情况,其他逻辑由外层决定
-#  @param attacker 攻击方
-#  @param defender 防守方
-#  @return bool
-def CheckCanAttackTagObjInFB(attacker, defender):
-    gameFB = GameWorld.GetGameFB()
-    if gameFB.GetFBStep() != FB_Step_Fighting:
-        return False
-    return True
-
-## 副本行为
-#  @param curPlayer 玩家
-#  @param actionType 行为类型
-#  @param actionInfo 行为信息
-#  @param tick 当前时间
-#  @return None
-def DoFBAction(curPlayer, actionType, actionInfo, tick):
-    
-    if curPlayer.GetPlayerID() != GameWorld.GetGameFB().GetGameFBDictByKey(DuJieFB_LeaderPlayerID):
-        return
-    #验证间隔
-    if tick - curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_DuJieInspire) < IpyGameDataPY.GetFuncCfg('RealmFBHelpAttr', 3):
-        #没到间隔
-        GameWorld.DebugLog("点击鼓舞间隔")
-        return
-    curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_DuJieInspire, tick)
-    OnGetMemberForHelpDujie(curPlayer, True)
-    
-    return
-
-def OnGetMemberForHelpDujie(curPlayer, isInspire):
-    #向盟友寻求守护
-#    if curPlayer.GetFamilyID() <= 0:
-#        GameWorld.DebugLog("没有战盟,不能请求守护!")
-#        return
-    return
-    realmLV = GameWorld.GetGameFB().GetGameFBDictByKey(DuJieFB_RealmLV)
-    realmIpyData = PlayerPrestigeSys.GetRealmIpyData(realmLV)
-    if not realmIpyData:
-        return
-    
-    GameWorld.DebugLog("向盟友寻求渡劫守护!")
-    atkAdd = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmFBAttrAdd % ShareDefine.Def_Effect_BaseAtkAddPer)
-    msgStr = str([atkAdd, isInspire])
-    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'GetMemberForHelpDujie', msgStr, len(msgStr))
-    return
-
-
-
-def OnGetDuJieHelpInfo(curPlayer, helpInfo):
-    #收到守护信息 
-    realmFBHelpAttrDict = IpyGameDataPY.GetFuncEvalCfg('RealmFBHelpAttr')
-    totalAttrDict = {}
-    fbhelpInfo = ''
-    for helpType, name in helpInfo:
-        attrDict = realmFBHelpAttrDict.get(str(helpType), {})
-        for attrID, attrValue in attrDict.items():
-            totalAttrDict[attrID] = totalAttrDict.get(attrID, 0) + attrValue
-        fbhelpInfo +='%s|%s,' % (helpType, name)
-        
-    for attrID, attrValue in totalAttrDict.items():
-        if int(attrID) in GetRealmFBTimeCfg()[Def_HelpAddAttrID]:
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmFBAttrAdd % attrID, attrValue)
-
-    #刷属性
-    PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrByBuff()
-    
-    #副本帮助信息
-    if fbhelpInfo:
-        fbhelpInfo = fbhelpInfo[:-1]
-    helpDict = {'helpInfo':fbhelpInfo}
-    DoFBHelp(curPlayer, 0, helpDict)
-    return
-
-def CalcDujieFBAttrAdd(curPlayer, allAttrList):
-    #护法属性计算
-    if FBCommon.GetRecordMapID(curPlayer.GetMapID()) != ChConfig.Def_FBMapID_DuJie:
-        return
-    leaderPlayerID = GameWorld.GetGameFB().GetGameFBDictByKey(DuJieFB_LeaderPlayerID)
-    if curPlayer.GetID() != leaderPlayerID:
-        return
-#    fbStep = GameWorld.GetGameFB().GetFBStep()
-#    if fbStep != FB_Step_Fighting:
-#        return
-    fbcfg = GetRealmFBTimeCfg()
-    if not fbcfg:
-        return
-    GameWorld.DebugLog('护法属性计算 allAttrList=%s'%allAttrList)
-    for attrID in GetRealmFBTimeCfg()[Def_HelpAddAttrID]:
-        attrValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmFBAttrAdd % attrID)
-        PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
-    
-    GameWorld.DebugLog('护法属性计算结果 allAttrList=%s'%allAttrList)
-    return
-## 是否副本复活
-#  @param None
-#  @return 是否副本复活
-def OnPlayerReborn():
-    return True
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 0a9894f..c1e5011 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -166,11 +166,6 @@
                         ("DWORD", "LVMax", 0),
                         ("list", "AddAttrType", 0),
                         ("list", "AddAttrNum", 0),
-                        ("DWORD", "BuffID", 0),
-                        ("DWORD", "ExpRate", 0),
-                        ("DWORD", "ExpLimit", 0),
-                        ("dict", "LearnSkillIDInfo", 0),
-                        ("BYTE", "AddFreePoint", 0),
                         ),
 
                 "RealmLVUPTask":(
@@ -2870,12 +2865,7 @@
     def GetLvLarge(self): return self.attrTuple[1] # 大境界 BYTE
     def GetLVMax(self): return self.attrTuple[2] # 等级上限 DWORD
     def GetAddAttrType(self): return self.attrTuple[3] # 境界加成属性类型 list
-    def GetAddAttrNum(self): return self.attrTuple[4] # 境界加成属性值 list
-    def GetBuffID(self): return self.attrTuple[5] # 给全服在线玩家增加buff DWORD
-    def GetExpRate(self): return self.attrTuple[6] # 修为池经验速率 DWORD
-    def GetExpLimit(self): return self.attrTuple[7] # 修为池经验上限 DWORD
-    def GetLearnSkillIDInfo(self): return self.attrTuple[8] # 学习技能ID信息 {"职业":[技能ID, ...], ...} dict
-    def GetAddFreePoint(self): return self.attrTuple[9] # 增加自由属性点 BYTE
+    def GetAddAttrNum(self): return self.attrTuple[4] # 境界加成属性值 list
 
 # 境界进阶任务表
 class IPY_RealmLVUPTask():
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_AddRealmExpRate.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_AddRealmExpRate.py
deleted file mode 100644
index 56164ea..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_AddRealmExpRate.py
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package UseItem.Item_AddRealmExpRate
-#
-# @todo:增加聚灵效率
-# @author xdh
-# @date 2019-5-5
-# @version 1.0
-#
-# 详细描述: 增加聚灵效率
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2019-5-5 12:00"""
-#-------------------------------------------------------------------------------
-
-import PlayerControl
-import PlayerPrestigeSys
-import ItemCommon
-import ChConfig
-
-def BatchUseItem(curPlayer, curRoleItem, tick, useCnt, exData):
-    ##批量使用物品
-    #itemTypeID = curRoleItem.GetItemTypeID()
-    curEff = curRoleItem.GetEffectByIndex(0)
-    addTime = curEff.GetEffectValue(0) * useCnt
-    addRate = curEff.GetEffectValue(1)
-    PlayerPrestigeSys.AddRealmExpBuffTime(curPlayer, addTime, addRate)
-    
-    #PlayerControl.NotifyCode(curPlayer, 'UseItem_1', [itemTypeID, mwID, addExp])
-    ItemCommon.DelItem(curPlayer, curRoleItem, useCnt, True, isForceDR=True)
-    return True, useCnt
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
index 89c5afb..afd4852 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -5017,7 +5017,7 @@
                 PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_KillNPC)
                 PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_KillNPC)
             PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillSpecificNPC, 1, [npcID])
-        PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_KillNPC, 1)
+        #PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_KillNPC, 1)
         
         if ChConfig.IsGameBoss(curNPC):
             OnPlayerKillBoss(curPlayer, npcID, mapID, False)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index c240c41..31c87e1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -5719,9 +5719,6 @@
     #自定义奖励
     elif rewardType == ChConfig.Def_RewardType_CustomAward:
         PlayerCustomAward.OnGetCustomAward(curPlayer, dataEx)
-    #境界修仙之路奖励
-    elif rewardType == ChConfig.Def_RewardType_RealmXXZL:
-        PlayerPrestigeSys.GetXXZLAward(curPlayer, dataEx)
     #境界渡劫任务条件奖励
     elif rewardType == ChConfig.Def_RewardType_RealmLVUpTask:
         PlayerPrestigeSys.GetRealmLVUpTaskAward(curPlayer, dataEx)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerChangeJob.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerChangeJob.py
index 5ecc842..49c485f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerChangeJob.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerChangeJob.py
@@ -105,7 +105,7 @@
     # 1.3 境界 - 被动技能
     for index in range(ipyDataMgr.GetRealmCount()):
         ipyData = ipyDataMgr.GetRealmByIndex(index)
-        LearnSkillIDInfo = ipyData.GetLearnSkillIDInfo()
+        LearnSkillIDInfo = {}
         if str(curJob) not in LearnSkillIDInfo:
             continue
         curJobLearnSkillIDList = LearnSkillIDInfo[str(curJob)]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index f8b3385..0214b9f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -3308,7 +3308,8 @@
     PlayerActTurntable.OnPlayerUseGold(curPlayer, type_Price, price)
     #轮回殿
     PlayerActLunhuidian.AddLunhuidianValue(curPlayer, PlayerActLunhuidian.AwardType_PayMoney, type_Price, price)
-    
+    if type_Price == ShareDefine.TYPE_Price_Xiantao:
+        PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_UseXiantao, price)
     unitPrice = price if quantity == 1 else int(math.ceil(price * 1.0 / quantity)) # 单价
     #reason_name = "Unknown" if not costType else costType
     reason_name = costType
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
index da793b3..4bd10bc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
@@ -15,45 +15,32 @@
 #"""Version = 2017-10-10 14:30"""
 #-------------------------------------------------------------------------------
 
-import ItemCommon
 import ItemControler
 import FBCommon
-import QuestCommon
 import GameFuncComm
 import PlayerControl
 import ChPyNetSendPack
 import NetPackCommon
-import IPY_GameWorld
 import IpyGameDataPY
 import ShareDefine
 import GameWorld
 import ChConfig
 import PlayerSuccess
-import ChEquip
 import PlayerBillboard
 import PlayerTongTianLing
-import PassiveBuffEffMng
 import PlayerGubao
-import EventShell
-import DataRecordPack
-import SkillCommon
 
-import time
 #------------------------------------------------------------------------------
 
 # 渡劫任务类型
 RealmTaskTypeList = (
 RealmTaskType_LV, # 等级 1
 RealmTaskType_PassMap, # 过关关卡 2
-RealmTaskType_KillNPC, # 击杀NPC 3
-RealmTaskType_LVUPItem, # 进阶丹 4
-RealmTaskType_Equip, # 基础装备明细 5
-RealmTaskType_Dujie, # 渡劫boss 6
-RealmTaskType_FinishMainTask, # 完成xx主线任务 7
-) = range(1, 1 + 7)
+RealmTaskType_UseXiantao, # 消耗战锤 3
+) = range(1, 1 + 3)
 
 # 需要记录任务值的任务类型列表
-NeedTaskValueTypeList = [RealmTaskType_KillNPC, RealmTaskType_Dujie]
+NeedTaskValueTypeList = [RealmTaskType_UseXiantao]
 
 def DoOfficialOpen(curPlayer):
     #功能开启
@@ -64,169 +51,14 @@
 
 
 def OnLogin(curPlayer):
-    DoRealmVersionStateLogic(curPlayer)
-    SyncRealmFBState(curPlayer, isAll=True)
-    UpdateRealmExp(curPlayer, False)
-    NotifyRealmExpInfo(curPlayer)
+    SyncRealmInfo(curPlayer, isAll=True)
     if not curPlayer.GetOfficialRank():
         curPlayer.SetOfficialRank(1)
     return
 
-def DoRealmVersionStateLogic(curPlayer):
-    ## 执行版本变更逻辑,仅触发一次,之后可删除
-    state = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmVersionState)
-    if state:
-        GameWorld.DebugLog("境界版本变更逻辑已重置过!", curPlayer.GetPlayerID())
-        return
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmVersionState, 1)
-    realmLV = curPlayer.GetOfficialRank()
-    if realmLV <= 1:
-        # 新号不处理
-        return
-    playerID = curPlayer.GetPlayerID()
-    GameWorld.Log("======================== 执行境界版本变更重置逻辑 =======================", playerID)
-    
-    # 重置境界
-    curPlayer.SetOfficialRank(1)
-    
-    # 返还境界丹
-    returnItemID = IpyGameDataPY.GetFuncCfg("RealmLvUP", 1)
-    returnCount = 0
-    lvToRealmLV = -1 # 重置后当前玩家等级对应可提升到的境界等级
-    playerLV = curPlayer.GetLV()
-    ipyDataMgr = IpyGameDataPY.IPY_Data()
-    for index in range(ipyDataMgr.GetRealmCount()):
-        realmIpyData = ipyDataMgr.GetRealmByIndex(index)
-        lvToRealmLV = realmIpyData.GetLv()
-        if playerLV < realmIpyData.GetLVMax():
-            break
-        
-    # 返还到可升级到的境界等级前一级
-    for index in range(ipyDataMgr.GetRealmLVUPTaskCount()):
-        taskIpyData = ipyDataMgr.GetRealmLVUPTaskByIndex(index)
-        if taskIpyData.GetLv() >= lvToRealmLV:
-            break
-        taskType = taskIpyData.GetTaskType()
-        if taskType != RealmTaskType_LVUPItem:
-            continue
-        needValueList = taskIpyData.GetNeedValueList()
-        needValueA = GetRealmTaskNeedValue(needValueList, 0)
-        returnCount += needValueA
-        
-    GameWorld.Log("境界等级: realmLV=%s,playerLV=%s,lvToRealmLV=%s,returnItemID=%s,returnCount=%s" 
-                  % (realmLV, playerLV, lvToRealmLV, returnItemID, returnCount), playerID)
-    
-    # 重置灵根点,扣除赠送灵根点
-    linggenPointDel = 0
-    linggenPointLVAdd = 0
-    linggenCntList = IpyGameDataPY.GetFuncEvalCfg("RealmVersion", 2)
-    for rLV, lgPoint in enumerate(linggenCntList):
-        if rLV > realmLV:
-            break
-        linggenPointDel += lgPoint
-        linggenPointLVAdd += lgPoint
-        
-    # 古宝效果赠送灵根点
-    linggenPointGubaoAdd = 0
-    resetGubaoEffValueKeyList = []
-    effType = PlayerGubao.GubaoEffType_RealmLVAddLinggen
-    ipyDataMgr = IpyGameDataPY.IPY_Data()
-    for index in range(ipyDataMgr.GetGubaoCount()):
-        ipyData = ipyDataMgr.GetGubaoByIndex(index)
-        gubaoID = ipyData.GetGubaoID()
-        addFreePointAlready = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType))
-        if not addFreePointAlready:
-            continue
-        resetGubaoEffValueKeyList.append(ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType))
-        linggenPointDel += addFreePointAlready
-        linggenPointGubaoAdd += addFreePointAlready
-        
-    freePointBef = curPlayer.GetFreePoint()
-    linggenPointTotalBef = freePointBef
-    addPointDict = {}
-    ipyDataMgr = IpyGameDataPY.IPY_Data()
-    for index in range(ipyDataMgr.GetRolePointCount()):
-        linggenID = ipyDataMgr.GetRolePointByIndex(index).GetAttrID()
-        linggenPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AddPointValue % linggenID)
-        addPointDict[linggenID] = linggenPoint
-        linggenPointTotalBef += linggenPoint
-    GameWorld.Log("重置前灵根点: freePointBef=%s,linggenPointTotalBef=%s,addPointDict=%s" % (freePointBef, linggenPointTotalBef, addPointDict), playerID)
-    
-    if linggenPointDel:
-        import Item_ResetAttrPoint
-        Item_ResetAttrPoint.DoResetAttrPoint(curPlayer, 0, 0)
-        updFreePoint = max(0, curPlayer.GetFreePoint() - linggenPointDel)
-        curPlayer.SetFreePoint(updFreePoint)
-        for resetKey in resetGubaoEffValueKeyList:
-            PlayerControl.NomalDictSetProperty(curPlayer, resetKey, 0)
-        GameWorld.Log("重置境界灵根点: linggenPointDel=%s,updFreePoint=%s,linggenPointLVAdd=%s,linggenPointGubaoAdd=%s" % 
-                      (linggenPointDel, updFreePoint, linggenPointLVAdd, linggenPointGubaoAdd), playerID)
-        
-    # 删除境界技能
-    delSkillIDList = []
-    skillIDList = IpyGameDataPY.GetFuncEvalCfg("RealmVersion", 3)
-    skillManager = curPlayer.GetSkillManager()
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    for skillID in skillIDList:
-        if not skillManager.FindSkillBySkillID(skillID):
-            continue
-        skillManager.DeleteSkillBySkillID(skillID)
-        delSkillIDList.append(skillID)
-        playerControl.RefreshSkillFightPowerByDel(skillID)
-    playerControl.RefreshPlayerAttrState()
-    PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEffSet(curPlayer)
-    GameWorld.Log("重置境界删除技能ID列表: %s" % delSkillIDList, playerID)
-    
-    # 境界难度地图重置
-    PlayerControl.SetRealmDifficulty(curPlayer, 0)
-    GameWorld.Log("重置境界难度等级选择!", playerID)
-    
-    itemListEx = IpyGameDataPY.GetFuncEvalCfg("RealmVersion", 4)
-    mailItemList = [[returnItemID, returnCount, 0]] + itemListEx
-    paramList = [linggenPointDel, returnItemID, returnItemID, returnCount]
-    PlayerControl.SendMailByKey("RealmVersion", [playerID], mailItemList, paramList)
-    GameWorld.Log("重置境界邮件: mailItemList=%s" % mailItemList, playerID)
-    
-    # 记录流向
-    freePointAft = curPlayer.GetFreePoint()
-    linggenPointTotalAft = freePointAft
-    addPointDictAft = {}
-    ipyDataMgr = IpyGameDataPY.IPY_Data()
-    for index in range(ipyDataMgr.GetRolePointCount()):
-        linggenID = ipyDataMgr.GetRolePointByIndex(index).GetAttrID()
-        linggenPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AddPointValue % linggenID)
-        addPointDictAft[linggenID] = linggenPoint
-        linggenPointTotalAft += linggenPoint
-    GameWorld.Log("重置后灵根点: freePointAft=%s,linggenPointTotalAft=%s,addPointDictAft=%s" % (freePointAft, linggenPointTotalAft, addPointDictAft), playerID)
-    dataDict = {"realmLV":realmLV, "returnItemID":returnItemID, "returnCount":returnCount, 
-                "linggenPointDel":linggenPointDel, "linggenPointLVAdd":linggenPointLVAdd, "linggenPointGubaoAdd":linggenPointGubaoAdd,
-                "linggenPointTotalBef":linggenPointTotalBef, "linggenPointTotalAft":linggenPointTotalAft,
-                "freePointBef":freePointBef, "freePointAft":freePointAft, "addPointDict":addPointDict,
-                "delSkillIDList":delSkillIDList, "mailItemList":mailItemList}
-    DataRecordPack.SendEventPack("RealmVersionReset", dataDict, curPlayer)
-    GameWorld.Log("======================= 境界版本变更重置完毕 =======================", playerID)
-    return
-
 def GetRealmIpyData(realmLV): return IpyGameDataPY.GetIpyGameData("Realm", realmLV)
 
-
-#// A5 24 开启渡劫 #tagCMOpenRealmFB
-#
-#struct    tagCMOpenRealmFB
-#{
-#    tagHead        Head;
-#};
-def OpenRealmFB(index, clientData, tick):
-    return
-
-def GetXXZLAward(curPlayer, taskID):
-    ## 领取修仙之路奖励,废弃
-    return
-
-def SyncRealmFBState(curPlayer, taskIDList=None, isAll=False):
-    #通知客户端渡劫副本是否开启
-    #if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Official):
-    #    return
+def SyncRealmInfo(curPlayer, taskIDList=None, isAll=False):
     sendPack = ChPyNetSendPack.tagMCSyncRealmInfo()
     sendPack.TaskAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmTaskAwardState)
     sendPack.TaskValueList = []
@@ -248,11 +80,6 @@
     NetPackCommon.SendFakePack(curPlayer, sendPack)
     return
 
-
-## 计算爵位属性
-#  @param curPlayer 玩家
-#  @param allAttrList 属性列表
-#  @return None
 def CalcOfficialRankAttr(curPlayer):
     if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Official):
         return
@@ -272,11 +99,6 @@
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Prestige, allAttrList)
     return
 
-
-## 重刷所有属性
-#  @param curPlayer
-#  @param isForceRefresh:强制刷新排行榜
-#  @return 指定数据
 def RefreshOfficialAttr(curPlayer):
     CalcOfficialRankAttr(curPlayer)
     PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
@@ -307,7 +129,7 @@
         GameWorld.DebugLog("更新境界任务值: realmLV=%s,taskType=%s,taskID=%s,updValue=%s,curValue=%s,addValue=%s" 
                            % (realmLV, taskType, taskID, updValue, curValue, addValue), curPlayer.GetPlayerID())
     if syncTaskIDList:
-        SyncRealmFBState(curPlayer, taskIDList=syncTaskIDList)
+        SyncRealmInfo(curPlayer, taskIDList=syncTaskIDList)
     return
 
 def GetRealmTaskNeedValue(needValueList, index): return needValueList[index] if len(needValueList) > index else 0
@@ -356,72 +178,6 @@
                                % (realmLV, taskID, taskType, mapID, lineID), playerID)
             return
         
-    # 进阶丹
-    elif taskType == RealmTaskType_LVUPItem:
-        itemID = IpyGameDataPY.GetFuncCfg("RealmLvUP", 1)
-        needItemCount = needValueA
-        itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-        lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList({itemID:needItemCount}, itemPack)
-        if lackItemDict:
-            GameWorld.DebugLog('境界任务领奖,物品不足! realmLV=%s,taskID=%s,taskType=%s,lackItemDict=%s' 
-                               % (realmLV, taskID, taskType, lackItemDict), playerID)
-            return
-        ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "Realm")
-    
-    # 装备
-    elif taskType == RealmTaskType_Equip:
-        if len(needValueList) < 4:
-            GameWorld.DebugLog('境界任务领奖,装备条件配置错误,长度必须为4! realmLV=%s,taskID=%s,taskType=%s,needValueList=%s' 
-                               % (realmLV, taskID, taskType, needValueList), playerID)
-            return
-        classLV, star, isSuite, color = needValueList[:4]
-        needCount = needValueList[4] if len(needValueList) > 4 else len(ChConfig.EquipPlace_Base)
-        GameWorld.DebugLog('境界任务领奖,装备条件! realmLV=%s,taskID=%s,taskType=%s,classLV=%s,star=%s,isSuite=%s,color=%s,needCount=%s' 
-                           % (realmLV, taskID, taskType, classLV, star, isSuite, color, needCount), playerID)
-        curCount = 0
-        equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-        for place in ChConfig.EquipPlace_Base:
-            ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, place)
-            if not ipyData:
-                continue
-            gridIndex = ipyData.GetGridIndex()
-            curEquip = equipPack.GetAt(gridIndex)
-            if not ItemCommon.CheckItemCanUse(curEquip):
-                continue
-            curPartStar = ChEquip.GetEquipPartStar(curPlayer, gridIndex)
-            if curPartStar < star:
-                GameWorld.DebugLog('    装备位星级不足! realmLV=%s,taskID=%s,taskType=%s,classLV=%s,place=%s,curPartStar=%s < %s' 
-                                   % (realmLV, taskID, taskType, classLV, place, curPartStar, star), playerID)
-                continue
-            if isSuite and not curEquip.GetSuiteID():
-                GameWorld.DebugLog('    装备位非套装! realmLV=%s,taskID=%s,taskType=%s,classLV=%s,place=%s' 
-                                   % (realmLV, taskID, taskType, classLV, place), playerID)
-                continue
-            if curEquip.GetItemColor() < color:
-                GameWorld.DebugLog('    装备位品质不足! realmLV=%s,taskID=%s,taskType=%s,classLV=%s,place=%s,ItemColor=%s < %s' 
-                                   % (realmLV, taskID, taskType, classLV, place, curEquip.GetItemColor(), color), playerID)
-                continue
-            curCount += 1
-            
-        if curCount < needCount:
-            GameWorld.DebugLog('    境界任务所需装备数不足! realmLV=%s,taskID=%s,taskType=%s,classLV=%s,star=%s,isSuite=%s,color=%s,curCount=%s < %s' 
-                           % (realmLV, taskID, taskType, classLV, star, isSuite, color, curCount, needCount), playerID)
-            return
-        
-    # 渡劫
-    elif taskType == RealmTaskType_Dujie:
-        curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmTaskValue % taskID)
-        if not curValue:
-            GameWorld.DebugLog('境界任务领奖,渡劫未过关! realmLV=%s,taskID=%s,taskType=%s' % (realmLV, taskID, taskType), playerID)
-            return
-        
-    # 完成xx主线任务
-    elif taskType == RealmTaskType_FinishMainTask:
-        missionID = needValueA
-        if not QuestCommon.GetHadFinishMainMission(curPlayer, missionID):
-            GameWorld.DebugLog('境界任务领奖,主线任务未完成! realmLV=%s,taskID=%s,taskType=%s,missionID=%s' % (realmLV, taskID, taskType, missionID), playerID)
-            return
-        
     # 根据记录任务进度值    
     elif taskType in NeedTaskValueTypeList:
         curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmTaskValue % taskID)
@@ -438,7 +194,7 @@
     updAwardState = awardState|pow(2, taskID)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmTaskAwardState, updAwardState)
     GameWorld.DebugLog("境界渡劫领奖OK! realmLV=%s,taskID=%s,updAwardState=%s" % (realmLV, taskID, updAwardState), playerID)
-    SyncRealmFBState(curPlayer)
+    SyncRealmInfo(curPlayer)
     return
 
 def CheckRealmTaskFinishAll(curPlayer):
@@ -463,7 +219,6 @@
 #    tagHead        Head;
 #};
 def DoRealmLVUp(index, clientData, tick):
-    #升级境界
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
     curRealmLV = curPlayer.GetOfficialRank()
     realmIpyData = GetRealmIpyData(curRealmLV)
@@ -501,29 +256,11 @@
     PlayerControl.PlayerControl(curPlayer).PlayerLvUp()
     
     if needSys:
-        addBuffID = nextRealmIpyData.GetBuffID()
-        if addBuffID:
-            PlayerControl.WorldNotify(0, 'BigRealmUpSuccess', [curPlayer.GetName(), curPlayer.GetID(), nextRealmLv, IpyGameDataPY.GetFuncCfg('RadioExpRealm')])
-            msgStr = str(addBuffID)
-            GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'RealmUpAddBuff', msgStr, len(msgStr))
-        else:
-            PlayerControl.WorldNotify(0, 'RealmUpSuccess', [curPlayer.GetName(), curPlayer.GetID(), nextRealmLv])
-            
-    if SkillCommon.GivePlayerSkillByJobSkill(curPlayer, nextRealmIpyData.GetLearnSkillIDInfo()):
-        PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEffSet(curPlayer)
-        
-    addFreePoint = nextRealmIpyData.GetAddFreePoint()
-    if addFreePoint:
-        updFreePoint = curPlayer.GetFreePoint() + addFreePoint
-        curPlayer.SetFreePoint(updFreePoint)
-        GameWorld.DebugLog("    境界阶级加灵根点: addFreePoint=%s,updFreePoint=%s" % (addFreePoint, updFreePoint))
+        PlayerControl.WorldNotify(0, 'RealmUpSuccess', [curPlayer.GetName(), curPlayer.GetID(), nextRealmLv])
         
     RefreshOfficialAttr(curPlayer)
     GameFuncComm.DoFuncOpenLogic(curPlayer)
-    SyncRealmFBState(curPlayer, taskIDList=syncTaskIDList)
-    #更新修为速率
-    UpdateRealmExp(curPlayer, False, True)
-    NotifyRealmExpInfo(curPlayer)
+    SyncRealmInfo(curPlayer, taskIDList=syncTaskIDList)
     #境界提升成就
     PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_RealmlvUp, nextRealmLv)
     PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_RealmUp, 1)
@@ -531,102 +268,4 @@
     PlayerBillboard.UpdateRealmBillboard(curPlayer)
     # 记录开服活动
     #OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_RealmLV, nextRealmLv)
-    EventShell.EventRespons_RealmUp(curPlayer, nextRealmLv)
-    #流向
-    DataRecordPack.DR_RealmLVUp(curPlayer, nextRealmLv)
     return True
-
-#// A5 21 境界修为池提取 #tagCMTakeOutRealmExp
-#
-#struct    tagCMTakeOutRealmExp
-#{
-#    tagHead        Head;
-#};
-def OnTakeOutRealmExp(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    playerID = curPlayer.GetID()
-    curTotalRealmExp = UpdateRealmExp(curPlayer, False)
-    if curTotalRealmExp <= 0:
-        GameWorld.DebugLog('境界修为池提取 没有经验可提取', playerID)
-        return
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    playerControl.AddExp(curTotalRealmExp)
-    PlayerControl.NotifyCode(curPlayer, 'TakeOutRealmExp', [curTotalRealmExp])
-    #
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmExpBeginTime, int(time.time()))
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmExp, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmExpPoint, 0)
-
-    NotifyRealmExpInfo(curPlayer)
-    return
-
-
-def UpdateRealmExp(curPlayer, isNotify=True, isRealmLVUP=False):
-    ##更新境界修为池
-    curRealmLV = curPlayer.GetOfficialRank()
-    ipyData = GetRealmIpyData(curRealmLV)
-    if not ipyData:
-        return 0
-    if not ipyData.GetExpRate():
-        return 0
-    curTime = int(time.time())
-    beginTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpBeginTime)
-    if not beginTime:
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmExpBeginTime, curTime)
-        return 0
-    if isRealmLVUP:
-        ipyData = GetRealmIpyData(curRealmLV-1)
-            
-    curRealmExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExp)
-    curRealmExpPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpPoint)
-    curTotalExp = curRealmExpPoint * ChConfig.Def_PerPointValue + curRealmExp
-    if curTotalExp >= ipyData.GetExpLimit():
-        return curTotalExp
-    
-    passSeconds = curTime - beginTime
-    if passSeconds <= 0:
-        return curTotalExp
-    perRealmExpTime = IpyGameDataPY.GetFuncCfg('RealmExpTime')
-    curExpRate = ipyData.GetExpRate()
-    #buff增加的额外经验
-    buffRemainTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpBuffRemainTime)
-    buffAddRate = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpBuffAddRate)
-    
-    buffTime = min(buffRemainTime, passSeconds)
-    
-    addExp = buffTime /perRealmExpTime*(curExpRate*(ShareDefine.Def_MaxRateValue + buffAddRate)/ShareDefine.Def_MaxRateValue) + (passSeconds-buffTime)/perRealmExpTime*curExpRate
-    #addExp = passSeconds / perRealmExpTime * curExpRate
-    if addExp <= 0:
-        return curTotalExp
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmExpBeginTime, curTime)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmExpBuffRemainTime, buffRemainTime - buffTime)
-    
-    updTotalExp = min(curTotalExp + addExp, ipyData.GetExpLimit())
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmExp, updTotalExp % ChConfig.Def_PerPointValue)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmExpPoint, updTotalExp / ChConfig.Def_PerPointValue)
-    #通知
-    if isNotify:
-        NotifyRealmExpInfo(curPlayer)
-    return updTotalExp
-
-def AddRealmExpBuffTime(curPlayer, addTime, addRate):
-    ##增加会灵丹BUFF时间
-    UpdateRealmExp(curPlayer, False)
-    
-    remainTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpBuffRemainTime)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmExpBuffRemainTime, remainTime + addTime)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmExpBuffAddRate, addRate)
-    NotifyRealmExpInfo(curPlayer)
-    return
-
-def NotifyRealmExpInfo(curPlayer):
-    ##通知修为池信息
-    sendPack = ChPyNetSendPack.tagMCRealmExpInfo()
-    sendPack.BeginTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpBeginTime)
-    sendPack.BuffTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpBuffRemainTime)
-    sendPack.BuffAddRate = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpBuffAddRate)
-    sendPack.CurExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExp)
-    sendPack.CurExpPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpPoint)
-    NetPackCommon.SendFakePack(curPlayer, sendPack)
-    return
-

--
Gitblit v1.8.0