├── .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 | 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 | 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 | 15 | 16 | 17 | 18 | 19 | 20 | 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 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 150 | 151 | 152 | 153 | 156 | 157 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 192 | 193 | 212 | 213 | 237 | 238 | 259 | 260 | 277 | 278 | 279 | 280 | 281 | 303 | 304 | 317 | 318 | 337 | 338 | 339 | 340 | 341 | 342 | true 343 | 344 | 345 | 346 | 347 | 360 | 361 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 1431057819375 394 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 429 | 432 | 433 | 434 | 436 | 437 | 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 --------------------------------------------------------------------------------