mirror of
https://github.com/veekun/pokedex.git
synced 2024-08-20 18:16:34 +00:00
Merge branch 'master' into duhow/spanish_translations
This commit is contained in:
commit
37b63057b8
44 changed files with 17970 additions and 2133 deletions
.dockerignore.gitignore.travis.ymlDockerfileREADME.md
bin
docker-compose.ymldocker-entrypoint.shdocker-pokedexitem-questionspokedex
data/csv
ability_changelog_prose.csvability_prose.csvcontest_combos.csvegg_group_prose.csvencounter_condition_value_map.csvencounter_method_prose.csvencounter_methods.csvencounter_slots.csvencounters.csvgeneration_names.csvlanguage_names.csvlanguages.csvlocation_area_prose.csvlocation_areas.csvmove_damage_class_prose.csvmoves.csvpokedex_prose.csvpokedex_version_groups.csvpokedexes.csvpokemon.csvpokemon_dex_numbers.csvpokemon_evolution.csvpokemon_forms.csvpokemon_species_names.csvregion_names.csvstat_names.csvtype_names.csvversion_names.csv
db
tests
scripts
setup.py
5
.dockerignore
Normal file
5
.dockerignore
Normal file
|
@ -0,0 +1,5 @@
|
|||
.git
|
||||
.idea
|
||||
*.sqlite
|
||||
*.log
|
||||
site-packages
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -14,6 +14,9 @@ pip-selfcheck.json
|
|||
!/bin/edit-csv-as-yaml
|
||||
!/bin/poupdate
|
||||
!/bin/reset-postgresql-sequences
|
||||
!/bin/docker-pokedex
|
||||
/local
|
||||
/lib
|
||||
/include
|
||||
|
||||
.idea
|
||||
|
|
|
@ -3,6 +3,8 @@ python:
|
|||
- "2.7"
|
||||
- "3.4"
|
||||
- "3.5"
|
||||
- "3.6"
|
||||
- "3.7"
|
||||
- "pypy"
|
||||
- "pypy3"
|
||||
|
||||
|
|
28
Dockerfile
28
Dockerfile
|
@ -1,23 +1,13 @@
|
|||
FROM python:2.7-slim
|
||||
ARG PYTHON_VERSION=${PYTHON_VERSION:-"3.7-slim"}
|
||||
FROM python:${PYTHON_VERSION}
|
||||
|
||||
RUN echo "Upgrading distro..." && \
|
||||
apt-get update > /dev/null && \
|
||||
apt-get upgrade -y > /dev/null && \
|
||||
echo "Installing dependencies..." && \
|
||||
apt-get install -y git python-distribute > /dev/null && \
|
||||
pip install --no-cache-dir virtualenv psycopg2 pymysql > /dev/null && \
|
||||
echo "Optimizing space..." && \
|
||||
apt-get remove --purge -y software-properties-common > /dev/null && \
|
||||
apt-get autoremove -y > /dev/null && \
|
||||
apt-get clean > /dev/null && \
|
||||
apt-get autoclean > /dev/null && \
|
||||
echo -n > /var/lib/apt/extended_states && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
rm -rf /usr/share/man/?? && \
|
||||
rm -rf /usr/share/man/??_*
|
||||
ADD ./ /app/
|
||||
|
||||
COPY ./docker-entrypoint.sh /docker-entrypoint
|
||||
RUN chmod +x /docker-entrypoint
|
||||
WORKDIR /app
|
||||
|
||||
ENTRYPOINT ["/docker-entrypoint"]
|
||||
RUN echo "Setting up project..." && \
|
||||
pip install -e . && \
|
||||
echo "DONE"
|
||||
|
||||
ENTRYPOINT ["pokedex"]
|
||||
CMD ["status"]
|
94
README.md
94
README.md
|
@ -1,31 +1,101 @@
|
|||
# pokedex
|
||||
|
||||
This is a Python library slash pile of data containing a whole lot of data scraped from Pokémon games. It's the primary guts of [veekun](https://veekun.com/).
|
||||
This is a Python library slash pile of data containing a whole lot of data scraped from Pokémon games.
|
||||
It's the primary guts of [veekun](https://veekun.com/).
|
||||
|
||||
## Current status
|
||||
|
||||
The project is not _dead_, but it is _languishing_. It's currently being maintained by only a single person ([eevee](https://eev.ee/)), who is also preoccupied with a lot of other things. It needs a lot of TLC to modernize it and fix a lot of rough edges.
|
||||
The project is not _dead_, but it is _languishing_.
|
||||
It's currently being maintained by only its creator ([eevee](https://eev.ee/)) and a couple of other contributors,
|
||||
who are also occupied with a lot of other things.
|
||||
|
||||
I started on an experiment with switching to YAML for data storage some time ago, for a variety of reasons. It's finally starting to show some promise — all of gen 7 was dumped to a YAML format, then loaded into the database from there — but it'll take a lot more work to get this usable. The intended _upsides_ are:
|
||||
The project needs to be modernized and to have a lot of rough edges fixed that would also make it easier
|
||||
to maintain for the games and generations to come.
|
||||
|
||||
- The data will include everything from older games, so you don't have to guess! Also, the site will handle older games correctly, probably!
|
||||
- Many more filtering and searching tools on veekun, since I won't have to fight SQL to write them!
|
||||
- More interesting data we've never had before, like trainer teams and overworld items! And models? Maps, even? Who knows, but working on this stuff should be easier with all this existing code in place!
|
||||
### Status of the YAML migration
|
||||
|
||||
**Update from 2017-06-18**
|
||||
|
||||
@eevee started on an experiment with switching to YAML for data storage some time ago, for a variety of reasons.
|
||||
It's finally starting to show some promise — all of gen 7 was dumped to a YAML format, then loaded into the database
|
||||
from there — but it'll take a lot more work to get this usable. The intended _upsides_ are:
|
||||
|
||||
- The data will include everything from older games, so you don't have to guess!
|
||||
Also, the veekun site will handle older games correctly, probably!
|
||||
- Many more filtering and searching tools on veekun, since we won't have to fight SQL to write them!
|
||||
- More interesting data we've never had before, like trainer teams and overworld items!
|
||||
And models? Maps, even? Who knows, but working on this stuff should be easier with all this existing code in place!
|
||||
- A project that's actually documented and not confusing as hell to use!
|
||||
- A useful command line interface that doesn't require weird setup steps!
|
||||
|
||||
If you're interested in this work, hearing about that would be some great motivation! In the meantime, veekun will look a bit stagnant. I can't dedicate huge amounts of time to it, either, so this may take a while, if it ever gets done at all. Sorry.
|
||||
If you're interested in this work, hearing about that would be some great motivation!
|
||||
In the meantime, veekun will look a bit stagnant.
|
||||
We can't dedicate huge amounts of time to it, either, so this may take a while, if it ever gets done at all.
|
||||
Sorry.
|
||||
|
||||
|
||||
### How can I help?
|
||||
## How can I help?
|
||||
|
||||
I don't know! Not many people have the right combination of skills and interests to work on this. I guess you could pledge to my [Patreon](https://www.patreon.com/eevee) as some gentle encouragement. :)
|
||||
I don't know! Not many people have the right combination of skills and interests to work on this.
|
||||
I guess you could pledge to my [Patreon](https://www.patreon.com/eevee) as some gentle encouragement. :)
|
||||
|
||||
If you are a developer, you can of course also contribute to the development of this project via Pull Requests.
|
||||
|
||||
## Copyright and whatnot
|
||||
### About editing CSV files
|
||||
|
||||
The software is licensed under the MIT license. See the `LICENSE` file for full copyright and license text. The short version is that you can do what you like with the code, as long as you say where you got it.
|
||||
Fixing CSV data inconsistency or errors and putting that into a Pull Request it's also appreciated.
|
||||
|
||||
This repository includes data extracted from the Pokémon series of video games. All of it is the intellectual property of Nintendo, Creatures, inc., and GAME FREAK, inc. and is protected by various copyrights and trademarks. The author believes that the use of this intellectual property for a fan reference is covered by fair use — the use is inherently educational, and the software would be severely impaired without the copyrighted material.
|
||||
Even though, whilst for every new game that we integrate here the initial big dump of data comes directly from
|
||||
the disassembled game files and scripts that parse their data, there is still some data that needs to be fixed or
|
||||
introduced manually.
|
||||
|
||||
Pull Requests with manually-written modifications to the CSV files introducing data of new games without a trustful
|
||||
data source will be discarded.
|
||||
|
||||
As mentioned, for new games we always try to automate this process with scripts that parse the disassembled game's data
|
||||
data into CSV, excepting whenever we have to fix some data inconsistency or error.
|
||||
|
||||
Raw data can also sometimes come from external data miners, which have disassembled the game content and dumped all the
|
||||
information into human-readable text files.
|
||||
|
||||
## Using the pokedex CLI
|
||||
|
||||
A guide is available under the project's [Wiki](https://github.com/veekun/pokedex/wiki).
|
||||
|
||||
### Docker support
|
||||
|
||||
If you want to use the CLI but you don't want to install all python requirements yourself locally in your
|
||||
computer, you can use [Docker](https://www.docker.com/) and the provided Dockerfile will do everything for you.
|
||||
|
||||
You only need to clone this project, and under the project directory, use the docker helper script to run
|
||||
any pokedex CLI command:
|
||||
|
||||
**Examples**:
|
||||
|
||||
Generating the SQLite database from the CSV files:
|
||||
```bash
|
||||
bin/docker-pokedex setup -v
|
||||
```
|
||||
|
||||
Dumping the SQLite database back into the CSV files:
|
||||
```bash
|
||||
bin/docker-pokedex dump -l all
|
||||
```
|
||||
|
||||
You also have a special command to re-build the docker image (e.g. after editing files):
|
||||
```bash
|
||||
bin/docker-pokedex rebuild
|
||||
```
|
||||
|
||||
## License and Copyright
|
||||
|
||||
The software is licensed under the MIT license. See the [`LICENSE`](LICENSE) file for full copyright and license text.
|
||||
The short version is that you can do what you like with the code, as long as you say where you got it.
|
||||
|
||||
This repository includes data extracted from the Pokémon series of video games.
|
||||
All of it is the intellectual property of Nintendo, Creatures, inc., and GAME FREAK, inc. and is protected by various
|
||||
copyrights and trademarks. The author believes that the use of this intellectual property for a fan reference is
|
||||
covered by fair use — the use is inherently educational, and the software would be severely impaired without the
|
||||
copyrighted material.
|
||||
|
||||
That said, any use of this library and its included data is **at your own legal risk**.
|
||||
|
|
20
bin/docker-pokedex
Executable file
20
bin/docker-pokedex
Executable file
|
@ -0,0 +1,20 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
curr_dir="$(pwd)"
|
||||
log_file="${curr_dir}/bin/docker-pokedex.log"
|
||||
|
||||
if [[ "${1}" = "rebuild" ]] || [[ ! -f "${log_file}" ]]; then
|
||||
docker build --rm -t veekun/pokedex ${curr_dir}
|
||||
echo "$(date)" >> "${log_file}"
|
||||
|
||||
if [[ "${1}" = "rebuild" ]]; then
|
||||
echo "Docker container rebuilt"
|
||||
exit
|
||||
fi;
|
||||
fi
|
||||
|
||||
docker run -it --rm \
|
||||
-e TERM=xterm-256color \
|
||||
--name "pokedex-$(date +%Y%m%d-%H%M%S)" \
|
||||
--mount type=bind,source="${curr_dir}/pokedex/data",target=/app/pokedex/data \
|
||||
veekun/pokedex "${@}"
|
|
@ -1,6 +0,0 @@
|
|||
version: '3'
|
||||
services:
|
||||
pokedex:
|
||||
build: ./
|
||||
volumes:
|
||||
- ./:/project
|
|
@ -1,21 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
POKEDEX_DIR=${POKEDEX_DIR:-"/project"}
|
||||
|
||||
cd ${POKEDEX_DIR}
|
||||
|
||||
if [ ! -f "${POKEDEX_DIR}/bin/python" ] || [ ! -f "${POKEDEX_DIR}/bin/pokedex" ] ; then
|
||||
echo "Building the bin/pokedex executable ..."
|
||||
virtualenv $POKEDEX_DIR --python=python2
|
||||
bin/python setup.py develop
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
"") bin/pokedex help
|
||||
;;
|
||||
"exec") exec ${@:2}
|
||||
;;
|
||||
*) bin/pokedex $@
|
||||
;;
|
||||
esac
|
|
@ -1,3 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
docker-compose run --rm pokedex "$@"
|
|
@ -1,18 +0,0 @@
|
|||
QUESTIONS ABOUT ITEMS
|
||||
- I think: key items are uncountable. everything else is countable. an item can be held iff it is countable.
|
||||
- how long do
|
||||
- check bp for ultimate held item ref or something
|
||||
- I need a better way to represent NPC interactions in different games
|
||||
- how much does growth mulch accelerate soil drying? how much does damp mulch slow it?
|
||||
- does lum berry cure confusion?
|
||||
- how does sweet heart work? it seems a guy in mistralton will trade some for heart scales?
|
||||
- kind of guessing about the * urge items
|
||||
|
||||
CHANGES SINCE R/S
|
||||
- 4 shoal salt + 4 shoal shells, traded to a guy in Shoal Cave, make a Shell Bell
|
||||
- white flute increased encounter rate by 50%, not 100%
|
||||
- shards can be traded for the respective stones
|
||||
|
||||
|
||||
|
||||
UP TO 67
|
|
@ -1,53 +1,105 @@
|
|||
ability_changelog_id,local_language_id,effect
|
||||
1,6,Hat im Kampf keinen Effekt.
|
||||
1,9,Has no effect in battle.
|
||||
2,6,Verhindert keine regulären K.O. bei vollen []{mechanic:hp}.
|
||||
2,9,Does not prevent regular KOs from full [HP]{mechanic:hp}.
|
||||
3,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
3,9,Has no overworld effect.
|
||||
4,6,"[]{type:electric}-Attacken die keinen Schaden anrichten, wie []{move:thunder-wave}, werden nicht absorbiert."
|
||||
4,9,"Does not absorb non-damaging []{type:electric} moves, i.e. []{move:thunder-wave}."
|
||||
5,6,Löst bei Attacken die mehrmals Treffen bei jedem Treffer aus.
|
||||
5,9,Triggers on every hit of multiple-hit moves.
|
||||
6,6,[]{move:will-o-wisp} triggert die Fähigkeit nicht bei Pokémon die immun gegen []{mechanic:burn} sind.
|
||||
6,9,[]{move:will-o-wisp} does not trigger this ability for Pokémon immune to [burns]{mechanic:burn}.
|
||||
7,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
7,9,Has no overworld effect.
|
||||
8,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
8,9,Has no overworld effect.
|
||||
9,6,"Hat keinen Effekt, wenn die Fähigkeit nach Kampfbeginn erlangt wurde."
|
||||
9,9,Does not take effect if acquired after entering battle.
|
||||
10,6,Betrifft andere Pokémon mit dieser Fähigkeit.
|
||||
10,9,Affects other Pokémon with this ability.
|
||||
11,6,Verursacht nur 1/16 der maximalen []{mechanic:hp} des Angreifers Schaden.
|
||||
11,9,Inflicts only 1/16 of the attacker's maximum [HP]{mechanic:hp} in damage.
|
||||
12,6,"[]{move:fire-fang} und Attacken die [typenlosen Schaden]{mechanic:typeless-damage} verursachen, ignorieren diese Fähigkeit unabhängig von ihrem Typ."
|
||||
12,9,[]{move:fire-fang} and moves that inflict [typeless damage]{mechanic:typeless-damage} ignore this ability regardless of type.
|
||||
13,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
13,9,Has no overworld effect.
|
||||
14,6,Kann das Wesen von Pokémon mit denen in der Spielwelt interagiert wird nicht verändern.
|
||||
14,9,Cannot influence the natures of Pokémon encountered by interacting with them on the overworld.
|
||||
15,6,Gibt schwere []{mechanic:poison} als normale []{mechanic:poison} zurück.
|
||||
15,9,Passes back bad [poison]{mechanic:poison} as regular poison.
|
||||
16,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
16,9,Has no overworld effect.
|
||||
17,6,"Betrifft keine []{type:electric}-Attacken die keinen Schaden anrichten, wie []{move:thunder-wave}. Erhöht die Anzahl an Trainer-Anrufen wenn irgendein Pokémon im Team diese Fähigkeit hat."
|
||||
17,9,"Does not affect non-damaging []{type:electric} moves, i.e. []{move:thunder-wave}. Increases the frequency of Match Call calls on the overworld if any party Pokémon has this ability."
|
||||
18,6,"Leitet []{type:electric}-Attacken um, ohne ihre Effekte zu deaktivieren oder einen []{mechanic:special-attack} Bonus zu gewähren. Leitet []{move:hidden-power} nicht um."
|
||||
18,9,Redirects []{type:electric} moves without negating them or granting any [Special Attack]{mechanic:special-attack} boost. Does not redirect []{move:hidden-power}.
|
||||
19,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
19,9,Has no overworld effect.
|
||||
20,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
20,9,Has no overworld effect.
|
||||
21,6,"Hindert []{move:heal-bell} daran, das Pokémon zu heilen, auch außerhalb vom Kampf."
|
||||
21,9,"Prevents []{move:heal-bell} from curing the Pokémon, whether or not it is in battle."
|
||||
22,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
22,9,Has no overworld effect.
|
||||
23,6,Betrifft keine Attacken von Teammitgliedern die alle anderen Pokémon als Ziel haben. Diese Fähigkeit wird im Kampf nicht angekündigt.
|
||||
23,9,Does not affect friendly Pokémon's moves that target all other Pokémon. This ability's presence is not announced upon entering battle.
|
||||
24,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
24,9,Has no overworld effect.
|
||||
25,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
25,9,Has no overworld effect.
|
||||
26,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
26,9,Has no overworld effect.
|
||||
27,6,"Verdoppelt den Radius in dem []{move:cut} Gras entfernt, wenn irgendein Pokémon im Team diese Fähigkeit hat."
|
||||
27,9,Doubles []{move:cut}'s grass-cutting radius on the overworld if any party Pokémon has this ability.
|
||||
28,6,Hat im Kampf keinen Effekt.
|
||||
28,9,Has no effect in battle.
|
||||
29,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
29,9,Has no overworld effect.
|
||||
30,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
30,9,Has no overworld effect.
|
||||
31,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
31,9,Has no overworld effect.
|
||||
32,6,Hat keinen Effekt während das Pokémon [schläft]{mechanic:sleep}.
|
||||
32,9,Does not take effect during [sleep]{mechanic:sleep}.
|
||||
33,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
33,9,Has no overworld effect.
|
||||
34,6,"Erhöht die Anzahl an Rufen die man außerhalb vom Kampf hört, wenn irgendein Pokémon im Team diese Fähigkeit hat."
|
||||
34,9,Increases the frequency of cries heard on the overworld if any party Pokémon has this ability.
|
||||
35,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
35,9,Has no overworld effect.
|
||||
36,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
36,9,Has no overworld effect.
|
||||
37,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
37,9,Has no overworld effect.
|
||||
38,6,[]{mechanic:poison} schadet dem Pokémon außerhalb vom Kampf.
|
||||
38,9,[Poison]{mechanic:poison} still damages the Pokémon outside of battle.
|
||||
39,6,"[]{mechanic:paralysis} hindert das Pokémon nicht daran sich zu bewegen, aber der []{mechanic:speed} Malus bleibt. []{mechanic:poison} schadet dem Pokémon außerhalb vom Kampf."
|
||||
39,9,"[Paralysis]{mechanic:paralysis} cannot prevent the Pokémon from moving, though the [Speed]{mechanic:speed} cut is unaffected. [Poison]{mechanic:poison} still damages the Pokémon outside of battle."
|
||||
40,6,Wegen eines Glitches haben Attacken die von dieser Fähigkeit beeinflusst sind eine (100 - Genauigkeit)% Chance durch den []{move:detect} oder []{move:protect} zu treffen.
|
||||
40,9,"Due to a glitch, moves affected by this ability have a (100 - accuracy)% chance to hit through []{move:detect} or []{move:protect}."
|
||||
41,6,[]{move:rest} funktioniert normal bei [starkem Sonnenlicht]{mechanic:strong-sunlight}.
|
||||
41,9,[]{move:rest} works as usual during [strong sunlight]{mechanic:strong-sunlight}.
|
||||
42,6,[]{move:fling} kann normal benutzt werden.
|
||||
42,9,[]{move:fling} can be used as usual.
|
||||
43,6,Leitet []{type:water}-Attacken um ohne den []{mechanic:special-attack} Bonus zu gewähren. Leitet []{move:hidden-power} nicht um.
|
||||
43,9,Redirects []{type:water} moves without negating them or granting any [Special Attack]{mechanic:special-attack} boost. Does not redirect []{move:hidden-power}.
|
||||
44,6,Kann []{ability:flower-gift} und []{ability:wonder-guard} kopieren.
|
||||
44,9,Can copy []{ability:flower-gift} and []{ability:wonder-guard}.
|
||||
45,6,Kann []{ability:forecast} und []{ability:trace} kopieren.
|
||||
45,9,Can copy []{ability:forecast} and []{ability:trace}.
|
||||
46,6,Funktioniert nur wenn es mit []{ability:minus} kombiniert wird.
|
||||
46,9,Powers up only when paired with []{ability:minus}.
|
||||
47,6,Funktioniert nur wenn es mit []{ability:plus} kombiniert wird.
|
||||
47,9,Powers up only when paired with []{ability:plus}.
|
||||
48,6,"Die Chance, dass der Effekt eintritt, beträgt 30%."
|
||||
48,9,Chance of taking effect is 30%.
|
||||
49,6,[]{move:triple-kick} wird nicht beeinflusst.
|
||||
49,9,[]{move:triple-kick} is unaffected.
|
||||
50,6,[]{move:struggle} wird nicht beeinflusst. []{move:helping-hand} und []{move:defense-curl} werden nicht beachtet.
|
||||
50,9,[]{move:struggle} is unaffected. []{move:helping-hand} and []{move:defense-curl} are not taken into account.
|
||||
51,6,Hat außerhalb vom Kampf keinen Effekt.
|
||||
51,9,Has no overworld effect.
|
||||
52,6,"Die Chance, dass der Effekt eintritt, beträgt 33%."
|
||||
52,9,Chance of taking effect is 33%.
|
||||
|
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
|||
first_move_id,second_move_id
|
||||
1,3
|
||||
1,29
|
||||
1,21
|
||||
1,185
|
||||
7,8
|
||||
7,9
|
||||
|
@ -37,7 +37,6 @@ first_move_id,second_move_id
|
|||
74,22
|
||||
74,71
|
||||
74,72
|
||||
74,73
|
||||
74,75
|
||||
74,76
|
||||
74,80
|
||||
|
@ -45,6 +44,7 @@ first_move_id,second_move_id
|
|||
74,331
|
||||
74,338
|
||||
74,345
|
||||
81,169
|
||||
82,225
|
||||
82,337
|
||||
82,349
|
||||
|
@ -77,8 +77,8 @@ first_move_id,second_move_id
|
|||
111,205
|
||||
116,2
|
||||
116,5
|
||||
116,21
|
||||
116,25
|
||||
116,29
|
||||
116,36
|
||||
116,38
|
||||
116,167
|
||||
|
@ -108,8 +108,6 @@ first_move_id,second_move_id
|
|||
170,66
|
||||
170,136
|
||||
170,223
|
||||
170,276
|
||||
170,329
|
||||
174,180
|
||||
174,194
|
||||
174,212
|
||||
|
@ -132,10 +130,8 @@ first_move_id,second_move_id
|
|||
199,276
|
||||
201,28
|
||||
201,189
|
||||
201,300
|
||||
201,311
|
||||
201,328
|
||||
201,341
|
||||
203,175
|
||||
203,179
|
||||
203,194
|
||||
|
@ -155,17 +151,18 @@ first_move_id,second_move_id
|
|||
230,77
|
||||
230,78
|
||||
230,79
|
||||
240,3
|
||||
240,55
|
||||
240,56
|
||||
240,57
|
||||
240,61
|
||||
240,87
|
||||
240,110
|
||||
240,127
|
||||
240,128
|
||||
240,145
|
||||
240,152
|
||||
240,190
|
||||
240,250
|
||||
240,291
|
||||
240,308
|
||||
240,311
|
||||
|
@ -174,7 +171,6 @@ first_move_id,second_move_id
|
|||
240,346
|
||||
240,352
|
||||
241,7
|
||||
241,27
|
||||
241,52
|
||||
241,53
|
||||
241,76
|
||||
|
@ -186,6 +182,7 @@ first_move_id,second_move_id
|
|||
241,235
|
||||
241,236
|
||||
241,257
|
||||
241,261
|
||||
241,284
|
||||
241,299
|
||||
241,307
|
||||
|
@ -198,22 +195,14 @@ first_move_id,second_move_id
|
|||
252,292
|
||||
254,255
|
||||
254,256
|
||||
258,58
|
||||
258,59
|
||||
258,62
|
||||
258,114
|
||||
258,181
|
||||
258,196
|
||||
258,301
|
||||
258,311
|
||||
258,329
|
||||
258,333
|
||||
268,9
|
||||
268,84
|
||||
268,85
|
||||
268,86
|
||||
268,87
|
||||
268,192
|
||||
268,209
|
||||
268,344
|
||||
268,351
|
||||
|
|
|
|
@ -1,89 +1,104 @@
|
|||
egg_group_id,local_language_id,name
|
||||
1,1,かいじゅう
|
||||
1,3,괴수
|
||||
1,5,Monstrueux
|
||||
1,6,Monster
|
||||
1,7,Monstruo
|
||||
1,8,Mostro
|
||||
1,9,Monster
|
||||
2,1,すいちゅう1
|
||||
2,3,수중 1
|
||||
2,5,Aquatique 1
|
||||
2,6,Wasser 1
|
||||
2,7,Agua 1
|
||||
2,8,Acqua 1
|
||||
2,9,Water 1
|
||||
3,1,むし
|
||||
3,3,벌레
|
||||
3,5,Insectoïde
|
||||
3,6,Käfer
|
||||
3,7,Bicho
|
||||
3,8,Coleottero
|
||||
3,9,Bug
|
||||
4,1,ひこう
|
||||
4,3,비행
|
||||
4,5,Aérien
|
||||
4,6,Flug
|
||||
4,7,Volador
|
||||
4,8,Volante
|
||||
4,9,Flying
|
||||
5,1,りくじょう
|
||||
5,3,육상
|
||||
5,5,Terrestre
|
||||
5,6,Feld
|
||||
5,7,Campo
|
||||
5,8,Campo
|
||||
5,9,Field
|
||||
6,1,ようせい
|
||||
6,3,요정
|
||||
6,5,Féerique
|
||||
6,6,Fee
|
||||
6,7,Hada
|
||||
6,8,Magico
|
||||
6,9,Fairy
|
||||
7,1,しょくぶつ
|
||||
7,3,식물
|
||||
7,5,Végétal
|
||||
7,6,Pflanze
|
||||
7,7,Planta
|
||||
7,8,Erba
|
||||
7,9,Grass
|
||||
8,1,ひとがた
|
||||
8,3,인간형
|
||||
8,5,Humanoïde
|
||||
8,6,Humanotyp
|
||||
8,7,Humanoide
|
||||
8,8,Umanoide
|
||||
8,9,Human-Like
|
||||
9,1,すいちゅう3
|
||||
9,3,수중 3
|
||||
9,5,Aquatique 3
|
||||
9,6,Wasser 3
|
||||
9,7,Agua 3
|
||||
9,8,Acqua 3
|
||||
9,9,Water 3
|
||||
10,1,こうぶつ
|
||||
10,3,광물
|
||||
10,5,Minéral
|
||||
10,6,Mineral
|
||||
10,7,Mineral
|
||||
10,8,Minerale
|
||||
10,9,Mineral
|
||||
11,1,ふていけい
|
||||
11,3,부정형
|
||||
11,5,Amorphe
|
||||
11,6,Amorph
|
||||
11,7,Amorfo
|
||||
11,8,Amorfo
|
||||
11,9,Amorphous
|
||||
12,1,すいちゅう2
|
||||
12,3,수중 2
|
||||
12,5,Aquatique 2
|
||||
12,6,Wasser 2
|
||||
12,7,Agua 2
|
||||
12,8,Acqua 2
|
||||
12,9,Water 2
|
||||
13,1,メタモン
|
||||
13,3,메타몽
|
||||
13,5,Métamorph
|
||||
13,6,Ditto
|
||||
13,7,Ditto
|
||||
13,8,Ditto
|
||||
13,9,Ditto
|
||||
14,1,ドラゴン
|
||||
14,3,드래곤
|
||||
14,5,Draconique
|
||||
14,6,Drache
|
||||
14,7,Dragón
|
||||
14,8,Drago
|
||||
14,9,Dragon
|
||||
15,1,タマゴみはっけん
|
||||
15,3,알미발견
|
||||
15,5,Inconnu
|
||||
15,6,Unbekannt
|
||||
15,7,Desconocido
|
||||
|
|
|
File diff suppressed because it is too large
Load diff
|
@ -33,3 +33,5 @@ encounter_method_id,local_language_id,name
|
|||
16,9,Walking in red flowers
|
||||
17,6,Auf unwegsamen Gelände laufen
|
||||
17,9,Walking on rough terrain
|
||||
18,9,Receive as a gift
|
||||
19,9,Receive egg as a gift
|
||||
|
|
|
|
@ -16,3 +16,5 @@ id,identifier,order
|
|||
15,purple-flowers,7
|
||||
16,red-flowers,8
|
||||
17,rough-terrain,9
|
||||
18,gift,18
|
||||
19,gift-egg,19
|
||||
|
|
|
|
@ -488,3 +488,74 @@ id,version_group_id,encounter_method_id,slot,rarity
|
|||
487,15,4,0,60
|
||||
488,15,4,1,35
|
||||
489,15,4,2,5
|
||||
490,1,18,,100
|
||||
491,2,18,,100
|
||||
492,3,18,,100
|
||||
493,4,18,,100
|
||||
494,5,18,,100
|
||||
495,6,18,,100
|
||||
496,7,18,,100
|
||||
497,8,18,,100
|
||||
498,9,18,,100
|
||||
499,10,18,,100
|
||||
500,11,18,,100
|
||||
501,14,18,,100
|
||||
502,15,18,,100
|
||||
503,16,18,,100
|
||||
504,3,19,,100
|
||||
505,4,19,,100
|
||||
506,5,19,,100
|
||||
507,6,19,,100
|
||||
508,7,19,,100
|
||||
509,8,19,,100
|
||||
510,9,19,,100
|
||||
511,10,19,,100
|
||||
512,11,19,,100
|
||||
513,14,19,,100
|
||||
514,16,19,,100
|
||||
515,3,1,1,30
|
||||
516,3,1,2,30
|
||||
517,3,1,3,20
|
||||
518,3,1,4,10
|
||||
519,3,1,5,5
|
||||
520,3,1,6,4
|
||||
521,3,1,7,1
|
||||
522,3,2,1,70
|
||||
523,3,2,2,15
|
||||
524,3,2,3,15
|
||||
525,3,3,1,35
|
||||
526,3,3,2,35
|
||||
527,3,3,3,20
|
||||
528,3,3,4,10
|
||||
529,3,4,1,40
|
||||
530,3,4,2,30
|
||||
531,3,4,3,20
|
||||
532,3,4,4,10
|
||||
533,3,5,1,60
|
||||
534,3,5,2,30
|
||||
535,3,5,3,10
|
||||
536,3,6,1,90
|
||||
537,3,6,2,10
|
||||
538,4,1,1,30
|
||||
539,4,1,2,30
|
||||
540,4,1,3,20
|
||||
541,4,1,4,10
|
||||
542,4,1,5,5
|
||||
543,4,1,6,4
|
||||
544,4,1,7,1
|
||||
545,4,2,1,70
|
||||
546,4,2,2,15
|
||||
547,4,2,3,15
|
||||
548,4,3,1,35
|
||||
549,4,3,2,35
|
||||
550,4,3,3,20
|
||||
551,4,3,4,10
|
||||
552,4,4,1,40
|
||||
553,4,4,2,30
|
||||
554,4,4,3,20
|
||||
555,4,4,4,10
|
||||
556,4,5,1,60
|
||||
557,4,5,2,30
|
||||
558,4,5,3,10
|
||||
559,4,6,1,90
|
||||
560,4,6,2,10
|
||||
|
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,41 +1,48 @@
|
|||
generation_id,local_language_id,name
|
||||
1,1,だいいっせだい
|
||||
1,1,だいいちせだい
|
||||
1,3,1세대
|
||||
1,5,Génération I
|
||||
1,6,Generation I
|
||||
1,7,Generación I
|
||||
1,9,Generation I
|
||||
1,11,第一世代
|
||||
2,1,だいにせだい
|
||||
2,3,2세대
|
||||
2,5,Génération II
|
||||
2,6,Generation II
|
||||
2,7,Generación II
|
||||
2,9,Generation II
|
||||
2,11,第二世代
|
||||
3,1,だいさんせだい
|
||||
3,3,3세대
|
||||
3,5,Génération III
|
||||
3,6,Generation III
|
||||
3,7,Generación III
|
||||
3,9,Generation III
|
||||
3,11,第三世代
|
||||
4,1,だいよんせだい
|
||||
4,3,4세대
|
||||
4,5,Génération IV
|
||||
4,6,Generation IV
|
||||
4,7,Generación IV
|
||||
4,9,Generation IV
|
||||
4,11,第四世代
|
||||
5,1,だいごせだい
|
||||
5,3,5세대
|
||||
5,5,Génération V
|
||||
5,6,Generation V
|
||||
5,7,Generación V
|
||||
5,9,Generation V
|
||||
5,11,第五世代
|
||||
6,1,だいろくせだい
|
||||
6,3,6세대
|
||||
6,5,Génération VI
|
||||
6,6,Generation VI
|
||||
6,7,Generación VI
|
||||
6,9,Generation VI
|
||||
6,11,第六世代
|
||||
7,1,だいななせだい
|
||||
7,3,7세대
|
||||
7,5,Génération VII
|
||||
7,6,Generation VII
|
||||
7,7,Generación VII
|
||||
|
|
|
|
@ -1,49 +1,59 @@
|
|||
language_id,local_language_id,name
|
||||
1,1,日本語
|
||||
1,3,일본어
|
||||
1,5,Japonais
|
||||
1,6,Japanisch
|
||||
1,7,Japonés
|
||||
1,9,Japanese
|
||||
2,1,正式ローマジ
|
||||
2,3,정식 로마자
|
||||
2,5,Romaji
|
||||
2,6,Rōmaji
|
||||
2,9,Official roomaji
|
||||
3,1,韓国語
|
||||
3,3,한국어
|
||||
3,5,Coréen
|
||||
3,6,Koreanisch
|
||||
3,7,Coreano
|
||||
3,9,Korean
|
||||
4,1,中国語
|
||||
4,3,중국어
|
||||
4,5,Chinois
|
||||
4,6,Chinesisch
|
||||
4,7,Chino
|
||||
4,9,Chinese
|
||||
5,1,フランス語
|
||||
5,3,프랑스어
|
||||
5,5,Français
|
||||
5,6,Französisch
|
||||
5,7,Francés
|
||||
5,9,French
|
||||
6,1,ドイツ語
|
||||
6,3,도이치어
|
||||
6,5,Allemand
|
||||
6,6,Deutsch
|
||||
6,7,Alemán
|
||||
6,9,German
|
||||
7,1,西語
|
||||
7,3,스페인어
|
||||
7,5,Espagnol
|
||||
7,6,Spanisch
|
||||
7,7,Español
|
||||
7,9,Spanish
|
||||
8,1,伊語
|
||||
8,3,이탈리아어
|
||||
8,5,Italien
|
||||
8,6,Italienisch
|
||||
8,7,Italiano
|
||||
8,9,Italian
|
||||
9,1,英語
|
||||
9,3,영어
|
||||
9,5,Anglais
|
||||
9,6,Englisch
|
||||
9,7,Inglés
|
||||
9,9,English
|
||||
10,1,チェコ語
|
||||
10,3,체코어
|
||||
10,5,Tchèque
|
||||
10,6,Tschechisch
|
||||
10,7,Checo
|
||||
|
|
|
|
@ -11,3 +11,4 @@ id,iso639,iso3166,identifier,official,order
|
|||
10,cs,cz,cs,0,12
|
||||
11,ja,jp,ja,1,2
|
||||
12,zh,cn,zh-Hans,1,6
|
||||
13,pt-BR,br,pt-BR,0,13
|
||||
|
|
|
|
@ -618,3 +618,35 @@ location_area_id,local_language_id,name
|
|||
756,9,Unknown Area 345
|
||||
757,9,Unknown Area 347
|
||||
758,9,Unknown Area 348
|
||||
761,9,Pokemon Center
|
||||
762,9,Fighting Dojo
|
||||
763,9,Celadon Mansion rooftop
|
||||
764,9,Silph Co. 7F
|
||||
765,9,North Gate
|
||||
766,9,Bill's house
|
||||
767,9,Mania's house
|
||||
768,9,Weather Institute
|
||||
769,9,Steven's house
|
||||
770,9,
|
||||
771,9,
|
||||
772,9,
|
||||
773,9,Kirk's house
|
||||
774,9,
|
||||
775,9,Game Freak HQ 1F
|
||||
776,9,Weather Institute
|
||||
777,9,
|
||||
778,9,
|
||||
779,9,
|
||||
780,9,
|
||||
781,9,Contest Hall
|
||||
782,9,Contest Hall
|
||||
783,9,Contest Hall
|
||||
784,9,Contest Hall
|
||||
785,9,
|
||||
786,9,
|
||||
787,9,
|
||||
788,9,West Gate
|
||||
789,9,West Gate
|
||||
790,9,Poke Mart
|
||||
791,9,Pokemon Center
|
||||
792,9,West Gate
|
||||
|
|
|
|
@ -650,3 +650,35 @@ id,location_id,game_index,identifier
|
|||
758,676,0,unknown-area-348
|
||||
759,677,0,
|
||||
760,661,0,
|
||||
761,120,0,pokemon-center
|
||||
762,234,0,fighting-dojo
|
||||
763,67,0,celadon-mansion
|
||||
764,234,0,silph-co-7f
|
||||
765,229,0,north-gate
|
||||
766,229,0,bills-house
|
||||
767,70,0,manias-house
|
||||
768,467,0,weather-institute
|
||||
769,432,0,stevens-house
|
||||
770,567,0,
|
||||
771,169,0,
|
||||
772,170,0,
|
||||
773,70,0,kirks-house
|
||||
774,346,0,
|
||||
775,350,0,game-freak-hq-1f
|
||||
776,361,0,weather-institute
|
||||
777,536,0,
|
||||
778,590,0,
|
||||
779,599,0,
|
||||
780,625,0,
|
||||
781,430,0,contest-hall
|
||||
782,571,0,contest-hall
|
||||
783,570,0,contest-hall
|
||||
784,431,0,contest-hall
|
||||
785,578,0,
|
||||
786,695,0,
|
||||
787,569,0,
|
||||
788,2,0,west-gate
|
||||
789,169,0,west-gate
|
||||
790,153,0,poke-mart
|
||||
791,153,0,pokemon-center
|
||||
792,349,0,west-gate
|
||||
|
|
|
|
@ -6,7 +6,7 @@ move_damage_class_id,local_language_id,name,description
|
|||
1,9,status,No damage
|
||||
2,1,ぶつり,ぶつりのダメージ。こうげきとぼうぎょを行使する
|
||||
2,5,physique,"Dégâts physique, influencés par l'Attaque et la Défense"
|
||||
2,6,physich,"Physischer Schaden, beeinflusst von Angriff und Verteidigung"
|
||||
2,6,physisch,"Physischer Schaden, beeinflusst von Angriff und Verteidigung"
|
||||
2,7,físico,"Daño Físico, controlado por el Ataque y Defensa"
|
||||
2,9,physical,"Physical damage, controlled by Attack and Defense"
|
||||
3,1,とくしゅ,とくしゅのダメージ。とくこうととくぼうを行使する
|
||||
|
|
|
|
@ -106,7 +106,7 @@ id,identifier,generation_id,type_id,power,pp,accuracy,priority,target_id,damage_
|
|||
105,recover,1,1,,10,,0,7,1,33,,4,23,8
|
||||
106,harden,1,1,,30,,0,7,1,12,,5,16,13
|
||||
107,minimize,1,1,,10,,0,7,1,109,,3,16,13
|
||||
108,smokescreen,1,1,,20,100,0,10,1,24,,4,21,10
|
||||
108,smokescreen,1,1,,20,100,0,10,1,24,,4,22,10
|
||||
109,confuse-ray,1,8,,10,100,0,10,1,50,,4,21,10
|
||||
110,withdraw,1,11,,40,,0,7,1,12,,3,15,13
|
||||
111,defense-curl,1,1,,40,,0,7,1,157,,3,16,13
|
||||
|
@ -146,7 +146,7 @@ id,identifier,generation_id,type_id,power,pp,accuracy,priority,target_id,damage_
|
|||
145,bubble,1,11,40,30,100,0,11,3,71,10,3,8,2
|
||||
146,dizzy-punch,1,1,70,10,100,0,10,2,77,20,1,4,16
|
||||
147,spore,1,12,,15,100,0,10,1,2,,2,5,10
|
||||
148,flash,1,1,,20,100,0,10,1,24,,2,21,10
|
||||
148,flash,1,1,,20,100,0,10,1,24,,2,22,10
|
||||
149,psywave,1,14,,15,100,0,10,3,89,,4,14,5
|
||||
150,splash,1,1,,40,,0,7,1,86,,3,28,16
|
||||
151,acid-armor,1,4,,20,,0,7,1,52,,5,32,11
|
||||
|
@ -178,7 +178,7 @@ id,identifier,generation_id,type_id,power,pp,accuracy,priority,target_id,damage_
|
|||
177,aeroblast,2,3,100,5,95,0,10,3,44,,1,2,22
|
||||
178,cotton-spore,2,12,,40,100,0,11,1,61,,2,10,1
|
||||
179,reversal,2,2,,15,100,0,10,2,100,,1,28,15
|
||||
180,spite,2,8,,10,100,0,10,1,101,,5,28,19
|
||||
180,spite,2,8,,10,100,0,10,1,101,,5,26,19
|
||||
181,powder-snow,2,15,40,25,100,0,11,3,6,10,2,1,5
|
||||
182,protect,2,1,,10,,4,7,1,112,,3,15,16
|
||||
183,mach-punch,2,2,40,30,100,1,10,2,104,,1,30,1
|
||||
|
@ -245,7 +245,7 @@ id,identifier,generation_id,type_id,power,pp,accuracy,priority,target_id,damage_
|
|||
244,psych-up,2,1,,10,,0,10,1,144,,4,12,11
|
||||
245,extreme-speed,2,1,80,5,100,2,10,2,104,,1,30,1
|
||||
246,ancient-power,2,6,60,5,100,0,10,3,141,10,5,32,18
|
||||
247,shadow-ball,2,8,80,15,100,0,10,3,73,20,4,21,17
|
||||
247,shadow-ball,2,8,80,15,100,0,10,3,73,20,4,22,17
|
||||
248,future-sight,2,14,120,10,100,0,10,3,149,,4,24,17
|
||||
249,rock-smash,2,2,40,15,100,0,10,2,70,50,5,29,18
|
||||
250,whirlpool,2,11,35,15,85,0,10,3,262,100,2,24,21
|
||||
|
|
|
|
@ -43,3 +43,13 @@ pokedex_id,local_language_id,name,description
|
|||
15,5,Hoenn amélioré,"Pokédex régional d'Hoenn dans Rubis Oméga/Saphir Alpha, mis à jour pour les nouvelles évolutions"
|
||||
15,6,Neue Hoenn,Omega Rubin/Alpha Saphir Hoenn Dex — Dex aus Rubin/Saphir/Smaragd um Neue Entwicklungen erweitert
|
||||
15,9,New Hoenn,"Omega Ruby/Alpha Sapphire Hoenn Dex—Ruby/Sapphire/Emerald's, updated to add new evolutions"
|
||||
16,9,Original Alola,Sun/Moon Alola dex
|
||||
17,9,Original Melemele,Sun/Moon Melemele dex
|
||||
18,9,Original Akala,Sun/Moon Akala dex
|
||||
19,9,Original Ula'ula,Sun/Moon Ula'ula dex
|
||||
20,9,Original Poni,Sun/Moon Poni dex
|
||||
21,9,Updated Alola,Ultra Sun/Ultra Moon Alola dex
|
||||
22,9,Updated Melemele,Ultra Sun/Ultra Moon Melemele dex
|
||||
23,9,Updated Akala,Ultra Sun/Ultra Moon Akala dex
|
||||
24,9,Updated Ula'ula,Ultra Sun/Ultra Moon Ula'ula dex
|
||||
25,9,Updated Poni,Ultra Sun/Ultra Moon Poni dex
|
||||
|
|
|
|
@ -15,3 +15,13 @@ pokedex_id,version_group_id
|
|||
13,15
|
||||
14,15
|
||||
15,16
|
||||
16,17
|
||||
17,17
|
||||
18,17
|
||||
19,17
|
||||
20,17
|
||||
21,18
|
||||
22,18
|
||||
23,18
|
||||
24,18
|
||||
25,18
|
||||
|
|
|
|
@ -13,3 +13,13 @@ id,region_id,identifier,is_main_series
|
|||
13,6,kalos-coastal,1
|
||||
14,6,kalos-mountain,1
|
||||
15,3,updated-hoenn,1
|
||||
16,7,original-alola,1
|
||||
17,7,original-melemele,1
|
||||
18,7,original-akala,1
|
||||
19,7,original-ulaula,1
|
||||
20,7,original-poni,1
|
||||
21,7,updated-alola,1
|
||||
22,7,updated-melemele,1
|
||||
23,7,updated-akala,1
|
||||
24,7,updated-ulaula,1
|
||||
25,7,updated-poni,1
|
||||
|
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -381,7 +381,7 @@ id,evolved_species_id,evolution_trigger_id,trigger_item_id,minimum_level,gender_
|
|||
381,735,1,,20,,,,day,,,,,,,,,,0,0
|
||||
382,737,1,,20,,,,,,,,,,,,,,0,0
|
||||
383,738,1,,,,,,,,,,,,,,,,0,0
|
||||
384,740,1,,,,,,,,,,,,,,,,0,0
|
||||
384,740,1,,,,775,,,,,,,,,,,,0,0
|
||||
385,743,1,,25,,,,,,,,,,,,,,0,0
|
||||
386,745,1,,25,,,,day,,,,,,,,,,0,0
|
||||
387,745,1,,25,,,,night,,,,,,,,,,0,0
|
||||
|
|
|
File diff suppressed because it is too large
Load diff
|
@ -8534,31 +8534,31 @@ pokemon_species_id,local_language_id,name,genus
|
|||
804,12,四颚针龙,毒针宝可梦
|
||||
805,1,ツンデツンデ,いしがきポケモン
|
||||
805,3,차곡차곡,돌담포켓몬
|
||||
805,4,石,石牆寶可夢
|
||||
805,4,壘磊石,石牆寶可夢
|
||||
805,5,Ama-Ama,Pokémon Muraille
|
||||
805,6,Muramura,Steinmauer
|
||||
805,7,Stakataka,Pokémon Muro
|
||||
805,8,Stakataka,Pokémon Bastione
|
||||
805,9,Stakataka,Rampart Pokémon
|
||||
805,11,ツンデツンデ,いしがきポケモン
|
||||
805,12,石,石墙宝可梦
|
||||
805,12,垒磊石,石墙宝可梦
|
||||
806,1,ズガドーン,はなびポケモン
|
||||
806,3,두파팡,불꽃놀이포켓몬
|
||||
806,4,頭小,煙火寶可夢
|
||||
806,4,砰頭小丑,煙火寶可夢
|
||||
806,5,Pierroteknik,Pokémon Artificier
|
||||
806,6,Kopplosio,Feuerwerk
|
||||
806,7,Blacephalon,Pokémon Pirotecnia
|
||||
806,8,Blacephalon,Pokémon Pirotecnico
|
||||
806,9,Blacephalon,Fireworks Pokémon
|
||||
806,11,ズガドーン,はなびポケモン
|
||||
806,12,头小丑,烟火宝可梦
|
||||
806,12,砰头小丑,烟火宝可梦
|
||||
807,1,ゼラオラ,じんらいポケモン
|
||||
807,3,제라오라,신뢰포켓몬
|
||||
807,4,捷拉拉,奔雷寶可夢
|
||||
807,4,捷拉奥拉,奔雷寶可夢
|
||||
807,5,Zeraora,Pokémon Vif Éclair
|
||||
807,6,Zeraora,Blitzsturm
|
||||
807,7,Zeraora,Pokémon Fulgor
|
||||
807,8,Zeraora,Pokémon Fulmirapido
|
||||
807,9,Zeraora,Thunderclap Pokémon
|
||||
807,11,ゼラオラ,じんらいポケモン
|
||||
807,12,捷拉拉,奔雷宝可梦
|
||||
807,12,捷拉奥拉,奔雷宝可梦
|
||||
|
|
|
|
@ -1,30 +1,36 @@
|
|||
region_id,local_language_id,name
|
||||
1,1,カントー地方
|
||||
1,3,관동지방
|
||||
1,5,Kanto
|
||||
1,6,Kanto
|
||||
1,8,Kanto
|
||||
1,9,Kanto
|
||||
2,1,ジョウト地方
|
||||
2,3,성도지방
|
||||
2,5,Johto
|
||||
2,6,Johto
|
||||
2,8,Johto
|
||||
2,9,Johto
|
||||
3,1,ホウエン地方
|
||||
3,3,호연지방
|
||||
3,5,Hoenn
|
||||
3,6,Hoenn
|
||||
3,8,Hoenn
|
||||
3,9,Hoenn
|
||||
4,1,シンオウ地方
|
||||
4,3,신오지방
|
||||
4,5,Sinnoh
|
||||
4,6,Sinnoh
|
||||
4,8,Sinnoh
|
||||
4,9,Sinnoh
|
||||
5,1,イッシュ地方
|
||||
5,3,하나지방
|
||||
5,5,Unys
|
||||
5,6,Einall
|
||||
5,8,Unima
|
||||
5,9,Unova
|
||||
6,1,カロス地方
|
||||
6,3,칼로스지방
|
||||
6,5,Kalos
|
||||
6,6,Kalos
|
||||
6,8,Kalos
|
||||
|
|
|
|
@ -1,47 +1,55 @@
|
|||
stat_id,local_language_id,name
|
||||
1,1,HP
|
||||
1,3,HP
|
||||
1,5,PV
|
||||
1,6,KP
|
||||
1,7,PS
|
||||
1,8,PS
|
||||
1,9,HP
|
||||
2,1,こうげき
|
||||
2,3,공격
|
||||
2,5,Attaque
|
||||
2,6,Angriff
|
||||
2,7,Ataque
|
||||
2,8,Attacco
|
||||
2,9,Attack
|
||||
3,1,ぼうぎょ
|
||||
3,3,방어
|
||||
3,5,Défense
|
||||
3,6,Verteidigung
|
||||
3,7,Defensa
|
||||
3,8,Difesa
|
||||
3,9,Defense
|
||||
4,1,とくこう
|
||||
4,3,특수공격
|
||||
4,5,Attaque Spéciale
|
||||
4,6,Spezialangriff
|
||||
4,7,Ataque Especial
|
||||
4,8,Attacco Speciale
|
||||
4,9,Special Attack
|
||||
5,1,とくぼう
|
||||
5,3,특수방어
|
||||
5,5,Défense Spéciale
|
||||
5,6,Spezialverteidigung
|
||||
5,7,Defensa Especial
|
||||
5,8,Difesa Speciale
|
||||
5,9,Special Defense
|
||||
6,1,すばやさ
|
||||
6,3,스피드
|
||||
6,5,Vitesse
|
||||
6,6,Initiative
|
||||
6,7,Velocidad
|
||||
6,8,Velocità
|
||||
6,9,Speed
|
||||
7,1,めいちゅう
|
||||
7,3,명중률
|
||||
7,5,Précision
|
||||
7,6,Genauigkeit
|
||||
7,7,Precisión
|
||||
7,8,precisione
|
||||
7,9,accuracy
|
||||
8,1,かいひ
|
||||
8,3,회피율
|
||||
8,5,Esquive
|
||||
8,6,Fluchtwert
|
||||
8,7,Evasión
|
||||
|
|
|
|
@ -126,12 +126,14 @@ type_id,local_language_id,name
|
|||
18,8,Folletto
|
||||
18,9,Fairy
|
||||
10001,1,???
|
||||
10001,3,???
|
||||
10001,5,???
|
||||
10001,6,???
|
||||
10001,7,???
|
||||
10001,8,???
|
||||
10001,9,???
|
||||
10002,1,ダーク
|
||||
10002,3,다크
|
||||
10002,5,Obscur
|
||||
10002,6,Crypto
|
||||
10002,8,Ombra
|
||||
|
|
|
|
@ -1,165 +1,211 @@
|
|||
version_id,local_language_id,name
|
||||
1,1,赤
|
||||
1,3,레드
|
||||
1,5,Rouge
|
||||
1,6,Rot
|
||||
1,7,Rojo
|
||||
1,8,Rossa
|
||||
1,9,Red
|
||||
2,1,緑
|
||||
2,3,블루
|
||||
2,5,Bleu
|
||||
2,6,Blau
|
||||
2,7,Azul
|
||||
2,8,Blu
|
||||
2,9,Blue
|
||||
3,1,ピカチュウ
|
||||
3,3,피카츄
|
||||
3,5,Jaune
|
||||
3,6,Gelb
|
||||
3,7,Amarillo
|
||||
3,8,Gialla
|
||||
3,9,Yellow
|
||||
4,1,金
|
||||
4,3,골드
|
||||
4,5,Or
|
||||
4,6,Gold
|
||||
4,7,Oro
|
||||
4,8,Oro
|
||||
4,9,Gold
|
||||
5,1,銀
|
||||
5,3,실버
|
||||
5,5,Argent
|
||||
5,6,Silber
|
||||
5,7,Plata
|
||||
5,8,Argento
|
||||
5,9,Silver
|
||||
6,1,クリスタル
|
||||
6,3,크리스탈
|
||||
6,5,Cristal
|
||||
6,6,Kristall
|
||||
6,7,Cristal
|
||||
6,8,Cristallo
|
||||
6,9,Crystal
|
||||
7,1,ルビー
|
||||
7,3,루비
|
||||
7,5,Rubis
|
||||
7,6,Rubin
|
||||
7,7,Rubí
|
||||
7,8,Rubino
|
||||
7,9,Ruby
|
||||
8,1,サファイア
|
||||
8,3,사파이어
|
||||
8,5,Saphir
|
||||
8,6,Saphir
|
||||
8,7,Zafiro
|
||||
8,8,Zaffiro
|
||||
8,9,Sapphire
|
||||
9,1,エメラルド
|
||||
9,3,에메랄드
|
||||
9,5,Émeraude
|
||||
9,6,Smaragd
|
||||
9,7,Esmeralda
|
||||
9,8,Smeraldo
|
||||
9,9,Emerald
|
||||
10,1,ファイアレッド
|
||||
10,3,파이어레드
|
||||
10,5,Rouge Feu
|
||||
10,6,Feuerrot
|
||||
10,7,Rojo Fuego
|
||||
10,8,Rosso Fuoco
|
||||
10,9,FireRed
|
||||
11,1,リーフグリーン
|
||||
11,3,리프그린
|
||||
11,5,Vert Feuille
|
||||
11,6,Blattgrün
|
||||
11,7,Verde Hoja
|
||||
11,8,Verde Foglia
|
||||
11,9,LeafGreen
|
||||
12,1,ダイヤモンド
|
||||
12,3,디아루가
|
||||
12,5,Diamant
|
||||
12,6,Diamant
|
||||
12,7,Diamante
|
||||
12,8,Diamante
|
||||
12,9,Diamond
|
||||
13,1,パール
|
||||
13,3,펄기아
|
||||
13,5,Perle
|
||||
13,6,Perl
|
||||
13,7,Perla
|
||||
13,8,Perla
|
||||
13,9,Pearl
|
||||
14,1,プラチナ
|
||||
14,3,기라티나
|
||||
14,5,Platine
|
||||
14,6,Platin
|
||||
14,7,Platino
|
||||
14,8,Platino
|
||||
14,9,Platinum
|
||||
15,1,ハートゴールド
|
||||
15,3,하트골드
|
||||
15,5,Or HeartGold
|
||||
15,6,HeartGold
|
||||
15,7,Oro HeartGold
|
||||
15,8,Oro HeartGold
|
||||
15,9,HeartGold
|
||||
16,1,ソウルシルバー
|
||||
16,3,소울실버
|
||||
16,5,Argent SoulSilver
|
||||
16,6,SoulSilver
|
||||
16,7,Plata SoulSilver
|
||||
16,8,Argento SoulSilver
|
||||
16,9,SoulSilver
|
||||
17,1,ブラック
|
||||
17,3,블랙
|
||||
17,5,Noir
|
||||
17,6,Schwarz
|
||||
17,7,Negro
|
||||
17,8,Nera
|
||||
17,9,Black
|
||||
18,1,ホワイト
|
||||
18,3,화이트
|
||||
18,5,Blanc
|
||||
18,6,Weiß
|
||||
18,7,Blanco
|
||||
18,8,Bianca
|
||||
18,9,White
|
||||
19,1,コロシアム
|
||||
19,3,콜로세움
|
||||
19,5,Colosseum
|
||||
19,6,Colosseum
|
||||
19,7,Colosseum
|
||||
19,8,Colosseum
|
||||
19,9,Colosseum
|
||||
20,1,XD
|
||||
20,3,XD
|
||||
20,5,XD
|
||||
20,6,XD
|
||||
20,7,XD
|
||||
20,8,XD
|
||||
20,9,XD
|
||||
21,1,ブラック2
|
||||
21,3,블랙 2
|
||||
21,5,Noir 2
|
||||
21,6,Schwarz 2
|
||||
21,7,Negro 2
|
||||
21,8,Nera 2
|
||||
21,9,Black 2
|
||||
22,1,ホワイト2
|
||||
22,3,화이트 2
|
||||
22,5,Blanc 2
|
||||
22,6,Weiß 2
|
||||
22,7,Blanco 2
|
||||
22,8,Bianca 2
|
||||
22,9,White 2
|
||||
23,1,X
|
||||
23,3,X
|
||||
23,5,X
|
||||
23,6,X
|
||||
23,7,X
|
||||
23,8,X
|
||||
23,9,X
|
||||
24,1,Y
|
||||
24,3,Y
|
||||
24,5,Y
|
||||
24,6,Y
|
||||
24,7,Y
|
||||
24,8,Y
|
||||
24,9,Y
|
||||
25,1,オメガルビー
|
||||
25,3,오메가루비
|
||||
25,5,Rubis Oméga
|
||||
25,6,Omega Rubin
|
||||
25,7,Rubí Omega
|
||||
25,8,Rubino Omega
|
||||
25,9,Omega Ruby
|
||||
26,1,アルファサファイア
|
||||
26,3,알파사파이어
|
||||
26,5,Saphir Alpha
|
||||
26,6,Alpha Saphir
|
||||
26,7,Zafiro Alfa
|
||||
26,8,Zaffiro Alpha
|
||||
26,9,Alpha Sapphire
|
||||
27,1,サン
|
||||
27,3,썬
|
||||
27,5,Soleil
|
||||
27,6,Sonne
|
||||
27,7,Sol
|
||||
27,8,Sole
|
||||
27,9,Sun
|
||||
28,1,ムーン
|
||||
28,3,문
|
||||
28,5,Lune
|
||||
28,6,Mond
|
||||
28,7,Luna
|
||||
28,8,Luna
|
||||
28,9,Moon
|
||||
29,1,ウルトラサン
|
||||
29,3,울트라썬
|
||||
29,5,Ultra-Soleil
|
||||
29,6,Ultrasonne
|
||||
29,7,Ultrasol
|
||||
29,8,Ultrasole
|
||||
29,9,Ultra Sun
|
||||
30,1,ウルトラムーン
|
||||
30,3,울트라문
|
||||
30,5,Ultra-Lune
|
||||
30,6,Ultramond
|
||||
30,7,Ultraluna
|
||||
30,8,Ultraluna
|
||||
30,9,Ultra Moon
|
||||
|
|
|
|
@ -90,10 +90,10 @@ class Language(TableBase):
|
|||
id = Column(Integer, primary_key=True, nullable=False,
|
||||
doc=u"A numeric ID")
|
||||
iso639 = Column(Unicode(79), nullable=False,
|
||||
doc=u"The two-letter code of the country where this language is spoken. Note that it is not unique.",
|
||||
doc=u"The two-letter code of the language. Note that it is not unique.",
|
||||
info=dict(format='identifier'))
|
||||
iso3166 = Column(Unicode(79), nullable=False,
|
||||
doc=u"The two-letter code of the language. Note that it is not unique.",
|
||||
doc=u"The two-letter code of the country where this language is spoken. Note that it is not unique.",
|
||||
info=dict(format='identifier'))
|
||||
identifier = Column(Unicode(79), nullable=False,
|
||||
doc=u"An identifier",
|
||||
|
@ -850,7 +850,17 @@ create_translation_table('encounter_method_prose', EncounterMethod, 'prose',
|
|||
)
|
||||
|
||||
class EncounterSlot(TableBase):
|
||||
u"""An abstract "slot" within a method, associated with both some set of conditions and a rarity."""
|
||||
u"""An abstract "slot" within a method, associated with both some set of conditions and a rarity.
|
||||
|
||||
"slot" has a very specific meaning:
|
||||
If during gameplay you know sufficient details about the current game state,
|
||||
you can predict which slot (and therefore which pokemon) will spawn.
|
||||
|
||||
There are currently two reasons that "slot" might be empty:
|
||||
1) The slot corresponds to a gift pokemon.
|
||||
2) Red/Blue's Super Rod slots, which don't correspond to in-game slots.
|
||||
See https://github.com/veekun/pokedex/issues/166#issuecomment-220101455
|
||||
"""
|
||||
|
||||
__tablename__ = 'encounter_slots'
|
||||
id = Column(Integer, primary_key=True, nullable=False,
|
||||
|
@ -1761,6 +1771,13 @@ class PokemonDexNumber(TableBase):
|
|||
pokedex_number = Column(Integer, nullable=False,
|
||||
doc=u"Number of the Pokémon in that the Pokédex")
|
||||
|
||||
__table_args__ = (
|
||||
UniqueConstraint(pokedex_id, pokedex_number),
|
||||
UniqueConstraint(pokedex_id, species_id),
|
||||
{},
|
||||
)
|
||||
|
||||
|
||||
class PokemonEggGroup(TableBase):
|
||||
u"""Maps an Egg group to a species; each species belongs to one or two egg groups."""
|
||||
__tablename__ = 'pokemon_egg_groups'
|
||||
|
|
|
@ -377,7 +377,10 @@ def group_by_object(stream):
|
|||
Yields ((class name, object ID), (list of messages)) pairs.
|
||||
"""
|
||||
stream = iter(stream)
|
||||
current = next(stream)
|
||||
try:
|
||||
current = next(stream)
|
||||
except StopIteration:
|
||||
return
|
||||
current_key = current.cls, current.id
|
||||
group = [current]
|
||||
for message in stream:
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import pytest
|
||||
parametrize = pytest.mark.parametrize
|
||||
|
||||
from collections import Counter
|
||||
import re
|
||||
|
||||
from sqlalchemy.orm import aliased, joinedload, lazyload
|
||||
|
@ -28,6 +29,28 @@ def test_encounter_slots(session):
|
|||
# Encounter slots all match the encounters they belong to
|
||||
assert sanity_q.count() == 0
|
||||
|
||||
def test_encounter_regions(session):
|
||||
"""Check that encounter locations match the region of the game they're from.
|
||||
"""
|
||||
|
||||
sanity_q = session.query(tables.Encounter) \
|
||||
.join((tables.Version, tables.Encounter.version)) \
|
||||
.join((tables.VersionGroup, tables.Version.version_group)) \
|
||||
.join((tables.LocationArea, tables.Encounter.location_area)) \
|
||||
.join((tables.Location, tables.LocationArea.location)) \
|
||||
.join((tables.Region, tables.Location.region)) \
|
||||
.filter(~tables.VersionGroup.version_group_regions.any(tables.VersionGroupRegion.region_id == tables.Region.id))
|
||||
|
||||
for e in sanity_q.limit(20):
|
||||
acceptable_regions = " or ".join(r.identifier for r in e.version.version_group.regions)
|
||||
if e.location_area.location.region is not None:
|
||||
print("{e} ({e.pokemon.identifier}, {e.slot.method.identifier}, {e.version.identifier}) is in {e.location_area.location.region.identifier} ({e.location_area.location.identifier}) but should be in {acceptable_regions} ({e.version.identifier})".format(e=e, acceptable_regions=acceptable_regions))
|
||||
else:
|
||||
print("{e} ({e.pokemon.identifier}, {e.slot.method.identifier}, {e.version.identifier}) is in a pseudo-location ({e.location_area.location.identifier}) that is not part of any region, but should be in {acceptable_regions} ({e.version.identifier})".format(e=e, acceptable_regions=acceptable_regions))
|
||||
|
||||
# Encounter regions match the games they belong to
|
||||
assert sanity_q.count() == 0
|
||||
|
||||
@parametrize('cls', tables.mapped_classes)
|
||||
def test_nonzero_autoincrement_ids(session, cls):
|
||||
"""Check that autoincrementing ids don't contain zeroes
|
||||
|
@ -47,7 +70,7 @@ def test_nonzero_autoincrement_ids(session, cls):
|
|||
pytest.fail("No zero id in %s" % cls.__name__)
|
||||
|
||||
def test_unique_form_order(session):
|
||||
"""Check that tone PokemonForm.order value isn't used for more species"""
|
||||
"""Check that one PokemonForm.order value isn't used for more species"""
|
||||
|
||||
species_by_form_order = {}
|
||||
|
||||
|
@ -66,6 +89,22 @@ def test_unique_form_order(session):
|
|||
species_by_form_order[form.order].name,
|
||||
form.species.name))
|
||||
|
||||
def test_pokedex_numbers(session):
|
||||
"""Check that pokedex numbers are contiguous (there are no gaps)"""
|
||||
|
||||
dex_query = session.query(tables.Pokedex).order_by(tables.Pokedex.id)
|
||||
failed = False
|
||||
for dex in dex_query:
|
||||
query = session.query(tables.PokemonDexNumber.pokedex_number).filter_by(pokedex_id=dex.id)
|
||||
numbers = set([x[0] for x in query.all()])
|
||||
for i in range(1, max(numbers)):
|
||||
if i not in numbers:
|
||||
print("number {n} is missing from the {dex.name} pokedex".format(n=i, dex=dex))
|
||||
failed = True
|
||||
|
||||
assert not failed, "missing pokedex numbers"
|
||||
|
||||
|
||||
def test_default_forms(session):
|
||||
"""Check that each pokemon has one default form and each species has one
|
||||
default pokemon."""
|
||||
|
|
308
scripts/add-gift-encounters.py
Normal file
308
scripts/add-gift-encounters.py
Normal file
|
@ -0,0 +1,308 @@
|
|||
#!/usr/bin/env python2
|
||||
"""
|
||||
This is an unmaintained one-shot script, only included in the repo for
|
||||
reference.
|
||||
"""
|
||||
|
||||
from pokedex.db import connect, identifier_from_name
|
||||
from pokedex.db.tables import Encounter, EncounterMethod, EncounterSlot, Language, Location, LocationArea, Pokemon, Version
|
||||
|
||||
session = connect()
|
||||
|
||||
def get_version(name):
|
||||
return session.query(Version).filter_by(identifier=identifier_from_name(name)).one()
|
||||
|
||||
R = get_version(u'red')
|
||||
B = get_version(u'blue')
|
||||
Ye = get_version(u'yellow')
|
||||
G = get_version(u'gold')
|
||||
S = get_version(u'silver')
|
||||
C = get_version(u'crystal')
|
||||
RU = get_version(u'ruby')
|
||||
SA = get_version(u'sapphire')
|
||||
EM = get_version(u'emerald')
|
||||
FR = get_version(u'firered')
|
||||
LG = get_version(u'leafgreen')
|
||||
|
||||
DI = get_version(u'diamond')
|
||||
PE = get_version(u'pearl')
|
||||
PT = get_version(u'platinum')
|
||||
HG = get_version(u'heartgold')
|
||||
SS = get_version(u'soulsilver')
|
||||
|
||||
BL = get_version(u'black')
|
||||
WH = get_version(u'white')
|
||||
B2 = get_version(u'black-2')
|
||||
W2 = get_version(u'white-2')
|
||||
|
||||
X = get_version(u'x')
|
||||
Y = get_version(u'y')
|
||||
OR = get_version(u'omega-ruby')
|
||||
AS = get_version(u'alpha-sapphire')
|
||||
|
||||
def normal_gift_data():
|
||||
return [
|
||||
# Gen I
|
||||
[ u'bulbasaur', [ R, B ], 5, u'pallet-town' ],
|
||||
[ u'charmander', [ R, B ], 5, u'pallet-town' ],
|
||||
[ u'squirtle', [ R, B ], 5, u'pallet-town' ],
|
||||
[ u'pikachu', [ Ye ], 5, u'pallet-town' ],
|
||||
[ u'bulbasaur', [ Ye ], 10, u'cerulean-city' ],
|
||||
[ u'charmander', [ Ye ], 10, u'kanto-route-24' ],
|
||||
[ u'squirtle', [ Ye ], 10, u'vermilion-city' ],
|
||||
|
||||
#[ u'aerodactyl', [ R, B, Ye ], 30, u'pewter-city', u'museum-of-science', u'Pewter Museum of Science' ],
|
||||
[ u'magikarp', [ R, B, Ye ], 5, u'kanto-route-4', u'pokemon-center', u'Pokemon Center' ],
|
||||
#[ u'omanyte', [ R, B, Ye ], 30, u'mt-moon', u'b2f' ],
|
||||
#[ u'kabuto', [ R, B, Ye ], 30, u'mt-moon', u'b2f' ],
|
||||
[ u'hitmonlee', [ R, B, Ye ], 30, u'saffron-city', u'fighting-dojo', u'Fighting Dojo' ],
|
||||
[ u'hitmonchan', [ R, B, Ye ], 30, u'saffron-city', u'fighting-dojo', u'Fighting Dojo' ],
|
||||
[ u'eevee', [ R, B, Ye ], 25, u'celadon-city', u'celadon-mansion', u'Celadon Mansion rooftop' ],
|
||||
[ u'lapras', [ R, B, Ye ], 15, u'saffron-city', u'silph-co-7f', u'Silph Co. 7F' ],
|
||||
|
||||
# Gen II
|
||||
[ u'chikorita', [ G, S, C ], 5, u'new-bark-town' ],
|
||||
[ u'cyndaquil', [ G, S, C ], 5, u'new-bark-town' ],
|
||||
[ u'totodile', [ G, S, C ], 5, u'new-bark-town' ],
|
||||
[ u'spearow', [ G, S, C ], 10, u'goldenrod-city', u'north-gate', u'North Gate' ],
|
||||
[ u'eevee', [ G, S, C ], 20, u'goldenrod-city', u'bills-house', u"Bill's house" ],
|
||||
[ u'shuckle', [ G, S, C ], 15, u'cianwood-city', u'manias-house', u"Mania's house" ],
|
||||
[ u'dratini', [ C ], 15, u'dragons-den' ],
|
||||
[ u'tyrogue', [ G, S, C ], 10, u'mt-mortar', u'b1f' ],
|
||||
|
||||
# Gen III
|
||||
# Note Lileep + Anorith are not listed because they are not *gifts*
|
||||
# They're note quite encounters either
|
||||
# but that's outta scope of gift logic
|
||||
[ u'treecko', [ RU, SA, EM ], 5, u'hoenn-route-101' ],
|
||||
[ u'torchic', [ RU, SA, EM ], 5, u'hoenn-route-101' ],
|
||||
[ u'mudkip' , [ RU, SA, EM ], 5, u'hoenn-route-101' ],
|
||||
[ u'castform', [ RU, SA, EM ], 25, u'hoenn-route-119', u'weather-institute', u'Weather Institute' ],
|
||||
[ u'beldum', [ RU, SA, EM ], 5, u'mossdeep-city', u'stevens-house', u"Steven's house" ],
|
||||
[ u'chikorita', [ EM ], 5, u'littleroot-town' ],
|
||||
[ u'cyndaquil', [ EM ], 5, u'littleroot-town' ],
|
||||
[ u'totodile', [ EM ], 5, u'littleroot-town' ],
|
||||
|
||||
[ u'bulbasaur', [ FR, LG ], 5, u'pallet-town' ],
|
||||
[ u'charmander', [ FR, LG ], 5, u'pallet-town' ],
|
||||
[ u'squirtle', [ FR, LG ], 5, u'pallet-town' ],
|
||||
#[ u'aerodactyl', [ FR, LG ], 5, u'pewter-city', u'museum-of-science' ],
|
||||
[ u'magikarp', [ FR, LG ], 5, u'kanto-route-4', u'pokemon-center' ],
|
||||
#[ u'omanyte', [ FR, LG ], 5, u'mt-moon', u'b2f' ],
|
||||
#[ u'kabuto', [ FR, LG ], 5, u'mt-moon', u'b2f' ],
|
||||
[ u'hitmonlee', [ FR, LG ], 25, u'saffron-city', u'fighting-dojo' ],
|
||||
[ u'hitmonchan', [ FR, LG ], 25, u'saffron-city', u'fighting-dojo' ],
|
||||
[ u'eevee', [ FR, LG ], 25, u'celadon-city', u'celadon-mansion' ],
|
||||
[ u'lapras', [ FR, LG ], 25, u'saffron-city', u'silph-co-7f' ],
|
||||
|
||||
# Gen IV
|
||||
[ u'turtwig', [ DI, PE ], 5, u'lake-verity', u'before-galactic-intervention' ],
|
||||
[ u'chimchar', [ DI, PE ], 5, u'lake-verity', u'before-galactic-intervention' ],
|
||||
[ u'piplup', [ DI, PE ], 5, u'lake-verity', u'before-galactic-intervention' ],
|
||||
[ u'turtwig', [ PT ], 5, u'sinnoh-route-201' ],
|
||||
[ u'chimchar', [ PT ], 5, u'sinnoh-route-201' ],
|
||||
[ u'piplup', [ PT ], 5, u'sinnoh-route-201' ],
|
||||
[ u'eevee', [ DI, PE, ], 5, u'hearthome-city' ],
|
||||
[ u'eevee', [ PT ], 20, u'hearthome-city' ],
|
||||
[ u'porygon', [ PT ], 25, u'veilstone-city' ],
|
||||
|
||||
[ u'chikorita', [ HG, SS ], 5, u'new-bark-town' ],
|
||||
[ u'cyndaquil', [ HG, SS ], 5, u'new-bark-town' ],
|
||||
[ u'totodile', [ HG, SS ], 5, u'new-bark-town' ],
|
||||
[ u'spearow', [ HG, SS ], 20, u'goldenrod-city', u'north-gate' ],
|
||||
[ u'eevee', [ HG, SS ], 5, u'goldenrod-city', u'bills-house' ],
|
||||
[ u'shuckle', [ HG, SS ], 15, u'cianwood-city', u'kirks-house', u"Kirk's house" ],
|
||||
[ u'dratini', [ HG, SS ], 15, u'dragons-den' ],
|
||||
[ u'tyrogue', [ HG, SS ], 10, u'mt-mortar', u'b1f' ],
|
||||
[ u'bulbasaur', [ HG, SS ], 5, u'pallet-town' ],
|
||||
[ u'charmander', [ HG, SS ], 5, u'pallet-town' ],
|
||||
[ u'squirtle', [ HG, SS ], 5, u'pallet-town' ],
|
||||
[ u'treecko', [ HG, SS ], 5, u'saffron-city', u'silph-co-7f' ],
|
||||
[ u'torchic', [ HG, SS ], 5, u'saffron-city', u'silph-co-7f' ],
|
||||
[ u'mudkip' , [ HG, SS ], 5, u'saffron-city', u'silph-co-7f' ],
|
||||
|
||||
# Gen V
|
||||
[ u'snivy', [ BL, WH ], 5, u'nuvema-town' ],
|
||||
[ u'tepig', [ BL, WH ], 5, u'nuvema-town' ],
|
||||
[ u'oshawott', [ BL, WH ], 5, u'nuvema-town' ],
|
||||
[ u'pansage', [ BL, WH ], 10, u'dreamyard' ], # not the basement
|
||||
[ u'pansear', [ BL, WH ], 10, u'dreamyard' ],
|
||||
[ u'panpour', [ BL, WH ], 10, u'dreamyard' ],
|
||||
[ u'zorua', [ BL, WH ], 10, u'castelia-city', u'game-freak-hq-1f', u'Game Freak HQ 1F' ],
|
||||
#[ u'tirtouga', [ BL, WH ], 25, u'relic-castle', u'a' ],
|
||||
#[ u'archen', [ BL, WH ], 25, u'relic-castle', u'a' ],
|
||||
#[ u'omanyte', [ BL, WH ], 25, u'twist-mountain' ],
|
||||
#[ u'kabuto', [ BL, WH ], 25, u'twist-mountain' ],
|
||||
#[ u'aerodactyl', [ BL, WH ], 25, u'twist-mountain' ],
|
||||
#[ u'lileep', [ BL, WH ], 25, u'twist-mountain' ],
|
||||
#[ u'anorith', [ BL, WH ], 25, u'twist-mountain' ],
|
||||
#[ u'cranidos', [ BL, WH ], 25, u'twist-mountain' ],
|
||||
#[ u'shieldon', [ BL, WH ], 25, u'twist-mountain' ],
|
||||
[ u'magikarp', [ BL, WH ], 5, u'marvelous-bridge' ],
|
||||
|
||||
[ u'snivy', [ B2, W2 ], 5, u'aspertia-city' ],
|
||||
[ u'tepig', [ B2, W2 ], 5, u'aspertia-city' ],
|
||||
[ u'oshawott', [ B2, W2 ], 5, u'aspertia-city' ],
|
||||
[ u'zorua', [ B2, W2 ], 25, u'driftveil-city' ],
|
||||
[ u'deerling', [ B2, W2 ], 30, u'unova-route-6', u'weather-institute', u'Weather Institute' ],
|
||||
[ u'eevee', [ B2, W2 ], 10, u'castelia-city' ],
|
||||
#[ u'omanyte', [ B2, W2 ], 25, u'join-avenue' ],
|
||||
#[ u'kabuto', [ B2, W2 ], 25, u'join-avenue' ],
|
||||
#[ u'aerodactyl', [ B2, W2 ], 25, u'join-avenue' ],
|
||||
#[ u'lileep', [ B2, W2 ], 25, u'join-avenue' ],
|
||||
#[ u'anorith', [ B2, W2 ], 25, u'join-avenue' ],
|
||||
#[ u'cranidos', [ B2, W2 ], 25, u'join-avenue' ],
|
||||
#[ u'shieldon', [ B2, W2 ], 25, u'join-avenue' ],
|
||||
#[ u'tirtouga', [ B2, W2 ], 25, u'join-avenue' ],
|
||||
#[ u'archen', [ B2, W2 ], 25, u'join-avenue' ],
|
||||
[ u'magikarp', [ B2, W2 ], 5, u'marvelous-bridge' ],
|
||||
#[ u'tirtouga', [ B2, W2 ], 25, u'nacrene-city', u'museum', u'Nacrene City Museum' ],
|
||||
#[ u'archen', [ B2, W2 ], 25, u'nacrene-city', u'museum'],
|
||||
#[ u'omanyte', [ B2, W2 ], 25, u'twist-mountain' ],
|
||||
#[ u'kabuto', [ B2, W2 ], 25, u'twist-mountain' ],
|
||||
#[ u'aerodactyl', [ B2, W2 ], 25, u'twist-mountain' ],
|
||||
#[ u'lileep', [ B2, W2 ], 25, u'twist-mountain' ],
|
||||
#[ u'anorith', [ B2, W2 ], 25, u'twist-mountain' ],
|
||||
#[ u'cranidos', [ B2, W2 ], 25, u'twist-mountain' ],
|
||||
#[ u'shieldon', [ B2, W2 ], 25, u'twist-mountain' ],
|
||||
# These are shiny...
|
||||
[ u'dratini', [ W2 ], 1, u'floccesy-town' ],
|
||||
[ u'gible', [ B2 ], 1, u'floccesy-town' ],
|
||||
|
||||
# Gen VI
|
||||
[ u'chespin', [ X, Y ], 5, u'aquacorde-town' ],
|
||||
[ u'fennekin', [ X, Y ], 5, u'aquacorde-town' ],
|
||||
[ u'froakie', [ X, Y ], 5, u'aquacorde-town' ],
|
||||
[ u'bulbasaur', [ X, Y ], 10, u'lumiose-city' ],
|
||||
[ u'charmander', [ X, Y ], 10, u'lumiose-city' ],
|
||||
[ u'squirtle', [ X, Y ], 10, u'lumiose-city' ],
|
||||
[ u'tyrunt', [ X, Y ], 20, u'glittering-cave', u'unknown-area-303' ], # 304 means ceiling
|
||||
[ u'amaura', [ X, Y ], 20, u'glittering-cave', u'unknown-area-303' ],
|
||||
[ u'lucario', [ X, Y ], 32, u'tower-of-mastery' ],
|
||||
[ u'lapras', [ X, Y ], 30, u'kalos-route-12' ],
|
||||
|
||||
[ u'treecko', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||
[ u'torchic', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||
[ u'mudkip', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||
# cosplay pikachu is given to you the first time you participate in a contest
|
||||
[ u'pikachu', [ OR, AS ], 20, u'slateport-city', u'contest-hall', u"Contest Hall" ],
|
||||
[ u'pikachu', [ OR, AS ], 20, u'verdanturf-town', u'contest-hall', u"Contest Hall" ],
|
||||
[ u'pikachu', [ OR, AS ], 20, u'fallarbor-town', u'contest-hall', u"Contest Hall" ],
|
||||
[ u'pikachu', [ OR, AS ], 20, u'lilycove-city', u'contest-hall', u"Contest Hall" ],
|
||||
[ u'latios', [ OR ], 30, u'southern-island' ], # eon tickets ignored here - they're not gifts?
|
||||
[ u'latias', [ AS ], 30, u'southern-island' ],
|
||||
[ u'castform', [ OR, AS ], 30, u'hoenn-route-119', u'weather-institute' ],
|
||||
[ u'chikorita', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||
[ u'cyndaquil', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||
[ u'totodile', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||
[ u'snivy', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||
[ u'tepig', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||
[ u'oshawott', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||
[ u'beldum', [ OR, AS ], 1, u'mossdeep-city', u'stevens-house' ],
|
||||
[ u'turtwig', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||
[ u'chimchar', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||
[ u'piplup', [ OR, AS ], 5, u'hoenn-route-101' ],
|
||||
[ u'camerupt', [ OR, AS ], 40, u'battle-resort' ],
|
||||
[ u'sharpedo', [ OR, AS ], 40, u'battle-resort' ],
|
||||
]
|
||||
|
||||
def egg_gift_data():
|
||||
return [
|
||||
[ u'togepi', [ G, S, C ], 5, u'violet-city' ],
|
||||
[ u'pichu', [ C ], 5, u'johto-route-34' ],
|
||||
[ u'cleffa', [ C ], 5, u'johto-route-34' ],
|
||||
[ u'igglybuff', [ C ], 5, u'johto-route-34' ],
|
||||
[ u'tyrogue', [ C ], 5, u'johto-route-34' ],
|
||||
[ u'smoochum', [ C ], 5, u'johto-route-34' ],
|
||||
[ u'elekid', [ C ], 5, u'johto-route-34' ],
|
||||
[ u'magby', [ C ], 5, u'johto-route-34' ],
|
||||
|
||||
[ u'wynaut', [ RU, SA, EM ], 5, u'lavaridge-town' ],
|
||||
[ u'togepi', [ FR, LG ], 5, u'water-labyrinth' ],
|
||||
|
||||
[ u'togepi', [ DI, PE, PT ], 1, u'eterna-city', u'west-gate', u'West Gate' ],
|
||||
[ u'happiny', [ DI, PE, ], 1, u'hearthome-city', u'west-gate', u'West Gate' ],
|
||||
[ u'riolu', [ DI, PE, PT ], 1, u'iron-island', u'b2f-left' ],
|
||||
[ u'togepi', [ HG, SS ], 1, u'violet-city', u'poke-mart', u'Poke Mart' ],
|
||||
[ u'mareep', [ HG, SS ], 1, u'violet-city', u'pokemon-center', u'Pokemon Center' ],
|
||||
[ u'wooper', [ HG, SS ], 1, u'violet-city', u'pokemon-center' ],
|
||||
[ u'slugma', [ HG, SS ], 1, u'violet-city', u'pokemon-center' ],
|
||||
|
||||
[ u'larvesta', [ BL, WH ], 1, u'unova-route-18' ],
|
||||
[ u'happiny', [ B2, W2 ], 1, u'nacrene-city', u'west-gate', u'West Gate' ],
|
||||
[ u'wynaut', [ OR, AS ], 1, u'lavaridge-town' ],
|
||||
[ u'togepi', [ OR, AS ], 1, u'lavaridge-town' ],
|
||||
]
|
||||
|
||||
def record_method_and_gifts(gift_method, gift_data):
|
||||
|
||||
en = session.query(Language).filter_by(identifier=u'en').one()
|
||||
|
||||
for gift_datum in gift_data:
|
||||
pokemon_name = identifier_from_name(gift_datum[0])
|
||||
versions = gift_datum[1]
|
||||
level = identifier_from_name(str(gift_datum[2]))
|
||||
location_name = identifier_from_name(gift_datum[3])
|
||||
area_name = None
|
||||
if len(gift_datum) > 4:
|
||||
area_name = identifier_from_name(gift_datum[4])
|
||||
|
||||
pokemon = session.query(Pokemon ).filter_by(identifier=pokemon_name ).one()
|
||||
location = session.query(Location ).filter_by(identifier=location_name ).one()
|
||||
location_area = session.query(LocationArea).filter_by(identifier=area_name, location_id=location.id).first()
|
||||
# Some of these don't exist yet
|
||||
if not location_area:
|
||||
|
||||
location_area = LocationArea(
|
||||
location_id = location.id,
|
||||
game_index = 0, # cause who knows what this means
|
||||
identifier = area_name
|
||||
)
|
||||
|
||||
area_prose = None
|
||||
if area_name != None:
|
||||
area_prose = gift_datum[5]
|
||||
location_area.name_map[en] = area_prose
|
||||
|
||||
session.add(location_area)
|
||||
session.commit()
|
||||
|
||||
for version in versions:
|
||||
encounter_slot = session.query(EncounterSlot).filter_by(
|
||||
version_group_id = version.version_group_id,
|
||||
encounter_method_id = gift_method.id
|
||||
).first()
|
||||
|
||||
if not encounter_slot:
|
||||
encounter_slot = EncounterSlot(
|
||||
version_group_id = version.version_group_id,
|
||||
encounter_method_id = gift_method.id,
|
||||
# No priority over or under other events/conditions
|
||||
slot = None,
|
||||
# Rarity is meaningless for gifts, but say that it's
|
||||
# 100% to help out code that expects rarity to be defined.
|
||||
rarity = 100,
|
||||
)
|
||||
session.add(encounter_slot)
|
||||
session.commit()
|
||||
|
||||
encounter_info = {
|
||||
'version_id': version.id,
|
||||
'location_area_id': location_area.id,
|
||||
'encounter_slot_id': encounter_slot.id,
|
||||
'pokemon_id': pokemon.id,
|
||||
'min_level': level,
|
||||
'max_level': level
|
||||
}
|
||||
encounter = session.query(Encounter).filter_by(**encounter_info).first()
|
||||
if not encounter:
|
||||
encounter = Encounter(**encounter_info)
|
||||
session.add(encounter)
|
||||
|
||||
session.commit()
|
||||
|
||||
normal_gift_method = session.query(EncounterMethod).filter_by(identifier=u'gift').one()
|
||||
record_method_and_gifts(normal_gift_method, normal_gift_data())
|
||||
|
||||
egg_gift_method = session.query(EncounterMethod).filter_by(identifier=u'gift-egg').one()
|
||||
record_method_and_gifts(egg_gift_method, egg_gift_data())
|
113
scripts/gen-iii-contest-effects.py
Normal file
113
scripts/gen-iii-contest-effects.py
Normal file
|
@ -0,0 +1,113 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
This is an unmaintained one-shot script, only included in the repo for
|
||||
reference.
|
||||
"""
|
||||
|
||||
import struct
|
||||
|
||||
def main():
|
||||
NUM_MOVES = 354
|
||||
with open("pokeruby.gba", 'rb') as f:
|
||||
f.seek(0x3cf594 )
|
||||
data = f.read(8 * (NUM_MOVES + 1))
|
||||
|
||||
|
||||
effects = []
|
||||
combo_id_map = {} # combo_id => move_id
|
||||
combo_pairs = [] # [(combo starter, move id)]
|
||||
|
||||
with open("update_contest_effect_ids.sql", "w") as f:
|
||||
for i in range(NUM_MOVES+1):
|
||||
effect, type, combo_id, *combo_prev = struct.unpack("<BBBBBBBx", data[i*8:(i+1)*8])
|
||||
print(i, idmap[effect], type, combo_id, combo_prev)
|
||||
if i:
|
||||
print("UPDATE moves SET contest_effect_id = %d, contest_type_id = %d WHERE id = %d;" % (idmap[effect], type+1, i), file=f)
|
||||
effects.append(effect)
|
||||
if combo_id:
|
||||
combo_id_map.setdefault(combo_id, []).append(i)
|
||||
for c in combo_prev:
|
||||
combo_pairs.append((c, i))
|
||||
|
||||
move_pairs = []
|
||||
for combo_id, second_move_id in combo_pairs:
|
||||
for id1 in combo_id_map.get(combo_id, ()):
|
||||
move_pairs.append((id1, second_move_id))
|
||||
move_pairs.sort()
|
||||
with open("contest_combos.csv", "w") as f:
|
||||
print("first_move_id,second_move_id", file=f)
|
||||
for first, second in move_pairs:
|
||||
print(first, second, sep=",", file=f)
|
||||
|
||||
|
||||
num_effects = max(effects)+1
|
||||
with open("pokeruby.gba", 'rb') as f:
|
||||
f.seek(0x3d00ac)
|
||||
data = f.read(4 * num_effects)
|
||||
|
||||
with open("contest_effects.csv", "w") as f:
|
||||
print("id,effect_type,appeal,jam", file=f)
|
||||
for i in range(num_effects):
|
||||
if i not in effects:
|
||||
continue
|
||||
effectType, appeal, jam = struct.unpack("<BBBx", data[i*4:(i+1)*4])
|
||||
#print(idmap[i],effectType, appeal//10, jam//10, sep=",")
|
||||
print(idmap[i], appeal//10, jam//10, sep=",", file=f)
|
||||
|
||||
idmap = {
|
||||
0: 1, # CONTEST_EFFECT_HIGHLY_APPEALING
|
||||
1: 3, # CONTEST_EFFECT_USER_MORE_EASILY_STARTLED
|
||||
2: 7, # CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES
|
||||
3: 17, # CONTEST_EFFECT_REPETITION_NOT_BORING
|
||||
4: 16, # CONTEST_EFFECT_AVOID_STARTLE_ONCE
|
||||
5: 15, # CONTEST_EFFECT_AVOID_STARTLE
|
||||
#6: # CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY
|
||||
#7: # CONTEST_EFFECT_USER_LESS_EASILY_STARTLED
|
||||
#8: # CONTEST_EFFECT_STARTLE_FRONT_MON
|
||||
#9: # CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS
|
||||
10: 9, # CONTEST_EFFECT_STARTLE_PREV_MON
|
||||
11: 8, # CONTEST_EFFECT_STARTLE_PREV_MONS
|
||||
12: 4, # CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON
|
||||
13: 5, # CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS
|
||||
#14: # CONTEST_EFFECT_STARTLE_PREV_MON_2
|
||||
#15: # CONTEST_EFFECT_STARTLE_PREV_MONS_2
|
||||
16: 22, # CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION
|
||||
17: 10, # CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION
|
||||
18: 6, # CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN
|
||||
19: 23, # CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL
|
||||
#20: 0, # CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL
|
||||
#21: 0, # CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL
|
||||
#22: 0, # CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL
|
||||
#23: 0, # CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL
|
||||
#24: 0, # CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL
|
||||
#25: # CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS
|
||||
26: 18, # CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS
|
||||
27: 33, # CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS
|
||||
#28: # CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION
|
||||
29: 27, # CONTEST_EFFECT_BETTER_IF_FIRST
|
||||
30: 28, # CONTEST_EFFECT_BETTER_IF_LAST
|
||||
31: 20, # CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES
|
||||
32: 19, # CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE
|
||||
33: 26, # CONTEST_EFFECT_BETTER_WHEN_LATER
|
||||
34: 25, # CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING
|
||||
35: 12, # CONTEST_EFFECT_BETTER_IF_SAME_TYPE
|
||||
#36: # CONTEST_EFFECT_BETTER_IF_DIFF_TYPE
|
||||
37: 2, # CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL
|
||||
38: 32, # CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS
|
||||
39: 29, # CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION
|
||||
40: 30, # CONTEST_EFFECT_NEXT_APPEAL_EARLIER
|
||||
41: 31, # CONTEST_EFFECT_NEXT_APPEAL_LATER
|
||||
#42: # CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER
|
||||
43: 21, # CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER
|
||||
44: 13, # CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST
|
||||
45: 14, # CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS
|
||||
46: 11, # CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED
|
||||
47: 24, # CONTEST_EFFECT_DONT_EXCITE_AUDIENCE
|
||||
}
|
||||
|
||||
from collections import Counter
|
||||
c = Counter(idmap.values())
|
||||
print([v for v in c if c[v] > 1])
|
||||
assert len(idmap) == len(set(idmap.values()))
|
||||
|
||||
main()
|
27
setup.py
27
setup.py
|
@ -1,30 +1,29 @@
|
|||
from setuptools import setup, find_packages
|
||||
|
||||
import sys
|
||||
|
||||
setup(
|
||||
name = 'Pokedex',
|
||||
version = '0.1',
|
||||
zip_safe = False,
|
||||
packages = find_packages(),
|
||||
package_data = {
|
||||
name='Pokedex',
|
||||
version='0.1',
|
||||
zip_safe=False,
|
||||
packages=find_packages(),
|
||||
package_data={
|
||||
'pokedex': ['data/csv/*.csv']
|
||||
},
|
||||
install_requires = [
|
||||
'SQLAlchemy>=0.9.7',
|
||||
install_requires=[
|
||||
'SQLAlchemy>=1.0,<2.0',
|
||||
'whoosh>=2.5,<2.7',
|
||||
'markdown',
|
||||
'construct',
|
||||
'markdown==2.4.1',
|
||||
'construct==2.5.3',
|
||||
'six>=1.9.0',
|
||||
],
|
||||
entry_points = {
|
||||
entry_points={
|
||||
'console_scripts': [
|
||||
'pokedex = pokedex.main:setuptools_entry',
|
||||
],
|
||||
},
|
||||
classifiers = [
|
||||
classifiers=[
|
||||
"Programming Language :: Python :: 2.7",
|
||||
"Programming Language :: Python :: 3.4",
|
||||
"Programming Language :: Python :: 3.5",
|
||||
],
|
||||
"Programming Language :: Python :: 3.7",
|
||||
]
|
||||
)
|
||||
|
|
Loading…
Add table
Reference in a new issue