1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/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