def load(): global is_loaded if is_loaded: return gamedata.load() global card_map cards = gamedata.get_cards() card_map = {parse_util.normalize(card.name): card for card in cards} for card in cards: if card.short_name: card_map[parse_util.normalize(card.short_name)] = card for alias, card in CARD_ALIAS_MAP.items(): card_map[alias] = card_map[card] global item_map items = gamedata.get_items() item_map = {parse_util.normalize(item.name): item for item in items} for item in items: if item.short_name: item_map[parse_util.normalize(item.short_name)] = item for alias, item in ITEM_ALIAS_MAP.items(): item_map[alias] = item_map[item] global any_map any_map = card_map | item_map is_loaded = True
def load(): import gamedata gamedata.load() import optimize optimize.load() from . import maps maps.load() from . import state state.load()
def load(): global is_loaded if is_loaded: return global items, trait_class gamedata.load() classify.load() items = gamedata.get_items() trait_class = classify.get_card_pack('trait') cycling_class = classify.get_card_pack('cycling') is_loaded = True
def main(): print('Scraping daily deal thread') info = scrape.daily_deal() now = datetime.datetime.now() now_s = f'{now:%m-%d-%Y}' if info['date'] != f'{now:%m-%d-%Y}': raise RuntimeError( f'Daily Deal is outdated; says {info["date"]} (checked {now_s})') if not info['done']: raise RuntimeError( f'Daily Deal is not done; says {info["date"]} (checked {now_s})') matches = [item for item in info['items'] if item in wishlist] print('Loading gamedata') gamedata.load() message = '' for match in matches: item = gamedata.get_item(match) card_names = '*' + '*, *'.join([card.name for card in item.cards]) + '*' image_name = item.image_name + '.png' print(f'Downloading image of {item.name}') image_path = gamedata.download_item_image(image_name) print('Uploading image to imgur') link = subprocess.check_output(f'imgur "{image_path}"', shell=True).decode('ascii')[:-1] message += f'**{match}** in DD, {now:%b. %m, %Y}. ({card_names}) [__{link}__]\n' print('Done!') if message: print('\nMaking announcement on Discord') chat.announce(message.strip()) print(message.strip()) else: print('\nNo item from wishlist today\n\n', '\n'.join(info['items']), sep='')
def battle_test(): event_list = [] scenario = None while True: print('Commands: (u)pdate, (r)efresh, (s)how, (d)ownload') command = input().lower().replace(' ', '') if command in "ur": event_list, scenario = reconstruct.load_battle() if not event_list: event_list, scenario = reconstruct.load_battle(log_filename) if command in "sr": print('> TITLE') print(scenario.name, 'aka', scenario.display_name) print(scenario.room_name) print('\n') print('> PLAYERS') print('User is {}, index {}'.format(scenario.user.name, scenario.user.index)) print('Enemy is {}, index {}'.format(scenario.enemy.name, scenario.enemy.index)) print('\n') print('> CHARACTERS') for i, enemy in enumerate(scenario.enemy.groups): print(i, enemy) print() print() print('> MAP') print(scenario.map) print('\n') print('> EVENTS') for i, event in enumerate(event_list): print(i, event) if command == 'd': gamedata.download() gamedata.load() print()
def main(): gamedata.load() optimize.load() archetype = input('Archetype: ') print('Card Classes:\n ', '\n '.join(sorted(optimize.get_card_packs().keys()))) print() card_pack_input = input('Optimize for: ') card_pack_combo = dict() total_weight = 0 for card_pack_input in card_pack_input.split(','): if '=' in card_pack_input: name, weight = card_pack_input.split('=') name = name.replace(':', '').strip() weight = float(weight.strip()) else: name = card_pack_input.replace(':', '').strip() weight = 1 if ':' in card_pack_input: card_pack = {name: weight} else: card_pack = optimize.get_card_pack(name) for card in card_pack: card_pack_combo[card] = card_pack_combo.get( card, 0) + weight * card_pack[card] total_weight += weight for card in card_pack_combo: card_pack_combo[card] /= total_weight score, num_traits, optimum = optimize.find(archetype, card_pack_combo)[0] print('\nTotal value: {}\nNumber of traits: {}\nAverage value: {}'.format( score, num_traits, score / (36 - num_traits))) print() print(', '.join(str(x) for x in optimum)) print() for item in optimum: print(', '.join([str(card) for card in item.cards]), sep='')