From 8305e47be942c376430044332780e6e69a3c7a7f Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期一, 28 一月 2019 10:40:46 +0800
Subject: [PATCH] 6077 【后端】【1.5.200】新增一个仙界盛典(特殊版本)活动

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerNewFairyCeremony.py                   |  321 +++++++++++++++++++++++++++++++++++
 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py                                |   17 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py                |    7 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py                                     |    9 
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerNewFairyCeremony.py                                        |  109 ++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py                                 |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py    |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py                           |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py  |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py                        |    2 
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py                                                      |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py          |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py         |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py                      |    2 
 ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py                                                             |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py                                 |   10 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py                               |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py                                   |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GodArea.py      |    2 
 ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py                                                          |    9 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py                            |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py                       |    6 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                                        |   13 +
 24 files changed, 520 insertions(+), 16 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py b/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
index e4dbbe7..c96a5cf 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
@@ -582,6 +582,7 @@
             ShareDefine.Def_BT_Campaign_Recharge        : 100,           #累计充值(开服活动榜)
             ShareDefine.Def_BT_Campaign_PetLV           : 100,           #灵宠等级(开服活动榜)  
             ShareDefine.Def_BT_FCCostGold               : 5,             #消费排行榜(仙界盛典)
+            ShareDefine.Def_BT_NewFCCostGold            : 5,             #消费排行榜(仙界盛典)
             ShareDefine.Def_BT_FBHelpBattle             : 100,           #助战次数榜
             ShareDefine.Def_BT_ZhuXianTower             : 100,           #诛仙塔榜
             ShareDefine.Def_BT_HighLadder               : 1000,          #玩家天梯竞技场排行
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 2c0e374..09ea263 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -22732,7 +22732,7 @@
 class  tagMCFeastWeekPartyPlayerInfo(Structure):
     Head = tagHead()
     Count = 0    #(BYTE Count)
-    DayInfoList = list()    #(vector<tagMCWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
+    DayInfoList = list()    #(vector<tagMCFeastWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
     data = None
 
     def __init__(self):
@@ -22746,7 +22746,7 @@
         _pos = self.Head.ReadData(_lpData, _pos)
         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         for i in range(self.Count):
-            temDayInfoList = tagMCWeekPartyDayPlayerInfo()
+            temDayInfoList = tagMCFeastWeekPartyDayPlayerInfo()
             _pos = temDayInfoList.ReadData(_lpData, _pos)
             self.DayInfoList.append(temDayInfoList)
         return _pos
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
index 89d8e0a..87ed0f0 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
@@ -37,6 +37,7 @@
 import PlayerFamilySWRH
 import GameWorldBoss
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 import GameWorldProcess
 import ChPyNetSendPack
 import NetPackCommon
@@ -76,7 +77,11 @@
         ipyData = operationActionDict[ShareDefine.OperationActionName_FairyCeremony][0]
         if ipyData:
             PlayerFairyCeremony.Sync_OperationAction_FairyCeremony(ipyData, curPlayer)
-        
+    # 新仙界盛典活动进行中
+    if ShareDefine.OperationActionName_NewFairyCeremony in operationActionDict:
+        ipyData = operationActionDict[ShareDefine.OperationActionName_NewFairyCeremony][0]
+        if ipyData:
+            PlayerNewFairyCeremony.Sync_OperationAction_NewFairyCeremony(ipyData, curPlayer)
     # 多倍修行点活动进行中
     if ShareDefine.OperationActionName_RealmPoint in operationActionDict:
         ipyData = operationActionDict[ShareDefine.OperationActionName_RealmPoint][0]
@@ -455,7 +460,9 @@
             elif actName == ShareDefine.OperationActionName_FairyCeremony:
                 #重置仙界盛典
                 PlayerFairyCeremony.ResetFairyCeremony()
-            
+            elif actName == ShareDefine.OperationActionName_NewFairyCeremony:
+                #重置仙界盛典
+                PlayerNewFairyCeremony.ResetNewFairyCeremony()
             
                 
         if state >= 1 and actName in ShareDefine.NeedWorldLVOperationActNameList:
@@ -478,6 +485,12 @@
                 PlayerFairyCeremony.Sync_OperationAction_FairyCeremony(ipyData)
             if preState != state and state == 0:
                 PlayerFairyCeremony.OnFairyCeremonyEnd()
+        elif actName == ShareDefine.OperationActionName_NewFairyCeremony:
+            if isReload and ipyData:
+                PlayerNewFairyCeremony.Sync_OperationAction_NewFairyCeremony(ipyData)
+            if preState != state and state == 0:
+                PlayerNewFairyCeremony.OnNewFairyCeremonyEnd()
+        
         elif actName == ShareDefine.OperationActionName_RealmPoint:
             if isReload and ipyData:
                 Sync_OperationAction_RealmPoint(ipyData)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerNewFairyCeremony.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerNewFairyCeremony.py
