예제 #1
0
    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()
예제 #2
0
파일: common.py 프로젝트: sobolews/BillsPC
 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)
예제 #3
0
 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)