async def _start_standard_battle(ps_websocket_client: PSWebsocketClient, pokemon_battle_type): battle, opponent_id, user_json = await _initialize_battle_with_tag(ps_websocket_client) battle.battle_type = constants.STANDARD_BATTLE await ps_websocket_client.send_message(battle.battle_tag, [config.greeting_message]) reset_logger(logger, "{}-{}.log".format(battle.opponent.account_name, battle.battle_tag)) msg = '' while constants.START_TEAM_PREVIEW not in msg: msg = await ps_websocket_client.receive_message() preview_string_lines = msg.split(constants.START_TEAM_PREVIEW)[-1].split('\n') opponent_pokemon = [] for line in preview_string_lines: if not line: continue split_line = line.split('|') if split_line[1] == constants.TEAM_PREVIEW_POKE and split_line[2].strip() == opponent_id: opponent_pokemon.append(split_line[3]) battle.initialize_team_preview(user_json, opponent_pokemon, pokemon_battle_type) await _handle_team_preview(battle, ps_websocket_client) return battle
async def start_battle(ps_websocket_client, pokemon_battle_type): if "random" in pokemon_battle_type: Scoring.POKEMON_ALIVE_STATIC = 30 # random battle benefits from a lower static score for an alive pkmn battle = await start_random_battle(ps_websocket_client, pokemon_battle_type) else: battle = await start_standard_battle(ps_websocket_client, pokemon_battle_type) reset_logger(logger, "{}-{}.log".format(battle.opponent.account_name, battle.battle_tag)) await ps_websocket_client.send_message(battle.battle_tag, [config.greeting_message]) await ps_websocket_client.send_message(battle.battle_tag, ['/timer on']) return battle
async def _start_random_battle(ps_websocket_client: PSWebsocketClient): battle, opponent_id, user_json = await _initialize_battle_with_tag(ps_websocket_client) reset_logger(logger, "{}-{}.log".format(battle.opponent.account_name, battle.battle_tag)) while True: msg = await ps_websocket_client.receive_message() if constants.START_STRING in msg: msg = msg.split(constants.START_STRING)[-1] for line in msg.split('\n'): if opponent_id in line and constants.SWITCH_STRING in line: battle.start_random_battle(user_json, line) continue if battle.started: await update_battle(battle, line) return battle