new file mode 100644
index 0000000..77e34a0
--- /dev/null
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerNewFairyCeremony.py
@@ -0,0 +1,109 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+#-------------------------------------------------------------------------------
+#
+##@package Player.PlayerNewFairyCeremony
+#
+# @todo:新仙界盛典
+# @author xdh
+# @date 2018-07-23 16:50
+# @version 1.0
+#
+#
+# 详细描述: 新仙界盛典
+#
+#---------------------------------------------------------------------
+"""Version = 2018-07-23 16:50"""
+#---------------------------------------------------------------------
+
+import ChPyNetSendPack
+import GameWorld
+import PlayerDBGSEvent
+import ShareDefine
+import NetPackCommon
+import PlayerBillboard
+import IpyGameDataPY
+import PlayerCompensation
+
+(
+Def_FC_Recharge, #充值大礼
+Def_FC_Fireworks, #烟花
+Def_FC_Party, #全民来嗨
+Def_FC_RechargeRank, #绝版降临
+) = range(1, 5)
+
+def ResetNewFairyCeremony():
+    ##活动开始 重置排行榜信息
+    # 清除排行榜
+    
+    PlayerBillboard.ClearBillboardByIndex(ShareDefine.Def_BT_NewFCCostGold)
+    return
+
+def OnNewFairyCeremonyEnd():
+    #活动结束  绝版降临给奖励
+    billBoard = GameWorld.GetBillboard().FindBillboard(ShareDefine.Def_BT_NewFCCostGold)
+    if not billBoard:
+        return
+    worldLvNum = __GetFCWorldLVIndex(Def_FC_RechargeRank)
+    
+    billboardCnt = billBoard.GetCount()
+    
+    for index in range(0, billboardCnt):
+        ipyData = IpyGameDataPY.GetIpyGameData('UniquenessArrive', worldLvNum, index + 1)
+        if not ipyData:
+            break
+        objBillboard = billBoard.At(index)
+        playerID = objBillboard.GetID()
+        awardInfoDict = ipyData.GetAward()
+        job = objBillboard.GetType2() % 10
+        if str(job) not in awardInfoDict:
+            GameWorld.ErrLog('    绝版降临给奖励 UniquenessArrive 未配置该职业 job=%s' % job, playerID)
+            continue
+        
+        awardList = awardInfoDict[str(job)]
+        PlayerCompensation.SendMailByKey('CeremonyRank', [playerID], awardList, [objBillboard.GetName1(), index + 1])
+        
+    GameWorld.DebugLog('    活动结束  绝版降临给奖励  worldLvNum=%s, billboardCnt=%s' % (worldLvNum, billboardCnt))
+    return
+
+def __GetFCWorldLVIndex(fcType):
+    #获取活动世界等级档
+    playerFCWorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % ShareDefine.OperationActionName_NewFairyCeremony)
+    fcWorldlvDict = IpyGameDataPY.GetFuncEvalCfg('CeremonyWorldLv', 1, {})
+    if str(fcType) not in fcWorldlvDict:
+        return 0
+    worldLVIndex = 0
+    worldlvList = fcWorldlvDict[str(fcType)]
+    for index, lvinfo in enumerate(worldlvList):
+        minlv, maxlv = lvinfo
+        if minlv <= playerFCWorldLV <= maxlv:
+            worldLVIndex = index
+            break
+    return worldLVIndex
+
+def Sync_OperationAction_NewFairyCeremony(ipyData, curPlayer=None):
+    ## 通知新仙界盛典活动信息
+    if not ipyData:
+        return
+    
+    openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1
+    NewFairyCeremonyInfo = ChPyNetSendPack.tagGCNewFairyCeremonyInfo()
+    NewFairyCeremonyInfo.Clear()
+    NewFairyCeremonyInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
+    NewFairyCeremonyInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
+    NewFairyCeremonyInfo.WorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % ShareDefine.OperationActionName_NewFairyCeremony)
+    NewFairyCeremonyInfo.LimitLV = ipyData.GetLVLimit()
+    NewFairyCeremonyInfo.ResetType = ipyData.GetResetType()
+    if not curPlayer:
+        # 全服广播在线玩家
+        playerManager = GameWorld.GetPlayerManager()
+        for i in xrange(playerManager.GetPlayerCount()):
+            curPlayer = playerManager.GetPlayerByIndex(i)
+            if curPlayer == None or not curPlayer.GetInitOK():
+                continue
+            NetPackCommon.SendFakePack(curPlayer, NewFairyCeremonyInfo)
+    else:
+        NetPackCommon.SendFakePack(curPlayer, NewFairyCeremonyInfo)
+    return
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 0d747d6..adf7808 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -225,6 +225,7 @@
 OperationActionName_BossReborn = "ActBossReborn" # BOSS复活活动
 OperationActionName_FlashGiftbag = "ActFlashGiftbag" # 限时礼包活动
 OperationActionName_FairyCeremony = "ActFairyCeremony" # 仙界盛典活动
+OperationActionName_NewFairyCeremony = "ActNewFairyCeremony" # 仙界盛典活动
 OperationActionName_RealmPoint = "ActRealmPoint" # 多倍修行点活动
 OperationActionName_FlashSale = "ActFlashSale" # 限时抢购活动
 OperationActionName_WishingWell = "ActWishingWell" # 许愿池活动
@@ -240,10 +241,11 @@
                            OperationActionName_FlashGiftbag, OperationActionName_FairyCeremony,
                            OperationActionName_RealmPoint, OperationActionName_FlashSale,
                            OperationActionName_WishingWell, OperationActionName_TotalRecharge, 
