async def pokequizset(self, ctx, poke_id): """ ポケモンクイズをセットするぞ! """ msg_tmp = await ctx.send(ctx.author.mention + ' **' + poke_id + '**を確認中!ちょっとまってて...') try: pb.pokemon(poke_id) except: await msg_tmp.edit(content=ctx.author.mention + ' **' + poke_id + '**は見つからなかったぞ...') else: await msg_tmp.delete() if len(self.poke_quiz_id) > 50: self.poke_quiz_id.popitem() quiz_id = str(random.randint(100000, 999999)) self.poke_quiz_id[quiz_id] = [poke_id, str(ctx.author.mention)] embed = discord.Embed(title='ポケモンクイズID', description=ctx.author.mention + ' 次のコマンドを打つとクイズが出題できるよ!', color=random.randint(0, 0xffffff)) embed.add_field(name='コマンド', value='```/pq ' + quiz_id + '```', inline=False) await ctx.send(embed=embed)
def initialisePokemonIndividual(): # Generates the default form and later on checks for other forms formID = random.randrange(constants.MIN_FORMID, constants.MAX_FORMID + 1) itemID = None if random.random( ) <= constants.NO_HELD_ITEM_RATE else problemHelper.initialiseItem() level = random.randrange(constants.MIN_LEVEL, constants.MAX_LEVEL + 1) shiny = random.choice([True, False]) happiness = random.randrange(constants.MIN_HAPPINESS, constants.MAX_HAPPINESS + 1) natureID = random.randrange(constants.MIN_NATUREID, constants.MAX_NATUREID + 1) ivHP, ivAtk, ivDef, ivSpA, ivSpD, ivSpe = problemHelper.initialiseIVs() #Initialise EVs to Minumum ev value evHP, evAtk, evDef, evSpA, evSpD, evSpe = problemHelper.initialiesEVs() #Pokemon dependant info so references the pokemon to get relevant info formVarieties = pb.pokemon(formID).species.varieties formRand = random.randrange(0, len(formVarieties)) formID = formVarieties[ formRand].pokemon.id # Update the formID into new form p = pb.pokemon(formID) #Get the pokemon to reference #Randomly generate an ability slot ability = problemHelper.initialiseAbility(p) #Randomly generates a gender but at the correct ratio gender = problemHelper.initialiseGender(p) move1, move2, move3, move4 = problemHelper.initialiseMoves(p) #Check and remove move duplication if (move1 == move2 or move1 == move3 or move1 == move4): # print("Duplicate Move") #DEBUG move1 = None if (move2 == move3 or move2 == move4): # print("Duplicate Move") #DEBUG move2 = None if (move3 == move4): # print("Duplicate Move") #DEBUG move3 = None # Check for no moves if (move1 == None and move2 == None and move3 == None and move4 == None): move1 = p.moves[random.randrange(0, len(p.moves))].move.id return pokemonIndividual(formID, gender, itemID, ability, level, shiny, happiness, natureID, evHP, evAtk, evDef, evSpA, evSpD, evSpe, ivHP, ivAtk, ivDef, ivSpA, ivSpD, ivSpe, move1, move2, move3, move4)
def __init__(self, num: int): self.num = num self.form_config = FormConfig(num) # Look up the pokemon and species information self.base_pokemon = pokebase.pokemon(self.form_config.base_num) self.species = self.base_pokemon.species # Set the actual pokemon # Most cases will be the same as the base if self.num == self.form_config.base_num: self.pokemon = self.base_pokemon # Added pokemon need their form (Mega, Alolan, etc.) looked up through the specified id else: self.pokemon = pokebase.pokemon(self.form_config.id)
def validateMoves(pc): moves = [pc.move1, pc.move2, pc.move3, pc.move4] p = pb.pokemon(pc.formID) #Get the pokemon to reference for x in range(0, constants.NUMBER_OF_MOVES): if (moves[x] != None): inMoveList = False for i in range(0, len(p.moves)): if (moves[x] == p.moves[i].move.id): inMoveList = True if (inMoveList == False): return None # Check for no moves if (pc.move1 == None and pc.move2 == None and pc.move3 == None and pc.move4 == None): return None # Check for move duplication #TODO: CLEAN THIS MESS UP if (pc.move1 != None and (pc.move1 == pc.move2 or pc.move1 == pc.move3 or pc.move1 == pc.move4)): return None if (pc.move2 != None and (pc.move2 == pc.move3 or pc.move2 == pc.move4)): return None if (pc.move3 != None and (pc.move3 == pc.move4)): return None return pc
async def pokemon_game(self, ctx): """Игра “Угадай покемона„. Суть игры проста - нужно написать в чат имя покемона, изображенного в сообщении. """ def message_check(m): return m.author.id == ctx.author.id resp = requests.get('https://pokeapi.co/api/v2/pokemon/') pokemons = [x['name'] for x in resp.json()['results']] pokemon_name = choice(pokemons) pokemon = pb.pokemon(pokemon_name) embed = discord.Embed(color=0x42f453, title='Игра “Угадай покемона„', description='У вас есть 30 секунд, чтобы отгадать этого покемона.\nПишите имя латиницей.') embed.set_author(name=ctx.author.name, icon_url=ctx.author.avatar_url) embed.set_footer(text=f'{ctx.prefix}{ctx.command}') embed.set_image(url=f'https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/{pokemon.id}.png') await ctx.send(embed=embed) try: msg = await self.bot.wait_for('message', check=message_check, timeout=30.0) if msg.content.lower() == pokemon_name: await ctx.send('Вы ответили верно! :cake:') else: await ctx.send('Ответ неверный. Ничего, повезет в следующий раз!') except asyncio.TimeoutError: await ctx.send(':x: Нет ответа. Ничего, повезет в следующий раз!')
def index(): pkmnNum = random.randint(1, 807) pkmnSprite = pb.pokemon_sprite(pkmnNum) pkmnName = pb.pokemon(pkmnNum) im = pkmnSprite.path pkmnImage = (im.split('/')[7]) dex = pb.pokemon_species(pkmnNum) #API info sent to html page pkmnInfo = [ dex.generation, pkmnName.weight, pkmnName.height, dex.habitat, pkmnName.types[0].type ] # Move path of cached sprite to static folder (may need to change second argument to full path based on user setup) os.rename(im, "/static/" + pkmnImage) return ''' <html> <head> <title>Pokemon</title> </head> <body> <center><h1 style = "font-family:'Helvetica Neue';font-size:50px;font-style:bold;">''' + str( pkmnName).capitalize() + '''</h1></center> <center><img src= "/static/''' + str(pkmnNum).capitalize( ) + '''.png" style="width:270px;height:270px;"></center> <center><p style = "font-family:'Helvetica Neue';font-size:20px;font-style:bold;"> <br> Generation: ''' + str(pkmnInfo[0]) + ''' <br> Weight: ''' + str(pkmnInfo[1]) + ''' <br> Height: ''' + str(pkmnInfo[2]) + ''' <br> Habitat: ''' + str(pkmnInfo[3]) + ''' <br> Type: ''' + str(pkmnInfo[4]) + '''
def get_info(ID): try: pokemon = pb.pokemon(ID) data = { "Name": pokemon.name.capitalize(), "ID": pokemon.id, "Description": get_description(pokemon.name), "Type": pokemon.types[0].type.name.capitalize(), "Moves": [move.move.name.capitalize() for move in pokemon.moves[:4]], "Weight": pokemon.weight, "XP": pokemon.base_experience, "Picture": pokemon.sprites.front_default } except ValueError: data = { "Name": "Error", "ID": 0, "Description": "Pokemon not found.", "Type": "", "Moves": [], "Weight": 0, "XP": 0, "Picture": "https://proxy.duckduckgo.com/iu/?u=https%3A%2F%2Ftse4.mm.bing.net%2Fth%3Fid%3DOIP.bbU3UEm62vuPiONlcNx09gHaHZ%26pid%3D15.1&f=1" } json_data = json.dumps(data) return json_data
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) pikachu = pb.pokemon(25) print(pikachu) context['pikachu'] = pikachu self.set_param(context, 'pikachu') return context
def getPokemonData(pokemon_id): truncateTables() for n in range(1,pokemon_id+1): p1=pokebase.pokemon(n) pokemon=(p1.id,p1.name,p1.weight) conn=getConn() lstRowid=pokemon_insert(conn,pokemon) for i in range(0,len(p1.moves)): try: move=p1.moves[i].move.name accuracy=pokebase.move(move).accuracy if (accuracy==None): accuracy=0 type=pokebase.move(move).type.name print("pokemon name:"+p1.name) print("pokemon id:"+str(p1.id)) print("move name :"+move) print("move id:"+str(p1.moves[i].move.id)) print ("type="+type) pokemon_move=(move,p1.id,p1.moves[i].move.id,accuracy,pokebase.move(move).type.id) conn=getConn() lstRowid=pokemonMove_insert(conn,pokemon_move) except: continue for i in range(0,len(p1.types)): print("pokemon type:"+p1.types[i].type.name) pokemon_type=(p1.types[i].type.name,p1.id,p1.types[i].type.id) conn=getConn() lstRowid=pokemonType_insert(conn,pokemon_type) print("pokemon weight:"+str(p1.weight))
def findPokemon(num): poke = pokebase.pokemon(num) info = {} info["Name"] = poke info["Height"] = poke.height info["Sprite"] = pokebase.pokemon_sprite(num).path return info
def get_pokemon_by_id(poke_id): pokemon = pb.pokemon(poke_id) return { "name": pokemon.name, "sprite_url": pokemon.sprites.front_default, "poke_id": pokemon.id }
def profile(): if 'user' in session: raw_pokemon = db.getPokemon(session['user']) pokemon = [] #list of all the pokemon you've encountered and info about them for key in raw_pokemon: pokedata = pokebase.pokemon(int(key) + 1) this_pokemon = {} this_pokemon['sprite'] = pokedata.sprites.front_default.encode( 'ascii', 'ignore') this_pokemon['id'] = pokedata.id this_pokemon['name'] = pokedata.name.encode('ascii', 'ignore').title() this_pokemon['type1'] = pokedata.types[0].type.name.title() if len(pokedata.types) > 1: #type1: this pokemon has been caught! #type2: encountered but not caught this_pokemon['type2'] = pokedata.types[1].type.name.title() else: this_pokemon['type2'] = '' if raw_pokemon[key] == '1': this_pokemon['caught'] = False else: this_pokemon['caught'] = True pokemon.append(this_pokemon) return render_template('profile.html', title='Profile', pokemon=pokemon, log=True) else: return redirect('/login')
def add_pokemon(self, list_to_add): print len(self.all()) if self.all() != 0: for pokemon in list_to_add: print pokemon name = pokemon[1] api_url = pokemon[0] if len(self.filter(name=name)) != 0: print 'pokemon already exist' continue # this pulls the pokemon object from the pokebase pokeData = pb.pokemon(name) pk_id = pokeData.id pk_height = float(pokeData.height) * 0.1 pk_weight = float(pokeData.weight) * 0.1 types = pokeData.types # Types is a list including all the types for the pokemon print types newPokemon = self.create(pk_id=pk_id, name=name, api_url=api_url, pk_height=pk_height, pk_weight=pk_weight) for pk_type in types: name = pk_type.type type2add = PokeType.objects.get(name=name) newPokemon.pk_type.add(type2add) print newPokemon.pk_type.all()
async def getPokemonEvolution(pokemon): pkmn = "" if isinstance(pokemon, str): pkmn = pb.pokemon(pokemon.lower().replace("'", "")) if isinstance(pokemon, int): pkmn = pb.pokemon(pokemon) em = discord.Embed() em.set_author(name=GG.cleanWordDash(pkmn.name)) spriteUrl = pkmn.sprites.front_default types = pkmn.types if len(types) == 2: type = GG.cleanWordDash(types[1].type.name) type2 = GG.cleanWordDash(types[0].type.name) color = GG.getColorOfType(type.lower()) else: type = GG.cleanWordDash(types[0].type.name) type2 = None color = GG.getColorOfType(type.lower()) getSpecieName = pkmn.species.url.replace( "http://pokeapi.co/api/v2/pokemon-species/", "") species = pb.pokemon_species(getSpecieName) flavorText = GG.getFlavorText(species.flavor_text_entries) em.description = flavorText getId = re.search(r"/([0-9]*)/$", str(species.evolution_chain.url) + "/").group().replace( "/", "") evolutionChain = pb.evolution_chain(getId) start, chain = getEvolution(evolutionChain.chain) if chain != f"{start}\n": if chain.startswith(f"{start}\n"): chain = chain.replace(f"{start}\n", "", 1) em.set_thumbnail(url=spriteUrl) if chain != "": em.add_field(name="Evolution Chain", value=chain, inline=False) else: em.add_field(name="Evolution Chain", value="This Pokémon has no evolution chain.") em.colour = int("0x" + color, 0) return em
async def randomMon(ctx): pokemonID = random.randint(1, 807) pokemon = pb.pokemon(pokemonID) typing = str(pokemon.types[0].type) if len(pokemon.types) > 1: typing += f'/{pokemon.types[1].type}' await ctx.send( f'https://pokeres.bastionbot.org/images/pokemon/{pokemonID}.png' + f'\n{str(pokemon)} \n type: {typing}')
def get_pokemons(limit=10): r = requests.get( 'https://pokeapi.co/api/v2/pokemon?limit={}'.format(limit)) if r.status_code != 200: return pokemons = r.json()['results'] for pokemon in pokemons: pokemon['image'] = pb.pokemon(pokemon['name']).sprites.front_default return pokemons
def pokemon(): PKMN = random.randint(1, 898) img = pb.SpriteResource('pokemon', PKMN) pkmnName = (pb.pokemon(PKMN).name).upper() client = mqtt.Client("Richi") client.connect(BROKER, 1883, 60) client.publish(TOPICO, img.url) messagebox.showinfo(TOPICO, "Se ah enviado el Pokemon: " + pkmnName + " al topico")
def _extract_pokemon(self, message): name = _extract_name(message, self.pokemon_names) if not name: return None try: return pokemon(name) except ValueError: LOG.error("Couldn't find pokemon with name: '" + str(name)) raise
def __init__(self, id, level): self.id = id self.level = level self.iv = random.randint(0, 31) self.hp_ev = 0 self.attack_ev = 0 self.defense_ev = 0 self.sp_attack_ev = 0 self.sp_defense_ev = 0 self.speed_ev = 50 self.total_ev = self.hp_ev + self.attack_ev + self.defense_ev + self.sp_attack_ev + self.defense_ev + self.speed_ev self.pokemon = [] try: with open('assets/Pokemon/JSON/' + str(id) + '.json', mode='rb') as f: try: self.pokemon = json.load(f) except Exception as e: print(e) pass except IOError: pokemon = pb.pokemon(id) with open('assets/Pokemon/JSON/' + str(id) + '.json', 'a') as f: f.write('[') json.dump(pokemon.data(), f) f.write(']') with open('assets/Pokemon/JSON/' + str(id) + '.json', mode='rb') as f: try: self.pokemon = json.load(f) except Exception as e: print(e) pass self.stat = {'speed': 0, 'special-defense': 1, 'special-attack': 2, 'defense': 3, 'attack': 4, 'hp': 5} self.name = self.pokemon[0]['name'].capitalize() self.max_hp = math.floor((2 * self.get_stat('hp', 'base_stat') + self.iv + (0 / 4) * level) / 100 + level + 10) self.current_hp = self.max_hp self.attack = math.floor((2 * self.get_stat('attack', 'base_stat') + self.iv + (self.attack_ev / 4) * level) / 100 + 5) # * nature self.defense = math.floor((2 * self.get_stat('defense', 'base_stat') + self.iv + (self.defense_ev / 4) * level) / 100 + 5) # * nature self.speed = math.floor((2 * self.get_stat('speed', 'base_stat') + self.iv + (self.speed_ev / 4) * level) / 100 + 5) # * nature self.sp_attack = math.floor((2 * self.get_stat('special-attack', 'base_stat') + self.iv + (self.sp_attack_ev / 4) * level) / 100 + 5) # * nature self.sp_defense = math.floor((2 * self.get_stat('special-defense', 'base_stat') + self.iv + (self.sp_defense_ev / 4) * level) / 100 + 5) # * nature self.mod_values = [0, 0, 0, 0, 0] self.moves = [] print(self.name, self.speed) for move in self.pokemon[0]['moves']: i = 0 for version in move['version_group_details']: if version['version_group']['name'] == "emerald": if move['version_group_details'][i]['move_learn_method']['name'] == 'level-up': if move['version_group_details'][i]['level_learned_at'] <= self.level: self.moves.append(Move(move['move']['name'])) i += 1
def get_pokemon_data(name): try: result = local_pokemon_cache[name] except KeyError as e: local_pokemon_cache[name] = pb.pokemon(name) result = local_pokemon_cache[name] except Exception as e: raise e return result
def get_context_data(self, **kwargs): context = super(IndexView, self).get_context_data(**kwargs) self.index = random.randint(1, 808) pokemon = pb.pokemon(self.index) context['pokemon'] = pokemon individual_range = range(0, 31) context['individual_range'] = individual_range effort_range = range(0, 252, 4) context['effort_range'] = effort_range return context
def add_meta(self): temp = poke.pokemon(self.species) self.sprite = temp.sprites.front_default pic_string = f"https://assets.pokemon.com/assets/cms2/img/pokedex/full/{self.number.zfill(3)}.png" self.main_pic = pic_string temp2 = poke.pokemon_species(self.species) self.evolve_chain = temp2.evolution_chain.id print(f"pic: {self.sprite}") print(f"evolve num: {self.evolve_chain}") print(f"evolve num: {self.main_pic}")
def initail(self): self.dex = pb.NamedAPIResource('pokedex', 'kanto') #for the individual pokemon self.dict = self.dex.pokemon_entries num = len(self.dict) file = open('pokemon_entry.csv', 'w') file.write('name\n') for x in range(0, num): temp = (str(self.dict[x]).split("'name': '", 1)[1]) for j in str(temp): if j == "'": file.write('\n') break else: file.write(j) file.close() with open('pokemon_entry.csv') as csvfile: reader = csv.DictReader(csvfile) file = open('pokemon_dict.csv', 'w') file.write('name,' + 'height,' + 'weight,' + 'type1,' + 'type2,' + 'type3,' + 'type4,' + 'url\n') for z in reader: print('loading:' + z['name']) temp = pb.pokemon(z['name']) file.write(str(z['name']) + ',') file.write(str(temp.height) + ',') file.write(str(temp.weight) + ',') for j in range(0, 4): try: write = str(temp.types[j]).split("'name': '", 1)[1] for j in str(write): if j == "'": file.write(',') break else: file.write(j) except: file.write('0,') writeURL = str(temp.sprites).split("'front_default': '", 1)[1] for j in str(writeURL): if j == "'": break else: file.write(j) file.write('\n') print("loading Pokemons complete!")
def refresh_base(self): p_stats = poke.pokemon(self.number).stats self.b_hp = p_stats[0].base_stat self.b_defense = p_stats[1].base_stat self.b_attack = p_stats[2].base_stat self.b_s_attack = p_stats[3].base_stat self.b_s_defense = p_stats[4].base_stat self.b_speed = p_stats[5].base_stat print(f"hp: {self.b_hp}") print(f"def: {self.b_defense}") print(f"att: {self.b_attack}")
def pokemonMovePower(move, pokemonAtk, pokemonDef): if (move == None): return 0 elif (pb.move(move).damage_class.id == pb.move_damage_class(1).id): return 0 else: # Set the base power moveBasePower = pb.move(move).power # If the move has variable power its base power is None if (moveBasePower == None): return 0 #Get Move Type moveType = pb.move(move).type # Apply STAB pokemonAtkTypes = pb.pokemon(pokemonAtk.formID).types for j in range(0, len(pokemonAtkTypes)): if (moveType.id == pokemonAtkTypes[j].type.id): moveBasePower *= 1.5 # Check for Weakness/Resistance against each type pokemonDefTypes = pb.pokemon(pokemonDef.formID).types for j in range(0, len(pokemonDefTypes)): #Check Move effectivness against the opponent type #No Effect noDamageTo = moveType.damage_relations.no_damage_to for k in range(0, len(noDamageTo)): if (noDamageTo[k]['name'] == pokemonDefTypes[j].type.name): moveBasePower *= 0 #Half Damage halfDamageTo = moveType.damage_relations.half_damage_to for k in range(0, len(halfDamageTo)): if (halfDamageTo[k]['name'] == pokemonDefTypes[j].type.name ): moveBasePower *= 0.5 #Double Damage doubleDamageTo = moveType.damage_relations.double_damage_to for k in range(0, len(doubleDamageTo)): if (doubleDamageTo[k]['name'] == pokemonDefTypes[j].type.name): moveBasePower *= 2 #Return the final base power return moveBasePower
def load_pokemon(): """Load unique Pokemon creatures for the battle simulator """ ability = Ability.objects.first() nature = Nature.objects.get(name='quirky') for species in Species.objects.all(): pokemon = Pokemon.objects.create(species=species, ability=ability, nature=nature) for move in pb.pokemon(species.name).moves: if is_selected(move): move_name = move.move.name pokemon.moves.add(Move.objects.get(name=move_name))
def create_pokemon(name_or_id): if name_or_id.isnumeric(): name_or_id = int(name_or_id) elif type(name_or_id) is str and len(name_or_id) > 0: name_or_id = name_or_id.lower() else: return -1 pokemon = pb.pokemon(name_or_id) try: test = pokemon.base_experience except: return -1 return pokemon
def capture(): if 'user' in session: pokemon_id = session['encounter'] pokemon_id = int(pokemon_id) pokemon = pokebase.pokemon(pokemon_id) db.addPokemon(session['user'], pokemon_id - 1, False) #false- pokemon has been encountered, not caught return render_template('capture.html', sprite=pokemon.sprites.front_default, name=pokemon.name, title=pokemon.name, log=True) return redirect('/')
async def stats(self, ctx, name: str): try: pokemon = pb.pokemon(name.lower()) embed = discord.Embed(title=f'Base stats for {pokemon.name}', colour=self.bot.main_colour) for stat in pokemon.stats: embed.add_field(name=stat.stat.name, value=stat.base_stat) await ctx.send(embed=embed) except AttributeError: await ctx.send(f'The pokemon `{name}` doesn\'t exist!') return
def load_encounter(): #spawn pokemon based on rarity rarity_list = [1] * 10 + [2] * 9 + [3] * 8 + [4] * 7 + [5] * 6 + [ 6 ] * 5 + [7] * 4 + [8] * 3 + [9] * 2 + [10] rarity = random.choice(rarity_list) pokemon_choice = db.getPokemonWithRarity(rarity) pokemon = pokebase.pokemon(pokemon_choice[0]) pokedict = {} pokedict['name'] = pokemon.name.encode('ascii', 'ignore') pokedict['sprite'] = pokemon.sprites.front_default.encode( 'ascii', 'ignore') pokedict['id'] = pokemon.id return pokedict.__str__()
def __init__(self, command_line_args): self.command_line_args = command_line_args self.quick_look_up = pb.pokemon(command_line_args.name)