├── .idea
├── .name
├── scopes
│ └── scope_settings.xml
├── encodings.xml
├── vcs.xml
├── Cao_Christopher_ITP115_Final_Project.iml
├── modules.xml
├── misc.xml
└── workspace.xml
├── Sprites
├── abra.gif
├── arbok.gif
├── ditto.gif
├── doduo.gif
├── eevee.gif
├── ekans.gif
├── gloom.gif
├── golem.gif
├── hypno.gif
├── jynx.gif
├── mew.gif
├── muk.gif
├── onix.gif
├── paras.gif
├── seel.gif
├── white.gif
├── zubat.gif
├── chansey.gif
├── cubone.gif
├── dewgong.gif
├── diglett.gif
├── dodrio.gif
├── dratini.gif
├── drowzee.gif
├── dugtrio.gif
├── fearow.gif
├── flareon.gif
├── gengar.gif
├── geodude.gif
├── ghastly.gif
├── golbat.gif
├── goldeen.gif
├── golduck.gif
├── grimer.gif
├── haunter.gif
├── horsea.gif
├── ivysaur.gif
├── jolteon.gif
├── kabuto.gif
├── kadabra.gif
├── kakuna.gif
├── kingler.gif
├── koffing.gif
├── krabby.gif
├── lapras.gif
├── machamp.gif
├── machoke.gif
├── machop.gif
├── magmar.gif
├── mankey.gif
├── marowak.gif
├── meowth.gif
├── metapod.gif
├── mewtwo.gif
├── moltres.gif
├── nidoran.gif
├── oddish.gif
├── omanyte.gif
├── omastar.gif
├── persian.gif
├── pidgeot.gif
├── pidgey.gif
├── pikachu.gif
├── pinsir.gif
├── poliwag.gif
├── ponyta.gif
├── porygon.gif
├── psyduck.gif
├── raichu.gif
├── rattata.gif
├── rhydon.gif
├── rhyhorn.gif
├── scyther.gif
├── seadra.gif
├── seaking.gif
├── slowbro.gif
├── snorlax.gif
├── spearow.gif
├── starmie.gif
├── staryu.gif
├── tangela.gif
├── tauros.gif
├── venonat.gif
├── voltorb.gif
├── vulpix.gif
├── weedle.gif
├── weezing.gif
├── zapdos.gif
├── aerodactyl.gif
├── alakazam.gif
├── arcanine.gif
├── articuno.gif
├── beedrill.gif
├── bellsprout.gif
├── blastoise.gif
├── bulbasaur.gif
├── butterfree.gif
├── caterpie.gif
├── charizard.gif
├── charmander.gif
├── charmeleon.gif
├── clefable.gif
├── clefairy.gif
├── cloyster.gif
├── dragonair.gif
├── dragonite.gif
├── electabuzz.gif
├── electrode.gif
├── exeggcute.gif
├── exeggutor.gif
├── farfetch'd.gif
├── graveler.gif
├── growlithe.gif
├── gyarados.gif
├── hitmonchan.gif
├── hitmonlee.gif
├── jigglypuff.gif
├── kabutops.gif
├── kangaskhan.gif
├── lickitung.gif
├── magikarp.gif
├── magnemite.gif
├── magneton.gif
├── mr. mime.gif
├── nidoking.gif
├── nidoqueen.gif
├── nidorina.gif
├── nidorino.gif
├── ninetales.gif
├── parasect.gif
├── pidgeotto.gif
├── poliwhirl.gif
├── poliwrath.gif
├── primeape.gif
├── rapidash.gif
├── raticate.gif
├── sandshrew.gif
├── sandslash.gif
├── shellder.gif
├── slowpoke.gif
├── squirtle.gif
├── tentacool.gif
├── tentacruel.gif
├── vaporeon.gif
├── venomoth.gif
├── venusaur.gif
├── victreebel.gif
├── vileplume.gif
├── wartortle.gif
├── weepinbell.gif
└── wigglytuff.gif
├── __pycache__
├── Move.cpython-34.pyc
├── Attack.cpython-34.pyc
├── Pokedex.cpython-34.pyc
├── Pokemon.cpython-34.pyc
└── Application.cpython-34.pyc
├── Main.py
├── Pokedex.py
├── Type Advantages.csv
├── Move.py
├── README.md
├── readme.txt.rtf
├── Attack.py
├── Pokemon.py
├── Kanto Pokemon Spreadsheet.csv
├── Application.py
└── Pokemon Moves.csv
/.idea/.name:
--------------------------------------------------------------------------------
1 | Cao_Christopher_ITP115_Final_Project
--------------------------------------------------------------------------------
/Sprites/abra.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/abra.gif
--------------------------------------------------------------------------------
/Sprites/arbok.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/arbok.gif
--------------------------------------------------------------------------------
/Sprites/ditto.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/ditto.gif
--------------------------------------------------------------------------------
/Sprites/doduo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/doduo.gif
--------------------------------------------------------------------------------
/Sprites/eevee.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/eevee.gif
--------------------------------------------------------------------------------
/Sprites/ekans.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/ekans.gif
--------------------------------------------------------------------------------
/Sprites/gloom.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/gloom.gif
--------------------------------------------------------------------------------
/Sprites/golem.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/golem.gif
--------------------------------------------------------------------------------
/Sprites/hypno.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/hypno.gif
--------------------------------------------------------------------------------
/Sprites/jynx.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/jynx.gif
--------------------------------------------------------------------------------
/Sprites/mew.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/mew.gif
--------------------------------------------------------------------------------
/Sprites/muk.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/muk.gif
--------------------------------------------------------------------------------
/Sprites/onix.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/onix.gif
--------------------------------------------------------------------------------
/Sprites/paras.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/paras.gif
--------------------------------------------------------------------------------
/Sprites/seel.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/seel.gif
--------------------------------------------------------------------------------
/Sprites/white.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/white.gif
--------------------------------------------------------------------------------
/Sprites/zubat.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/zubat.gif
--------------------------------------------------------------------------------
/Sprites/chansey.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/chansey.gif
--------------------------------------------------------------------------------
/Sprites/cubone.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/cubone.gif
--------------------------------------------------------------------------------
/Sprites/dewgong.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/dewgong.gif
--------------------------------------------------------------------------------
/Sprites/diglett.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/diglett.gif
--------------------------------------------------------------------------------
/Sprites/dodrio.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/dodrio.gif
--------------------------------------------------------------------------------
/Sprites/dratini.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/dratini.gif
--------------------------------------------------------------------------------
/Sprites/drowzee.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/drowzee.gif
--------------------------------------------------------------------------------
/Sprites/dugtrio.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/dugtrio.gif
--------------------------------------------------------------------------------
/Sprites/fearow.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/fearow.gif
--------------------------------------------------------------------------------
/Sprites/flareon.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/flareon.gif
--------------------------------------------------------------------------------
/Sprites/gengar.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/gengar.gif
--------------------------------------------------------------------------------
/Sprites/geodude.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/geodude.gif
--------------------------------------------------------------------------------
/Sprites/ghastly.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/ghastly.gif
--------------------------------------------------------------------------------
/Sprites/golbat.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/golbat.gif
--------------------------------------------------------------------------------
/Sprites/goldeen.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/goldeen.gif
--------------------------------------------------------------------------------
/Sprites/golduck.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/golduck.gif
--------------------------------------------------------------------------------
/Sprites/grimer.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/grimer.gif
--------------------------------------------------------------------------------
/Sprites/haunter.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/haunter.gif
--------------------------------------------------------------------------------
/Sprites/horsea.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/horsea.gif
--------------------------------------------------------------------------------
/Sprites/ivysaur.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/ivysaur.gif
--------------------------------------------------------------------------------
/Sprites/jolteon.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/jolteon.gif
--------------------------------------------------------------------------------
/Sprites/kabuto.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/kabuto.gif
--------------------------------------------------------------------------------
/Sprites/kadabra.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/kadabra.gif
--------------------------------------------------------------------------------
/Sprites/kakuna.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/kakuna.gif
--------------------------------------------------------------------------------
/Sprites/kingler.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/kingler.gif
--------------------------------------------------------------------------------
/Sprites/koffing.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/koffing.gif
--------------------------------------------------------------------------------
/Sprites/krabby.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/krabby.gif
--------------------------------------------------------------------------------
/Sprites/lapras.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/lapras.gif
--------------------------------------------------------------------------------
/Sprites/machamp.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/machamp.gif
--------------------------------------------------------------------------------
/Sprites/machoke.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/machoke.gif
--------------------------------------------------------------------------------
/Sprites/machop.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/machop.gif
--------------------------------------------------------------------------------
/Sprites/magmar.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/magmar.gif
--------------------------------------------------------------------------------
/Sprites/mankey.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/mankey.gif
--------------------------------------------------------------------------------
/Sprites/marowak.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/marowak.gif
--------------------------------------------------------------------------------
/Sprites/meowth.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/meowth.gif
--------------------------------------------------------------------------------
/Sprites/metapod.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/metapod.gif
--------------------------------------------------------------------------------
/Sprites/mewtwo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/mewtwo.gif
--------------------------------------------------------------------------------
/Sprites/moltres.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/moltres.gif
--------------------------------------------------------------------------------
/Sprites/nidoran.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/nidoran.gif
--------------------------------------------------------------------------------
/Sprites/oddish.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/oddish.gif
--------------------------------------------------------------------------------
/Sprites/omanyte.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/omanyte.gif
--------------------------------------------------------------------------------
/Sprites/omastar.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/omastar.gif
--------------------------------------------------------------------------------
/Sprites/persian.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/persian.gif
--------------------------------------------------------------------------------
/Sprites/pidgeot.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/pidgeot.gif
--------------------------------------------------------------------------------
/Sprites/pidgey.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/pidgey.gif
--------------------------------------------------------------------------------
/Sprites/pikachu.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/pikachu.gif
--------------------------------------------------------------------------------
/Sprites/pinsir.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/pinsir.gif
--------------------------------------------------------------------------------
/Sprites/poliwag.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/poliwag.gif
--------------------------------------------------------------------------------
/Sprites/ponyta.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/ponyta.gif
--------------------------------------------------------------------------------
/Sprites/porygon.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/porygon.gif
--------------------------------------------------------------------------------
/Sprites/psyduck.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/psyduck.gif
--------------------------------------------------------------------------------
/Sprites/raichu.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/raichu.gif
--------------------------------------------------------------------------------
/Sprites/rattata.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/rattata.gif
--------------------------------------------------------------------------------
/Sprites/rhydon.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/rhydon.gif
--------------------------------------------------------------------------------
/Sprites/rhyhorn.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/rhyhorn.gif
--------------------------------------------------------------------------------
/Sprites/scyther.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/scyther.gif
--------------------------------------------------------------------------------
/Sprites/seadra.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/seadra.gif
--------------------------------------------------------------------------------
/Sprites/seaking.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/seaking.gif
--------------------------------------------------------------------------------
/Sprites/slowbro.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/slowbro.gif
--------------------------------------------------------------------------------
/Sprites/snorlax.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/snorlax.gif
--------------------------------------------------------------------------------
/Sprites/spearow.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/spearow.gif
--------------------------------------------------------------------------------
/Sprites/starmie.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/starmie.gif
--------------------------------------------------------------------------------
/Sprites/staryu.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/staryu.gif
--------------------------------------------------------------------------------
/Sprites/tangela.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/tangela.gif
--------------------------------------------------------------------------------
/Sprites/tauros.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/tauros.gif
--------------------------------------------------------------------------------
/Sprites/venonat.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/venonat.gif
--------------------------------------------------------------------------------
/Sprites/voltorb.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/voltorb.gif
--------------------------------------------------------------------------------
/Sprites/vulpix.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/vulpix.gif
--------------------------------------------------------------------------------
/Sprites/weedle.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/weedle.gif
--------------------------------------------------------------------------------
/Sprites/weezing.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/weezing.gif
--------------------------------------------------------------------------------
/Sprites/zapdos.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/zapdos.gif
--------------------------------------------------------------------------------
/Sprites/aerodactyl.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/aerodactyl.gif
--------------------------------------------------------------------------------
/Sprites/alakazam.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/alakazam.gif
--------------------------------------------------------------------------------
/Sprites/arcanine.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/arcanine.gif
--------------------------------------------------------------------------------
/Sprites/articuno.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/articuno.gif
--------------------------------------------------------------------------------
/Sprites/beedrill.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/beedrill.gif
--------------------------------------------------------------------------------
/Sprites/bellsprout.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/bellsprout.gif
--------------------------------------------------------------------------------
/Sprites/blastoise.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/blastoise.gif
--------------------------------------------------------------------------------
/Sprites/bulbasaur.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/bulbasaur.gif
--------------------------------------------------------------------------------
/Sprites/butterfree.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/butterfree.gif
--------------------------------------------------------------------------------
/Sprites/caterpie.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/caterpie.gif
--------------------------------------------------------------------------------
/Sprites/charizard.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/charizard.gif
--------------------------------------------------------------------------------
/Sprites/charmander.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/charmander.gif
--------------------------------------------------------------------------------
/Sprites/charmeleon.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/charmeleon.gif
--------------------------------------------------------------------------------
/Sprites/clefable.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/clefable.gif
--------------------------------------------------------------------------------
/Sprites/clefairy.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/clefairy.gif
--------------------------------------------------------------------------------
/Sprites/cloyster.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/cloyster.gif
--------------------------------------------------------------------------------
/Sprites/dragonair.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/dragonair.gif
--------------------------------------------------------------------------------
/Sprites/dragonite.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/dragonite.gif
--------------------------------------------------------------------------------
/Sprites/electabuzz.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/electabuzz.gif
--------------------------------------------------------------------------------
/Sprites/electrode.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/electrode.gif
--------------------------------------------------------------------------------
/Sprites/exeggcute.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/exeggcute.gif
--------------------------------------------------------------------------------
/Sprites/exeggutor.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/exeggutor.gif
--------------------------------------------------------------------------------
/Sprites/farfetch'd.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/farfetch'd.gif
--------------------------------------------------------------------------------
/Sprites/graveler.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/graveler.gif
--------------------------------------------------------------------------------
/Sprites/growlithe.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/growlithe.gif
--------------------------------------------------------------------------------
/Sprites/gyarados.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/gyarados.gif
--------------------------------------------------------------------------------
/Sprites/hitmonchan.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/hitmonchan.gif
--------------------------------------------------------------------------------
/Sprites/hitmonlee.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/hitmonlee.gif
--------------------------------------------------------------------------------
/Sprites/jigglypuff.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/jigglypuff.gif
--------------------------------------------------------------------------------
/Sprites/kabutops.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/kabutops.gif
--------------------------------------------------------------------------------
/Sprites/kangaskhan.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/kangaskhan.gif
--------------------------------------------------------------------------------
/Sprites/lickitung.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/lickitung.gif
--------------------------------------------------------------------------------
/Sprites/magikarp.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/magikarp.gif
--------------------------------------------------------------------------------
/Sprites/magnemite.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/magnemite.gif
--------------------------------------------------------------------------------
/Sprites/magneton.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/magneton.gif
--------------------------------------------------------------------------------
/Sprites/mr. mime.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/mr. mime.gif
--------------------------------------------------------------------------------
/Sprites/nidoking.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/nidoking.gif
--------------------------------------------------------------------------------
/Sprites/nidoqueen.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/nidoqueen.gif
--------------------------------------------------------------------------------
/Sprites/nidorina.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/nidorina.gif
--------------------------------------------------------------------------------
/Sprites/nidorino.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/nidorino.gif
--------------------------------------------------------------------------------
/Sprites/ninetales.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/ninetales.gif
--------------------------------------------------------------------------------
/Sprites/parasect.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/parasect.gif
--------------------------------------------------------------------------------
/Sprites/pidgeotto.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/pidgeotto.gif
--------------------------------------------------------------------------------
/Sprites/poliwhirl.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/poliwhirl.gif
--------------------------------------------------------------------------------
/Sprites/poliwrath.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/poliwrath.gif
--------------------------------------------------------------------------------
/Sprites/primeape.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/primeape.gif
--------------------------------------------------------------------------------
/Sprites/rapidash.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/rapidash.gif
--------------------------------------------------------------------------------
/Sprites/raticate.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/raticate.gif
--------------------------------------------------------------------------------
/Sprites/sandshrew.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/sandshrew.gif
--------------------------------------------------------------------------------
/Sprites/sandslash.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/sandslash.gif
--------------------------------------------------------------------------------
/Sprites/shellder.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/shellder.gif
--------------------------------------------------------------------------------
/Sprites/slowpoke.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/slowpoke.gif
--------------------------------------------------------------------------------
/Sprites/squirtle.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/squirtle.gif
--------------------------------------------------------------------------------
/Sprites/tentacool.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/tentacool.gif
--------------------------------------------------------------------------------
/Sprites/tentacruel.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/tentacruel.gif
--------------------------------------------------------------------------------
/Sprites/vaporeon.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/vaporeon.gif
--------------------------------------------------------------------------------
/Sprites/venomoth.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/venomoth.gif
--------------------------------------------------------------------------------
/Sprites/venusaur.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/venusaur.gif
--------------------------------------------------------------------------------
/Sprites/victreebel.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/victreebel.gif
--------------------------------------------------------------------------------
/Sprites/vileplume.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/vileplume.gif
--------------------------------------------------------------------------------
/Sprites/wartortle.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/wartortle.gif
--------------------------------------------------------------------------------
/Sprites/weepinbell.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/weepinbell.gif
--------------------------------------------------------------------------------
/Sprites/wigglytuff.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/Sprites/wigglytuff.gif
--------------------------------------------------------------------------------
/__pycache__/Move.cpython-34.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/__pycache__/Move.cpython-34.pyc
--------------------------------------------------------------------------------
/__pycache__/Attack.cpython-34.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/__pycache__/Attack.cpython-34.pyc
--------------------------------------------------------------------------------
/__pycache__/Pokedex.cpython-34.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/__pycache__/Pokedex.cpython-34.pyc
--------------------------------------------------------------------------------
/__pycache__/Pokemon.cpython-34.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/__pycache__/Pokemon.cpython-34.pyc
--------------------------------------------------------------------------------
/__pycache__/Application.cpython-34.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/christopher-cao/Pokemon-Simulator-in-Python/HEAD/__pycache__/Application.cpython-34.pyc
--------------------------------------------------------------------------------
/.idea/scopes/scope_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Main.py:
--------------------------------------------------------------------------------
1 | from tkinter import *
2 | from Application import Application
3 |
4 | # Creating a window from the application class
5 | def main():
6 | root = Tk()
7 | root.title("Pokemon Battle")
8 | root.geometry("670x500")
9 |
10 | app = Application(root)
11 | root.mainloop()
12 |
13 | main()
--------------------------------------------------------------------------------
/.idea/Cao_Christopher_ITP115_Final_Project.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Pokedex.py:
--------------------------------------------------------------------------------
1 | # This file reads through the Pokemon spreadsheet, then creates a list of all the Pokemon names called "pokedex"
2 | # "Pokedex" is used later to make sure user-selected Pokemon are actually in the spreadsheet
3 |
4 | pokedex = []
5 | fin = open("Kanto Pokemon Spreadsheet.csv", 'r')
6 | pokemonDictionary = {}
7 |
8 | # Creating a dictionary with each Pokemon's name as a key
9 | for line in fin:
10 | line = line.strip()
11 | pokeList = line.split(",")
12 | pokemonDictionary[pokeList[1]] = pokeList
13 | fin.close()
14 |
15 | # Taking the keys from above, turning them into a list, and sorting them
16 | for key in pokemonDictionary:
17 | pokedex.append(pokemonDictionary[key][1].lower())
18 | pokedex.sort()
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/Type Advantages.csv:
--------------------------------------------------------------------------------
1 | Key,Attack Type,Defense Type,Multiplier
1,Fire,Grass,2
2,Fire,Water,0.5
3,Fire,Fire,0.5
4,Fire,Ice,2
5,Fire,Bug,2
6,Fire,Rock,0.5
7,Fire,Dragon,0.5
8,Fire,Steel,2
9,Normal,Rock,0.5
10,Normal,Ghost,0
11,Normal,Steel,0.5
12,Water,Fire,2
13,Water,Water,0.5
14,Water,Grass,0.5
15,Water,Ground,2
16,Water,Rock,2
17,Water,Dragon,0.5
18,Electric,Water,2
19,Electric,Electric,0.5
20,Electric,Grass,0.5
21,Electric,Ground,0
22,Electric,Flying,2
23,Electric,Dragon,0.5
24,Grass,Fire,0.5
25,Grass,Water,2
26,Grass,Grass,0.5
27,Grass,Poison,0.5
28,Grass,Ground,2
29,Grass,Flying,0.5
30,Grass,Bug,0.5
31,Grass,Rock,2
32,Grass,Dragon,0.5
33,Grass,Steel,0.5
34,Ice,Fire,0.5
35,Ice,Water,0.5
36,Ice,Grass,2
37,Ice,Ice,0.5
38,Ice,Ground,2
39,Ice,Flying,2
40,Ice,Dragon,2
41,Ice,Steel,0.5
42,Fighting,Normal,2
43,Fighting,Ice,2
44,Fighting,Poison,0.5
45,Fighting,Flying,0.5
46,Fighting,Psychic,0.5
47,Fighting,Bug,0.5
48,Fighting,Rock,2
49,Fighting,Ghost,0
50,Fighting,Dark,2
51,Fighting,Steel,2
52,Poison,Grass,2
53,Poison,Poison,0.5
54,Poison,Ground,0.5
55,Poison,Rock,0.5
56,Poison,Ghost,0.5
57,Poison,Steel,0
58,Ground,Fire,2
59,Ground,Electric,2
60,Ground,Grass,0.5
61,Ground,Poison,2
62,Ground,Flying,0
63,Ground,Bug,0.5
64,Ground,Rock,2
65,Ground,Steel,2
66,Flying,Electric,0.5
67,Flying,Grass,2
68,Flying,Fighting,2
69,Flying,Bug,2
70,Flying,Rock,0.5
71,Flying,Steel,0.5
72,Psychic,Fighting,2
73,Psychic,Poison,2
74,Psychic,Psychic,0.5
75,Psychic,Dark,0
76,Psychic,Steel,0.5
77,Bug,Fire,0.5
78,Bug,Grass,2
79,Bug,Fighting,0.5
80,Bug,Poison,0.5
81,Bug,Flying,0.5
82,Bug,Psychic,2
83,Bug,Ghost,0.5
84,Bug,Dark,2
85,Bug,Steel,0.5
86,Rock,Fire,2
87,Rock,Ice,2
88,Rock,Fighting,0.5
89,Rock,Ground,0.5
90,Rock,Flying,2
91,Rock,Bug,2
92,Rock,Steel,0.5
93,Ghost,Normal,0
94,Ghost,Psychic,2
95,Ghost,Ghost,2
96,Ghost,Dark,0.5
97,Ghost,Steel,0.5
98,Dragon,Dragon,2
99,Dragon,Steel,0.5
100,Dark,Fighting,0.5
101,Dark,Psychic,2
102,Dark,Ghost,2
103,Dark,Dark,0.5
104,Dark,Steel,0.5
105,Steel,Fire,0.5
106,Steel,Water,0.5
107,Steel,Electric,0.5
108,Steel,Ice,2
109,Steel,Rock,2
110,Steel,Steel,0.5
--------------------------------------------------------------------------------
/Move.py:
--------------------------------------------------------------------------------
1 | class Move(object):
2 | MOVES_DICTIONARY = {}
3 | def __init__(self, move):
4 | moveInfo = []
5 | # Only reading through the file if no information is stored in the Moves Dictionary
6 | if len(Move.MOVES_DICTIONARY) == 0:
7 | fin = open("Pokemon Moves.csv", 'r')
8 | for line in fin:
9 | line = line.strip()
10 | moveList = line.split(",")
11 | Move.MOVES_DICTIONARY[moveList[1]] = moveList # The name of the move is the key while the rest of the
12 | # list is the value
13 |
14 | fin.close()
15 |
16 | # Finding the matching key in the dictionary, then assigning the list to a variable called moveInfo
17 | for key in Move.MOVES_DICTIONARY:
18 | if key.lower() == move.lower():
19 | moveInfo = Move.MOVES_DICTIONARY[key]
20 |
21 |
22 | # ATTRIBUTES
23 | # ID info
24 | self.moveInfo = moveInfo
25 | self.id = moveInfo[0] # Move's number id
26 | self.name = moveInfo[1] # Move's name
27 |
28 | # Description
29 | self.description = moveInfo[2] # Move description
30 | self.type = moveInfo[3] # Move type
31 | self.kind = moveInfo[4] # Can be special, physical, or stat-changing
32 |
33 | # For in-battle calculations
34 | self.power = int(moveInfo[5]) # Move's base damage
35 | self.accuracy = moveInfo[6]
36 | self.pp = int(moveInfo[7])
37 |
38 | # METHODS
39 | # str method
40 | def __str__(self):
41 | msg = self.name + " " + str(self.power)
42 | return msg
43 |
44 |
45 | # GET Methods
46 | def getID(self):
47 | return self.id
48 |
49 | def getName(self):
50 | return self.name
51 |
52 | def getDescription(self):
53 | return self.description
54 |
55 | def getType(self):
56 | return self.type
57 |
58 | def getKind(self):
59 | return self.kind
60 |
61 | def getPower(self):
62 | return self.power
63 |
64 | def getAccuracy(self):
65 | return self.accuracy
66 |
67 | def getPP(self):
68 | return self.pp
69 |
70 | # SET Methods
71 | def setName(self, name):
72 | self.name = name
73 |
74 | def setType(self, type):
75 | self.type = type
76 |
77 | def setPower(self, power):
78 | self.power = power
79 |
80 | def setAccuracy(self, accuracy):
81 | self.accuracy = accuracy
82 |
83 | def setPP(self, pp):
84 | self.pp = pp
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Pokemon Battle Simulator
2 |
3 | Christopher Cao
4 | ITP 115
5 |
6 | OVERVIEW
7 | This program is a simple Pokemon battle simulator using the 150 Pokemon from the first generation of Pokemon games.
8 |
9 | Running the Program
10 | Make sure all python files, csv’s, and image files are in the same directory. This includes: Application.py, Attack.py, Kanto Pokemon Spreadsheet.csv, Main.py, Move.py, Poked.py, Pokemon Moves.csv, Pokemon.py, and Type Advantages.csv.
11 |
12 | Run the program by running Main.py.
13 |
14 | HOW THE PROGRAM WORKS
15 | Begin the program by entering Pokemon names into the entry boxes at the top of the window. The user can press the “See All Pokemon” button to print a list of Pokemon to the text box in the middle of the window.
16 |
17 | This button is connected to a function that reads through the “Kanto Pokemon Spreadsheet.csv” file and extracts all the Pokemon names, which are then placed into a list called “pokedex.” It then prints this list to the text box.
18 |
19 | After typing in both Pokemon, the user should press “Lock In.” This button checks the Pokemon entries for errors and enables the “Begin Battle” button. If any of the entries are not in the “pokedex”, it will ask the user to re-enter their choices and double-check for any spelling errors. If both entries are valid, it will enable the “Begin Battle” button and prevent the user from changing their entries.
20 |
21 | Then the user should press the “Begin Battle” button. This button begins the battle and enables the user to input moves for one of the Pokemon. It decides which Pokemon to enable based on the Pokemon’s speed stat (Pokemon.battleSpeed) using an “if” statement. The Pokemon with the higher speed stat will be enabled first.
22 |
23 | After the user presses “Begin Battle,” the game loop begins. For whichever Pokemon has been enabled first, the user should type in a move from the provided move list into the respective entry field and press the “Select Move” button. If the user-selected move is not in the Pokemon’s moveset, nothing will happen when the user presses the button. If the user-selected move is in the Pokemon’s moveset, it will run the user-inputted string through the attack() function. For example, if the user had Charizard use “Fire Punch” on Blastoise, the attack function would read: attack(“Fire Punch”, Charizard, Blastoise). This attack function then returns a string indicating which move was used, how much HP the opposing Pokemon lost, and the move’s effective. It will then enable the move entry and button for the other Pokemon, while disabling the current Pokemon’s move entry field.
24 |
25 | The other “Select Move” button does the same thing as the first, just for the opposite Pokemon. This loop between the two selectMove() methods continues until one of the Pokemon faints, after which it will print “(Pokemon Name) fainted” to the text box. The program uses an if statement along with the isAlive() method for the Pokemon class to check if one of the Pokemon has fainted. If this method returns “True”, it will disable all buttons and entries EXCEPT for the reset button.
26 |
27 | If the user wants to play again, they should press the “Restart” button. This button completely clears all data from the program. It resets the Pokemon objects and sprites, deletes all text from the window, and only enables the Pokemon entry boxes, the “See All Pokemon” and “Lock In” buttons, just like at the beginning of the program.
28 |
29 | OVERVIEW OF POKEMON BATTLE MECHANICS
30 | Pokemon battles work on a turn-based system. One turn consists of one Pokemon attacking and then the other Pokemon attacking back. There are two different types of moves this program uses: those that deal damage, and those that alter stats. For damage-dealing moves, the damage is calculated using the damage formula: (((2 x Level + 10)/250) x (Attack/Defense) x Move Base Damage + 2) x Modifier). This program calculates all damage as if all Pokemon are level 50.
31 |
32 | The modifier for the damage depends on typing of the move and Pokemon. For example, Fire type moves are “super effective” against Grass type Pokemon. In this situation, the modifier for the damage would be 2 and the original damage would be doubled. Conversely, Grass type moves are “not very effective” against Fire type Pokemon, so the modifier for the damage is 0.5. Moves can also not affect other Pokemon. For example, Ground type moves are not effective against Flying type Pokemon, so the modifier for the damage is 0, making the damage 0. This program accounts for type effectiveness by reading through the “Type Advantages.csv” file.
33 |
34 | There are also stat-changing moves. For example, if a move lowers the opponent’s Attack stat, the damage of the opponent’s moves would decrease. If a move lowers the opponent’s Defense stat, the damage of your Pokemon’s moves would increase. Moves can also increase the user’s stats. Also, moves can increase any of the user Pokemon’s stats, such as attack or defense. In this program, for non-damaging moves, I use a code in the “Pokemon Moves.csv” file to indicate which stat to alter. For example “a+” means raise the user’s attack stage while “a-“ means lower the opponent’s attack stage.
35 |
36 | At the beginning of a battle, all of a Pokemon’s stat stages are 0. Depending on different moves used, this stat stage will change, changing this stat for the duration of the battle. For example, if a Pokemon’s attack stage is +1, then the new in-battle attack (Pokemon.battleAttack) is multiplied by 3/2. Conversely, if a Pokemon’s attack stage is -1, then the new in-battle attack is multiple by 2/3. This process continues until the stat stage reaches +/- 6. This program takes these stat stages into account using a function called statMod() in the Attack.py file.
37 |
38 | This program tries to stay as true to the Pokemon games as possible, so all calculations of move damage, base stats, in-battle stats, and etc. are replicated from the actual Pokemon games. For more information about Pokemon battle mechanics, please visit:
39 | http://bulbapedia.bulbagarden.net/wiki/Damage#Damage_formula
40 | http://bulbapedia.bulbagarden.net/wiki/Stats
41 |
42 | Please note that there are several aspects of Pokemon battles that this program does not take into consideration, such as move accuracy, Pokemon nature, and move power points.
43 |
--------------------------------------------------------------------------------
/readme.txt.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\ansicpg1252\cocoartf1343\cocoasubrtf160
2 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
3 | {\colortbl;\red255\green255\blue255;}
4 | \margl1440\margr1440\vieww25140\viewh13300\viewkind0
5 | \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural
6 |
7 | \f0\b\fs28 \cf0 Pokemon Battle Simulator
8 | \b0\fs24 \
9 | \'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\
10 | Christopher Cao \
11 | ITP 115 \
12 | \'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\
13 |
14 | \b\fs28 Overview
15 | \b0\fs24 \
16 | This program is a simple Pokemon battle simulator using only Pokemon from the first generation of Pokemon games. \
17 | \
18 |
19 | \b\fs28 Running the Program
20 | \b0\fs24 \
21 | Make sure all python files, csv\'92s, and image files are in the same directory. This includes: Application.py, Attack.py, Kanto Pokemon Spreadsheet.csv, Main.py, Move.py, Poked.py, Pokemon Moves.csv, Pokemon.py, and Type Advantages.csv. \
22 | \
23 | Run the program by running Main.py. \
24 | \'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\
25 |
26 | \b\fs28 How the Program Works
27 | \b0\fs24 \
28 |
29 | \b Begin the program by entering Pokemon names into the entry boxes at the top of the window
30 | \b0 . The user can press the \'93See All Pokemon\'94 button to print a list of Pokemon to the text box in the middle of the window. \
31 | \
32 | This button is connected to a function that reads through the \'93Kanto Pokemon Spreadsheet.csv\'94 file and extracts all the Pokemon names, which are then placed into a list called \'93pokedex.\'94 It then prints this list to the text box.\
33 | \
34 |
35 | \b After typing in both Pokemon, the user should press \'93Lock In.\'94
36 | \b0 This button checks the Pokemon entries for errors and enables the \'93Begin Battle\'94 button. If any of the entries are not in the \'93pokedex\'94, it will ask the user to re-enter their choices and double-check for any spelling errors. If both entries are valid, it will enable the \'93Begin Battle\'94 button and prevent the user from changing their entries. \
37 | \
38 |
39 | \b Then the user should press the \'93Begin Battle\'94 button
40 | \b0 . This button begins the battle and enables the user to input moves for one of the Pokemon. It decides which Pokemon to enable based on the Pokemon\'92s speed stat (Pokemon.battleSpeed) using an \'93if\'94 statement. The Pokemon with the higher speed stat will be enabled first. \
41 | \
42 |
43 | \b After the user presses \'93Begin Battle,\'94 the game loop begins
44 | \b0 . For whichever Pokemon has been enabled first, the user should type in a move from the provided move list into the respective entry field and press the \'93Select Move\'94 button. If the user-selected move is not in the Pokemon\'92s moveset, nothing will happen when the user presses the button. If the user-selected move is in the Pokemon\'92s moveset, it will run the user-inputted string through the attack() function. For example, if the user had Charizard use \'93Fire Punch\'94 on Blastoise, the attack function would read: attack(\'93Fire Punch\'94, Charizard, Blastoise). This attack function then returns a string indicating which move was used, how much HP the opposing Pokemon lost, and the move\'92s effective. It will then enable the move entry and button for the other Pokemon, while disabling the current Pokemon\'92s move entry field. \
45 | \
46 | The other \'93Select Move\'94 button does the same thing as the first, just for the opposite Pokemon. This loop between the two selectMove() methods continues until one of the Pokemon faints, after which it will print \'93(Pokemon Name) fainted\'94 to the text box. The program uses an if statement along with the isAlive() method for the Pokemon class to check if one of the Pokemon has fainted. If this method returns \'93True\'94, it will disable all buttons and entries EXCEPT for the reset button. \
47 | \
48 |
49 | \b If the user wants to play again, they should press the \'93Restart\'94 button
50 | \b0 . This button completely clears all data from the program. It resets the Pokemon objects and sprites, deletes all text from the window, and only enables the Pokemon entry boxes, the \'93See All Pokemon\'94 and \'93Lock In\'94 buttons, just like at the beginning of the program.\
51 | \'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\'97\
52 |
53 | \b\fs28 Overview of Pokemon Battle Mechanics
54 | \b0 \
55 |
56 | \fs24 Pokemon battles work on a turn-based system. One turn consists of one Pokemon attacking and then the other Pokemon attacking back. There are two different types of moves this program uses: those that deal damage, and those that alter stats. For damage-dealing moves, the damage is calculated using the damage formula: (((2 x Level + 10)/250) x (Attack/Defense) x Move Base Damage + 2) x Modifier). This program calculates all damage as if all Pokemon are level 50. \
57 | \
58 | The modifier for the damage depends on typing of the move and Pokemon. For example, Fire type moves are \'93super effective\'94 against Grass type Pokemon. In this situation, the modifier for the damage would be 2 and the original damage would be doubled. Conversely, Grass type moves are \'93not very effective\'94 against Fire type Pokemon, so the modifier for the damage is 0.5. Moves can also not affect other Pokemon. For example, Ground type moves are not effective against Flying type Pokemon, so the modifier for the damage is 0, making the damage 0. This program accounts for type effectiveness by reading through the \'93Type Advantages.csv\'94 file. \
59 | \
60 | There are also stat-changing moves. For example, if a move lowers the opponent\'92s Attack stat, the damage of the opponent\'92s moves would decrease. If a move lowers the opponent\'92s Defense stat, the damage of your Pokemon\'92s moves would increase. Moves can also increase the user\'92s stats. Also, moves can increase any of the user Pokemon\'92s stats, such as attack or defense. In this program, for non-damaging moves, I use a code in the \'93Pokemon Moves.csv\'94 file to indicate which stat to alter. For example \'93a+\'94 means raise the user\'92s attack stage while \'93a-\'93 means lower the opponent\'92s attack stage.\
61 | \
62 | At the beginning of a battle, all of a Pokemon\'92s stat stages are 0. Depending on different moves used, this stat stage will change, changing this stat for the duration of the battle. For example, if a Pokemon\'92s attack stage is +1, then the new in-battle attack (Pokemon.battleAttack) is multiplied by 3/2. Conversely, if a Pokemon\'92s attack stage is -1, then the new in-battle attack is multiple by 2/3. This process continues until the stat stage reaches +/- 6. This program takes these stat stages into account using a function called statMod() in the Attack.py file. \
63 | \
64 | This program tries to stay as true to the Pokemon games as possible, so all calculations of move damage, base stats, in-battle stats, and etc. are replicated from the actual Pokemon games. For more information about Pokemon battle mechanics, please visit: \
65 | {\field{\*\fldinst{HYPERLINK "http://bulbapedia.bulbagarden.net/wiki/Damage#Damage_formula"}}{\fldrslt http://bulbapedia.bulbagarden.net/wiki/Damage#Damage_formula}}\
66 | {\field{\*\fldinst{HYPERLINK "http://bulbapedia.bulbagarden.net/wiki/Stats"}}{\fldrslt http://bulbapedia.bulbagarden.net/wiki/Stats}}\
67 | \
68 | Please note that there are several aspects of Pokemon battles that this program does not take into consideration, such as move accuracy, Pokemon nature, and move power points. \
69 | \
70 | }
--------------------------------------------------------------------------------
/Attack.py:
--------------------------------------------------------------------------------
1 | from Move import Move
2 | from Pokemon import Pokemon
3 | import random
4 |
5 | # Stat modification function; will be called inside the attack function if the move alters the defending Pokemon's stats
6 | # Takes the current statStage as input and returns a multiplier that will be used to calculate the new statStage
7 | def statMod(statStage):
8 | if statStage == 1:
9 | multiplier = 1.5
10 | elif statStage == -1:
11 | multiplier = 2/3
12 | elif statStage == 2:
13 | multiplier = 2
14 | elif statStage == -2:
15 | multiplier = 1/2
16 | elif statStage == 3:
17 | multiplier = 2.5
18 | elif statStage == -3:
19 | multiplier = 0.4
20 | elif statStage == 4:
21 | multiplier = 3
22 | elif statStage == -4:
23 | multiplier = 1/3
24 | elif statStage == 5:
25 | multiplier = 3.5
26 | elif statStage == -5:
27 | multiplier = 2/7
28 | elif statStage == 6:
29 | multiplier = 4
30 | elif statStage == -6:
31 | multiplier = 1/4
32 |
33 | return multiplier # This multiplier affects the value of the in-battle stat
34 |
35 | # Will take a move, the attacking Pokemon object, and the defending Pokemon object as input
36 | # Will return a string that contains the amount of damage done and the effectiveness of the move
37 | def attack(move, pokemon1, pokemon2):
38 | # Creating an empty string to store the results of the attack function
39 | tempMsg= ""
40 |
41 | # Reading "Type Advantages.csv" file to determine type advantages and the damage modifier
42 | # Stores the line number in the csv as the key and a list giving information about type advantage for the value
43 | fin = open("Type Advantages.csv", 'r')
44 | typeDic = {}
45 | for line in fin:
46 | line = line.strip()
47 | typeList = line.split(",")
48 | typeDic[typeList[0]] = typeList
49 | # This list contains a number in the first position, the attack type in the second, the defending type in the third,
50 | # and the appropriate damage multiplier in the fourth
51 | fin.close()
52 |
53 | # Making the input string into an actual move object
54 | move = Move(move)
55 |
56 | # This modifier is used in damage calculations; it takes into account type advantage and STAB bonus
57 | modifier = 1
58 |
59 | # Calculating Type advantages using "Type Advantages.csv" file
60 | for key in typeDic:
61 | # If the attacking and defending types match up, multiply the modifier by the damage multiplier from the list
62 | if typeDic[key][1] == move.type and typeDic[key][2] == pokemon2.type1:
63 | modifier *= float(typeDic[key][3])
64 |
65 | # Didn't use elif; Just in case you get a 4x or 0.25x modifier based on double type
66 | if typeDic[key][1] == move.type and typeDic[key][2] == pokemon2.type2:
67 | modifier *= float(typeDic[key][3])
68 |
69 | # Calculating STAB (Same-type Attack Bonus)
70 | if move.type == pokemon1.type1:
71 | modifier *= Pokemon.STAB
72 |
73 | elif move.type == pokemon1.type2:
74 | modifier *= Pokemon.STAB
75 |
76 | # Damage formula also has a random element
77 | modifier *= random.uniform(0.85, 1.0)
78 |
79 | print()
80 |
81 | # Appending the useMove function to the output
82 | tempMsg += pokemon1.useMove(move)
83 |
84 | # ATK/DEF or SpATK/SpDEF or Status? Using the Pokemon damage formula
85 | # If the move is "Physical", the damage formula will take into account attack and defense
86 | if move.kind == "Physical":
87 | damage = int((((2*pokemon1.getLevel()) + 10)/250 * (pokemon1.battleATK/pokemon2.battleDEF) * move.getPower() + 2) * modifier)
88 | tempMsg += "\n" + pokemon2.loseHP(damage)
89 | # If the move is "Special", the damage formula will take into account special attack and special defense
90 | elif move.kind == "Special":
91 | damage = int((((2*pokemon1.getLevel()) + 10)/250 * (pokemon1.battleSpATK/pokemon2.battleSpDEF) * move.getPower() + 2) * modifier)
92 | tempMsg += "\n" + pokemon2.loseHP(damage)
93 |
94 |
95 | # Stat Changing moves
96 | else:
97 | # If the move is stat-changing, it does 0 damage and the modifier is set to 1 (so it doesn't return super effective or not very effective)
98 | damage = 0
99 | modifier = 1
100 |
101 | # Going through each kind of different stat change based on the move type
102 | if move.kind == "a-":
103 | pokemon2.atkStage -= 1
104 | pokemon2.battleATK = pokemon2.originalATK * statMod(pokemon2.atkStage)
105 | tempMsg += "\n" + pokemon2.name + "'s attack fell! "
106 |
107 | elif move.kind == "a+":
108 | pokemon1.atkStage +=1
109 | pokemon1.battleATK = pokemon1.originalATK * statMod(pokemon1.atkStage)
110 | tempMsg += "\n" + pokemon1.name + "'s attack rose! "
111 |
112 | elif move.kind == "d+":
113 | pokemon1.defStage +=1
114 | pokemon1.battleDEF = pokemon1.originalDEF * statMod(pokemon1.defStage)
115 | print(pokemon1.name + "'s defense rose! ")
116 | tempMsg += "\n" + pokemon1.name + "'s defense rose! "
117 |
118 | elif move.kind == "sa+":
119 | pokemon1.spAtkStage +=1
120 | pokemon1.battleSpATK = pokemon1.originalSpATK * statMod(pokemon1.spAtkStage)
121 | print(pokemon1.name + "'s special attack rose! ")
122 | tempMsg += "\n" + pokemon1.name + "'s special attack rose! "
123 |
124 | elif move.kind == "sd+":
125 | pokemon1.spDefStage +=1
126 | pokemon1.battleSpDef = pokemon1.originalSpDEF * statMod(pokemon1.spDefStage)
127 | tempMsg += "\n" + pokemon1.name + "'s special defense rose! "
128 |
129 | elif move.kind == "s+":
130 | pokemon1.speedStage +=1
131 | pokemon1.battleSpeed = pokemon1.originalSpeed * statMod(pokemon1.speedStage)
132 | tempMsg += "\n" + pokemon1.name + "'s speed fell! "
133 |
134 | elif move.kind == "d-":
135 | pokemon2.defStage -=1
136 | pokemon2.battleDEF = pokemon2.originalDEF * statMod(pokemon2.defStage)
137 | tempMsg += "\n" + pokemon2.name + "'s defense fell! "
138 |
139 | elif move.kind == "sa-":
140 | pokemon2.spAtkStage -=1
141 | pokemon2.battleSpATK = pokemon2.originalSpATK * statMod(pokemon2.spAtkStage)
142 | tempMsg += "\n" + pokemon2.name + "'s special attack fell! "
143 |
144 | elif move.kind == "sd-":
145 | pokemon2.spDefStage -=1
146 | pokemon2.battleSpDEF = pokemon2.originalSpDEF * statMod(pokemon2.spDefStage)
147 | tempMsg += "\n" + pokemon2.name + "'s special defense fell! "
148 |
149 | elif move.kind == "s-":
150 | pokemon2.speedStage -=1
151 | pokemon2.battleSpeed = pokemon2.originalSpeed * statMod(pokemon2.speedStage)
152 | tempMsg += "\n" + pokemon2.name + "'s speed fell! "
153 |
154 | # Super effective, not very effective, or no effect?
155 | # Appending the result to tempMsg
156 | if modifier < 0.85 and modifier > 0:
157 | tempMsg += "\nIt's not very effective..."
158 |
159 | elif modifier > 1.5:
160 | tempMsg += "\nIt's super effective!"
161 |
162 | elif modifier == 0.0:
163 | tempMsg += "\nIt doesn't affect " + pokemon2.name + "..."
164 |
165 | # String containing useMove(), damage, and type effectiveness
166 | return tempMsg
167 |
168 |
169 |
170 |
--------------------------------------------------------------------------------
/Pokemon.py:
--------------------------------------------------------------------------------
1 | from Move import Move
2 |
3 | # Creating the Pokemon Class
4 | class Pokemon(object):
5 | POKEMON_DICTIONARY = {}
6 | # Values used to calculate Pokemon base stats
7 | IV = 30
8 | EV = 85
9 | STAB = 1.5 # Stands for "Same-type attack bonus"
10 | LEVEL = 50
11 | def __init__(self, pokemon): # takes a user-selected Pokemon as an argument
12 | pokemonInfo = []
13 | if len(Pokemon.POKEMON_DICTIONARY) == 0:
14 | fin = open("Kanto Pokemon Spreadsheet.csv", 'r')
15 | for line in fin:
16 | line = line.strip()
17 | pokeList = line.split(",")
18 | Pokemon.POKEMON_DICTIONARY[pokeList[1]] = pokeList # Creating key (Pokemon name) value (id info) pair
19 |
20 | fin.close()
21 |
22 | # Creating an info list for the user-selected Pokemon containing all the Pokemon attributes
23 | for key in Pokemon.POKEMON_DICTIONARY:
24 | if key.lower() == pokemon.lower():
25 | pokemonInfo = Pokemon.POKEMON_DICTIONARY[key]
26 |
27 | # ATTRIBUTES
28 | # Referring to the pokemonInfo list to fill in the rest of the attributes
29 | # ID Info
30 | self.__id = pokemonInfo[0]
31 | self.name = pokemonInfo[1]
32 | self.level = Pokemon.LEVEL
33 |
34 | # Type
35 | self.type1 = pokemonInfo[2]
36 | self.type2 = pokemonInfo[3]
37 |
38 | # BASE STATS
39 | self.__hp = int(pokemonInfo[4])
40 | self.__atk = int(pokemonInfo[5])
41 | self.__defense = int(pokemonInfo[6])
42 | self.__spAtk = int(pokemonInfo[7])
43 | self.__spDef = int(pokemonInfo[8])
44 | self.__speed = int(pokemonInfo[9])
45 |
46 | # In Battle Stats
47 | # The base stat is different from the in battle stat. The base stat is just used for calculating the in-battle stat
48 | # The in battle stats are calculated based on a formula from the games
49 | self.battleHP = int(self.__hp + (0.5*Pokemon.IV) + (0.125*Pokemon.EV) + 60)
50 | self.battleATK = self.__atk + (0.5*Pokemon.IV) + (0.125*Pokemon.EV) + 5
51 | self.battleDEF = self.__defense + (0.5*Pokemon.IV) + (0.125*Pokemon.EV) + 5
52 | self.battleSpATK = self.__spAtk + (0.5*Pokemon.IV) + (0.125*Pokemon.EV) + 5
53 | self.battleSpDEF = self.__spDef + (0.5*Pokemon.IV) + (0.125*Pokemon.EV) + 5
54 | self.battleSpeed = self.__speed + (0.5*Pokemon.IV) + (0.125*Pokemon.EV) + 5
55 |
56 | # These variables are used to just hold the values of the original stat for stat modification purposes
57 | self.originalATK = self.__atk + (0.5*Pokemon.IV) + (0.125*Pokemon.EV) + 5
58 | self.originalDEF = self.__defense + (0.5*Pokemon.IV) + (0.125*Pokemon.EV) + 5
59 | self.originalSpATK = self.__spAtk + (0.5*Pokemon.IV) + (0.125*Pokemon.EV) + 5
60 | self.originalSpDEF = self.__spDef + (0.5*Pokemon.IV) + (0.125*Pokemon.EV) + 5
61 | self.originalSpeed = self.__speed + (0.5*Pokemon.IV) + (0.125*Pokemon.EV) + 5
62 |
63 | # Moves
64 | # The Kanto Pokemon Spreadsheet has pre-determined movesets
65 | self.move1 = Move(pokemonInfo[10])
66 | self.move2 = Move(pokemonInfo[11])
67 | self.move3 = Move(pokemonInfo[12])
68 | self.move4 = Move(pokemonInfo[13])
69 |
70 | # A list containing all the moves; used for error-checking later
71 | self.moveList = [self.move1.name.lower(), self.move2.name.lower(), self.move3.name.lower(), self.move4.name.lower()]
72 |
73 | # In Battle Stats
74 | # Raised or lowered based on different moves used in battle. Affects the in battle stats (more info in the Overview of Battle Mechanics in readme.txt)
75 | self.atkStage = 0
76 | self.defStage = 0
77 | self.spAtkStage = 0
78 | self.spDefStage = 0
79 | self.speedStage = 0
80 |
81 | # METHODS
82 | # Printing all the Pokemon info with the str method
83 | def __str__(self):
84 | msg = "Name: " + str(self.__name) + "\nID: " + str(self.__id) + "\nType1: " + str(self.__type1) + \
85 | "\nType2: " + str(self.__type2) + "\nBase HP: " + str(self.__hp) + "\nBase ATK: " + str(self.__atk) + "\nBase DEF: " + \
86 | str(self.__defense) + "\nBase Sp. ATK: " + str(self.__spAtk) + "\nBase Sp. DEF: " + str(self.__spDef) + "\nBase Speed: " + str(self.__speed)
87 | return msg
88 |
89 | # Get Attribute METHODS
90 | def getName(self):
91 | return self.name
92 |
93 | def getLevel(self):
94 | return self.level
95 |
96 | # Get BASE STAT METHODS
97 | def getHP(self):
98 | return self.__hp
99 |
100 | def getATK(self):
101 | return self.__atk
102 |
103 | def getDEF(self):
104 | return self.__defense
105 |
106 | def getSpATK(self):
107 | return self.__spAtk
108 |
109 | def getSpDEF(self):
110 | return self.__spDef
111 |
112 | def getSpeed(self):
113 | return self.__speed
114 |
115 | # Get STAT STAGE Methods
116 | def getAtkStage(self):
117 | return self.atkStage
118 |
119 | def getDefStage(self):
120 | return self.defStage
121 |
122 | def getSpAtkStage(self):
123 | return self.spAtkStage
124 |
125 | def getSpDefStage(self):
126 | return self.spDefStage
127 |
128 | def getSpeedStage(self):
129 | return self.speed
130 |
131 | # Set STAT STAGE Methods
132 | def setAtkStage(self, atkStage):
133 | self.atkStage = atkStage
134 |
135 | def setDefStage(self, defStage):
136 | self.defStage = defStage
137 |
138 | def setSpAtkStage(self, spAtkStage):
139 | self.spAtkStage = spAtkStage
140 |
141 | def setSpDefStage(self, spDefStage):
142 | self.spDefStage = spDefStage
143 |
144 | def setSpeedStage(self, speedStage):
145 | self.speedStage = speedStage
146 |
147 | # MOVE Methods
148 | def getMove1(self):
149 | return self.move1
150 |
151 | def getMove2(self):
152 | return self.move2
153 |
154 | def getMove3(self):
155 | return self.move3
156 |
157 | def getMove4(self):
158 | return self.move4
159 |
160 | def setMove1(self, move1):
161 | self.move1 = Move(move1)
162 |
163 | def setMove2(self, move2):
164 | self.move2 = Move(move2)
165 |
166 | def setMove3(self, move3):
167 | self.move3 = Move(move3)
168 |
169 | def setMove4(self, move4):
170 | self.move4 = Move(move4)
171 |
172 | # Print Methods
173 | # These methods return strings containing information about HP and movesets
174 | def printHP(self):
175 | msg = str(self.name) + ": HP " + str(self.battleHP)
176 | return msg
177 |
178 | def printMoves(self): # Take a list of move names as argument?
179 | msg = "\nMove 1: " + self.move1.moveInfo[1] + "\nMove 2: " + self.move2.moveInfo[1] + "\nMove 3: " + self.move3.moveInfo[1] + "\nMove 4: " + self.move4.moveInfo[1]
180 | return msg
181 |
182 | # In Battle Methods
183 |
184 | # Takes a move as input and returns a string with the pokemon using that move
185 | def useMove(self, move):
186 | msg = self.name + " used " + move.name + "!"
187 | return msg
188 |
189 | # Takes an int as input and returns a string with the pokemon losing that much HP
190 | def loseHP(self, lostHP):
191 | self.battleHP -= lostHP
192 | # Making sure battlHP doesn't fall below 0
193 | if self.battleHP <= 0:
194 | self.battleHP = 0
195 | msg = self.name + " lost " + str(lostHP) + " HP!"
196 | return msg
197 |
198 | # Takes an int as input and returns a string with the pokemon gaining that much HP
199 | def gainHP(self, gainedHP):
200 | self.__hp += gainedHP
201 |
202 | # Determines if the Pokemon still has HP and returns a boolean
203 | def isAlive(self):
204 | if self.battleHP > 0:
205 | return True
206 | else:
207 | return False
208 |
209 | # If battleHP is 0, returns a string showing that the Pokemon fainted
210 | def faint(self):
211 | if self.battleHP <= 0:
212 | msg = self.name + " fainted "
213 | return msg
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
--------------------------------------------------------------------------------
/Kanto Pokemon Spreadsheet.csv:
--------------------------------------------------------------------------------
1 | Nat,Pokemon,Type I,Type II,HP,Atk,Def,SpA,SpD,Spe,Move 1 ,Move 2,Move 3,Move 4
1,Bulbasaur,Grass,Poison,45,49,49,65,65,45,Razor Leaf,Headbutt,Giga Drain,Vine Whip
2,Ivysaur,Grass,Poison,60,62,63,80,80,60,Solarbeam,Fury Cutter,Leech Seed,Sunny Day
3,Venusaur,Grass,Poison,80,82,83,100,100,80,Giga Drain,Tackle,Poisonpowder,Solarbeam
4,Charmander,Fire,,39,52,43,60,50,65,Flamethrower,Slash,Dragonbreath,Ember
5,Charmeleon,Fire,,58,64,58,80,65,80,Fire Blast,Strength,Dig,Smokescreen
6,Charizard,Fire,Flying,78,84,78,109,85,100,Fire Punch,Fly,Dragonbreath,Flamethrower
7,Squirtle,Water,,44,48,65,60,54,43,Surf,Bite,Blizzard,Growl
8,Wartortle,Water,,59,63,80,65,80,58,Waterfall,Icy Wind,Dig,Rapid Spin
9,Blastoise,Water,,79,83,100,85,105,78,Hydro Pump,Rapid Spin,Earthquake,Surf
10,Caterpie,Bug,,45,30,35,20,20,45,Tackle,String Shot,Tackle,String Shot
11,Metapod,Bug,,50,20,55,25,25,30,Tackle,Harden,Tackle,Harden
12,Butterfree,Bug,Flying,60,45,50,80,80,70,Gust,Psychic,Hyper Beam,Stun Spore
13,Weedle,Bug,Poison,40,35,30,20,20,50,Poison Sting,String Shot,Poison Sting,String Shot
14,Kakuna,Bug,Poison,45,25,50,25,25,35,Tackle,Harden,Tackle,Harden
15,Beedrill,Bug,Poison,65,80,40,40,80,75,Twineedle,Sludge Bomb,Pursuit,Focus Energy
16,Pidgey,Normal,Flying,40,45,40,35,35,56,Fly,Return,Steel Wing,Sand-attack
17,Pidgeotto,Normal,Flying,63,60,55,50,50,71,Fly,Swift,Steel Wing,Aerial Ace
18,Pidgeot,Normal,Flying,83,80,75,70,70,91,Fly,Swift,Hyper Beam,Aerial Ace
19,Rattata,Normal,,30,56,35,25,35,72,Super Fang,Headbutt,Shadow Ball,Focus Energy
20,Raticate,Normal,,55,81,60,50,70,97,Super Fang,Hyper Fang,Pursuit,Scary Face
21,Spearow,Normal,Flying,40,60,30,31,31,70,Drill Peck,Frustration,Steel Wing,Growl
22,Fearow,Normal,Flying,65,90,65,61,61,100,Drill Peck,Hyper Beam,Pursuit,Fly
23,Ekans,Poison,,30,60,44,40,54,55,Sludge Bomb,Bite,Dig,Wrap
24,Arbok,Poison,,60,85,69,65,79,80,Sludge Bomb,Earthquake,Strength,Dig
25,Pikachu,Electric,,35,55,30,50,40,90,Thunderbolt,Surf,Iron Tail,Thunder Wave
26,Raichu,Electric,,60,90,55,90,80,100,Thunder,Quick Attack,Spark,Body Slam
27,Sandshrew,Ground,,50,75,85,20,30,40,Earthquake,Fury Swipes,Defense Curl,Fury Cutter
28,Sandslash,Ground,,75,100,110,45,55,65,Earthquake,Slash,Rollout,Fury Swipes
29,Nidoran,Poison,,55,47,52,40,40,41,Headbutt,Iron Tail,Blizzard,Poison Sting
30,Nidorina,Poison,,70,62,67,55,55,56,Strength,Bite,Blizzard,Poison Sting
31,Nidoqueen,Poison,Ground,90,82,87,75,85,76,Body Slam,Earthquake,Ice Punch,Poison Sting
33,Nidorino,Poison,,61,72,57,55,55,65,Strength,Double Kick,Thunder,Horn Attack
34,Nidoking,Poison,Ground,81,92,77,85,75,85,Thunder,Earthquake,Horn Attack,Mud-Slap
35,Clefairy,Normal,,70,45,48,60,65,35,Strength,Psychic,Growl,Tackle
36,Clefable,Normal,,95,70,73,85,90,60,Strength,Headbutt,Ice Punch,Psychic
37,Vulpix,Fire,,38,41,40,50,65,65,Flamethrower,Dig,Ember,Quick Attack
38,Ninetales,Fire,,73,76,75,81,100,100,Fire Blast,Overheat,Dig,Quick Attack
39,Jigglypuff,Normal,,115,45,20,45,25,20,Body Slam,Rollout,Defense Curl,Double-Edge
40,Wigglytuff,Normal,,140,70,45,75,50,45,Double-Edge,Fire Punch,Rollout,Body Slam
41,Zubat,Poison,Flying,40,45,35,30,40,55,Wing Attack,Giga Drain,Air Cutter,Bite
42,Golbat,Poison,Flying,75,80,70,65,75,90,Crunch,Aerial Ace,Wing Attack,Giga Drain
43,Oddish,Grass,Poison,45,50,55,75,65,30,Giga Drain,Sludge Bomb,Acid,Solarbeam
44,Gloom,Grass,Poison,60,65,70,85,75,40,Solarbeam,Sludge Bomb,Acid,Giga Drain
45,Vileplume,Grass,Poison,75,80,85,100,90,50,Petal Dance,Acid,Solarbeam,Giga Drain
46,Paras,Bug,Grass,35,70,55,45,55,25,Giga Drain,Slash,Fury Cutter,Growth
47,Parasect,Bug,Grass,60,95,80,60,80,30,Giga Drain,Slash,Fury Cutter,Growth
48,Venonat,Bug,Poison,60,55,50,40,55,45,Sludge Bomb,Psychic,Tackle,Growl
49,Venomoth,Bug,Poison,70,65,60,90,75,90,Sludge Bomb,Psychic,Psybeam,Leech Life
50,Diglett,Ground,,10,55,25,35,45,95,Earthquake,Slash,Growl,Dig
51,Dugtrio,Ground,,35,80,50,50,70,120,Earthquake,Slash,Dig,Growl
52,Meowth,Normal,,40,45,35,40,40,90,Slash,Faint Attack,Shadow Ball,Bite
53,Persian,Normal,,65,70,60,65,65,115,Headbutt,Slash,Faint Attack,Shadow Ball
54,Psyduck,Water,,50,52,48,65,50,55,Dig,Confusion,Surf,Scratch
55,Golduck,Water,,80,82,78,95,80,85,Hydro Pump,Psychic,Dig,Surf
56,Mankey,Fighting,,40,80,35,35,45,70,Cross Chop,Strength,Karate Chop,Rock Smash
57,Primeape,Fighting,,65,105,60,60,70,95,Cross Chop,Strength,Karate Chop,Rock Smash
58,Growlithe,Fire,,55,70,45,70,50,60,Ember,Bite,Dig,Tackle
59,Arcanine,Fire,,90,110,80,100,80,95,Flame Wheel,Extremespeed,Flamethrower,Dig
60,Poliwag,Water,,40,50,40,40,40,90,Water Gun,Body Slam,Surf,Tackle
61,Poliwhirl,Water,,65,65,65,50,50,90,Surf,Body Slam,Tackle,Water Gun
62,Poliwrath,Water,Fighting,90,85,95,70,90,70,Dynamicpunch,Hydro Pump,Mach Punch,Body Slam
63,Abra,Psychic,,25,20,15,105,55,90,Confusion,Psybeam,Reflect,Thunderpunch
64,Kadabra,Psychic,,40,35,30,120,70,105,Psychic,Psybeam,Reflect,Thunderpunch
65,Alakazam,Psychic,,55,50,45,135,85,120,Psychic,Ice Punch,Thunder,Shadow Ball
66,Machop,Fighting,,70,80,50,35,35,35,Strength,Rock Smash,Cross Chop,Dig
67,Machoke,Fighting,,80,100,70,50,60,45,Strength,Rock Smash,Cross Chop,Dig
68,Machamp,Fighting,,90,130,80,65,85,55,Thunderpunch,Fire Punch,Strength,Cross Chop
69,Bellsprout,Grass,Poison,50,75,35,70,30,40,Giga Drain,Sludge Bomb,Razor Leaf,Acid
70,Weepinbell,Grass,Poison,65,90,50,85,45,55,Giga Drain,Sludge Bomb,Razor Leaf,Acid
71,Victreebel,Grass,Poison,80,105,65,100,60,70,Solarbeam,Sludge Bomb,Giga Drain,Razor Leaf
72,Tentacool,Water,Poison,40,40,35,50,100,70,Surf,Sludge Bomb,Blizzard,Bubblebeam
73,Tentacruel,Water,Poison,80,70,65,80,120,100,Surf,Sludge Bomb,Blizzard,Bubblebeam
74,Geodude,Rock,Ground,40,80,100,30,30,20,Earthquake,Rollout,Rock Slide,Rock Smash
75,Graveler,Rock,Ground,55,95,115,45,45,35,Earthquake,Rollout,Rock Slide,Rock Smash
76,Golem,Rock,Ground,80,110,130,55,65,45,Earthquake,Rollout,Rock Slide,Rock Smash
77,Ponyta,Fire,,50,85,55,65,65,90,Fire Blast,Headbutt,Flamethrower,Stomp
78,Rapidash,Fire,,65,100,70,80,80,105,Fire Blast,Headbutt,Flamethrower,Stomp
79,Slowpoke,Water,Psychic,90,65,65,40,40,15,Surf,Psychic,Earthquake,Ice Beam
80,Slowbro,Water,Psychic,95,75,110,100,80,30,Surf,Psychic,Earthquake,Ice Beam
81,Magnemite,Electric,Steel,25,35,70,95,55,45,Thunder,Swift,Thunderbolt,Shock Wave
82,Magneton,Electric,Steel,50,60,95,120,70,70,Thunder,Swift,Thunderbolt,Shock Wave
83,Farfetch'd,Normal,Flying,52,65,55,58,62,60,Slash,Fly,Steel Wing,Wing Attack
84,Doduo,Normal,Flying,35,85,45,35,35,75,Drill Peck,Tri Attack,Steel Wing,Pursuit
85,Dodrio,Normal,Flying,60,110,70,60,60,100,Drill Peck,Tri Attack,Steel Wing,Pursuit
86,Seel,Water,,65,45,55,45,70,45,Surf,Ice Beam,Headbutt,Aurora Beam
87,Dewgong,Water,Ice,90,70,80,70,95,70,Surf,Ice Beam,Headbutt,Aurora Beam
88,Grimer,Poison,,80,80,50,40,50,25,Sludge Bomb,Sludge,Acid,Dynamicpunch
89,Muk,Poison,,105,105,75,65,100,50,Sludge Bomb,Sludge,Acid,Dynamicpunch
90,Shellder,Water,,30,65,100,45,25,40,Surf,Ice Beam,Swift,Aurora Beam
91,Cloyster,Water,Ice,50,90,180,85,45,70,Surf,Ice Beam,Swift,Aurora Beam
92,Gastly,Ghost,Poison,30,35,30,100,35,80,Shadow Ball,Psychic,Thief,Sludge Bomb
93,Haunter,Ghost,Poison,45,50,45,115,55,95,Shadow Ball,Psychic,Thief,Sludge Bomb
94,Gengar,Ghost,Poison,60,65,60,130,75,110,Shadow Ball,Psychic,Thief,Sludge Bomb
95,Onix,Rock,Ground,35,45,160,30,45,70,Earthquake,Rock Throw,Strength,Tackle
96,Drowzee,Psychic,,60,48,45,43,90,42,Psychic,Headbutt,Body Slam ,Confusion
97,Hypno,Psychic,,85,73,70,73,115,67,Psychic,Headbutt,Body Slam,Confusion
98,Krabby,Water,,30,105,90,25,25,50,Crabhammer,Strength,Blizzard,Surf
99,Kingler,Water,,55,130,115,50,50,75,Crabhammer,Strength,Blizzard,Surf
100,Voltorb,Electric,,40,30,50,55,55,100,Thunder,Thunderbolt,Shock Wave,Swift
101,Electrode,Electric,,60,50,70,80,80,140,Thunder,Thunderbolt,Shock Wave,Swift
102,Exeggcute,Grass,Psychic,60,40,80,60,45,40,Psychic,Giga Drain,Egg Bomb,Confusion
103,Exeggutor,Grass,Psychic,95,95,85,125,65,55,Psychic,Giga Drain,Egg Bomb,Confusion
104,Cubone,Ground,,50,50,95,40,50,35,Bonemerang,Headbutt,Icy Wind,Dig
105,Marowak,Ground,,60,80,110,50,80,45,Bonemerang,Headbutt,Icy Wind,Dig
106,Hitmonlee,Fighting,,50,120,53,35,110,87,Hi Jump Kick,Mega Kick,Double Kick,Strength
107,Hitmonchan,Fighting,,50,105,79,35,110,76,Mach Punch,Strength,Ice Punch,Fire Punch
108,Lickitung,Normal,,90,55,75,60,75,30,Hyper Beam,Shadow Ball,Surf,Growl
109,Koffing,Poison,,40,65,95,60,45,35,Sludge Bomb,Fire Blast,Zap Cannon,Selfdestruct
110,Weezing,Poison,,65,90,120,85,70,60,Sludge Bomb,Fire Blast,Zap Cannon,Selfdestruct
111,Rhyhorn,Ground,Rock,80,85,95,30,30,25,Earthquake,Rollout,Iron Tail,Dig
112,Rhydon,Ground,Rock,105,130,120,45,45,40,Earthquake,Rollout,Iron Tail,Dig
113,Chansey,Normal,,250,5,5,35,105,50,Egg Bomb,Blizzard,Growl,Body Slam
114,Tangela,Grass,,65,55,115,100,40,60,Giga Drain,Thief,Solarbeam,Sleep Powder
115,Kangaskhan,Normal,,105,95,80,40,80,90,Dizzy Punch,Bite,Surf,Earthquake
116,Horsea,Water,,30,40,70,70,25,60,Hydro Pump,Blizzard,Surf,Swift
117,Seadra,Water,,55,65,95,95,45,85,Hydro Pump,Blizzard,Surf,Dragonbreath
118,Goldeen,Water,,45,67,60,35,50,63,Surf,Horn Attack,Waterfall,Bubblebeam
119,Seaking,Water,,80,92,65,65,80,68,Surf,Horn Attack,Waterfall,Bubblebeam
120,Staryu,Water,,30,45,55,70,55,85,Psychic,Hydro Pump,Thunder,Rapid Spin
121,Starmie,Water,Psychic,60,75,85,100,85,115,Psychic,Hydro Pump,Thunder,Rapid Spin
122,Mr. Mime,Psychic,,40,45,65,100,120,90,Psybeam,Psychic,Shadow Ball,Reflect
123,Scyther,Bug,Flying,70,110,80,55,80,105,Wing Attack,Pursuit,Slash,Swift
124,Jynx,Ice,Psychic,65,50,35,115,95,95,Ice Punch,Psychic,Ice Beam,Lick
125,Electabuzz,Electric,,65,83,57,95,85,105,Thunderpunch,Swift,Thunderbolt,Thunder Wave
126,Magmar,Fire,,65,95,57,100,85,93,Fire Punch,Flamethrower,Thunderpunch,Brick Break
127,Pinsir,Bug,,65,125,100,55,70,85,Fury Cutter,Vicegrip,Submission,Earthquake
128,Tauros,Normal,,75,100,95,40,70,110,Take Down,Pursuit,Rock Smash,Body Slam
129,Magikarp,Water,,20,10,55,15,20,80,Tackle,Flail,Tackle,Flail
130,Gyarados,Water,Flying,95,125,79,60,100,81,Waterfall,Dragonbreath,Surf,Earthquake
131,Lapras,Water,Ice,130,85,80,85,95,60,Waterfall,Surf,Ice Beam,Thunderbolt
132,Ditto,Normal,,48,48,48,48,48,48,Tackle,Tackle,Tackle,Tackle
133,Eevee,Normal,,55,55,50,45,65,55,Take Down,Iron Tail,Shadow Ball,Growl
134,Vaporeon,Water,,130,65,60,110,95,65,Waterfall,Surf,Ice Beam,Quick Attack
135,Jolteon,Electric,,65,65,60,110,95,130,Thunderbolt,Pin Missile,Double Kick,Quick Attack
136,Flareon,Fire,,65,130,60,95,110,65,Fire Blast,Flamethrower,Flame Wheel,Quick Attack
137,Porygon,Normal,,65,60,70,85,75,40,Tri Attack,Blizzard,Tackle,Growl
138,Omanyte,Rock,Water,35,40,100,90,55,35,Surf,Ancientpower,Blizzard,Spike Cannon
139,Omastar,Rock,Water,70,60,125,115,70,55,Surf,Ancientpower,Blizzard,Spike Cannon
140,Kabuto,Rock,Water,30,80,90,55,45,55,Rollout,Giga Drain,Blizzard,Surf
141,Kabutops,Rock,Water,60,115,105,65,70,80,Rollout,Giga Drain,Blizzard,Surf
142,Aerodactyl,Rock,Flying,80,105,65,60,75,130,Ancientpower,Steel Wing,Rock Slide,Fly
143,Snorlax,Normal,,160,110,65,65,110,30,Headbutt,Fire Punch,Thunderpunch,Body Slam
144,Articuno,Ice,Flying,90,85,100,95,125,85,Blizzard,Aerial Ace,Ice Beam,Fly
145,Zapdos,Electric,Flying,90,90,85,125,90,100,Thunder,Thunderbolt,Aerial Ace,Fly
146,Moltres,Fire,Flying,90,100,90,125,85,90,Fire Blast,Flamethrower,Aerial Ace,Fly
147,Dratini,Dragon,,41,64,45,50,50,50,Dragonbreath,Outrage,Thunderbolt,Headbutt
148,Dragonair,Dragon,,61,84,65,70,70,70,Dragonbreath,Fire Blast,Thunder Wave,Headbutt
149,Dragonite,Dragon,Flying,91,134,95,100,100,80,Twister,Wing Attack,Thunder,Hyper Beam
150,Mewtwo,Psychic,,106,110,90,154,90,130,Psychic,Ice Beam,Fire Blast,Thunder
151,Mew,Psychic,,100,100,100,100,100,100,Psychic,Flamethrower,Shadow Ball,Ice Beam
--------------------------------------------------------------------------------
/Application.py:
--------------------------------------------------------------------------------
1 | from Attack import *
2 | from tkinter import *
3 | from Pokedex import *
4 |
5 | class Application(Frame):
6 | def __init__(self, master):
7 | super().__init__(master)
8 | self.grid()
9 |
10 | # Assigning string variables for user text entry
11 | self.userStrVar = StringVar()
12 | self.userStrVar.set("")
13 |
14 | self.cpuStrVar = StringVar()
15 | self.cpuStrVar.set("")
16 |
17 | self.moveStrVar1 = StringVar()
18 | self.moveStrVar1.set("")
19 |
20 | self.moveStrVar2 = StringVar()
21 | self.moveStrVar2.set("")
22 |
23 | # WIDGETS
24 | # Buttons
25 | self.pokedexBtn = Button(self, text="See All Pokemon", command=self.seePokedex)
26 | self.pokedexBtn.grid(row=0, column=1)
27 |
28 | self.checkBtn = Button(self, text="Lock In", command=self.checkPokemon)
29 | self.checkBtn.grid(row=1, column=1)
30 |
31 | self.battleBtn = Button(self, text="Begin Battle", state=DISABLED, command=self.beginBattle)
32 | self.battleBtn.grid(row=2, column=1)
33 |
34 | self.moveBtn1 = Button(self, text="Select Move", state=DISABLED, command=self.selectMove1)
35 | self.moveBtn1.grid(row=7, column=0)
36 |
37 | self.moveBtn2 = Button(self, text="Select Move", state=DISABLED, command=self.selectMove2)
38 | self.moveBtn2.grid(row=7, column=2)
39 |
40 | self.restartBtn = Button(self, text="Restart?", state=DISABLED, command=self.restart)
41 | self.restartBtn.grid(row=7, column=1)
42 |
43 | # Labels, Entry fields, and Text Boxes
44 | self.entLabel1 = Label(self, text="Choose your Pokemon: ")
45 | self.entLabel1.grid(row=0, column=0)
46 |
47 | self.entName1 = Entry(self, textvariable=self.userStrVar) # Pokemon name entry
48 | self.entName1.grid(row=1, column=0, rowspan=2)
49 |
50 | self.moveText1 = Text(self, width=20, height=8, state=DISABLED) # Text box with moveset and HP
51 | self.moveText1.grid(row=5, column=0, sticky=S)
52 |
53 | self.entLabel2 = Label(self, text="Choose your opponent: ")
54 | self.entLabel2.grid(row=0, column=2)
55 |
56 | self.entName2 = Entry(self, textvariable=self.cpuStrVar) # Pokemon name entry
57 | self.entName2.grid(row=1, column=2, rowspan=2)
58 |
59 | self.moveText2 = Text(self, width=20, height=8, state=DISABLED) # Text box with moveset and HP
60 | self.moveText2.grid(row=5, column=2, sticky=S)
61 |
62 | self.txtStats = Text(self, width=50, height=10, state=DISABLED) # Main text box
63 | self.txtStats.grid(row=3, column=1)
64 |
65 | self.moveEnt1 = Entry(self, textvariable=self.moveStrVar1, state=DISABLED) # Move entry field 1
66 | self.moveEnt1.grid(row=6,column=0)
67 |
68 | self.moveEnt2 = Entry(self, textvariable=self.moveStrVar2, state=DISABLED) # Move entry field 2
69 | self.moveEnt2.grid(row=6, column=2)
70 |
71 | # Sprites
72 | tempImg = PhotoImage(file="Sprites/white.gif") # first putting a blank image for each sprite, will replace later after pressing "Begin Battle"
73 |
74 | # Creating an image label object for each sprite
75 | self.sprite1Label = Label(self, image=tempImg)
76 | self.sprite1Label.image = tempImg
77 | self.sprite1Label.grid(row=3, column=0)
78 |
79 | self.sprite2Label = Label(self, image=tempImg)
80 | self.sprite2Label.image = tempImg
81 | self.sprite2Label.grid(row=3, column=2)
82 |
83 |
84 | # Pokemon Objects
85 | # Blank until the user enters which Pokemon they want
86 | self.userPokemon = None
87 | self.cpuPokemon = None
88 |
89 | # Creating a method to print the list of all Pokemon
90 | def seePokedex(self):
91 | self.txtStats.config(state=NORMAL)
92 | self.txtStats.delete(0.0, END)
93 | for pokemon in pokedex:
94 | self.txtStats.insert(END, "\n" + pokemon)
95 | self.txtStats.config(state=DISABLED)
96 |
97 | # Creating a method to check if the Pokemon are valid and actually usable
98 | # Returns an error message if the Pokemon are not usable
99 | def checkPokemon(self):
100 | if self.userStrVar != "" and self.cpuStrVar != "":
101 | if self.userStrVar.get().lower() in pokedex and self.cpuStrVar.get().lower() in pokedex:
102 | self.txtStats.config(state=NORMAL)
103 | self.txtStats.delete(0.0, END)
104 | self.txtStats.insert(0.0, "You are ready to battle.")
105 | self.txtStats.config(state=DISABLED)
106 |
107 | self.checkBtn.config(state=DISABLED)
108 | self.entName1.config(state=DISABLED)
109 | self.entName2.config(state=DISABLED)
110 | self.pokedexBtn.config(state=DISABLED)
111 | self.battleBtn.config(state=NORMAL)
112 |
113 | self.userPokemon = Pokemon(self.userStrVar.get())
114 | self.cpuPokemon = Pokemon(self.cpuStrVar.get())
115 |
116 | # Returning an error message if Pokemon are not valid
117 | else:
118 | self.txtStats.config(state=NORMAL)
119 | self.txtStats.delete(0.0, END)
120 | self.txtStats.insert(0.0, "Please make sure the Pokemon you've entered are in the Pokedex")
121 | self.txtStats.config(state=DISABLED)
122 | self.battleBtn.config(state=DISABLED)
123 |
124 | # Creating a method to actually start the battle
125 | def beginBattle(self):
126 | # Replacing the blank image with the actual sprites of the appropriate Pokemon
127 | # Using the user-input string to determine which sprite image to use
128 | self.sprite1 = PhotoImage(file="Sprites/" + self.userStrVar.get().lower() + ".gif")
129 | self.sprite1Label.configure(image=self.sprite1)
130 | self.sprite1Label.image = self.sprite1
131 |
132 | self.sprite2 = PhotoImage(file="Sprites/" + self.cpuStrVar.get().lower() + ".gif")
133 | self.sprite2Label.configure(image=self.sprite2)
134 | self.sprite2Label.image = self.sprite2
135 |
136 | # Printing each Pokemon's HP and moveset to its respective box
137 | self.moveText1.config(state=NORMAL)
138 | self.moveText2.config(state=NORMAL)
139 | self.moveText1.delete(0.0, END)
140 | self.moveText2.delete(0.0, END)
141 | self.moveText1.insert(0.0, self.userPokemon.printHP() + "\n" + self.userPokemon.printMoves())
142 | self.moveText2.insert(0.0, self.cpuPokemon.printHP() + "\n" + self.cpuPokemon.printMoves())
143 | self.moveText1.config(state=DISABLED)
144 | self.moveText2.config(state=DISABLED)
145 |
146 | # Deciding which Pokemon to enable first based on the speed (battleSpeed) stat
147 | if self.userPokemon.isAlive() and self.cpuPokemon.isAlive():
148 | if self.userPokemon.battleSpeed >= self.cpuPokemon.battleSpeed:
149 | self.moveEnt1.config(state=NORMAL)
150 | self.moveBtn1.config(state=NORMAL)
151 | elif self.cpuPokemon.battleSpeed > self.userPokemon.battleSpeed:
152 | self.moveEnt2.config(state=NORMAL)
153 | self.moveBtn2.config(state=NORMAL)
154 | self.battleBtn.config(state=DISABLED)
155 |
156 | # Method takes the user-inputted string and plugs it into the attack function
157 | # Prints the result of the attack function to the center text box
158 | def selectMove1(self):
159 | if self.moveStrVar1.get().lower() in self.userPokemon.moveList:
160 | self.txtStats.config(state=NORMAL)
161 | self.txtStats.delete(0.0, END)
162 | self.txtStats.insert(0.0, attack(self.moveStrVar1.get(), self.userPokemon, self.cpuPokemon))
163 | self.txtStats.config(state=DISABLED)
164 |
165 | # Updating the info for both Pokemon after the move has been used
166 | self.moveText1.config(state=NORMAL)
167 | self.moveText2.config(state=NORMAL)
168 | self.moveText1.delete(0.0, END)
169 | self.moveText2.delete(0.0, END)
170 | self.moveText1.insert(0.0, self.userPokemon.printHP() + "\n" + self.userPokemon.printMoves())
171 | self.moveText2.insert(0.0, self.cpuPokemon.printHP() + "\n" + self.cpuPokemon.printMoves())
172 | self.moveText1.config(state=DISABLED)
173 | self.moveText2.config(state=DISABLED)
174 |
175 | # If one of the Pokemon faints, this method will end the battle by disabling all other buttons/fields except
176 | # for the Restart button
177 | if not self.cpuPokemon.isAlive():
178 | self.txtStats.config(state=NORMAL)
179 | self.txtStats.insert(END, "\n" + self.cpuPokemon.faint())
180 | self.txtStats.insert(END, "\nPlay again?")
181 | self.txtStats.config(state=DISABLED)
182 | self.moveEnt1.delete(0, END)
183 | self.restartBtn.config(state=NORMAL)
184 | self.moveBtn1.config(state=DISABLED)
185 | self.moveEnt1.config(state=DISABLED)
186 | self.battleBtn.config(state=DISABLED)
187 |
188 | # If both Pokemon are alive, this method will disable the current Pokemon and enable the opposing Pokemon so
189 | # it can make its move as well
190 | else:
191 | self.moveEnt1.delete(0, END)
192 | self.moveEnt1.config(state=DISABLED)
193 | self.moveBtn1.config(state=DISABLED)
194 | self.moveEnt2.config(state=NORMAL)
195 | self.moveBtn2.config(state=NORMAL)
196 |
197 | # Does the same thing as selectMove1() just with respect to the other Pokemon
198 | def selectMove2(self):
199 | if self.moveStrVar2.get().lower() in self.cpuPokemon.moveList:
200 | self.txtStats.config(state=NORMAL)
201 | self.txtStats.delete(0.0, END)
202 | self.txtStats.insert(0.0, attack(self.moveStrVar2.get(), self.cpuPokemon, self.userPokemon))
203 | self.txtStats.config(state=DISABLED)
204 |
205 | # Updating the info for the other Pokemon
206 | self.moveText1.config(state=NORMAL)
207 | self.moveText2.config(state=NORMAL)
208 | self.moveText1.delete(0.0, END)
209 | self.moveText2.delete(0.0, END)
210 | self.moveText1.insert(0.0, self.userPokemon.printHP() + "\n" + self.userPokemon.printMoves())
211 | self.moveText2.insert(0.0, self.cpuPokemon.printHP() + "\n" + self.cpuPokemon.printMoves())
212 | self.moveText1.config(state=DISABLED)
213 | self.moveText2.config(state=DISABLED)
214 |
215 | if not self.userPokemon.isAlive():
216 | self.txtStats.config(state=NORMAL)
217 | self.txtStats.insert(END, "\n" + self.userPokemon.faint())
218 | self.txtStats.insert(END, "\nPlay again?")
219 | self.txtStats.config(state=DISABLED)
220 | self.moveEnt2.delete(0, END)
221 | self.restartBtn.config(state=NORMAL)
222 | self.moveText1.config(state=DISABLED)
223 | self.moveText2.config(state=DISABLED)
224 | self.moveEnt2.config(state=DISABLED)
225 | self.moveBtn2.config(state=DISABLED)
226 | self.battleBtn.config(state=DISABLED)
227 |
228 | else:
229 | self.moveEnt2.delete(0, END)
230 | self.moveEnt2.config(state=DISABLED)
231 | self.moveBtn2.config(state=DISABLED)
232 | self.moveEnt1.config(state=NORMAL)
233 | self.moveBtn1.config(state=NORMAL)
234 |
235 | # Completely clears and resets all text fields, buttons, and images to their original state
236 | def restart(self):
237 | # Resetting the Pokemon objects
238 | self.userPokemon = None
239 | self.cpuPokemon = None
240 |
241 | # Resetting all the widgets
242 | self.txtStats.config(state=NORMAL)
243 | self.moveText1.config(state=NORMAL)
244 | self.moveText2.config(state=NORMAL)
245 |
246 | self.txtStats.delete(0.0, END)
247 | self.moveText1.delete(0.0, END)
248 | self.moveText2.delete(0.0, END)
249 | self.moveEnt1.delete(0, END)
250 | self.moveEnt2.delete(0, END)
251 |
252 | self.txtStats.config(state=DISABLED)
253 | self.moveText1.config(state=DISABLED)
254 | self.moveText2.config(state=DISABLED)
255 |
256 | # Enabling widgets so the window returns to its original state
257 | self.entName1.config(state=NORMAL)
258 | self.entName1.delete(0, END)
259 |
260 | self.entName2.config(state=NORMAL)
261 | self.entName2.delete(0, END)
262 |
263 | self.checkBtn.config(state=NORMAL)
264 | self.pokedexBtn.config(state=NORMAL)
265 |
266 | # Disabling the restart button so the user can't constantly restart the game
267 | self.restartBtn.config(state=DISABLED)
268 |
269 | # Resetting the Sprites
270 | tempImg = PhotoImage(file="Sprites/white.gif")
271 | self.sprite1Label.configure(image=tempImg)
272 | self.sprite1Label.image = tempImg
273 |
274 | self.sprite2Label.configure(image=tempImg)
275 | self.sprite2Label.image = tempImg
276 |
277 |
278 |
279 |
280 |
281 |
--------------------------------------------------------------------------------
/.idea/workspace.xml:
--------------------------------------------------------------------------------
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 |
110 |
111 |
112 | true
113 |
114 |
115 |
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 |
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 |
722 |
723 |
724 |
725 |
726 |
727 |
728 |
729 |
730 |
731 |
732 |
733 |
734 |
735 |
736 |
737 |
738 |
739 |
740 |
741 |
742 |
743 |
744 |
745 |
746 |
747 |
748 |
749 |
750 |
751 |
752 |
753 |
754 |
755 |
756 |
757 |
758 |
759 |
760 |
761 |
762 |
763 |
764 |
765 |
766 |
767 |
768 |
769 |
770 |
771 |
772 |
773 |
774 |
775 |
776 |
777 |
778 |
779 |
780 |
781 |
782 |
783 |
784 |
785 |
786 |
787 |
788 |
789 |
790 |
791 |
792 |
793 |
794 |
795 |
796 |
797 |
798 |
799 |
800 |
801 |
802 |
803 |
804 |
805 |
806 |
807 |
808 |
809 |
--------------------------------------------------------------------------------
/Pokemon Moves.csv:
--------------------------------------------------------------------------------
1 | #,Name ,Effect,Type ,Kind,Power,Accuracy,PP
,,,,,,,
1,Pound,Deals damage with no additional effect.,Normal,Physical,40,100%,35
2,Karate Chop,Has a high critical hit ratio.,Fighting,Physical,50,100%,25
3,DoubleSlap,Attacks 2-5 times in one turn; if one of these attacks breaks a target's Substitute the target will take damage for the rest of the hits. This move has a 3/8 chance to hit twice a 3/8 chance to hit three times a 1/8 chance to hit four times and a 1/8 chance to hit five times. If the user of this move has Skill Link this move will always strike five times.,Normal,Physical,15,85%,10
4,Comet Punch,Attacks 2-5 times in one turn; if one of these attacks breaks a target's Substitute the target will take damage for the rest of the hits. This move has a 3/8 chance to hit twice a 3/8 chance to hit three times a 1/8 chance to hit four times and a 1/8 chance to hit five times. If the user of this move has Skill Link this move will always strike five times.,Normal,Physical,18,85%,15
5,Mega Punch,Deals damage with no additional effect.,Normal,Physical,80,85%,20
6,Pay Day,The player picks up extra money after in-game battles; the money received is equal to: [user's level * 5 * number of times Pay Day is used]. The player does not lose money if the opponent uses Pay Day but the player wins the battle.,Normal,Physical,40,100%,20
7,Fire Punch,Has a 10% chance to burn the target.,Fire,Physical,75,100%,15
8,Ice Punch,Has a 10% chance to freeze the target.,Ice,Physical,75,100%,15
9,ThunderPunch,Has a 10% chance to paralyze the target.,Electric,Physical,75,100%,15
10,Scratch,Deals damage with no additional effect.,Normal,Physical,40,100%,35
11,ViceGrip,Deals damage with no additional effect.,Normal,Physical,55,100%,30
12,Guillotine,The target faints; doesn't work on higher-leveled Pokemon.,Normal,Physical,0,30%,5
13,Razor Wind,The user prepares on turn one becoming uncontrollable and then attacks on turn two. Has a high critical hit ratio.,Normal,Special,80,100%,10
14,Swords Dance,Raises the user's Attack by 2 stages.,Normal,Status,0,,30
15,Cut,Deals damage with no additional effect.,Normal,Physical,50,95%,30
16,Gust,Power doubles if the target is in mid-air via Fly or Bounce.,Flying,Special,40,100%,35
17,Wing Attack,Deals damage with no additional effect.,Flying,Physical,60,100%,35
18,Whirlwind,Almost always goes last; in trainer battles the target is switched out for a random member of its team. Escapes from wild battles. Has no effect if the target has Suction Cups or used Ingrain.,Normal,s+,0,100%,20
19,Fly,On the first turn the user flies into the air becoming uncontrollable and evades most attacks. Gust Twister Thunder and Sky Uppercut have normal accuracy against a mid-air Pokemon with Gust and Twister also gaining doubled power. The user may also be hit in mid-air if it was previously targeted by Lock-On or Mind Reader or if it is attacked by a Pokemon with No Guard. On the second turn the user attacks.,Flying,Physical,90,95%,15
20,Bind,Traps the target for 5-6 turns causing damage equal to 1/16 of its max HP each turn; this trapped effect can be broken by Rapid Spin. The target can still switch out if it is holding Shed Shell or uses Baton Pass or U-Turn.,Normal,Physical,15,85%,20
21,Slam,Deals damage with no additional effect.,Normal,Physical,80,75%,20
22,Vine Whip,Deals damage with no additional effect.,Grass,Physical,35,100%,15
23,Stomp,Has a 30% chance to make the target flinch; also retains its normal accuracy and gains doubled power against Minimized Pokemon.,Normal,Physical,65,100%,20
24,Double Kick,Strikes twice; if the first hit breaks the target's Substitute the real Pokemon will take damage from the second hit.,Fighting,Physical,30,100%,30
25,Mega Kick,Deals damage with no additional effect.,Normal,Physical,120,75%,5
26,Jump Kick,If this attack misses the target the user half of its max health in recoil damage.,Fighting,Physical,100,95%,10
27,Rolling Kick,Has a 30% chance to make the target flinch.,Fighting,Physical,60,85%,15
28,Sand-Attack,Lowers the target's Accuracy by 1 stage.,Ground,acc-,0,100%,15
29,Headbutt,Has a 30% chance to make the target flinch.,Normal,Physical,70,100%,15
30,Horn Attack,Deals damage with no additional effect.,Normal,Physical,65,100%,25
31,Fury Attack,Attacks 2-5 times in one turn; if one of these attacks breaks a target's Substitute the target will take damage for the rest of the hits. This move has a 3/8 chance to hit twice a 3/8 chance to hit three times a 1/8 chance to hit four times and a 1/8 chance to hit five times. If the user of this move has Skill Link this move will always strike five times.,Normal,Physical,15,85%,20
32,Horn Drill,The target faints; doesn't work on higher-leveled Pokemon.,Normal,Physical,0,30%,5
33,Tackle,Deals damage with no additional effect.,Normal,Physical,50,100%,35
34,Body Slam,Has a 30% chance to paralyze the target.,Normal,Physical,85,100%,15
35,Wrap,Traps the target for 5-6 turns causing damage equal to 1/16 of its max HP each turn; this trapped effect can be broken by Rapid Spin. The target can still switch out if it is holding Shed Shell or uses Baton Pass or U-Turn.,Normal,Physical,15,90%,20
36,Take Down,The user receives 1/4 recoil damage.,Normal,Physical,90,85%,20
37,Thrash,The user attacks uncontrollably for 2-3 turns and then gets confused.,Normal,Physical,120,100%,10
38,Double-Edge,The user receives 1/3 recoil damage.,Normal,Physical,120,100%,15
39,Tail Whip,Lowers the target's Defense by 1 stage.,Normal,d-,0,100%,30
40,Poison Sting,Has a 30% chance to poison the target.,Poison,Physical,15,100%,35
41,Twineedle,Strikes twice; if the first hit breaks the target's Substitute the real Pokemon will take damage from the second hit. Has a 20% chance to poison the target .,Bug,Physical,25,100%,20
42,Pin Missile,Attacks 2-5 times in one turn; if one of these attacks breaks a target's Substitute the target will take damage for the rest of the hits. This move has a 3/8 chance to hit twice a 3/8 chance to hit three times a 1/8 chance to hit four times and a 1/8 chance to hit five times. If the user of this move has Skill Link this move will always strike five times.,Bug,Physical,14,85%,20
43,Leer,Lowers the target's Defense by 1 stage.,Normal,d-,0,100%,30
44,Bite,Has a 30% chance to make the target flinch.,Dark,Physical,60,100%,25
45,Growl,Lowers the target's Attack by 1 stage.,Normal,a-,0,100%,40
46,Roar,Almost always goes last; in trainer battles the target is switched out for a random member of its team. Escapes from wild battles. Has no effect if the target has Suction Cups Soundproof or used Ingrain.,Normal,Status,0,100%,20
47,Sing,Puts the target to sleep.,Normal,Status,0,55%,15
48,Supersonic,Confuses the target.,Normal,Status,0,55%,20
49,SonicBoom,Always deals 20 points of damage.,Normal,Special,20,90%,20
50,Disable,The target cannot choose its last move for 4-7 turns. Disable only works on one move at a time and fails if the target has not yet used a move or if its move has run out of PP. The target does nothing if it is about to use a move that becomes disabled.,Normal,d-,0,100%,20
51,Acid,Has a 10% chance to lower the target's Special Defense by 1 stage.,Poison,Special,40,100%,30
52,Ember,Has a 10% chance to burn the target.,Fire,Special,40,100%,25
53,Flamethrower,Has a 10% chance to burn the target.,Fire,Special,95,100%,15
54,Mist,Protects every Pokemon on the user's team from negative stat modifiers caused by other Pokemon (including teammates) but not by itself for five turns. The team's Accuracy and Evasion stats are also protected. Moves that cause negative stat modifiers as a secondary effect such as Psychic still deal their regular damage.,Ice,d+,0,,30
55,Water Gun,Deals damage with no additional effect.,Water,Special,40,100%,25
56,Hydro Pump,Deals damage with no additional effect.,Water,Special,120,80%,5
57,Surf,Power doubles against a target who is in the middle of using Dive.,Water,Special,95,100%,15
58,Ice Beam,Has a 10% chance to freeze the target.,Ice,Special,95,100%,10
59,Blizzard,Has a 10% chance to freeze the target. During Hail this move will never miss under normal circumstances and has a 30% chance to hit through a target's Protect or Detect.,Ice,Special,120,70%,5
60,Psybeam,Has a 10% chance to confuse the target.,Psychic,Special,65,100%,20
61,BubbleBeam,Has a 10% chance to lower the target's Speed by 1 stage.,Water,Special,65,100%,20
62,Aurora Beam,Has a 10% chance to lower the target's Attack by 1 stage.,Ice,Special,65,100%,20
63,Hyper Beam,The user recharges during its next turn; as a result until the end of the next turn the user becomes uncontrollable.,Normal,Special,150,90%,5
64,Peck,Deals damage with no additional effect.,Flying,Physical,35,100%,35
65,Drill Peck,Deals damage with no additional effect.,Flying,Physical,80,100%,20
66,Submission,The user receives 1/4 recoil damage.,Fighting,Physical,80,80%,25
67,Low Kick,Base power increases as the target's weight increases.,Fighting,Physical,50,100%,20
68,Counter,Almost always goes last; if an opponent strikes with a Physical attack before the user's turn the user retaliates for twice the damage it had endured. In double battles this attack targets the last opponent to hit the user with a Physical attack and cannot hit the user's teammate.,Fighting,Physical,50,100%,20
69,Seismic Toss,Does damage equal to user's level.,Fighting,Physical,50,100%,20
70,Strength,Deals damage with no additional effect.,Normal,Physical,80,100%,15
71,Absorb,Restores the user's HP by 1/2 of the damage inflicted on the target.,Grass,Special,20,100%,25
72,Mega Drain,Restores the user's HP by 1/2 of the damage inflicted on the target.,Grass,Special,40,100%,15
73,Leech Seed,The user steals 1/8 of the target's max HP until the target is switched out is KO'ed or uses Rapid Spin; does not work against Grass-type Pokemon or Pokemon behind Substitutes.,Grass,d-,0,90%,10
74,Growth,Raises the user's Attack and Special Attack by 1 stage. If the weather is Sun Growth raises Attack and SpAttk two stages each. ,Normal,a+,0,,40
75,Razor Leaf,Has a high critical hit ratio.,Grass,Physical,55,95%,25
76,SolarBeam,The user prepares on turn one becoming uncontrollable and then attacks on turn two. During Sunny Day this move fires immediately; during Rain Dance Sandstorm and Hail this move has half power.,Grass,Special,120,100%,10
77,PoisonPowder,Poisons the target.,Poison,d-,0,75%,35
78,Stun Spore,Paralyzes the target.,Grass,s-,0,75%,30
79,Sleep Powder,Puts the target to sleep.,Grass,s-,0,75%,15
80,Petal Dance,The user attacks uncontrollably for 2-3 turns and then gets confused.,Grass,Special,120,100%,10
81,String Shot,Lowers the target's Speed by 1 stage.,Bug,s-,0,95%,40
82,Dragon Rage,Always deals 40 points of damage.,Dragon,Special,40,100%,10
83,Fire Spin,Traps the target for 5-6 turns causing damage equal to 1/16 of its max HP each turn; this trapped effect can be broken by Rapid Spin. The target can still switch out if it is holding Shed Shell or uses Baton Pass or it uses U-Turn.,Fire,Special,35,85%,15
84,ThunderShock,Has a 10% chance to paralyze the target.,Electric,Special,40,100%,30
85,Thunderbolt,Has a 10% chance to paralyze the target.,Electric,Special,95,100%,15
86,Thunder Wave,Paralyzes the target. This move activates Motor Drive.,Electric,s-,0,100%,20
87,Thunder,Has a 30% chance to paralyze the target. It also has normal accuracy against mid-air Pokemon who have used Fly or Bounce. During Sunny Day this move has 50% accuracy. During Rain Dance this move will never miss under normal circumstances and has a 30% chance to hit through a target's Protect or Detect.,Electric,Special,120,70%,10
88,Rock Throw,Deals damage with no additional effect.,Rock,Physical,50,90%,15
89,Earthquake,Power doubles when performed against Pokemon using Dig.,Ground,Physical,100,100%,10
90,Fissure,The target faints; doesn't work on higher-leveled Pokemon.,Ground,Physical,0,30%,5
91,Dig,On the first turn the user digs underground becoming uncontrollable and evades all attacks. Earthquake and Magnitude can hit underground and gain doubled power. The user may also be hit underground if it was previously targeted by Lock-On or Mind Reader or if it is attacked by a Pokemon with No Guard. On the second turn the user attacks.,Ground,Physical,80,100%,10
92,Toxic,The target is badly poisoned with the damage caused by poison doubling after each turn. Toxic poisoning will remain with the Pokemon during the battle even after switching out.,Poison,d-,0,90%,10
93,Confusion,Has a 10% chance to confuse the target.,Psychic,Special,50,100%,25
94,Psychic,Has a 10% chance to lower the target's Special Defense by 1 stage.,Psychic,Special,90,100%,10
95,Hypnosis,Puts the target to sleep.,Psychic,s-,0,60%,20
96,Meditate,Raises the user's Attack by 1 stage.,Psychic,a+,0,,40
97,Agility,Raises the user's Speed by 2 stages.,Psychic,s+,0,,30
98,Quick Attack,Usually goes first.,Normal,Physical,40,100%,30
99,Rage,The user's Attack rises by 1 stage if attacked before its next move.,Normal,Physical,20,100%,20
100,Teleport,Escapes from wild battles; fails automatically in trainer and link battles.,Psychic,s+,0,,20
101,Night Shade,Does damage equal to user's level.,Ghost,Special,50,100%,15
102,Mimic,This move is temporarily replaced by the target's last move; the replacement move will have 5 PP and become part of the user's moveset until the user switches out or the battle ends. Mimic copies attacks even if they miss or the user has immunity toward their type; it cannot copy itself Struggle Transform Sketch Metronome or moves that the user already knows and it will fail if the target has yet to use a move.,Normal,a+,0,100%,10
103,Screech,Lowers the target's Defense by 2 stages.,Normal,d-,0,85%,40
104,Double Team,Raises the user's Evasion by 1 stage.,Normal,acc-,0,,15
105,Recover,Restores 1/2 of the user's max HP.,Normal,d+,0,,10
106,Harden,Raises the user's Defense by 1 stage.,Normal,d+,0,,30
107,Minimize,Raises the user's Evasion by 2 stage; however Stomp retains its normal accuracy and gains doubled power against Minimized Pokemon.,Normal,acc-,0,,20
108,SmokeScreen,Lowers the target's Accuracy by 1 stage.,Normal,acc-,0,100%,20
109,Confuse Ray,Confuses the target.,Ghost,d-,0,100%,10
110,Withdraw,Raises the user's Defense by 1 stage.,Water,d+,0,,40
111,Defense Curl,Raises the user's Defense by 1 stage; after one use of this move the user's starting base power is doubled for every use of Rollout or Ice Ball.,Normal,d+,0,,40
112,Barrier,Raises the user's Defense by 2 stages.,Psychic,d+,0,,30
113,Light Screen,All Pokemon in the user's party receive 1/2 damage from Special attacks for 5 turns. Light Screen will be removed from the user's field if an opponent's Pokemon uses Brick Break. It will also last for eight turns if its user is holding Light Clay. In double battles both Pokemon are shielded but damage protection is reduced from 1/2 to 1/3.,Psychic,sd+,0,,30
114,Haze,Eliminates any stat modifiers from all active Pokemon. The stat boosts from Choice Band Choice Lens and Choice Scarf are not affected.,Ice,d+,0,,30
115,Reflect,All Pokemon in the user's party receive 1/2 damage from Physical attacks for 5 turns. Reflect will be removed from the user's field if an opponent's Pokemon uses Brick Break. It will also last for eight turns if its user is holding Light Clay. In double battles both Pokemon are shielded but damage protection is reduced from 1/2 to 1/3.,Psychic,d+,0,,20
116,Focus Energy,Raises the user's chance for a Critical Hit by two domains.,Normal,a+,0,,30
117,Bide,Usually goes first for the duration of the move. The user absorbs all damage for two turns and then during the third turn the user inflicts twice the absorbed damage on its target. This move ignores the target's type and even hits Ghost-type Pokemon.,Normal,Physical,50,100%,10
118,Metronome,The user performs a randomly selected move; almost any move in the game could be picked. Metronome cannot generate itself Assist Chatter Copycat Counter Covet Destiny Bond Detect Endure Feint Focus Punch Follow Me Helping Hand Me First Mimic Mirror Coat Mirror Move Protect Sketch Sleep Talk Snatch Struggle Switcheroo Thief Trick or any move that the user already knows.,Normal,Status,0,,10
119,Mirror Move,The user performs the last move executed by its target; if applicable an attack's damage is calculated with the user's stats level and type(s). This moves fails if the target has not yet used a move. Mirror Move cannot copy Encore Struggle global moves affecting all Pokemon on the field (such as Gravity Hail Rain Dance Sandstorm and Sunny Day) moves that can bypass Protect (Acupressure Doom Desire Future Sight Imprison Perish Song Psych Up Role Play and Transform) and moves that do not have a specific target (such as Light Screen Reflect Safeguard Spikes Stealth Rock and Toxic Spikes).,Flying,Status,0,,20
120,Selfdestruct,Causes the user to faint.,Normal,Physical,200,100%,5
121,Egg Bomb,Deals damage with no additional effect.,Normal,Physical,100,75%,10
122,Lick,Has a 30% chance to paralyze the target.,Ghost,Physical,20,100%,30
123,Smog,Has a 40% chance to poison the target.,Poison,Special,20,70%,20
124,Sludge,Has a 30% chance to poison the target.,Poison,Special,65,100%,20
125,Bone Club,Has a 10% chance to make the target flinch.,Ground,Physical,65,85%,20
126,Fire Blast,Has a 10% chance to burn the target.,Fire,Special,120,85%,5
127,Waterfall,Has a 20% chance to make the target flinch.,Water,Physical,80,100%,15
128,Clamp,Traps the target for 5-6 turns causing damage equal to 1/16 of its max HP each turn; this trapped effect can be broken by Rapid Spin. The target can still switch out if it is holding Shed Shell or uses Baton Pass or U-Turn.,Water,Physical,35,85%,10
129,Swift,Ignores Evasion and Accuracy modifiers and never misses except against Protect Detect or a target in the middle of Dig Fly Dive or Bounce.,Normal,Special,60,101%,20
130,Skull Bash,The user prepares on turn one raising its Defense by 1 stage and becoming uncontrollable and then attacks on turn two.,Normal,Physical,100,100%,15
131,Spike Cannon,Attacks 2-5 times in one turn; if one of these attacks breaks a target's Substitute the target will take damage for the rest of the hits. This move has a 3/8 chance to hit twice a 3/8 chance to hit three times a 1/8 chance to hit four times and a 1/8 chance to hit five times. If the user of this move has Skill Link this move will always strike five times.,Normal,Physical,20,100%,15
132,Constrict,Has a 10% chance to lower the target's Speed by 1 stage.,Normal,Physical,10,100%,35
133,Amnesia,Raises the user's Special Defense by 2 stages.,Psychic,sd+,0,,20
134,Kinesis,Lowers the target's Accuracy by 1 stage.,Psychic,acc-,0,80%,15
135,Softboiled,Restores 1/2 of the user's max HP.,Normal,d+,0,100%,10
136,Hi Jump Kick,If this attack misses the target the user half of its max health in recoil damage.,Fighting,Physical,130,90%,10
137,Glare,Paralyzes the target.,Normal,s-,0,90%,30
138,Dream Eater,Restores the user's HP by 1/2 of the damage inflicted on the target but only works on a sleeping target.,Psychic,Special,100,100%,15
139,Poison Gas,Poisons the target.,Poison,d-,0,90%,40
140,Barrage,Attacks 2-5 times in one turn; if one of these attacks breaks a target's Substitute the target will take damage for the rest of the hits. This move has a 3/8 chance to hit twice a 3/8 chance to hit three times a 1/8 chance to hit four times and a 1/8 chance to hit five times. If the user of this move has Skill Link this move will always strike five times.,Normal,Physical,15,85%,20
141,Leech Life,Restores the user's HP by 1/2 of the damage inflicted on the target.,Bug,Physical,20,100%,15
142,Lovely Kiss,Puts the target to sleep.,Normal,s-,0,75%,10
143,Sky Attack,The user prepares on turn one becoming uncontrollable and then attacks on turn two. Also has a 30% chance to make the target flinch.,Flying,Physical,140,90%,5
144,Transform,The user morphs into a near-exact copy of the target. Stats stat modifiers type moves Hidden Power data and appearance are changed; the user's level and HP remain the same and each copied move receives only 5 PP. (If Transform is used by Ditto the effects of Metal Powder and Quick Powder stop working after transformation.),Normal,Status,0,,10
145,Bubble,Has a 10% chance to lower the target's Speed by 1 stage.,Water,Special,20,100%,30
146,Dizzy Punch,Has a 20% chance to confuse the target.,Normal,Physical,70,100%,10
147,Spore,Puts the target to sleep.,Grass,s-,0,100%,15
148,Flash,Lowers the target's Accuracy by 1 stage.,Normal,acc-,0,100%,20
149,Psywave,Randomly inflicts set damage equal to .5x .6x .7x .8x .9x 1.0x 1.1x 1.2x 1.3x 1.4x or 1.5x the user's level.,Psychic,Special,50,80%,15
150,Splash,Doesn't do anything (but we still love it). Unfortunately it also cannot be used during the effects of Gravity! :(,Normal,Status,0,,40
151,Acid Armor,Raises the user's Defense by 2 stages.,Poison,d+,0,,40
152,Crabhammer,Has a high critical hit ratio.,Water,Physical,90,90%,10
153,Explosion,Causes the user to faint.,Normal,Physical,250,100%,5
154,Fury Swipes,Attacks 2-5 times in one turn; if one of these attacks breaks a target's Substitute the target will take damage for the rest of the hits. This move has a 3/8 chance to hit twice a 3/8 chance to hit three times a 1/8 chance to hit four times and a 1/8 chance to hit five times. If the user of this move has Skill Link this move will always strike five times.,Normal,Physical,18,80%,15
155,Bonemerang,Strikes twice; if the first hit breaks the target's Substitute the real Pokemon will take damage from the second hit.,Ground,Physical,50,90%,10
156,Rest,The user is cured of status effects (and confusion) and recovers full HP but falls asleep for 2 turns. Pokemon who have Early Bird will wake up one turn early.,Psychic,d+,0,,10
157,Rock Slide,Has a 30% chance to make the target flinch.,Rock,Physical,75,90%,10
158,Hyper Fang,Has a 10% chance to make the target flinch.,Normal,Physical,80,90%,15
159,Sharpen,Raises the user's Attack by 1 stage.,Normal,a+,0,,30
160,Conversion,The user's type changes to match the type of one of its four attacks. This move fails if the user cannot change its type under this condition.,Normal,Status,0,,30
161,Tri Attack,Has a 20% chance to burn paralyze or freeze the target.,Normal,Special,80,100%,10
162,Super Fang,This move halves the target's current HP.,Normal,Physical,50,90%,10
163,Slash,Has a high critical hit ratio.,Normal,Physical,70,100%,20
164,Substitute,The user takes one-fourth of its maximum HP to create a substitute; this move fails if the user does not have enough HP for this. Until the substitute is broken it receives damage from all attacks made by other Pokemon and shields the user from status effects and stat modifiers caused by other Pokemon. The user is still affected by Tickle Hail Sandstorm and Attract from behind its Substitute. If a Substitute breaks from a hit during a multistrike move such as Fury Attack the user takes damage from the remaining strikes.,Normal,d+,0,,10
165,Struggle,Used automatically when all of the user's other moves have run out of PP or are otherwise inaccessible. The user receives recoil damage equal to 1/4 of its max HP. Struggle is classified as a typeless move and will hit any Pokemon for normal damage.,Typeless,Physical,50,100%,1
166,Sketch,The user permanently replaces Sketch with the last move used by the target. Sketch cannot copy itself Chatter Memento or Struggle. Transform and moves that generate other moves can be Sketched successfully as can Explosion and Selfdestruct if a Pokemon with Damp is present. Healing Wish and Lunar Dance can be Sketched because they automatically fail when the user is the last Pokemon of its team. This move fails automatically when selected in wireless or Wi-Fi battles.,Normal,Status,0,,1
167,Triple Kick,Attacks three times in one turn adding 10 BP for each kick. If a kick misses the move ends instantly; if one of the kicks breaks a target's Substitute the real Pokemon will take damage for the remaining kicks.,Fighting,Physical,10,90%,10
168,Thief,Steals the target's held item unless the user is already holding an item or the target has Sticky Hold or Multitype. A stolen item cannot be recovered by using Recycle.,Dark,Physical,40,100%,10
169,Spider Web,As long as the user remains in battle the target cannot switch out unless it is holding Shed Shell or uses Baton Pass or U-Turn. The target will still be trapped if the user switches out by using Baton Pass.,Bug,Status,0,100%,10
170,Mind Reader,This move ensures that the user's next attack will hit against its current target. This effect can be Baton Passed to another Pokemon. Mind Reader fails against Pokemon in the middle of using Protect Detect Dig Fly Bounce or Dive as well as Pokemon behind a Substitute. If the target uses Protect or Detect during its next turn the user's next move has a [100 Varmove's normal accuracy]% chance to hit through Protect or Detect. OHKO moves do not benefit from this trait.,Normal,Status,0,100%,5
171,Nightmare,This move only works on a sleeping target; as long as the target remains asleep and in battle 1/4 of its max HP is sapped after each turn.,Ghost,Status,0,100%,15
172,Flame Wheel,Has a 10% chance to burn the target; can be used while frozen which both attacks the target normally and thaws the user.,Fire,Physical,60,100%,25
173,Snore,Has a 30% chance to make the target flinch; fails if user is awake.,Normal,Special,40,100%,15
174,Curse,When used by a Ghost-type the user sacrifices half of its max HP to sap the target by 1/4 of its max HP per turn. When used by anything else the user's Speed is decreased by 1 stage and its Attack and Defense are increased by 1 stage.,Ghost,a-,0,,10
175,Flail,Base power increases as the user's HP decreases.,Normal,Physical,50,100%,15
176,Conversion 2,The user's type changes to one that resists the type of the last attack that hit the user. In double battles this situation holds even when the user is last hit by an attack from its partner.,Normal,Status,0,100%,30
177,Aeroblast,Has a high critical hit ratio.,Flying,Special,100,95%,5
178,Cotton Spore,Lowers the target's Speed by 2 stages.,Grass,s-,0,100%,40
179,Reversal,Base power increases as the user's HP decreases.,Fighting,Physical,50,100%,15
180,Spite,The target's most recent move is reduced by 4 PP; this fails if the target has not yet performed a move if the target's last move has run out of PP or if the target can only use Struggle.,Ghost,d-,0,100%,10
181,Powder Snow,Has a 10% chance to freeze the target.,Ice,Special,40,100%,25
182,Protect,Almost always goes first. The user is protected from all attacks for one turn but the move's success rate halves with each consecutive use of Protect Detect or Endure. If a Pokemon has No Guard or used Lock-On or Mind Reader against the user during the previous turn its attack has a [100 Varmove's normal accuracy]% chance to hit through Protect; OHKO moves do not benefit from this effect. Blizzard has a 30% to hit through this move during Hail as does Thunder during Rain Dance.,Normal,d+,0,,10
183,Mach Punch,Usually goes first.,Fighting,Physical,40,100%,30
184,Scary Face,Lowers the target's Speed by 2 stages.,Normal,s-,0,90%,10
185,Faint Attack,Ignores Evasion and Accuracy modifiers and never misses except against Protect Detect or a target in the middle of Dig Fly Dive or Bounce.,Dark,Physical,60,101%,20
186,Sweet Kiss,Confuses the target.,Normal,d-,0,75%,10
187,Belly Drum,The user maximizes its Attack but sacrifices 50% of its max HP.,Normal,a+,0,,10
188,Sludge Bomb,Has a 30% chance to poison the target.,Poison,Special,90,100%,10
189,Mud-Slap,Has a 30% chance to lower the target's Accuracy by 1 stage.,Ground,Special,20,100%,10
190,Octazooka,Has a 50% chance to lower the target's Accuracy by 1 stage.,Water,Special,65,85%,10
191,Spikes,Damages opponents unless they are Flying-type or have Levitate every time they are switched in; hits through Wonder Guard. Can be used up to three times: saps 1/8 of max HP with one layer 3/16 of max HP with two layers and 1/4 of max HP for three layers.,Ground,Status,0,,20
192,Zap Cannon,Paralyzes the target.,Electric,Special,120,50%,5
193,Foresight,Until the target faints or switches the user's Accuracy modifiers and the target's Evasion modifiers are ignored. Ghost-type targets also lose their immunities against Normal-type and Fighting-type moves.,Normal,Status,0,100%,40
194,Destiny Bond,Causes an opponent to faint if its next attack KOs the user.,Ghost,Status,0,,5
195,Perish Song,All active Pokemon will faint in 3 turns unless they are switched out.,Normal,Status,0,,5
196,Icy Wind,Lowers the target's Speed by 1 stage.,Ice,Special,55,95%,15
197,Detect,Almost always goes first. The user is protected from all attacks for one turn but the move's success rate halves with each consecutive use of Protect Detect or Endure. If a Pokemon has No Guard or used Lock-On or Mind Reader against the user during the previous turn its attack has a [100 Varmove's normal accuracy]% chance to hit through Detect; OHKO moves do not benefit from this effect. Blizzard has a 30% to hit through this move during Hail as does Thunder during Rain Dance.,Fighting,Status,0,,5
198,Bone Rush,Attacks 2-5 times in one turn; if one of these attacks breaks a target's Substitute the target will take damage for the rest of the hits. This move has a 3/8 chance to hit twice a 3/8 chance to hit three times a 1/8 chance to hit four times and a 1/8 chance to hit five times. If the user of this move has Skill Link this move will always strike five times.,Ground,Physical,25,80%,10
199,Lock-On,This move ensures that the user's next attack will hit against its current target. This effect can be Baton Passed to another Pokemon. Lock-On fails against Pokemon in the middle of using Protect Detect Dig Fly Bounce or Dive as well as Pokemon behind a Substitute. If the target uses Protect or Detect during its next turn the user's next move has a [100 Varmove's normal accuracy]% chance to hit through Protect or Detect. OHKO moves do not benefit from this trait.,Normal,Status,0,100%,5
200,Outrage,The user attacks uncontrollably for 2-3 turns and then gets confused.,Dragon,Physical,120,100%,15
201,Sandstorm,Cancels all other weather moves. For 5 turns: the Special Defense of Rock-type Pokemon is boosted by 50% each active Pokemon even when protected by a Substitute loses 1/16 of its max HP unless it has Sand Veil or is a Ground- Rock- or Steel-type the power of Solarbeam is halved and the healing power of Morning Sun Synthesis and Moonlight is halved. The effects of Sandstorm will last for eight turns if its user is holding Smooth Rock.,Rock,Status,0,,10
202,Giga Drain,Restores the user's HP by 1/2 of the damage inflicted on the target.,Grass,Special,75,100%,10
203,Endure,Almost always goes first. The user is left with at least 1 HP following any attacks for one turn but the move's success rate halves with each consecutive use of Protect Detect or Endure.,Normal,Status,0,,10
204,Charm,Lowers the target's Attack by 2 stages.,Normal,Status,0,100%,20
205,Rollout,The user attacks uncontrollably for five turns; this move's power doubles after each turn and also if Defense Curl was used beforehand. Its power resets after five turns have ended or if the attack misses.,Rock,Physical,30,90%,20
206,False Swipe,Leaves the target with at least 1 HP.,Normal,Physical,40,100%,40
207,Swagger,Confuses the target and raises its Attack by 2 stages.,Normal,a-,0,90%,15
208,Milk Drink,Restores 1/2 of the user's max HP.,Normal,Status,0,,10
209,Spark,Has a 30% chance to paralyze the target.,Electric,Physical,65,100%,20
210,Fury Cutter,The base power of this move doubles with each consecutive hit; however power is capped at a maximum 160 BP and remains there for any subsequent uses. If this move misses base power will be reset to 10 BP on the next turn. The user can also select other attacks without resetting this move's power; it will continue to double after each use until it either misses or reaches the 160 BP cap.,Bug,Physical,20,95%,20
211,Steel Wing,Has a 10% chance to raise the user's Defense by 1 stage.,Steel,Physical,70,90%,25
212,Mean Look,As long as the user remains in battle the target cannot switch out unless it is holding Shed Shell or uses Baton Pass or U-Turn. The target will still be trapped if the user switches out by using Baton Pass.,Normal,Status,0,100%,5
213,Attract,Infatuates Pokemon of the opposite gender even if they have a Substitute causing a 50% chance for the target's attack to fail.,Normal,Status,0,100%,15
214,Sleep Talk,Does nothing if the user is awake. If the user asleep it randomly performs one of its attacks. Rest will fail if it is selected. Sleep Talk's generated attacks do not cost PP but it cannot generate moves with 0 PP itself Assist Bide Chatter Copycat Disabled attacks Focus Punch Me First Metronome Mirror Move Uproar or attacks with a charge-up turn like Fly or Skull Bash. (Moves with a recharge turn like Hyper Beam can be generated.),Normal,Status,0,,10
215,Heal Bell,Every Pokemon in the user's party is cured of status conditions. Allied Pokemon who have Soundproof are not affected.,Normal,Status,0,,5
216,Return,Power increases as user's happiness increases; maximum 102 BP.,Normal,Physical,50,100%,20
217,Present,Randomly either attacks with a variable power between 40 base power and 120 base power or heals the target by 80 HP.,Normal,Physical,50,90%,15
218,Frustration,Power increases as user's happiness decreases; maximum 102 BP.,Normal,Physical,50,100%,20
219,Safeguard,Protects the user's entire team from status conditions for five turns.,Normal,Status,0,,25
220,Pain Split,Calculates the average of the user's current HP and the target's HP; the HP of both Pokemon is set to this average. Pokemon can be healed by Pain Split even under the effects of Heal Block.,Normal,Status,0,100%,20
221,Sacred Fire,Has a 50% chance to burn the target; can be used while frozen which both attacks the target normally and thaws the user.,Fire,Physical,100,95%,5
222,Magnitude,Deals variable damage between 10 base power and 130 base power as well as double damage against Digging Pokemon.,Ground,Physical,50,100%,30
223,DynamicPunch,Confuses the target.,Fighting,Physical,100,50%,5
224,Megahorn,Deals damage with no additional effect.,Bug,Physical,120,85%,10
225,DragonBreath,Has a 30% chance to paralyze the target.,Dragon,Special,60,100%,20
226,Baton Pass,The user returns to its party bypassing any trapping moves and Pursuit; it passes all stat modifiers (positive or negative including from Charge and Stockpile) as well as confusion Focus Energy/Lansat Berry boosts Ingrain Aqua Ring Embargo Gastro Acid Power Trick Magnet Rise Stockpiles Perish Song count Mist Leech Seed Ghost Curses Mind Reader Lock-On Block Mean Look Spider Web and Substitute to the replacement Pokemon.,Normal,Status,0,,40
227,Encore,The target is forced to use its last attack for the next 3 turns. The effects of this move will end immediately if the target runs out of PP for the repeated attack. In double battles a Pokemon who has received an Encore will target a random opponent with single-target attacks.,Normal,Status,0,100%,5
228,Pursuit,If the target switches out on the current turn this move strikes with doubled power before the switch. Baton Passers still escape safely. When a faster Pokemon uses Pursuit against a U-Turner the U-Turner is hit for normal damage; when a slower Pokemon uses Pursuit against a U-Turner the U-Turner makes its attack then is hit by Pursuit for double power and switches out.,Dark,Physical,80,100%,20
229,Rapid Spin,Removes Spikes Stealth Rock Toxic Spikes and Leech Seed from the user's side of the field; also frees the user from Bind Clamp Fire Spin Magma Storm Sand Tomb Whirlpool and Wrap. These effects do not occur if the move misses or is used against Ghost-type Pokemon.,Normal,Physical,20,100%,40
230,Sweet Scent,Lowers the target's Evasion by 1 stage.,Normal,Status,0,100%,20
231,Iron Tail,Has a 30% chance to lower the target's Defense by 1 stage.,Steel,Physical,100,75%,15
232,Metal Claw,Has a 10% chance to raise the user's Attack by 1 stage.,Steel,Physical,50,95%,35
233,Vital Throw,This move usually goes last. It ignores Evasion and Accuracy modifiers and never misses except against Protect Detect or a target in the middle of Dig Fly Dive or Bounce.,Fighting,Physical,70,100%,10
234,Morning Sun,Restores a fraction of the user's max HP depending on the weather: 2/3 during Sunny Day 1/2 during regular weather and 1/4 during Rain Dance Hail and Sandstorm.,Normal,Status,0,,5
235,Synthesis,Restores a fraction of the user's max HP depending on the weather: 2/3 during Sunny Day 1/2 during regular weather and 1/4 during Rain Dance Hail and Sandstorm.,Grass,Status,0,,5
236,Moonlight,Restores a fraction of the user's max HP depending on the weather: 2/3 during Sunny Day 1/2 during regular weather and 1/4 during Rain Dance Hail and Sandstorm.,Normal,Status,0,,5
237,Hidden Power,Varies in power and type depending on the user's IVs; maximum 70 BP.,Normal,Special,70,100%,15
238,Cross Chop,Has a high critical hit ratio.,Fighting,Physical,100,80%,5
239,Twister,Has a 20% chance to make the target flinch; power doubles while the target is in mid-air via Fly or Bounce.,Dragon,Special,40,100%,20
240,Rain Dance,Cancels all other weather moves. For 5 turns: the power of Water attacks is increased by 50% the power of Fire attacks is decreased by 50% Thunder never misses and has a 30% chance to hit through Protect and Detect the power of Solarbeam is halved and the healing power of Morning Sun Synthesis and Moonlight is decreased from 1/2 to 1/4 of the user's max HP. The effects of Rain Dance will last for eight turns if its user is holding Damp Rock.,Water,Status,0,,5
241,Sunny Day,Cancels all other weather moves. For 5 turns: freezing is prevented the power of Fire attacks is increased by 50% the power of Water attacks is decreased by 50% Solarbeam fires immediately Thunder becomes 50% accurate and the healing power of Morning Sun Synthesis and Moonlight is increased from 1/2 to 2/3 of the user's max HP. The effects of Sunny Day will last for eight turns if its user is holding Heat Rock.,Fire,Status,0,,5
242,Crunch,Has a 20% chance to lower the target's Defense by 1 stage.,Dark,Physical,80,100%,15
243,Mirror Coat,Almost always goes last; if an opponent strikes with a Special attack before the user's turn the user retaliates for twice the damage it had endured. In double battles this attack targets the last opponent to hit the user with a Special attack and cannot hit the user's teammate.,Psychic,Special,50,100%,20
244,Psych Up,The user copies all six of the target's current stat modifiers.,Normal,Status,0,,10
245,ExtremeSpeed,Usually goes first.,Normal,Physical,80,100%,5
246,AncientPower,Has a 10% chance to raise all of the user's stats by 1 stage.,Rock,Special,60,100%,5
247,Shadow Ball,Has a 20% chance to lower the target's Special Defense by 1 stage.,Ghost,Special,80,100%,15
248,Future Sight,This move even if the user and/or the target switch out will strike the active target at the end of the second turn after its use. Only one instance of Future Sight or Doom Desire may be active at a time.,Psychic,Special,100,100%,10
249,Rock Smash,Has a 50% chance to lower the target's Defense by 1 stage.,Fighting,Physical,40,100%,15
250,Whirlpool,Traps the target for 5-6 turns causing damage equal to 1/16 of its max HP each turn; this trapped effect can be broken by Rapid Spin. The target can still switch out if it is holding Shed Shell or uses Baton Pass or U-Turn. Base power also doubles when performed against a Pokemon in the middle of using Dive.,Water,Special,35,85%,15
251,Beat Up,Each healthy (i.e. not fainted nor inflicted with a status condition) Pokemon in your party contributes a typeless 10 base power hit determined solely by their base Attack and Defense stats.,Dark,Physical,50,100%,10
252,Fake Out,If this is the user's first move after being sent or switched into battle the target flinches; this move fails otherwise and against targets with Inner Focus.,Normal,Physical,40,100%,10
253,Uproar,The user causes an Uproar and attacks uncontrollably for 3 turns. During the effects of the Uproar active Pokemon cannot fall asleep and sleeping Pokemon sent into battle will wake up.,Normal,Special,90,100%,10
254,Stockpile,Can be used up to three times to power Spit Up or Swallow. Also raises the user's Defense and Special Defense by 1 stage each. Stockpiles and the defensive boosts are lost when these Swallow or Spit Up is used or the user switches out. However the boosts can be Baton Passed.,Normal,Status,0,,20
255,Spit Up,Power increases with user's Stockpile count; fails with zero Stockpiles.,Normal,Special,50,100%,10
256,Swallow,This move only works if the user has at least one Stockpile. Restores 1/4 of user's max HP with one Stockpile 1/2 of user's max HP with two Stockpiles and fully restores the user's HP with three Stockpiles.,Normal,Status,0,,10
257,Heat Wave,Has a 10% chance to burn the target.,Fire,Special,100,90%,10
258,Hail,Cancels all other weather moves. For 5 turns: Blizzard never misses and has a 30% chance to hit through Protect and Detect each active Pokemon even when protected by a Substitute loses 1/16 of its max HP unless it is an Ice-type the power of Solarbeam is halved and the healing power of Morning Sun Synthesis and Moonlight is halved. The effects of Hail will last for eight turns if its user is holding Icy Rock.,Ice,Status,0,,10
259,Torment,Prevents the target from using the same move for two turns in a row until the target is switched out. The target will use Struggle every other turn if it cannot attack without using the same move.,Dark,Status,0,100%,15
260,Flatter,Confuses the target and raises its Special Attack by 1 stage.,Dark,Status,0,100%,15
261,Will-O-Wisp,Burns the target. This move activates Flash Fire.,Fire,Status,0,75%,15
262,Memento,The user sacrifices itself to lower the target's Attack and Special Attack by 2 stages each.,Dark,Status,0,100%,10
263,Facade,Power doubles if the user is inflicted with burn paralysis or poison.,Normal,Physical,50,100%,20
264,Focus Punch,At the beginning of the round the user tightens its focus; the attack itself usually goes last and will fail if the user is attacked by any other Pokemon during the turn.,Fighting,Physical,150,100%,20
265,SmellingSalt,If the target is paralyzed power is doubled but the target will be cured.,Normal,Physical,60,100%,10
266,Follow Me,Almost always goes first. For the rest of the turn all attacks from the opponent's team that target the user's team are redirected toward the user. In double battles the user's teammate will not be protected from attacks that have more than one intended target.,Normal,Status,0,100%,20
267,Nature Power,The user generates another move depending on the battle's current terrain. It generates Seed Bomb in any type of grass (as well as in puddles) Hydro Pump while surfing on top of water Rock Slide on any rocky outdoor terrain and inside of caves Earthquake on beach sand desert sand and dirt paths (as well as Wifi) Blizzard in snow and Tri Attack everywhere else. In Battle Revolution the move generates Tri Attack at Courtyard Main Street and Neon Seed Bomb at Sunny Park and Waterfall Hydro Pump at Gateway Rock Slide at Crystal Magma and Stargazer and Earthquake at Sunset.,Normal,Status,50,95%,20
267,Nature Power (Wifi),Earthquake.,Ground,Physical,100,95%,20
268,Charge,Doubles the power of the user's Electric attacks on the next turn and increases the user's Special Defense by 1 stage.,Electric,Status,0,100%,20
269,Taunt,Prevents the target from using non-damaging moves for 3 turns. Assist Copycat Me First Metronome Mirror Move and Sleep Talk are prevented during this time but Bide Counter Endeavor Metal Burst and Mirror Coat are not prevented.,Dark,Status,0,100%,20
270,Helping Hand,Always goes first. In double battles the power of the user's partner's attacks is increased by 1.5x for that turn; does nothing in single battles.,Normal,Status,0,100%,20
271,Trick,Exchanges items with the target unless it has Sticky Hold or Multitype. Items lost to this move cannot be recovered by using Recycle.,Psychic,Status,0,100%,10
272,Role Play,The user's own ability is overwritten with the target's ability; does nothing if the target's ability is Wonder Guard.,Psychic,Status,0,100%,10
273,Wish,At the end of the next turn the active Pokemon from the user's team is healed by 1/2 of the user's HP; this can be any member of the user's team.,Normal,Status,0,100%,10
274,Assist,The user performs a random move from any of the Pokemon on its team. Assist cannot generate itself Chatter Copycat Counter Covet Destiny Bond Detect Endure Feint Focus Punch Follow Me Helping Hand Me First Metronome Mimic Mirror Coat Mirror Move Protect Sketch Sleep Talk Snatch Struggle Switcheroo Thief or Trick.,Normal,Status,0,100%,20
275,Ingrain,The user recovers 1/16 of its max HP after each turn but it cannot be switched out or forced to switch out. If a Flying-type Pokemon or a Pokemon with Levitate comes under the effect of Ingrain it will no longer have immunity from Ground-type attacks.,Grass,Status,0,100%,20
276,Superpower,Lowers the user's Attack and Defense by 1 stage each after use.,Fighting,Physical,120,100%,5
277,Magic Coat,Almost always goes first. Until the end of the turn the user will reflect one disabling move back at its user (including teammates); these include status effect inducers confusion inducers (including Flatter and Swagger) Attract trapping moves that do not damage Leech Seed Worry Seed Gastro Acid and negative stat modifiers (except Defog). In double battles Magic Coat will only reflect the first applicable move performed against its user before wearing off.,Psychic,Status,0,100%,15
278,Recycle,The user's lost item is recovered. Items lost to Bug Bite Fling Natural Gift and Pluck will be recovered if the user of Recycle was the item's original holder; items lost to Trick Switcheroo Thief Covet or Knock Off cannot be recovered.,Normal,Status,0,100%,10
279,Revenge,Almost always goes last even after another Pokemon's Focus Punch; this move's base power doubles if the user is damaged before its turn.,Fighting,Physical,60,100%,10
280,Brick Break,Reflect and Light Screen are removed from the target's field even if the attack misses or the target is a Ghost-type.,Fighting,Physical,75,100%,15
281,Yawn,If the target stays in battle it falls asleep at the end of the next turn.,Normal,Status,0,100%,10
282,Knock Off,Disables the target's held item unless it has Sticky Hold or Multitype. Items lost to this move cannot be recovered by using Recycle.,Dark,Physical,20,100%,20
283,Endeavor,Inflicts damage equal to the target's current HP Varthe user's current HP.,Normal,Physical,50,100%,5
284,Eruption,Base power decreases as the user's HP decreases.,Fire,Special,50,100%,5
285,Skill Swap,The user exchanges abilities with the target; does not work if Wonder Guard is the ability of either the user or the target.,Psychic,Status,0,100%,10
286,Imprison,Until the user faints or switches out the opponent cannot select any moves that it has in common with the user. In double battles this move affects both opponents.,Psychic,Status,0,100%,10
287,Refresh,The user recovers from burn poison and paralysis.,Normal,Status,0,100%,20
288,Grudge,The target's next move is set to 0 PP if it directly KOs the user.,Ghost,Status,0,100%,5
289,Snatch,Almost always goes first. Until the end of the turn the user will steal a supporting move from another Pokemon (including teammates). In double battles Snatch only steals the first applicable move performed by another Pokemon before wearing off.,Dark,Status,0,100%,10
290,Secret Power,This move has a 30% chance to inflict a side effect depending on the battle's current terrain. The target may be put to sleep in any type of grass (or in puddles) its Attack may be lowered by 1 stage while surfing on any body of water its Speed may be lowered by 1 stage while on marshy terrain its Accuracy may be lowered by 1 stage on beach sand desert sand and dirt paths (and also in Wifi battles) it may flinch in caves or on rocky outdoor terrain it may become frozen on snowy terrain and it may become paralyzed everywhere else.,Normal,Physical,70,100%,20
291,Dive,On the first turn the user dives underwater becoming uncontrollable and evades all attacks except for Surf and Whirlpool which have doubled power; the user may also be hit underwater if it was previously targeted by Lock-On or Mind Reader or if it is attacked by a Pokemon with No Guard. On the second turn the user attacks.,Water,Physical,80,100%,10
292,Arm Thrust,Attacks 2-5 times in one turn; if one of these attacks breaks a target's Substitute the target will take damage for the rest of the hits. This move has a 3/8 chance to hit twice a 3/8 chance to hit three times a 1/8 chance to hit four times and a 1/8 chance to hit five times. If the user of this move has Skill Link this move will always strike five times.,Fighting,Physical,15,100%,20
293,Camouflage,The user's type changes according to the current terrain. It becomes Grass-type in tall grass and very tall grass (as well as in puddles) Water-type while surfing on any body of water Rock-type while inside any caves or on any rocky terrain Ground-type on beach sand desert sand and dirt roads Ice-type in snow and Normal-type everywhere else. The user will always become Normal-type during Wi-Fi battles. ,Normal,Status,0,100%,20
294,Tail Glow,Raises the user's Special Attack by 2 stages.,Bug,Status,0,100%,20
295,Luster Purge,Has a 50% chance to lower the target's Special Defense by 1 stage.,Psychic,Special,70,100%,5
296,Mist Ball,Has a 50% chance to lower the target's Special Attack by 1 stage.,Psychic,Special,70,100%,5
297,FeatherDance,Lowers the target's Attack by 2 stages.,Flying,Status,0,100%,15
298,Teeter Dance,Each active Pokemon except the user becomes confused.,Normal,Status,0,100%,20
299,Blaze Kick,Has a high critical hit ratio and a 10% chance to burn the target.,Fire,Physical,85,90%,10
300,Mud Sport,All Electric-type moves are 50% weaker until the user switches out.,Ground,Status,0,100%,15
301,Ice Ball,The user attacks uncontrollably for five turns; this move's power doubles after each turn and also if Defense Curl was used beforehand. Its power resets after five turns have ended or if the attack misses.,Ice,Physical,30,90%,20
302,Needle Arm,Has a 30% chance to make the target flinch.,Grass,Physical,60,100%,15
303,Slack Off,Restores 1/2 of the user's max HP.,Normal,Status,0,100%,10
304,Hyper Voice,Deals damage with no additional effect.,Normal,Special,90,100%,10
305,Poison Fang,Has a 30% chance to inflict Toxic poison on the target.,Poison,Physical,50,100%,15
306,Crush Claw,Has a 50% chance to lower the target's Defense by 1 stage.,Normal,Physical,75,95%,10
307,Blast Burn,The user recharges during its next turn; as a result until the end of the next turn the user becomes uncontrollable.,Fire,Special,150,90%,5
308,Hydro Cannon,The user recharges during its next turn; as a result until the end of the next turn the user becomes uncontrollable.,Water,Special,150,90%,5
309,Meteor Mash,Has a 20% chance to raise the user's Attack by 1 stage.,Steel,Physical,100,85%,10
310,Astonish,Has a 30% chance to make the target flinch.,Ghost,Physical,30,100%,15
311,Weather Ball,Base power is 50; Base power doubles and move's type changes during weather effects: becomes Fire-type during Sunny Day Water-type during Rain Dance Ice-type during Hail and Rock-type during Sandstorm.,Normal,Special,50,100%,10
312,Aromatherapy,Every Pokemon in the user's party is cured of status conditions. Lists every Pokemon that was healed and what status condition was cured. ,Grass,Status,0,,5
313,Fake Tears,Lowers the target's Special Defense by 2 stages.,Dark,Status,0,100%,20
314,Air Cutter,Has a high critical hit ratio.,Flying,Special,55,95%,25
315,Overheat,Lowers the user's Special Attack by 2 stages after use.,Fire,Special,140,90%,5
316,Odor Sleuth,Until the target faints or switches the user's Accuracy modifiers and the target's Evasion modifiers are ignored. Ghost-type targets also lose their immunities against Normal-type and Fighting-type moves.,Normal,Status,0,100%,40
317,Rock Tomb,Lowers the target's Speed by 1 stage.,Rock,Physical,50,80%,10
318,Silver Wind,Has a 10% chance to raise all of the user's stats by 1 stage.,Bug,Special,60,100%,5
319,Metal Sound,Lowers the target's Special Defense by 2 stages.,Steel,Status,0,85%,40
320,GrassWhistle,Puts the target to sleep.,Grass,Status,0,55%,15
321,Tickle,Lowers the target's Attack and Defense by 1 stage each.,Normal,Status,0,100%,20
322,Cosmic Power,Raises the user's Defense and Special Defense by 1 stage each.,Psychic,Status,0,,20
323,Water Spout,Base power decreases as the user's HP decreases.,Water,Special,50,100%,5
324,Signal Beam,Has a 10% chance to confuse the target.,Bug,Special,75,100%,15
325,Shadow Punch,Ignores Evasion and Accuracy modifiers and never misses except against Protect Detect or a target in the middle of Dig Fly Dive or Bounce.,Ghost,Physical,60,101%,20
326,Extrasensory,Has a 10% chance to make the target flinch.,Psychic,Special,80,100%,30
327,Sky Uppercut,Also hits targets in mid-air via Fly or Bounce.,Fighting,Physical,85,90%,15
328,Sand Tomb,Traps the target for 5-6 turns causing damage equal to 1/16 of its max HP each turn; this trapped effect can be broken by Rapid Spin. The target can still switch out if it is holding Shed Shell or uses Baton Pass or U-Turn.,Ground,Physical,35,85%,15
329,Sheer Cold,The target faints; doesn't work on higher-leveled Pokemon.,Ice,Special,0,30%,5
330,Muddy Water,Lowers the target's Accuracy by 1 stage.,Water,Special,95,85%,10
331,Bullet Seed,Attacks 2-5 times in one turn; if one of these attacks breaks a target's Substitute the target will take damage for the rest of the hits. This move has a 3/8 chance to hit twice a 3/8 chance to hit three times a 1/8 chance to hit four times and a 1/8 chance to hit five times. If the user of this move has Skill Link this move will always strike five times.,Grass,Physical,25,100%,30
332,Aerial Ace,Ignores Evasion and Accuracy modifiers and never misses except against Protect Detect or a target in the middle of Dig Fly Dive or Bounce.,Flying,Physical,60,101%,20
333,Icicle Spear,Attacks 2-5 times in one turn; if one of these attacks breaks a target's Substitute the target will take damage for the rest of the hits. This move has a 3/8 chance to hit twice a 3/8 chance to hit three times a 1/8 chance to hit four times and a 1/8 chance to hit five times. If the user of this move has Skill Link this move will always strike five times.,Ice,Physical,25,100%,30
334,Iron Defense,Raises the user's Defense by 2 stages.,Steel,Status,0,,15
335,Block,As long as the user remains in battle the target cannot switch out unless it is holding Shed Shell or uses Baton Pass or U-Turn. The target will still be trapped if the user switches out by using Baton Pass.,Normal,Status,0,100%,5
336,Howl,Raises the user's Attack by 1 stage.,Normal,Status,0,,40
337,Dragon Claw,Deals damage with no additional effect.,Dragon,Physical,80,100%,15
338,Frenzy Plant,The user recharges during its next turn; as a result until the end of the next turn the user becomes uncontrollable.,Grass,Special,150,90%,5
339,Bulk Up,Raises the user's Attack and Defense by 1 stage each.,Fighting,Status,0,,20
340,Bounce,On the first turn the user bounces into the air becoming uncontrollable and evades most attacks. Gust Twister Thunder and Sky Uppercut have normal accuracy against a mid-air Pokemon with Gust and Twister also gaining doubled power. The user may also be hit in mid-air if it was previously targeted by Lock-On or Mind Reader or if it is attacked by a Pokemon with No Guard. On the second turn the user descends and has a 30% chance to paralyze the target.,Flying,Physical,85,85%,5
341,Mud Shot,Lowers the target's Speed by 1 stage.,Ground,Special,55,95%,15
342,Poison Tail,Has a high critical hit ratio and a 10% chance to poison the target.,Poison,Physical,50,100%,25
343,Covet,Steals the target's held item unless the user is already holding an item or the target has Sticky Hold or Multitype. Recycle cannot recover the stolen item.,Normal,Physical,60,100%,40
344,Volt Tackle,The user receives 1/3 recoil damage; has a 10% chance to paralyze the target.,Electric,Physical,120,100%,15
345,Magical Leaf,Ignores Evasion and Accuracy modifiers and never misses except against Protect Detect or a target in the middle of Dig Fly Dive or Bounce.,Grass,Special,60,101%,20
346,Water Sport,All Fire-type moves are 50% weaker until the user switches out.,Water,Status,0,100%,15
347,Calm Mind,Raises the user's Special Attack and Special Defense by 1 stage each.,Psychic,Status,0,,20
348,Leaf Blade,Has a high critical hit ratio.,Grass,Physical,90,100%,15
349,Dragon Dance,Raises the user's Attack and Speed by 1 stage each.,Dragon,Status,0,,20
350,Rock Blast,Attacks 2-5 times in one turn; if one of these attacks breaks a target's Substitute the target will take damage for the rest of the hits. This move has a 3/8 chance to hit twice a 3/8 chance to hit three times a 1/8 chance to hit four times and a 1/8 chance to hit five times. If the user of this move has Skill Link this move will always strike five times.,Rock,Physical,25,90%,10
351,Shock Wave,Ignores Evasion and Accuracy modifiers and never misses except against Protect Detect or a target in the middle of Dig Fly Dive or Bounce.,Electric,Special,60,101%,20
352,Water Pulse,Has a 20% chance to confuse the target.,Water,Special,60,100%,20
353,Doom Desire,This move even if the user and/or the target switch out will strike the active target at the end of the second turn after its use. Only one instance of Doom Desire or Future Sight may be active at a time.,Steel,Special,140,100%,5
354,Psycho Boost,Lowers the user's Special Attack by 2 stages after use.,Psychic,Special,140,90%,5
--------------------------------------------------------------------------------