-                           OperationActionName_WeekParty, OperationActionName_LoginAward, ] \
+                           OperationActionName_WeekParty, OperationActionName_LoginAward, 
+                           OperationActionName_NewFairyCeremony, ] \
                            + FeastOperationActionNameList
 #需要记录开启活动时的世界等级的运营活动
-NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell]
+NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell, OperationActionName_NewFairyCeremony]
 
 #活动信息字典key定义
 ActKey_ID = "ID" # 活动ID,唯一标识的ID,一般是活动开启的time值
@@ -606,6 +608,7 @@
     Def_BT_Campaign_PetLV,                    #灵宠等级(开服活动榜)
     
     Def_BT_ZhuXianTower,                      #诛仙塔榜
+    Def_BT_NewFCCostGold,                     #消费排行榜(新仙界盛典)
     
     Def_BT_HighLadder,                        #天梯竞技场排行
     Def_BT_HighLadder_Yester,                 #天梯竞技场昨日排行
@@ -621,7 +624,7 @@
     Def_BT_CostTeHuiLast,                     #消费特惠排行榜上一期
     
     Def_BT_Max,                               #排行榜最大类型
-) = range(0, 33 + 2) 
+) = range(0, 34 + 2) 
     
 #职业对应战力排行榜类型
 JobFightPowerBillboardDict = {
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 96ab222..f9b54c8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3714,6 +3714,15 @@
 Def_PDict_FCPartyAwardRecord = "FCPartyAwardRecord" #全民来嗨活动领奖记录
 Def_PDict_FCCostGold = "FCCostGold"  # 绝版降临总累计消费仙玉
 
+#新仙界盛典
+Def_PDict_NewFairyCeremonyID = "NewFairyCeremonyID"  # 玩家身上的仙界盛典活动ID,唯一标识,取活动开始日期time值
+Def_PDict_NewFCActionWorldLV = "NewFCActionWorldLV" #玩家身上的仙界盛典时的世界等级
+Def_PDict_NewFCRechargeState = "NewFCRechargeState"  # 充值大礼状态 0-不可领 1-可领 2-已领取
+Def_PDict_NewFCPartyCurCnt = "NewFCPartyCurCnt_%s" #全民来嗨活动当前完成次数 参数活动ID
+Def_PDict_NewFCPartyCurPoint = "NewFCPartyCurPoint" #全民来嗨活动当前总点数
+Def_PDict_NewFCPartyAwardRecord = "NewFCPartyAwardRecord" #全民来嗨活动领奖记录
+Def_PDict_NewFCCostGold = "NewFCCostGold"  # 绝版降临总累计消费仙玉
+
 #绑玉转盘
 Def_PDict_BindJadeWheelCurCnt = "BindJadeWheelCurCnt"  # 今日已转次数
 Def_PDict_BindJadeWheelHistoryCnt = "BindJadeWheelHistoryCnt"  # 历史已转次数
@@ -5195,7 +5204,9 @@
 Def_RewardType_WeekPartyAct, # 领取周狂欢活动奖励20
 Def_RewardType_WeekPartyPoint, # 领取周狂欢积分奖励21
 Def_RewardType_ActLoginAwardAct, # 领取登录奖励活动奖励22
-)= range(23)
+Def_RewardType_NewFairyCRecharge, # 新仙界盛典充值大礼23
+Def_RewardType_NewFairyCParty, # 新仙界盛典全民来嗨24
+)= range(25)
 
 
 #boss复活相关活动定义
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 2c0e374..09ea263 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -22732,7 +22732,7 @@
 class  tagMCFeastWeekPartyPlayerInfo(Structure):
     Head = tagHead()
     Count = 0    #(BYTE Count)
-    DayInfoList = list()    #(vector<tagMCWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
+    DayInfoList = list()    #(vector<tagMCFeastWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
     data = None
 
     def __init__(self):
@@ -22746,7 +22746,7 @@
         _pos = self.Head.ReadData(_lpData, _pos)
         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         for i in range(self.Count):
-            temDayInfoList = tagMCWeekPartyDayPlayerInfo()
+            temDayInfoList = tagMCFeastWeekPartyDayPlayerInfo()
             _pos = temDayInfoList.ReadData(_lpData, _pos)
             self.DayInfoList.append(temDayInfoList)
         return _pos
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py
index 37d46ab..e352709 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py
@@ -64,6 +64,7 @@
 import PlayerRune
 import GameFuncComm
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 import PlayerSpringSale
 import PyGameData
 
@@ -601,6 +602,9 @@
     SyncShoppingResult(curPlayer, itemIndex, clientBuyCount)
     if itemIndex in IpyGameDataPY.GetFuncEvalCfg('CeremonyFireParty', 1, {}).values():
         PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Fireworks, clientBuyCount)
+    if itemIndex in IpyGameDataPY.GetFuncEvalCfg('NewCeremonyFireParty', 1, {}).values():
+        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Fireworks, clientBuyCount)
+    
     return
 
 def GetShopJobItem(job, itemID, jobItemList):
@@ -645,7 +649,8 @@
     #烟花狂欢
     if itemIndex in IpyGameDataPY.GetFuncEvalCfg('CeremonyFireParty', 1, {}).values():
         return not PlayerFairyCeremony.IsCanBuyFireworks(curPlayer, itemIndex)
