Esempio n. 1
0
 def makeCardObject(self, cardset, deck):
     obj_card = Objects.card(self, cardset, deck=deck)
     if cardset.card.id == self.__baseid or cardset.card.protection or obj_card[
             'deckmember']:
         raise CabaretError(u'パートナーに選択できないキャストです.',
                            CabaretError.Code.ILLEGAL_ARGS)
     url = UrlMaker.compositionmaterial(self.__baseid)
     obj_card['url_composition'] = self.makeAppLinkUrl(url)
     return obj_card
Esempio n. 2
0
    def process(self):
        v_player = self.getViewerPlayer()
        model_mgr = self.getModelMgr()

        # 合成結果.
        compositiondata = BackendApi.get_compositiondata(
            model_mgr, v_player.id, using=settings.DB_READONLY)

        # ベースカード.
        basecardset = BackendApi.get_cards([compositiondata.result_baseid],
                                           model_mgr,
                                           using=settings.DB_READONLY)
        if not basecardset or basecardset[0].card.mid != compositiondata.mid:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'教育したキャストが見つかりません.')
            url = UrlMaker.composition()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return
        basecardset = basecardset[0]

        self.html_param['basecard_post'] = Objects.card(self, basecardset)
        compositiondata.set_to_card(basecardset.card)
        self.html_param['basecard_pre'] = Objects.card(self, basecardset)

        # 素材カード.
        materialcardsetlist = BackendApi.get_cards(
            compositiondata.result_materialidlist,
            model_mgr,
            using=settings.DB_READONLY,
            deleted=True)
        self.html_param['cardlist'] = [
            Objects.card(self, cardset) for cardset in materialcardsetlist
        ]

        # 経験値とレベル.
        self.html_param['exp'] = compositiondata.result_exp
        self.html_param['levelup'] = compositiondata.result_lvup

        # お金.
        self.html_param['cost'] = compositiondata.result_cost_gold

        # スキル.
        self.html_param['skilllevelup'] = compositiondata.result_skilllvup

        # 成功 or 大成功.
        self.html_param[
            'is_great_success'] = compositiondata.result_flag_great_success

        # 上昇値.
        level_pre = compositiondata.result_lvpre
        level_add = compositiondata.result_lvup
        power_add = 0
        if 0 < level_add:
            basemaster = basecardset.master
            pow_pre = CardUtil.calcPower(basemaster.gtype,
                                         basemaster.basepower,
                                         basemaster.maxpower, level_pre,
                                         basemaster.maxlevel,
                                         basecardset.card.takeover)
            pow_post = CardUtil.calcPower(basemaster.gtype,
                                          basemaster.basepower,
                                          basemaster.maxpower,
                                          level_pre + level_add,
                                          basemaster.maxlevel,
                                          basecardset.card.takeover)
            power_add = pow_post - pow_pre
        self.html_param['power_add'] = power_add
        self.html_param['level_add'] = level_add
        self.html_param['skilllevel_add'] = compositiondata.result_skilllvup

        # 続けて合成のURL.
        url = UrlMaker.compositionmaterial(basecardset.id)
        self.html_param['url_continue'] = self.makeAppLinkUrl(url)

        self.writeAppHtml('composition/complete')
Esempio n. 3
0
 def makeUrlSelf(self):
     return UrlMaker.compositionmaterial(self.__baseid)
Esempio n. 4
0
    def process(self):
        args = self.getUrlArgs('/bossresult/')
        try:
            # エリア.
            areaid = int(args.get(0, None))
            self.setAreaID(areaid)
            battlekey = urllib.unquote(args.get(1))[:32]
            if not battlekey:
                raise
        except:
            raise CabaretError(u'引数が想定外です', CabaretError.Code.ILLEGAL_ARGS)

        model_mgr = self.getModelMgr()
        v_player = self.getViewerPlayer()
        uid = v_player.id

        using = settings.DB_READONLY

        # 結果.
        bossbattle = BackendApi.get_bossresult(model_mgr,
                                               uid,
                                               areaid,
                                               using=using)
        if bossbattle is None:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'結果が見つかりませんでした',
                                   CabaretError.Code.ILLEGAL_ARGS)
            self.callFunctionByFromPage('redirectToScoutTop')
            return

        animdata = bossbattle.anim

        is_win = animdata.winFlag
        b_hp = animdata.bossHpPost

        # ボス情報.
        boss = self.getBossMaster()
        self.html_param['boss'] = self.makeBossObj(boss, b_hp)

        # デッキのカード.
        self.putDeckInfoParams()

        area = self.getAreaMaster()
        self.html_param['area'] = self.makeAreaObj(area, playdata=None)

        if is_win:
            # エリアクリア報酬情報.
            prizeidlist = self.callFunctionByFromPage('getAreaPrize')
            prizelist = BackendApi.get_prizelist(model_mgr,
                                                 prizeidlist,
                                                 using=using)
            self.html_param['prize'] = BackendApi.make_prizeinfo(self,
                                                                 prizelist,
                                                                 using=using)

            # 次のエリアの情報.
            self.callFunctionByFromPage('putNextAreaInfo')

            self.writeAppHtml('boss/bosswin')
        else:
            # イベントバナー.
            eventbanners = BackendApi.get_eventbanners(
                self, using=settings.DB_READONLY)
            if eventbanners:
                self.html_param['eventbanners'] = [
                    Objects.eventbanner(self, banner)
                    for banner in eventbanners
                ]

            # 強化合成素材選択のページ.
            deck = self.getDeck()
            url = UrlMaker.compositionmaterial(deck.leader)
            self.html_param['url_composition_material'] = self.makeAppLinkUrl(
                url)

            self.writeAppHtml('boss/bosslose')