def new_battle(self, p0_name='vaporeon', p1_name='leafeon', p0_moves=(), p1_moves=(), p0_item=None, p1_item=None, p0_ability='_none_', p1_ability='_none_', p0_level=100, p1_level=100, p0_gender=None, p1_gender=None, p0_evs=(0,)*6, p1_evs=(0,)*6, p0_ivs=(31,)*6, p1_ivs=(31,)*6, tearDown=True, any_move=True): """ `name` is the species name of a pokemon in the pokedex. `moves` is a list of up to four moves `item` is the name of an item in the itemdex. `ability` is the name of an ability in the abilitydex. `level` is an int in [1..100] `gender` is in [None, 'M', 'F'] `any_move` controls whether to use AnyMovePokemon """ if tearDown: self.tearDown() self._names = [p0_name, p1_name] p0_moves = [movedex[move] if isinstance(move, str) else move for move in p0_moves] p1_moves = [movedex[move] if isinstance(move, str) else move for move in p1_moves] PokemonClass = AnyMovePokemon if any_move else BattlePokemon setattr(self, p0_name, PokemonClass(pokedex[p0_name], side=None, ability=abilitydex[p0_ability], evs=p0_evs, ivs=p0_ivs, moves=p0_moves, item=itemdex.get(p0_item), level=p0_level, gender=p0_gender)) setattr(self, p1_name, PokemonClass(pokedex[p1_name], side=None, ability=abilitydex[p1_ability], evs=p1_evs, ivs=p1_ivs, moves=p1_moves, item=itemdex.get(p1_item), level=p1_level, gender=p1_gender)) self.battle = TestingBattle([getattr(self, p0_name)], [getattr(self, p1_name)], policy0=TestingRolloutPolicy(0), policy1=TestingRolloutPolicy(1)) # for determinism: self.battle.get_critical_hit = lambda crit: False # no crits self.battle.damage_randomizer = lambda: 100 # max damage self.battle.init_battle()
def assertItem(self, pokemon, item): self.assertEqual(pokemon.item, itemdex.get(item)) if item is None: self.assertFalse(pokemon.has_effect(ITEM)) elif pokemon.is_active: held = pokemon.get_effect(ITEM) self.assertIsNotNone(held) self.assertEqual(held.name, item)
def add_pokemon(self, name, side, ability='_none_', item=None, moves=()): """ `side` is 0 or 1. Other params are like self.new_battle """ moves = [movedex[move] if isinstance(move, str) else move for move in moves] battle_side = self.battle.battlefield.sides[side] pokemon = AnyMovePokemon(pokedex[name], side=battle_side, evs=(0,)*6, ivs=(31,)*6, moves=moves, ability=abilitydex[ability], item=itemdex.get(item)) setattr(self, name, pokemon) battle_side.team.append(pokemon) self._names.append(name)