-    
+    if itemIndex in IpyGameDataPY.GetFuncEvalCfg('NewCeremonyFireParty', 1, {}).values():
+        return not PlayerNewFairyCeremony.IsCanBuyFireworks(curPlayer, itemIndex)
 #    if itemIndex in dict(IpyGameDataPY.GetFuncEvalCfg('SuperGiftTimeList')):
 #        return not CheckSuperGiftBuy(curPlayer, itemIndex)
     if shopNPCID == 16:#神秘限购
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py
index b93ef74..248ab4f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py
@@ -29,6 +29,7 @@
 import PlayerActivity
 import PlayerBossReborn
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 #------------------------------------------------------------------------------ 
 
 #获取金币祈愿奖励
@@ -165,6 +166,7 @@
     # 每日活动
     PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_Pray)
     PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Pray, 1)
+    PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Pray, 1)
     Sync_NotifyDataChange(curPlayer, [buyType])
     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 c613cd0..fd8f148 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
@@ -59,6 +59,7 @@
 import PlayerMagicWeapon
 import PlayerBossReborn
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 import PlayerWeekParty
 import PlayerHorse
 import FBCommon
@@ -5241,6 +5242,7 @@
         PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_TaskCRun, addCnt)
         PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_RunTask, addCnt)
         PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RunTask, addCnt)
+        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RunTask, addCnt)
         PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_RunTask, addCnt)
     elif missionType == QuestCommon.Def_Mission_Type_RunFamily:
         PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyRunMission, addCnt)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py
index 28778dd..4278b5a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py
@@ -32,6 +32,7 @@
 import PlayerSuccess
 import PlayerBossReborn
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 import PlayerWeekParty
 import ItemControler
 import GameFuncComm
@@ -186,6 +187,7 @@
         FBCommon.AddEnterFBCount(curPlayer, ChConfig.Def_FBMapID_BZZD)
         PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_XJMJ, 1)
         PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_XJMJ, 1)
+        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_XJMJ, 1)
         PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_XJMJ, 1)
         FBCommon.UpdateFBEnterTick(curPlayer)
         gameFB.SetPlayerGameFBDict(playerID, FBPlayerDict_EnterLV, playerLV)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py
index e90909c..ab4e88a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py
@@ -25,6 +25,7 @@
 import IpyGameDataPY
 import GameWorldProcess
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 import EventReport
 import PyGameData
 import ItemCommon
@@ -175,6 +176,7 @@
         PlayerFamily.AddFamilyActivity(curPlayer, ShareDefine.FamilyActive_Party)
         EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_FamilyParty, 0, ChConfig.CME_Log_Start)
         PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FamilyParty, 1)
+        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FamilyParty, 1)
     lineID = GameWorld.GetGameWorld().GetLineID()
     if lineID not in g_familyMapPlayerIDDict:
         g_familyMapPlayerIDDict[lineID] = []
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GodArea.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GodArea.py
index 628fdde..24b09d4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GodArea.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GodArea.py
@@ -23,6 +23,7 @@
 import PlayerControl
 import PlayerBossReborn
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 import PlayerWeekParty
 import EventReport
 import time
@@ -144,6 +145,7 @@
         EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_GodArea, 0, ChConfig.CME_Log_Start)
         PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_GodArea, 1)
         PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_GodArea, 1)
+        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_GodArea, 1)
         PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_GodArea, 1)
     elif __IsAngerFull(curPlayer):
         #怒气已满,退出副本
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py
index caff74d..4346259 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py
@@ -23,6 +23,7 @@
 import IpyGameDataPY
 import PlayerBossReborn
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 import ChConfig
 import ChPlayer
 import EventReport
@@ -175,6 +176,7 @@
     EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_PersonalBoss, 0, ChConfig.CME_Log_Start)
     PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_VIPBOSS, 1)
     PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, 1)
+    PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, 1)
     
     FBCommon.ClearFBNPC()
     
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py
index 591de6a..f1aece5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py
@@ -36,6 +36,7 @@
 import PlayerMagicWeapon
 import PlayerBossReborn
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 import PlayerWeekParty
 import EventReport
 
@@ -547,6 +548,7 @@
     PlayerMagicWeapon.SetMWPrivilegeData(curPlayer, ChConfig.MWPrivilege_SealDemonAddAttr, addCnt, True)
     PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_FMT, addCnt)
     PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FMT, addCnt)
+    PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FMT, addCnt)
     PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_FMT, addCnt)
     return prizeItemList
 
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 a082088..206b900 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -52,6 +52,7 @@
 import PlayerMagicWeapon
 import PlayerBossReborn
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 import PlayerWeekParty
 import FamilyRobBoss
 import IpyGameDataPY
@@ -2163,6 +2164,7 @@
         PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_WorldBOSS)
         PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_WorldBOSS, 1)
         PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_WorldBoss, 1)
+        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_WorldBoss, 1)
         PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_WorldBOSS, 1)
         
     if mapID == ChConfig.Def_FBMapID_BossHome:
@@ -2173,6 +2175,7 @@
         PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_BOSSHome)
         PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_BOSSHome, 1)
         PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1)
