Esempio n. 1
0
    def setUp(self):
        # Player.
        self.__player0 = self.create_dummy(DummyType.PLAYER)

        # デッキ.
        deck = Deck(id=self.__player0.id)
        cardmaster = self.create_dummy(DummyType.CARD_MASTER)

        arr = []
        for _ in xrange(Defines.DECK_CARD_NUM_MAX - 3):
            cardmaster = self.create_dummy(DummyType.CARD_MASTER)
            card = self.create_dummy(DummyType.CARD, self.__player0,
                                     cardmaster)
            arr.append(card.id)
        deck.set_from_array(arr)
        deck.save()

        # ボス.
        boss = self.create_dummy(DummyType.BOSS_MASTER)
        boss.hp = 1000000
        boss.defense = 10000
        boss.save()

        # 報酬.
        itemmaster = self.create_dummy(DummyType.ITEM_MASTER)
        cardmaster = self.create_dummy(DummyType.CARD_MASTER)
        prize = self.create_dummy(DummyType.PRIZE_MASTER,
                                  gold=100,
                                  gachapt=10,
                                  item=itemmaster,
                                  card=cardmaster)

        # エリア.
        area = self.create_dummy(DummyType.AREA_MASTER, bossid=boss.id)
        area.prizes = [prize.id]
        area.save()

        # スカウト.
        for _ in xrange(5):
            scout = self.create_dummy(DummyType.SCOUT_MASTER, area=area)
            self.create_dummy(DummyType.SCOUT_PLAY_DATA, self.__player0.id,
                              scout.id, scout.execution)

        self.__area = area

        bosshp, animdata = BackendApi.bossbattle(BackendApi.get_cards(arr),
                                                 boss)

        model_mgr = ModelRequestMgr()
        if bosshp < 1:
            BackendApi.tr_area_clear(model_mgr, self.__player0, area)
        BackendApi.tr_save_bossresult(model_mgr, self.__player0.id, area, boss,
                                      animdata, self.__player0.req_confirmkey)
        model_mgr.write_all()
        model_mgr.write_end()
        self.__battlekey = self.__player0.req_confirmkey

        self.create_dummy(DummyType.EVENT_BANNER_MASTER)
Esempio n. 2
0
    def setUp(self):
        # Player.
        self.__player0 = self.create_dummy(DummyType.PLAYER)

        self.__boss = self.create_dummy(DummyType.BOSS_MASTER)
        self.__boss.hp = 1
        self.__boss.save()

        # デッキ.
        deck = Deck(id=self.__player0.id)
        cardmaster = self.create_dummy(DummyType.CARD_MASTER)

        arr = []
        for _ in xrange(Defines.DECK_CARD_NUM_MAX - 3):
            cardmaster = self.create_dummy(DummyType.CARD_MASTER)
            arr.append(
                self.create_dummy(DummyType.CARD, self.__player0,
                                  cardmaster).id)
        deck.set_from_array(arr)
        deck.save()

        self.setUpRaidEvent(self.__player0,
                            dedicated_stage_max=5,
                            is_open=True)

        # 進行情報.
        self.__playdata = self.create_dummy(
            DummyType.RAID_EVENT_SCOUT_PLAY_DATA,
            self.__player0.id,
            self.eventmaster.id,
            stage=1,
            cleared=1,
            progress=1)

        self.__stagemaster = self.getStageByNumber(self.__playdata.stage)

        # ボス.
        bosshp, animdata = BackendApi.bossbattle(BackendApi.get_cards(arr),
                                                 self.__boss)

        model_mgr = ModelRequestMgr()
        if bosshp < 1:
            BackendApi.tr_raidevent_stage_clear(model_mgr, self.eventmaster,
                                                self.__player0,
                                                self.__stagemaster)
        BackendApi.tr_save_bossresult(model_mgr, self.__player0.id,
                                      self.__stagemaster, self.__boss,
                                      animdata, self.__player0.req_confirmkey)
        model_mgr.write_all()
        model_mgr.write_end()
Esempio n. 3
0
    def process(self):
        try:
            args = self.getUrlArgs('/bossbattle/')
            # エリア.
            areaid = int(args.get(0, None))
            scoutkey = urllib.unquote(args.get(1))[:32]
            self.setAreaID(areaid)
            if not scoutkey:
                raise CabaretError()
        except:
            raise CabaretError(u'引数が想定外です', CabaretError.Code.ILLEGAL_ARGS)
        
        model_mgr = self.getModelMgr()
        
        using = settings.DB_READONLY
        
        # ボス情報.
        boss = self.getBossMaster()

        if boss is None or not self.checkBossBattleAble(model_mgr, using=using):
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'まだこの街の太客には接客できません', CabaretError.Code.ILLEGAL_ARGS)
            self.callFunctionByFromPage('redirectToScoutTop')
            return
        
        # デッキのカード.
        cardlist = self.getDeckCardList()
        
        # 戦闘計算.
        _, animdata = BackendApi.bossbattle(cardlist, boss)
        
        # 書き込み.
        try:
            self.callFunctionByFromPage('write', animdata, scoutkey).write_end()
        except CabaretError, e:
            if e.code == CabaretError.Code.ALREADY_RECEIVED:
                pass
            else:
                raise