|  |  |  | 
|---|
|  |  |  | import PlayerFamilySWRH | 
|---|
|  |  |  | import GameWorldBoss | 
|---|
|  |  |  | import PlayerFairyCeremony | 
|---|
|  |  |  | import GameWorldProcess | 
|---|
|  |  |  | import ChPyNetSendPack | 
|---|
|  |  |  | import NetPackCommon | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | curTime = int(time.time()) | 
|---|
|  |  |  | curDateStr = GameWorld.ChangeTimeNumToStr(curTime, ChConfig.TYPE_Time_YmdFormat) # 当天日期 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | GameWorld.Log("加载本日日常活动信息: %s, weekDay=%s,openServerDay=%s" % (curDateStr, weekDay, openServerDay)) | 
|---|
|  |  |  | openServerWeekday = GameWorldProcess.GetOpenServerWeekday() # 服务器开服时是星期几 | 
|---|
|  |  |  | GameWorld.Log("加载本日日常活动信息: %s, 当前星期%s,开服第%s天,开服是星期%s" % (curDateStr, weekDay, openServerDay, openServerWeekday)) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | customDailyIDList = [] | 
|---|
|  |  |  | dailyTimeInfoList = [] | 
|---|
|  |  |  | customIpyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("DailyActionCustom", openServerWeekday, openServerDay) | 
|---|
|  |  |  | if customIpyDataList: | 
|---|
|  |  |  | customIDList = [] | 
|---|
|  |  |  | for customIpyData in customIpyDataList: | 
|---|
|  |  |  | dataID = customIpyData.GetID() | 
|---|
|  |  |  | dailyID = customIpyData.GetDailyID() | 
|---|
|  |  |  | if dailyID not in customDailyIDList: | 
|---|
|  |  |  | customDailyIDList.append(dailyID) | 
|---|
|  |  |  | dailyTimeInfoList.append([True, customIpyData.GetOpenTimeList(), customIpyData]) | 
|---|
|  |  |  | customIDList.append(dataID) | 
|---|
|  |  |  | GameWorld.Log("    本地定制日常活动条数: %s, 配置表ID列表=%s, 定制活动ID列表=%s" % (len(customIpyDataList), customIDList, customDailyIDList)) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ipyDataMgr = IpyGameDataPY.IPY_Data() | 
|---|
|  |  |  | dailyActionCount = ipyDataMgr.GetDailyActionCount() | 
|---|
|  |  |  | for i in xrange(dailyActionCount): | 
|---|
|  |  |  | dailyIpyData = ipyDataMgr.GetDailyActionByIndex(i) | 
|---|
|  |  |  | dailyID = dailyIpyData.GetDailyID() | 
|---|
|  |  |  | openServerDayLimit = dailyIpyData.GetOpenServerDay() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if openServerDay < openServerDayLimit: | 
|---|
|  |  |  | GameWorld.Log("    不是日常活动开启天数: dailyID=%s,openServerDayLimit=%s" % (dailyID, openServerDayLimit)) | 
|---|
|  |  |  | # 是当天开服天定制活动的不处理常规活动 | 
|---|
|  |  |  | if dailyID in customDailyIDList: | 
|---|
|  |  |  | GameWorld.Log("    常规活动ID配置是今天的定制活动ID,不处理!: dailyID=%s" % dailyID) | 
|---|
|  |  |  | continue | 
|---|
|  |  |  |  | 
|---|
|  |  |  | openTimeDict = eval(dailyIpyData.GetOpenTime()) | 
|---|
|  |  |  | openTimeDict = dailyIpyData.GetOpenTimeDict() | 
|---|
|  |  |  | # 没有时间控制的,代表永久开放 | 
|---|
|  |  |  | if not openTimeDict: | 
|---|
|  |  |  | todayActionInfo.append([dailyID]) | 
|---|
|  |  |  | GameWorld.Log("    增加本日日常活动信息: dailyID=%s" % dailyID) | 
|---|
|  |  |  | GameWorld.Log("    增加本日常开日常活动信息: dailyID=%s" % dailyID) | 
|---|
|  |  |  | continue | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #如果星期key中存在 "0" 代表每日都开启 | 
|---|
|  |  |  | if "0" not in openTimeDict and weekDay not in openTimeDict: | 
|---|
|  |  |  | GameWorld.Log("    不是日常活动开启星期: dailyID=%s,openWeekLimit=%s" % (dailyID, openTimeDict.keys())) | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | openTimeList = openTimeDict["0"] if "0" in openTimeDict else openTimeDict[weekDay] | 
|---|
|  |  |  | dailyTimeInfoList.append([False, openTimeList, dailyIpyData]) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | notifyInfoDict = dailyIpyData.GetNotifyInfo() | 
|---|
|  |  |  | GameWorld.Log("    -----------------------") | 
|---|
|  |  |  | for isCustom, openTimeList, ipyData in dailyTimeInfoList: | 
|---|
|  |  |  | dailyID = ipyData.GetDailyID() | 
|---|
|  |  |  | notifyInfoDict = ipyData.GetNotifyInfo() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | openList = [] # [(时,分), ...] | 
|---|
|  |  |  | overList = [] # [(时,分), ...] | 
|---|
|  |  |  | 
|---|
|  |  |  | notifyDict = {} # {(时,分):[notifyKey, [参数]], ...} | 
|---|
|  |  |  | OpenState = 1 # 定义开启状态为1 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | openTimeList = openTimeDict["0"] if "0" in openTimeDict else openTimeDict[weekDay] | 
|---|
|  |  |  | for hour, minute in openTimeList: | 
|---|
|  |  |  | openTimeStr = "%s %02d:%02d:%02d" % (curDateStr, hour, minute, 0) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | openList.append((openDateTime.hour, openDateTime.minute)) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 精确关闭时间 | 
|---|
|  |  |  | overDateTime = openDateTime + datetime.timedelta(minutes=dailyIpyData.GetDuration()) | 
|---|
|  |  |  | overDateTime = openDateTime + datetime.timedelta(minutes=ipyData.GetDuration()) | 
|---|
|  |  |  | overList.append((overDateTime.hour, overDateTime.minute)) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # goon 开启状态 | 
|---|
|  |  |  | 
|---|
|  |  |  | notifyDict[(notifyDateTime.hour, notifyDateTime.minute)] = notifyInfo | 
|---|
|  |  |  |  | 
|---|
|  |  |  | todayActionInfo.append([dailyID, openList, overList, goonStateDict, notifyDict]) | 
|---|
|  |  |  | GameWorld.Log("    增加本日日常活动信息: dailyID=%s,openList=%s,overList=%s,goonStateDict=%s,notifyDict=%s" | 
|---|
|  |  |  | % (dailyID, openList, overList, goonStateDict, notifyDict)) | 
|---|
|  |  |  | GameWorld.Log("    增加本日日常活动信息: isCustom=%s,dailyID=%s,openList=%s,overList=%s,goonStateDict=%s,notifyDict=%s" | 
|---|
|  |  |  | % (int(isCustom), dailyID, openList, overList, goonStateDict, notifyDict)) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | TodayDailyActionInfo = IpyGameDataPY.SetConfigEx(key, [openServerDay, todayActionInfo]) | 
|---|
|  |  |  | GameWorld.Log("本日日常活动信息加载完毕!") | 
|---|
|  |  |  | 
|---|
|  |  |  | #已经是这个状态了 | 
|---|
|  |  |  | continue | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if state: | 
|---|
|  |  |  | # 骑宠争夺活动开始前同步有效人数到地图 | 
|---|
|  |  |  | if dailyActionID == ShareDefine.DailyActionID_FamilyRobBoss: | 
|---|
|  |  |  | GameWorldBoss.SyncMapServer_HorsePetRobBossPlayerCount() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #通知Mapserver,设置字典 | 
|---|
|  |  |  | GameWorld.SendMapServerMsgEx(dictName, state) | 
|---|
|  |  |  | #更新字典值 | 
|---|
|  |  |  | 
|---|
|  |  |  | ## ------------------------------------------------------------------------------------------------- | 
|---|
|  |  |  | def __GetFBStateEndTimeNotResetIDList(): | 
|---|
|  |  |  | key = "FBStateEndTimeNotReset" # 结束时间状态不重置为0的数据ID | 
|---|
|  |  |  | FBStateEndTimeNotResetIDList = IpyGameDataPY.GetConfigEx(key) | 
|---|
|  |  |  | if FBStateEndTimeNotResetIDList == None: | 
|---|
|  |  |  | notResetIDList = IpyGameDataPY.GetConfigEx(key) | 
|---|
|  |  |  | if notResetIDList == None: | 
|---|
|  |  |  | mapStateTimeDict = {} | 
|---|
|  |  |  | ipyDataMgr = IpyGameDataPY.IPY_Data() | 
|---|
|  |  |  | for i in xrange(ipyDataMgr.GetFBStateTimeCount()): | 
|---|
|  |  |  | 
|---|
|  |  |  | dataID = fbStateTimeIpyData.GetID() | 
|---|
|  |  |  | dataMapID = fbStateTimeIpyData.GetDataMapID() | 
|---|
|  |  |  | startWeekDay, startHour, startMinute = fbStateTimeIpyData.GetStartWeekday(), fbStateTimeIpyData.GetStartHour(), fbStateTimeIpyData.GetStartMinute() | 
|---|
|  |  |  | endWeekDay, endHour, endMinute = fbStateTimeIpyData.GetEndWeekday(), fbStateTimeIpyData.GetEndHour(), fbStateTimeIpyData.GetEndMinute() | 
|---|
|  |  |  | endWeekDay, endHour, endMinute = startWeekDay, fbStateTimeIpyData.GetEndHour(), fbStateTimeIpyData.GetEndMinute() | 
|---|
|  |  |  | startTimeList, endTimeDict = mapStateTimeDict.get(dataMapID, [[], {}]) | 
|---|
|  |  |  | startTimeList.append([startWeekDay, startHour, startMinute]) | 
|---|
|  |  |  | endTimeDict[dataID] = [endWeekDay, endHour, endMinute] | 
|---|
|  |  |  | 
|---|
|  |  |  | # 结束时间属于某一条的开启时间,则不重置,具体状态由另一条决定 | 
|---|
|  |  |  | if endTime in startTimeList: | 
|---|
|  |  |  | FBStateEndTimeNotResetIDList.append(dataID) | 
|---|
|  |  |  | FBStateEndTimeNotResetIDList = IpyGameDataPY.SetConfigEx(key, FBStateEndTimeNotResetIDList) | 
|---|
|  |  |  | GameWorld.Log("加载副本状态结束时间不需要重置状态值的数据ID列表: %s" % FBStateEndTimeNotResetIDList) | 
|---|
|  |  |  | return FBStateEndTimeNotResetIDList | 
|---|
|  |  |  | FBStateEndTimeNotResetIDList.sort() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 加载定制表 | 
|---|
|  |  |  | customStateTimeDict = {} | 
|---|
|  |  |  | for i in xrange(ipyDataMgr.GetFBStateTimeCustomCount()): | 
|---|
|  |  |  | customIpyData = ipyDataMgr.GetFBStateTimeCustomByIndex(i) | 
|---|
|  |  |  | dataID = customIpyData.GetID() | 
|---|
|  |  |  | dataMapID = customIpyData.GetDataMapID() | 
|---|
|  |  |  | openWeek, openDay = customIpyData.GetOpenServerWeek(), customIpyData.GetOpenServerDay() | 
|---|
|  |  |  | startHour, startMinute = customIpyData.GetStartHour(), customIpyData.GetStartMinute() | 
|---|
|  |  |  | endHour, endMinute = customIpyData.GetEndHour(), customIpyData.GetEndMinute() | 
|---|
|  |  |  | startTimeList, endTimeDict = customStateTimeDict.get(dataMapID, [[], {}]) | 
|---|
|  |  |  | startTimeList.append([openWeek, openDay, startHour, startMinute]) | 
|---|
|  |  |  | endTimeDict[dataID] = [openWeek, openDay, endHour, endMinute] | 
|---|
|  |  |  | customStateTimeDict[dataMapID] = [startTimeList, endTimeDict] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | FBStateEndTimeNotResetCustomIDList = [] | 
|---|
|  |  |  | for dataMapID, timeInfo in customStateTimeDict.items(): | 
|---|
|  |  |  | startTimeList, endTimeDict = timeInfo | 
|---|
|  |  |  | for dataID, endTime in endTimeDict.items(): | 
|---|
|  |  |  | # 结束时间属于某一条的开启时间,则不重置,具体状态由另一条决定 | 
|---|
|  |  |  | if endTime in startTimeList: | 
|---|
|  |  |  | FBStateEndTimeNotResetCustomIDList.append(dataID) | 
|---|
|  |  |  | FBStateEndTimeNotResetCustomIDList.sort() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | notResetIDList = IpyGameDataPY.SetConfigEx(key, [FBStateEndTimeNotResetIDList, FBStateEndTimeNotResetCustomIDList]) | 
|---|
|  |  |  | GameWorld.Log("加载副本状态结束时间不需要重置状态值的数据ID列表:") | 
|---|
|  |  |  | GameWorld.Log("    不需要重置的常规ID: %s" % FBStateEndTimeNotResetIDList) | 
|---|
|  |  |  | GameWorld.Log("    不需要重置的定制ID: %s" % FBStateEndTimeNotResetCustomIDList) | 
|---|
|  |  |  | return notResetIDList | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def Dispose_FBStateTime(): | 
|---|
|  |  |  | ## 副本状态时间表状态处理, 支持 goon作用,开关服状态不受影响,服务器重新启动会自动变更为所有时间段的状态值 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | FBStateEndTimeNotResetIDList = __GetFBStateEndTimeNotResetIDList() | 
|---|
|  |  |  | openServerWeek = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerWeek) + 1 | 
|---|
|  |  |  | FBStateEndTimeNotResetIDList, FBStateEndTimeNotResetCustomIDList = __GetFBStateEndTimeNotResetIDList() | 
|---|
|  |  |  | openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1 | 
|---|
|  |  |  | curDateTime = GameWorld.GetServerTime() | 
|---|
|  |  |  | curWeekDay, curHour, curMinute = curDateTime.weekday() + 1, curDateTime.hour, curDateTime.minute | 
|---|
|  |  |  |  | 
|---|
|  |  |  | curTimeWHM = curWeekDay * 10000 + curHour * 100 + curMinute | 
|---|
|  |  |  | GameWorld.DebugLog("副本状态时间表状态处理...openServerWeek=%s,openServerDay=%s,curWeekDay=%s,curHour=%s,curMinute=%s,FBStateEndTimeNotResetIDList=%s" | 
|---|
|  |  |  | % (openServerWeek, openServerDay, curWeekDay, curHour, curMinute, FBStateEndTimeNotResetIDList)) | 
|---|
|  |  |  | openServerWeekday = GameWorldProcess.GetOpenServerWeekday() # 服务器开服时是星期几 | 
|---|
|  |  |  | GameWorld.DebugLog("副本状态时间表状态处理...开服是星期%s,开服第%s天, 当前星期%s,%s点%s分" | 
|---|
|  |  |  | % (openServerWeekday, openServerDay, curWeekDay, curHour, curMinute)) | 
|---|
|  |  |  | GameWorld.DebugLog("    FBStateEndTimeNotResetIDList=%s" % (FBStateEndTimeNotResetIDList)) | 
|---|
|  |  |  | GameWorld.DebugLog("    FBStateEndTimeNotResetCustomIDList=%s" % (FBStateEndTimeNotResetCustomIDList)) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | gameWorld = GameWorld.GetGameWorld() | 
|---|
|  |  |  | ipyDataMgr = IpyGameDataPY.IPY_Data() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | customMapIDList = [] | 
|---|
|  |  |  | fbStateTimeInfoList = [] | 
|---|
|  |  |  | customIpyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("FBStateTimeCustom", openServerWeekday, openServerDay) | 
|---|
|  |  |  | if customIpyDataList: | 
|---|
|  |  |  | customIDList = [] | 
|---|
|  |  |  | for customIpyData in customIpyDataList: | 
|---|
|  |  |  | dataID = customIpyData.GetID() | 
|---|
|  |  |  | dataMapID = customIpyData.GetDataMapID() | 
|---|
|  |  |  | if dataMapID not in customMapIDList: | 
|---|
|  |  |  | customMapIDList.append(dataMapID) | 
|---|
|  |  |  | isCustom, startWeekDay, endWeekDay = True, curWeekDay, curWeekDay | 
|---|
|  |  |  | fbStateTimeInfoList.append([isCustom, startWeekDay, endWeekDay, customIpyData]) | 
|---|
|  |  |  | customIDList.append(dataID) | 
|---|
|  |  |  | GameWorld.DebugLog("    定制副本活动条数: %s, 配置表ID列表=%s" % (len(customIpyDataList), customIDList)) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for i in xrange(ipyDataMgr.GetFBStateTimeCount()): | 
|---|
|  |  |  | fbStateTimeIpyData = ipyDataMgr.GetFBStateTimeByIndex(i) | 
|---|
|  |  |  | dataID = fbStateTimeIpyData.GetID() | 
|---|
|  |  |  | dataMapID = fbStateTimeIpyData.GetDataMapID() | 
|---|
|  |  |  | openServerWeekLimit = fbStateTimeIpyData.GetOpenServerWeek() | 
|---|
|  |  |  | openServerDayLimit = fbStateTimeIpyData.GetOpenServerDay() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if openServerWeek <= openServerWeekLimit: | 
|---|
|  |  |  | #GameWorld.DebugLog("    不是副本状态开启周: i=%s,dataMapID=%s,openServerWeekLimit=%s" % (i, dataMapID, openServerWeekLimit)) | 
|---|
|  |  |  | # 是当天开服天定制活动的不处理常规活动 | 
|---|
|  |  |  | if dataMapID in customMapIDList: | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | isCustom, startWeekDay, endWeekDay = False, fbStateTimeIpyData.GetStartWeekday(), fbStateTimeIpyData.GetStartWeekday() | 
|---|
|  |  |  | fbStateTimeInfoList.append([isCustom, startWeekDay, endWeekDay, fbStateTimeIpyData]) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if openServerDay <= openServerDayLimit: | 
|---|
|  |  |  | #GameWorld.DebugLog("    不是副本状态开启天数: i=%s,dataMapID=%s,openServerDayLimit=%s" % (i, dataMapID, openServerDayLimit)) | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | for isCustom, startWeekDay, endWeekDay, ipyData in fbStateTimeInfoList: | 
|---|
|  |  |  | dataID = ipyData.GetID() | 
|---|
|  |  |  | dataMapID = ipyData.GetDataMapID() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | startWeekDay, startHour, startMinute = fbStateTimeIpyData.GetStartWeekday(), fbStateTimeIpyData.GetStartHour(), fbStateTimeIpyData.GetStartMinute() | 
|---|
|  |  |  | endWeekDay, endHour, endMinute = fbStateTimeIpyData.GetEndWeekday(), fbStateTimeIpyData.GetEndHour(), fbStateTimeIpyData.GetEndMinute() | 
|---|
|  |  |  | startHour, startMinute = ipyData.GetStartHour(), ipyData.GetStartMinute() | 
|---|
|  |  |  | endHour, endMinute = ipyData.GetEndHour(), ipyData.GetEndMinute() | 
|---|
|  |  |  | # 星期配置0代表每天 | 
|---|
|  |  |  | if startWeekDay == 0: | 
|---|
|  |  |  | startWeekDay = curWeekDay | 
|---|
|  |  |  | 
|---|
|  |  |  | #GameWorld.DebugLog("    ID=%s,dataMapID=%s,curTimeWHM=%s,startTimeWHM=%s,endTimeWHM=%s" % (dataID, dataMapID, curTimeWHM, startTimeWHM, endTimeWHM)) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 全服广播key分钟差值对比时间为开始时间, 支持正负时间差 | 
|---|
|  |  |  | notifyInfoDict = fbStateTimeIpyData.GetNotifyInfoDict() | 
|---|
|  |  |  | notifyInfoDict = ipyData.GetNotifyInfoDict() | 
|---|
|  |  |  | if notifyInfoDict: | 
|---|
|  |  |  | startDateTime = curDateTime + datetime.timedelta(days=(startWeekDay - curWeekDay)) | 
|---|
|  |  |  | startDateTime = datetime.datetime(startDateTime.year, startDateTime.month, startDateTime.day, startHour, startMinute, 0) | 
|---|
|  |  |  | 
|---|
|  |  |  | #GameWorld.DebugLog("        当前是开始时间!") | 
|---|
|  |  |  | # 是结束时间 | 
|---|
|  |  |  | elif curTimeWHM == endTimeWHM: | 
|---|
|  |  |  | isReset = dataID not in FBStateEndTimeNotResetIDList | 
|---|
|  |  |  | if (isCustom and dataID not in FBStateEndTimeNotResetCustomIDList) or (not isCustom and dataID not in FBStateEndTimeNotResetIDList): | 
|---|
|  |  |  | isReset = True | 
|---|
|  |  |  | #GameWorld.DebugLog("        当前是结束时间! isReset=%s,FBStateEndTimeNotResetIDList=%s" % (isReset, FBStateEndTimeNotResetIDList)) | 
|---|
|  |  |  | # 结束时间是下周 | 
|---|
|  |  |  | elif endTimeWHM and endTimeWHM <= startTimeWHM: | 
|---|
|  |  |  | 
|---|
|  |  |  | updCanEnter = 0 | 
|---|
|  |  |  | updStateValue = 0 | 
|---|
|  |  |  | elif isUpdate: | 
|---|
|  |  |  | updCanEnter = fbStateTimeIpyData.GetCanEnter() | 
|---|
|  |  |  | updStateValue = fbStateTimeIpyData.GetStateValue() | 
|---|
|  |  |  | updCanEnter = ipyData.GetCanEnter() | 
|---|
|  |  |  | updStateValue = ipyData.GetStateValue() | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | #GameWorld.DebugLog("        当前时间副本状态不变!") | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | 
|---|
|  |  |  | #守卫人皇 | 
|---|
|  |  |  | elif dictName == ShareDefine.Def_Notify_WorldKey_FBFuncState % ChConfig.Def_FBMapID_FamilyInvade: | 
|---|
|  |  |  | PlayerFamilySWRH.OnSWRHStateChange(dictName, isOpen) | 
|---|
|  |  |  | #骑宠争夺 | 
|---|
|  |  |  | elif dictName == ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyRobBoss: | 
|---|
|  |  |  | GameWorldBoss.OnHorsePetRobBossActionChange(isOpen) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------------------------------ | 
|---|