11 |
12 |
13 | );
14 |
--------------------------------------------------------------------------------
/src/client/wip/Console.js:
--------------------------------------------------------------------------------
1 | import React, { PureComponent } from 'react'
2 | import {branch} from 'baobab-react/higher-order'
3 |
4 | const styles = {
5 | flex: 1,
6 | backgroundColor: 'black',
7 | color: 'lime',
8 | padding: 16
9 | }
10 |
11 | class Console extends PureComponent {
12 | render() {
13 | let {
14 | logs = [],
15 | } = this.props
16 |
17 | return
18 | {logs.map(log=>
{log}
)}
19 |
20 | }
21 | }
22 |
23 | export default branch({
24 | logs: ['logs']
25 | }, Console)
26 |
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "babel-eslint",
3 | "extends": "airbnb",
4 | "env": {
5 | "browser": true,
6 | "mocha": true,
7 | "node": true
8 | },
9 | "rules": {
10 | "consistent-return": 0,
11 | "comma-dangle": 0,
12 | "no-use-before-define": 0,
13 | "import/no-unresolved": [2, { ignore: ['electron'] }],
14 | "react/jsx-no-bind": 0,
15 | "react/prefer-stateless-function": 0
16 | },
17 | "plugins": [
18 | "import",
19 | "react"
20 | ],
21 | "settings": {
22 | "import/resolver": "webpack"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/server/buildInServer.js:
--------------------------------------------------------------------------------
1 | // bundle in electron main process?
2 |
3 | /* eslint no-console: 0 */
4 | import express from 'express';
5 | import pokemonServer from './pokemonServer';
6 |
7 | const app = express();
8 | const PORT = 3000;
9 |
10 | app.use(express.static(__dirname + '/../shared/assets'));
11 |
12 | // create server
13 | const server = app.listen(PORT, 'localhost', err => {
14 | if (err) {
15 | console.error(err);
16 | return;
17 | }
18 |
19 | console.log(`Listening at http://localhost:${PORT}`);
20 | });
21 |
22 | // create socket.io server
23 | pokemonServer(server);
24 |
--------------------------------------------------------------------------------
/src/server/api/pokemon.js:
--------------------------------------------------------------------------------
1 | import pogobuf from 'pogobuf'
2 |
3 | const pokemon = (client, store) => ({
4 | getInventory: async function getInventory() {
5 | let inventory = await client.getInventory(0)
6 | inventory = pogobuf.Utils.splitInventory(inventory);
7 | store.set(['inventory', 'pokemon'], inventory.pokemon)
8 | console.log('haha')
9 | }
10 | })
11 |
12 | export async function getInventory() {
13 | let inventory = await client.getInventory(0)
14 | inventory = pogobuf.Utils.splitInventory(inventory);
15 | store.set(['inventory', 'pokemon'], inventory.pokemon)
16 | console.log('haha')
17 | }
18 |
--------------------------------------------------------------------------------
/appveyor.yml:
--------------------------------------------------------------------------------
1 | os: unstable
2 | cache:
3 | - node_modules
4 | environment:
5 | matrix:
6 | - nodejs_version: 6
7 | - nodejs_version: 5
8 | - nodejs_version: 4
9 | install:
10 | - ps: Install-Product node $env:nodejs_version
11 | - set CI=true
12 | - npm install -g npm@latest
13 | - set PATH=%APPDATA%\npm;%PATH%
14 | - npm install
15 | matrix:
16 | fast_finish: true
17 | build: off
18 | version: '{build}'
19 | shallow_clone: true
20 | clone_depth: 1
21 | test_script:
22 | - node --version
23 | - npm --version
24 | - npm run lint
25 | - npm run test
26 | - npm run build
27 | - npm run test-e2e
28 |
--------------------------------------------------------------------------------
/.babelrc-legacy:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["es2015", "stage-0", "react"],
3 | "plugins": [
4 | "add-module-exports"
5 | ],
6 | "env": {
7 | "production": {
8 | "presets": ["react-optimize"],
9 | "plugins": [
10 | "babel-plugin-transform-remove-console",
11 | "babel-plugin-transform-remove-debugger",
12 | "babel-plugin-dev-expression"
13 | ]
14 | },
15 | "development": {
16 | "presets": ["react-hmre"]
17 | },
18 | "test": {
19 | "plugins": [
20 | ["webpack-loaders", { "config": "webpack.config.node.js", "verbose": false }]
21 | ]
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/client/actions.js:
--------------------------------------------------------------------------------
1 | import store from '../store'
2 |
3 | let socket = io('http://localhost:3000')
4 |
5 | socket.on('store-update', data => {
6 | store.set(data)
7 | console.log(data)
8 | })
9 |
10 | export default {
11 | login: (account) => socket.emit('login', account),
12 | addAccount: (account) => socket.emit('addAccount', account),
13 | removeAccount: (account) => socket.emit('removeAccount', account),
14 | releasePokemon: (id) => socket.emit('releasePokemon', {id: id}),
15 | releasePokemonBatch: (ids) => socket.emit('releasePokemonBatch', {ids: ids}),
16 | releasePokemon: (id) => socket.emit('releasePokemon', {id: id}),
17 | };
18 |
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["es2015", "stage-0", "react"],
3 | "plugins": [
4 | "transform-runtime",
5 | ["antd", [{ "libraryName": "antd", "style": "css" }]],
6 | "add-module-exports"
7 | ],
8 | "env": {
9 | "production": {
10 | "plugins": [
11 | "babel-plugin-transform-remove-console",
12 | "babel-plugin-transform-remove-debugger",
13 | "babel-plugin-dev-expression"
14 | ]
15 | },
16 | "development": {
17 | "presets": ["react-hmre"]
18 | },
19 | "test": {
20 | "plugins": [
21 | ["webpack-loaders", { "config": "webpack.config.node.js", "verbose": false }]
22 | ]
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: false
2 | language: node_js
3 | node_js:
4 | - "4"
5 | - "5"
6 | - "6"
7 |
8 | cache:
9 | directories:
10 | - node_modules
11 |
12 | addons:
13 | apt:
14 | sources:
15 | - ubuntu-toolchain-r-test
16 | packages:
17 | - g++-4.8
18 |
19 | install:
20 | - export CXX="g++-4.8"
21 | - npm install
22 | - "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16"
23 |
24 | before_script:
25 | - export DISPLAY=:99.0
26 | - sh -e /etc/init.d/xvfb start &
27 | - sleep 3
28 |
29 | script:
30 | - npm run lint
31 | - npm run test
32 | - npm run build
33 | - npm run test-e2e
34 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 |
5 | # Runtime data
6 | pids
7 | *.pid
8 | *.seed
9 |
10 | # Directory for instrumented libs generated by jscoverage/JSCover
11 | lib-cov
12 |
13 | # Coverage directory used by tools like istanbul
14 | coverage
15 |
16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
17 | .grunt
18 |
19 | # node-waf configuration
20 | .lock-wscript
21 |
22 | # Compiled binary addons (http://nodejs.org/api/addons.html)
23 | build/Release
24 |
25 | # Dependency directory
26 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
27 | node_modules
28 |
29 | # OSX
30 | .DS_Store
31 |
32 | # App packaged
33 | dist
34 | release
35 | main.js
36 | main.js.map
37 | .loginCache
38 |
--------------------------------------------------------------------------------
/webpack.config.base.js:
--------------------------------------------------------------------------------
1 | import path from 'path';
2 |
3 | export default {
4 | module: {
5 | loaders: [{
6 | test: /\.jsx?$/,
7 | loader: 'babel',
8 | exclude: /node_modules/
9 | }, {
10 | test: /\.json$/,
11 | loader: 'json-loader'
12 | }]
13 | },
14 | output: {
15 | path: path.join(__dirname, 'dist'),
16 | filename: 'bundle.js',
17 | libraryTarget: 'commonjs2'
18 | },
19 | resolve: {
20 | extensions: ['', '.js', '.jsx', '.json'],
21 | packageMains: ['webpack', 'browser', 'web', 'browserify', ['jam', 'main'], 'main']
22 | },
23 | plugins: [
24 |
25 | ],
26 | externals: [
27 | // put your node 3rd party libraries which can't be built with webpack here
28 | // (mysql, mongodb, and so on..)
29 | ]
30 | };
31 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Pokemon GO Desktop
2 | Desktop App for utilizing Pokemon GO
3 | Power by Electron, React, Webpack, Babel
4 | (boilerplate by chentsulin/electron-react-boilerplate)
5 |
6 | ## Screenshot
7 | 
8 |
9 | ## Current Feature
10 | 1. Multiple account mangement
11 | 2. Pokemon stat analysis (IV%, LV, HP)
12 | 3. Transfer easily (with batch mode)
13 |
14 |
15 | ## Install
16 |
17 | git clone & install
18 |
19 | ```bash
20 | $ git clone https://github.com/jackypan1989/pokemon-go-desktop.git
21 | $ cd pokemon-go-desktop && npm install
22 | ```
23 |
24 | ## Run
25 | ```bash
26 | $ npm run dev
27 | ```
28 |
29 | ## Author
30 | Guan Yu Pan (jackypan1989@gmail.com)
31 |
32 | ## License
33 | MIT
34 |
35 | Welcome to contribute it, just send me a PR :)
36 |
--------------------------------------------------------------------------------
/src/client/components/App.js:
--------------------------------------------------------------------------------
1 | import React, { PureComponent, PropTypes } from 'react'
2 | import {Link} from 'react-router'
3 | import {root} from 'baobab-react/higher-order'
4 |
5 | import store from '../../store'
6 | import Actions from '../actions'
7 |
8 | import LocaleProvider from 'antd/lib/locale-provider'
9 | import enUS from 'antd/lib/locale-provider/en_US'
10 |
11 | import Header from './Header'
12 |
13 | const styles = {
14 | app: {
15 | height: '100%'
16 | }
17 | };
18 |
19 | class App extends React.Component {
20 | static propTypes = {
21 | children: PropTypes.element.isRequired
22 | };
23 |
24 | render() {
25 | return (
26 |
27 |
28 |
29 |
30 | {this.props.children}
31 |
32 |
33 |
34 | );
35 | }
36 | }
37 |
38 | export default root(store, App);
39 |
--------------------------------------------------------------------------------
/webpack.config.electron.js:
--------------------------------------------------------------------------------
1 | import webpack from 'webpack';
2 | import merge from 'webpack-merge';
3 | import baseConfig from './webpack.config.base';
4 |
5 | export default merge(baseConfig, {
6 | devtool: 'source-map',
7 |
8 | entry: ['./main.development'],
9 |
10 | output: {
11 | path: __dirname,
12 | filename: './main.js'
13 | },
14 |
15 | plugins: [
16 | // new webpack.optimize.UglifyJsPlugin({
17 | // compressor: {
18 | // warnings: false
19 | // }
20 | // }),
21 | new webpack.BannerPlugin(
22 | 'require("source-map-support").install();',
23 | { raw: true, entryOnly: false }
24 | ),
25 | new webpack.DefinePlugin({
26 | 'process.env': {
27 | NODE_ENV: JSON.stringify('production')
28 | }
29 | })
30 | ],
31 |
32 | target: 'electron-main',
33 |
34 | node: {
35 | __dirname: false,
36 | __filename: false
37 | },
38 |
39 | externals: [
40 | 'font-awesome',
41 | 'antd',
42 | 'source-map-support'
43 | ]
44 | });
45 |
--------------------------------------------------------------------------------
/src/shared/ecpm.js:
--------------------------------------------------------------------------------
1 | import R from 'ramda'
2 |
3 | const ecpm_10 = (level) => ( 0.01885225 * level ) - 0.01001625
4 | const ecpm_20 = (level) => ( 0.01783805 * ( level - 10 ) ) + 0.17850625
5 | const ecpm_30 = (level) => ( 0.01784981 * ( level - 20 ) ) + 0.35688675
6 | const ecpm_40 = (level) => ( 0.00891892 * ( level - 30 ) ) + 0.53538485
7 |
8 | const calc_ecpm = (level) => {
9 | if (level > 30) {
10 | return Math.pow(ecpm_40(level), 0.5)
11 | } else if (level > 20) {
12 | return Math.pow(ecpm_30(level), 0.5)
13 | } else if (level > 10) {
14 | return Math.pow(ecpm_20(level), 0.5)
15 | } else {
16 | return Math.pow(ecpm_10(level), 0.5)
17 | }
18 | }
19 |
20 | const ecpm =
21 | R.map(x=>({
22 | level: x/2,
23 | ecpm: calc_ecpm(x/2)
24 | }), R.range(2, 81))
25 |
26 | const findPokemonLV = (value) =>
27 | R.pipe(
28 | R.filter(
29 | x => Math.abs(x.ecpm-value) < 0.001,
30 | ),
31 | R.head(),
32 | R.prop('level')
33 | )(ecpm)
34 |
35 | export default {
36 | ecpm: ecpm,
37 | findPokemonLV: findPokemonLV
38 | }
39 |
--------------------------------------------------------------------------------
/src/client/app.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Pokemon Go Desktop
6 |
7 |
8 |
18 |
19 |
20 |
21 |
22 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015-present C. T. Lin
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/webpack.config.development.js:
--------------------------------------------------------------------------------
1 | /* eslint max-len: 0 */
2 | import webpack from 'webpack';
3 | import merge from 'webpack-merge';
4 | import baseConfig from './webpack.config.base';
5 |
6 | export default merge(baseConfig, {
7 | debug: true,
8 |
9 | devtool: 'cheap-module-eval-source-map',
10 |
11 | entry: [
12 | 'webpack-hot-middleware/client?path=http://localhost:3000/__webpack_hmr',
13 | './src/client/index'
14 | ],
15 |
16 | output: {
17 | publicPath: 'http://localhost:3000/dist/'
18 | },
19 |
20 | module: {
21 | loaders: [
22 | {
23 | test: /\.global\.css$/,
24 | loaders: [
25 | 'style-loader',
26 | 'css-loader?sourceMap'
27 | ]
28 | },
29 |
30 | {
31 | test: /^((?!\.global).)*\.css$/,
32 | loaders: [
33 | 'style-loader',
34 | 'css-loader?modules&sourceMap&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]'
35 | ]
36 | }
37 | ],
38 | noParse: ['ws']
39 | },
40 |
41 | plugins: [
42 | new webpack.HotModuleReplacementPlugin(),
43 | new webpack.NoErrorsPlugin(),
44 | new webpack.DefinePlugin({
45 | 'process.env.NODE_ENV': JSON.stringify('development')
46 | })
47 | ],
48 |
49 | target: 'electron-renderer'
50 | });
51 |
--------------------------------------------------------------------------------
/src/client/components/Header.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Link} from 'react-router'
3 | import {branch} from 'baobab-react/higher-order'
4 | import {Menu} from 'antd'
5 |
6 | const styles = {
7 | logo: {
8 | height: 48,
9 | marginLeft: 24,
10 | marginRight: 24,
11 | float: 'left'
12 | },
13 | logo_img: {
14 | height: 32,
15 | marginTop: 8,
16 | verticalAlign: 'top'
17 | },
18 | username: {
19 | marginRight: 24,
20 | float: 'right'
21 | }
22 | }
23 |
24 | class Header extends React.Component {
25 | render () {
26 | const {
27 | account
28 | } = this.props
29 |
30 | return
41 | }
42 | }
43 |
44 | export default branch({
45 | account: ['currentAccount']
46 | }, Header)
47 |
--------------------------------------------------------------------------------
/src/client/wip/Home.js:
--------------------------------------------------------------------------------
1 | import React, { PureComponent } from 'react'
2 | import { Link } from 'react-router'
3 | import {branch} from 'baobab-react/higher-order'
4 |
5 | import PokeMap from './PokeMap'
6 | import Controller from './Controller'
7 | import Console from './Console'
8 | import Actions from '../actions'
9 |
10 | const styles = {
11 | root: {
12 | display: 'flex',
13 | height: '100%'
14 | },
15 | map: {
16 | flex: 1,
17 | minWidth: 400
18 | },
19 | panel: {
20 | display: 'flex',
21 | flexDirection: 'column',
22 | minWidth: 400
23 | }
24 | }
25 |
26 | class Home extends PureComponent {
27 | static defaultProps = {
28 | center: {lat: 37.7921513, lng: -122.3909161},
29 | zoom: 18
30 | };
31 |
32 | render() {
33 | let {
34 | logs,
35 | location,
36 | profile,
37 | inventory,
38 | mapObjects
39 | } = this.props;
40 |
41 | return (
42 |
43 |
46 |
47 |
48 |
49 |
50 |
51 | );
52 | }
53 | }
54 |
55 | export default branch({
56 | logs: ['logs'],
57 | location: ['location'],
58 | profile: ['profile'],
59 | inventory: ['inventory'],
60 | mapObjects: ['mapObjects']
61 | }, Home);
62 |
--------------------------------------------------------------------------------
/webpack.config.production.js:
--------------------------------------------------------------------------------
1 | import webpack from 'webpack';
2 | import ExtractTextPlugin from 'extract-text-webpack-plugin';
3 | import merge from 'webpack-merge';
4 | import baseConfig from './webpack.config.base';
5 |
6 | const config = merge(baseConfig, {
7 | devtool: 'cheap-module-source-map',
8 |
9 | entry: './src/client/index',
10 |
11 | output: {
12 | publicPath: '../dist/'
13 | },
14 |
15 | module: {
16 | loaders: [
17 | {
18 | test: /\.global\.css$/,
19 | loader: ExtractTextPlugin.extract(
20 | 'style-loader',
21 | 'css-loader'
22 | )
23 | },
24 |
25 | {
26 | test: /^((?!\.global).)*\.css$/,
27 | loader: ExtractTextPlugin.extract(
28 | 'style-loader',
29 | 'css-loader?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]'
30 | )
31 | }
32 | ]
33 | },
34 |
35 | plugins: [
36 | new webpack.optimize.OccurrenceOrderPlugin(),
37 | new webpack.DefinePlugin({
38 | 'process.env.NODE_ENV': JSON.stringify('production')
39 | }),
40 | new webpack.optimize.UglifyJsPlugin({
41 | compressor: {
42 | screw_ie8: true,
43 | warnings: false
44 | }
45 | }),
46 | new ExtractTextPlugin('style.css', { allChunks: true })
47 | ],
48 |
49 | target: 'electron-renderer'
50 | });
51 |
52 | export default config;
53 |
--------------------------------------------------------------------------------
/src/client/wip/Controller.js:
--------------------------------------------------------------------------------
1 | import React, { PureComponent } from 'react'
2 | import {branch} from 'baobab-react/higher-order'
3 | import Actions from '../actions'
4 |
5 | import Button from 'antd/lib/button';
6 | const ButtonGroup = Button.Group;
7 |
8 | const styles = {
9 | minHeight: 300,
10 | padding: 16
11 | }
12 |
13 | class Controller extends PureComponent {
14 | render() {
15 | let {
16 | location = {},
17 | profile = {},
18 | inventory = {},
19 | mapObjects = {}
20 | } = this.props
21 |
22 | return
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | }
37 | }
38 |
39 | export default branch({
40 | logs: ['logs'],
41 | location: ['location'],
42 | profile: ['profile'],
43 | inventory: ['inventory'],
44 | mapObjects: ['mapObjects']
45 | }, Controller)
46 |
--------------------------------------------------------------------------------
/src/server/server.js:
--------------------------------------------------------------------------------
1 | /* eslint no-console: 0 */
2 | import express from 'express';
3 | import pokemonServer from './pokemonServer';
4 |
5 | // webpack module
6 | import webpack from 'webpack';
7 | import webpackDevMiddleware from 'webpack-dev-middleware';
8 | import webpackHotMiddleware from 'webpack-hot-middleware';
9 | import config from '../../webpack.config.development';
10 |
11 | const app = express();
12 | const compiler = webpack(config);
13 | const PORT = 3000;
14 | const wdm = webpackDevMiddleware(compiler, {
15 | publicPath: config.output.publicPath,
16 | noInfo: true,
17 | stats: {
18 | colors: true
19 | }
20 | });
21 |
22 | app.use(wdm);
23 | app.use(webpackHotMiddleware(compiler));
24 | app.use(express.static(__dirname + '/../shared/assets'));
25 |
26 | // create server
27 | const server = app.listen(PORT, 'localhost', err => {
28 | if (err) {
29 | console.error(err);
30 | return;
31 | }
32 |
33 | const exec = require('child_process').exec;
34 | const child = exec('npm run start-hot', (error, stdout, stderr) => {
35 | if (error) {
36 | throw error;
37 | }
38 | console.log(stdout);
39 | });
40 |
41 | console.log(`Listening at http://localhost:${PORT}`);
42 | });
43 |
44 | // create socket.io server
45 | pokemonServer(server);
46 |
47 | process.on('SIGTERM', () => {
48 | console.log('Stopping dev server');
49 | wdm.close();
50 | server.close(() => {
51 | process.exit(0);
52 | });
53 | });
54 |
--------------------------------------------------------------------------------
/src/client/utils.js:
--------------------------------------------------------------------------------
1 | import R from 'ramda';
2 | import stat from '../shared/stat'
3 |
4 | import {ecpm, findPokemonLV} from '../shared/ecpm'
5 | import {getTier} from '../shared/cp_tier'
6 |
7 | export default {
8 | calcStat: R.pipe(
9 | R.filter(x=>x.pokemon_id),
10 | R.map(x=>{
11 | return ({
12 | ...x,
13 | img: `http://localhost:3000/pixel_icons/${x.pokemon_id}.png`,
14 | name: stat[x.pokemon_id-1].Identifier,
15 | base_attack: stat[x.pokemon_id-1].BaseAttack,
16 | base_defense: stat[x.pokemon_id-1].BaseDefense,
17 | base_stamina: stat[x.pokemon_id-1].BaseStamina,
18 | ecpm: x.cp_multiplier + x.additional_cp_multiplier,
19 | iv_perfect: (x.individual_attack + x.individual_defense + x.individual_stamina)/45,
20 | level: findPokemonLV(x.cp_multiplier)
21 | })}),
22 | R.map(x=>({
23 | ...x,
24 | calc_cp: R.max(
25 | 10,
26 | (x.base_attack + x.individual_attack)
27 | * Math.pow((x.base_defense + x.individual_defense), 0.5)
28 | * Math.pow((x.base_stamina + x.individual_stamina), 0.5)
29 | * Math.pow(x.ecpm, 2) / 10
30 | ),
31 | hp: R.max(
32 | 10,
33 | Math.round(x.ecpm * (x.base_stamina + x.individual_stamina) * 2)
34 | ),
35 | cp_tier: getTier(x.name),
36 | attack: x.base_attack + x.individual_attack,
37 | defense: x.base_defense + x.individual_defense,
38 | stamina: x.base_stamina + x.individual_stamina
39 | }))
40 | )
41 | }
42 |
--------------------------------------------------------------------------------
/src/shared/cp_tier.js:
--------------------------------------------------------------------------------
1 | import R from 'ramda'
2 |
3 | const cp_tier = {
4 | S: [
5 | 'Dragonite', 'Snorlax', 'Lapras', 'Arcanine', 'Vaporeon',
6 | 'Gyarados', 'Exeggutor', 'Muk', 'Weezing', 'Flareon'
7 | ],
8 | A: [
9 | 'Slowbro', 'Victreebel', 'Machamp', 'Poliwrath', 'Clefable',
10 | 'Nidoking', 'Venusaur', 'Charizard', 'Golduck', 'Magmar',
11 | 'Nidoqueen', 'Vileplume', 'Blastoise', 'Weezing', 'Omastar',
12 | 'Aerodactyl', 'Golem', 'Wigglytuff', 'Dewgong', 'Ninetales',
13 | 'Magmar', 'Blastoise', 'Kabutops', 'Electabuzz', 'Starmie',
14 | 'Jolteon', 'Rapidash', 'Pinsir', 'Scyther', 'Tentacruel',
15 | 'Gengar', 'Hypno', 'Pidgeot', 'Rhydon', 'Seaking',
16 | 'Kangaskhan', 'Cloyster', 'Pinsir'
17 | ],
18 | B: [
19 | 'Primeape', 'Golbat', 'Raichu', 'Cloyster', 'Kingler',
20 | 'Tauros', 'Magneton', 'Venomoth', 'Alakazam', 'Tangela',
21 | 'Dragonair', 'Arbok', 'Dodrio', 'Growlythe', 'Porygon',
22 | 'Machoke', 'Fearow', 'Parasect', 'Sandslash', 'Jynx',
23 | 'Lickitung', 'Seadra', 'Marowak', 'Ivysaur', 'Persian',
24 | 'Drowzee', 'Electrode', 'Hitmonchan', 'Hitmonlee', 'Mr. Mime',
25 | 'Gloom', 'Ponyta', 'Weepinbell', 'Raticate', 'Beedrill',
26 | 'Butterfree', 'Pidgeotto', 'Haunter', 'Eevee', 'Dugtrio',
27 | 'Clefairy', 'Polywhirl', 'Kadabra', 'Bellsprout', 'Seel',
28 | 'Koffing', 'Rhyhorn', 'Kabuto'
29 | ],
30 | F: [
31 | 'Oddish', 'Squirtle', 'Bulbasaur', 'Charmander', 'Dratini',
32 | 'Onix', 'Vulpix', 'Paras', 'Pikachu', 'Mankey', 'Magnemite',
33 | 'Ekans', 'Sandshrew', 'Zubat', 'Geodude', 'Gastly',
34 | 'Pidgey', 'Doduo', 'Abra', 'Chansey', 'Rattata',
35 | 'Diglett', 'Magikarp'
36 | ]
37 | }
38 |
39 | export default {
40 | getTier: (name) =>
41 | R.pipe(
42 | R.pickBy(
43 | (val, key) => R.contains(name, val)
44 | ),
45 | R.keys(),
46 | R.head()
47 | )(cp_tier) || 'N/A'
48 | }
49 |
--------------------------------------------------------------------------------
/src/client/wip/PokeMap.js:
--------------------------------------------------------------------------------
1 | import React, { PureComponent } from 'react'
2 | import {branch} from 'baobab-react/higher-order'
3 |
4 | import geolib from 'geolib'
5 | import GoogleMap from 'google-map-react'
6 |
7 | let distance = (x, y) =>
8 | geolib.getDistance(x, y)
9 |
10 | let MapObject = (props) =>
11 |
12 |
13 | let playerpin = location => {
14 | return ()
19 | }
20 |
21 | let catchable_pokemons = items => {
22 | return items.map(item => {
23 | return
28 | })
29 | }
30 |
31 | let forts = (items, location) => {
32 | return items.map(item => {
33 | let {latitude, longitude} = item
34 | let src = `http:/localhost:3000/pixel_icons/Poke_Stop_Blue.png`
35 |
36 | if (distance({latitude, longitude}, location) > 40) {
37 | if (item.lure_info) {
38 | src = `http:/localhost:3000/pixel_icons/Poke_Stop_FarAwayWithConfetti.png`
39 | } else {
40 | src = `http:/localhost:3000/pixel_icons/Poke_Stop_FarAway.png`
41 | }
42 | } else {
43 | if (!item.cooldown) {
44 | if (item.lure_info) {
45 | src = `http:/localhost:3000/pixel_icons/Poke_Stop_BlueWithConfetti.png`
46 | } else {
47 | src = `http:/localhost:3000/pixel_icons/Poke_Stop_Blue.png`
48 | }
49 | } else {
50 | if (item.lure_info) {
51 | src = `http:/localhost:3000/pixel_icons/Poke_Stop_PurpleWithConfetti.png`
52 | } else {
53 | src = `http:/localhost:3000/pixel_icons/Poke_Stop_Purple.png`
54 | }
55 | }
56 | }
57 |
58 | return
63 | })
64 | }
65 |
66 | class PokeMap extends PureComponent {
67 | render() {
68 | let {
69 | location,
70 | mapObjects
71 | } = this.props
72 |
73 | return
76 |
77 | }
78 | }
79 |
80 | export default branch({
81 | location: ['location'],
82 | mapObjects: ['mapObjects'],
83 | }, PokeMap)
84 |
--------------------------------------------------------------------------------
/src/client/components/Accounts.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {branch} from 'baobab-react/higher-order'
3 | import Actions from '../actions'
4 |
5 | import {
6 | Row, Col,
7 | Table, Icon, Button,
8 | Form, Input, InputNumber
9 | } from 'antd'
10 | const FormItem = Form.Item;
11 |
12 | const styles = {
13 | container: {
14 | padding: '24px'
15 | },
16 | table: {
17 | marginTop: '8px'
18 | }
19 | }
20 |
21 | class Accounts extends React.Component {
22 | handleSubmit = (e) => {
23 | e.preventDefault()
24 | Actions.addAccount(this.props.form.getFieldsValue())
25 | }
26 |
27 | render = () => {
28 | const {
29 | items,
30 | form
31 | } = this.props
32 |
33 | const { getFieldProps } = this.props.form;
34 | const columns = [{
35 | title: 'Username',
36 | dataIndex: 'username',
37 | key: 'username'
38 | }, {
39 | title: 'Provider',
40 | dataIndex: 'provider',
41 | key: 'provider'
42 | }, {
43 | title: 'Actions',
44 | key: 'actions',
45 | render: (text, record) =>
46 |
47 |
51 |
54 |
55 | }]
56 |
57 | return
58 |
59 | Account management
60 |
68 |
69 |
70 | Add account
71 |
92 |
93 |
94 | }
95 | }
96 |
97 | Accounts = Form.create()(Accounts)
98 |
99 | export default branch({
100 | items: ['accounts']
101 | }, Accounts)
102 |
--------------------------------------------------------------------------------
/package.js:
--------------------------------------------------------------------------------
1 | /* eslint strict: 0, no-shadow: 0, no-unused-vars: 0, no-console: 0 */
2 | 'use strict';
3 |
4 | require('babel-polyfill');
5 | const os = require('os');
6 | const webpack = require('webpack');
7 | const electronCfg = require('./webpack.config.electron.js');
8 | const cfg = require('./webpack.config.production.js');
9 | const packager = require('electron-packager');
10 | const del = require('del');
11 | const exec = require('child_process').exec;
12 | const argv = require('minimist')(process.argv.slice(2));
13 | const pkg = require('./package.json');
14 | const deps = Object.keys(pkg.dependencies);
15 | const devDeps = Object.keys(pkg.devDependencies);
16 |
17 | const appName = argv.name || argv.n || pkg.productName;
18 | const shouldUseAsar = argv.asar || argv.a || false;
19 | const shouldBuildAll = argv.all || false;
20 |
21 |
22 | const DEFAULT_OPTS = {
23 | dir: './',
24 | name: appName,
25 | asar: shouldUseAsar,
26 | ignore: [
27 | '^/test($|/)',
28 | '^/release($|/)',
29 | '^/main.development.js'
30 | ].concat(devDeps.map(name => `/node_modules/${name}($|/)`))
31 | .concat(
32 | deps.filter(name => !electronCfg.externals.includes(name))
33 | .map(name => `/node_modules/${name}($|/)`)
34 | )
35 | };
36 |
37 | const icon = argv.icon || argv.i || 'app/app';
38 |
39 | if (icon) {
40 | DEFAULT_OPTS.icon = icon;
41 | }
42 |
43 | const version = argv.version || argv.v;
44 |
45 | if (version) {
46 | DEFAULT_OPTS.version = version;
47 | startPack();
48 | } else {
49 | // use the same version as the currently-installed electron-prebuilt
50 | exec('npm list electron-prebuilt --dev', (err, stdout) => {
51 | if (err) {
52 | DEFAULT_OPTS.version = '1.2.0';
53 | } else {
54 | DEFAULT_OPTS.version = stdout.split('electron-prebuilt@')[1].replace(/\s/g, '');
55 | }
56 |
57 | startPack();
58 | });
59 | }
60 |
61 |
62 | function build(cfg) {
63 | return new Promise((resolve, reject) => {
64 | webpack(cfg, (err, stats) => {
65 | if (err) return reject(err);
66 | resolve(stats);
67 | });
68 | });
69 | }
70 |
71 | function startPack() {
72 | console.log('start pack...');
73 | build(electronCfg)
74 | .then(() => build(cfg))
75 | .then(() => del('release'))
76 | .then(paths => {
77 | if (shouldBuildAll) {
78 | // build for all platforms
79 | const archs = ['ia32', 'x64'];
80 | const platforms = ['linux', 'win32', 'darwin'];
81 |
82 | platforms.forEach(plat => {
83 | archs.forEach(arch => {
84 | pack(plat, arch, log(plat, arch));
85 | });
86 | });
87 | } else {
88 | // build for current platform only
89 | pack(os.platform(), os.arch(), log(os.platform(), os.arch()));
90 | }
91 | })
92 | .catch(err => {
93 | console.error(err);
94 | });
95 | }
96 |
97 | function pack(plat, arch, cb) {
98 | // there is no darwin ia32 electron
99 | if (plat === 'darwin' && arch === 'ia32') return;
100 |
101 | const iconObj = {
102 | icon: DEFAULT_OPTS.icon + (() => {
103 | let extension = '.png';
104 | if (plat === 'darwin') {
105 | extension = '.icns';
106 | } else if (plat === 'win32') {
107 | extension = '.ico';
108 | }
109 | return extension;
110 | })()
111 | };
112 |
113 | const opts = Object.assign({}, DEFAULT_OPTS, iconObj, {
114 | platform: plat,
115 | arch,
116 | prune: true,
117 | 'app-version': pkg.version || DEFAULT_OPTS.version,
118 | out: `release/${plat}-${arch}`
119 | });
120 |
121 | packager(opts, cb);
122 | }
123 |
124 |
125 | function log(plat, arch) {
126 | return (err, filepath) => {
127 | if (err) return console.error(err);
128 | console.log(`${plat}-${arch} finished!`);
129 | };
130 | }
131 |
--------------------------------------------------------------------------------
/src/server/pokemonServer.js:
--------------------------------------------------------------------------------
1 | import fs from 'fs'
2 | import socketIO from 'socket.io'
3 | import store from '../store'
4 | import {pickPlayer, pickInventory} from './utils'
5 | import pogobuf from 'pogobuf'
6 | import Long from 'long'
7 | import R from 'ramda'
8 |
9 | let loginCache = []
10 | let client
11 | let io = socketIO()
12 |
13 | async function init(account) {
14 | let predicates = R.allPass([
15 | R.propEq('username', account.username),
16 | R.propEq('provider', account.provider)
17 | ])
18 | let {username, password, lat, lng} = R.find(predicates, loginCache)
19 | let login = new pogobuf.GoogleLogin()
20 | const token = await login.login(username, password)
21 | client = new pogobuf.Client()
22 | client.setAuthInfo('google', token)
23 | client.setPosition(lat, lng)
24 | await client.init()
25 | store.set(['currentAccount'], {username, password, lat, lng})
26 | await getInventory()
27 | }
28 |
29 | async function getInventory() {
30 | let inventory = await client.getInventory(0)
31 | inventory = pogobuf.Utils.splitInventory(inventory)
32 | store.set(['inventory', 'pokemon'], inventory.pokemon)
33 | }
34 |
35 | async function releasePokemon(id) {
36 | id = Long.fromString(id, true)
37 | let result = await client.releasePokemon(id)
38 | console.log(result)
39 | await getInventory()
40 | }
41 |
42 | async function releasePokemonBatch(ids) {
43 | client.batchStart()
44 | R.forEach(id => client.releasePokemon(Long.fromString(id, true)), ids)
45 | let results = await client.batchCall()
46 | console.log(results)
47 | await getInventory()
48 | }
49 |
50 | function loadAccounts() {
51 | // check cache
52 | try {
53 | loginCache = JSON.parse(fs.readFileSync(__dirname+'/.loginCache'))
54 | } catch(e) {}
55 |
56 | if (loginCache.length > 0) {
57 | let accounts =
58 | R.map(
59 | x => R.pick(['username', 'provider', 'lat', 'lng'], x),
60 | loginCache
61 | )
62 | store.set('accounts', accounts)
63 | }
64 | }
65 |
66 | function addAccount({username, password, provider, lat, lng}) {
67 | lat = parseFloat(lat)
68 | lng = parseFloat(lng)
69 |
70 | // add account
71 | let predicates = R.allPass([
72 | R.propEq('username', username),
73 | R.propEq('provider', provider)
74 | ]);
75 | let index = R.findIndex(predicates, loginCache);
76 | if (index !== -1) {
77 | loginCache[index] = {username, password, provider, lat, lng}
78 | } else {
79 | loginCache.push({username, password, provider, lat, lng})
80 | }
81 |
82 | // write file
83 | try {
84 | fs.writeFileSync(
85 | __dirname+'/.loginCache',
86 | JSON.stringify(loginCache, null, 2)
87 | )
88 | } catch(e) {}
89 |
90 | if (loginCache.length > 0) {
91 | let accounts =
92 | R.map(
93 | x => R.pick(['username', 'provider', 'lat', 'lng'], x),
94 | loginCache
95 | )
96 | store.set('accounts', accounts)
97 | }
98 | }
99 |
100 | function removeAccount({username, provider}) {
101 | // find account and remove
102 | let predicates = R.allPass([
103 | R.propEq('username', username),
104 | R.propEq('provider', provider)
105 | ]);
106 | let index = R.findIndex(predicates, loginCache)
107 | loginCache = R.remove(index, 1, loginCache)
108 |
109 | // write file
110 | try {
111 | fs.writeFileSync(
112 | __dirname+'/.loginCache',
113 | JSON.stringify(loginCache, null, 2)
114 | )
115 | } catch(e) {}
116 |
117 | if (loginCache.length > 0) {
118 | let accounts =
119 | R.map(
120 | x => R.pick(['username', 'provider', 'lat', 'lng'], x),
121 | loginCache
122 | )
123 | store.set('accounts', accounts)
124 | } else {
125 | store.set('accounts', [])
126 | }
127 | }
128 |
129 | export default server => {
130 |
131 |
132 | io.attach(server)
133 | io.on('connection', socket => {
134 | // check socket
135 | console.log('Socket connected: ' + socket.id)
136 |
137 | // when server store updated, emit to client
138 | store.on('update', () => {
139 | socket.emit('store-update', store.get())
140 | })
141 |
142 | // listen client event
143 | socket.on('addAccount', (account) => addAccount(account))
144 | socket.on('removeAccount', (account) => removeAccount(account))
145 | socket.on('login', (account) => init(account))
146 | socket.on('getInventory', () => getInventory())
147 | socket.on('releasePokemon', ({id}) => releasePokemon(id))
148 | socket.on('releasePokemonBatch', ({ids}) => releasePokemonBatch(ids))
149 |
150 | // load
151 | loadAccounts()
152 | })
153 | }
154 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "pokemon-go-desktop",
3 | "productName": "Pokemon Go Desktop",
4 | "version": "0.1.0",
5 | "description": "Desktop App for utilizing Pokemon GO",
6 | "main": "main.js",
7 | "scripts": {
8 | "lint": "eslint app test *.js",
9 | "start": "cross-env NODE_ENV=production electron ./main.js",
10 | "start-hot": "cross-env HOT=1 NODE_ENV=development electron -r babel-register -r babel-polyfill ./main.development",
11 | "build-main": "cross-env NODE_ENV=production node -r babel-register -r babel-polyfill ./node_modules/webpack/bin/webpack --config webpack.config.electron.js --progress --profile --colors",
12 | "build-renderer": "cross-env NODE_ENV=production node -r babel-register ./node_modules/webpack/bin/webpack --config webpack.config.production.js --progress --profile --colors",
13 | "build": "npm run build-main && npm run build-renderer",
14 | "dev": "NODE_ENV=development nodemon -r babel-register ./src/server/server.js --watch ./src/server/",
15 | "package": "cross-env NODE_ENV=production node -r babel-register package.js",
16 | "package-all": "npm run package -- --all"
17 | },
18 | "bin": {
19 | "electron": "./node_modules/.bin/electron"
20 | },
21 | "repository": {
22 | "type": "git",
23 | "url": "git+https://github.com/jackypan1989/pokemon-go-desktop.git"
24 | },
25 | "author": {
26 | "name": "Guan Yu Pan",
27 | "email": "jackypan1989@gmail.com",
28 | "url": "https://github.com/jackypan1989"
29 | },
30 | "license": "MIT",
31 | "bugs": {
32 | "url": "https://github.com/jackypan1989/pokemon-go-desktop/issues"
33 | },
34 | "keywords": [
35 | "pokemon",
36 | "pokemon-go",
37 | "electron",
38 | "react",
39 | "react-router",
40 | "webpack",
41 | "react-hot"
42 | ],
43 | "homepage": "https://github.com/jackypan1989/pokemon-go-desktop#readme",
44 | "devDependencies": {
45 | "asar": "^0.12.1",
46 | "babel-core": "^6.13.2",
47 | "babel-eslint": "^6.1.2",
48 | "babel-loader": "^6.2.4",
49 | "babel-plugin-add-module-exports": "^0.2.1",
50 | "babel-plugin-antd": "^0.4.1",
51 | "babel-plugin-dev-expression": "^0.2.1",
52 | "babel-plugin-transform-remove-console": "^6.8.0",
53 | "babel-plugin-transform-remove-debugger": "^6.8.0",
54 | "babel-plugin-transform-runtime": "^6.12.0",
55 | "babel-plugin-webpack-loaders": "^0.7.0",
56 | "babel-polyfill": "^6.13.0",
57 | "babel-preset-es2015": "^6.9.0",
58 | "babel-preset-react": "^6.11.1",
59 | "babel-preset-react-hmre": "^1.1.1",
60 | "babel-preset-react-optimize": "^1.0.1",
61 | "babel-preset-stage-0": "^6.5.0",
62 | "babel-register": "^6.11.6",
63 | "chai": "^3.5.0",
64 | "co-mocha": "^1.1.2",
65 | "concurrently": "^2.2.0",
66 | "cross-env": "^2.0.0",
67 | "css-loader": "^0.23.1",
68 | "del": "^2.2.1",
69 | "devtron": "^1.2.1",
70 | "electron-devtools-installer": "^2.0.0",
71 | "electron-packager": "^7.3.0",
72 | "electron-prebuilt": "^1.2.8",
73 | "electron-rebuild": "^1.1.5",
74 | "eslint": "^2.13.1",
75 | "eslint-config-airbnb": "^9.0.1",
76 | "eslint-import-resolver-webpack": "^0.4.0",
77 | "eslint-plugin-import": "^1.11.1",
78 | "eslint-plugin-jsx-a11y": "^1.5.5",
79 | "eslint-plugin-react": "^5.2.2",
80 | "express": "^4.14.0",
81 | "extract-text-webpack-plugin": "^1.0.1",
82 | "fbjs-scripts": "^0.7.1",
83 | "jsdom": "^9.4.1",
84 | "json-loader": "^0.5.4",
85 | "minimist": "^1.2.0",
86 | "mocha": "^2.5.3",
87 | "node-libs-browser": "^1.0.0",
88 | "nodemon": "^1.10.0",
89 | "postcss-loader": "^0.10.0",
90 | "react-addons-test-utils": "^15.2.1",
91 | "sinon": "^1.17.4",
92 | "spectron": "^3.2.6",
93 | "style-loader": "^0.13.1",
94 | "webpack": "^1.13.1",
95 | "webpack-dev-middleware": "^1.6.1",
96 | "webpack-hot-middleware": "^2.12.2",
97 | "webpack-merge": "^0.14.1"
98 | },
99 | "dependencies": {
100 | "antd": "^1.8.0",
101 | "baobab": "^2.3.3",
102 | "baobab-react": "^2.1.1",
103 | "bluebird": "^3.4.1",
104 | "css-modules-require-hook": "^4.0.1",
105 | "electron-debug": "^1.0.1",
106 | "font-awesome": "^4.6.3",
107 | "google-map-react": "^0.16.3",
108 | "long": "^3.2.0",
109 | "pogobuf": "cyraxx/pogobuf",
110 | "pokemongo-api": "jackypan1989/pokemongo-api",
111 | "ramda": "^0.22.1",
112 | "react": "^15.3.0",
113 | "react-dom": "^15.3.0",
114 | "react-router": "^2.6.0",
115 | "socket.io": "^1.4.8",
116 | "source-map-support": "^0.4.2"
117 | },
118 | "devEngines": {
119 | "node": "4.x || 5.x || 6.x",
120 | "npm": "2.x || 3.x"
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/src/client/components/Pokemons.js:
--------------------------------------------------------------------------------
1 | import React, { PureComponent } from 'react'
2 | import {branch} from 'baobab-react/higher-order'
3 | import { Table, Icon, Button } from 'antd'
4 | import { calcStat } from '../utils'
5 | import Long from 'long'
6 | import Actions from '../actions'
7 |
8 | const styles = {
9 | container: {
10 | padding: '24px'
11 | },
12 | table: {
13 | marginTop: '8px'
14 | }
15 | }
16 |
17 | const columns = [{
18 | title: '',
19 | dataIndex: 'img',
20 | key: 'img',
21 | render: (text) =>
22 |
23 | }, {
24 | title: 'Name',
25 | dataIndex: 'name',
26 | key: 'name'
27 | },
28 | {
29 | title: '#',
30 | dataIndex: 'pokemon_id',
31 | key: 'pokemon_id',
32 | sorter: (a, b) => {
33 | return a.pokemon_id - b.pokemon_id
34 | }
35 | }, {
36 | title: 'CP-Tier',
37 | dataIndex: 'cp_tier',
38 | key: 'cp_tier',
39 | sorter: (a, b) => {
40 | const tier = {'S': 5, 'A':4, 'B':3, 'F':2, 'N/A':1}
41 | return tier[a.cp_tier] - tier[b.cp_tier]
42 | }
43 | }, {
44 | title: 'LV',
45 | dataIndex: 'level',
46 | key: 'level',
47 | sorter: (a, b) => a.level - b.level
48 | }, {
49 | title: 'CP',
50 | dataIndex: 'cp',
51 | key: 'cp',
52 | sorter: (a, b) => a.cp - b.cp
53 | }, {
54 | title: 'HP',
55 | dataIndex: 'hp',
56 | key: 'hp',
57 | render: (text) =>
58 | {Math.round(text)}
,
59 | sorter: (a, b) => a.hp - b.hp
60 | }, {
61 | title: 'ATK',
62 | dataIndex: 'attack',
63 | key: 'attack',
64 | render: (text, record) =>
65 | {`${text} (${record.individual_attack})`}
,
66 | sorter: (a, b) => a.attack - b.attack
67 | },{
68 | title: 'DEF',
69 | dataIndex: 'defense',
70 | key: 'defense',
71 | render: (text, record) =>
72 | {`${text} (${record.individual_defense})`}
,
73 | sorter: (a, b) => a.defense - b.defense
74 | },{
75 | title: 'STA',
76 | dataIndex: 'stamina',
77 | key: 'stamina',
78 | render: (text, record) =>
79 | {`${text} (${record.individual_stamina})`}
,
80 | sorter: (a, b) => a.stamina - b.stamina
81 | },{
82 | title: 'IV%',
83 | dataIndex: 'iv_perfect',
84 | key: 'iv_perfect',
85 | render: (text) =>
86 | {Math.round(text*100)}
,
87 | sorter: (a, b) => a.iv_perfect - b.iv_perfect
88 | }, {
89 | title: 'Actions',
90 | key: 'action',
91 | render: (text, record) =>
92 |
93 |
97 |
98 | }]
99 |
100 | class Pokemons extends React.Component {
101 | state = {
102 | selectedRowKeys: []
103 | };
104 |
105 | onSelectChange = (selectedRowKeys) => {
106 | this.setState({ selectedRowKeys });
107 | };
108 |
109 | handleReleasePokemonBatch = () => {
110 | const {
111 | selectedRowKeys
112 | } = this.state
113 |
114 | Actions.releasePokemonBatch(selectedRowKeys)
115 | this.setState({ selectedRowKeys: []})
116 | };
117 |
118 | componentDidMount = () => {
119 | Actions.login()
120 | };
121 |
122 | render() {
123 | const {
124 | pokemons
125 | } = this.props
126 |
127 | const {
128 | selectedRowKeys
129 | } = this.state
130 |
131 | const items = pokemons?calcStat(pokemons):[]
132 | const hasSelected = selectedRowKeys.length > 0
133 |
134 | return
135 |
Pokemon List (count: {items.length}/250)
136 |
137 |
138 |
144 | {hasSelected ? `choosed ${selectedRowKeys.length} pokemon` : ''}
145 |
146 |
161 |
Formula:
162 |
ECpM = CpM + ACpm
163 |
CP = (BaseAtk + IV_Atk) * (BaseDef + IV_Def)^0.5 * (BaseSta + IV_Sta)^0.5 * (ECpM)^2 / 10
164 |
HP = ECpM * (BaseSta + IV_Sta)
165 |
IV% = (IV_Atk + IV_Def + IV_Sta)/45
166 |
167 |
168 | }
169 | }
170 |
171 | export default branch({
172 | pokemons: ['inventory', 'pokemon']
173 | }, Pokemons)
174 |
--------------------------------------------------------------------------------
/main.development.js:
--------------------------------------------------------------------------------
1 | import { app, BrowserWindow, Menu, shell } from 'electron';
2 |
3 | let menu;
4 | let template;
5 | let mainWindow = null;
6 |
7 | if (process.env.NODE_ENV === 'development') {
8 | require('electron-debug')(); // eslint-disable-line global-require
9 | } else {
10 | // require('./src/server/buildInServer')
11 | // require('pogobuf')
12 | }
13 |
14 | app.on('window-all-closed', () => {
15 | if (process.platform !== 'darwin') app.quit();
16 | });
17 |
18 | const installExtensions = async () => {
19 | if (process.env.NODE_ENV === 'development') {
20 | const installer = require('electron-devtools-installer'); // eslint-disable-line global-require
21 | const extensions = [
22 | 'REACT_DEVELOPER_TOOLS'
23 | ];
24 | const forceDownload = !!process.env.UPGRADE_EXTENSIONS;
25 | for (const name of extensions) {
26 | try {
27 | await installer.default(installer[name], forceDownload);
28 | } catch (e) {} // eslint-disable-line
29 | }
30 | }
31 | };
32 |
33 | app.on('ready', async () => {
34 | await installExtensions();
35 |
36 | mainWindow = new BrowserWindow({
37 | show: false,
38 | width: 1024,
39 | height: 728
40 | });
41 |
42 | mainWindow.loadURL(`file://${__dirname}/src/client/app.html`);
43 |
44 | mainWindow.webContents.on('did-finish-load', () => {
45 | mainWindow.show();
46 | mainWindow.focus();
47 | });
48 |
49 | mainWindow.on('closed', () => {
50 | mainWindow = null;
51 | });
52 |
53 | if (process.env.NODE_ENV === 'development') {
54 | // mainWindow.openDevTools();
55 | mainWindow.webContents.on('context-menu', (e, props) => {
56 | const { x, y } = props;
57 |
58 | Menu.buildFromTemplate([{
59 | label: 'Inspect element',
60 | click() {
61 | mainWindow.inspectElement(x, y);
62 | }
63 | }]).popup(mainWindow);
64 | });
65 | }
66 |
67 | if (process.platform === 'darwin') {
68 | template = [{
69 | label: 'Electron',
70 | submenu: [{
71 | label: 'About Pokemon Go Desktop',
72 | selector: 'orderFrontStandardAboutPanel:'
73 | }, {
74 | type: 'separator'
75 | }, {
76 | label: 'Services',
77 | submenu: []
78 | }, {
79 | type: 'separator'
80 | }, {
81 | label: 'Hide ElectronReact',
82 | accelerator: 'Command+H',
83 | selector: 'hide:'
84 | }, {
85 | label: 'Hide Others',
86 | accelerator: 'Command+Shift+H',
87 | selector: 'hideOtherApplications:'
88 | }, {
89 | label: 'Show All',
90 | selector: 'unhideAllApplications:'
91 | }, {
92 | type: 'separator'
93 | }, {
94 | label: 'Quit',
95 | accelerator: 'Command+Q',
96 | click() {
97 | app.quit();
98 | }
99 | }]
100 | }, {
101 | label: 'Edit',
102 | submenu: [{
103 | label: 'Undo',
104 | accelerator: 'Command+Z',
105 | selector: 'undo:'
106 | }, {
107 | label: 'Redo',
108 | accelerator: 'Shift+Command+Z',
109 | selector: 'redo:'
110 | }, {
111 | type: 'separator'
112 | }, {
113 | label: 'Cut',
114 | accelerator: 'Command+X',
115 | selector: 'cut:'
116 | }, {
117 | label: 'Copy',
118 | accelerator: 'Command+C',
119 | selector: 'copy:'
120 | }, {
121 | label: 'Paste',
122 | accelerator: 'Command+V',
123 | selector: 'paste:'
124 | }, {
125 | label: 'Select All',
126 | accelerator: 'Command+A',
127 | selector: 'selectAll:'
128 | }]
129 | }, {
130 | label: 'View',
131 | submenu: (process.env.NODE_ENV === 'development') ? [{
132 | label: 'Reload',
133 | accelerator: 'Command+R',
134 | click() {
135 | mainWindow.webContents.reload();
136 | }
137 | }, {
138 | label: 'Toggle Full Screen',
139 | accelerator: 'Ctrl+Command+F',
140 | click() {
141 | mainWindow.setFullScreen(!mainWindow.isFullScreen());
142 | }
143 | }, {
144 | label: 'Toggle Developer Tools',
145 | accelerator: 'Alt+Command+I',
146 | click() {
147 | mainWindow.toggleDevTools();
148 | }
149 | }] : [{
150 | label: 'Toggle Full Screen',
151 | accelerator: 'Ctrl+Command+F',
152 | click() {
153 | mainWindow.setFullScreen(!mainWindow.isFullScreen());
154 | }
155 | }]
156 | }, {
157 | label: 'Window',
158 | submenu: [{
159 | label: 'Minimize',
160 | accelerator: 'Command+M',
161 | selector: 'performMiniaturize:'
162 | }, {
163 | label: 'Close',
164 | accelerator: 'Command+W',
165 | selector: 'performClose:'
166 | }, {
167 | type: 'separator'
168 | }, {
169 | label: 'Bring All to Front',
170 | selector: 'arrangeInFront:'
171 | }]
172 | }, {
173 | label: 'Help',
174 | submenu: [{
175 | label: 'Learn More',
176 | click() {
177 | shell.openExternal('http://electron.atom.io');
178 | }
179 | }, {
180 | label: 'Documentation',
181 | click() {
182 | shell.openExternal('https://github.com/atom/electron/tree/master/docs#readme');
183 | }
184 | }, {
185 | label: 'Community Discussions',
186 | click() {
187 | shell.openExternal('https://discuss.atom.io/c/electron');
188 | }
189 | }, {
190 | label: 'Search Issues',
191 | click() {
192 | shell.openExternal('https://github.com/atom/electron/issues');
193 | }
194 | }]
195 | }];
196 |
197 | menu = Menu.buildFromTemplate(template);
198 | Menu.setApplicationMenu(menu);
199 | } else {
200 | template = [{
201 | label: '&File',
202 | submenu: [{
203 | label: '&Open',
204 | accelerator: 'Ctrl+O'
205 | }, {
206 | label: '&Close',
207 | accelerator: 'Ctrl+W',
208 | click() {
209 | mainWindow.close();
210 | }
211 | }]
212 | }, {
213 | label: '&View',
214 | submenu: (process.env.NODE_ENV === 'development') ? [{
215 | label: '&Reload',
216 | accelerator: 'Ctrl+R',
217 | click() {
218 | mainWindow.webContents.reload();
219 | }
220 | }, {
221 | label: 'Toggle &Full Screen',
222 | accelerator: 'F11',
223 | click() {
224 | mainWindow.setFullScreen(!mainWindow.isFullScreen());
225 | }
226 | }, {
227 | label: 'Toggle &Developer Tools',
228 | accelerator: 'Alt+Ctrl+I',
229 | click() {
230 | mainWindow.toggleDevTools();
231 | }
232 | }] : [{
233 | label: 'Toggle &Full Screen',
234 | accelerator: 'F11',
235 | click() {
236 | mainWindow.setFullScreen(!mainWindow.isFullScreen());
237 | }
238 | }]
239 | }, {
240 | label: 'Help',
241 | submenu: [{
242 | label: 'Learn More',
243 | click() {
244 | shell.openExternal('http://electron.atom.io');
245 | }
246 | }, {
247 | label: 'Documentation',
248 | click() {
249 | shell.openExternal('https://github.com/atom/electron/tree/master/docs#readme');
250 | }
251 | }, {
252 | label: 'Community Discussions',
253 | click() {
254 | shell.openExternal('https://discuss.atom.io/c/electron');
255 | }
256 | }, {
257 | label: 'Search Issues',
258 | click() {
259 | shell.openExternal('https://github.com/atom/electron/issues');
260 | }
261 | }]
262 | }];
263 | menu = Menu.buildFromTemplate(template);
264 | mainWindow.setMenu(menu);
265 | }
266 | });
267 |
--------------------------------------------------------------------------------
/src/shared/assets/locales/pokemon.zh_cn.json:
--------------------------------------------------------------------------------
1 | {"1":"妙蛙种子","2":"妙蛙草","3":"妙蛙花","4":"小火龙","5":"火恐龙","6":"喷火龙","7":"杰尼龟","8":"卡咪龟","9":"水箭龟","10":"绿毛虫","11":"铁甲蛹","12":"巴大蝶","13":"独角虫","14":"铁壳蛹","15":"大针蜂","16":"波波","17":"比比鸟","18":"大比鸟","19":"小拉达","20":"拉达","21":"烈雀","22":"大嘴雀","23":"阿柏蛇","24":"阿柏怪","25":"皮卡丘","26":"雷丘","27":"穿山鼠","28":"穿山王","29":"尼多兰","30":"尼多娜","31":"尼多后","32":"尼多朗","33":"尼多力诺","34":"尼多王","35":"皮皮","36":"皮可西","37":"六尾","38":"九尾","39":"胖丁","40":"胖可丁","41":"超音蝠","42":"大嘴蝠","43":"走路草","44":"臭臭花","45":"霸王花","46":"派拉斯","47":"派拉斯特","48":"毛球","49":"摩鲁蛾","50":"地鼠","51":"三地鼠","52":"喵喵","53":"猫老大","54":"可达鸭","55":"哥达鸭","56":"猴怪","57":"火暴猴","58":"卡蒂狗","59":"风速狗","60":"蚊香蝌蚪","61":"蚊香君","62":"蚊香泳士","63":"凯西","64":"勇基拉","65":"胡地","66":"腕力","67":"豪力","68":"怪力","69":"喇叭芽","70":"口呆花","71":"大食花","72":"玛瑙水母","73":"毒刺水母","74":"小拳石","75":"隆隆石","76":"隆隆岩","77":"小火马","78":"烈焰马","79":"呆呆兽","80":"呆壳兽","81":"小磁怪","82":"三合一磁怪","83":"大葱鸭","84":"嘟嘟","85":"嘟嘟利","86":"小海狮","87":"白海狮","88":"臭泥","89":"臭臭泥","90":"大舌贝","91":"刺甲贝","92":"鬼斯","93":"鬼斯通","94":"耿鬼","95":"大岩蛇","96":"催眠貘","97":"引梦貘人","98":"大钳蟹","99":"巨钳蟹","100":"霹雳电球","101":"顽皮雷弹","102":"蛋蛋","103":"椰蛋树","104":"卡拉卡拉","105":"嘎啦嘎啦","106":"飞腿郎","107":"快拳郎","108":"大舌头","109":"瓦斯弹","110":"双弹瓦斯","111":"独角犀牛","112":"钻角犀兽","113":"吉利蛋","114":"蔓藤怪","115":"袋兽","116":"墨海马","117":"海刺龙","118":"角金鱼","119":"金鱼王","120":"海星星","121":"宝石海星","122":"魔墙人偶","123":"飞天螳螂","124":"迷唇姐","125":"电击兽","126":"鸭嘴火兽","127":"凯罗斯","128":"肯泰罗","129":"鲤鱼王","130":"暴鲤龙","131":"拉普拉斯","132":"百变怪","133":"伊布","134":"水伊布","135":"雷伊布","136":"火伊布","137":"多边兽","138":"菊石兽","139":"多刺菊石兽","140":"化石盔","141":"镰刀盔","142":"化石翼龙","143":"卡比兽","144":"急冻鸟","145":"闪电鸟","146":"火焰鸟","147":"迷你龙","148":"哈克龙","149":"快龙","150":"超梦","151":"梦幻","152":"菊草叶","153":"月桂叶","154":"大菊花","155":"火球鼠","156":"火岩鼠","157":"火暴兽","158":"小锯鳄","159":"蓝鳄","160":"大力鳄","161":"尾立","162":"大尾立","163":"咕咕","164":"猫头夜鹰","165":"芭瓢虫","166":"安瓢虫","167":"线球","168":"阿利多斯","169":"叉字蝠","170":"灯笼鱼","171":"电灯怪","172":"皮丘","173":"皮宝宝","174":"宝宝丁","175":"波克比","176":"波克基古","177":"天然雀","178":"天然鸟","179":"咩利羊","180":"绵绵","181":"电龙","182":"美丽花","183":"玛力露","184":"玛力露丽","185":"胡说树","186":"牛蛙君","187":"毽子草","188":"毽子花","189":"毽子绵","190":"长尾怪手","191":"向日种子","192":"向日花怪","193":"阳阳玛","194":"乌波","195":"沼王","196":"太阳精灵","197":"月精灵","198":"黑暗鸦","199":"河马王","200":"梦妖","201":"未知图腾","202":"果然翁","203":"麒麟奇","204":"榛果球","205":"佛烈托斯","206":"土龙弟弟","207":"天蝎","208":"大钢蛇","209":"布卢","210":"布卢皇","211":"千针鱼","212":"巨钳螳螂","213":"壶壶","214":"赫拉克罗斯","215":"狃拉","216":"熊宝宝","217":"圈圈熊","218":"熔岩虫","219":"熔岩蜗牛","220":"小山猪","221":"长毛猪","222":"太阳珊瑚","223":"铁炮鱼","224":"章鱼桶","225":"信使鸟","226":"巨翅飞鱼","227":"盔甲鸟","228":"戴鲁比","229":"黑鲁加","230":"刺龙王","231":"小小象","232":"顿甲","233":"3D龙II","234":"惊角鹿","235":"图图犬","236":"巴尔郎","237":"柯波朗","238":"迷唇娃","239":"电击怪","240":"小鸭嘴龙","241":"大奶罐","242":"幸福蛋","243":"雷公","244":"炎帝","245":"水君","246":"由基拉","247":"沙基拉","248":"班吉拉","249":"洛奇亚","250":"凤王","251":"雪拉比","252":"木守宫","253":"森林蜥蜴","254":"蜥蜴王","255":"火稚鸡","256":"力壮鸡","257":"火焰鸡","258":"水跃鱼","259":"沼跃鱼","260":"巨沼怪","261":"土狼犬","262":"大狼犬","263":"蛇纹熊","264":"直冲熊","265":"刺尾虫","266":"甲壳蛹","267":"狩猎凤蝶","268":"盾甲茧","269":"毒粉蝶","270":"莲叶童子","271":"莲帽小童","272":"乐天河童","273":"橡实果","274":"长鼻叶","275":"狡猾天狗","276":"傲骨燕","277":"大王燕","278":"长翅鸥","279":"大嘴鸥","280":"拉鲁拉丝","281":"奇鲁莉安","282":"沙奈朵","283":"溜溜糖球","284":"雨翅蛾","285":"蘑蘑菇","286":"斗笠菇","287":"懒人翁","288":"过动猿","289":"请假王","290":"土居忍士","291":"铁面忍者","292":"脱壳忍者","293":"咕妞妞","294":"吼爆弹","295":"爆音怪","296":"幕下力士","297":"超力王","298":"露力丽","299":"朝北鼻","300":"向尾喵","301":"优雅猫","302":"勾魂眼","303":"大嘴娃","304":"可可多拉","305":"可多拉","306":"波士可多拉","307":"玛沙那","308":"恰雷姆","309":"落雷兽","310":"雷电兽","311":"正电拍拍","312":"负电拍拍","313":"电萤虫","314":"甜甜萤","315":"毒蔷薇","316":"溶食兽","317":"吞食兽","318":"利牙鱼","319":"巨牙鲨","320":"吼吼鲸","321":"吼鲸王","322":"呆火驼","323":"喷火驼","324":"煤炭龟","325":"跳跳猪","326":"噗噗猪","327":"晃晃斑","328":"大颚蚁","329":"超音波幼虫","330":"沙漠蜻蜓","331":"沙漠奈亚","332":"梦歌奈亚","333":"青绵鸟","334":"七夕青鸟","335":"猫鼬斩","336":"饭匙蛇","337":"月石","338":"太阳岩","339":"泥泥鳅","340":"鲶鱼王","341":"龙虾小兵","342":"铁螯龙虾","343":"天秤偶","344":"念力土偶","345":"触手百合","346":"摇篮百合","347":"太古羽虫","348":"太古盔甲","349":"笨笨鱼","350":"美纳斯","351":"漂浮泡泡","352":"变隐龙","353":"怨影娃娃","354":"诅咒娃娃","355":"夜骷颅","356":"夜巨人","357":"热带龙","358":"风铃铃","359":"阿勃梭鲁","360":"小果然","361":"雪童子","362":"冰鬼护","363":"海豹球","364":"海魔狮","365":"帝牙海狮","366":"珍珠贝","367":"猎斑鱼","368":"樱花鱼","369":"古空棘鱼","370":"爱心鱼","371":"宝贝龙","372":"甲壳龙","373":"暴飞龙","374":"铁哑铃","375":"金属怪","376":"巨金怪","377":"雷吉洛克","378":"雷吉艾斯","379":"雷吉斯奇鲁","380":"拉帝亚斯","381":"拉帝欧斯","382":"盖欧卡","383":"固拉多","384":"烈空坐","385":"基拉祈","386":"代欧奇希斯","387":"草苗龟","388":"树林龟","389":"土台龟","390":"小火焰猴","391":"猛火猴","392":"烈焰猴","393":"波加曼","394":"波皇子","395":"帝王拿波","396":"姆克儿","397":"姆克鸟","398":"姆克鹰","399":"大牙狸","400":"大尾狸","401":"圆法师","402":"音箱蟀","403":"小猫怪","404":"勒克猫","405":"伦琴猫","406":"含羞苞","407":"罗丝雷朵","408":"头盖龙","409":"战槌龙","410":"盾甲龙","411":"护城龙","412":"结草儿","413":"结草贵妇","414":"绅士蛾","415":"三蜜蜂","416":"蜂后","417":"帕奇利兹","418":"泳气鼬","419":"浮潜鼬","420":"樱花宝","421":"樱花儿","422":"无壳海牛","423":"海牛兽","424":"双尾怪手","425":"飘飘球","426":"附和气球","427":"卷卷耳","428":"长耳兔","429":"梦妖魔","430":"乌鸦头头","431":"魅力喵","432":"东施喵","433":"铃铛响","434":"臭鼬噗","435":"坦克臭鼬","436":"铜镜怪","437":"青铜钟","438":"爱哭树","439":"魔尼尼","440":"好运蛋","441":"聒噪鸟","442":"花岩怪","443":"圆陆鲨","444":"尖牙陆鲨","445":"烈咬陆鲨","446":"小卡比兽","447":"利欧路","448":"路卡利欧","449":"怪河马","450":"河马兽","451":"紫天蝎","452":"龙王蝎","453":"不良蛙","454":"毒骷蛙","455":"尖牙笼","456":"萤光鱼","457":"霓虹鱼","458":"小球飞鱼","459":"雪笠怪","460":"暴雪王","461":"玛狃拉","462":"自爆磁怪","463":"大舌舔","464":"超铁暴龙","465":"巨蔓藤","466":"电击魔兽","467":"鸭嘴焰龙","468":"波克基斯","469":"梅卡阳玛","470":"叶精灵","471":"冰精灵","472":"天蝎王","473":"象牙猪","474":"3D龙Z","475":"艾路雷朵","476":"大朝北鼻","477":"夜黑魔人","478":"雪妖女","479":"洛托姆","480":"由克希","481":"艾姆利多","482":"亚克诺姆","483":"帝牙卢卡","484":"帕路奇犽","485":"席多蓝恩","486":"雷吉奇卡斯","487":"骑拉帝纳","488":"克雷色利亚","489":"霏欧纳","490":"玛纳霏","491":"达克莱伊","492":"谢米","493":"阿尔宙斯","494":"比克提尼","495":"藤藤蛇","496":"青藤蛇","497":"君主蛇","498":"暖暖猪","499":"炒炒猪","500":"炎武王","501":"水水獭","502":"双刃丸","503":"大剑鬼","504":"探探鼠","505":"步哨鼠","506":"小约克","507":"哈约克","508":"长毛狗","509":"扒手猫","510":"酷豹","511":"花椰猴","512":"花椰猿","513":"爆香猴","514":"爆香猿","515":"冷水猴","516":"冷水猿","517":"食梦梦","518":"梦梦蚀","519":"豆豆鸽","520":"波波鸽","521":"轰隆雉鸡","522":"斑斑马","523":"雷电斑马","524":"石丸子","525":"地幔岩","526":"庞岩怪","527":"滚滚蝙蝠","528":"心蝙蝠","529":"螺钉地鼠","530":"龙头地鼠","531":"差不多娃娃","532":"搬运小匠","533":"铁骨土人","534":"修缮老头","535":"圆蝌蚪","536":"蓝蟾蜍","537":"蟾蜍王","538":"投射鬼","539":"打击鬼","540":"虫宝包","541":"宝包茧","542":"保母虫","543":"百足蜈蚣","544":"车轮球","545":"蜈蚣王","546":"木棉球","547":"风妖精","548":"百合根娃娃","549":"裙儿小姐","550":"勇士鲈鱼","551":"黑眼鳄","552":"混混鳄","553":"流氓鳄","554":"火红不倒翁","555":"达摩狒狒","556":"街头沙铃","557":"石居蟹","558":"岩殿居蟹","559":"滑头小子","560":"头巾混混","561":"象征鸟","562":"哭哭面具","563":"死神棺","564":"原盖海龟","565":"肋骨海龟","566":"始祖小鸟","567":"始祖大鸟","568":"破破袋","569":"灰尘山","570":"索罗亚","571":"索罗亚克","572":"泡沫栗鼠","573":"奇诺栗鼠","574":"哥德宝宝","575":"哥德小童","576":"哥德小姐","577":"单卵细胞球","578":"双卵细胞球","579":"人造细胞卵","580":"鸭宝宝","581":"首席天鹅","582":"迷你冰","583":"多多冰","584":"双倍多多冰","585":"四季鹿","586":"芽吹鹿","587":"电飞鼠","588":"盖盖虫","589":"骑士蜗牛","590":"宝贝球菇","591":"暴露菇","592":"轻飘飘","593":"胖嘟嘟","594":"保母曼波","595":"电电虫","596":"电蜘蛛","597":"种子铁球","598":"坚果哑铃","599":"齿轮儿","600":"齿轮组","601":"齿轮怪","602":"麻麻小鱼","603":"麻麻鳗","604":"麻麻鳗鱼王","605":"小灰怪","606":"大宇怪","607":"烛光灵","608":"灯火幽灵","609":"水晶灯火灵","610":"牙牙","611":"斧牙龙","612":"双斧战龙","613":"喷嚏熊","614":"冻原熊","615":"几何雪花","616":"小嘴蜗","617":"敏捷虫","618":"泥巴鱼","619":"功夫鼬","620":"师父鼬","621":"赤面龙","622":"泥偶小人","623":"泥偶巨人","624":"驹刀小兵","625":"劈斩司令","626":"爆爆头水牛","627":"毛头小鹰","628":"勇士鹰","629":"秃鹰小子","630":"秃鹰娜","631":"食蚁炉","632":"铁蚁","633":"单首龙","634":"双头龙","635":"三头龙","636":"燃烧虫","637":"火神虫","638":"勾帕路翁","639":"代拉基翁","640":"毕力吉翁","641":"龙卷云","642":"雷电云","643":"雷希拉姆","644":"捷克罗姆","645":"土地云","646":"酋雷姆","647":"凯路迪欧","648":"美洛耶塔","649":"盖诺赛克特","650":"哈力栗","651":"胖胖哈力","652":"布里卡隆","653":"火狐狸","654":"长尾火狐","655":"妖火红狐","656":"呱呱泡蛙","657":"呱头蛙","658":"甲贺忍蛙","659":"掘掘兔","660":"攉土兔","661":"小箭雀","662":"火箭雀","663":"烈箭鹟","664":"粉蛹","665":"粉蝶蛹","666":"碧粉蝶","667":"小狮狮","668":"火炎狮","669":"花蓓蓓","670":"花叶蒂","671":"花洁夫人","672":"咩咩羊","673":"坐骑山羊","674":"顽皮熊猫","675":"流氓熊猫","676":"多丽米亚","677":"妙喵","678":"超能妙喵","679":"独剑鞘","680":"双剑鞘","681":"坚盾剑怪","682":"粉香香","683":"芳香精","684":"绵绵泡芙","685":"胖甜妮","686":"豪喇花枝","687":"乌贼王","688":"龟脚脚","689":"龟足巨铠","690":"垃垃藻","691":"毒拉蜜妮","692":"铁臂枪虾","693":"钢炮臂虾","694":"伞电蜥","695":"电伞查特","696":"宝宝暴龙","697":"怪颚龙","698":"冰雪龙","699":"冰雪巨龙","700":"仙子精灵","701":"战斗飞鸟","702":"咚咚鼠","703":"小碎钻","704":"黏黏宝","705":"黏美伊儿","706":"黏美露龙","707":"钥圈儿","708":"小木灵","709":"朽木妖","710":"南瓜精","711":"南瓜怪人","712":"冰宝","713":"冰岩怪","714":"嗡蝠","715":"音波龙","716":"哲尔尼亚斯","717":"伊裴尔塔尔","718":"基格尔德","719":"蒂安希","720":"胡帕","721":"波尔凯尼恩"}
--------------------------------------------------------------------------------
/src/shared/assets/locales/pokemon.zh_hk.json:
--------------------------------------------------------------------------------
1 | {"1":"奇異種子","2":"奇異草","3":"奇異花","4":"小火龍","5":"火恐龍","6":"噴火龍","7":"車厘龜","8":"卡美龜","9":"水箭龜","10":"綠毛蟲","11":"鐵甲蟲","12":"巴他蝶","13":"獨角蟲","14":"鐵殼蛹","15":"大針蜂","16":"波波","17":"比比鳥","18":"大比鳥","19":"小哥達","20":"哥達","21":"鬼雀","22":"魔雀","23":"阿柏蛇","24":"阿柏怪","25":"比卡超","26":"雷超","27":"穿山鼠","28":"穿山王","29":"尼美蘭","30":"尼美蘿","31":"尼美后","32":"尼多郎","33":"尼多利","34":"尼多王","35":"皮皮","36":"皮可斯","37":"六尾","38":"九尾","39":"波波球","40":"肥波球","41":"波音蝠","42":"大口蝠","43":"行路草","44":"怪味花","45":"霸王花","46":"蘑菇蟲","47":"巨菇蟲","48":"毛毛蟲","49":"魔魯風","50":"地鼠","51":"三頭地鼠","52":"喵喵怪","53":"高竇貓","54":"傻鴨","55":"高超鴨","56":"猴怪","57":"火爆猴","58":"護主犬","59":"奉神犬","60":"蚊香蝌蚪","61":"蚊香蛙","62":"大力蛙","63":"卡斯","64":"尤基納","65":"富迪","66":"鐵腕","67":"大力","68":"怪力","69":"喇叭芽","70":"口呆花","71":"大食花","72":"大眼水母","73":"多腳水母","74":"小拳石","75":"滾動石","76":"滾動岩","77":"小火馬","78":"烈焰馬","79":"小呆獸","80":"大呆獸","81":"小磁怪","82":"三合一磁怪","83":"火蔥鴨","84":"多多","85":"多多利","86":"小海獅","87":"白海獅","88":"爛泥怪","89":"爛泥獸","90":"貝殼怪","91":"鐵甲貝","92":"鬼斯","93":"鬼斯通","94":"耿鬼","95":"大岩蛇","96":"食夢獸","97":"催眠獸","98":"大鉗蟹","99":"巨鉗蟹","100":"霹靂蛋","101":"雷霆蛋","102":"蛋蛋","103":"椰樹獸","104":"卡拉卡拉","105":"格拉格拉","106":"沙古拉","107":"比華拉","108":"大舌頭","109":"毒氣丸","110":"毒氣雙子","111":"鐵甲犀牛","112":"鐵甲暴龍","113":"吉利蛋","114":"長籐怪","115":"袋獸","116":"噴墨海馬","117":"飛刺海馬","118":"獨角金魚","119":"金魚王","120":"海星星","121":"寶石海星","122":"吸盤小丑","123":"飛天螳螂","124":"紅唇娃","125":"電擊獸","126":"鴨嘴火龍","127":"鉗刀甲蟲","128":"大隻牛","129":"鯉魚王","130":"鯉魚龍","131":"背背龍","132":"百變怪","133":"伊貝","134":"水伊貝","135":"雷伊貝","136":"火伊貝","137":"立方獸","138":"菊石獸","139":"多刺菊石獸","140":"萬年蟲","141":"鐮刀蟲","142":"化石飛龍","143":"卡比獸","144":"急凍鳥","145":"雷鳥","146":"火鳥","147":"迷你龍","148":"哈古龍","149":"啟暴龍","150":"超夢夢","151":"夢夢","152":"Chikorita","153":"Bayleef","154":"Meganium","155":"Cyndaquil","156":"Quilava","157":"Typhlosion","158":"Totodile","159":"Croconaw","160":"Feraligatr","161":"Sentret","162":"Furret","163":"Hoothoot","164":"Noctowl","165":"Ledyba","166":"Ledian","167":"Spinarak","168":"Ariados","169":"Crobat","170":"Chinchou","171":"Lanturn","172":"Pichu","173":"Cleffa","174":"Igglybuff","175":"Togepi","176":"Togetic","177":"Natu","178":"Xatu","179":"Mareep","180":"Flaaffy","181":"Ampharos","182":"Bellossom","183":"Marill","184":"Azumarill","185":"Sudowoodo","186":"Politoed","187":"Hoppip","188":"Skiploom","189":"Jumpluff","190":"Aipom","191":"Sunkern","192":"Sunflora","193":"Yanma","194":"Wooper","195":"Quagsire","196":"Espeon","197":"Umbreon","198":"Murkrow","199":"Slowking","200":"Misdreavus","201":"Unown","202":"Wobbuffet","203":"Girafarig","204":"Pineco","205":"Forretress","206":"Dunsparce","207":"Gligar","208":"Steelix","209":"Snubbull","210":"Granbull","211":"Qwilfish","212":"Scizor","213":"Shuckle","214":"Heracross","215":"Sneasel","216":"Teddiursa","217":"Ursaring","218":"Slugma","219":"Magcargo","220":"Swinub","221":"Piloswine","222":"Corsola","223":"Remoraid","224":"Octillery","225":"Delibird","226":"Mantine","227":"Skarmory","228":"Houndour","229":"Houndoom","230":"Kingdra","231":"Phanpy","232":"Donphan","233":"Porygon2","234":"Stantler","235":"Smeargle","236":"Tyrogue","237":"Hitmontop","238":"Smoochum","239":"Elekid","240":"Magby","241":"Miltank","242":"Blissey","243":"Raikou","244":"Entei","245":"Suicune","246":"Larvitar","247":"Pupitar","248":"Tyranitar","249":"Lugia","250":"Ho-Oh","251":"Celebi","252":"Treecko","253":"Grovyle","254":"Sceptile","255":"Torchic","256":"Combusken","257":"Blaziken","258":"Mudkip","259":"Marshtomp","260":"Swampert","261":"Poochyena","262":"Mightyena","263":"Zigzagoon","264":"Linoone","265":"Wurmple","266":"Silcoon","267":"Beautifly","268":"Cascoon","269":"Dustox","270":"Lotad","271":"Lombre","272":"Ludicolo","273":"Seedot","274":"Nuzleaf","275":"Shiftry","276":"Taillow","277":"Swellow","278":"Wingull","279":"Pelipper","280":"Ralts","281":"Kirlia","282":"Gardevoir","283":"Surskit","284":"Masquerain","285":"Shroomish","286":"Breloom","287":"Slakoth","288":"Vigoroth","289":"Slaking","290":"Nincada","291":"Ninjask","292":"Shedinja","293":"Whismur","294":"Loudred","295":"Exploud","296":"Makuhita","297":"Hariyama","298":"Azurill","299":"Nosepass","300":"Skitty","301":"Delcatty","302":"Sableye","303":"Mawile","304":"Aron","305":"Lairon","306":"Aggron","307":"Meditite","308":"Medicham","309":"Electrike","310":"Manectric","311":"Plusle","312":"Minun","313":"Volbeat","314":"Illumise","315":"Roselia","316":"Gulpin","317":"Swalot","318":"Carvanha","319":"Sharpedo","320":"Wailmer","321":"Wailord","322":"Numel","323":"Camerupt","324":"Torkoal","325":"Spoink","326":"Grumpig","327":"Spinda","328":"Trapinch","329":"Vibrava","330":"Flygon","331":"Cacnea","332":"Cacturne","333":"Swablu","334":"Altaria","335":"Zangoose","336":"Seviper","337":"Lunatone","338":"Solrock","339":"Barboach","340":"Whiscash","341":"Corphish","342":"Crawdaunt","343":"Baltoy","344":"Claydol","345":"Lileep","346":"Cradily","347":"Anorith","348":"Armaldo","349":"Feebas","350":"Milotic","351":"Castform","352":"Kecleon","353":"Shuppet","354":"Banette","355":"Duskull","356":"Dusclops","357":"Tropius","358":"Chimecho","359":"Absol","360":"Wynaut","361":"Snorunt","362":"Glalie","363":"Spheal","364":"Sealeo","365":"Walrein","366":"Clamperl","367":"Huntail","368":"Gorebyss","369":"Relicanth","370":"Luvdisc","371":"Bagon","372":"Shelgon","373":"Salamence","374":"Beldum","375":"Metang","376":"Metagross","377":"Regirock","378":"Regice","379":"Registeel","380":"Latias","381":"Latios","382":"Kyogre","383":"Groudon","384":"Rayquaza","385":"Jirachi","386":"Deoxys","387":"Turtwig","388":"Grotle","389":"Torterra","390":"Chimchar","391":"Monferno","392":"Infernape","393":"Piplup","394":"Prinplup","395":"Empoleon","396":"Starly","397":"Staravia","398":"Staraptor","399":"Bidoof","400":"Bibarel","401":"Kricketot","402":"Kricketune","403":"Shinx","404":"Luxio","405":"Luxray","406":"Budew","407":"Roserade","408":"Cranidos","409":"Rampardos","410":"Shieldon","411":"Bastiodon","412":"Burmy","413":"Wormadam","414":"Mothim","415":"Combee","416":"Vespiquen","417":"Pachirisu","418":"Buizel","419":"Floatzel","420":"Cherubi","421":"Cherrim","422":"Shellos","423":"Gastrodon","424":"Ambipom","425":"Drifloon","426":"Drifblim","427":"Buneary","428":"Lopunny","429":"Mismagius","430":"Honchkrow","431":"Glameow","432":"Purugly","433":"Chingling","434":"Stunky","435":"Skuntank","436":"Bronzor","437":"Bronzong","438":"Bonsly","439":"Mime Jr.","440":"Happiny","441":"Chatot","442":"Spiritomb","443":"Gible","444":"Gabite","445":"Garchomp","446":"Munchlax","447":"Riolu","448":"Lucario","449":"Hippopotas","450":"Hippowdon","451":"Skorupi","452":"Drapion","453":"Croagunk","454":"Toxicroak","455":"Carnivine","456":"Finneon","457":"Lumineon","458":"Mantyke","459":"Snover","460":"Abomasnow","461":"Weavile","462":"Magnezone","463":"Lickilicky","464":"Rhyperior","465":"Tangrowth","466":"Electivire","467":"Magmortar","468":"Togekiss","469":"Yanmega","470":"Leafeon","471":"Glaceon","472":"Gliscor","473":"Mamoswine","474":"Porygon-Z","475":"Gallade","476":"Probopass","477":"Dusknoir","478":"Froslass","479":"Rotom","480":"Uxie","481":"Mesprit","482":"Azelf","483":"Dialga","484":"Palkia","485":"Heatran","486":"Regigigas","487":"Giratina","488":"Cresselia","489":"Phione","490":"Manaphy","491":"Darkrai","492":"Shaymin","493":"Arceus","494":"Victini","495":"Snivy","496":"Servine","497":"Serperior","498":"Tepig","499":"Pignite","500":"Emboar","501":"Oshawott","502":"Dewott","503":"Samurott","504":"Patrat","505":"Watchog","506":"Lillipup","507":"Herdier","508":"Stoutland","509":"Purrloin","510":"Liepard","511":"Pansage","512":"Simisage","513":"Pansear","514":"Simisear","515":"Panpour","516":"Simipour","517":"Munna","518":"Musharna","519":"Pidove","520":"Tranquill","521":"Unfezant","522":"Blitzle","523":"Zebstrika","524":"Roggenrola","525":"Boldore","526":"Gigalith","527":"Woobat","528":"Swoobat","529":"Drilbur","530":"Excadrill","531":"Audino","532":"Timburr","533":"Gurdurr","534":"Conkeldurr","535":"Tympole","536":"Palpitoad","537":"Seismitoad","538":"Throh","539":"Sawk","540":"Sewaddle","541":"Swadloon","542":"Leavanny","543":"Venipede","544":"Whirlipede","545":"Scolipede","546":"Cottonee","547":"Whimsicott","548":"Petilil","549":"Lilligant","550":"Basculin","551":"Sandile","552":"Krokorok","553":"Krookodile","554":"Darumaka","555":"Darmanitan","556":"Maractus","557":"Dwebble","558":"Crustle","559":"Scraggy","560":"Scrafty","561":"Sigilyph","562":"Yamask","563":"Cofagrigus","564":"Tirtouga","565":"Carracosta","566":"Archen","567":"Archeops","568":"Trubbish","569":"Garbodor","570":"Zorua","571":"Zoroark","572":"Minccino","573":"Cinccino","574":"Gothita","575":"Gothorita","576":"Gothitelle","577":"Solosis","578":"Duosion","579":"Reuniclus","580":"Ducklett","581":"Swanna","582":"Vanillite","583":"Vanillish","584":"Vanilluxe","585":"Deerling","586":"Sawsbuck","587":"Emolga","588":"Karrablast","589":"Escavalier","590":"Foongus","591":"Amoonguss","592":"Frillish","593":"Jellicent","594":"Alomomola","595":"Joltik","596":"Galvantula","597":"Ferroseed","598":"Ferrothorn","599":"Klink","600":"Klang","601":"Klinklang","602":"Tynamo","603":"Eelektrik","604":"Eelektross","605":"Elgyem","606":"Beheeyem","607":"Litwick","608":"Lampent","609":"Chandelure","610":"Axew","611":"Fraxure","612":"Haxorus","613":"Cubchoo","614":"Beartic","615":"Cryogonal","616":"Shelmet","617":"Accelgor","618":"Stunfisk","619":"Mienfoo","620":"Mienshao","621":"Druddigon","622":"Golett","623":"Golurk","624":"Pawniard","625":"Bisharp","626":"Bouffalant","627":"Rufflet","628":"Braviary","629":"Vullaby","630":"Mandibuzz","631":"Heatmor","632":"Durant","633":"Deino","634":"Zweilous","635":"Hydreigon","636":"Larvesta","637":"Volcarona","638":"Cobalion","639":"Terrakion","640":"Virizion","641":"Tornadus","642":"Thundurus","643":"Reshiram","644":"Zekrom","645":"Landorus","646":"Kyurem","647":"Keldeo","648":"Meloetta","649":"Genesect","650":"Chespin","651":"Quilladin","652":"Chesnaught","653":"Fennekin","654":"Braixen","655":"Delphox","656":"Froakie","657":"Frogadier","658":"Greninja","659":"Bunnelby","660":"Diggersby","661":"Fletchling","662":"Fletchinder","663":"Talonflame","664":"Scatterbug","665":"Spewpa","666":"Vivillon","667":"Litleo","668":"Pyroar","669":"Flabébé","670":"Floette","671":"Florges","672":"Skiddo","673":"Gogoat","674":"Pancham","675":"Pangoro","676":"Furfrou","677":"Espurr","678":"Meowstic","679":"Honedge","680":"Doublade","681":"Aegislash","682":"Spritzee","683":"Aromatisse","684":"Swirlix","685":"Slurpuff","686":"Inkay","687":"Malamar","688":"Binacle","689":"Barbaracle","690":"Skrelp","691":"Dragalge","692":"Clauncher","693":"Clawitzer","694":"Helioptile","695":"Heliolisk","696":"Tyrunt","697":"Tyrantrum","698":"Amaura","699":"Aurorus","700":"Sylveon","701":"Hawlucha","702":"Dedenne","703":"Carbink","704":"Goomy","705":"Sliggoo","706":"Goodra","707":"Klefki","708":"Phantump","709":"Trevenant","710":"Pumpkaboo","711":"Gourgeist","712":"Bergmite","713":"Avalugg","714":"Noibat","715":"Noivern","716":"Xerneas","717":"Yveltal","718":"Zygarde","719":"Diancie","720":"Hoopa","721":"Volcanion"}
2 |
--------------------------------------------------------------------------------
/src/shared/assets/locales/pokemon.pt_br.json:
--------------------------------------------------------------------------------
1 | {"1":"Bulbasaur","2":"Ivysaur","3":"Venusaur","4":"Charmander","5":"Charmeleon","6":"Charizard","7":"Squirtle","8":"Wartortle","9":"Blastoise","10":"Caterpie","11":"Metapod","12":"Butterfree","13":"Weedle","14":"Kakuna","15":"Beedrill","16":"Pidgey","17":"Pidgeotto","18":"Pidgeot","19":"Rattata","20":"Raticate","21":"Spearow","22":"Fearow","23":"Ekans","24":"Arbok","25":"Pikachu","26":"Raichu","27":"Sandshrew","28":"Sandslash","29":"Nidoran?","30":"Nidorina","31":"Nidoqueen","32":"Nidoran?","33":"Nidorino","34":"Nidoking","35":"Clefairy","36":"Clefable","37":"Vulpix","38":"Ninetales","39":"Jigglypuff","40":"Wigglytuff","41":"Zubat","42":"Golbat","43":"Oddish","44":"Gloom","45":"Vileplume","46":"Paras","47":"Parasect","48":"Venonat","49":"Venomoth","50":"Diglett","51":"Dugtrio","52":"Meowth","53":"Persian","54":"Psyduck","55":"Golduck","56":"Mankey","57":"Primeape","58":"Growlithe","59":"Arcanine","60":"Poliwag","61":"Poliwhirl","62":"Poliwrath","63":"Abra","64":"Kadabra","65":"Alakazam","66":"Machop","67":"Machoke","68":"Machamp","69":"Bellsprout","70":"Weepinbell","71":"Victreebel","72":"Tentacool","73":"Tentacruel","74":"Geodude","75":"Graveler","76":"Golem","77":"Ponyta","78":"Rapidash","79":"Slowpoke","80":"Slowbro","81":"Magnemite","82":"Magneton","83":"Farfetch'd","84":"Doduo","85":"Dodrio","86":"Seel","87":"Dewgong","88":"Grimer","89":"Muk","90":"Shellder","91":"Cloyster","92":"Gastly","93":"Haunter","94":"Gengar","95":"Onix","96":"Drowzee","97":"Hypno","98":"Krabby","99":"Kingler","100":"Voltorb","101":"Electrode","102":"Exeggcute","103":"Exeggutor","104":"Cubone","105":"Marowak","106":"Hitmonlee","107":"Hitmonchan","108":"Lickitung","109":"Koffing","110":"Weezing","111":"Rhyhorn","112":"Rhydon","113":"Chansey","114":"Tangela","115":"Kangaskhan","116":"Horsea","117":"Seadra","118":"Goldeen","119":"Seaking","120":"Staryu","121":"Starmie","122":"Mr.","123":"Scyther","124":"Jynx","125":"Electabuzz","126":"Magmar","127":"Pinsir","128":"Tauros","129":"Magikarp","130":"Gyarados","131":"Lapras","132":"Ditto","133":"Eevee","134":"Vaporeon","135":"Jolteon","136":"Flareon","137":"Porygon","138":"Omanyte","139":"Omastar","140":"Kabuto","141":"Kabutops","142":"Aerodactyl","143":"Snorlax","144":"Articuno","145":"Zapdos","146":"Moltres","147":"Dratini","148":"Dragonair","149":"Dragonite","150":"Mewtwo","151":"Mew","152":"Chikorita","153":"Bayleef","154":"Meganium","155":"Cyndaquil","156":"Quilava","157":"Typhlosion","158":"Totodile","159":"Croconaw","160":"Feraligatr","161":"Sentret","162":"Furret","163":"Hoothoot","164":"Noctowl","165":"Ledyba","166":"Ledian","167":"Spinarak","168":"Ariados","169":"Crobat","170":"Chinchou","171":"Lanturn","172":"Pichu","173":"Cleffa","174":"Igglybuff","175":"Togepi","176":"Togetic","177":"Natu","178":"Xatu","179":"Mareep","180":"Flaaffy","181":"Ampharos","182":"Bellossom","183":"Marill","184":"Azumarill","185":"Sudowoodo","186":"Politoed","187":"Hoppip","188":"Skiploom","189":"Jumpluff","190":"Aipom","191":"Sunkern","192":"Sunflora","193":"Yanma","194":"Wooper","195":"Quagsire","196":"Espeon","197":"Umbreon","198":"Murkrow","199":"Slowking","200":"Misdreavus","201":"Unown","202":"Wobbuffet","203":"Girafarig","204":"Pineco","205":"Forretress","206":"Dunsparce","207":"Gligar","208":"Steelix","209":"Snubbull","210":"Granbull","211":"Qwilfish","212":"Scizor","213":"Shuckle","214":"Heracross","215":"Sneasel","216":"Teddiursa","217":"Ursaring","218":"Slugma","219":"Magcargo","220":"Swinub","221":"Piloswine","222":"Corsola","223":"Remoraid","224":"Octillery","225":"Delibird","226":"Mantine","227":"Skarmory","228":"Houndour","229":"Houndoom","230":"Kingdra","231":"Phanpy","232":"Donphan","233":"Porygon2","234":"Stantler","235":"Smeargle","236":"Tyrogue","237":"Hitmontop","238":"Smoochum","239":"Elekid","240":"Magby","241":"Miltank","242":"Blissey","243":"Raikou","244":"Entei","245":"Suicune","246":"Larvitar","247":"Pupitar","248":"Tyranitar","249":"Lugia�","250":"Ho-Oh�","251":"Celebi�","252":"Treecko","253":"Grovyle","254":"Sceptile","255":"Torchic","256":"Combusken","257":"Blaziken","258":"Mudkip","259":"Marshtomp","260":"Swampert","261":"Poochyena","262":"Mightyena","263":"Zigzagoon","264":"Linoone","265":"Wurmple","266":"Silcoon","267":"Beautifly","268":"Cascoon","269":"Dustox","270":"Lotad","271":"Lombre","272":"Ludicolo","273":"Seedot","274":"Nuzleaf","275":"Shiftry","276":"Taillow","277":"Swellow","278":"Wingull","279":"Pelipper","280":"Ralts","281":"Kirlia","282":"Gardevoir","283":"Surskit","284":"Masquerain","285":"Shroomish","286":"Breloom","287":"Slakoth","288":"Vigoroth","289":"Slaking","290":"Nincada","291":"Ninjask","292":"Shedinja","293":"Whismur","294":"Loudred","295":"Exploud","296":"Makuhita","297":"Hariyama","298":"Azurill","299":"Nosepass","300":"Skitty","301":"Delcatty","302":"Sableye","303":"Mawile","304":"Aron","305":"Lairon","306":"Aggron","307":"Meditite","308":"Medicham","309":"Electrike","310":"Manectric","311":"Plusle","312":"Minun","313":"Volbeat","314":"Illumise","315":"Roselia","316":"Gulpin","317":"Swalot","318":"Carvanha","319":"Sharpedo","320":"Wailmer","321":"Wailord","322":"Numel","323":"Camerupt","324":"Torkoal","325":"Spoink","326":"Grumpig","327":"Spinda","328":"Trapinch","329":"Vibrava","330":"Flygon","331":"Cacnea","332":"Cacturne","333":"Swablu","334":"Altaria","335":"Zangoose","336":"Seviper","337":"Lunatone","338":"Solrock","339":"Barboach","340":"Whiscash","341":"Corphish","342":"Crawdaunt","343":"Baltoy","344":"Claydol","345":"Lileep","346":"Cradily","347":"Anorith","348":"Armaldo","349":"Feebas","350":"Milotic","351":"Castform","352":"Kecleon","353":"Shuppet","354":"Banette","355":"Duskull","356":"Dusclops","357":"Tropius","358":"Chimecho","359":"Absol","360":"Wynaut","361":"Snorunt","362":"Glalie","363":"Spheal","364":"Sealeo","365":"Walrein","366":"Clamperl","367":"Huntail","368":"Gorebyss","369":"Relicanth","370":"Luvdisc","371":"Bagon","372":"Shelgon","373":"Salamence","374":"Beldum","375":"Metang","376":"Metagross","377":"Regirock","378":"Regice","379":"Registeel","380":"Latias","381":"Latios","382":"Kyogre","383":"Groudon","384":"Rayquaza","385":"Jirachi�","386":"Deoxys�","387":"Turtwig","388":"Grotle","389":"Torterra","390":"Chimchar","391":"Monferno","392":"Infernape","393":"Piplup","394":"Prinplup","395":"Empoleon","396":"Starly","397":"Staravia","398":"Staraptor","399":"Bidoof","400":"Bibarel","401":"Kricketot","402":"Kricketune","403":"Shinx","404":"Luxio","405":"Luxray","406":"Budew","407":"Roserade","408":"Cranidos","409":"Rampardos","410":"Shieldon","411":"Bastiodon","412":"Burmy","413":"Wormadam","414":"Mothim","415":"Combee","416":"Vespiquen","417":"Pachirisu","418":"Buizel","419":"Floatzel","420":"Cherubi","421":"Cherrim","422":"Shellos","423":"Gastrodon","424":"Ambipom","425":"Drifloon","426":"Drifblim","427":"Buneary","428":"Lopunny","429":"Mismagius","430":"Honchkrow","431":"Glameow","432":"Purugly","433":"Chingling","434":"Stunky","435":"Skuntank","436":"Bronzor","437":"Bronzong","438":"Bonsly","439":"Mime","440":"Happiny","441":"Chatot","442":"Spiritomb","443":"Gible","444":"Gabite","445":"Garchomp","446":"Munchlax","447":"Riolu","448":"Lucario","449":"Hippopotas","450":"Hippowdon","451":"Skorupi","452":"Drapion","453":"Croagunk","454":"Toxicroak","455":"Carnivine","456":"Finneon","457":"Lumineon","458":"Mantyke","459":"Snover","460":"Abomasnow","461":"Weavile","462":"Magnezone","463":"Lickilicky","464":"Rhyperior","465":"Tangrowth","466":"Electivire","467":"Magmortar","468":"Togekiss","469":"Yanmega","470":"Leafeon","471":"Glaceon","472":"Gliscor","473":"Mamoswine","474":"Porygon-Z","475":"Gallade","476":"Probopass","477":"Dusknoir","478":"Froslass","479":"Rotom","480":"Uxie","481":"Mesprit","482":"Azelf","483":"Dialga","484":"Palkia","485":"Heatran","486":"Regigigas","487":"Giratina","488":"Cresselia","489":"Phione��","490":"Manaphy�","491":"Darkrai�","492":"Shaymin�","493":"Arceus�","494":"Victini[53]","495":"Snivy[55]","496":"Servine","497":"Serperior","498":"Tepig[55]","499":"Pignite","500":"Emboar","501":"Oshawott[55]","502":"Dewott","503":"Samurott","504":"Patrat[63]","505":"Watchog[64]","506":"Lillipup[65]","507":"Herdier[66]","508":"Stoutland","509":"Purrloin[67]","510":"Liepard[69]","511":"Pansage[70]","512":"Simisage","513":"Pansear[73]","514":"Simisear","515":"Panpour[76]","516":"Simipour","517":"Munna[79]","518":"Musharna[80]","519":"Pidove[81]","520":"Tranquill","521":"Unfezant","522":"Blitzle[84]","523":"Zebstrika","524":"Roggenrola","525":"Boldore","526":"Gigalith[86]","527":"Woobat[87]","528":"Swoobat","529":"Drilbur[88]","530":"Excadrill[89]","531":"Audino[91]","532":"Timburr","533":"Gurdurr","534":"Conkeldurr","535":"Tympole","536":"Palpitoad","537":"Seismitoad","538":"Throh","539":"Sawk","540":"Sewaddle[93]","541":"Swadloon","542":"Leavanny","543":"Venipede","544":"Whirlipede","545":"Scolipede","546":"Cottonee","547":"Whimsicott","548":"Petilil","549":"Lilligant","550":"Basculin[94]","551":"Sandile[95]","552":"Krokorok","553":"Krookodile","554":"Darumaka","555":"Darmanitan[96]","556":"Maractus","557":"Dwebble","558":"Crustle","559":"Scraggy","560":"Scrafty","561":"Sigilyph","562":"Yamask[97]","563":"Cofagrigus[98]","564":"Tirtouga","565":"Carracosta","566":"Archen","567":"Archeops","568":"Trubbish","569":"Garbodor","570":"Zorua[100]","571":"Zoroark[100]","572":"Minccino[101]","573":"Cinccino","574":"Gothita","575":"Gothorita","576":"Gothitelle[103]","577":"Solosis","578":"Duosion","579":"Reuniclus[105]","580":"Ducklett","581":"Swanna[106]","582":"Vanillite","583":"Vanillish","584":"Vanilluxe","585":"Deerling[107]","586":"Sawsbuck[109]","587":"Emolga[110]","588":"Karrablast","589":"Escavalier","590":"Foongus","591":"Amoonguss","592":"Frillish","593":"Jellicent","594":"Alomomola[112]","595":"Joltik","596":"Galvantula[113]","597":"Ferroseed","598":"Ferrothorn","599":"Klink[114]","600":"Klang","601":"Klinklang","602":"Tynamo","603":"Eelektrik","604":"Eelektross","605":"Elgyem","606":"Beheeyem","607":"Litwick","608":"Lampent","609":"Chandelure","610":"Axew[115]","611":"Fraxure[116]","612":"Haxorus[118]","613":"Cubchoo","614":"Beartic","615":"Cryogonal","616":"Shelmet","617":"Accelgor","618":"Stunfisk","619":"Mienfoo","620":"Mienshao","621":"Druddigon","622":"Golett","623":"Golurk","624":"Pawniard","625":"Bisharp","626":"Bouffalant","627":"Rufflet","628":"Braviary[121]","629":"Vullaby","630":"Mandibuzz","631":"Heatmor","632":"Durant","633":"Deino","634":"Zweilous","635":"Hydreigon","636":"Larvesta","637":"Volcarona","638":"Cobalion","639":"Terrakion","640":"Virizion","641":"Tornadus","642":"Thundurus","643":"Reshiram[122]","644":"Zekrom[122]","645":"Landorus","646":"Kyurem","647":"Keldeo","648":"Meloetta","649":"Genesect","650":"Chespin","651":"Quilladin","652":"Chesnaught","653":"Fennekin","654":"Braixen","655":"Delphox","656":"Froakie","657":"Frogadier","658":"Greninja","659":"Bunnelby","660":"Diggersby","661":"Fletchling","662":"Fletchinder","663":"Talonflame","664":"Scatterbug","665":"Spewpa","666":"Vivillon","667":"Litleo","668":"Pyroar","700":"Sylveon","714":"Noibat","715":"Noivern","716":"Xerneas","717":"Yveltal","718":"Zygarde","719":"Diancie","720":"Hoopa","721":"Volcanium"}
2 |
--------------------------------------------------------------------------------
/src/shared/assets/locales/pokemon.ru.json:
--------------------------------------------------------------------------------
1 | {"1":"Бульбазавр","2":"Ивизавр","3":"Венузавр","4":"Чармандер","5":"Чармилеон","6":"Чаризард","7":"Сквиртл","8":"Вартортл","9":"Бластойз","10":"Катерпи","11":"Метапод","12":"Батерфри","13":"Видл","14":"Какуна","15":"Бидрилл","16":"Пиджи","17":"Пиджеотто","18":"Пиджит","19":"Раттата","20":"Рэтикейт","21":"Спироу","22":"Фироу","23":"Эканс","24":"Эрбок","25":"Пикачу","26":"Райчу","27":"Сэндшру","28":"Сэндслэш","29":"Нидоран♀","30":"Нидорина","31":"Нидоквин","32":"Нидоран♂","33":"Нидорино","34":"Нидокинг","35":"Клефейри","36":"Клефейбл","37":"Вульпикс","38":"Найнтейлс","39":"Джиглипаф","40":"Виглитаф","41":"Зубат","42":"Голбат","43":"Оддиш","44":"Глум","45":"Вайлплум","46":"Парас","47":"Парасект","48":"Венонат","49":"Веномот","50":"Диглетт","51":"Дагтрио","52":"Мяут","53":"Персиан","54":"Псидак","55":"Голдак","56":"Манки","57":"Праймейп","58":"Гроулит","59":"Арканайн","60":"Поливаг","61":"Поливирл","62":"Полирэт","63":"Абра","64":"Кадабра","65":"Алаказам","66":"Мачоп","67":"Мачоук","68":"Мачамп","69":"Беллспраут","70":"Випинбелл","71":"Виктрибел","72":"Тентакул","73":"Тентакруэль","74":"Джеодуд","75":"Гравелер","76":"Голем","77":"Понита","78":"Рапидэш","79":"Слоупок","80":"Слоубро","81":"Магнемайт","82":"Магнетон","83":"Фарфетчд","84":"Додуо","85":"Додрио","86":"Сил","87":"Дьюгонг","88":"Граймер","89":"Мак","90":"Шеллдер","91":"Клойстер","92":"Гастли","93":"Хонтер","94":"Генгар","95":"Оникс","96":"Дроузи","97":"Гипно","98":"Крабби","99":"Кинглер","100":"Волторб","101":"Электрод","102":"Эгзегут","103":"Эгзегутор","104":"Кьюбон","105":"Маровак","106":"Хитмонли","107":"Хитмончан","108":"Ликитунг","109":"Коффинг","110":"Визинг","111":"Райхорн","112":"Райдон","113":"Ченси","114":"Танджела","115":"Кангасхан","116":"Хорси","117":"Сидра","118":"Голдин","119":"Сикинг","120":"Старью","121":"Старми","122":"Мистер Майм","123":"Сайтер","124":"Джинкс","125":"Электабазз","126":"Магмар","127":"Пинсир","128":"Торос","129":"Мэджикарп","130":"Гаярдос","131":"Лапрас","132":"Дитто","133":"Иви","134":"Вапореон","135":"Джолтеон","136":"Флареон","137":"Поригон","138":"Оманайт","139":"Омастар","140":"Кабуто","141":"Кабутопс","142":"Аэродактиль","143":"Снорлакс","144":"Артикуно","145":"Запдос","146":"Молдрес","147":"Дратини","148":"Драгонэйр","149":"Драгонайт","150":"Мьюту","151":"Мью","152":"Чикорита","153":"Бейлиф","154":"Меганиум","155":"Синдаквил","156":"Квилава","157":"Тайфложн","158":"Тотодайл","159":"Кроконав","160":"Фералигатр","161":"Сентрет","162":"Фуррет","163":"Хутхут","164":"Ноктаул","165":"Ледиба","166":"Ледиан","167":"Спинарак","168":"Ариадос","169":"Кробат","170":"Чинчоу","171":"Лантурн","172":"Пичу","173":"Клеффа","174":"Иглибафф","175":"Тогепи","176":"Тогетик","177":"Нату","178":"Ксату","179":"Мэрип","180":"Флаффи","181":"Амфарос","182":"Беллосом","183":"Мэрилл","184":"Азумэрилл","185":"Судовудо","186":"Политод","187":"Хоппип","188":"Скиплум","189":"Джамплафф","190":"Айпом","191":"Санкерн","192":"Санфлора","193":"Янма","194":"Вупер","195":"Квагсайр","196":"Эспеон","197":"Амбреон","198":"Маркроу","199":"Слоукинг","200":"Мисдривус","201":"Аноун","202":"Воббафет","203":"Жирафариг","204":"Пайнеко","205":"Форретресс","206":"Данспарс","207":"Глайгер","208":"Стиликс","209":"Снаббл","210":"Гранбулл","211":"Квилфиш","212":"Сизор","213":"Шакл","214":"Геракросс","215":"Снизел","216":"Теддиурса","217":"Урсаринг","218":"Слагма","219":"Магкарго","220":"Свайнаб","221":"Пилосвайн","222":"Корсола","223":"Реморейд","224":"Октиллери","225":"Дэлибёрд","226":"Мантайн","227":"Скармори","228":"Хаундаур","229":"Хаундум","230":"Кингдра","231":"Фэнпи","232":"Донфан","233":"Поригон 2","234":"Стэнтлер","235":"Смиргл","236":"Тирогу","237":"Хитмонтоп","238":"Смучам","239":"Элекид","240":"Магби","241":"Милтанк","242":"Блисси","243":"Райкоу","244":"Энтей","245":"Суйкун","246":"Ларвитар","247":"Пьюпитар","248":"Тиранитар","249":"Лугия","250":"Хо-Ох","251":"Селеби","252":"Трико","253":"Гроувайл","254":"Скептайл","255":"Торчик","256":"Комбускен","257":"Блейзикен","258":"Мадкип","259":"Марштомп","260":"Свамперт","261":"Пучиена","262":"Майтиена","263":"Зигзагун","264":"Лайнун","265":"Вёрмпл","266":"Силкун","267":"Бьютифлай","268":"Каскун","269":"Дастокс","270":"Лотад","271":"Ломбре","272":"Лудиколо","273":"Сидот","274":"Назлиф","275":"Шифтри","276":"Тейлоу","277":"Свеллоу","278":"Вингалл","279":"Пелиппер","280":"Ральтс","281":"Кирлия","282":"Гардевуар","283":"Сёрскит","284":"Маскверейн","285":"Шрумиш","286":"Брелум","287":"Слэйкот","288":"Вигорот","289":"Слэйкинг","290":"Нинкада","291":"Нинджаск","292":"Шединджа","293":"Висмур","294":"Лаудред","295":"Эксплауд","296":"Макухита","297":"Харияма","298":"Азурилл","299":"Ноуспасс","300":"Скитти","301":"Делкатти","302":"Саблай","303":"Мэвайл","304":"Арон","305":"Лейрон","306":"Аггрон","307":"Медитайт","308":"Медичам","309":"Электрайк","310":"Манектрик","311":"Плюсл","312":"Минун","313":"Волбит","314":"Иллюмизи","315":"Розалия","316":"Галпин","317":"Свалот","318":"Карванна","319":"Шарпидо","320":"Вэйлмер","321":"Вэйлорд","322":"Намел","323":"Камерапт","324":"Торкл","325":"Споинк","326":"Грампиг","327":"Спинда","328":"Трапинч","329":"Вибрава","330":"Флайгон","331":"Какния","332":"Кактурн","333":"Сваблу","334":"Алтария","335":"Зангус","336":"Сивайпер","337":"Лунатон","338":"Солрок","339":"Барбоа","340":"Вискэш","341":"Корфиш","342":"Кродант","343":"Балтой","344":"Клэйдол","345":"Лилип","346":"Крэдили","347":"Анорит","348":"Армальдо","349":"Фибас","350":"Майлотик","351":"Кастформ","352":"Кеклеон","353":"Шаппет","354":"Бэнетт","355":"Даскулл","356":"Дасклопс","357":"Тропиус","358":"Чаймеко","359":"Эбсол","360":"Винаут","361":"Снорант","362":"Глэйли","363":"Сфил","364":"Силео","365":"Уолрейн","366":"Кламперл","367":"Хантэйл","368":"Горебисс","369":"Реликант","370":"Лювдиск","371":"Багон","372":"Шелгон","373":"Саламенс","374":"Белдум","375":"Метанг","376":"Метагросс","377":"Реджирок","378":"Реджайс","379":"Реджистил","380":"Латиас","381":"Латиос","382":"Кайогр","383":"Граудон","384":"Рэйкваза","385":"Джирачи","386":"Деоксис","387":"Туртвиг","388":"Гротл","389":"Тортерра","390":"Чимчар","391":"Монферно","392":"Инфернейп","393":"Пиплуп","394":"Принплуп","395":"Эмполеон","396":"Старли","397":"Старавия","398":"Стараптор","399":"Бидуф","400":"Бибарел","401":"Крикетот","402":"Крикетун","403":"Шинкс","404":"Люксио","405":"Люксрей","406":"Бадью","407":"Роузрейд","408":"Крэйнидос","409":"Рампардос","410":"Шилдон","411":"Бастиодон","412":"Бурми","413":"Вормадам","414":"Мотим","415":"Комби","416":"Веспиквин","417":"Пачирису","418":"Буизел","419":"Флотцел","420":"Черуби","421":"Черрим","422":"Шеллос","423":"Гастродон","424":"Эмбипом","425":"Дрифлун","426":"Дрифблим","427":"Банири","428":"Лопанни","429":"Мисмагиус","430":"Хончкроу","431":"Глеймяу","432":"Пурагли","433":"Чинглинг","434":"Станки","435":"Скунтанк","436":"Бронзор","437":"Бронзонг","438":"Бонслай","439":"Майм Младший","440":"Хэппини","441":"Чатот","442":"Спиритомб","443":"Гибл","444":"Габайт","445":"Гарчомп","446":"Манчлакс","447":"Риолу","448":"Лукарио","449":"Гиппопотас","450":"Гипподон","451":"Скорупи","452":"Драпион","453":"Кроганк","454":"Токсикроук","455":"Карнивайн","456":"Финнеон","457":"Люминеон","458":"Мантик","459":"Сновер","460":"Абомасноу","461":"Вивайл","462":"Магнезон","463":"Ликилики","464":"Райпериор","465":"Тангроут","466":"Элективайр","467":"Магмортар","468":"Тогекисс","469":"Янмега","470":"Лифеон","471":"Гласеон","472":"Глайскор","473":"Мамосвайн","474":"Поригон-Z","475":"Галлейд","476":"Пробопасс","477":"Даскнуар","478":"Фросласс","479":"Ротом","480":"Юкси","481":"Месприт","482":"Азельф","483":"Диалга","484":"Палкия","485":"Хитран","486":"Реджигигас","487":"Гиратина","488":"Крисселия","489":"Фион","490":"Манапи","491":"Даркрай","492":"Шеймин","493":"Аркеус","494":"Виктини","495":"Снайви","496":"Сервайн","497":"Серпериор","498":"Тепиг","499":"Пигнайт","500":"Эмбор","501":"Ошавотт","502":"Девотт","503":"Самуротт","504":"Патрат","505":"Уочхог","506":"Лиллипап","507":"Хердиер","508":"Стаутлэнд","509":"Пуррлойн","510":"Лайпард","511":"Пансейдж","512":"Симисейдж","513":"Пансир","514":"Симисир","515":"Панпур","516":"Симипур","517":"Мунна","518":"Мушарна","519":"Пидав","520":"Транквилл","521":"Анфезант","522":"Блитцл","523":"Зебстрайка","524":"Роггенрола","525":"Болдор","526":"Гигалит","527":"Вубэт","528":"Свубэт","529":"Дрилбур","530":"Экскадрилл","531":"Аудино","532":"Тимбурр","533":"Гурдурр","534":"Конкельдурр","535":"Тимпол","536":"Палпитоад","537":"Сейсмитоад","538":"Тро","539":"Соук","540":"Севадл","541":"Свадлун","542":"Левани","543":"Венипид","544":"Вирлипид","545":"Сколипид","546":"Коттони","547":"Вимсискотт","548":"Петилил","549":"Лиллигант","550":"Баскулин","551":"Сэндайл","552":"Крокорок","553":"Крукодайл","554":"Дарумакка","555":"Дарманитан","556":"Марактус","557":"Двэббл","558":"Крастл","559":"Скрэгги","560":"Скрафти","561":"Сиджилиф","562":"Ямаск","563":"Кофагригус","564":"Тиртуга","565":"Карракоста","566":"Аркен","567":"Аркеопс","568":"Траббиш","569":"Гарбодор","570":"Зоруа","571":"Зороарк","572":"Минчино","573":"Чинчино","574":"Гофита","575":"Гофорита","576":"Гофителль","577":"Солозис","578":"Дуозион","579":"Реониклус","580":"Даклетт","581":"Сванна","582":"Ваниллайт","583":"Ваниллиш","584":"Ваниллакс","585":"Дирлинг","586":"Соусбак","587":"Эмолга","588":"Каррабласт","589":"Эскавалир","590":"Фунгус","591":"Амунгус","592":"Фрилиш","593":"Джеллисент","594":"Аломомола","595":"Джолтик","596":"Галвантула","597":"Ферросид","598":"Ферроторн","599":"Клинк","600":"Клэнг","601":"Клинклэнг","602":"Тайнамо","603":"Илектрик","604":"Илектросс","605":"Илджием","606":"Бихием","607":"Литвик","608":"Лампент","609":"Шанделюр","610":"Эксью","611":"Фраксур","612":"Гаксорус","613":"Кабчу","614":"Бертик","615":"Криогонал","616":"Шелмет","617":"Аксельгор","618":"Станфиск","619":"Меньфу","620":"Меньшао","621":"Драддигон","622":"Голетт","623":"Голурк","624":"Паониард","625":"Бишарп","626":"Буффалант","627":"Раффлет","628":"Брэйвиари","629":"Валлаби","630":"Мандибазз","631":"Хитмор","632":"Дюрант","633":"Дайно","634":"Звайлос","635":"Гидрайгон","636":"Ларвеста","637":"Волкарона","638":"Кобалион","639":"Терракион","640":"Виризион","641":"Торнадус","642":"Тандурус","643":"Реширам","644":"Зекром","645":"Лэндорус","646":"Кюрем","647":"Келдео","648":"Мелоэтта","649":"Генесект","650":"Чеспин","651":"Квилладин","652":"Чеснот","653":"Феннекин","654":"Брайксен","655":"Дельфокс","656":"Фроки","657":"Фрогадир","658":"Грениндзя","659":"Баннелби","660":"Диггерзби","661":"Флечлинг","662":"Флечиндер","663":"Тэйлонфлейм","664":"Скаттербаг","665":"Спьюпа","666":"Вивиллон","667":"Литлео","668":"Пайроар","669":"Флабэбэ","670":"Флоэтт","671":"Флоргес","672":"Скиддо","673":"Гогоат","674":"Панчам","675":"Пангоро","676":"Фурфру","677":"Эспур","678":"Мяустик","679":"Хонэдж","680":"Даблейд","681":"Аегислэш","682":"Спритзи","683":"Ароматизз","684":"Свирликс","685":"Сларпафф","686":"Инкей","687":"Маламар","688":"Бинакл","689":"Барбаракл","690":"Скрельп","691":"Драгалг","692":"Клончер","693":"Кловицер","694":"Гелиоптайл","695":"Гелиолиск","696":"Тайрант","697":"Тайрентрум","698":"Амаура","699":"Аврорус","700":"Сильвеон","701":"Холуча","702":"Деденне","703":"Карбинк","704":"Гуми","705":"Слигу","706":"Гудра","707":"Клефки","708":"Фантамп","709":"Тривернант","710":"Пампакмбу","711":"Гургейст","712":"Бергмайт","713":"Авалагг","714":"Нойбат","715":"Нойверн","716":"Ксернеас","717":"Ивельтал","718":"Зайгард","719":"Дианси","720":"Хупа","721":"Вулканион"}
--------------------------------------------------------------------------------
/src/shared/assets/locales/pokemon.en.json:
--------------------------------------------------------------------------------
1 | {"1":"Bulbasaur","2":"Ivysaur","3":"Venusaur","4":"Charmander","5":"Charmeleon","6":"Charizard","7":"Squirtle","8":"Wartortle","9":"Blastoise","10":"Caterpie","11":"Metapod","12":"Butterfree","13":"Weedle","14":"Kakuna","15":"Beedrill","16":"Pidgey","17":"Pidgeotto","18":"Pidgeot","19":"Rattata","20":"Raticate","21":"Spearow","22":"Fearow","23":"Ekans","24":"Arbok","25":"Pikachu","26":"Raichu","27":"Sandshrew","28":"Sandslash","29":"Nidoran♀","30":"Nidorina","31":"Nidoqueen","32":"Nidoran♂","33":"Nidorino","34":"Nidoking","35":"Clefairy","36":"Clefable","37":"Vulpix","38":"Ninetales","39":"Jigglypuff","40":"Wigglytuff","41":"Zubat","42":"Golbat","43":"Oddish","44":"Gloom","45":"Vileplume","46":"Paras","47":"Parasect","48":"Venonat","49":"Venomoth","50":"Diglett","51":"Dugtrio","52":"Meowth","53":"Persian","54":"Psyduck","55":"Golduck","56":"Mankey","57":"Primeape","58":"Growlithe","59":"Arcanine","60":"Poliwag","61":"Poliwhirl","62":"Poliwrath","63":"Abra","64":"Kadabra","65":"Alakazam","66":"Machop","67":"Machoke","68":"Machamp","69":"Bellsprout","70":"Weepinbell","71":"Victreebel","72":"Tentacool","73":"Tentacruel","74":"Geodude","75":"Graveler","76":"Golem","77":"Ponyta","78":"Rapidash","79":"Slowpoke","80":"Slowbro","81":"Magnemite","82":"Magneton","83":"Farfetch'd","84":"Doduo","85":"Dodrio","86":"Seel","87":"Dewgong","88":"Grimer","89":"Muk","90":"Shellder","91":"Cloyster","92":"Gastly","93":"Haunter","94":"Gengar","95":"Onix","96":"Drowzee","97":"Hypno","98":"Krabby","99":"Kingler","100":"Voltorb","101":"Electrode","102":"Exeggcute","103":"Exeggutor","104":"Cubone","105":"Marowak","106":"Hitmonlee","107":"Hitmonchan","108":"Lickitung","109":"Koffing","110":"Weezing","111":"Rhyhorn","112":"Rhydon","113":"Chansey","114":"Tangela","115":"Kangaskhan","116":"Horsea","117":"Seadra","118":"Goldeen","119":"Seaking","120":"Staryu","121":"Starmie","122":"Mr. Mime","123":"Scyther","124":"Jynx","125":"Electabuzz","126":"Magmar","127":"Pinsir","128":"Tauros","129":"Magikarp","130":"Gyarados","131":"Lapras","132":"Ditto","133":"Eevee","134":"Vaporeon","135":"Jolteon","136":"Flareon","137":"Porygon","138":"Omanyte","139":"Omastar","140":"Kabuto","141":"Kabutops","142":"Aerodactyl","143":"Snorlax","144":"Articuno","145":"Zapdos","146":"Moltres","147":"Dratini","148":"Dragonair","149":"Dragonite","150":"Mewtwo","151":"Mew","152":"Chikorita","153":"Bayleef","154":"Meganium","155":"Cyndaquil","156":"Quilava","157":"Typhlosion","158":"Totodile","159":"Croconaw","160":"Feraligatr","161":"Sentret","162":"Furret","163":"Hoothoot","164":"Noctowl","165":"Ledyba","166":"Ledian","167":"Spinarak","168":"Ariados","169":"Crobat","170":"Chinchou","171":"Lanturn","172":"Pichu","173":"Cleffa","174":"Igglybuff","175":"Togepi","176":"Togetic","177":"Natu","178":"Xatu","179":"Mareep","180":"Flaaffy","181":"Ampharos","182":"Bellossom","183":"Marill","184":"Azumarill","185":"Sudowoodo","186":"Politoed","187":"Hoppip","188":"Skiploom","189":"Jumpluff","190":"Aipom","191":"Sunkern","192":"Sunflora","193":"Yanma","194":"Wooper","195":"Quagsire","196":"Espeon","197":"Umbreon","198":"Murkrow","199":"Slowking","200":"Misdreavus","201":"Unown","202":"Wobbuffet","203":"Girafarig","204":"Pineco","205":"Forretress","206":"Dunsparce","207":"Gligar","208":"Steelix","209":"Snubbull","210":"Granbull","211":"Qwilfish","212":"Scizor","213":"Shuckle","214":"Heracross","215":"Sneasel","216":"Teddiursa","217":"Ursaring","218":"Slugma","219":"Magcargo","220":"Swinub","221":"Piloswine","222":"Corsola","223":"Remoraid","224":"Octillery","225":"Delibird","226":"Mantine","227":"Skarmory","228":"Houndour","229":"Houndoom","230":"Kingdra","231":"Phanpy","232":"Donphan","233":"Porygon2","234":"Stantler","235":"Smeargle","236":"Tyrogue","237":"Hitmontop","238":"Smoochum","239":"Elekid","240":"Magby","241":"Miltank","242":"Blissey","243":"Raikou","244":"Entei","245":"Suicune","246":"Larvitar","247":"Pupitar","248":"Tyranitar","249":"Lugia","250":"Ho-Oh","251":"Celebi","252":"Treecko","253":"Grovyle","254":"Sceptile","255":"Torchic","256":"Combusken","257":"Blaziken","258":"Mudkip","259":"Marshtomp","260":"Swampert","261":"Poochyena","262":"Mightyena","263":"Zigzagoon","264":"Linoone","265":"Wurmple","266":"Silcoon","267":"Beautifly","268":"Cascoon","269":"Dustox","270":"Lotad","271":"Lombre","272":"Ludicolo","273":"Seedot","274":"Nuzleaf","275":"Shiftry","276":"Taillow","277":"Swellow","278":"Wingull","279":"Pelipper","280":"Ralts","281":"Kirlia","282":"Gardevoir","283":"Surskit","284":"Masquerain","285":"Shroomish","286":"Breloom","287":"Slakoth","288":"Vigoroth","289":"Slaking","290":"Nincada","291":"Ninjask","292":"Shedinja","293":"Whismur","294":"Loudred","295":"Exploud","296":"Makuhita","297":"Hariyama","298":"Azurill","299":"Nosepass","300":"Skitty","301":"Delcatty","302":"Sableye","303":"Mawile","304":"Aron","305":"Lairon","306":"Aggron","307":"Meditite","308":"Medicham","309":"Electrike","310":"Manectric","311":"Plusle","312":"Minun","313":"Volbeat","314":"Illumise","315":"Roselia","316":"Gulpin","317":"Swalot","318":"Carvanha","319":"Sharpedo","320":"Wailmer","321":"Wailord","322":"Numel","323":"Camerupt","324":"Torkoal","325":"Spoink","326":"Grumpig","327":"Spinda","328":"Trapinch","329":"Vibrava","330":"Flygon","331":"Cacnea","332":"Cacturne","333":"Swablu","334":"Altaria","335":"Zangoose","336":"Seviper","337":"Lunatone","338":"Solrock","339":"Barboach","340":"Whiscash","341":"Corphish","342":"Crawdaunt","343":"Baltoy","344":"Claydol","345":"Lileep","346":"Cradily","347":"Anorith","348":"Armaldo","349":"Feebas","350":"Milotic","351":"Castform","352":"Kecleon","353":"Shuppet","354":"Banette","355":"Duskull","356":"Dusclops","357":"Tropius","358":"Chimecho","359":"Absol","360":"Wynaut","361":"Snorunt","362":"Glalie","363":"Spheal","364":"Sealeo","365":"Walrein","366":"Clamperl","367":"Huntail","368":"Gorebyss","369":"Relicanth","370":"Luvdisc","371":"Bagon","372":"Shelgon","373":"Salamence","374":"Beldum","375":"Metang","376":"Metagross","377":"Regirock","378":"Regice","379":"Registeel","380":"Latias","381":"Latios","382":"Kyogre","383":"Groudon","384":"Rayquaza","385":"Jirachi","386":"Deoxys","387":"Turtwig","388":"Grotle","389":"Torterra","390":"Chimchar","391":"Monferno","392":"Infernape","393":"Piplup","394":"Prinplup","395":"Empoleon","396":"Starly","397":"Staravia","398":"Staraptor","399":"Bidoof","400":"Bibarel","401":"Kricketot","402":"Kricketune","403":"Shinx","404":"Luxio","405":"Luxray","406":"Budew","407":"Roserade","408":"Cranidos","409":"Rampardos","410":"Shieldon","411":"Bastiodon","412":"Burmy","413":"Wormadam","414":"Mothim","415":"Combee","416":"Vespiquen","417":"Pachirisu","418":"Buizel","419":"Floatzel","420":"Cherubi","421":"Cherrim","422":"Shellos","423":"Gastrodon","424":"Ambipom","425":"Drifloon","426":"Drifblim","427":"Buneary","428":"Lopunny","429":"Mismagius","430":"Honchkrow","431":"Glameow","432":"Purugly","433":"Chingling","434":"Stunky","435":"Skuntank","436":"Bronzor","437":"Bronzong","438":"Bonsly","439":"Mime Jr.","440":"Happiny","441":"Chatot","442":"Spiritomb","443":"Gible","444":"Gabite","445":"Garchomp","446":"Munchlax","447":"Riolu","448":"Lucario","449":"Hippopotas","450":"Hippowdon","451":"Skorupi","452":"Drapion","453":"Croagunk","454":"Toxicroak","455":"Carnivine","456":"Finneon","457":"Lumineon","458":"Mantyke","459":"Snover","460":"Abomasnow","461":"Weavile","462":"Magnezone","463":"Lickilicky","464":"Rhyperior","465":"Tangrowth","466":"Electivire","467":"Magmortar","468":"Togekiss","469":"Yanmega","470":"Leafeon","471":"Glaceon","472":"Gliscor","473":"Mamoswine","474":"Porygon-Z","475":"Gallade","476":"Probopass","477":"Dusknoir","478":"Froslass","479":"Rotom","480":"Uxie","481":"Mesprit","482":"Azelf","483":"Dialga","484":"Palkia","485":"Heatran","486":"Regigigas","487":"Giratina","488":"Cresselia","489":"Phione","490":"Manaphy","491":"Darkrai","492":"Shaymin","493":"Arceus","494":"Victini","495":"Snivy","496":"Servine","497":"Serperior","498":"Tepig","499":"Pignite","500":"Emboar","501":"Oshawott","502":"Dewott","503":"Samurott","504":"Patrat","505":"Watchog","506":"Lillipup","507":"Herdier","508":"Stoutland","509":"Purrloin","510":"Liepard","511":"Pansage","512":"Simisage","513":"Pansear","514":"Simisear","515":"Panpour","516":"Simipour","517":"Munna","518":"Musharna","519":"Pidove","520":"Tranquill","521":"Unfezant","522":"Blitzle","523":"Zebstrika","524":"Roggenrola","525":"Boldore","526":"Gigalith","527":"Woobat","528":"Swoobat","529":"Drilbur","530":"Excadrill","531":"Audino","532":"Timburr","533":"Gurdurr","534":"Conkeldurr","535":"Tympole","536":"Palpitoad","537":"Seismitoad","538":"Throh","539":"Sawk","540":"Sewaddle","541":"Swadloon","542":"Leavanny","543":"Venipede","544":"Whirlipede","545":"Scolipede","546":"Cottonee","547":"Whimsicott","548":"Petilil","549":"Lilligant","550":"Basculin","551":"Sandile","552":"Krokorok","553":"Krookodile","554":"Darumaka","555":"Darmanitan","556":"Maractus","557":"Dwebble","558":"Crustle","559":"Scraggy","560":"Scrafty","561":"Sigilyph","562":"Yamask","563":"Cofagrigus","564":"Tirtouga","565":"Carracosta","566":"Archen","567":"Archeops","568":"Trubbish","569":"Garbodor","570":"Zorua","571":"Zoroark","572":"Minccino","573":"Cinccino","574":"Gothita","575":"Gothorita","576":"Gothitelle","577":"Solosis","578":"Duosion","579":"Reuniclus","580":"Ducklett","581":"Swanna","582":"Vanillite","583":"Vanillish","584":"Vanilluxe","585":"Deerling","586":"Sawsbuck","587":"Emolga","588":"Karrablast","589":"Escavalier","590":"Foongus","591":"Amoonguss","592":"Frillish","593":"Jellicent","594":"Alomomola","595":"Joltik","596":"Galvantula","597":"Ferroseed","598":"Ferrothorn","599":"Klink","600":"Klang","601":"Klinklang","602":"Tynamo","603":"Eelektrik","604":"Eelektross","605":"Elgyem","606":"Beheeyem","607":"Litwick","608":"Lampent","609":"Chandelure","610":"Axew","611":"Fraxure","612":"Haxorus","613":"Cubchoo","614":"Beartic","615":"Cryogonal","616":"Shelmet","617":"Accelgor","618":"Stunfisk","619":"Mienfoo","620":"Mienshao","621":"Druddigon","622":"Golett","623":"Golurk","624":"Pawniard","625":"Bisharp","626":"Bouffalant","627":"Rufflet","628":"Braviary","629":"Vullaby","630":"Mandibuzz","631":"Heatmor","632":"Durant","633":"Deino","634":"Zweilous","635":"Hydreigon","636":"Larvesta","637":"Volcarona","638":"Cobalion","639":"Terrakion","640":"Virizion","641":"Tornadus","642":"Thundurus","643":"Reshiram","644":"Zekrom","645":"Landorus","646":"Kyurem","647":"Keldeo","648":"Meloetta","649":"Genesect","650":"Chespin","651":"Quilladin","652":"Chesnaught","653":"Fennekin","654":"Braixen","655":"Delphox","656":"Froakie","657":"Frogadier","658":"Greninja","659":"Bunnelby","660":"Diggersby","661":"Fletchling","662":"Fletchinder","663":"Talonflame","664":"Scatterbug","665":"Spewpa","666":"Vivillon","667":"Litleo","668":"Pyroar","669":"Flabébé","670":"Floette","671":"Florges","672":"Skiddo","673":"Gogoat","674":"Pancham","675":"Pangoro","676":"Furfrou","677":"Espurr","678":"Meowstic","679":"Honedge","680":"Doublade","681":"Aegislash","682":"Spritzee","683":"Aromatisse","684":"Swirlix","685":"Slurpuff","686":"Inkay","687":"Malamar","688":"Binacle","689":"Barbaracle","690":"Skrelp","691":"Dragalge","692":"Clauncher","693":"Clawitzer","694":"Helioptile","695":"Heliolisk","696":"Tyrunt","697":"Tyrantrum","698":"Amaura","699":"Aurorus","700":"Sylveon","701":"Hawlucha","702":"Dedenne","703":"Carbink","704":"Goomy","705":"Sliggoo","706":"Goodra","707":"Klefki","708":"Phantump","709":"Trevenant","710":"Pumpkaboo","711":"Gourgeist","712":"Bergmite","713":"Avalugg","714":"Noibat","715":"Noivern","716":"Xerneas","717":"Yveltal","718":"Zygarde","719":"Diancie","720":"Hoopa","721":"Volcanion"}
--------------------------------------------------------------------------------
/src/shared/assets/locales/pokemon.de.json:
--------------------------------------------------------------------------------
1 | {"1":"Bisasam","2":"Bisaknosp","3":"Bisaflor","4":"Glumanda","5":"Glutexo","6":"Glurak","7":"Schiggy","8":"Schillok","9":"Turtok","10":"Raupy","11":"Safcon","12":"Smettbo","13":"Hornliu","14":"Kokuna","15":"Bibor","16":"Taubsi","17":"Tauboga","18":"Tauboss","19":"Rattfratz","20":"Rattikarl","21":"Habitak","22":"Ibitak","23":"Rettan","24":"Arbok","25":"Pikachu","26":"Raichu","27":"Sandan","28":"Sandamer","29":"Nidoran♀","30":"Nidorina","31":"Nidoqueen","32":"Nidoran♂","33":"Nidorino","34":"Nidoking","35":"Piepi","36":"Pixi","37":"Vulpix","38":"Vulnona","39":"Pummeluff","40":"Knuddeluff","41":"Zubat","42":"Golbat","43":"Myrapla","44":"Duflor","45":"Giflor","46":"Paras","47":"Parasek","48":"Bluzuk","49":"Omot","50":"Digda","51":"Digdri","52":"Mauzi","53":"Snobilikat","54":"Enton","55":"Entoron","56":"Menki","57":"Rasaff","58":"Fukano","59":"Arkani","60":"Quapsel","61":"Quaputzi","62":"Quappo","63":"Abra","64":"Kadabra","65":"Simsala","66":"Machollo","67":"Maschock","68":"Machomei","69":"Knofensa","70":"Ultrigaria","71":"Sarzenia","72":"Tentacha","73":"Tentoxa","74":"Kleinstein","75":"Georok","76":"Geowaz","77":"Ponita","78":"Gallopa","79":"Flegmon","80":"Lahmus","81":"Magnetilo","82":"Magneton","83":"Porenta","84":"Dodu","85":"Dodri","86":"Jurob","87":"Jugong","88":"Sleima","89":"Sleimok","90":"Muschas","91":"Austos","92":"Nebulak","93":"Alpollo","94":"Gengar","95":"Onix","96":"Traumato","97":"Hypno","98":"Krabby","99":"Kingler","100":"Voltobal","101":"Lektrobal","102":"Owei","103":"Kokowei","104":"Tragosso","105":"Knogga","106":"Kicklee","107":"Nockchan","108":"Schlurp","109":"Smogon","110":"Smogmog","111":"Rihorn","112":"Rizeros","113":"Chaneira","114":"Tangela","115":"Kangama","116":"Seeper","117":"Seemon","118":"Goldini","119":"Golking","120":"Sterndu","121":"Starmie","122":"Pantimos","123":"Sichlor","124":"Rossana","125":"Elektek","126":"Magmar","127":"Pinsir","128":"Tauros","129":"Karpador","130":"Garados","131":"Lapras","132":"Ditto","133":"Evoli","134":"Aquana","135":"Blitza","136":"Flamara","137":"Porygon","138":"Amonitas","139":"Amoroso","140":"Kabuto","141":"Kabutops","142":"Aerodactyl","143":"Relaxo","144":"Arktos","145":"Zapdos","146":"Lavados","147":"Dratini","148":"Dragonir","149":"Dragoran","150":"Mewtu","151":"Mew","152":"Endivie","153":"Lorblatt","154":"Meganie","155":"Feurigel","156":"Igelavar","157":"Tornupto","158":"Karnimani","159":"Tyracroc","160":"Impergator","161":"Wiesor","162":"Wiesenior","163":"Hoothoot","164":"Noctuh","165":"Ledyba","166":"Ledian","167":"Webarak","168":"Ariados","169":"Iksbat","170":"Lampi","171":"Lanturn","172":"Pichu","173":"Pii","174":"Fluffeluff","175":"Togepi","176":"Togetic","177":"Natu","178":"Xatu","179":"Voltilamm","180":"Waaty","181":"Ampharos","182":"Blubella","183":"Marill","184":"Azumarill","185":"Mogelbaum","186":"Quaxo","187":"Hoppspross","188":"Hubelupf","189":"Papungha","190":"Griffel","191":"Sonnkern","192":"Sonnflora","193":"Yanma","194":"Felino","195":"Morlord","196":"Psiana","197":"Nachtara","198":"Kramurx","199":"Laschoking","200":"Traunfugil","201":"Icognito","202":"Woingenau","203":"Girafarig","204":"Tannza","205":"Forstellka","206":"Dummisel","207":"Skorgla","208":"Stahlos","209":"Snubbull","210":"Granbull","211":"Baldorfish","212":"Scherox","213":"Pottrott","214":"Skaraborn","215":"Sniebel","216":"Teddiursa","217":"Ursaring","218":"Schneckmag","219":"Magcargo","220":"Quiekel","221":"Keifel","222":"Corasonn","223":"Remoraid","224":"Octillery","225":"Botogel","226":"Mantax","227":"Panzaeron","228":"Hunduster","229":"Hundemon","230":"Seedraking","231":"Phanpy","232":"Donphan","233":"Porygon2","234":"Damhirplex","235":"Farbeagle","236":"Rabauz","237":"Kapoera","238":"Kussilla","239":"Elekid","240":"Magby","241":"Miltank","242":"Heiteira","243":"Raikou","244":"Entei","245":"Suicune","246":"Larvitar","247":"Pupitar","248":"Despotar","249":"Lugia","250":"Ho-Oh","251":"Celebi","252":"Geckarbor","253":"Reptain","254":"Gewaldro","255":"Flemmli","256":"Jungglut","257":"Lohgock","258":"Hydropi","259":"Moorabbel","260":"Sumpex","261":"Fiffyen","262":"Magnayen","263":"Zigzachs","264":"Geradaks","265":"Waumpel","266":"Schaloko","267":"Papinella","268":"Panekon","269":"Pudox","270":"Loturzel","271":"Lombrero","272":"Kappalores","273":"Samurzel","274":"Blanas","275":"Tengulist","276":"Schwalbini","277":"Schwalboss","278":"Wingull","279":"Pelipper","280":"Trasla","281":"Kirlia","282":"Guardevoir","283":"Gehweiher","284":"Maskeregen","285":"Knilz","286":"Kapilz","287":"Bummelz","288":"Muntier","289":"Letarking","290":"Nincada","291":"Ninjask","292":"Ninjatom","293":"Flurmel","294":"Krakeelo","295":"Krawumms","296":"Makuhita","297":"Hariyama","298":"Azurill","299":"Nasgnet","300":"Eneco","301":"Enekoro","302":"Zobiris","303":"Flunkifer","304":"Stollunior","305":"Stollrak","306":"Stolloss","307":"Meditie","308":"Meditalis","309":"Frizelbliz","310":"Voltenso","311":"Plusle","312":"Minun","313":"Volbeat","314":"Illumise","315":"Roselia","316":"Schluppuck","317":"Schlukwech","318":"Kanivanha","319":"Tohaido","320":"Wailmer","321":"Wailord","322":"Camaub","323":"Camerupt","324":"Qurtel","325":"Spoink","326":"Groink","327":"Pandir","328":"Knacklion","329":"Vibrava","330":"Libelldra","331":"Tuska","332":"Noktuska","333":"Wablu","334":"Altaria","335":"Sengo","336":"Vipitis","337":"Lunastein","338":"Sonnfel","339":"Schmerbe","340":"Welsar","341":"Krebscorps","342":"Krebutack","343":"Puppance","344":"Lepumentas","345":"Liliep","346":"Wielie","347":"Anorith","348":"Armaldo","349":"Barschwa","350":"Milotic","351":"Formeo","352":"Kecleon","353":"Shuppet","354":"Banette","355":"Zwirrlicht","356":"Zwirrklop","357":"Tropius","358":"Palimpalim","359":"Absol","360":"Isso","361":"Schneppke","362":"Firnontor","363":"Seemops","364":"Seejong","365":"Walraisa","366":"Perlu","367":"Aalabyss","368":"Saganabyss","369":"Relicanth","370":"Liebiskus","371":"Kindwurm","372":"Draschel","373":"Brutalanda","374":"Tanhel","375":"Metang","376":"Metagross","377":"Regirock","378":"Regice","379":"Registeel","380":"Latias","381":"Latios","382":"Kyogre","383":"Groudon","384":"Rayquaza","385":"Jirachi","386":"Deoxys","387":"Chelast","388":"Chelcarain","389":"Chelterrar","390":"Panflam","391":"Panpyro","392":"Panferno","393":"Plinfa","394":"Pliprin","395":"Impoleon","396":"Staralili","397":"Staravia","398":"Staraptor","399":"Bidiza","400":"Bidifas","401":"Zirpurze","402":"Zirpeise","403":"Sheinux","404":"Luxio","405":"Luxtra","406":"Knospi","407":"Roserade","408":"Koknodon","409":"Rameidon","410":"Schilterus","411":"Bollterus","412":"Burmy","413":"Burmadame","414":"Moterpel","415":"Wadribie","416":"Honweisel","417":"Pachirisu","418":"Bamelin","419":"Bojelin","420":"Kikugi","421":"Kinoso","422":"Schalellos","423":"Gastrodon","424":"Ambidiffel","425":"Driftlon","426":"Drifzepeli","427":"Haspiror","428":"Schlapor","429":"Traunmagil","430":"Kramshef","431":"Charmian","432":"Shnurgarst","433":"Klingplim","434":"Skunkapuh","435":"Skuntank","436":"Bronzel","437":"Bronzong","438":"Mobai","439":"Pantimimi","440":"Wonneira","441":"Plaudagei","442":"Kryppuk","443":"Kaumalat","444":"Knarksel","445":"Knakrack","446":"Mampfaxo","447":"Riolu","448":"Lucario","449":"Hippopotas","450":"Hippoterus","451":"Pionskora","452":"Piondragi","453":"Glibunkel","454":"Toxiquak","455":"Venuflibis","456":"Finneon","457":"Lumineon","458":"Mantirps","459":"Shnebedeck","460":"Rexblisar","461":"Snibunna","462":"Magnezone","463":"Schlurplek","464":"Rihornior","465":"Tangoloss","466":"Elevoltek","467":"Magbrant","468":"Togekiss","469":"Yanmega","470":"Folipurba","471":"Glaziola","472":"Skorgro","473":"Mamutel","474":"Porygon-Z","475":"Galagladi","476":"Voluminas","477":"Zwirrfinst","478":"Frosdedje","479":"Rotom","480":"Selfe","481":"Vesprit","482":"Tobutz","483":"Dialga","484":"Palkia","485":"Heatran","486":"Regigigas","487":"Giratina","488":"Cresselia","489":"Phione","490":"Manaphy","491":"Darkrai","492":"Shaymin","493":"Arceus","494":"Victini","495":"Serpifeu","496":"Efoserp","497":"Serpiroyal","498":"Floink","499":"Ferkokel","500":"Flambirex","501":"Ottaro","502":"Zwottronin","503":"Admurai","504":"Nagelotz","505":"Kukmarda","506":"Yorkleff","507":"Terribark","508":"Bissbark","509":"Felilou","510":"Kleoparda","511":"Vegimak","512":"Vegichita","513":"Grillmak","514":"Grillchita","515":"Sodamak","516":"Sodachita","517":"Somniam","518":"Somnivora","519":"Dusselgurr","520":"Navitaub","521":"Fasasnob","522":"Elezeba","523":"Zebritz","524":"Kiesling","525":"Sedimantur","526":"Brockoloss","527":"Fleknoil","528":"Fletiamo","529":"Rotomurf","530":"Stalobor","531":"Ohrdoch","532":"Praktibalk","533":"Strepoli","534":"Meistagrif","535":"Schallquap","536":"Mebrana","537":"Branawarz","538":"Jiutesto","539":"Karadonis","540":"Strawickl","541":"Folikon","542":"Matrifol","543":"Toxiped","544":"Rollum","545":"Cerapendra","546":"Waumboll","547":"Elfun","548":"Lilminip","549":"Dressella","550":"Barschuft","551":"Ganovil","552":"Rokkaiman","553":"Rabigator","554":"Flampion","555":"Flampivian","556":"Maracamba","557":"Lithomith","558":"Castellith","559":"Zurrokex","560":"Irokex","561":"Symvolara","562":"Makabaja","563":"Echnatoll","564":"Galapaflos","565":"Karippas","566":"Flapteryx","567":"Aeropteryx","568":"Unratütox","569":"Deponitox","570":"Zorua","571":"Zoroark","572":"Picochilla","573":"Chillabell","574":"Mollimorba","575":"Hypnomorba","576":"Morbitesse","577":"Monozyto","578":"Mitodos","579":"Zytomega","580":"Piccolente","581":"Swaroness","582":"Gelatini","583":"Gelatroppo","584":"Gelatwino","585":"Sesokitz","586":"Kronjuwild","587":"Emolga","588":"Laukaps","589":"Cavalanzas","590":"Tarnpignon","591":"Hutsassa","592":"Quabbel","593":"Apoquallyp","594":"Mamolida","595":"Wattzapf","596":"Voltula","597":"Kastadur","598":"Tentantel","599":"Klikk","600":"Kliklak","601":"Klikdiklak","602":"Zapplardin","603":"Zapplalek","604":"Zapplarang","605":"Pygraulon","606":"Megalon","607":"Lichtel","608":"Laternecto","609":"Skelabra","610":"Milza","611":"Sharfax","612":"Maxax","613":"Petznief","614":"Siberio","615":"Frigometri","616":"Schnuthelm","617":"Hydragil","618":"Flunschlik","619":"Lin-Fu","620":"Wie-Shu","621":"Shardrago","622":"Golbit","623":"Golgantes","624":"Gladiantri","625":"Caesurio","626":"Bisofank","627":"Geronimatz","628":"Washakwil","629":"Skallyk","630":"Grypheldis","631":"Furnifraß","632":"Fermicula","633":"Kapuno","634":"Duodino","635":"Trikephalo","636":"Ignivor","637":"Ramoth","638":"Kobalium","639":"Terrakium","640":"Viridium","641":"Boreos","642":"Voltolos","643":"Reshiram","644":"Zekrom","645":"Demeteros","646":"Kyurem","647":"Keldeo","648":"Meloetta","649":"Genesect","650":"Igamaro","651":"Igastarnish","652":"Brigaron","653":"Fynx","654":"Rutena","655":"Fennexis","656":"Froxy","657":"Amphizel","658":"Quajutsu","659":"Scoppel","660":"Grebbit","661":"Dartiri","662":"Dartignis","663":"Fiaro","664":"Purmel","665":"Puponcho","666":"Vivillon","667":"Leufeo","668":"Pyroleo","669":"Flabébé","670":"FLOETTE","671":"Florges","672":"Mähikel","673":"Chevrumm","674":"Pam-Pam","675":"Pandagro","676":"Coiffwaff","677":"Psiau","678":"Psiaugon","679":"Gramokles","680":"Duokles","681":"Durengard","682":"Parfi","683":"Parfinesse","684":"Flauschling","685":"Sabbaione","686":"Iscalar","687":"Calamanero","688":"Bithora","689":"Thanathora","690":"Algitt","691":"Tandrak","692":"Scampisto","693":"Wummer","694":"Eguana","695":"Elezard","696":"Balgoras","697":"Monargoras","698":"Amarino","699":"Amagarga","700":"Feelinara","701":"Resladero","702":"DEDENNE","703":"Rocara","704":"Viscora","705":"Viscargot","706":"Viscogon","707":"Clavion","708":"Paragoni","709":"Trombork","710":"Irrbis","711":"Pumpdjinn","712":"Arktip","713":"Arktilas","714":"eF-eM","715":"UHaFnir","716":"Xerneas","717":"Yveltal","718":"Zygarde","719":"Diancie","720":"Hoopa","721":"Volcanion"}
--------------------------------------------------------------------------------
/src/shared/assets/locales/pokemon.fr.json:
--------------------------------------------------------------------------------
1 | {"1":"Bulbizarre","2":"Herbizarre","3":"Florizarre","4":"Salamèche","5":"Reptincel","6":"Dracaufeu","7":"Carapuce","8":"Carabaffe","9":"Tortank","10":"Chenipan","11":"Chrysacier","12":"Papilusion","13":"Aspicot","14":"Coconfort","15":"Dardargnan","16":"Roucool","17":"Roucoups","18":"Roucarnage","19":"Rattata","20":"Rattatac","21":"Piafabec","22":"Rapasdepic","23":"Abo","24":"Arbok","25":"Pikachu","26":"Raichu","27":"Sabelette","28":"Sablaireau","29":"Nidoran♀","30":"Nidorina","31":"Nidoqueen","32":"Nidoran♂","33":"Nidorino","34":"Nidoking","35":"Mélofée","36":"Mélodelfe","37":"Goupix","38":"Feunard","39":"Rondoudou","40":"Grodoudou","41":"Nosferapti","42":"Nosferalto","43":"Mystherbe","44":"Ortide","45":"Rafflesia","46":"Paras","47":"Parasect","48":"Mimitoss","49":"Aéromite","50":"Taupiqueur","51":"Triopikeur","52":"Miaouss","53":"Persian","54":"Psykokwak","55":"Akwakwak","56":"Férosinge","57":"Colossinge","58":"Caninos","59":"Arcanin","60":"Ptitard","61":"Têtarte","62":"Tartard","63":"Abra","64":"Kadabra","65":"Alakazam","66":"Machoc","67":"Machopeur","68":"Mackogneur","69":"Chétiflor","70":"Boustiflor","71":"Empiflor","72":"Tentacool","73":"Tentacruel","74":"Racaillou","75":"Gravalanch","76":"Grolem","77":"Ponyta","78":"Galopa","79":"Ramoloss","80":"Flagadoss","81":"Magnéti","82":"Magnéton","83":"Canarticho","84":"Doduo","85":"Dodrio","86":"Otaria","87":"Lamantine","88":"Tadmorv","89":"Grotadmorv","90":"Kokiyas","91":"Crustabri","92":"Fantominus","93":"Spectrum","94":"Ectoplasma","95":"Onix","96":"Soporifik","97":"Hypnomade","98":"Krabby","99":"Krabboss","100":"Voltorbe","101":"Électrode","102":"Nœunœuf","103":"Noadkoko","104":"Osselait","105":"Ossatueur","106":"Kicklee","107":"Tygnon","108":"Excelangue","109":"Smogo","110":"Smogogo","111":"Rhinocorne","112":"Rhinoféros","113":"Leveinard","114":"Saquedeneu","115":"Kangourex","116":"Hypotrempe","117":"Hypocéan","118":"Poissirène","119":"Poissoroy","120":"Stari","121":"Staross","122":"M.Mime","123":"Insécateur","124":"Lippoutou","125":"Élektek","126":"Magmar","127":"Scarabrute","128":"Tauros","129":"Magicarpe","130":"Léviator","131":"Lokhlass","132":"Métamorph","133":"Évoli","134":"Aquali","135":"Voltali","136":"Pyroli","137":"Porygon","138":"Amonita","139":"Amonistar","140":"Kabuto","141":"Kabutops","142":"Ptéra","143":"Ronflex","144":"Artikodin","145":"Électhor","146":"Sulfura","147":"Minidraco","148":"Draco","149":"Dracolosse","150":"Mewtwo","151":"Mew","152":"Germignon","153":"Macronium","154":"Méganium","155":"Héricendre","156":"Feurisson","157":"Typhlosion","158":"Kaiminus","159":"Crocrodil","160":"Aligatueur","161":"Fouinette","162":"Fouinar","163":"Hoothoot","164":"Noarfang","165":"Coxy","166":"Coxyclaque","167":"Mimigal","168":"Migalos","169":"Nostenfer","170":"Loupio","171":"Lanturn","172":"Pichu","173":"Mélo","174":"Toudoudou","175":"Togepi","176":"Togetic","177":"Natu","178":"Xatu","179":"Wattouat","180":"Lainergie","181":"Pharamp","182":"Joliflor","183":"Marill","184":"Azumarill","185":"Simularbre","186":"Tarpaud","187":"Granivol","188":"Floravol","189":"Cotovol","190":"Capumain","191":"Tournegrin","192":"Héliatronc","193":"Yanma","194":"Axoloto","195":"Maraiste","196":"Mentali","197":"Noctali","198":"Cornèbre","199":"Roigada","200":"Feuforêve","201":"Zarbi","202":"Qulbutoké","203":"Girafarig","204":"Pomdepic","205":"Foretress","206":"Insolourdo","207":"Scorplane","208":"Steelix","209":"Snubbull","210":"Granbull","211":"Qwilfish","212":"Cizayox","213":"Caratroc","214":"Scarhino","215":"Farfuret","216":"Teddiursa","217":"Ursaring","218":"Limagma","219":"Volcaropod","220":"Marcacrin","221":"Cochignon","222":"Corayon","223":"Rémoraid","224":"Octillery","225":"Cadoizo","226":"Démanta","227":"Airmure","228":"Malosse","229":"Démolosse","230":"Hyporoi","231":"Phanpy","232":"Donphan","233":"Porygon2","234":"Cerfrousse","235":"Queulorior","236":"Debugant","237":"Kapoera","238":"Lippouti","239":"Élekid","240":"Magby","241":"Écrémeuh","242":"Leuphorie","243":"Raikou","244":"Entei","245":"Suicune","246":"Embrylex","247":"Ymphect","248":"Tyranocif","249":"Lugia","250":"Ho-Oh","251":"Celebi","252":"Arcko","253":"Massko","254":"Jungko","255":"Poussifeu","256":"Galifeu","257":"Braségali","258":"Gobou","259":"Flobio","260":"Laggron","261":"Medhyèna","262":"Grahyèna","263":"Zigzaton","264":"Linéon","265":"Chenipotte","266":"Armulys","267":"Charmillon","268":"Blindalys","269":"Papinox","270":"Nénupiot","271":"Lombre","272":"Ludicolo","273":"Grainipiot","274":"Pifeuil","275":"Tengalice","276":"Nirondelle","277":"Hélédelle","278":"Goélise","279":"Bekipan","280":"Tarsal","281":"Kirlia","282":"Gardevoir","283":"Arakdo","284":"Maskadra","285":"Balignon","286":"Chapignon","287":"Parecool","288":"Vigoroth","289":"Monaflèmit","290":"Ningale","291":"Ninjask","292":"Munja","293":"Chuchmur","294":"Ramboum","295":"Brouhabam","296":"Makuhita","297":"Hariyama","298":"Azurill","299":"Tarinor","300":"Skitty","301":"Delcatty","302":"Ténéfix","303":"Mysdibule","304":"Galekid","305":"Galegon","306":"Galeking","307":"Méditikka","308":"Charmina","309":"Dynavolt","310":"Élecsprint","311":"Posipi","312":"Négapi","313":"Muciole","314":"Lumivole","315":"Rosélia","316":"Gloupti","317":"Avaltout","318":"Carvanha","319":"Sharpedo","320":"Wailmer","321":"Wailord","322":"Chamallot","323":"Camérupt","324":"Chartor","325":"Spoink","326":"Groret","327":"Spinda","328":"Kraknoix","329":"Vibraninf","330":"Libégon","331":"Cacnea","332":"Cacturne","333":"Tylton","334":"Altaria","335":"Mangriff","336":"Séviper","337":"Séléroc","338":"Solaroc","339":"Barloche","340":"Barbicha","341":"Écrapince","342":"Colhomard","343":"Balbuto","344":"Kaorine","345":"Lilia","346":"Vacilys","347":"Anorith","348":"Armaldo","349":"Barpau","350":"Milobellus","351":"Morphéo","352":"Kecleon","353":"Polichombr","354":"Branette","355":"Skelénox","356":"Téraclope","357":"Tropius","358":"Éoko","359":"Absol","360":"Okéoké","361":"Stalgamin","362":"Oniglali","363":"Obalie","364":"Phogleur","365":"Kaimorse","366":"Coquiperl","367":"Serpang","368":"Rosabyss","369":"Relicanth","370":"Lovdisc","371":"Draby","372":"Drackhaus","373":"Drattak","374":"Terhal","375":"Métang","376":"Métalosse","377":"Regirock","378":"Regice","379":"Registeel","380":"Latias","381":"Latios","382":"Kyogre","383":"Groudon","384":"Rayquaza","385":"Jirachi","386":"Deoxys","387":"Tortipouss","388":"Boskara","389":"Torterra","390":"Ouisticram","391":"Chimpenfeu","392":"Simiabraz","393":"Tiplouf","394":"Prinplouf","395":"Pingoléon","396":"Étourmi","397":"Étourvol","398":"Étouraptor","399":"Keunotor","400":"Castorno","401":"Crikzik","402":"Mélokrik","403":"Lixy","404":"Luxio","405":"Luxray","406":"Rozbouton","407":"Roserade","408":"Kranidos","409":"Charkos","410":"Dinoclier","411":"Bastiodon","412":"Cheniti","413":"Cheniselle","414":"Papilord","415":"Apitrini","416":"Apireine","417":"Pachirisu","418":"Mustébouée","419":"Mustéflott","420":"Ceribou","421":"Ceriflor","422":"Sancoki","423":"Tritosor","424":"Capidextre","425":"Baudrive","426":"Grodrive","427":"Laporeille","428":"Lockpin","429":"Magirêve","430":"Corboss","431":"Chaglam","432":"Chaffreux","433":"Korillon","434":"Moufouette","435":"Moufflair","436":"Archéomire","437":"Archéodong","438":"Manzaï","439":"Mime Jr","440":"Ptiravi","441":"Pijako","442":"Spiritomb","443":"Griknot","444":"Carmache","445":"Carchacrok","446":"Goinfrex","447":"Riolu","448":"Lucario","449":"Hippopotas","450":"Hippodocus","451":"Rapion","452":"Drascore","453":"Cradopaud","454":"Coatox","455":"Vortente","456":"Écayon","457":"Luminéon","458":"Babimanta","459":"Blizzi","460":"Blizzaroi","461":"Dimoret","462":"Magnézone","463":"Coudlangue","464":"Rhinastoc","465":"Bouldeneu","466":"Élekable","467":"Maganon","468":"Togekiss","469":"Yanméga","470":"Phyllali","471":"Givrali","472":"Scorvol","473":"Mammochon","474":"Porygon-Z","475":"Gallame","476":"Tarinorme","477":"Noctunoir","478":"Momartik","479":"Motisma","480":"Créhelf","481":"Créfollet","482":"Créfadet","483":"Dialga","484":"Palkia","485":"Heatran","486":"Regigigas","487":"Giratina","488":"Cresselia","489":"Phione","490":"Manaphy","491":"Darkrai","492":"Shaymin","493":"Arceus","494":"Victini","495":"Vipélierre","496":"Lianaja","497":"Majaspic","498":"Gruikui","499":"Grotichon","500":"Roitiflam","501":"Moustillon","502":"Mateloutre","503":"Clamiral","504":"Ratentif","505":"Miradar","506":"Ponchiot","507":"Ponchien","508":"Mastouffe","509":"Chacripan","510":"Léopardus","511":"Feuillajou","512":"Feuiloutan","513":"Flamajou","514":"Flamoutan","515":"Flotajou","516":"Flotoutan","517":"Munna","518":"Mushana","519":"Poichigeon","520":"Colombeau","521":"Déflaisan","522":"Zébribon","523":"Zéblitz","524":"Nodulithe","525":"Géolithe","526":"Gigalithe","527":"Chovsourir","528":"Rhinolove","529":"Rototaupe","530":"Minotaupe","531":"Nanméouïe","532":"Charpenti","533":"Ouvrifier","534":"Bétochef","535":"Tritonde","536":"Batracné","537":"Crapustule","538":"Judokrak","539":"Karaclée","540":"Larveyette","541":"Couverdure","542":"Manternel","543":"Venipatte","544":"Scobolide","545":"Brutapode","546":"Doudouvet","547":"Farfaduvet","548":"Chlorobule","549":"Fragilady","550":"Bargantua","551":"Mascaïman","552":"Escroco","553":"Crocorible","554":"Darumarond","555":"Darumacho","556":"Maracachi","557":"Crabicoque","558":"Crabaraque","559":"Baggiguane","560":"Baggaïd","561":"Cryptéro","562":"Tutafeh","563":"Tutankafer","564":"Carapagos","565":"Mégapagos","566":"Arkéapti","567":"Aéroptéryx","568":"Miamiasme","569":"Miasmax","570":"Zorua","571":"Zoroark","572":"Chinchidou","573":"Pashmilla","574":"Scrutella","575":"Mesmérella","576":"Sidérella","577":"Nucléos","578":"Méios","579":"Symbios","580":"Couaneton","581":"Lakmécygne","582":"Sorbébé","583":"Sorboul","584":"Sorbouboul","585":"Vivaldaim","586":"Haydaim","587":"Emolga","588":"Carabing","589":"Lançargot","590":"Trompignon","591":"Gaulet","592":"Viskuse","593":"Moyade","594":"Mamanbo","595":"Statitik","596":"Mygavolt","597":"Grindur","598":"Noacier","599":"Tic","600":"Clic","601":"Cliticlic","602":"Anchwatt","603":"Lampéroie","604":"Ohmassacre","605":"Lewsor","606":"Neitram","607":"Funécire","608":"Mélancolux","609":"Lugulabre","610":"Coupenotte","611":"Incisache","612":"Tranchodon","613":"Polarhume","614":"Polagriffe","615":"Hexagel","616":"Escargaume","617":"Limaspeed","618":"Limonde","619":"Kungfouine","620":"Shaofouine","621":"Drakkarmin","622":"Gringolem","623":"Golemastoc","624":"Scalpion","625":"Scalproie","626":"Frison","627":"Furaiglon","628":"Gueriaigle","629":"Vostourno","630":"Vaututrice","631":"Aflamanoir","632":"Fermite","633":"Solochi","634":"Diamat","635":"Trioxhydre","636":"Pyronille","637":"Pyrax","638":"Cobaltium","639":"Terrakium","640":"Viridium","641":"Boréas","642":"Fulguris","643":"Reshiram","644":"Zekrom","645":"Démétéros","646":"Kyurem","647":"Keldeo","648":"Meloetta","649":"Genesect","650":"Marisson","651":"Boguérisse","652":"Blindépique","653":"Feunnec","654":"Roussil","655":"Goupelin","656":"Grenousse","657":"Croâporal","658":"Amphinobi","659":"Sapereau","660":"Excavarenne","661":"Passerouge","662":"Braisillon","663":"Flambusard","664":"Lépidonille","665":"Pérégrain","666":"Prismillon","667":"Hélionceau","668":"Némélios","669":"Flabébé","670":"Floette","671":"Florges","672":"Cabriolaine","673":"Chevroum","674":"Pandespiègle","675":"Pandarbare","676":"Couafarel","677":"Psystigri","678":"Mistigrix","679":"Monorpale","680":"Dimoclès","681":"Exagide","682":"Fluvetin","683":"Cocotine","684":"Sucroquin","685":"Cupcanaille","686":"Sepiatop","687":"Sepiatroce","688":"Opermine","689":"Golgopathe","690":"Venalgue","691":"Kravarech","692":"Flingouste","693":"Gamblast","694":"Galvaran","695":"Iguolta","696":"Ptyranidur","697":"Rexillius","698":"Amagara","699":"Dragmara","700":"Nymphali","701":"Brutalibré","702":"Dedenne","703":"Strassie","704":"Mucuscule","705":"Colimucus","706":"Muplodocus","707":"Trousselin","708":"Brocélôme","709":"Desséliande","710":"Pitrouille","711":"Banshitrouye","712":"Grelaçon","713":"Séracrawl","714":"Sonistrelle","715":"Bruyverne","716":"Xerneas","717":"Yveltal","718":"Zygarde","719":"Diancie","720":"Hoopa","721":"Volcanion"}
--------------------------------------------------------------------------------