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)
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()
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