| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| ##@package GameWorldLogic.FBProcess.GameLogic_FairyTreasure  | 
| #  | 
| # @todo:çÎ翱¦²Ø  | 
| # @author xdh  | 
| # @date 2019-04-09  | 
| # @version 1.0  | 
| # ÏêϸÃèÊö: çÎ翱¦²Ø  | 
| # ±¾¸±±¾×öǰ¶Ë×Ô¶¨Ò峡¾°´¦Àí£¬ºó¶ËÎÞʵ¼ÊµØÍ¼  | 
| #  | 
| #---------------------------------------------------------------------  | 
| #"""Version = 2019-04-09 11:00"""  | 
| #---------------------------------------------------------------------  | 
|   | 
| import FBCommon  | 
| import GameWorld  | 
| import IpyGameDataPY  | 
| import PlayerFairyDomain  | 
| import PlayerControl  | 
| import ItemCommon  | 
| import NPCCommon  | 
| import ChConfig  | 
|   | 
|   | 
| ## ÊÇ·ñ¿É½øÈë  | 
| def OnEnterFBEvent(curPlayer, mapID, lineId, tick):  | 
|     ipyData = IpyGameDataPY.GetIpyGameDataByCondition('FairyDomain', {'MapID':mapID, 'LineID':lineId})  | 
|     if not ipyData:  | 
|         return  | 
|     fdeventID = ipyData.GetID()  | 
|     if not PlayerFairyDomain.SetFairyDomainEventState(curPlayer, fdeventID, PlayerFairyDomain.FDEventState_Visiting):  | 
|         return  | 
|     return True  | 
|   | 
| ## ×Ô¶¨Ò峡¾°²É¼¯OK£¬Ðè×Ô´øÊÇ·ñÔÊÐí²É¼¯µÄÅÐ¶Ï  | 
| def OnCustomSceneCollectOK(curPlayer, mapID, lineID, npcID):  | 
|       | 
|     curState = PlayerFairyDomain.GetFairyDomainFBEventState(curPlayer, mapID, lineID)  | 
|     if curState != PlayerFairyDomain.FDEventState_Visiting:  | 
|         GameWorld.DebugLog("·ÇѰ·ÃÖУ¬²»ÄܽáËãçÎ翱¦²Ø²É¼¯£¡", curPlayer.GetPlayerID())  | 
|         return  | 
|     ipyData = IpyGameDataPY.GetIpyGameDataByCondition('FairyDomain', {'MapID':ChConfig.Def_FBMapID_FairyTreasure, 'LineID':lineID})  | 
|     fdeventID = ipyData.GetID()  | 
|     PlayerFairyDomain.SetFairyDomainEventState(curPlayer, fdeventID, PlayerFairyDomain.FDEventState_Visited)  | 
|     PlayerControl.SetCustomMap(curPlayer, 0, 0)  | 
|       | 
|     giveItemList = PlayerFairyDomain.GetFairyAppointAward(curPlayer, fdeventID)  | 
|     if not giveItemList:  | 
|         awardCfg = FBCommon.GetFBLineReward(ChConfig.Def_FBMapID_FairyTreasure, lineID)  | 
|         giveItemList = []  | 
|         for awardRateList in awardCfg:  | 
|             realWeightList = ItemCommon.GetWeightItemListByAlchemyDiffLV(curPlayer, awardRateList, 1)  | 
|             if not realWeightList:  | 
|                 continue  | 
|             randomitem = GameWorld.GetResultByWeightList(realWeightList)  | 
|             if not randomitem[0]:  | 
|                 continue  | 
|             giveItemList.append(randomitem)  | 
|               | 
|     if giveItemList:  | 
|         NPCCommon.DoGiveItemByVirtualDrop(curPlayer, giveItemList, npcID)  | 
|           | 
|     overDict = {FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(giveItemList)}  | 
|     FBCommon.NotifyFBOver(curPlayer, ChConfig.Def_FBMapID_FairyTreasure, lineID, 1, overDict)  | 
|     return True  | 
|   | 
|   |