+        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1)
         PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_BOSSHome, 1)
     return
     
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 7ea7fff..605e94c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -102,6 +102,7 @@
 import PlayerActTotalRecharge
 import PlayerSpringSale
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 import CrossRealmPlayer
 import ChNetSendPack
 import FamilyRobBoss
@@ -711,6 +712,8 @@
     PlayerActLogin.OnLogin(curPlayer)
     # 仙界盛典活动
     PlayerFairyCeremony.OnLogin(curPlayer)
+    # 新仙界盛典活动
+    PlayerNewFairyCeremony.OnLogin(curPlayer)
     # 分支下载奖励记录通知
     SyncPackDownloadAward(curPlayer)
     # 登录触发功能开启(老号处理)
@@ -5344,7 +5347,12 @@
     # 领取登录奖励活动奖励
     elif rewardType == ChConfig.Def_RewardType_ActLoginAwardAct:
         PlayerActLogin.GetLoginAwardActionAward(curPlayer, dataEx, dataExStr)
-    
+    # 领取新仙界盛典充值大礼
+    elif rewardType == ChConfig.Def_RewardType_NewFairyCRecharge:
+        PlayerNewFairyCeremony.GetFCRechargeAward(curPlayer)
+    # 领取新仙界盛典全民来嗨
+    elif rewardType == ChConfig.Def_RewardType_NewFairyCParty:
+        PlayerNewFairyCeremony.GetFCPartyAward(curPlayer, dataEx)
     return
     
     
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
index 711919b..c0c7493 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -44,6 +44,7 @@
 import ShareDefine
 import PlayerFlashGiftbag
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 import PlayerGoldGift
 import PlayerActTotalRecharge
 import OpenServerCampaign
@@ -286,6 +287,7 @@
     #---充值成功后逻辑---
     #仙界盛典-充值大礼
     PlayerFairyCeremony.OnFCRecharge(curPlayer)
+    PlayerNewFairyCeremony.OnFCRecharge(curPlayer)
     PlayerGoldGift.DayChargeRedPackAward(curPlayer)
     #累积充值X元
     PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin/100)
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 92eeea5..0ded4d2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -84,6 +84,7 @@
 import PlayerCostRebate
 import GY_Query_CrossRealmReg
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 import PlayerCrossRealmPK
 import FunctionNPCCommon
 import CrossRealmPlayer
@@ -2971,6 +2972,7 @@
     PlayerCostRebate.AddCostRebateGold(curPlayer, costType, price, infoDict)
     # 绝版降临
     PlayerFairyCeremony.AddFCCostGold(curPlayer, costType, price)
+    PlayerNewFairyCeremony.AddFCCostGold(curPlayer, costType, price)
     # 消费VIP
 #    if costVIPGold < 0:
 #        costVIPGold = price
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
index d19a90d..884e9a0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -83,6 +83,7 @@
 import PlayerActLogin
 import PlayerFlashGiftbag
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 import PlayerRefineStove
 import PlayerFlashSale
 import PlayerWishingWell
@@ -1296,7 +1297,10 @@
             
             elif actionName == ShareDefine.OperationActionName_FairyCeremony:
                 PlayerFairyCeremony.RefreshOperationAction_FairyCeremony()
-            
+                
+            elif actionName == ShareDefine.OperationActionName_NewFairyCeremony:
+                PlayerNewFairyCeremony.RefreshOperationAction_NewFairyCeremony()
+                
             elif actionName == ShareDefine.OperationActionName_FlashSale:
                 PlayerFlashSale.RefreshflashSaleActionInfo()
                 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerNewFairyCeremony.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerNewFairyCeremony.py
