def procHappening(self, mid, stagemaster, playdata, event): """ハプニング発生. """ model_mgr = self.getModelMgr() happeningid = BackendApi.get_current_producehappeningid( model_mgr, playdata.uid, using=playdata.current_db, reflesh=True) happeningset = BackendApi.get_producehappening( model_mgr, happeningid, using=playdata.current_db) if happeningset is None: if settings_sub.IS_LOCAL: raise CabaretError(u'ハプニングが発生していません') url = UrlMaker.produceevent_top() self.appRedirect(self.makeAppLinkUrlRedirect(url)) return happeningraidset = HappeningRaidSet(happeningset) self.html_param['happening'] = Objects.producehappening( self, happeningraidset) # レイドボス raidmaster = BackendApi.get_raid_master(model_mgr, happeningset.master.boss, using=settings.DB_READONLY) self.html_param['boss'] = Objects.raidmaster(self, raidmaster, is_produceevent=True) self.setFromPage( Defines.FromPages.PRODUCEEVENTSCOUT, (stagemaster.id, urllib.quote(playdata.confirmkey, ''))) url = UrlMaker.producehappening() self.html_param['url_happening'] = self.makeAppLinkUrl(url) self.writeHtml(self.eventmaster, 'scout/happening')
def cb(): # ハプニング情報. obj_happening = Objects.producehappening( self, HappeningRaidSet(happeningset, raidboss), prizeinfo, persons.get(o_player.dmmid)) self.html_param['happening'] = obj_happening return obj_happening
def putHappeningInfo(self, do_get_end=False): """ハプニング情報作成. """ happeningraidset = self.getHappeningRaidSet() if not happeningraidset: return happeningset = happeningraidset.happening if not do_get_end and happeningset.happening.is_end(): return # 獲得した報酬. prizelist = self.getPooledPrizeList(happeningset.happening.is_canceled()) prizeinfo = BackendApi.make_prizeinfo(self, prizelist, using=settings.DB_READONLY) # ハプニング情報. obj_happening = Objects.producehappening(self, happeningraidset, prizeinfo) self.html_param['happening'] = obj_happening return obj_happening
def process(self): model_mgr = self.getModelMgr() event_config = BackendApi.get_current_produce_event_config( model_mgr, using=settings.DB_READONLY) args = self.getUrlArgs('/produceeventtop/') mid = args.getInt(0) eventmaster = None if not mid and event_config: mid = event_config.mid if mid: eventmaster = BackendApi.get_produce_event_master( model_mgr, mid, using=settings.DB_READONLY) if not eventmaster: raise CabaretError(u'Event Closed.', CabaretError.Code.EVENT_CLOSED) cur_eventmaster = self.getCurrentProduceEvent(quiet=True) is_open = cur_eventmaster and cur_eventmaster.id == mid v_player = self.getViewerPlayer() uid = v_player.id if is_open: # 発生中のレイド情報. happeningraidset = self.getHappeningRaidSet() happeningset = None if happeningraidset: happeningset = happeningraidset.happening if happeningset: # レイドがある. if (happeningset.happening.is_cleared()): # 未確認の結果がある. url = UrlMaker.raidresultanim(happeningset.id) self.appRedirect(self.makeAppLinkUrlRedirect(url)) return elif not happeningset.happening.is_end(): obj_happening = Objects.producehappening( self, happeningraidset) obj_happening['url_battlepre'] = self.makeAppLinkUrl( UrlMaker.produceevent_battlepre()) self.html_param['producehappening'] = obj_happening # デッキ編成へのリンクを上書き. self.setFromPage(Defines.FromPages.PRODUCEEVENT) self.html_param['url_deck_raid'] = self.makeAppLinkUrl( UrlMaker.deck_raid()) # イベント情報. self.html_param['produceevent'] = Objects.produceevent( self, eventmaster, event_config) # ルール、説明とランキングのリンク. self.putEventTopic(mid, 'top') self.html_param['produce_card'] = BackendApi.create_produce_cardinfo( self, model_mgr, uid, eventmaster.id) # イベント専用スカウトのTOPページへのリンク. self.html_param['url_produceevent_scouttop'] = self.makeAppLinkUrl( UrlMaker.produceevent_scouttop()) produce_score = ProduceEventScore.get_instance( model_mgr, uid, eventmaster.id, using=settings.DB_READONLY) self.html_param['produce_eventscore'] = produce_score.to_dict() self.html_param['produce_rank'] = BackendApi.get_ranking_rank( ProduceEventRanking, eventmaster.id, uid) self.html_param['shop_url'] = self.makeAppLinkUrl(UrlMaker.shop()) # HTML 作成 self.writeAppHtml('produce_event/top')
def process(self): model_mgr = self.getModelMgr() v_player = self.getViewerPlayer() uid = v_player.id # 開催中判定. cur_eventmaster = self.getCurrentProduceEvent() mid = cur_eventmaster.id # 現在発生中のレイド. happeningraidset = self.getHappeningRaidSet() if happeningraidset is None or happeningraidset.raidboss is None: self.appRedirect(self.makeAppLinkUrlRedirect(UrlMaker.mypage())) return # イベントのレイド判定. happeningset = happeningraidset.happening raidboss = happeningraidset.raidboss eventid = HappeningUtil.get_produceeventid( happeningset.happening.event) if happeningset.happening.oid != uid: # 自分のじゃないのは救援詳細へ. self.appRedirect( self.makeAppLinkUrlRedirect( UrlMaker.raidhelpdetail(happeningset.id))) return elif eventid != mid: # イベントじゃないレイド. self.appRedirect(self.makeAppLinkUrlRedirect(UrlMaker.happening())) return elif not happeningset.happening.is_active(): # 終了済み. self.appRedirect( self.makeAppLinkUrlRedirect( UrlMaker.produceraidend(happeningset.happening.id))) return produceeventraidmaster = BackendApi.get_produceevent_raidmaster( model_mgr, cur_eventmaster.id, raidboss.master.id, using=settings.DB_READONLY) # キャストを借りる. func_put_playerlist = self.putHelpFriend(raidboss) # ダメージ履歴. func_put_attacklog = self.putRaidAttackLog(raidboss) # イベント情報. config = BackendApi.get_current_produce_event_config( model_mgr, using=settings.DB_READONLY) self.html_param['produceevent'] = Objects.produceevent( self, cur_eventmaster, config) # レイド情報. obj_happening = Objects.producehappening(self, happeningraidset) self.html_param['happening'] = obj_happening # 実行リンク 等倍と3倍. url = UrlMaker.produceraiddo(raidboss.id, v_player.req_confirmkey) self.html_param['url_exec'] = self.makeAppLinkUrl(url) self.html_param['url_exec_strong'] = self.makeAppLinkUrl( OSAUtil.addQuery(url, Defines.URLQUERY_STRONG, 1)) # イベントデータ. scorerecord = BackendApi.get_produceevent_scorerecord( model_mgr, mid, uid, using=settings.DB_READONLY) self.html_param['produceeventscore'] = Objects.produceevent_score( cur_eventmaster, scorerecord, None) # 特攻カード. #BackendApi.put_raidevent_specialcard_info(self, uid, produceeventraidmaster, using=settings.DB_READONLY) # このページに戻ってくるリンク. self.setFromPage(Defines.FromPages.HAPPENING, happeningset.id) BackendApi.put_bprecover_uselead_info(self) self.html_param['url_deck_raid'] = self.makeAppLinkUrl( UrlMaker.deck_raid()) # デッキ情報. deckcardlist = self.getDeckCardList() self.putDeckParams(deckcardlist) self.execute_api() # if func_put_attacklog: # func_put_attacklog() # if func_put_playerlist: # func_put_playerlist() self.html_param['player'] = Objects.player(self, v_player) event_item_master = BackendApi.get_itemmaster( model_mgr, cur_eventmaster.useitem, using=settings.DB_READONLY) has_event_item_nums = BackendApi.get_item_nums( model_mgr, uid, [event_item_master.id], using=settings.DB_READONLY) if not has_event_item_nums: num = 0 else: num = has_event_item_nums[event_item_master.id] self.html_param['event_item'] = { 'name': event_item_master.name, 'num': num } self.html_param['shop_url'] = self.makeAppLinkUrl(UrlMaker.shop()) produce_score = ProduceEventScore.get_instance( model_mgr, uid, mid, using=settings.DB_READONLY) self.html_param['produce_eventscore'] = produce_score.to_dict() self.html_param['produce_rank'] = BackendApi.get_ranking_rank( ProduceEventRanking, mid, uid) self.writeHtml(cur_eventmaster, 'bossappear')