new file mode 100644
index 0000000..bb5f56f
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerNewFairyCeremony.py
@@ -0,0 +1,321 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+#-------------------------------------------------------------------------------
+#
+##@package Player.PlayerNewFairyCeremony
+#
+# @todo:新仙界盛典
+# @author xdh
+# @date 2018-07-23 16:50
+# @version 1.0
+#
+#
+# 详细描述: 新仙界盛典
+#
+#---------------------------------------------------------------------
+"""Version = 2018-07-23 16:50"""
+#---------------------------------------------------------------------
+import IPY_GameWorld
+import GameWorld
+import ChConfig
+import IpyGameDataPY
+import PlayerControl
+import ItemControler
+import ChPyNetSendPack
+import NetPackCommon
+import ShareDefine
+import PyGameData
+import ItemCommon
+import PlayerBillboard
+
+(
+Def_FC_Recharge, #充值大礼
+Def_FC_Fireworks, #烟花
+Def_FC_Party, #全民来嗨
+Def_FC_RechargeRank, #绝版降临
+) = range(1, 5)
+
+
+def OnLogin(curPlayer):
+    isReset = __CheckPlayerNewFairyCeremonyAction(curPlayer)
+    if not isReset:
+        actCostRebateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_NewFairyCeremony, {})
+        # 活动中同步活动信息
+        if actCostRebateInfo.get(ShareDefine.ActKey_State):
+            SyncFCRechargeInfo(curPlayer)
+            SyncFCPartyInfo(curPlayer)
+    return
+
+def RefreshOperationAction_NewFairyCeremony():
+    playerManager = GameWorld.GetPlayerManager()
+    for i in xrange(playerManager.GetPlayerCount()):
+        curPlayer = playerManager.GetPlayerByIndex(i)
+        if curPlayer == None or not curPlayer.GetInitOK():
+            continue
+        __CheckPlayerNewFairyCeremonyAction(curPlayer)
+    return
+
+
+def __CheckPlayerNewFairyCeremonyAction(curPlayer):
+    ## 检查玩家新仙界盛典活动数据信息
+    playerID = curPlayer.GetPlayerID()
+    
+    actNewFairyCeremonyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_NewFairyCeremony, {})
+    NewFairyCeremonyID = actNewFairyCeremonyInfo.get(ShareDefine.ActKey_ID, 0)
+    state = actNewFairyCeremonyInfo.get(ShareDefine.ActKey_State, 0)
+    
+    playerNewFairyCeremonyID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFairyCeremonyID) # 玩家身上的活动ID
+    
+    # 活动ID 相同的话不处理
+    if NewFairyCeremonyID == playerNewFairyCeremonyID:
+        #GameWorld.DebugLog("新仙界盛典活动ID不变,不处理!", curPlayer.GetPlayerID())
+        return
+    actWorldLV = actNewFairyCeremonyInfo.get(ShareDefine.ActKey_WorldLV, 0)
+    playerFCWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCActionWorldLV)
+    GameWorld.DebugLog("新仙界盛典重置! NewFairyCeremonyID=%s,playerCostRebateID=%s,state=%s,ActWorldLV=%s,playerFCWorldLV=%s" 
+                       % (NewFairyCeremonyID, playerNewFairyCeremonyID, state, actWorldLV, playerFCWorldLV), playerID)
+    
+    # 未领取的奖励邮件发放
+    __SendNewFairyCeremonyMail(curPlayer, playerFCWorldLV)
+    
+    
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFairyCeremonyID, NewFairyCeremonyID)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCActionWorldLV, actWorldLV)
+    #重置充值大礼记录
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCRechargeState, 0)
+    SyncFCRechargeInfo(curPlayer)
+    #重置全民来嗨
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCPartyCurPoint, 0)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCPartyAwardRecord, 0)
+    for actid in ChConfig.PeoplePartyActIDList:
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCPartyCurCnt % actid, 0)
+    SyncFCPartyInfo(curPlayer)
+    #重置消费
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCCostGold, 0)
+    return True
+
+def __SendNewFairyCeremonyMail(curPlayer, playerFCWorldLV):
+    # 未领取的奖励邮件发放
+    #充值大礼
+    playerID = curPlayer.GetID()
+    playerName = curPlayer.GetName()
+    if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCRechargeState) == 1:
+        worldLvNum = __GetFCWorldLVIndex(curPlayer, Def_FC_Recharge)
+        awardInfoDict = IpyGameDataPY.GetFuncEvalCfg('NewCeremonyRecharge', 1, {})
+        if str(worldLvNum) not in awardInfoDict:
+            GameWorld.ErrLog('    邮件发放充值大礼奖励 CeremonyRecharge 未配置奖励 worldLvNum=%s' % worldLvNum)
+        else:
+            awardList = awardInfoDict[str(worldLvNum)]
+            PlayerControl.SendMailByKey('CeremonyPayPack', [playerID], awardList, [playerName])
+    #全民来嗨
+    worldLvNum = __GetFCWorldLVIndex(curPlayer, Def_FC_Party)
+    curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyCurPoint)
+    awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyAwardRecord)
+    ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('NewAllPeoplePartyAward', {'WorldLvNum':worldLvNum}, True)
+    if not ipyDataList:
+        GameWorld.ErrLog('    邮件发放全民来嗨奖励 AllPeoplePartyAward 未配置世界等级档 WorldLvNum=%s' % worldLvNum)
+        return
+    
+    partyAwardList = []
+    for ipyData in ipyDataList:
+        index = ipyData.GetIndex()
+        if awardRecord & pow(2, index):
+            continue
+        needPoint = ipyData.GetNeedPoint()
+        if curPoint < needPoint:
+            continue
+        awardInfoDict = ipyData.GetAward()
+        job = curPlayer.GetJob()
+        if str(job) not in awardInfoDict:
+            GameWorld.ErrLog('    邮件发放全民来嗨奖励 AllPeoplePartyAward 未配置职业奖励 job=%s' % job)
+            continue
+        awardList = awardInfoDict[str(job)]
+        partyAwardList += awardList
+    if partyAwardList:
+        PlayerControl.SendMailByKey('CeremonyHaiPoint', [playerID], partyAwardList, [playerName])
+    return
+
+def __IsAtFCAction():
+    ##是否在新仙界盛典活动中
+    actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_NewFairyCeremony, {})
+    state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
+    return state == 1
+
+def __GetFCWorldLVIndex(curPlayer, fcType):
+    #获取活动世界等级档
+    playerFCWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCActionWorldLV)
+    fcWorldlvDict = IpyGameDataPY.GetFuncEvalCfg('NewCeremonyWorldLv', 1, {})
+    if str(fcType) not in fcWorldlvDict:
+        return 0
+    worldLVIndex = 0
+    worldlvList = fcWorldlvDict[str(fcType)]
+    for index, lvinfo in enumerate(worldlvList):
+        minlv, maxlv = lvinfo
+        if minlv <= playerFCWorldLV <= maxlv:
+            worldLVIndex = index
+            break
+    return worldLVIndex
+
+#################充值大礼##############################
+def OnFCRecharge(curPlayer):
+    if not __IsAtFCAction():
+        return
+    curState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCRechargeState)
+    if curState != 0:
+        return
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCRechargeState, 1)
+    SyncFCRechargeInfo(curPlayer)
+    return
+
+def GetFCRechargeAward(curPlayer):
+    ## 领取充值大礼奖励
+    curState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCRechargeState)
+    if curState != 1:
+        return
+    worldLvNum = __GetFCWorldLVIndex(curPlayer, Def_FC_Recharge)
+    awardInfoDict = IpyGameDataPY.GetFuncEvalCfg('NewCeremonyRecharge', 1, {})
+    if str(worldLvNum) not in awardInfoDict:
+        GameWorld.ErrLog('    领取充值大礼奖励 CeremonyRecharge 未配置奖励 worldLvNum=%s' % worldLvNum)
+        return
+    awardList = awardInfoDict[str(worldLvNum)]
+    # 检查背包
+    needSpace = len(awardList)
+    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
+    if needSpace > packSpace:
+        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
+        return
+    
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCRechargeState, 2)
+    for itemID, itemCnt, isBind in awardList:
+        ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem])
+    
+    SyncFCRechargeInfo(curPlayer)
+    
+    PlayerControl.WorldNotify(0, 'CeremonyRecharge', [curPlayer.GetName()])
+    return
+
+
+def SyncFCRechargeInfo(curPlayer):
+    ## 通知充值大礼活动状态
+    packData = ChPyNetSendPack.tagMCNewXJSDRecharge()
+    packData.State = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCRechargeState)
+    NetPackCommon.SendFakePack(curPlayer, packData)
+    return
+
+#################全民来嗨##############################
+def AddFCPartyActionCnt(curPlayer, actionID, addCnt=1):
+    ##增加全民来嗨完成次数
+    if not __IsAtFCAction():
+        return
+    ipyData = IpyGameDataPY.GetIpyGameData('NewAllPeopleParty', actionID)
+    if not ipyData:
+        return
+    maxCnt = ipyData.GetTotalTimes()
+    curCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyCurCnt % actionID)
+    if curCnt >= maxCnt:
+        return
+    newCnt = min(maxCnt, curCnt + addCnt)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCPartyCurCnt % actionID, newCnt)
+    singlePoint = ipyData.GetAddPoint()
+    addPoint = (newCnt - curCnt) * singlePoint
+    curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyCurPoint)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCPartyCurPoint, curPoint + addPoint)
+    SyncFCPartyInfo(curPlayer, [actionID])
+    return
+
+def GetFCPartyAward(curPlayer, index):
+    ## 全民来嗨领奖
+    worldLvNum = __GetFCWorldLVIndex(curPlayer, Def_FC_Party)
+    
+    ipyData = IpyGameDataPY.GetIpyGameData('NewAllPeoplePartyAward', worldLvNum, index)
+    if not ipyData:
+        return
+    
+    curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyCurPoint)
+    if curPoint < ipyData.GetNeedPoint():
+        GameWorld.DebugLog('    全民来嗨领奖, 点数不足%s,  worldLvNum=%s, index=%s' % (ipyData.GetNeedPoint(), worldLvNum, index), curPlayer.GetID())
+        return
+    awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyAwardRecord)
+    awardMark = pow(2, index)
+    if awardRecord & awardMark:
+        GameWorld.DebugLog('    全民来嗨领奖, 已领奖,  worldLvNum=%s, index=%s' % (worldLvNum, index), curPlayer.GetID())
+        return
+    awardInfoDict = ipyData.GetAward()
+    job = curPlayer.GetJob()
+    if str(job) not in awardInfoDict:
+        return
+    awardList = awardInfoDict[str(job)]
+    # 检查背包
+    needSpace = len(awardList)
+    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
+    if needSpace > packSpace:
+        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
+        return
+    #更新记录
+    awardRecord |= awardMark
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCPartyAwardRecord, awardRecord)
+    for itemID, itemCnt, isBind in awardList:
+        ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem])
+    #通知
+    SyncFCPartyInfo(curPlayer, isGetAward=True)
+    return
+
+
+def SyncFCPartyInfo(curPlayer, actIDList=[], isGetAward=False):
+    ##通知全民来嗨信息
+    packData = ChPyNetSendPack.tagMCNewAllPeoplePartyInfo()
+    packData.Clear()
+    packData.CurPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyCurPoint)
+    packData.AwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyAwardRecord)
+    if not isGetAward:
+        packData.BuyCountList = []
+        for actID in ChConfig.PeoplePartyActIDList:
+            if actIDList and actID not in actIDList:
+                continue
+            finishInfo = ChPyNetSendPack.tagMCNewAllPeoplePartyCount()
+            finishInfo.ActID = actID
+            finishInfo.CurTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyCurCnt % actID)
+            packData.BuyCountList.append(finishInfo)
+        packData.Count = len(packData.BuyCountList)
+    
+    NetPackCommon.SendFakePack(curPlayer, packData)
+    return
+
+#################绝版降临##############################
+def AddFCCostGold(curPlayer, costType, costGold):
+    if costGold <= 0:
+        return
+    if costType in ChConfig.CostRebate_DisableType:
+        #GameWorld.DebugLog("不计入绝版降临消费的消费类型!costType=%s" % costType, curPlayer.GetPlayerID())
+        return
+    if not __IsAtFCAction():
+        return
+    curCostGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCCostGold)
+    updCostGold = curCostGold + costGold
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCCostGold, updCostGold)
+    
+    if updCostGold < IpyGameDataPY.GetFuncCfg('NewCeremonyRankLimit'):
+        return
+    
+    #更新排行榜
+    PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_NewFCCostGold, updCostGold)
+    
+    GameWorld.DebugLog("玩家绝版降临消费活动: curCostGold=%s,costGold=%s,updCostGold=%s" 
+                       % (curCostGold, costGold, updCostGold), curPlayer.GetPlayerID())
+    return
+
+#################烟花狂欢##############################
+def IsCanBuyFireworks(curPlayer, itemIndex):
+    ##当前是否可以买烟花
+    if not __IsAtFCAction():
+        GameWorld.Log('    烟花狂欢买烟花 活动未开启, 无法购买')
+        return False
+    fireworksDict = IpyGameDataPY.GetFuncEvalCfg('NewCeremonyFireParty', 1, {})
+    worldLvNum = __GetFCWorldLVIndex(curPlayer, Def_FC_Fireworks)
+    canBuyID = fireworksDict.get(str(worldLvNum), 0)
+    if canBuyID != itemIndex:
+        GameWorld.Log('    烟花狂欢买烟花 当前可以买烟花为 %s, 无法购买 %s,worldLvNum=%s'%(canBuyID, itemIndex,worldLvNum), curPlayer.GetID())
+        return False
+    return True
\ No newline at end of file
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 d2cc301..f5661e8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
@@ -30,6 +30,7 @@
 import EventShell
 import PlayerActivity
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 import PlayerVip
 
 import copy
@@ -225,6 +226,7 @@
     costItemCnt = sum(needMaterialDict.values())
     PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_RefineStove, costItemCnt)
     PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RefineStove, 1)
+    PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RefineStove, 1)
     return 
 
 def __GetAlchemyUpItemID(itemID, alchemyLV, alchemyUpCfg):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
index b1ff0f6..fb196d0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
@@ -28,6 +28,7 @@
 import NetPackCommon
 import PlayerBossReborn
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
 import ItemCommon
 import ChConfig
 
@@ -326,9 +327,11 @@
     
     if treasureType == 2:
         PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RuneTreasure, treasureCount)
+        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RuneTreasure, treasureCount)
         PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_RuneTreasure, treasureCount)
     else:
         PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Treasure, treasureCount)
+        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Treasure, treasureCount)
         PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_Treasure, treasureCount)
     # 给物品
     mailItemList = []
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 0d747d6..adf7808 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -225,6 +225,7 @@
 OperationActionName_BossReborn = "ActBossReborn" # BOSS复活活动
 OperationActionName_FlashGiftbag = "ActFlashGiftbag" # 限时礼包活动
 OperationActionName_FairyCeremony = "ActFairyCeremony" # 仙界盛典活动
+OperationActionName_NewFairyCeremony = "ActNewFairyCeremony" # 仙界盛典活动
 OperationActionName_RealmPoint = "ActRealmPoint" # 多倍修行点活动
 OperationActionName_FlashSale = "ActFlashSale" # 限时抢购活动
 OperationActionName_WishingWell = "ActWishingWell" # 许愿池活动
@@ -240,10 +241,11 @@
                            OperationActionName_FlashGiftbag, OperationActionName_FairyCeremony,
                            OperationActionName_RealmPoint, OperationActionName_FlashSale,
                            OperationActionName_WishingWell, OperationActionName_TotalRecharge, 
-                           OperationActionName_WeekParty, OperationActionName_LoginAward, ] \
+                           OperationActionName_WeekParty, OperationActionName_LoginAward, 
+                           OperationActionName_NewFairyCeremony, ] \
                            + FeastOperationActionNameList
 #需要记录开启活动时的世界等级的运营活动
-NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell]
+NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell, OperationActionName_NewFairyCeremony]
 
 #活动信息字典key定义
 ActKey_ID = "ID" # 活动ID,唯一标识的ID,一般是活动开启的time值
@@ -606,6 +608,7 @@
     Def_BT_Campaign_PetLV,                    #灵宠等级(开服活动榜)
     
     Def_BT_ZhuXianTower,                      #诛仙塔榜
+    Def_BT_NewFCCostGold,                     #消费排行榜(新仙界盛典)
     
     Def_BT_HighLadder,                        #天梯竞技场排行
     Def_BT_HighLadder_Yester,                 #天梯竞技场昨日排行
@@ -621,7 +624,7 @@
     Def_BT_CostTeHuiLast,                     #消费特惠排行榜上一期
     
     Def_BT_Max,                               #排行榜最大类型
-) = range(0, 33 + 2) 
+) = range(0, 34 + 2) 
     
 #职业对应战力排行榜类型
 JobFightPowerBillboardDict = {

--
Gitblit v1.8.0