From 90cb32fd5a9a071591543e4aaaa7d2a047ad9998 Mon Sep 17 00:00:00 2001 From: Steph Toth Date: Sun, 18 Mar 2018 23:37:37 -0400 Subject: [PATCH] inital commit --- PokemonBattleServer.eml | 8 + PokemonBattleServer.iml | 2 + applet/PKServer.java | 123 +++ bin/data/abilities.csv | 193 +++++ bin/data/moves.csv | 622 +++++++++++++++ bin/data/pokemon.csv | 748 ++++++++++++++++++ bin/pokemonFramework/Bundle.class | Bin 0 -> 4134 bytes bin/pokemonFramework/Button.class | Bin 0 -> 3221 bytes bin/pokemonFramework/FuncBattle.class | Bin 0 -> 289 bytes bin/pokemonFramework/FuncServer.class | Bin 0 -> 3554 bytes bin/pokemonFramework/Move.class | Bin 0 -> 4345 bytes bin/pokemonFramework/Party.class | Bin 0 -> 4438 bytes bin/pokemonFramework/Pokemon.class | Bin 0 -> 4902 bytes bin/pokemonFramework/Profile.class | Bin 0 -> 894 bytes bin/pokemonFramework/ReadCSV.class | Bin 0 -> 1826 bytes bin/pokemonFramework/Server.class | Bin 0 -> 1240 bytes bin/pokemonFramework/Text.class | Bin 0 -> 1553 bytes .../ClientServiceThread.class | Bin 0 -> 4083 bytes bin/pokemonbattleServer/PKServer.class | Bin 0 -> 2210 bytes .../ServerLogicThread.class | Bin 0 -> 764 bytes opencsv-3.8.jar | Bin 0 -> 64417 bytes preferences.txt | 215 +++++ src/data/abilities.csv | 193 +++++ src/data/moves.csv | 622 +++++++++++++++ src/data/pokemon.csv | 748 ++++++++++++++++++ src/pokemonFramework/Bundle.java | 132 ++++ src/pokemonFramework/Button.java | 122 +++ src/pokemonFramework/FuncBattle.java | 5 + src/pokemonFramework/FuncServer.java | 100 +++ src/pokemonFramework/Move.java | 158 ++++ src/pokemonFramework/Party.java | 160 ++++ src/pokemonFramework/Pokemon.java | 192 +++++ src/pokemonFramework/Profile.java | 34 + src/pokemonFramework/ReadCSV.java | 54 ++ src/pokemonFramework/Server.java | 47 ++ src/pokemonFramework/Text.java | 61 ++ src/pokemonbattleServer/PKServer.java | 209 +++++ tmp/PKServer.pde | 124 +++ 38 files changed, 4872 insertions(+) create mode 100644 PokemonBattleServer.eml create mode 100644 PokemonBattleServer.iml create mode 100644 applet/PKServer.java create mode 100644 bin/data/abilities.csv create mode 100644 bin/data/moves.csv create mode 100644 bin/data/pokemon.csv create mode 100644 bin/pokemonFramework/Bundle.class create mode 100644 bin/pokemonFramework/Button.class create mode 100644 bin/pokemonFramework/FuncBattle.class create mode 100644 bin/pokemonFramework/FuncServer.class create mode 100644 bin/pokemonFramework/Move.class create mode 100644 bin/pokemonFramework/Party.class create mode 100644 bin/pokemonFramework/Pokemon.class create mode 100644 bin/pokemonFramework/Profile.class create mode 100644 bin/pokemonFramework/ReadCSV.class create mode 100644 bin/pokemonFramework/Server.class create mode 100644 bin/pokemonFramework/Text.class create mode 100644 bin/pokemonbattleServer/ClientServiceThread.class create mode 100644 bin/pokemonbattleServer/PKServer.class create mode 100644 bin/pokemonbattleServer/ServerLogicThread.class create mode 100644 opencsv-3.8.jar create mode 100644 preferences.txt create mode 100644 src/data/abilities.csv create mode 100644 src/data/moves.csv create mode 100644 src/data/pokemon.csv create mode 100644 src/pokemonFramework/Bundle.java create mode 100644 src/pokemonFramework/Button.java create mode 100644 src/pokemonFramework/FuncBattle.java create mode 100644 src/pokemonFramework/FuncServer.java create mode 100644 src/pokemonFramework/Move.java create mode 100644 src/pokemonFramework/Party.java create mode 100644 src/pokemonFramework/Pokemon.java create mode 100644 src/pokemonFramework/Profile.java create mode 100644 src/pokemonFramework/ReadCSV.java create mode 100644 src/pokemonFramework/Server.java create mode 100644 src/pokemonFramework/Text.java create mode 100644 src/pokemonbattleServer/PKServer.java create mode 100644 tmp/PKServer.pde diff --git a/PokemonBattleServer.eml b/PokemonBattleServer.eml new file mode 100644 index 0000000..e367936 --- /dev/null +++ b/PokemonBattleServer.eml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/PokemonBattleServer.iml b/PokemonBattleServer.iml new file mode 100644 index 0000000..6d59135 --- /dev/null +++ b/PokemonBattleServer.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/applet/PKServer.java b/applet/PKServer.java new file mode 100644 index 0000000..dc64dac --- /dev/null +++ b/applet/PKServer.java @@ -0,0 +1,123 @@ +package pokemonbattleServer; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.ArrayList; + +public class PKServer { + + private static int ip = 4563; + public static ArrayList map = new ArrayList(2); + + public static String Data0 = ""; + public static String Data1 = ""; + public static boolean both = false; + public static boolean S0 = false; + public static boolean S1 = false; + + @SuppressWarnings("resource") + public static void main(String[] args) throws Exception { + ServerSocket m_ServerSocket = new ServerSocket(ip); + int id = 0; + while (true) { + System.out.println("Waiting for connections on port " + ip); + Socket clientSocket = m_ServerSocket.accept(); + ClientServiceThread cliThread = new ClientServiceThread(clientSocket, id); + cliThread.start(); + map.add(id, cliThread); + id++; + } + } +} + +class ClientServiceThread extends Thread { + Socket clientSocket; + BufferedReader in; + PrintWriter out; + int clientID = 0; + boolean running = true; + + ClientServiceThread(Socket s, int i) { + clientSocket = s; + clientID = i; + } + + public void run() { + System.out.println( + "Accepted Client : ID - " + clientID + " : Address - " + clientSocket.getInetAddress().getHostName()); + try { + in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); + out = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream())); + + while (running == true) { + + if (in.ready()) { + String clientCommand = in.readLine(); + System.out.println("Client Says :" + clientCommand); + + if (clientID == 0) { + if (clientCommand != "") { + PKServer.Data0 = clientCommand; + System.out.println("Data 0 " + PKServer.Data0); + PKServer.S0 = false; + } + + if (PKServer.Data0 != "" && PKServer.Data1 != "") { + PKServer.both = true; + } + + } else if (clientID == 1) { + if (clientCommand != "") { + PKServer.Data1 = clientCommand; + System.out.println("Data 1 " + PKServer.Data1); + PKServer.S1 = false; + } + + if (PKServer.Data0 != "" && PKServer.Data1 != "") { + PKServer.both = true; + } + + } + System.out.println(PKServer.both + " 0 = " + PKServer.Data0 + " 1 = " + PKServer.Data1); + + } + // check for false both + if (PKServer.S0 && PKServer.S1) { + PKServer.both = false; + } + + if (PKServer.both) { + switch (clientID) { + case 0: + if (!PKServer.S0) { + out.println(PKServer.Data1); + out.flush(); + System.out.println("Sent " + PKServer.Data1 + " to 0"); + PKServer.Data1 = ""; + PKServer.S0 = true; + } + break; + case 1: + if (!PKServer.S1) { + out.println(PKServer.Data0); + out.flush(); + System.out.println("Sent " + PKServer.Data1 + " to 1"); + PKServer.Data0 = ""; + PKServer.S1 = true; + } + break; + + } + } + + } + } catch (Exception e) { + e.printStackTrace(); + } + + } +} \ No newline at end of file diff --git a/bin/data/abilities.csv b/bin/data/abilities.csv new file mode 100644 index 0000000..6aedb4d --- /dev/null +++ b/bin/data/abilities.csv @@ -0,0 +1,193 @@ +000,Cacophony,Avoids sound-based moves.,II,0,0,0 +000,Cacophony,Avoids sound-based moves.,II,0,0,0 +001,Stench,The stench may cause the target to flinch.,III,0,6,1 +002,Drizzle,The Pokémon makes it rain if it appears in battle.,III,1,0,1 +003,Speed Boost,The Pokémon's Speed stat is gradually boosted.III,2,2,8 +004,Battle Armor,The Pokémon is protected against critical hits.,III,2,4,2 +005,Sturdy,The Pokémon is protected against 1-hit KO attacks.,III,8,22,6 +006,Damp,Prevents combatants from self destructing.,III,0,8,10 +007,Limber,The Pokémon is protected from paralysis.,III,1,7,2 +008,Sand Veil,Boosts the Pokémon's evasion in a sandstorm.,III,7,6,7 +009,Static,Contact with the Pokémon may cause paralysis.,III,9,5,1 +010,Volt Absorb,Restores HP if hit by an Electric-type move.,III,2,2,3 +011,Water Absorb,Restores HP if hit by a Water-type move.,III,2,12,8 +012,Oblivious,Prevents the Pokémon from becoming infatuated or falling for taunts.,III,0,17,3 +013,Cloud Nine,Eliminates the effects of weather.,III,0,2,4 +014,Compound Eyes,The Pokémon's accuracy is boosted.,III,2,6,1 +015,Insomnia,Prevents the Pokémon from falling asleep.,III,1,10,3 +016,Color Change,Changes the Pokémon's type to the foe’s move.,III,1,0,0 +017,Immunity,Prevents the Pokémon from getting poisoned.,III,1,1,1 +018,Flash Fire,Powers up Fire-type moves if hit by a fire move.,III,4,10,4 +019,Shield Dust,Blocks the added effects of attacks taken.,III,4,3,0 +020,Own Tempo,Prevents the Pokémon from becoming confused.,III,0,15,5 +021,Suction Cups,Negates moves that force switching out.,III,2,3,0 +022,Intimidate,Lowers the foe’s Attack stat.,III,7,19,3 +023,Shadow Tag,Prevents the foe from escaping.,III,3,0,3 +024,Rough Skin,Inflicts damage to the foe on contact.,III,2,1,3 +025,Wonder Guard,Only supereffective moves will hit.,III,1,0,0 +026,Levitate,Gives full immunity to all Ground-type moves.,III,31,2,0 +027,Effect Spore,Contact may paralyze, poison, or cause sleep.,III,2,4,1 +028,Synchronize,Passes on a burn, poison, or paralysis to the foe.,III,3,12,0 +029,Clear Body,Prevents the Pokémon's stats from being lowered.,III,8,2,3 +030,Natural Cure,All status problems are healed upon switching out.,III,4,11,0 +031,Lightning Rod,The Pokémon draws in all Electric-type moves to raise Sp.Atk.,III,2,9,6 +032,Serene Grace,Boosts the likelihood of added effects appearing.,III,3,7,2 +033,Swift Swim,Boosts the Pokémon's Speed in rain.,III,8,21,10 +034,Chlorophyll,Boosts the Pokémon's Speed in sunshine.,III,10,19,6 +035,Illuminate,Raises the likelihood of meeting wild Pokémon.,III,0,6,0 +036,Trace,The Pokémon copies a foe's Ability.,III,1,5,0 +037,Huge Power,Raises the Pokémon's Attack stat.,III,1,3,2 +038,Poison Point,Contact with the Pokémon may poison the foe.,III,0,16,0 +039,Inner Focus,The Pokémon is protected from flinching.,III,5,16,6 +040,Magma Armor,Prevents the Pokémon from becoming frozen.,III,0,3,0 +041,Water Veil,Prevents the Pokémon from getting a burn.,III,0,4,7 +042,Magnet Pull,Prevents Steel-type Pokémon from escaping.,III,0,5,0 +043,Soundproof,Gives full immunity to all sound-based moves.,III,3,4,5 +044,Rain Dish,The Pokémon gradually recovers HP in rain.,III,0,3,8 +045,Sand Stream,The Pokémon summons a sandstorm in battle.,III,3,0,0 +046,Pressure,The Pokémon raises the foe’s PP usage.,III,19,2,4 +047,Thick Fat,Raises resistance to Fire- and Ice-type moves.,III,1,16,5 +048,Early Bird,The Pokémon awakens quickly from sleep.,III,0,13,2 +049,Flame Body,Contact with the Pokémon may burn the foe.,III,7,5,4 +050,Run Away,Enables sure getaway from wild Pokémon.,III,0,16,8 +051,Keen Eye,Prevents the Pokémon from losing accuracy.,III,4,22,5 +052,Hyper Cutter,Prevents the Attack stat from being lowered.,III,0,9,0 +053,Pickup,The Pokémon may pick up items.,III,1,14,0 +054,Truant,The Pokémon can't attack on consecutive turns.,III,2,0,1 +055,Hustle,Boosts the Attack stat, but lowers accuracy.,III,3,7,8 +056,Cute Charm,Contact with the Pokémon may cause infatuation.,III,1,11,1 +057,Plus,Boosts Sp. Atk if another Pokémon has Minus.,III,1,3,4 +058,Minus,Boosts Sp. Atk if another Pokémon has Plus.,III,1,3,2 +059,Forecast,Transforms with the weather.,III,1,0,0 +060,Sticky Hold,Protects the Pokémon from item theft.,III,0,8,0 +061,Shed Skin,The Pokémon may heal its own status problems.,III,11,5,0 +062,Guts,Boosts Attack if there is a status problem.,III,3,14,4 +063,Marvel Scale,Boosts Defense if there is a status problem.,III,0,1,2 +064,Liquid Ooze,Inflicts damage on foes using any draining move.,III,0,4,0 +065,Overgrow,Powers up Grass-type moves in a pinch.,III,18,0,2 +066,Blaze,Powers up Fire-type moves in a pinch.,III,18,0,2 +067,Torrent,Powers up Water-type moves in a pinch.,III,18,0,2 +068,Swarm,Powers up Bug-type moves in a pinch.,III,4,16,4 +069,Rock Head,Protects the Pokémon from recoil damage.,III,2,17,1 +070,Drought,The Pokémon makes it sunny if it is in battle.,III,2,0,2 +071,Arena Trap,Prevents the foe from fleeing.,III,0,3,0 +072,Vital Spirit,Prevents the Pokémon from falling asleep.,III,1,4,7 +073,White Smoke,Prevents the Pokémon's stats from being lowered.,III,1,0,1 +074,Pure Power,Boosts the power of physical attacks.,III,2,0,0 +075,Shell Armor,The Pokémon is protected against critical hits.,III,2,13,7 +076,Air Lock,Eliminates the effects of weather.,III,1,0,0 +077,Tangled Feet,Raises evasion if the Pokémon is confused.,IV,0,5,2 +078,Motor Drive,Raises Speed if hit by an Electric-type move.,IV,1,2,1 +079,Rivalry,Raises Attack if the foe is of the same gender.,IV,0,14,4 +080,Steadfast,Raises Speed each time the Pokémon flinches.,IV,2,3,5 +081,Snow Cloak,Raises evasion in a hailstorm.,IV,4,3,1 +082,Gluttony,Encourages the early use of a held Berry.,IV,6,4,9 +083,Anger Point,Raises Attack upon taking a critical hit.,IV,0,3,4 +084,Unburden,Raises Speed if a held item is used.,IV,0,5,7 +085,Heatproof,Weakens the power of Fire-type moves.,IV,0,2,0 +086,Simple,The Pokémon is prone to wild stat changes.,IV,0,3,2 +087,Dry Skin,Reduces HP if it is hot. Water restores HP.,IV,0,6,1 +088,Download,Adjusts power according to the foe’s lowest defensive stat.,IV,1,3,0 +089,Iron Fist,Boosts the power of punching moves.,IV,0,5,7 +090,Poison Heal,Restores HP if the Pokémon is poisoned.,IV,0,2,1 +091,Adaptability,Powers up moves of the same type.,IV,2,4,5 +092,Skill Link,Increases the frequency of multi-strike moves.,IV,1,2,4 +093,Hydration,Heals status problems if it is raining.,IV,2,10,9 +094,Solar Power,Boosts Sp. Atk, but lowers HP in sunshine.,IV,1,3,5 +095,Quick Feet,Boosts Speed if there is a status problem.,IV,0,5,4 +096,Normalize,All the Pokémon's moves become Normal type.,IV,0,2,0 +097,Sniper,Powers up moves if they become critical hits.,IV,0,9,5 +098,Magic Guard,The Pokémon only takes damage from attacks.,IV,0,7,3 +099,No Guard,Ensures the Pokémon and its foe’s attacks land.,IV,3,3,3 +100,Stall,The Pokémon moves after even slower foes.,IV,0,1,0 +101,Technician,Powers up the Pokémon's weaker moves.,IV,1,9,5 +102,Leaf Guard,Prevents status problems in sunny weather.,IV,1,6,7 +103,Klutz,The Pokémon can’t use any held items.,IV,0,6,1 +104,Mold Breaker,Moves can be used regardless of Abilities.,IV,4,6,7 +105,Super Luck,Heightens the critical-hit ratios of moves.,IV,0,6,3 +106,Aftermath,Damages the foe landing the finishing hit.,IV,0,4,4 +107,Anticipation,Senses the foe’s dangerous moves.,IV,1,4,2 +108,Forewarn,Determines what moves the foe has.,IV,0,6,0 +109,Unaware,Ignores any change in stats by the foe.,IV,0,4,3 +110,Tinted Lens,Powers up “not very effective” moves.,IV,0,4,5 +111,Filter,Powers down supereffective moves.,IV,1,2,0 +112,Slow Start,Temporarily halves Attack and Speed.,IV,1,0,0 +113,Scrappy,Enables moves to hit Ghost-type foes.,IV,1,2,8 +114,Storm Drain,The Pokémon draws in all Water-type moves.,IV,0,4,3 +115,Ice Body,The Pokémon regains HP in a hailstorm.,IV,3,7,4 +116,Solid Rock,Powers down supereffective moves.,IV,0,4,0 +117,Snow Warning,The Pokémon summons a hailstorm in battle.,IV,2,0,2 +118,Honey Gather,The Pokémon may gather Honey from somewhere.,IV,1,0,1 +119,Frisk,The Pokémon can check the foe’s held item.,IV,0,12,8 +120,Reckless,Powers up moves that have recoil damage.,IV,0,3,9 +121,Multitype,Changes type to match the held Plate.,IV,1,0,0 +122,Flower Gift,Powers up party Pokémon when it is sunny.,IV,1,0,0 +123,Bad Dreams,Reduces a sleeping foe’s HP.,IV,1,0,0 +124,Pickpocket,Steals attacking Pokémon's held item on contact.,V,0,0,7 +125,Sheer Force,Strengthens moves with extra effects to 1.3× their power, but prevents their extra effects.,V,2,6,17 +126,Contrary,Inverts stat modifiers.,V,0,2,5 +127,Unnerve,Prevents opposing Pokémon from eating held Berries.,V,0,4,15 +128,Defiant,Raises Attack two stages upon having any stat lowered.,V,0,2,10 +129,Defeatist,Halves Attack and Special Attack below 50% HP.,V,2,0,0 +130,Cursed Body,Has a 30% chance of Disabling any move that hits the Pokémon.,V,0,2,3 +131,Healer,Has a 30% chance of curing each adjacent ally of any major status ailment after each turn.,V,3,2,3 +132,Friend Guard,Decreases damage inflicted against ally Pokémon.,V,0,0,8 +133,Weak Armor,Raises Speed and lowers Defense by one stage each upon being hit by any move.,V,0,1,15 +134,Heavy Metal,Doubles the Pokémon's weight.,V,0,0,5 +135,Light Metal,Halves the Pokémon's weight.,V,0,0,5 +136,Multiscale,Halves damage taken from full HP.,V,0,0,2 +137,Toxic Boost,Increases Attack to 1.5× when poisoned.,V,0,0,1 +138,Flare Boost,Increases Special Attack to 1.5× when burned.,V,0,0,2 +139,Harvest,Sometimes restores a consumed Berry.,V,0,0,5 +140,Telepathy,Protects against damaging moves from friendly Pokémon.,V,0,2,14 +141,Moody,Raises a random stat two stages and lowers another one stage after each turn.,V,0,0,7 +142,Overcoat,Protects against damage from weather.,V,0,5,12 +143,Poison Touch,Has a 30% chance of poisoning Pokémon upon contact when attacking.,V,0,3,4 +144,Regenerator,Heals for 1/3 max HP upon leaving battle.,V,1,3,13 +145,Big Pecks,Protects the Pokémon from Defense-lowering attacks.,V,1,7,4 +146,Sand Rush,Doubles Speed during a sandstorm.,V,0,4,2 +147,Wonder Skin,Has a 50% chance of protecting against non-damaging moves that inflict major status ailments.,V,0,1,3 +148,Analytic,Strengthens moves when moving last.,V,0,0,12 +149,Illusion,Takes the appearance of the last conscious party Pokémon upon being sent out until hit by a damaging move.,V,2,0,0 +150,Imposter,Transforms upon entering battle.,V,0,0,1 +151,Infiltrator,Ignores Light Screen, Reflect, and Safeguard.,V,0,6,14 +152,Mummy,Contact with this Pokémon spreads this Ability.,V,2,0,0 +153,Moxie,Raises Attack one stage upon KOing a Pokémon.,V,0,5,8 +154,Justified,Raises Attack when hit by Dark-type moves.,V,4,0,5 +155,Rattled,Raises Speed one stage upon being hit by a Dark, Ghost, or Bug move.,V,0,0,11 +156,Magic Bounce,Reflects most non-damaging moves back at their user.,V,3,0,3 +157,Sap Sipper,Absorbs Grass moves, raising Attack one stage.,V,2,6,8 +158,Prankster,Raises non-damaging moves' priority by one stage.,V,4,2,8 +159,Sand Force,Strengthens Rock, Ground, and Steel moves to 1.3× their power during a sandstorm.,V,3,2,13 +160,Iron Barbs,Damages attacking Pokémon for 1/8 their max HP on contact.,V,2,0,0 +161,Zen Mode,Changes the Pokémon's shape when HP is halved.,V,0,0,1 +162,Victory Star,Raises moves' accuracy to 1.1× for friendly Pokémon.,V,1,0,0 +163,Turboblaze,Moves can be used regardless of Abilities.,V,2,0,0 +164,Teravolt,Moves can be used regardless of Abilities.,V,2,0,0 +165,Aroma Veil,Protects allies from attacks that limit their move choices.,VI,0,0,2 +166,Flower Veil,Prevents lowering of ally Grass-type Pokémon's stats.,VI,3,0,0 +167,Cheek Pouch,Restores HP as well when the Pokémon eats a Berry.,VI,0,3,0 +168,Protean,Changes the Pokémon's type to the same type of the move it is using.,VI,0,0,4 +169,Fur Coat,Halves damage from physical moves.,VI,1,0,0 +170,Magician,The Pokémon steals the held item of a Pokémon it hits with a move.,VI,1,0,4 +171,Bulletproof,Protects the Pokémon from some ball and bomb moves.,VI,0,0,3 +172,Competitive,Boosts the Sp.Atk stat when a stat is lowered.,VI,0,7,1 +173,Strong Jaw,The Pokémon's strong jaw gives it tremendous biting power.,VI,3,0,0 +174,Refrigerate,Normal-type moves become Ice-type moves.,VI,3,0,0 +175,Sweet Veil,Prevents itself and its allies from falling asleep.,VI,2,0,0 +176,Stance Change,The Pokémon changes form depending on how it battles.,VI,1,0,0 +177,Gale Wings,Gives priority to Flying-type moves.,VI,0,0,3 +178,Mega Launcher,Powers up aura and pulse moves.,VI,3,0,0 +179,Grass Pelt,Boosts the Defense stat in Grassy Terrain.,VI,0,0,2 +180,Symbiosis,The Pokémon can pass an item to an ally.,VI,0,0,3 +181,Tough Claws,Powers up moves that make direct contact.,VI,3,2,0 +182,Pixilate,Normal-type moves become Fairy-type moves.,VI,2,0,1 +183,Gooey,Contact with the Pokémon lowers the attacker's Speed stat.,VI,0,0,3 +184,Aerilate,Normal-type moves become Flying-type moves.,VI,2,0,0 +185,Parental Bond,Parent and child attack together.,VI,1,0,0 +186,Dark Aura,Powers up each Pokémon's Dark-type moves.,VI,1,0,0 +187,Fairy Aura,Powers up each Pokémon's Fairy-type moves.,VI,1,0,0 +188,Aura Break,The effects of "Aura" Abilities are reversed.,VI,1,0,0 +189,Primordial Sea,Causes heavy rain.,VI,1,0,0 +190,Desolate Land,Creates harsh sunlight.,VI,1,0,0 +191,Delta Stream,Eliminates weather effects and eliminates weaknesses of Flying-type Pokémon.,VI,1,0,0 \ No newline at end of file diff --git a/bin/data/moves.csv b/bin/data/moves.csv new file mode 100644 index 0000000..357cfff --- /dev/null +++ b/bin/data/moves.csv @@ -0,0 +1,622 @@ +0,Name,Type,Category,0,0,0 +1,Pound,Normal,Physical,35,35,100 +2,Karate Chop,Fighting,Physical,25,25,100 +3,Double Slap,Normal,Physical,10,10,85 +4,Comet Punch,Normal,Physical,15,15,85 +5,Mega Punch,Normal,Physical,20,20,85 +6,Pay Day,Normal,Physical,20,20,100 +7,Fire Punch,Fire,Physical,15,15,100 +8,Ice Punch,Ice,Physical,15,15,100 +9,Thunder Punch,Electric,Physical,15,15,100 +10,Scratch,Normal,Physical,35,35,100 +11,Vice Grip,Normal,Physical,30,30,100 +12,Guillotine,Normal,Physical,5,5,100 +13,Razor Wind,Normal,Special,10,10,100 +14,Swords Dance,Normal,Status,20,20,100 +15,Cut,Normal,Physical,30,30,95 +16,Gust,Flying,Special,35,35,100 +17,Wing Attack,Flying,Physical,35,35,100 +18,Whirlwind,Normal,Status,20,20,100 +19,Fly,Flying,Physical,15,15,95 +20,Bind,Normal,Physical,20,20,85 +21,Slam,Normal,Physical,20,20,75 +22,Vine Whip,Grass,Physical,25,25,100 +23,Stomp,Normal,Physical,20,20,100 +24,Double Kick,Fighting,Physical,30,30,100 +25,Mega Kick,Normal,Physical,5,5,75 +26,Jump Kick,Fighting,Physical,10,10,95 +27,Rolling Kick,Fighting,Physical,15,15,85 +28,Sand Attack,Ground,Status,15,15,100 +29,Headbutt,Normal,Physical,15,15,100 +30,Horn Attack,Normal,Physical,25,25,100 +31,Fury Attack,Normal,Physical,20,20,85 +32,Horn Drill,Normal,Physical,5,5,100 +33,Tackle,Normal,Physical,35,35,100 +34,Body Slam,Normal,Physical,15,15,100 +35,Wrap,Normal,Physical,20,20,90 +36,Take Down,Normal,Physical,20,20,85 +37,Thrash,Normal,Physical,10,10,100 +38,Double-Edge,Normal,Physical,15,15,100 +39,Tail Whip,Normal,Status,30,30,100 +40,Poison Sting,Poison,Physical,35,35,100 +41,Twineedle,Bug,Physical,20,20,100 +42,Pin Missile,Bug,Physical,20,20,95 +43,Leer,Normal,Status,30,30,100 +44,Bite,Dark,Physical,25,25,100 +45,Growl,Normal,Status,40,40,100 +46,Roar,Normal,Status,20,20,100 +47,Sing,Normal,Status,15,15,55 +48,Supersonic,Normal,Status,20,20,55 +49,Sonic Boom,Normal,Special,20,20,90 +50,Disable,Normal,Status,20,20,100 +51,Acid,Poison,Special,30,30,100 +52,Ember,Fire,Special,25,25,100 +53,Flamethrower,Fire,Special,15,15,100 +54,Mist,Ice,Status,30,30,100 +55,Water Gun,Water,Special,25,25,100 +56,Hydro Pump,Water,Special,5,5,80 +57,Surf,Water,Special,15,15,100 +58,Ice Beam,Ice,Special,10,10,100 +59,Blizzard,Ice,Special,5,5,70 +60,Psybeam,Psychic,Special,20,20,100 +61,Bubble Beam,Water,Special,20,20,100 +62,Aurora Beam,Ice,Special,20,20,100 +63,Hyper Beam,Normal,Special,5,5,90 +64,Peck,Flying,Physical,35,35,100 +65,Drill Peck,Flying,Physical,20,20,100 +66,Submission,Fighting,Physical,25,25,80 +67,Low Kick,Fighting,Physical,20,20,100 +68,Counter,Fighting,Physical,20,20,100 +69,Seismic Toss,Fighting,Physical,20,20,100 +70,Strength,Normal,Physical,15,15,100 +71,Absorb,Grass,Special,25,25,100 +72,Mega Drain,Grass,Special,15,15,100 +73,Leech Seed,Grass,Status,10,10,90 +74,Growth,Normal,Status,20,20,100 +75,Razor Leaf,Grass,Physical,25,25,95 +76,Solar Beam,Grass,Special,10,10,100 +77,Poison Powder,Poison,Status,35,35,75 +78,Stun Spore,Grass,Status,30,30,75 +79,Sleep Powder,Grass,Status,15,15,75 +80,Petal Dance,Grass,Special,10,10,100 +81,String Shot,Bug,Status,40,40,95 +82,Dragon Rage,Dragon,Special,10,10,100 +83,Fire Spin,Fire,Special,15,15,85 +84,Thunder Shock,Electric,Special,30,30,100 +85,Thunderbolt,Electric,Special,15,15,100 +86,Thunder Wave,Electric,Status,20,20,100 +87,Thunder,Electric,Special,10,10,70 +88,Rock Throw,Rock,Physical,15,15,90 +89,Earthquake,Ground,Physical,10,10,100 +90,Fissure,Ground,Physical,5,5,100 +91,Dig,Ground,Physical,10,10,100 +92,Toxic,Poison,Status,10,10,90 +93,Confusion,Psychic,Special,25,25,100 +94,Psychic,Psychic,Special,10,10,100 +95,Hypnosis,Psychic,Status,20,20,60 +96,Meditate,Psychic,Status,40,40,100 +97,Agility,Psychic,Status,30,30,100 +98,Quick Attack,Normal,Physical,30,30,100 +99,Rage,Normal,Physical,20,20,100 +100,Teleport,Psychic,Status,20,20,100 +101,Night Shade,Ghost,Special,15,15,100 +102,Mimic,Normal,Status,10,10,100 +103,Screech,Normal,Status,40,40,85 +104,Double Team,Normal,Status,15,15,100 +105,Recover,Normal,Status,10,10,100 +106,Harden,Normal,Status,30,30,100 +107,Minimize,Normal,Status,10,10,100 +108,Smokescreen,Normal,Status,20,20,100 +109,Confuse Ray,Ghost,Status,10,10,100 +110,Withdraw,Water,Status,40,40,100 +111,Defense Curl,Normal,Status,40,40,100 +112,Barrier,Psychic,Status,20,20,100 +113,Light Screen,Psychic,Status,30,30,100 +114,Haze,Ice,Status,30,30,100 +115,Reflect,Psychic,Status,20,20,100100 +116,Focus Energy,Normal,Status,30,30,100 +117,Bide,Normal,Physical,10,10,100 +118,Metronome,Normal,Status,10,10, +119,Mirror Move,Flying,Status,20,20, +120,Self-Destruct,Normal,Physical,5,5,100 +121,Egg Bomb,Normal,Physical,10,10,75 +122,Lick,Ghost,Physical,30,30,100 +123,Smog,Poison,Special,20,20,70 +124,Sludge,Poison,Special,20,20,100 +125,Bone Club,Ground,Physical,20,20,85 +126,Fire Blast,Fire,Special,5,5,85 +127,Waterfall,Water,Physical,15,15,100 +128,Clamp,Water,Physical,15,15,85 +129,Swift,Normal,Special,20,20,100 +130,Skull Bash,Normal,Physical,10,10,100 +131,Spike Cannon,Normal,Physical,15,15,100 +132,Constrict,Normal,Physical,35,35,100 +133,Amnesia,Psychic,Status,20,20,100 +134,Kinesis,Psychic,Status,15,15,80 +135,Soft-Boiled,Normal,Status,10,10,100 +136,High Jump Kick,Fighting,Physical,10,10,90 +137,Glare,Normal,Status,30,30,100 +138,Dream Eater,Psychic,Special,15,15,100 +139,Poison Gas,Poison,Status,40,40,90 +140,Barrage,Normal,Physical,20,20,85 +141,Leech Life,Bug,Physical,15,15,100 +142,Lovely Kiss,Normal,Status,10,10,75 +143,Sky Attack,Flying,Physical,5,5,90 +144,Transform,Normal,Status,10,10,100 +145,Bubble,Water,Special,30,30,100 +146,Dizzy Punch,Normal,Physical,10,10,100 +147,Spore,Grass,Status,15,15,100 +148,Flash,Normal,Status,20,20,100 +149,Psywave,Psychic,Special,15,15,100 +150,Splash,Normal,Status,40,40,100 +151,Acid Armor,Poison,Status,20,20,100 +152,Crabhammer,Water,Physical,10,10,90 +153,Explosion,Normal,Physical,5,5,100 +154,Fury Swipes,Normal,Physical,15,15,80 +155,Bonemerang,Ground,Physical,10,10,90 +156,Rest,Psychic,Status,10,10,100 +157,Rock Slide,Rock,Physical,10,10,90 +158,Hyper Fang,Normal,Physical,15,15,90 +159,Sharpen,Normal,Status,30,30,100 +160,Conversion,Normal,Status,30,30,100 +161,Tri Attack,Normal,Special,10,10,100 +162,Super Fang,Normal,Physical,10,10,90 +163,Slash,Normal,Physical,20,20,100 +164,Substitute,Normal,Status,10,10,100 +165,Struggle,Normal,Physical,1,1,100 +166,Sketch,Normal,Status,1,1,100 +167,Triple Kick,Fighting,Physical,10,10,90 +168,Thief,Dark,Physical,25,25,100 +169,Spider Web,Bug,Status,10,10,100 +170,Mind Reader,Normal,Status,5,5,100 +171,Nightmare,Ghost,Status,15,15,100 +172,Flame Wheel,Fire,Physical,25,25,100 +173,Snore,Normal,Special,15,15,100 +174,Curse,Ghost,Status,10,10,100 +175,Flail,Normal,Physical,15,15,100 +176,Conversion 2,Normal,Status,30,30,100 +177,Aeroblast,Flying,Special,5,5,95 +178,Cotton Spore,Grass,Status,40,40,100 +179,Reversal,Fighting,Physical,15,15,100 +180,Spite,Ghost,Status,10,10,100 +181,Powder Snow,Ice,Special,25,25,100 +182,Protect,Normal,Status,10,10,100 +183,Mach Punch,Fighting,Physical,30,30,100 +184,Scary Face,Normal,Status,10,10,100 +185,Feint Attack,Dark,Physical,20,20,100 +186,Sweet Kiss,Fairy,Status,10,10,75 +187,Belly Drum,Normal,Status,10,10,100 +188,Sludge Bomb,Poison,Special,10,10,100 +189,Mud-Slap,Ground,Special,10,10,100 +190,Octazooka,Water,Special,10,10,85 +191,Spikes,Ground,Status,20,20,100 +192,Zap Cannon,Electric,Special,5,5,50 +193,Foresight,Normal,Status,40,40,100 +194,Destiny Bond,Ghost,Status,5,5,100 +195,Perish Song,Normal,Status,5,5,100 +196,Icy Wind,Ice,Special,15,15,95 +197,Detect,Fighting,Status,5,5,100 +198,Bone Rush,Ground,Physical,10,10,90 +199,Lock-On,Normal,Status,5,5,100 +200,Outrage,Dragon,Physical,10,10,100 +201,Sandstorm,Rock,Status,10,10,100 +202,Giga Drain,Grass,Special,10,10,100 +203,Endure,Normal,Status,10,10,100 +204,Charm,Fairy,Status,20,20,100 +205,Rollout,Rock,Physical,20,20,90 +206,False Swipe,Normal,Physical,40,40,100 +207,Swagger,Normal,Status,15,15,90 +208,Milk Drink,Normal,Status,10,10,100 +209,Spark,Electric,Physical,20,20,100 +210,Fury Cutter,Bug,Physical,20,20,95 +211,Steel Wing,Steel,Physical,25,25,90 +212,Mean Look,Normal,Status,5,5,100 +213,Attract,Normal,Status,15,15,100 +214,Sleep Talk,Normal,Status,10,10,100 +215,Heal Bell,Normal,Status,5,5,100 +216,Return,Normal,Physical,20,20,100 +217,Present,Normal,Physical,15,15,90 +218,Frustration,Normal,Physical,20,20,100 +219,Safeguard,Normal,Status,25,25,100 +220,Pain Split,Normal,Status,20,20,100 +221,Sacred Fire,Fire,Physical,5,5,95 +222,Magnitude,Ground,Physical,30,30,100 +223,Dynamic Punch,Fighting,Physical,5,5,50 +224,Megahorn,Bug,Physical,10,10,85 +225,Dragon Breath,Dragon,Special,20,20,100 +226,Baton Pass,Normal,Status,40,40,100 +227,Encore,Normal,Status,5,5,100 +228,Pursuit,Dark,Physical,20,20,100 +229,Rapid Spin,Normal,Physical,40,40,100 +230,Sweet Scent,Normal,Status,20,20,100 +231,Iron Tail,Steel,Physical,15,15,75 +232,Metal Claw,Steel,Physical,35,35,95 +233,Vital Throw,Fighting,Physical,10,10,100 +234,Morning Sun,Normal,Status,5,5,100 +235,Synthesis,Grass,Status,5,5,100 +236,Moonlight,Fairy,Status,5,5,100 +237,Hidden Power,Normal,Special,15,15,100 +238,Cross Chop,Fighting,Physical,5,5,80 +239,Twister,Dragon,Special,20,20,100 +240,Rain Dance,Water,Status,5,5,100 +241,Sunny Day,Fire,Status,5,5,100 +242,Crunch,Dark,Physical,15,15,100 +243,Mirror Coat,Psychic,Special,20,20,100 +244,Psych Up,Normal,Status,10,10,100 +245,Extreme Speed,Normal,Physical,5,5,100 +246,Ancient Power,Rock,Special,5,5,100 +247,Shadow Ball,Ghost,Special,15,15,100 +248,Future Sight,Psychic,Special,10,10,100 +249,Rock Smash,Fighting,Physical,15,15,100 +250,Whirlpool,Water,Special,15,15,85 +251,Beat Up,Dark,Physical,10,10,100 +252,Fake Out,Normal,Physical,10,10,100 +253,Uproar,Normal,Special,10,10,100 +254,Stockpile,Normal,Status,20,20,100 +255,Spit Up,Normal,Special,10,10,100 +256,Swallow,Normal,Status,10,10,100 +257,Heat Wave,Fire,Special,10,10,90 +258,Hail,Ice,Status,10,10,100 +259,Torment,Dark,Status,15,15,100 +260,Flatter,Dark,Status,15,15,100 +261,Will-O-Wisp,Fire,Status,15,15,85 +262,Memento,Dark,Status,10,10,100 +263,Facade,Normal,Physical,20,20,100 +264,Focus Punch,Fighting,Physical,20,20,100 +265,Smelling Salts,Normal,Physical,10,10,100 +266,Follow Me,Normal,Status,20,20,100 +267,Nature Power,Normal,Status,20,20,100 +268,Charge,Electric,Status,20,20,100 +269,Taunt,Dark,Status,20,20,100 +270,Helping Hand,Normal,Status,20,20,100 +271,Trick,Psychic,Status,10,10,100 +272,Role Play,Psychic,Status,10,10,100 +273,Wish,Normal,Status,10,10,100 +274,Assist,Normal,Status,20,20,100 +275,Ingrain,Grass,Status,20,20,100 +276,Superpower,Fighting,Physical,5,5,100 +277,Magic Coat,Psychic,Status,15,15,100 +278,Recycle,Normal,Status,10,10,100 +279,Revenge,Fighting,Physical,10,10,100 +280,Brick Break,Fighting,Physical,15,15,100 +281,Yawn,Normal,Status,10,10,100 +282,Knock Off,Dark,Physical,20,20,100 +283,Endeavor,Normal,Physical,5,5,100 +284,Eruption,Fire,Special,5,5,100 +285,Skill Swap,Psychic,Status,10,10,100 +286,Imprison,Psychic,Status,10,10,100 +287,Refresh,Normal,Status,20,20,100 +288,Grudge,Ghost,Status,5,5,100 +289,Snatch,Dark,Status,10,10,100 +290,Secret Power,Normal,Physical,20,20,100 +291,Dive,Water,Physical,10,10,100 +292,Arm Thrust,Fighting,Physical,20,20,100 +293,Camouflage,Normal,Status,20,20,100 +294,Tail Glow,Bug,Status,20,20,100 +295,Luster Purge,Psychic,Special,5,5,100 +296,Mist Ball,Psychic,Special,5,5,100 +297,Feather Dance,Flying,Status,15,15,100 +298,Teeter Dance,Normal,Status,20,20,100 +299,Blaze Kick,Fire,Physical,10,10,90 +300,Mud Sport,Ground,Status,15,15,100 +301,Ice Ball,Ice,Physical,20,20,90 +302,Needle Arm,Grass,Physical,15,15,100 +303,Slack Off,Normal,Status,10,10,100 +304,Hyper Voice,Normal,Special,10,10,100 +305,Poison Fang,Poison,Physical,15,15,100 +306,Crush Claw,Normal,Physical,10,10,95 +307,Blast Burn,Fire,Special,5,5,90 +308,Hydro Cannon,Water,Special,5,5,90 +309,Meteor Mash,Steel,Physical,10,10,90 +310,Astonish,Ghost,Physical,15,15,100 +311,Weather Ball,Normal,Special,10,10,100 +312,Aromatherapy,Grass,Status,5,5,100 +313,Fake Tears,Dark,Status,20,20,100 +314,Air Cutter,Flying,Special,25,25,95 +315,Overheat,Fire,Special,5,5,90 +316,Odor Sleuth,Normal,Status,40,40,100 +317,Rock Tomb,Rock,Physical,15,15,95 +318,Silver Wind,Bug,Special,5,5,100 +319,Metal Sound,Steel,Status,40,40,85 +320,Grass Whistle,Grass,Status,15,15,55 +321,Tickle,Normal,Status,20,20,100 +322,Cosmic Power,Psychic,Status,20,20,100 +323,Water Spout,Water,Special,5,5,100 +324,Signal Beam,Bug,Special,15,15,100 +325,Shadow Punch,Ghost,Physical,20,20,100 +326,Extrasensory,Psychic,Special,20,20,100 +327,Sky Uppercut,Fighting,Physical,15,15,90 +328,Sand Tomb,Ground,Physical,15,15,85 +329,Sheer Cold,Ice,Special,5,5,100 +330,Muddy Water,Water,Special,10,10,85 +331,Bullet Seed,Grass,Physical,30,30,100 +332,Aerial Ace,Flying,Physical,20,20,100 +333,Icicle Spear,Ice,Physical,30,30,100 +334,Iron Defense,Steel,Status,15,15,100 +335,Block,Normal,Status,5,5,100 +336,Howl,Normal,Status,40,40,100 +337,Dragon Claw,Dragon,Physical,15,15,100 +338,Frenzy Plant,Grass,Special,5,5,90 +339,Bulk Up,Fighting,Status,20,20,100 +340,Bounce,Flying,Physical,5,5,85 +341,Mud Shot,Ground,Special,15,15,95 +342,Poison Tail,Poison,Physical,25,25,100 +343,Covet,Normal,Physical,25,25,100 +344,Volt Tackle,Electric,Physical,15,15,100 +345,Magical Leaf,Grass,Special,20,20,100 +346,Water Sport,Water,Status,15,15,100 +347,Calm Mind,Psychic,Status,20,20,100 +348,Leaf Blade,Grass,Physical,15,15,100 +349,Dragon Dance,Dragon,Status,20,20,100 +350,Rock Blast,Rock,Physical,10,10,90 +351,Shock Wave,Electric,Special,20,20,100 +352,Water Pulse,Water,Special,20,20,100 +353,Doom Desire,Steel,Special,5,5,100 +354,Psycho Boost,Psychic,Special,5,5,90 +355,Roost,Flying,Status,10,10,100 +356,Gravity,Psychic,Status,5,5,100 +357,Miracle Eye,Psychic,Status,40,40,100 +358,Wake-Up Slap,Fighting,Physical,10,10,100 +359,Hammer Arm,Fighting,Physical,10,10,90 +360,Gyro Ball,Steel,Physical,5,5,100 +361,Healing Wish,Psychic,Status,10,10,100 +362,Brine,Water,Special,10,10,100 +363,Natural Gift,Normal,Physical,15,15,100 +364,Feint,Normal,Physical,10,10,100 +365,Pluck,Flying,Physical,20,20,100 +366,Tailwind,Flying,Status,15,15,100 +367,Acupressure,Normal,Status,30,30,100 +368,Metal Burst,Steel,Physical,10,10,100 +369,U-turn,Bug,Physical,20,20,100 +370,Close Combat,Fighting,Physical,5,5,100 +371,Payback,Dark,Physical,10,10,100 +372,Assurance,Dark,Physical,10,10,100 +373,Embargo,Dark,Status,15,15,100 +374,Fling,Dark,Physical,10,10,100 +375,Psycho Shift,Psychic,Status,10,10,100 +376,Trump Card,Normal,Special,5,5,100 +377,Heal Block,Psychic,Status,15,15,100 +378,Wring Out,Normal,Special,5,5,100 +379,Power Trick,Psychic,Status,10,10,100 +380,Gastro Acid,Poison,Status,10,10,100 +381,Lucky Chant,Normal,Status,30,30,100 +382,Me First,Normal,Status,20,20,100 +383,Copycat,Normal,Status,20,20,100 +384,Power Swap,Psychic,Status,10,10,100 +385,Guard Swap,Psychic,Status,10,10,100 +386,Punishment,Dark,Physical,5,5,100 +387,Last Resort,Normal,Physical,5,5,100 +388,Worry Seed,Grass,Status,10,10,100 +389,Sucker Punch,Dark,Physical,5,5,100 +390,Toxic Spikes,Poison,Status,20,20,100 +391,Heart Swap,Psychic,Status,10,10,100 +392,Aqua Ring,Water,Status,20,20,100 +393,Magnet Rise,Electric,Status,10,10,100 +394,Flare Blitz,Fire,Physical,15,15,100 +395,Force Palm,Fighting,Physical,10,10,100 +396,Aura Sphere,Fighting,Special,20,20,100 +397,Rock Polish,Rock,Status,20,20,100 +398,Poison Jab,Poison,Physical,20,20,100 +399,Dark Pulse,Dark,Special,15,15,100 +400,Night Slash,Dark,Physical,15,15,100 +401,Aqua Tail,Water,Physical,10,10,90 +402,Seed Bomb,Grass,Physical,15,15,100 +403,Air Slash,Flying,Special,15,15,95 +404,X-Scissor,Bug,Physical,15,15,100 +405,Bug Buzz,Bug,Special,10,10,100 +406,Dragon Pulse,Dragon,Special,10,10,100 +407,Dragon Rush,Dragon,Physical,10,10,75 +408,Power Gem,Rock,Special,20,20,100 +409,Drain Punch,Fighting,Physical,10,10,100 +410,Vacuum Wave,Fighting,Special,30,30,100 +411,Focus Blast,Fighting,Special,5,5,70 +412,Energy Ball,Grass,Special,10,10,100 +413,Brave Bird,Flying,Physical,15,15,100 +414,Earth Power,Ground,Special,10,10,100 +415,Switcheroo,Dark,Status,10,10,100 +416,Giga Impact,Normal,Physical,5,5,90 +417,Nasty Plot,Dark,Status,20,20,100 +418,Bullet Punch,Steel,Physical,30,30,100 +419,Avalanche,Ice,Physical,10,10,100 +420,Ice Shard,Ice,Physical,30,30,100 +421,Shadow Claw,Ghost,Physical,15,15,100 +422,Thunder Fang,Electric,Physical,15,15,95 +423,Ice Fang,Ice,Physical,15,15,95 +424,Fire Fang,Fire,Physical,15,15,95 +425,Shadow Sneak,Ghost,Physical,30,30,100 +426,Mud Bomb,Ground,Special,10,10,85 +427,Psycho Cut,Psychic,Physical,20,20,100 +428,Zen Headbutt,Psychic,Physical,15,15,90 +429,Mirror Shot,Steel,Special,10,10,85 +430,Flash Cannon,Steel,Special,10,10,100 +431,Rock Climb,Normal,Physical,20,20,85 +432,Defog,Flying,Status,15,15,100 +433,Trick Room,Psychic,Status,5,5,100 +434,Draco Meteor,Dragon,Special,5,5,90 +435,Discharge,Electric,Special,15,15,100 +436,Lava Plume,Fire,Special,15,15,100 +437,Leaf Storm,Grass,Special,5,5,90 +438,Power Whip,Grass,Physical,10,10,85 +439,Rock Wrecker,Rock,Physical,5,5,90 +440,Cross Poison,Poison,Physical,20,20,100 +441,Gunk Shot,Poison,Physical,5,5,80 +442,Iron Head,Steel,Physical,15,15,100 +443,Magnet Bomb,Steel,Physical,20,20,100 +444,Stone Edge,Rock,Physical,5,5,80 +445,Captivate,Normal,Status,20,20,100 +446,Stealth Rock,Rock,Status,20,20,100 +447,Grass Knot,Grass,Special,20,20,100 +448,Chatter,Flying,Special,20,20,100 +449,Judgment,Normal,Special,10,10,100 +450,Bug Bite,Bug,Physical,20,20,100 +451,Charge Beam,Electric,Special,10,10,90 +452,Wood Hammer,Grass,Physical,15,15,100 +453,Aqua Jet,Water,Physical,20,20,100 +454,Attack Order,Bug,Physical,15,15,100 +455,Defend Order,Bug,Status,10,10,100 +456,Heal Order,Bug,Status,10,10,100 +457,Head Smash,Rock,Physical,5,5,80 +458,Double Hit,Normal,Physical,10,10,90 +459,Roar of Time,Dragon,Special,5,5,90 +460,Spacial Rend,Dragon,Special,5,5,95 +461,Lunar Dance,Psychic,Status,10,10,100 +462,Crush Grip,Normal,Physical,5,5,100 +463,Magma Storm,Fire,Special,5,5,75 +464,Dark Void,Dark,Status,10,10,80 +465,Seed Flare,Grass,Special,5,5,85 +466,Ominous Wind,Ghost,Special,5,5,100 +467,Shadow Force,Ghost,Physical,5,5,100 +468,Hone Claws,Dark,Status,15,15,100 +469,Wide Guard,Rock,Status,10,10,100 +470,Guard Split,Psychic,Status,10,10,100 +471,Power Split,Psychic,Status,10,10,100 +472,Wonder Room,Psychic,Status,10,10,100 +473,Psyshock,Psychic,Special,10,10,100 +474,Venoshock,Poison,Special,10,10,100 +475,Autotomize,Steel,Status,15,15,100 +476,Rage Powder,Bug,Status,20,20,100 +477,Telekinesis,Psychic,Status,15,15,100 +478,Magic Room,Psychic,Status,10,10,100 +479,Smack Down,Rock,Physical,15,15,100 +480,Storm Throw,Fighting,Physical,10,10,100 +481,Flame Burst,Fire,Special,15,15,100 +482,Sludge Wave,Poison,Special,10,10,100 +483,Quiver Dance,Bug,Status,20,20,100 +484,Heavy Slam,Steel,Physical,10,10,100 +485,Synchronoise,Psychic,Special,15,15,100 +486,Electro Ball,Electric,Special,10,10,100 +487,Soak,Water,Status,20,20,100 +488,Flame Charge,Fire,Physical,20,20,100 +489,Coil,Poison,Status,20,20,100 +490,Low Sweep,Fighting,Physical,20,20,100 +491,Acid Spray,Poison,Special,20,20,100 +492,Foul Play,Dark,Physical,15,15,100 +493,Simple Beam,Normal,Status,15,15,100 +494,Entrainment,Normal,Status,15,15,100 +495,After You,Normal,Status,15,15,100 +496,Round,Normal,Special,15,15,100 +497,Echoed Voice,Normal,Special,15,15,100 +498,Chip Away,Normal,Physical,20,20,100 +499,Clear Smog,Poison,Special,15,15,100 +500,Stored Power,Psychic,Special,10,10,100 +501,Quick Guard,Fighting,Status,15,15,100 +502,Ally Switch,Psychic,Status,15,15,100 +503,Scald,Water,Special,15,15,100 +504,Shell Smash,Normal,Status,15,15,100 +505,Heal Pulse,Psychic,Status,10,10,100 +506,Hex,Ghost,Special,10,10,100 +507,Sky Drop,Flying,Physical,10,10,100 +508,Shift Gear,Steel,Status,10,10,100 +509,Circle Throw,Fighting,Physical,10,10,90 +510,Incinerate,Fire,Special,15,15,100 +511,Quash,Dark,Status,15,15,100 +512,Acrobatics,Flying,Physical,15,15,100 +513,Reflect Type,Normal,Status,15,15,100 +514,Retaliate,Normal,Physical,5,5,100 +515,Final Gambit,Fighting,Special,5,5,100 +516,Bestow,Normal,Status,15,15,100 +517,Inferno,Fire,Special,5,5,50 +518,Water Pledge,Water,Special,10,10,100 +519,Fire Pledge,Fire,Special,10,10,100 +520,Grass Pledge,Grass,Special,10,10,100 +521,Volt Switch,Electric,Special,20,20,100 +522,Struggle Bug,Bug,Special,20,20,100 +523,Bulldoze,Ground,Physical,20,20,100 +524,Frost Breath,Ice,Special,10,10,90 +525,Dragon Tail,Dragon,Physical,10,10,90 +526,Work Up,Normal,Status,30,30,100 +527,Electroweb,Electric,Special,15,15,95 +528,Wild Charge,Electric,Physical,15,15,100 +529,Drill Run,Ground,Physical,10,10,95 +530,Dual Chop,Dragon,Physical,15,15,90 +531,Heart Stamp,Psychic,Physical,25,25,100 +532,Horn Leech,Grass,Physical,10,10,100 +533,Sacred Sword,Fighting,Physical,15,15,100 +534,Razor Shell,Water,Physical,10,10,95 +535,Heat Crash,Fire,Physical,10,10,100 +536,Leaf Tornado,Grass,Special,10,10,90 +537,Steamroller,Bug,Physical,20,20,100 +538,Cotton Guard,Grass,Status,10,10,100 +539,Night Daze,Dark,Special,10,10,95 +540,Psystrike,Psychic,Special,10,10,100 +541,Tail Slap,Normal,Physical,10,10,85 +542,Hurricane,Flying,Special,10,10,70 +543,Head Charge,Normal,Physical,15,15,100 +544,Gear Grind,Steel,Physical,15,15,85 +545,Searing Shot,Fire,Special,5,5,100 +546,Techno Blast,Normal,Special,5,5,100 +547,Relic Song,Normal,Special,10,10,100 +548,Secret Sword,Fighting,Special,10,10,100 +549,Glaciate,Ice,Special,10,10,95 +550,Bolt Strike,Electric,Physical,5,5,85 +551,Blue Flare,Fire,Special,5,5,85 +552,Fiery Dance,Fire,Special,10,10,100 +553,Freeze Shock,Ice,Physical,5,5,90 +554,Ice Burn,Ice,Special,5,5,90 +555,Snarl,Dark,Special,15,15,95 +556,Icicle Crash,Ice,Physical,10,10,90 +557,V-create,Fire,Physical,5,5,95 +558,Fusion Flare,Fire,Special,5,5,100 +559,Fusion Bolt,Electric,Physical,5,5,100 +560,Flying Press,Fighting,Physical,10,10,95 +561,Mat Block,Fighting,Status,10,10,100 +562,Belch,Poison,Special,10,10,90 +563,Rototiller,Ground,Status,10,10,100 +564,Sticky Web,Bug,Status,20,20,100 +565,Fell Stinger,Bug,Physical,25,25,100 +566,Phantom Force,Ghost,Physical,10,10,100 +567,Trick-or-Treat,Ghost,Status,20,20,100 +568,Noble Roar,Normal,Status,30,30,100 +569,Ion Deluge,Electric,Status,25,25,100 +570,Parabolic Charge,Electric,Special,20,20,100 +571,Forest's Curse,Grass,Status,20,20,100 +572,Petal Blizzard,Grass,Physical,15,15,100 +573,Freeze-Dry,Ice,Special,20,20,100 +574,Disarming Voice,Fairy,Special,15,15,100 +575,Parting Shot,Dark,Status,20,20,100 +576,Topsy-Turvy,Dark,Status,20,20,100 +577,Draining Kiss,Fairy,Special,10,10,100 +578,Crafty Shield,Fairy,Status,10,10,100 +579,Flower Shield,Fairy,Status,10,10,100 +580,Grassy Terrain,Grass,Status,10,10,100 +581,Misty Terrain,Fairy,Status,10,10,100 +582,Electrify,Electric,Status,20,20,100 +583,Play Rough,Fairy,Physical,10,10,90 +584,Fairy Wind,Fairy,Special,30,30,100 +585,Moonblast,Fairy,Special,15,15,100 +586,Boomburst,Normal,Special,10,10,100 +587,Fairy Lock,Fairy,Status,10,10,100 +588,King's Shield,Steel,Status,10,10,100 +589,Play Nice,Normal,Status,20,20,100 +590,Confide,Normal,Status,20,20,100 +591,Diamond Storm,Rock,Physical,5,5,95 +592,Steam Eruption,Water,Special,5,5,95 +593,Hyperspace Hole,Psychic,Special,5,5,100 +594,Water Shuriken,Water,Physical,20,20,100 +595,Mystical Fire,Fire,Special,10,10,100 +596,Spiky Shield,Grass,Status,10,10,100 +597,Aromatic Mist,Fairy,Status,20,20,100 +598,Eerie Impulse,Electric,Status,15,15,100 +599,Venom Drench,Poison,Status,20,20,100 +600,Powder,Bug,Status,20,20,100 +601,Geomancy,Fairy,Status,10,10,100 +602,Magnetic Flux,Electric,Status,20,20,100 +603,Happy Hour,Normal,Status,30,30,100 +604,Electric Terrain,Electric,Status,10,10,100 +605,Dazzling Gleam,Fairy,Special,10,10,100 +606,Celebrate,Normal,Status,40,40,100 +607,Hold Hands,Normal,Status,40,40,100 +608,Baby-Doll Eyes,Fairy,Status,30,30,100 +609,Nuzzle,Electric,Physical,20,20,100 +610,Hold Back,Normal,Physical,40,40,100 +611,Infestation,Bug,Special,20,20,100 +612,Power-Up Punch,Fighting,Physical,20,20,100 +613,Oblivion Wing,Flying,Special,10,10,100 +614,Thousand Arrows,Ground,Physical,10,10,100 +615,Thousand Waves,Ground,Physical,10,10,100 +616,Land's Wrath,Ground,Physical,10,10,100 +617,Light of Ruin,Fairy,Special,5,5,90 +618,Origin Pulse,Water,Special,10,10,85 +619,Precipice Blades,Ground,Physical,10,10,85 +620,Dragon Ascent,Flying,Physical,5,5,100 +621,Hyperspace Fury,Dark,Physical,5,5,100 diff --git a/bin/data/pokemon.csv b/bin/data/pokemon.csv new file mode 100644 index 0000000..2e5f64e --- /dev/null +++ b/bin/data/pokemon.csv @@ -0,0 +1,748 @@ +1,Bulbasaur,45,49,49,65,65,45,318,0,0,0,0,0 +2,Ivysaur,60,62,63,80,80,60,405,0,0,0,0,0 +3,Venusaur,80,82,83,100,100,80,525,0,0,0,0,0 +4,Charmander,39,52,43,60,50,65,309,0,0,0,0,0 +5,Charmeleon,58,64,58,80,65,80,405,0,0,0,0,0 +6,Charizard,78,84,78,109,85,100,534,0,0,0,0,0 +7,Squirtle,44,48,65,50,64,43,314,67,396,406,330,323 +8,Wartortle,59,63,80,65,80,58,405,0,0,0,0,0 +9,Blastoise,79,83,100,85,105,78,530,0,0,0,0,0 +10,Caterpie,45,30,35,20,20,45,195,0,0,0,0,0 +11,Metapod,50,20,55,25,25,30,205,0,0,0,0,0 +12,Butterfree,60,45,50,90,80,70,395,0,0,0,0,0 +13,Weedle,40,35,30,20,20,50,195,0,0,0,0,0 +14,Kakuna,45,25,50,25,25,35,205,0,0,0,0,0 +15,Beedrill,65,90,40,45,80,75,395,0,0,0,0,0 +16,Pidgey,40,45,40,35,35,56,251,0,0,0,0,0 +17,Pidgeotto,63,60,55,50,50,71,349,0,0,0,0,0 +18,Pidgeot,83,80,75,70,70,101,479,0,0,0,0,0 +19,Rattata,30,56,35,25,35,72,253,0,0,0,0,0 +20,Raticate,55,81,60,50,70,97,413,0,0,0,0,0 +21,Spearow,40,60,30,31,31,70,262,0,0,0,0,0 +22,Fearow,65,90,65,61,61,100,442,0,0,0,0,0 +23,Ekans,35,60,44,40,54,55,288,0,0,0,0,0 +24,Arbok,60,85,69,65,79,80,438,0,0,0,0,0 +25,Pikachu,35,55,40,50,50,90,320,0,0,0,0,0 +26,Raichu,60,90,55,90,80,110,485,0,0,0,0,0 +27,Sandshrew,50,75,85,20,30,40,300,0,0,0,0,0 +28,Sandslash,75,100,110,45,55,65,450,0,0,0,0,0 +29,Nidoranâ F,55,47,52,40,40,41,275,0,0,0,0,0 +30,Nidorina,70,62,67,55,55,56,365,0,0,0,0,0 +31,Nidoqueen,90,92,87,75,85,76,505,0,0,0,0,0 +32,Nidoranâ M,46,57,40,40,40,50,273,0,0,0,0,0 +33,Nidorino,61,72,57,55,55,65,365,0,0,0,0,0 +34,Nidoking,81,102,77,85,75,85,505,0,0,0,0,0 +35,Clefairy,70,45,48,60,65,35,323,0,0,0,0,0 +36,Clefable,95,70,73,95,90,60,483,0,0,0,0,0 +37,Vulpix,38,41,40,50,65,65,299,0,0,0,0,0 +38,Ninetales,73,76,75,81,100,100,505,0,0,0,0,0 +39,Jigglypuff,115,45,20,45,25,20,270,0,0,0,0,0 +40,Wigglytuff,140,70,45,85,50,45,435,0,0,0,0,0 +41,Zubat,40,45,35,30,40,55,245,0,0,0,0,0 +42,Golbat,75,80,70,65,75,90,455,0,0,0,0,0 +43,Oddish,45,50,55,75,65,30,320,0,0,0,0,0 +44,Gloom,60,65,70,85,75,40,395,0,0,0,0,0 +45,Vileplume,75,80,85,110,90,50,490,0,0,0,0,0 +46,Paras,35,70,55,45,55,25,285,0,0,0,0,0 +47,Parasect,60,95,80,60,80,30,405,0,0,0,0,0 +48,Venonat,60,55,50,40,55,45,305,0,0,0,0,0 +49,Venomoth,70,65,60,90,75,90,450,0,0,0,0,0 +50,Diglett,10,55,25,35,45,95,265,0,0,0,0,0 +51,Dugtrio,35,80,50,50,70,120,405,0,0,0,0,0 +52,Meowth,40,45,35,40,40,90,290,0,0,0,0,0 +53,Persian,65,70,60,65,65,115,440,0,0,0,0,0 +54,Psyduck,50,52,48,65,50,55,320,0,0,0,0,0 +55,Golduck,80,82,78,95,80,85,500,0,0,0,0,0 +56,Mankey,40,80,35,35,45,70,305,0,0,0,0,0 +57,Primeape,65,105,60,60,70,95,455,0,0,0,0,0 +58,Growlithe,55,70,45,70,50,60,350,0,0,0,0,0 +59,Arcanine,90,110,80,100,80,95,555,0,0,0,0,0 +60,Poliwag,40,50,40,40,40,90,300,0,0,0,0,0 +61,Poliwhirl,65,65,65,50,50,90,385,0,0,0,0,0 +62,Poliwrath,90,95,95,70,90,70,510,0,0,0,0,0 +63,Abra,25,20,15,105,55,90,310,0,0,0,0,0 +64,Kadabra,40,35,30,120,70,105,400,0,0,0,0,0 +65,Alakazam,55,50,45,135,95,120,500,0,0,0,0,0 +66,Machop,70,80,50,35,35,35,305,0,0,0,0,0 +67,Machoke,80,100,70,50,60,45,405,0,0,0,0,0 +68,Machamp,90,130,80,65,85,55,505,0,0,0,0,0 +69,Bellsprout,50,75,35,70,30,40,300,0,0,0,0,0 +70,Weepinbell,65,90,50,85,45,55,390,0,0,0,0,0 +71,Victreebel,80,105,65,100,70,70,490,0,0,0,0,0 +72,Tentacool,40,40,35,50,100,70,335,0,0,0,0,0 +73,Tentacruel,80,70,65,80,120,100,515,0,0,0,0,0 +74,Geodude,40,80,100,30,30,20,300,0,0,0,0,0 +75,Graveler,55,95,115,45,45,35,390,0,0,0,0,0 +76,Golem,80,120,130,55,65,45,495,0,0,0,0,0 +77,Ponyta,50,85,55,65,65,90,410,0,0,0,0,0 +78,Rapidash,65,100,70,80,80,105,500,0,0,0,0,0 +79,Slowpoke,90,65,65,40,40,15,315,0,0,0,0,0 +80,Slowbro,95,75,110,100,80,30,490,0,0,0,0,0 +81,Magnemite,25,35,70,95,55,45,325,0,0,0,0,0 +82,Magneton,50,60,95,120,70,70,465,0,0,0,0,0 +83,Farfetch'd,52,65,55,58,62,60,352,0,0,0,0,0 +84,Doduo,35,85,45,35,35,75,310,0,0,0,0,0 +85,Dodrio,60,110,70,60,60,100,460,0,0,0,0,0 +86,Seel,65,45,55,45,70,45,325,0,0,0,0,0 +87,Dewgong,90,70,80,70,95,70,475,0,0,0,0,0 +88,Grimer,80,80,50,40,50,25,325,0,0,0,0,0 +89,Muk,105,105,75,65,100,50,500,0,0,0,0,0 +90,Shellder,30,65,100,45,25,40,305,0,0,0,0,0 +91,Cloyster,50,95,180,85,45,70,525,0,0,0,0,0 +92,Gastly,30,35,30,100,35,80,310,0,0,0,0,0 +93,Haunter,45,50,45,115,55,95,405,0,0,0,0,0 +94,Gengar,60,65,60,130,75,110,500,0,0,0,0,0 +95,Onix,35,45,160,30,45,70,385,0,0,0,0,0 +96,Drowzee,60,48,45,43,90,42,328,0,0,0,0,0 +97,Hypno,85,73,70,73,115,67,483,0,0,0,0,0 +98,Krabby,30,105,90,25,25,50,325,0,0,0,0,0 +99,Kingler,55,130,115,50,50,75,475,0,0,0,0,0 +100,Voltorb,40,30,50,55,55,100,330,0,0,0,0,0 +101,Electrode,60,50,70,80,80,140,480,0,0,0,0,0 +102,Exeggcute,60,40,80,60,45,40,325,0,0,0,0,0 +103,Exeggutor,95,95,85,125,65,55,520,0,0,0,0,0 +104,Cubone,50,50,95,40,50,35,320,0,0,0,0,0 +105,Marowak,60,80,110,50,80,45,425,0,0,0,0,0 +106,Hitmonlee,50,120,53,35,110,87,455,0,0,0,0,0 +107,Hitmonchan,50,105,79,35,110,76,455,0,0,0,0,0 +108,Lickitung,90,55,75,60,75,30,385,0,0,0,0,0 +109,Koffing,40,65,95,60,45,35,340,0,0,0,0,0 +110,Weezing,65,90,120,85,70,60,490,0,0,0,0,0 +111,Rhyhorn,80,85,95,30,30,25,345,0,0,0,0,0 +112,Rhydon,105,130,120,45,45,40,485,0,0,0,0,0 +113,Chansey,250,5,5,35,105,50,450,0,0,0,0,0 +114,Tangela,65,55,115,100,40,60,435,0,0,0,0,0 +115,Kangaskhan,105,95,80,40,80,90,490,0,0,0,0,0 +116,Horsea,30,40,70,70,25,60,295,0,0,0,0,0 +117,Seadra,55,65,95,95,45,85,440,0,0,0,0,0 +118,Goldeen,45,67,60,35,50,63,320,0,0,0,0,0 +119,Seaking,80,92,65,65,80,68,450,0,0,0,0,0 +120,Staryu,30,45,55,70,55,85,340,0,0,0,0,0 +121,Starmie,60,75,85,100,85,115,520,0,0,0,0,0 +122,Mr. Mime,40,45,65,100,120,90,460,0,0,0,0,0 +123,Scyther,70,110,80,55,80,105,500,0,0,0,0,0 +124,Jynx,65,50,35,115,95,95,455,0,0,0,0,0 +125,Electabuzz,65,83,57,95,85,105,490,0,0,0,0,0 +126,Magmar,65,95,57,100,85,93,495,0,0,0,0,0 +127,Pinsir,65,125,100,55,70,85,500,0,0,0,0,0 +128,Tauros,75,100,95,40,70,110,490,0,0,0,0,0 +129,Magikarp,20,10,55,15,20,80,200,0,0,0,0,0 +130,Gyarados,95,125,79,60,100,81,540,0,0,0,0,0 +131,Lapras,130,85,80,85,95,60,535,0,0,0,0,0 +132,Ditto,48,48,48,48,48,48,288,0,0,0,0,0 +133,Eevee,55,55,50,45,65,55,325,0,0,0,0,0 +134,Vaporeon,130,65,60,110,95,65,525,0,0,0,0,0 +135,Jolteon,65,65,60,110,95,130,525,0,0,0,0,0 +136,Flareon,65,130,60,95,110,65,525,0,0,0,0,0 +137,Porygon,65,60,70,85,75,40,395,0,0,0,0,0 +138,Omanyte,35,40,100,90,55,35,355,0,0,0,0,0 +139,Omastar,70,60,125,115,70,55,495,0,0,0,0,0 +140,Kabuto,30,80,90,55,45,55,355,0,0,0,0,0 +141,Kabutops,60,115,105,65,70,80,495,0,0,0,0,0 +142,Aerodactyl,80,105,65,60,75,130,515,0,0,0,0,0 +143,Snorlax,160,110,65,65,110,30,540,0,0,0,0,0 +144,Articuno,90,85,100,95,125,85,580,0,0,0,0,0 +145,Zapdos,90,90,85,125,90,100,580,0,0,0,0,0 +146,Moltres,90,100,90,125,85,90,580,0,0,0,0,0 +147,Dratini,41,64,45,50,50,50,300,0,0,0,0,0 +148,Dragonair,61,84,65,70,70,70,420,0,0,0,0,0 +149,Dragonite,91,134,95,100,100,80,600,0,0,0,0,0 +150,Mewtwo,106,110,90,154,90,130,680,0,0,0,0,0 +151,Mew,100,100,100,100,100,100,600,0,0,0,0,0 +152,Chikorita,45,49,65,49,65,45,318,0,0,0,0,0 +153,Bayleef,60,62,80,63,80,60,405,0,0,0,0,0 +154,Meganium,80,82,100,83,100,80,525,0,0,0,0,0 +155,Cyndaquil,39,52,43,60,50,65,309,0,0,0,0,0 +156,Quilava,58,64,58,80,65,80,405,0,0,0,0,0 +157,Typhlosion,78,84,78,109,85,100,534,0,0,0,0,0 +158,Totodile,50,65,64,44,48,43,314,0,0,0,0,0 +159,Croconaw,65,80,80,59,63,58,405,0,0,0,0,0 +160,Feraligatr,85,105,100,79,83,78,530,0,0,0,0,0 +161,Sentret,35,46,34,35,45,20,215,0,0,0,0,0 +162,Furret,85,76,64,45,55,90,415,0,0,0,0,0 +163,Hoothoot,60,30,30,36,56,50,262,0,0,0,0,0 +164,Noctowl,100,50,50,76,96,70,442,0,0,0,0,0 +165,Ledyba,40,20,30,40,80,55,265,0,0,0,0,0 +166,Ledian,55,35,50,55,110,85,390,0,0,0,0,0 +167,Spinarak,40,60,40,40,40,30,250,0,0,0,0,0 +168,Ariados,70,90,70,60,60,40,390,0,0,0,0,0 +169,Crobat,85,90,80,70,80,130,535,0,0,0,0,0 +170,Chinchou,75,38,38,56,56,67,330,0,0,0,0,0 +171,Lanturn,125,58,58,76,76,67,460,0,0,0,0,0 +172,Pichu,20,40,15,35,35,60,205,0,0,0,0,0 +173,Cleffa,50,25,28,45,55,15,218,0,0,0,0,0 +174,Igglybuff,90,30,15,40,20,15,210,0,0,0,0,0 +175,Togepi,35,20,65,40,65,20,245,0,0,0,0,0 +176,Togetic,55,40,85,80,105,40,405,0,0,0,0,0 +177,Natu,40,50,45,70,45,70,320,0,0,0,0,0 +178,Xatu,65,75,70,95,70,95,470,0,0,0,0,0 +179,Mareep,55,40,40,65,45,35,280,0,0,0,0,0 +180,Flaaffy,70,55,55,80,60,45,365,0,0,0,0,0 +181,Ampharos,90,75,85,115,90,55,510,0,0,0,0,0 +182,Bellossom,75,80,95,90,100,50,490,0,0,0,0,0 +183,Marill,70,20,50,20,50,40,250,0,0,0,0,0 +184,Azumarill,100,50,80,60,80,50,420,0,0,0,0,0 +185,Sudowoodo,70,100,115,30,65,30,410,0,0,0,0,0 +186,Politoed,90,75,75,90,100,70,500,0,0,0,0,0 +187,Hoppip,35,35,40,35,55,50,250,0,0,0,0,0 +188,Skiploom,55,45,50,45,65,80,340,0,0,0,0,0 +189,Jumpluff,75,55,70,55,95,110,460,0,0,0,0,0 +190,Aipom,55,70,55,40,55,85,360,0,0,0,0,0 +191,Sunkern,30,30,30,30,30,30,180,0,0,0,0,0 +192,Sunflora,75,75,55,105,85,30,425,0,0,0,0,0 +193,Yanma,65,65,45,75,45,95,390,0,0,0,0,0 +194,Wooper,55,45,45,25,25,15,210,0,0,0,0,0 +195,Quagsire,95,85,85,65,65,35,430,0,0,0,0,0 +196,Espeon,65,65,60,130,95,110,525,0,0,0,0,0 +197,Umbreon,95,65,110,60,130,65,525,0,0,0,0,0 +198,Murkrow,60,85,42,85,42,91,405,0,0,0,0,0 +199,Slowking,95,75,80,100,110,30,490,0,0,0,0,0 +200,Misdreavus,60,60,60,85,85,85,435,0,0,0,0,0 +201,Unown,48,72,48,72,48,48,336,0,0,0,0,0 +202,Wobbuffet,190,33,58,33,58,33,405,0,0,0,0,0 +203,Girafarig,70,80,65,90,65,85,455,0,0,0,0,0 +204,Pineco,50,65,90,35,35,15,290,0,0,0,0,0 +205,Forretress,75,90,140,60,60,40,465,0,0,0,0,0 +206,Dunsparce,100,70,70,65,65,45,415,0,0,0,0,0 +207,Gligar,65,75,105,35,65,85,430,0,0,0,0,0 +208,Steelix,75,85,200,55,65,30,510,0,0,0,0,0 +209,Snubbull,60,80,50,40,40,30,300,0,0,0,0,0 +210,Granbull,90,120,75,60,60,45,450,0,0,0,0,0 +211,Qwilfish,65,95,75,55,55,85,430,0,0,0,0,0 +212,Scizor,70,130,100,55,80,65,500,0,0,0,0,0 +213,Shuckle,20,10,230,10,230,5,505,0,0,0,0,0 +214,Heracross,80,125,75,40,95,85,500,0,0,0,0,0 +215,Sneasel,55,95,55,35,75,115,430,0,0,0,0,0 +216,Teddiursa,60,80,50,50,50,40,330,0,0,0,0,0 +217,Ursaring,90,130,75,75,75,55,500,0,0,0,0,0 +218,Slugma,40,40,40,70,40,20,250,0,0,0,0,0 +219,Magcargo,50,50,120,80,80,30,410,0,0,0,0,0 +220,Swinub,50,50,40,30,30,50,250,0,0,0,0,0 +221,Piloswine,100,100,80,60,60,50,450,0,0,0,0,0 +222,Corsola,55,55,85,65,85,35,380,0,0,0,0,0 +223,Remoraid,35,65,35,65,35,65,300,0,0,0,0,0 +224,Octillery,75,105,75,105,75,45,480,0,0,0,0,0 +225,Delibird,45,55,45,65,45,75,330,0,0,0,0,0 +226,Mantine,65,40,70,80,140,70,465,0,0,0,0,0 +227,Skarmory,65,80,140,40,70,70,465,0,0,0,0,0 +228,Houndour,45,60,30,80,50,65,330,0,0,0,0,0 +229,Houndoom,75,90,50,110,80,95,500,0,0,0,0,0 +230,Kingdra,75,95,95,95,95,85,540,0,0,0,0,0 +231,Phanpy,90,60,60,40,40,40,330,0,0,0,0,0 +232,Donphan,90,120,120,60,60,50,500,0,0,0,0,0 +233,Porygon2,85,80,90,105,95,60,515,0,0,0,0,0 +234,Stantler,73,95,62,85,65,85,465,0,0,0,0,0 +235,Smeargle,55,20,35,20,45,75,250,0,0,0,0,0 +236,Tyrogue,35,35,35,35,35,35,210,0,0,0,0,0 +237,Hitmontop,50,95,95,35,110,70,455,0,0,0,0,0 +238,Smoochum,45,30,15,85,65,65,305,0,0,0,0,0 +239,Elekid,45,63,37,65,55,95,360,0,0,0,0,0 +240,Magby,45,75,37,70,55,83,365,0,0,0,0,0 +241,Miltank,95,80,105,40,70,100,490,0,0,0,0,0 +242,Blissey,255,10,10,75,135,55,540,0,0,0,0,0 +243,Raikou,90,85,75,115,100,115,580,0,0,0,0,0 +244,Entei,115,115,85,90,75,100,580,0,0,0,0,0 +245,Suicune,100,75,115,90,115,85,580,0,0,0,0,0 +246,Larvitar,50,64,50,45,50,41,300,0,0,0,0,0 +247,Pupitar,70,84,70,65,70,51,410,0,0,0,0,0 +248,Tyranitar,100,134,110,95,100,61,600,0,0,0,0,0 +249,Lugia,106,90,130,90,154,110,680,0,0,0,0,0 +250,Ho-Oh,106,130,90,110,154,90,680,0,0,0,0,0 +251,Celebi,100,100,100,100,100,100,600,0,0,0,0,0 +252,Treecko,40,45,35,65,55,70,310,0,0,0,0,0 +253,Grovyle,50,65,45,85,65,95,405,0,0,0,0,0 +254,Sceptile,70,85,65,105,85,120,530,0,0,0,0,0 +255,Torchic,45,60,40,70,50,45,310,0,0,0,0,0 +256,Combusken,60,85,60,85,60,55,405,0,0,0,0,0 +257,Blaziken,80,120,70,110,70,80,530,0,0,0,0,0 +258,Mudkip,50,70,50,50,50,40,310,0,0,0,0,0 +259,Marshtomp,70,85,70,60,70,50,405,0,0,0,0,0 +260,Swampert,100,110,90,85,90,60,535,0,0,0,0,0 +261,Poochyena,35,55,35,30,30,35,220,0,0,0,0,0 +262,Mightyena,70,90,70,60,60,70,420,0,0,0,0,0 +263,Zigzagoon,38,30,41,30,41,60,240,0,0,0,0,0 +264,Linoone,78,70,61,50,61,100,420,0,0,0,0,0 +265,Wurmple,45,45,35,20,30,20,195,0,0,0,0,0 +266,Silcoon,50,35,55,25,25,15,205,0,0,0,0,0 +267,Beautifly,60,70,50,100,50,65,395,0,0,0,0,0 +268,Cascoon,50,35,55,25,25,15,205,0,0,0,0,0 +269,Dustox,60,50,70,50,90,65,385,0,0,0,0,0 +270,Lotad,40,30,30,40,50,30,220,0,0,0,0,0 +271,Lombre,60,50,50,60,70,50,340,0,0,0,0,0 +272,Ludicolo,80,70,70,90,100,70,480,0,0,0,0,0 +273,Seedot,40,40,50,30,30,30,220,0,0,0,0,0 +274,Nuzleaf,70,70,40,60,40,60,340,0,0,0,0,0 +275,Shiftry,90,100,60,90,60,80,480,0,0,0,0,0 +276,Taillow,40,55,30,30,30,85,270,0,0,0,0,0 +277,Swellow,60,85,60,50,50,125,430,0,0,0,0,0 +278,Wingull,40,30,30,55,30,85,270,0,0,0,0,0 +279,Pelipper,60,50,100,85,70,65,430,0,0,0,0,0 +280,Ralts,28,25,25,45,35,40,198,0,0,0,0,0 +281,Kirlia,38,35,35,65,55,50,278,0,0,0,0,0 +282,Gardevoir,68,65,65,125,115,80,518,0,0,0,0,0 +283,Surskit,40,30,32,50,52,65,269,0,0,0,0,0 +284,Masquerain,70,60,62,80,82,60,414,0,0,0,0,0 +285,Shroomish,60,40,60,40,60,35,295,0,0,0,0,0 +286,Breloom,60,130,80,60,60,70,460,0,0,0,0,0 +287,Slakoth,60,60,60,35,35,30,280,0,0,0,0,0 +288,Vigoroth,80,80,80,55,55,90,440,0,0,0,0,0 +289,Slaking,150,160,100,95,65,100,670,0,0,0,0,0 +290,Nincada,31,45,90,30,30,40,266,0,0,0,0,0 +291,Ninjask,61,90,45,50,50,160,456,0,0,0,0,0 +292,Shedinja,1,90,45,30,30,40,236,0,0,0,0,0 +293,Whismur,64,51,23,51,23,28,240,0,0,0,0,0 +294,Loudred,84,71,43,71,43,48,360,0,0,0,0,0 +295,Exploud,104,91,63,91,73,68,490,0,0,0,0,0 +296,Makuhita,72,60,30,20,30,25,237,0,0,0,0,0 +297,Hariyama,144,120,60,40,60,50,474,0,0,0,0,0 +298,Azurill,50,20,40,20,40,20,190,0,0,0,0,0 +299,Nosepass,30,45,135,45,90,30,375,0,0,0,0,0 +300,Skitty,50,45,45,35,35,50,260,0,0,0,0,0 +301,Delcatty,70,65,65,55,55,70,380,0,0,0,0,0 +302,Sableye,50,75,75,65,65,50,380,0,0,0,0,0 +303,Mawile,50,85,85,55,55,50,380,0,0,0,0,0 +304,Aron,50,70,100,40,40,30,330,0,0,0,0,0 +305,Lairon,60,90,140,50,50,40,430,0,0,0,0,0 +306,Aggron,70,110,180,60,60,50,530,0,0,0,0,0 +307,Meditite,30,40,55,40,55,60,280,0,0,0,0,0 +308,Medicham,60,60,75,60,75,80,410,0,0,0,0,0 +309,Electrike,40,45,40,65,40,65,295,0,0,0,0,0 +310,Manectric,70,75,60,105,60,105,475,0,0,0,0,0 +311,Plusle,60,50,40,85,75,95,405,0,0,0,0,0 +312,Minun,60,40,50,75,85,95,405,0,0,0,0,0 +313,Volbeat,65,73,55,47,75,85,400,0,0,0,0,0 +314,Illumise,65,47,55,73,75,85,400,0,0,0,0,0 +315,Roselia,50,60,45,100,80,65,400,0,0,0,0,0 +316,Gulpin,70,43,53,43,53,40,302,0,0,0,0,0 +317,Swalot,100,73,83,73,83,55,467,0,0,0,0,0 +318,Carvanha,45,90,20,65,20,65,305,0,0,0,0,0 +319,Sharpedo,70,120,40,95,40,95,460,0,0,0,0,0 +320,Wailmer,130,70,35,70,35,60,400,0,0,0,0,0 +321,Wailord,170,90,45,90,45,60,500,0,0,0,0,0 +322,Numel,60,60,40,65,45,35,305,0,0,0,0,0 +323,Camerupt,70,100,70,105,75,40,460,0,0,0,0,0 +324,Torkoal,70,85,140,85,70,20,470,0,0,0,0,0 +325,Spoink,60,25,35,70,80,60,330,0,0,0,0,0 +326,Grumpig,80,45,65,90,110,80,470,0,0,0,0,0 +327,Spinda,60,60,60,60,60,60,360,0,0,0,0,0 +328,Trapinch,45,100,45,45,45,10,290,0,0,0,0,0 +329,Vibrava,50,70,50,50,50,70,340,0,0,0,0,0 +330,Flygon,80,100,80,80,80,100,520,0,0,0,0,0 +331,Cacnea,50,85,40,85,40,35,335,0,0,0,0,0 +332,Cacturne,70,115,60,115,60,55,475,0,0,0,0,0 +333,Swablu,45,40,60,40,75,50,310,0,0,0,0,0 +334,Altaria,75,70,90,70,105,80,490,0,0,0,0,0 +335,Zangoose,73,115,60,60,60,90,458,0,0,0,0,0 +336,Seviper,73,100,60,100,60,65,458,0,0,0,0,0 +337,Lunatone,70,55,65,95,85,70,440,0,0,0,0,0 +338,Solrock,70,95,85,55,65,70,440,0,0,0,0,0 +339,Barboach,50,48,43,46,41,60,288,0,0,0,0,0 +340,Whiscash,110,78,73,76,71,60,468,0,0,0,0,0 +341,Corphish,43,80,65,50,35,35,308,0,0,0,0,0 +342,Crawdaunt,63,120,85,90,55,55,468,0,0,0,0,0 +343,Baltoy,40,40,55,40,70,55,300,0,0,0,0,0 +344,Claydol,60,70,105,70,120,75,500,0,0,0,0,0 +345,Lileep,66,41,77,61,87,23,355,0,0,0,0,0 +346,Cradily,86,81,97,81,107,43,495,0,0,0,0,0 +347,Anorith,45,95,50,40,50,75,355,0,0,0,0,0 +348,Armaldo,75,125,100,70,80,45,495,0,0,0,0,0 +349,Feebas,20,15,20,10,55,80,200,0,0,0,0,0 +350,Milotic,95,60,79,100,125,81,540,0,0,0,0,0 +351,Castform,70,70,70,70,70,70,420,0,0,0,0,0 +352,Kecleon,60,90,70,60,120,40,440,0,0,0,0,0 +353,Shuppet,44,75,35,63,33,45,295,0,0,0,0,0 +354,Banette,64,115,65,83,63,65,455,0,0,0,0,0 +355,Duskull,20,40,90,30,90,25,295,0,0,0,0,0 +356,Dusclops,40,70,130,60,130,25,455,0,0,0,0,0 +357,Tropius,99,68,83,72,87,51,460,0,0,0,0,0 +358,Chimecho,65,50,70,95,80,65,425,0,0,0,0,0 +359,Absol,65,130,60,75,60,75,465,0,0,0,0,0 +360,Wynaut,95,23,48,23,48,23,260,0,0,0,0,0 +361,Snorunt,50,50,50,50,50,50,300,0,0,0,0,0 +362,Glalie,80,80,80,80,80,80,480,0,0,0,0,0 +363,Spheal,70,40,50,55,50,25,290,0,0,0,0,0 +364,Sealeo,90,60,70,75,70,45,410,0,0,0,0,0 +365,Walrein,110,80,90,95,90,65,530,0,0,0,0,0 +366,Clamperl,35,64,85,74,55,32,345,0,0,0,0,0 +367,Huntail,55,104,105,94,75,52,485,0,0,0,0,0 +368,Gorebyss,55,84,105,114,75,52,485,0,0,0,0,0 +369,Relicanth,100,90,130,45,65,55,485,0,0,0,0,0 +370,Luvdisc,43,30,55,40,65,97,330,0,0,0,0,0 +371,Bagon,45,75,60,40,30,50,300,0,0,0,0,0 +372,Shelgon,65,95,100,60,50,50,420,0,0,0,0,0 +373,Salamence,95,135,80,110,80,100,600,0,0,0,0,0 +374,Beldum,40,55,80,35,60,30,300,0,0,0,0,0 +375,Metang,60,75,100,55,80,50,420,0,0,0,0,0 +376,Metagross,80,135,130,95,90,70,600,0,0,0,0,0 +377,Regirock,80,100,200,50,100,50,580,0,0,0,0,0 +378,Regice,80,50,100,100,200,50,580,0,0,0,0,0 +379,Registeel,80,75,150,75,150,50,580,0,0,0,0,0 +380,Latias,80,80,90,110,130,110,600,0,0,0,0,0 +381,Latios,80,90,80,130,110,110,600,0,0,0,0,0 +382,Kyogre,100,100,90,150,140,90,670,0,0,0,0,0 +383,Groudon,100,150,140,100,90,90,670,0,0,0,0,0 +384,Rayquaza,105,150,90,150,90,95,680,0,0,0,0,0 +385,Jirachi,100,100,100,100,100,100,600,0,0,0,0,0 +386,Deoxys (Normal Forme),50,150,50,150,50,150,600,0,0,0,0,0 +386:01,Deoxys (Attack Forme),50,180,20,180,20,150,600,0,0,0,0,0 +386:02,Deoxys (Defense Forme),50,70,160,70,160,90,600,0,0,0,0,0 +386:03,Deoxys (Speed Forme),50,95,90,95,90,180,600,0,0,0,0,0 +387,Turtwig,55,68,64,45,55,31,318,0,0,0,0,0 +388,Grotle,75,89,85,55,65,36,405,0,0,0,0,0 +389,Torterra,95,109,105,75,85,56,525,0,0,0,0,0 +390,Chimchar,44,58,44,58,44,61,309,0,0,0,0,0 +391,Monferno,64,78,52,78,52,81,405,0,0,0,0,0 +392,Infernape,76,104,71,104,71,108,534,0,0,0,0,0 +393,Piplup,53,51,53,61,56,40,314,0,0,0,0,0 +394,Prinplup,64,66,68,81,76,50,405,0,0,0,0,0 +395,Empoleon,84,86,88,111,101,60,530,0,0,0,0,0 +396,Starly,40,55,30,30,30,60,245,0,0,0,0,0 +397,Staravia,55,75,50,40,40,80,340,0,0,0,0,0 +398,Staraptor,85,120,70,50,60,100,485,0,0,0,0,0 +399,Bidoof,59,45,40,35,40,31,250,0,0,0,0,0 +400,Bibarel,79,85,60,55,60,71,410,0,0,0,0,0 +401,Kricketot,37,25,41,25,41,25,194,0,0,0,0,0 +402,Kricketune,77,85,51,55,51,65,384,0,0,0,0,0 +403,Shinx,45,65,34,40,34,45,263,0,0,0,0,0 +404,Luxio,60,85,49,60,49,60,363,0,0,0,0,0 +405,Luxray,80,120,79,95,79,70,523,0,0,0,0,0 +406,Budew,40,30,35,50,70,55,280,0,0,0,0,0 +407,Roserade,60,70,65,125,105,90,515,0,0,0,0,0 +408,Cranidos,67,125,40,30,30,58,350,0,0,0,0,0 +409,Rampardos,97,165,60,65,50,58,495,0,0,0,0,0 +410,Shieldon,30,42,118,42,88,30,350,0,0,0,0,0 +411,Bastiodon,60,52,168,47,138,30,495,0,0,0,0,0 +412,Burmy,40,29,45,29,45,36,224,0,0,0,0,0 +413,Wormadam (Plant Cloak),60,59,85,79,105,36,424,0,0,0,0,0 +413:01,Wormadam (Sandy Cloak),60,79,105,59,85,36,424,0,0,0,0,0 +413:02,Wormadam (Trash Cloak),60,69,95,69,95,36,424,0,0,0,0,0 +414,Mothim,70,94,50,94,50,66,424,0,0,0,0,0 +415,Combee,30,30,42,30,42,70,244,0,0,0,0,0 +416,Vespiquen,70,80,102,80,102,40,474,0,0,0,0,0 +417,Pachirisu,60,45,70,45,90,95,405,0,0,0,0,0 +418,Buizel,55,65,35,60,30,85,330,0,0,0,0,0 +419,Floatzel,85,105,55,85,50,115,495,0,0,0,0,0 +420,Cherubi,45,35,45,62,53,35,275,0,0,0,0,0 +421,Cherrim,70,60,70,87,78,85,450,0,0,0,0,0 +422,Shellos,76,48,48,57,62,34,325,0,0,0,0,0 +423,Gastrodon,111,83,68,92,82,39,475,0,0,0,0,0 +424,Ambipom,75,100,66,60,66,115,482,0,0,0,0,0 +425,Drifloon,90,50,34,60,44,70,348,0,0,0,0,0 +426,Drifblim,150,80,44,90,54,80,498,0,0,0,0,0 +427,Buneary,55,66,44,44,56,85,350,0,0,0,0,0 +428,Lopunny,65,76,84,54,96,105,480,0,0,0,0,0 +429,Mismagius,60,60,60,105,105,105,495,0,0,0,0,0 +430,Honchkrow,100,125,52,105,52,71,505,0,0,0,0,0 +431,Glameow,49,55,42,42,37,85,310,0,0,0,0,0 +432,Purugly,71,82,64,64,59,112,452,0,0,0,0,0 +433,Chingling,45,30,50,65,50,45,285,0,0,0,0,0 +434,Stunky,63,63,47,41,41,74,329,0,0,0,0,0 +435,Skuntank,103,93,67,71,61,84,479,0,0,0,0,0 +436,Bronzor,57,24,86,24,86,23,300,0,0,0,0,0 +437,Bronzong,67,89,116,79,116,33,500,0,0,0,0,0 +438,Bonsly,50,80,95,10,45,10,290,0,0,0,0,0 +439,Mime Jr.,20,25,45,70,90,60,310,0,0,0,0,0 +440,Happiny,100,5,5,15,65,30,220,0,0,0,0,0 +441,Chatot,76,65,45,92,42,91,411,0,0,0,0,0 +442,Spiritomb,50,92,108,92,108,35,485,0,0,0,0,0 +443,Gible,58,70,45,40,45,42,300,0,0,0,0,0 +444,Gabite,68,90,65,50,55,82,410,0,0,0,0,0 +445,Garchomp,108,130,95,80,85,102,600,0,0,0,0,0 +446,Munchlax,135,85,40,40,85,5,390,0,0,0,0,0 +447,Riolu,40,70,40,35,40,60,285,0,0,0,0,0 +448,Lucario,70,110,70,115,70,90,525,0,0,0,0,0 +449,Hippopotas,68,72,78,38,42,32,330,0,0,0,0,0 +450,Hippowdon,108,112,118,68,72,47,525,0,0,0,0,0 +451,Skorupi,40,50,90,30,55,65,330,0,0,0,0,0 +452,Drapion,70,90,110,60,75,95,500,0,0,0,0,0 +453,Croagunk,48,61,40,61,40,50,300,0,0,0,0,0 +454,Toxicroak,83,106,65,86,65,85,490,0,0,0,0,0 +455,Carnivine,74,100,72,90,72,46,454,0,0,0,0,0 +456,Finneon,49,49,56,49,61,66,330,0,0,0,0,0 +457,Lumineon,69,69,76,69,86,91,460,0,0,0,0,0 +458,Mantyke,45,20,50,60,120,50,345,0,0,0,0,0 +459,Snover,60,62,50,62,60,40,334,0,0,0,0,0 +460,Abomasnow,90,92,75,92,85,60,494,0,0,0,0,0 +461,Weavile,70,120,65,45,85,125,510,0,0,0,0,0 +462,Magnezone,70,70,115,130,90,60,535,0,0,0,0,0 +463,Lickilicky,110,85,95,80,95,50,515,0,0,0,0,0 +464,Rhyperior,115,140,130,55,55,40,535,0,0,0,0,0 +465,Tangrowth,100,100,125,110,50,50,535,0,0,0,0,0 +466,Electivire,75,123,67,95,85,95,540,0,0,0,0,0 +467,Magmortar,75,95,67,125,95,83,540,0,0,0,0,0 +468,Togekiss,85,50,95,120,115,80,545,0,0,0,0,0 +469,Yanmega,86,76,86,116,56,95,515,0,0,0,0,0 +470,Leafeon,65,110,130,60,65,95,525,0,0,0,0,0 +471,Glaceon,65,60,110,130,95,65,525,0,0,0,0,0 +472,Gliscor,75,95,125,45,75,95,510,0,0,0,0,0 +473,Mamoswine,110,130,80,70,60,80,530,0,0,0,0,0 +474,Porygon-Z,85,80,70,135,75,90,535,0,0,0,0,0 +475,Gallade,68,125,65,65,115,80,518,0,0,0,0,0 +476,Probopass,60,55,145,75,150,40,525,0,0,0,0,0 +477,Dusknoir,45,100,135,65,135,45,525,0,0,0,0,0 +478,Froslass,70,80,70,80,70,110,480,0,0,0,0,0 +479,Rotom (Normal Rotom),50,50,77,95,77,91,440,0,0,0,0,0 +479:01,Rotom (Heat Rotom),50,65,107,105,107,86,520,0,0,0,0,0 +479:02,Rotom (Wash Rotom),50,65,107,105,107,86,520,0,0,0,0,0 +479:03,Rotom (Frost Rotom),50,65,107,105,107,86,520,0,0,0,0,0 +479:04,Rotom (Fan Rotom),50,65,107,105,107,86,520,0,0,0,0,0 +479:05,Rotom (Mow Rotom),50,65,107,105,107,86,520,0,0,0,0,0 +480,Uxie,75,75,130,75,130,95,580,0,0,0,0,0 +481,Mesprit,80,105,105,105,105,80,580,0,0,0,0,0 +482,Azelf,75,125,70,125,70,115,580,0,0,0,0,0 +483,Dialga,100,120,120,150,100,90,680,0,0,0,0,0 +484,Palkia,90,120,100,150,120,100,680,0,0,0,0,0 +485,Heatran,91,90,106,130,106,77,600,0,0,0,0,0 +486,Regigigas,110,160,110,80,110,100,670,0,0,0,0,0 +487,Giratina (Altered Forme),150,100,120,100,120,90,680,0,0,0,0,0 +487:01,Giratina (Origin Forme),150,120,100,120,100,90,680,0,0,0,0,0 +488,Cresselia,120,70,120,75,130,85,600,0,0,0,0,0 +489,Phione,80,80,80,80,80,80,480,0,0,0,0,0 +490,Manaphy,100,100,100,100,100,100,600,0,0,0,0,0 +491,Darkrai,70,90,90,135,90,125,600,0,0,0,0,0 +492,Shaymin (Land Forme),100,100,100,100,100,100,600,0,0,0,0,0 +492:01,Shaymin (Sky Forme),100,103,75,120,75,127,600,0,0,0,0,0 +493,Arceus,120,120,120,120,120,120,720,0,0,0,0,0 +494,Victini,100,100,100,100,100,100,600,0,0,0,0,0 +495,Snivy,45,45,55,45,55,63,308,0,0,0,0,0 +496,Servine,60,60,75,60,75,83,413,0,0,0,0,0 +497,Serperior,75,75,95,75,95,113,528,0,0,0,0,0 +498,Tepig,65,63,45,45,45,45,308,0,0,0,0,0 +499,Pignite,90,93,55,70,55,55,418,0,0,0,0,0 +500,Emboar,110,123,65,100,65,65,528,0,0,0,0,0 +501,Oshawott,55,55,45,63,45,45,308,0,0,0,0,0 +502,Dewott,75,75,60,83,60,60,413,0,0,0,0,0 +503,Samurott,95,100,85,108,70,70,528,0,0,0,0,0 +504,Patrat,45,55,39,35,39,42,255,0,0,0,0,0 +505,Watchog,60,85,69,60,69,77,420,0,0,0,0,0 +506,Lillipup,45,60,45,25,45,55,275,0,0,0,0,0 +507,Herdier,65,80,65,35,65,60,370,0,0,0,0,0 +508,Stoutland,85,110,90,45,90,80,500,0,0,0,0,0 +509,Purrloin,41,50,37,50,37,66,281,0,0,0,0,0 +510,Liepard,64,88,50,88,50,106,446,0,0,0,0,0 +511,Pansage,50,53,48,53,48,64,316,0,0,0,0,0 +512,Simisage,75,98,63,98,63,101,498,0,0,0,0,0 +513,Pansear,50,53,48,53,48,64,316,0,0,0,0,0 +514,Simisear,75,98,63,98,63,101,498,0,0,0,0,0 +515,Panpour,50,53,48,53,48,64,316,0,0,0,0,0 +516,Simipour,75,98,63,98,63,101,498,0,0,0,0,0 +517,Munna,76,25,45,67,55,24,292,0,0,0,0,0 +518,Musharna,116,55,85,107,95,29,487,0,0,0,0,0 +519,Pidove,50,55,50,36,30,43,264,0,0,0,0,0 +520,Tranquill,62,77,62,50,42,65,358,0,0,0,0,0 +521,Unfezant,80,115,80,65,55,93,488,0,0,0,0,0 +522,Blitzle,45,60,32,50,32,76,295,0,0,0,0,0 +523,Zebstrika,75,100,63,80,63,116,497,0,0,0,0,0 +524,Roggenrola,55,75,85,25,25,15,280,0,0,0,0,0 +525,Boldore,70,105,105,50,40,20,390,0,0,0,0,0 +526,Gigalith,85,135,130,60,80,25,515,0,0,0,0,0 +527,Woobat,55,45,43,55,43,72,313,0,0,0,0,0 +528,Swoobat,67,57,55,77,55,114,425,0,0,0,0,0 +529,Drilbur,60,85,40,30,45,68,328,0,0,0,0,0 +530,Excadrill,110,135,60,50,65,88,508,0,0,0,0,0 +531,Audino,103,60,86,60,86,50,445,0,0,0,0,0 +532,Timburr,75,80,55,25,35,35,305,0,0,0,0,0 +533,Gurdurr,85,105,85,40,50,40,405,0,0,0,0,0 +534,Conkeldurr,105,140,95,55,65,45,505,0,0,0,0,0 +535,Tympole,50,50,40,50,40,64,294,0,0,0,0,0 +536,Palpitoad,75,65,55,65,55,69,384,0,0,0,0,0 +537,Seismitoad,105,95,75,85,75,74,509,0,0,0,0,0 +538,Throh,120,100,85,30,85,45,465,0,0,0,0,0 +539,Sawk,75,125,75,30,75,85,465,0,0,0,0,0 +540,Sewaddle,45,53,70,40,60,42,310,0,0,0,0,0 +541,Swadloon,55,63,90,50,80,42,380,0,0,0,0,0 +542,Leavanny,75,103,80,70,80,92,500,0,0,0,0,0 +543,Venipede,30,45,59,30,39,57,260,0,0,0,0,0 +544,Whirlipede,40,55,99,40,79,47,360,0,0,0,0,0 +545,Scolipede,60,100,89,55,69,112,485,0,0,0,0,0 +546,Cottonee,40,27,60,37,50,66,280,0,0,0,0,0 +547,Whimsicott,60,67,85,77,75,116,480,0,0,0,0,0 +548,Petilil,45,35,50,70,50,30,280,0,0,0,0,0 +549,Lilligant,70,60,75,110,75,90,480,0,0,0,0,0 +550,Basculin,70,92,65,80,55,98,460,0,0,0,0,0 +551,Sandile,50,72,35,35,35,65,292,0,0,0,0,0 +552,Krokorok,60,82,45,45,45,74,351,0,0,0,0,0 +553,Krookodile,95,117,80,65,70,92,519,0,0,0,0,0 +554,Darumaka,70,90,45,15,45,50,315,0,0,0,0,0 +555,Darmanitan (Standard Mode),105,140,55,30,55,95,480,0,0,0,0,0 +555:01,Darmanitan (Zen Mode),105,30,105,140,105,55,540,0,0,0,0,0 +556,Maractus,75,86,67,106,67,60,461,0,0,0,0,0 +557,Dwebble,50,65,85,35,35,55,325,0,0,0,0,0 +558,Crustle,70,95,125,65,75,45,475,0,0,0,0,0 +559,Scraggy,50,75,70,35,70,48,348,0,0,0,0,0 +560,Scrafty,65,90,115,45,115,58,488,0,0,0,0,0 +561,Sigilyph,72,58,80,103,80,97,490,0,0,0,0,0 +562,Yamask,38,30,85,55,65,30,303,0,0,0,0,0 +563,Cofagrigus,58,50,145,95,105,30,483,0,0,0,0,0 +564,Tirtouga,54,78,103,53,45,22,355,0,0,0,0,0 +565,Carracosta,74,108,133,83,65,32,495,0,0,0,0,0 +566,Archen,55,112,45,74,45,70,401,0,0,0,0,0 +567,Archeops,75,140,65,112,65,110,567,0,0,0,0,0 +568,Trubbish,50,50,62,40,62,65,329,0,0,0,0,0 +569,Garbodor,80,95,82,60,82,75,474,0,0,0,0,0 +570,Zorua,40,65,40,80,40,65,330,0,0,0,0,0 +571,Zoroark,60,105,60,120,60,105,510,0,0,0,0,0 +572,Minccino,55,50,40,40,40,75,300,0,0,0,0,0 +573,Cinccino,75,95,60,65,60,115,470,0,0,0,0,0 +574,Gothita,45,30,50,55,65,45,290,0,0,0,0,0 +575,Gothorita,60,45,70,75,85,55,390,0,0,0,0,0 +576,Gothitelle,70,55,95,95,110,65,490,0,0,0,0,0 +577,Solosis,45,30,40,105,50,20,290,0,0,0,0,0 +578,Duosion,65,40,50,125,60,30,370,0,0,0,0,0 +579,Reuniclus,110,65,75,125,85,30,490,0,0,0,0,0 +580,Ducklett,62,44,50,44,50,55,305,0,0,0,0,0 +581,Swanna,75,87,63,87,63,98,473,0,0,0,0,0 +582,Vanillite,36,50,50,65,60,44,305,0,0,0,0,0 +583,Vanillish,51,65,65,80,75,59,395,0,0,0,0,0 +584,Vanilluxe,71,95,85,110,95,79,535,0,0,0,0,0 +585,Deerling,60,60,50,40,50,75,335,0,0,0,0,0 +586,Sawsbuck,80,100,70,60,70,95,475,0,0,0,0,0 +587,Emolga,55,75,60,75,60,103,428,0,0,0,0,0 +588,Karrablast,50,75,45,40,45,60,315,0,0,0,0,0 +589,Escavalier,70,135,105,60,105,20,495,0,0,0,0,0 +590,Foongus,69,55,45,55,55,15,294,0,0,0,0,0 +591,Amoonguss,114,85,70,85,80,30,464,0,0,0,0,0 +592,Frillish,55,40,50,65,85,40,335,0,0,0,0,0 +593,Jellicent,100,60,70,85,105,60,480,0,0,0,0,0 +594,Alomomola,165,75,80,40,45,65,470,0,0,0,0,0 +595,Joltik,50,47,50,57,50,65,319,0,0,0,0,0 +596,Galvantula,70,77,60,97,60,108,472,0,0,0,0,0 +597,Ferroseed,44,50,91,24,86,10,305,0,0,0,0,0 +598,Ferrothorn,74,94,131,54,116,20,489,0,0,0,0,0 +599,Klink,40,55,70,45,60,30,300,0,0,0,0,0 +600,Klang,60,80,95,70,85,50,440,0,0,0,0,0 +601,Klinklang,60,100,115,70,85,90,520,0,0,0,0,0 +602,Tynamo,35,55,40,45,40,60,275,0,0,0,0,0 +603,Eelektrik,65,85,70,75,70,40,405,0,0,0,0,0 +604,Eelektross,85,115,80,105,80,50,515,0,0,0,0,0 +605,Elgyem,55,55,55,85,55,30,335,0,0,0,0,0 +606,Beheeyem,75,75,75,125,95,40,485,0,0,0,0,0 +607,Litwick,50,30,55,65,55,20,275,0,0,0,0,0 +608,Lampent,60,40,60,95,60,55,370,0,0,0,0,0 +609,Chandelure,60,55,90,145,90,80,520,0,0,0,0,0 +610,Axew,46,87,60,30,40,57,320,0,0,0,0,0 +611,Fraxure,66,117,70,40,50,67,410,0,0,0,0,0 +612,Haxorus,76,147,90,60,70,97,540,0,0,0,0,0 +613,Cubchoo,55,70,40,60,40,40,305,0,0,0,0,0 +614,Beartic,95,110,80,70,80,50,485,0,0,0,0,0 +615,Cryogonal,70,50,30,95,135,105,485,0,0,0,0,0 +616,Shelmet,50,40,85,40,65,25,305,0,0,0,0,0 +617,Accelgor,80,70,40,100,60,145,495,0,0,0,0,0 +618,Stunfisk,109,66,84,81,99,32,471,0,0,0,0,0 +619,Mienfoo,45,85,50,55,50,65,350,0,0,0,0,0 +620,Mienshao,65,125,60,95,60,105,510,0,0,0,0,0 +621,Druddigon,77,120,90,60,90,48,485,0,0,0,0,0 +622,Golett,59,74,50,35,50,35,303,0,0,0,0,0 +623,Golurk,89,124,80,55,80,55,483,0,0,0,0,0 +624,Pawniard,45,85,70,40,40,60,340,0,0,0,0,0 +625,Bisharp,65,125,100,60,70,70,490,0,0,0,0,0 +626,Bouffalant,95,110,95,40,95,55,490,0,0,0,0,0 +627,Rufflet,70,83,50,37,50,60,350,0,0,0,0,0 +628,Braviary,100,123,75,57,75,80,510,0,0,0,0,0 +629,Vullaby,70,55,75,45,65,60,370,0,0,0,0,0 +630,Mandibuzz,110,65,105,55,95,80,510,0,0,0,0,0 +631,Heatmor,85,97,66,105,66,65,484,0,0,0,0,0 +632,Durant,58,109,112,48,48,109,484,0,0,0,0,0 +633,Deino,52,65,50,45,50,38,300,0,0,0,0,0 +634,Zweilous,72,85,70,65,70,58,420,0,0,0,0,0 +635,Hydreigon,92,105,90,125,90,98,600,0,0,0,0,0 +636,Larvesta,55,85,55,50,55,60,360,0,0,0,0,0 +637,Volcarona,85,60,65,135,105,100,550,0,0,0,0,0 +638,Cobalion,91,90,129,90,72,108,580,0,0,0,0,0 +639,Terrakion,91,129,90,72,90,108,580,0,0,0,0,0 +640,Virizion,91,90,72,90,129,108,580,0,0,0,0,0 +641,Tornadus (Incarnate Forme),79,115,70,125,80,111,580,0,0,0,0,0 +641:01,Tornadus (Therian Forme),79,100,80,110,90,121,580,0,0,0,0,0 +642:02,Thundurus (Incarnate Forme),79,115,70,125,80,111,580,0,0,0,0,0 +642:03,Thundurus (Therian Forme),79,105,70,145,80,101,580,0,0,0,0,0 +643,Reshiram,100,120,100,150,120,90,680,0,0,0,0,0 +644,Zekrom,100,150,120,120,100,90,680,0,0,0,0,0 +645,Landorus (Incarnate Forme),89,125,90,115,80,101,600,0,0,0,0,0 +645:01,Landorus (Therian Forme),89,145,90,105,80,91,600,0,0,0,0,0 +646,Kyurem (Normal Kyurem),125,130,90,130,90,95,660,0,0,0,0,0 +646:01,Kyurem (Black Kyurem),125,170,100,120,90,95,700,0,0,0,0,0 +646:02,Kyurem (White Kyurem),125,120,90,170,100,95,700,0,0,0,0,0 +647,Keldeo,91,72,90,129,90,108,580,0,0,0,0,0 +648,Meloetta (Aria Forme),100,77,77,128,128,90,600,0,0,0,0,0 +648:01,Meloetta (Pirouette Forme),100,128,90,77,77,128,600,0,0,0,0,0 +649,Genesect,71,120,95,120,95,99,600,0,0,0,0,0 +650,Chespin,56,61,65,48,45,38,313,0,0,0,0,0 +651,Quilladin,61,78,95,56,58,57,405,0,0,0,0,0 +652,Chesnaught,88,107,122,74,75,64,530,0,0,0,0,0 +653,Fennekin,40,45,40,62,60,60,307,0,0,0,0,0 +654,Braixen,59,59,58,90,70,73,409,0,0,0,0,0 +655,Delphox,75,69,72,114,100,104,534,0,0,0,0,0 +656,Froakie,41,56,40,62,44,71,314,0,0,0,0,0 +657,Frogadier,54,63,52,83,56,97,405,0,0,0,0,0 +658,Greninja,72,95,67,103,71,122,530,0,0,0,0,0 +659,Bunnelby,38,36,38,32,36,57,237,0,0,0,0,0 +660,Diggersby,85,56,77,50,77,78,423,0,0,0,0,0 +661,Fletchling,45,50,43,40,38,62,278,0,0,0,0,0 +662,Fletchinder,62,73,55,56,52,84,382,0,0,0,0,0 +663,Talonflame,78,81,71,74,69,126,499,0,0,0,0,0 +664,Scatterbug,38,35,40,27,25,35,200,0,0,0,0,0 +665,Spewpa,45,22,60,27,30,29,213,0,0,0,0,0 +666,Vivillon,80,52,50,90,50,89,411,0,0,0,0,0 +667,Litleo,62,50,58,73,54,72,369,0,0,0,0,0 +668,Pyroar,86,68,72,109,66,106,507,0,0,0,0,0 +669,Flabébé,44,38,39,61,79,42,303,0,0,0,0,0 +670,Floette,54,45,47,75,98,52,371,0,0,0,0,0 +671,Florges,78,65,68,112,154,75,552,0,0,0,0,0 +672,Skiddo,66,65,48,62,57,52,350,0,0,0,0,0 +673,Gogoat,123,100,62,97,81,68,531,0,0,0,0,0 +674,Pancham,67,82,62,46,48,43,348,0,0,0,0,0 +675,Pangoro,95,124,78,69,71,58,495,0,0,0,0,0 +676,Furfrou,75,80,60,65,90,102,472,0,0,0,0,0 +677,Espurr,62,48,54,63,60,68,355,0,0,0,0,0 +678,Meowstic,74,48,76,83,81,104,466,0,0,0,0,0 +679,Honedge,45,80,100,35,37,28,325,0,0,0,0,0 +680,Doublade,59,110,150,45,49,35,448,0,0,0,0,0 +681,Aegislash (Shield Forme),60,50,150,50,150,60,520,0,0,0,0,0 +681:01,Aegislash (Blade Forme),60,150,50,150,50,60,520,0,0,0,0,0 +682,Spritzee,78,52,60,63,65,23,341,0,0,0,0,0 +683,Aromatisse,101,72,72,99,89,29,462,0,0,0,0,0 +684,Swirlix,62,48,66,59,57,49,341,0,0,0,0,0 +685,Slurpuff,82,80,86,85,75,72,480,0,0,0,0,0 +686,Inkay,53,54,53,37,46,45,288,0,0,0,0,0 +687,Malamar,86,92,88,68,75,73,482,0,0,0,0,0 +688,Binacle,42,52,67,39,56,50,306,0,0,0,0,0 +689,Barbaracle,72,105,115,54,86,68,500,0,0,0,0,0 +690,Skrelp,50,60,60,60,60,30,320,0,0,0,0,0 +691,Dragalge,65,75,90,97,123,44,494,0,0,0,0,0 +692,Clauncher,50,53,62,58,63,44,330,0,0,0,0,0 +693,Clawitzer,71,73,88,120,89,59,500,0,0,0,0,0 +694,Helioptile,44,38,33,61,43,70,289,0,0,0,0,0 +695,Heliolisk,62,55,52,109,94,109,481,0,0,0,0,0 +696,Tyrunt,58,89,77,45,45,48,362,0,0,0,0,0 +697,Tyrantrum,82,121,119,69,59,71,521,0,0,0,0,0 +698,Amaura,77,59,50,67,63,46,362,0,0,0,0,0 +699,Aurorus,123,77,72,99,92,58,521,0,0,0,0,0 +700,Sylveon,95,65,65,110,130,60,525,0,0,0,0,0 +701,Hawlucha,78,92,75,74,63,118,500,0,0,0,0,0 +702,Dedenne,67,58,57,81,67,101,431,0,0,0,0,0 +703,Carbink,50,50,150,50,150,50,500,0,0,0,0,0 +704,Goomy,45,50,35,55,75,40,300,0,0,0,0,0 +705,Sliggoo,68,75,53,83,113,60,452,0,0,0,0,0 +706,Goodra,90,100,70,110,150,80,600,0,0,0,0,0 +707,Klefki,57,80,91,80,87,75,470,0,0,0,0,0 +708,Phantump,43,70,48,50,60,38,309,0,0,0,0,0 +709,Trevenant,85,110,76,65,82,56,474,0,0,0,0,0 +710,Pumpkaboo (Small Size),44,66,70,44,55,56,335,0,0,0,0,0 +710:01,Pumpkaboo (Average Size),49,66,70,44,55,51,335,0,0,0,0,0 +710:02,Pumpkaboo (Large Size),54,66,70,44,55,46,335,0,0,0,0,0 +710:03,Pumpkaboo (Super Size),59,66,70,44,55,41,335,0,0,0,0,0 +711,Gourgeist (Small Size),55,85,122,58,75,99,494,0,0,0,0,0 +711:01,Gourgeist (Average Size),65,90,122,58,75,84,494,0,0,0,0,0 +711:02,Gourgeist (Large Size),75,95,122,58,75,69,494,0,0,0,0,0 +711:03,Gourgeist (Super Size),85,100,122,58,75,54,494,0,0,0,0,0 +712,Bergmite,55,69,85,32,35,28,304,0,0,0,0,0 +713,Avalugg,95,117,184,44,46,28,514,0,0,0,0,0 +714,Noibat,40,30,35,45,40,55,245,0,0,0,0,0 +715,Noivern,85,70,80,97,80,123,535,0,0,0,0,0 +716,Xerneas,126,131,95,131,98,99,680,0,0,0,0,0 +717,Yveltal,126,131,95,131,98,99,680,0,0,0,0,0 +718,Zygarde,108,100,121,81,95,95,600,0,0,0,0,0 +719,Diancie,50,100,150,100,150,50,600,0,0,0,0,0 +720,Hoopa (Hoopa Confined),80,110,60,150,130,70,600,0,0,0,0,0 +720:01,Hoopa (Hoopa Unbound),80,160,60,170,130,80,680,0,0,0,0,0 +721,Volcanion,80,110,120,130,90,70,600,0,0,0,0,0 \ No newline at end of file diff --git a/bin/pokemonFramework/Bundle.class b/bin/pokemonFramework/Bundle.class new file mode 100644 index 0000000000000000000000000000000000000000..6eae7378e4af2d759a2fa978e62904a652f3a90d GIT binary patch literal 4134 zcmd5;%TgOx5Iut=gg{_|c?oR5Z%JSC=6C^y{0Seg-gw zd>Bmz`ZkJBto35yO37Teo)t?^CN5P9D|su7pn=Xc^Qk$JHw&v1H<#9|<#HI!2D;U1 zt~jw^m2zf2_uO2{TXf!3w^^&SnJX6V%wINOTro{^xIh zv>OPPw>G%Vm^aX}Q7S&l<*iLd$*Aa+axOoS$!(U?1|kc&)q+{Bl;}NH_jo4L!2gzx zm7e9+=38c|ymi7rzmK0hqEG00@u@|ZzD5^$;zXIWU3qPpS-mKs=FUE_1~d zO196yUYGvGQpwzs99l7mp(utCBcmC$F#-bzqUgXL1A8*Lf_0;^zGRgawUk|%;Se*oIxh%s&X#2%&1K z5za)>jUJYDU3b7&{~kaiZcP%OCo1X2bq~{-D0;D1RGE#UPdL}~XE$nrq&+1MUi%J%xfG5J4~zp*O2)X^S1|J5ET zOsx%0y5=d@oN~>SYo2z^X#?R^tGuWtF-I9^ad@+KAB@inL?;~LTR!NyZ^G-mtiPi=mClxiKSx zU=No8-;~tJO>Ir$_a;h=v24907hp2xEYs7TOX13TQ$rKYU-%j>y}H>z!)- zEv|F?Dw{)6T{(i(l>>;^Zbs=xj5`K+H%fo`YkQ5s`!BKo2aJ5j+a?_3cQc(pkV9$( zyc@=0d*dQ~WNUZwC5|KmFL3mGjEufQya{*R2we!$r-$FYB-%$J{VH0o-ivWe@VSsW zfk{Rdgp)SHDt!Wc7E=hpZ3xM+7dYj@^im-(pCI4Z5$q$(egX|Cs1Y5+fr{Bs42%># zn-u728}vEvh4PRB4K;!$kH5gQi#$M)fD!IFK;(mrcZkS`iGM_)Cv`LjeaJx{veAi! zvy@2cJdC$(912$q=UjS6NeVbd5^-7y(n}I< zl+?z!a-6ir`IB-&QN5}G9jYmZYRaLSvZ<07&a+}7RSFjvR|=5AMJ6I$GmJ}2K)2+a zYP5&EmwxF`35A)^sNHJ;)oZ#_PBY>(nVwi)%()v(+`*Tr;Xow*s>~oIsj+&G68k zb$sZ*J% zQ<*BG>dI8@%81`p)=gTg%IK3E24Y>KC7n_whe`4jD?_VIS=VWa);Dld>&uQ2y@62j zM;!fzhIe3O6lq-&!z_+nr z$C~CIA=1u51zusX3BTapw_NZNTJ#WVcL+Ve2lUcC`l0I4afXs$K?bXjanBPY=*0M_ zq0dDjNh7qqy>)IT+hEC)TTLChH?*~^=(heCpD?IQYp?95>KR%dhPA*39@yn zZNpPj%aOvGhniP*=`m4e3Cli2rt68U`x04!3Sj+ zUm~miilplsaf?Kr??6P(l@NLCtH`-}BA@vZ$@wed8Q)rw&q?Hq9f-)l6(Vb@<)8cw D|1v&Q literal 0 HcmV?d00001 diff --git a/bin/pokemonFramework/Button.class b/bin/pokemonFramework/Button.class new file mode 100644 index 0000000000000000000000000000000000000000..a88b8c1157d8da02b1cbfa58a02588c09b4194fa GIT binary patch literal 3221 zcmc(gZExFD6vvO#ByBpgr)KSvhSu%cEOFfiO4(o=9cxF&wyZ-73KAfYo0;M+v616u z>=k?nUhpwMB0@rl55Oxv5#oRDb?nr&g+QPwlJD_-IOq32KIi85KY#g+h_>j_BxMwu z`^tT0^;~DqGkex^*L&93Ire?mnWU^j=a0;R+31?iVdL?^k=5}Pn&`S6EHuT6`P^@O z;M$IV6AMr6o04nW;c(}LZ(%8a%XVykTcPi35u=2U-XrE{PNJSB z{FgIn@b$Jr*s6H|X^O2yl?pV?){;tRNM-Aa zO0P(3Ri(4ix~kGSY1LIaPZtzA*R&mL|G0Nxc^{ewUF7Rx)9skuw&~gY9!zHaFYSI} zzGaCZso%WRTyn}j`QHfG`~CmOJNwEXT0YW@WY_9Zb&c95-w#%2PK6vDMsX@MJAODS zSGb1*v14w`L9}7y1l1fP7_}lh5Ub+^a&dHcpPRKfA~@Nud|a$w3gVA1j~v|Lmgb$( zKt@n=az+|r286t)%{|XqYjNApBWzml$o*nlrIxyjA*NgIvDdNoY_9qU0%f?@U}d<|#E3olrqbP3N{y!`=x1&o{e z&orm64XLafL#pWOLt4;F*&%6qDL15Ly_6r)ie8!=QdKWa4XO4cPGv~PQx_aFl!e~{ zJfDT<8JeRKU8Y4mSE)>EG*7Qn1tZa?G9nqYjyJ>>$`oO-wv4b?9V_4DTLiw@Vud+j zu}03uCf_2+2wSXkN~qfi)cp!yoGarWsEc$}1?M7SYp|A}YZRaOo~uIB z6B#GeWQ3Xw@x54+0WVUM5o$6*O$OhLLX#0_;_uW5lzayztXKORB@z9C$VwgbI^wRu zy8-%j&~JdgA*i>d&yZRRskM-rwM%L(q}BpzCVVX*{1$}#ZOW;H5nDO!KYOVgX|`Pti(YM5<%`JgRI0s zz5vK!3JBjf4DwzgNHq>}lnAny3{s7QH~?`|K==x0kbCq#p4@@sHByU%^b!_}He}#PaI~)z M;bT#R6Tt}i59*XZSpWb4 literal 0 HcmV?d00001 diff --git a/bin/pokemonFramework/FuncServer.class b/bin/pokemonFramework/FuncServer.class new file mode 100644 index 0000000000000000000000000000000000000000..07f51072ff6e66b0a78d967c6a4a9afe8ba460a6 GIT binary patch literal 3554 zcma)8TX!2*75+wcGm0|4*OxeM?b4eqC3c)Np{Z=Aj#GnD*)frm)V-0hG;t=DXM{9z zniiUpmP_e{meN8m+zaO3v=DiL*J8m75Bv%qdE=26Abk7GNFLc~7cVns&faJ5Z-4u8 z=5PP~jadKx0O!-Huhu-#xgW3ETc%>)7M+u2FRZkqb3cLj^&MH z)D|r?7Th95T1vx?G25}d2@UDNEe69*w}|R|ZL^;mIztyzZqACK0c{4F&`#8YLuYnE z!>tBx!46q<8PE}xRgZz4h{>wgz%CdXTGF;-&6Zadt>V17n71^vr`@cXKVuec`3^Q4 zy$g0p!)@tLV4Csj=WQpKnxkg>;E<2E?AiH|v|aKj-kGtN9MdZo>1N+Hg|Y3%{S+oA zk~;3v(4ms03{Dn{=4G)O!<}f;aW5lL(oOnfxJM*$##)o4DE5;xnadTeQc1^N4c$tv zs)M<=ouy-CJD;@`Dm$Sg)Ez=n{EsoGH}TJUkf0|F9L0l7 zM%Hy4RqK6$@+LV!_(>koajZ&Ftq;O=Cnk>@cnH(vc**j@GFDU-sGJRVMhuhqtbk?h z?+%rGSVx>cOtIp><~-C7;(NxxEKX`@rtgr5X$!dy2}sikd`>){5_q+a3abcF8s-h0 z23x3!miWLJTtpIV;0opksy*$Jk55Rbq7)-tb<6ZAVX?v&&sr& z~w%MSU{{ z>5SqfT6D_!ypC5`j2}}lQGAnXQdcp&jyH6Ct4h4;>>BX~zAcGrQOQ#j%ooipQ}&j4 zQ7QYbhJnqfr}Ad0H0yfPZrRDz%rMoq++p<$1(0jGt9MQ26bCczD${##aC_|^ql>(i z+%AwK9D7mxfVMN_k;8LfDsNkkH{c%}TuMPZ0waWQ?xpW~02XD}i)COyBQ4zqh z$hhTV)|$5EqHNjx$rzTr;10&xz~7QaMC9t_Dk2xJdh^;(p#QGoLN|dQRyB zz43Ll#uL}k5#M_qo$-Cw(H-w>ypG);s{WI<=;Kyi<(;(Ag${IMH+s-V`F->( zTDReLzGWpyG_?{e5w#LDg0xqD0%%J^KL#kfgL@HtN>FJtJlDwY_cn0n!aD9wH;k|0 z#rOv9;n$!*`#rihFto6N#6tVNb&T{?aG-+2+~2*92U@uvr~2fAC{{4Fj?YL`8#oc{ zq}MUWU=#5QGJn9?2+n?lC)yV)$oVJixJEZ?Xq%P&yzI-y3lXia4L9Duv6{H1c)WtE zOjjd>p9#h29!AW!zeqmfG^Nfj9NwV72&BSTJgwXnfeB0zSb&Nm$=i0#{Zy6$0ORmz=`BEMJPB* zAb!F>U{ZwI3B_ijZyiqwpZ^C}YcLcUmr2Hlv<8eaq8)euB_&kV1l#khL>Nj{J9ImI894*^Ih7LFq_f%Z}jSDXgRIpb;;&?_+Ak0Jar`6W&!$r0*xms_~B+hHY@1~()KWE zPlvoV*Jy6WPw+nNiKn09XSArv)f0HQ8t~aq);fjIgyM5eJ}dau8lpnfZ~bg{vC*rf zbg5Q9MM5$h0`nx~Gzz6#((6{pf$Sd_Y|Q literal 0 HcmV?d00001 diff --git a/bin/pokemonFramework/Move.class b/bin/pokemonFramework/Move.class new file mode 100644 index 0000000000000000000000000000000000000000..cae7fcba886d54544182435a517b43087f68423b GIT binary patch literal 4345 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 M$_XyBUV#t)0Y;ERGXMYp literal 0 HcmV?d00001 diff --git a/bin/pokemonFramework/Profile.class b/bin/pokemonFramework/Profile.class new file mode 100644 index 0000000000000000000000000000000000000000..03593ec206a171399b3b506dd467e47dab4423d1 GIT binary patch literal 894 zcmZ{h-)<5?6vn?<7FNhoD5Vsk+WMyon8=NHn%>mZU`RDVH|gadkz z`!ZH1iJ1%O$JFEMB~Q-xv`86WXuXZ9-ahI zkZcRoT8p{8w#QOC>OdBdLDfYWs{)x;+si{>&4r7i_O82FLP?<14I%Apa84cA|dy$L@)3b!tOUN~No+X~8QprrQdA>P| z*e#>3Fi^92BzO5M0&e<05B1b=i^?)wS=t61T%(`o_gW}$QM&OdoO_mcWh~QHc-rTE zhI^^=9V?v&C#ZGSPf-7A9yDkxuxX35ODtKUEu+cE=KLAfaf2roFl~hKbR&xmZek;C z)8(%3vYl_JeW7EK6Udq1iYe&M6Vif$4YVrFxXo-!XB)nAG_4I-qoTU0P@8A{L&~K{ s0=ID|t#uKk{+Z7&f;2A$xr?m@kmi3gnuBZ*Wb+CTJrO;Dd#2<4zsnVsbN~PV literal 0 HcmV?d00001 diff --git a/bin/pokemonFramework/ReadCSV.class b/bin/pokemonFramework/ReadCSV.class new file mode 100644 index 0000000000000000000000000000000000000000..6c59dc41965b8eaaae2ce010e0d910bfe542c8bb GIT binary patch literal 1826 zcmaJ>&r=&^7=AvIWkZ@m8VD(rR%o#e31Mk#K}mnu(xS8>(FRe*(-PKpOUPz63oSDq zJaEzR=8Pw2I@+1$;EdKwaLS0|^q`{$XPjQN|AGh4PHlX?-9Vv55BvRizW00I=Y8Mj z+n=A@-vICu-civcu)l0A7>ibE!qyj!o0h$xT{ZOi@%)Smzd-ngzN~9Sy>v~>&D}5x zjzIHivt&AF1$^;=83F&eHE#srLrVw>ng!Z2X35AdEzTMCv_4lf1R@!$pciL!+m!nT z=y$H06@l)|f5lJJw@oSniFoEIjl5%<(S_0@4Xj!zDjf!WyUm#kr7B#DElz3ZX9b`ESTSYe$as8N%OJyEAkaR9xtN_~v7TTV05;z$Vnc#(D1%Ot_{Q@fcy zSCK}@v~+PSgg6ES0*>XCOQ0h@@Z1&JcA+Cx% zs}#bRtEDoV?c^Q3urO`w1?nt@(;=LZXG)=HRfwFEZeHDVL*|pYEjN_Vdu)}I;Il2F zyjrX!`j&EHO1tYxK$!d{*$$bIVYAtpT?ImaffDnT>L;0oyX_g%&k8@DMz^uq;z|b% zd}j{C_qr9B(#!7KQE^elWfl1y&(ljp#ao+|a6?aDx2>DrD-7nXCA(lq=?a8odnxWA zSr+txo#j6PXyS^mn4`*_##wMy5^D&2;~ob&%447fdpL$X1I~M0tQBoUc)96ojsaqi zL?#gl-$j48^*i>#cczMPvS%HU*)??JSDQpna^v&*UsW7SM51@m7Y_WNnV4EfY<3-8 z{0_`U4zA&aL=A^)IJ$;JcyJBLDc^{{iX*-erHb}sR5=m#r#RLyw5o`xl47twSN&qJ zh7+^dAM1ZqF_=x&FhU?*#n71ArPgq^ivF=?4+=J*uIBG|0?B)ra&DmXvdnZ{1w~1ZZPLX&EBrbUf zkSGW)cmN&>@vj{clsXsQogL5o^Udu3{`2z}fX8Sj5fLa~+81(STgQ$uk?(BhqTQ9w zm2{Gb32dAjS4MkmSflpq{<$1@NhAaczSp!>q-l)J_eOs#8SMJUo^)K(w%(k)5D>2f za!0o1dWPlojPX>)e@ttskDos10vX1$&?)N*ll!E`3^x7v} zo)3qPbX^rQV*bP)QX}!yv`p_%;F*3?ZIx$PvECDi9Z@fXD2f_3Q4)yi^ zKyc1`4g zr!nJV+zXBG{F>J&H}x-YY!?nZ;U{;KIY38k=z_p0G^frQgvfSs1N`778 zTdHEjw-kdSeSqCroe+`7@0ORH=mTtoYJe5HOP#*uz756!sybm2g7QmKUI^ zZD5PI+rC06h?>JC)VrgGz$550t^Yyl%OE?UAbhA{AoXRCU4rbb08tZBAp4;csV;-) bp&-rhiBy+CngnUB08!6GfwVZe2oC-N$EDh| literal 0 HcmV?d00001 diff --git a/bin/pokemonFramework/Text.class b/bin/pokemonFramework/Text.class new file mode 100644 index 0000000000000000000000000000000000000000..bd85d274b2411d64736fa3058b0595e90a294596 GIT binary patch literal 1553 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 literal 0 HcmV?d00001 diff --git a/bin/pokemonbattleServer/PKServer.class b/bin/pokemonbattleServer/PKServer.class new file mode 100644 index 0000000000000000000000000000000000000000..945ad43fe52467f131c1055e13c2c1ce1fc909fd GIT binary patch literal 2210 zcmaJ?Yg-dX7(D}l4eO$S0=4xLuLKc;R(m1TDkw?~hz-S}ZS5o(MR@wLtQUtk9^W1p0DMuk$)|{c={Idn)j2 zTKalXdUcgVmq5Y~e5xnrXqki~uy;Y#bSjRMn)j5fsnkr_4?=3Sxm5u%BhX%v-1WyX z>e}@(7sF7l=G>ZQn6A8A_NA^HlMAhMCUUK+oAO-cYZKWms)c)@lBMiuEY<0S|(3IWt-JOP-1>t$9zbs<6h)Z!>Ehml#J-o=fDPr0Mfs})8?6h!LV0VP?v$fkegrg3Q;kZEO#HNcxdS-ah7^fZV zLXX*Ns|!oK{lsH)l} zjVxT;0wLnylN$?D0>@fCa7?OPP{UEQg?$eRSbNetT8300zXv^LY=a41B(XQn+%d}1(nfQa&QZ`$pl%g zD!;^@CKI+PZwAgL@h;gHxxQlz-xnBd<@!Gz81fYy6v0S|n)`^XAbV#_CU+f_L2@T` z5YGaEJ?ZVKWNqAsXJL8kVV_0LLB$koRSlS)Z=ND>P{jwP#G>H^?Y7)T4;MWd0Vnl_ zS`nf}$J+=|H_)z_9OGh}d<`!eg=tgks)I-PkVVQ8D;`MCG$9iY#B9{NGAuLx?iP#| z*x@}TBXexo9@|*UKG|8h)67cpsVUQFR>yRus>4}g##)4hKyQ;`3=iieRpN#a7;c$E z3!vz_JFjJNc~(|8hk%_A>S0k$yJjMEZ?*L)Lv`Xsr1*caIZHawNy(zrh9qUXN!~$; zBaU}nW?E6NH`42)%$fB>-b0y_E7IfKidN36XyvquR?aG}?ToPx`)PTA(n^#CFy7ny z`x*{z;LuV}avew3Fx0dk?)b%C!$?o3Sw{OZYdCE_FSf7Y+>i9qhL`z0OwYg`M(al( z4$^-LM_K6zZ^m#0=P11rX@k)@2sd-caOIRm$BA{k`qZ5P1uWf|II#k=J a_?i`cL){$^e`3(Wq{SW=_?Aa)`0gJN{1&|c literal 0 HcmV?d00001 diff --git a/bin/pokemonbattleServer/ServerLogicThread.class b/bin/pokemonbattleServer/ServerLogicThread.class new file mode 100644 index 0000000000000000000000000000000000000000..41a98d60680b860beab1d38f077d0c7760f38448 GIT binary patch literal 764 zcma)4$!-%t5PfY=GO=mf!6t+(V6!B43}h0-iCB@c2o4w&X`&pswVjsTWISzk+L7`r zxg*Y)P2#`@@D+Rsq1s~t5ga)5Qq@)UUcKsXKfZhg@EDJLq!^a^`bhS4+!EGCGL+^- znjkrvx})0rT_eSz507E`wKx$$B;rnxco}>%h+`FZ7}zU@$%cxR-DF7DRt^}v9epUX zNaG5JkEsk8avT$wWGFOMEME?KEot^eE0PSwrf!SqKp5rhvD33%b<9w0{ujv&0wz8g zT*GxAGYpIWO51y$bjLA^8w?Y>!iqJA|GT@;8tQ3d3iAwb#*p8pIu&7Lr7Mjj)#`ZQ z<32-aMC)=2$3v`=_zNJpz_jI4 ZEaTZ9kkv6{Kp7rV=>-B`qk9VLKLOCMqR0RM literal 0 HcmV?d00001 diff --git a/opencsv-3.8.jar b/opencsv-3.8.jar new file mode 100644 index 0000000000000000000000000000000000000000..7a594a956523d03a847333b2394af896d865224b GIT binary patch literal 64417 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 literal 0 HcmV?d00001 diff --git a/preferences.txt b/preferences.txt new file mode 100644 index 0000000..c8fa1f8 --- /dev/null +++ b/preferences.txt @@ -0,0 +1,215 @@ +# !!!!!!!! UNLIKE PREVIOUS VERSIONS OF PROCESSING !!!!!!!!!! +# DO NOT MODIFY THIS FILE, OR DELETE SETTINGS FROM THIS FILE + +# These are the default preferences. If you want to modify +# them directly, use the per-user local version of the file: + +# Documents and Settings -> [username] -> Application Data -> +# Processing -> preferences.txt (on Windows XP) + +# Users -> [username] -> AppData -> Roaming -> +# Processing -> preferences.txt (on Windows Vista) + +# ~/Library -> Processing -> preferences.txt (on Mac OS X) + +# ~/.processing -> preferences.txt (on Linux) + +# The exact location of your preferences file can be found at +# the bottom of the Preferences window inside Processing. + +# Because AppData and Application Data may be considered +# hidden or system folders on Windows, you'll have to ensure +# that they're visible in order to get at preferences.txt + +# You'll have problems running Processing if you incorrectly +# modify lines in this file. + + +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + +# DEFAULT PATHS FOR SKETCHBOOK AND SETTINGS + +# relative paths will be relative to processing.exe or procesing.app. +# absolute paths may also be used. + +# note that this path should use forward slashes (like unix) +# instead of \ on windows or : on macos or whatever else + +# If you don't want users to have their sketchbook default to +# "My Documents/Processing" on Windows and "Documents/Processing" on OS X, +# set this to another path that will be used by default. +# Note that this path must exist already otherwise it won't see +# the sketchbook folder, and will instead assume the sketchbook +# has gone missing, and that it should instead use the default. +#sketchbook.path= + +# if you don't want settings to go into "application data" on windows +# and "library" on macosx, set this to the alternate location. +#settings.path=data + +# temporary build path, normally this goes into the default +# "temp" folder for that platform (as defined by java) +# but this can be used to set a specific file in case of problems +#build.path=build + +# By default, no sketches currently open +last.sketch.count=0 + + +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + +# by default, check the processing server for any updates +# (please avoid disabling, this also helps us know basic numbers +# on how many people are using Processing) +update.check = true + +# on windows, automatically associate .pde files with processing.exe +platform.auto_file_type_associations = true + +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + +# default size for the main window +default.window.width = 500 +default.window.height = 600 + +# font size for editor +editor.font=Monospaced,plain,12 +# Monaco is nicer on Mac OS X, so use that explicitly +editor.font.macosx = Monaco,plain,10 + +# anti-aliased text, turned off by default +editor.antialias=false + +# color to be used for background when 'external editor' enabled +editor.external=false + +# caret blinking +editor.caret.blink=true + +# area that's not in use by the text (replaced with tildes) +editor.invalid=false + +console = true +console.output.file = stdout.txt +console.error.file = stderr.txt +console.lines = 4 + +# set to false to disable automatically clearing the console +# each time 'run' is hit +console.auto_clear = true + +# set the maximum number of lines remembered by the console +# the default is 500, lengthen at your own peril +console.length = 500 + +# convert tabs to spaces? how many spaces? +editor.tabs.expand = true +editor.tabs.size = 2 + +# automatically indent each line +editor.indent = true + +# size of divider between editing area and the console +editor.divider.size = 0 +# the larger divider on windows is ugly with the little arrows +# this makes it large enough to see (mouse changes) and use, +# but keeps it from being annoyingly obtrusive +editor.divider.size.windows = 2 + +# any additional java options when running externally +# (for applets that are run external to the environment... +# those with a code folder, or using any libraries) +# if you hose this and can't run things, it's your own durn fault +run.options = + +# settings for the -XmsNNNm and -XmxNNNm command line option +run.options.memory = false +run.options.memory.initial = 64 +run.options.memory.maximum = 256 + +# example of increasing the memory size for applets run externally +#run.options = -Xms128m -Xmx1024m + +# index of the default display to use for present mode +# (this setting not yet completely implemented) +run.display = 1 + +# set internally +#run.window.bgcolor= + +# set to false to open a new untitled window when closing the last window +# (otherwise, the environment will quit) +# default to the relative norm for the different platforms, +# but the setting can be changed in the prefs dialog anyway +#sketchbook.closing_last_window_quits = true +#sketchbook.closing_last_window_quits.macosx = false + + +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + +#history.recording = true + +# for advanced users, enable option to export a library +#export.library = false + +# which platforms to export by default +export.application.platform.windows = true +export.application.platform.macosx = true +export.application.platform.linux = true + +# whether or not to export as full screen (present) mode +export.application.fullscreen = false + +# whether to show the stop button when exporting to application +export.application.stop = true + +# false will place all exported files into a single .jar +export.applet.separate_jar_files = false + +# set to false to no longer delete applet or application folders before export +export.delete_target_folder = true + +# may be useful when attempting to debug the preprocessor +preproc.save_build_files=false + +# allows various preprocessor features to be toggled +# in case they are causing problems + +# preprocessor: pde.g +preproc.color_datatype = true +preproc.web_colors = true +preproc.enhanced_casting = true + +# preprocessor: PdeEmitter.java +preproc.substitute_floats = true +#preproc.substitute_image = false +#preproc.substitute_font = false + +# auto-convert non-ascii chars to unicode escape sequences +preproc.substitute_unicode = true + +# PdePreproc.java +# writes out the parse tree as parseTree.xml, which can be usefully +# viewed in (at least) Mozilla or IE. useful when debugging the preprocessor. +preproc.output_parse_tree = false + +# imports to use by default (changed for 0149, some imports removed) +preproc.imports = java.applet,java.awt,java.awt.image,java.awt.event,java.io,java.net,java.text,java.util,java.util.zip,java.util.regex + +# set the browser to be used on linux +browser.linux = mozilla + +# set to the program to be used for launching apps on linux +#launcher.linux = gnome-open + +# FULL SCREEN (PRESENT MODE) +run.present.bgcolor = #666666 +run.present.stop.color = #cccccc +# starting in release 0159, don't use full screen exclusive anymore +run.present.exclusive = false +# use this by default to hide the menu bar and dock on osx +run.present.exclusive.macosx = true diff --git a/src/data/abilities.csv b/src/data/abilities.csv new file mode 100644 index 0000000..6aedb4d --- /dev/null +++ b/src/data/abilities.csv @@ -0,0 +1,193 @@ +000,Cacophony,Avoids sound-based moves.,II,0,0,0 +000,Cacophony,Avoids sound-based moves.,II,0,0,0 +001,Stench,The stench may cause the target to flinch.,III,0,6,1 +002,Drizzle,The Pokémon makes it rain if it appears in battle.,III,1,0,1 +003,Speed Boost,The Pokémon's Speed stat is gradually boosted.III,2,2,8 +004,Battle Armor,The Pokémon is protected against critical hits.,III,2,4,2 +005,Sturdy,The Pokémon is protected against 1-hit KO attacks.,III,8,22,6 +006,Damp,Prevents combatants from self destructing.,III,0,8,10 +007,Limber,The Pokémon is protected from paralysis.,III,1,7,2 +008,Sand Veil,Boosts the Pokémon's evasion in a sandstorm.,III,7,6,7 +009,Static,Contact with the Pokémon may cause paralysis.,III,9,5,1 +010,Volt Absorb,Restores HP if hit by an Electric-type move.,III,2,2,3 +011,Water Absorb,Restores HP if hit by a Water-type move.,III,2,12,8 +012,Oblivious,Prevents the Pokémon from becoming infatuated or falling for taunts.,III,0,17,3 +013,Cloud Nine,Eliminates the effects of weather.,III,0,2,4 +014,Compound Eyes,The Pokémon's accuracy is boosted.,III,2,6,1 +015,Insomnia,Prevents the Pokémon from falling asleep.,III,1,10,3 +016,Color Change,Changes the Pokémon's type to the foe’s move.,III,1,0,0 +017,Immunity,Prevents the Pokémon from getting poisoned.,III,1,1,1 +018,Flash Fire,Powers up Fire-type moves if hit by a fire move.,III,4,10,4 +019,Shield Dust,Blocks the added effects of attacks taken.,III,4,3,0 +020,Own Tempo,Prevents the Pokémon from becoming confused.,III,0,15,5 +021,Suction Cups,Negates moves that force switching out.,III,2,3,0 +022,Intimidate,Lowers the foe’s Attack stat.,III,7,19,3 +023,Shadow Tag,Prevents the foe from escaping.,III,3,0,3 +024,Rough Skin,Inflicts damage to the foe on contact.,III,2,1,3 +025,Wonder Guard,Only supereffective moves will hit.,III,1,0,0 +026,Levitate,Gives full immunity to all Ground-type moves.,III,31,2,0 +027,Effect Spore,Contact may paralyze, poison, or cause sleep.,III,2,4,1 +028,Synchronize,Passes on a burn, poison, or paralysis to the foe.,III,3,12,0 +029,Clear Body,Prevents the Pokémon's stats from being lowered.,III,8,2,3 +030,Natural Cure,All status problems are healed upon switching out.,III,4,11,0 +031,Lightning Rod,The Pokémon draws in all Electric-type moves to raise Sp.Atk.,III,2,9,6 +032,Serene Grace,Boosts the likelihood of added effects appearing.,III,3,7,2 +033,Swift Swim,Boosts the Pokémon's Speed in rain.,III,8,21,10 +034,Chlorophyll,Boosts the Pokémon's Speed in sunshine.,III,10,19,6 +035,Illuminate,Raises the likelihood of meeting wild Pokémon.,III,0,6,0 +036,Trace,The Pokémon copies a foe's Ability.,III,1,5,0 +037,Huge Power,Raises the Pokémon's Attack stat.,III,1,3,2 +038,Poison Point,Contact with the Pokémon may poison the foe.,III,0,16,0 +039,Inner Focus,The Pokémon is protected from flinching.,III,5,16,6 +040,Magma Armor,Prevents the Pokémon from becoming frozen.,III,0,3,0 +041,Water Veil,Prevents the Pokémon from getting a burn.,III,0,4,7 +042,Magnet Pull,Prevents Steel-type Pokémon from escaping.,III,0,5,0 +043,Soundproof,Gives full immunity to all sound-based moves.,III,3,4,5 +044,Rain Dish,The Pokémon gradually recovers HP in rain.,III,0,3,8 +045,Sand Stream,The Pokémon summons a sandstorm in battle.,III,3,0,0 +046,Pressure,The Pokémon raises the foe’s PP usage.,III,19,2,4 +047,Thick Fat,Raises resistance to Fire- and Ice-type moves.,III,1,16,5 +048,Early Bird,The Pokémon awakens quickly from sleep.,III,0,13,2 +049,Flame Body,Contact with the Pokémon may burn the foe.,III,7,5,4 +050,Run Away,Enables sure getaway from wild Pokémon.,III,0,16,8 +051,Keen Eye,Prevents the Pokémon from losing accuracy.,III,4,22,5 +052,Hyper Cutter,Prevents the Attack stat from being lowered.,III,0,9,0 +053,Pickup,The Pokémon may pick up items.,III,1,14,0 +054,Truant,The Pokémon can't attack on consecutive turns.,III,2,0,1 +055,Hustle,Boosts the Attack stat, but lowers accuracy.,III,3,7,8 +056,Cute Charm,Contact with the Pokémon may cause infatuation.,III,1,11,1 +057,Plus,Boosts Sp. Atk if another Pokémon has Minus.,III,1,3,4 +058,Minus,Boosts Sp. Atk if another Pokémon has Plus.,III,1,3,2 +059,Forecast,Transforms with the weather.,III,1,0,0 +060,Sticky Hold,Protects the Pokémon from item theft.,III,0,8,0 +061,Shed Skin,The Pokémon may heal its own status problems.,III,11,5,0 +062,Guts,Boosts Attack if there is a status problem.,III,3,14,4 +063,Marvel Scale,Boosts Defense if there is a status problem.,III,0,1,2 +064,Liquid Ooze,Inflicts damage on foes using any draining move.,III,0,4,0 +065,Overgrow,Powers up Grass-type moves in a pinch.,III,18,0,2 +066,Blaze,Powers up Fire-type moves in a pinch.,III,18,0,2 +067,Torrent,Powers up Water-type moves in a pinch.,III,18,0,2 +068,Swarm,Powers up Bug-type moves in a pinch.,III,4,16,4 +069,Rock Head,Protects the Pokémon from recoil damage.,III,2,17,1 +070,Drought,The Pokémon makes it sunny if it is in battle.,III,2,0,2 +071,Arena Trap,Prevents the foe from fleeing.,III,0,3,0 +072,Vital Spirit,Prevents the Pokémon from falling asleep.,III,1,4,7 +073,White Smoke,Prevents the Pokémon's stats from being lowered.,III,1,0,1 +074,Pure Power,Boosts the power of physical attacks.,III,2,0,0 +075,Shell Armor,The Pokémon is protected against critical hits.,III,2,13,7 +076,Air Lock,Eliminates the effects of weather.,III,1,0,0 +077,Tangled Feet,Raises evasion if the Pokémon is confused.,IV,0,5,2 +078,Motor Drive,Raises Speed if hit by an Electric-type move.,IV,1,2,1 +079,Rivalry,Raises Attack if the foe is of the same gender.,IV,0,14,4 +080,Steadfast,Raises Speed each time the Pokémon flinches.,IV,2,3,5 +081,Snow Cloak,Raises evasion in a hailstorm.,IV,4,3,1 +082,Gluttony,Encourages the early use of a held Berry.,IV,6,4,9 +083,Anger Point,Raises Attack upon taking a critical hit.,IV,0,3,4 +084,Unburden,Raises Speed if a held item is used.,IV,0,5,7 +085,Heatproof,Weakens the power of Fire-type moves.,IV,0,2,0 +086,Simple,The Pokémon is prone to wild stat changes.,IV,0,3,2 +087,Dry Skin,Reduces HP if it is hot. Water restores HP.,IV,0,6,1 +088,Download,Adjusts power according to the foe’s lowest defensive stat.,IV,1,3,0 +089,Iron Fist,Boosts the power of punching moves.,IV,0,5,7 +090,Poison Heal,Restores HP if the Pokémon is poisoned.,IV,0,2,1 +091,Adaptability,Powers up moves of the same type.,IV,2,4,5 +092,Skill Link,Increases the frequency of multi-strike moves.,IV,1,2,4 +093,Hydration,Heals status problems if it is raining.,IV,2,10,9 +094,Solar Power,Boosts Sp. Atk, but lowers HP in sunshine.,IV,1,3,5 +095,Quick Feet,Boosts Speed if there is a status problem.,IV,0,5,4 +096,Normalize,All the Pokémon's moves become Normal type.,IV,0,2,0 +097,Sniper,Powers up moves if they become critical hits.,IV,0,9,5 +098,Magic Guard,The Pokémon only takes damage from attacks.,IV,0,7,3 +099,No Guard,Ensures the Pokémon and its foe’s attacks land.,IV,3,3,3 +100,Stall,The Pokémon moves after even slower foes.,IV,0,1,0 +101,Technician,Powers up the Pokémon's weaker moves.,IV,1,9,5 +102,Leaf Guard,Prevents status problems in sunny weather.,IV,1,6,7 +103,Klutz,The Pokémon can’t use any held items.,IV,0,6,1 +104,Mold Breaker,Moves can be used regardless of Abilities.,IV,4,6,7 +105,Super Luck,Heightens the critical-hit ratios of moves.,IV,0,6,3 +106,Aftermath,Damages the foe landing the finishing hit.,IV,0,4,4 +107,Anticipation,Senses the foe’s dangerous moves.,IV,1,4,2 +108,Forewarn,Determines what moves the foe has.,IV,0,6,0 +109,Unaware,Ignores any change in stats by the foe.,IV,0,4,3 +110,Tinted Lens,Powers up “not very effective” moves.,IV,0,4,5 +111,Filter,Powers down supereffective moves.,IV,1,2,0 +112,Slow Start,Temporarily halves Attack and Speed.,IV,1,0,0 +113,Scrappy,Enables moves to hit Ghost-type foes.,IV,1,2,8 +114,Storm Drain,The Pokémon draws in all Water-type moves.,IV,0,4,3 +115,Ice Body,The Pokémon regains HP in a hailstorm.,IV,3,7,4 +116,Solid Rock,Powers down supereffective moves.,IV,0,4,0 +117,Snow Warning,The Pokémon summons a hailstorm in battle.,IV,2,0,2 +118,Honey Gather,The Pokémon may gather Honey from somewhere.,IV,1,0,1 +119,Frisk,The Pokémon can check the foe’s held item.,IV,0,12,8 +120,Reckless,Powers up moves that have recoil damage.,IV,0,3,9 +121,Multitype,Changes type to match the held Plate.,IV,1,0,0 +122,Flower Gift,Powers up party Pokémon when it is sunny.,IV,1,0,0 +123,Bad Dreams,Reduces a sleeping foe’s HP.,IV,1,0,0 +124,Pickpocket,Steals attacking Pokémon's held item on contact.,V,0,0,7 +125,Sheer Force,Strengthens moves with extra effects to 1.3× their power, but prevents their extra effects.,V,2,6,17 +126,Contrary,Inverts stat modifiers.,V,0,2,5 +127,Unnerve,Prevents opposing Pokémon from eating held Berries.,V,0,4,15 +128,Defiant,Raises Attack two stages upon having any stat lowered.,V,0,2,10 +129,Defeatist,Halves Attack and Special Attack below 50% HP.,V,2,0,0 +130,Cursed Body,Has a 30% chance of Disabling any move that hits the Pokémon.,V,0,2,3 +131,Healer,Has a 30% chance of curing each adjacent ally of any major status ailment after each turn.,V,3,2,3 +132,Friend Guard,Decreases damage inflicted against ally Pokémon.,V,0,0,8 +133,Weak Armor,Raises Speed and lowers Defense by one stage each upon being hit by any move.,V,0,1,15 +134,Heavy Metal,Doubles the Pokémon's weight.,V,0,0,5 +135,Light Metal,Halves the Pokémon's weight.,V,0,0,5 +136,Multiscale,Halves damage taken from full HP.,V,0,0,2 +137,Toxic Boost,Increases Attack to 1.5× when poisoned.,V,0,0,1 +138,Flare Boost,Increases Special Attack to 1.5× when burned.,V,0,0,2 +139,Harvest,Sometimes restores a consumed Berry.,V,0,0,5 +140,Telepathy,Protects against damaging moves from friendly Pokémon.,V,0,2,14 +141,Moody,Raises a random stat two stages and lowers another one stage after each turn.,V,0,0,7 +142,Overcoat,Protects against damage from weather.,V,0,5,12 +143,Poison Touch,Has a 30% chance of poisoning Pokémon upon contact when attacking.,V,0,3,4 +144,Regenerator,Heals for 1/3 max HP upon leaving battle.,V,1,3,13 +145,Big Pecks,Protects the Pokémon from Defense-lowering attacks.,V,1,7,4 +146,Sand Rush,Doubles Speed during a sandstorm.,V,0,4,2 +147,Wonder Skin,Has a 50% chance of protecting against non-damaging moves that inflict major status ailments.,V,0,1,3 +148,Analytic,Strengthens moves when moving last.,V,0,0,12 +149,Illusion,Takes the appearance of the last conscious party Pokémon upon being sent out until hit by a damaging move.,V,2,0,0 +150,Imposter,Transforms upon entering battle.,V,0,0,1 +151,Infiltrator,Ignores Light Screen, Reflect, and Safeguard.,V,0,6,14 +152,Mummy,Contact with this Pokémon spreads this Ability.,V,2,0,0 +153,Moxie,Raises Attack one stage upon KOing a Pokémon.,V,0,5,8 +154,Justified,Raises Attack when hit by Dark-type moves.,V,4,0,5 +155,Rattled,Raises Speed one stage upon being hit by a Dark, Ghost, or Bug move.,V,0,0,11 +156,Magic Bounce,Reflects most non-damaging moves back at their user.,V,3,0,3 +157,Sap Sipper,Absorbs Grass moves, raising Attack one stage.,V,2,6,8 +158,Prankster,Raises non-damaging moves' priority by one stage.,V,4,2,8 +159,Sand Force,Strengthens Rock, Ground, and Steel moves to 1.3× their power during a sandstorm.,V,3,2,13 +160,Iron Barbs,Damages attacking Pokémon for 1/8 their max HP on contact.,V,2,0,0 +161,Zen Mode,Changes the Pokémon's shape when HP is halved.,V,0,0,1 +162,Victory Star,Raises moves' accuracy to 1.1× for friendly Pokémon.,V,1,0,0 +163,Turboblaze,Moves can be used regardless of Abilities.,V,2,0,0 +164,Teravolt,Moves can be used regardless of Abilities.,V,2,0,0 +165,Aroma Veil,Protects allies from attacks that limit their move choices.,VI,0,0,2 +166,Flower Veil,Prevents lowering of ally Grass-type Pokémon's stats.,VI,3,0,0 +167,Cheek Pouch,Restores HP as well when the Pokémon eats a Berry.,VI,0,3,0 +168,Protean,Changes the Pokémon's type to the same type of the move it is using.,VI,0,0,4 +169,Fur Coat,Halves damage from physical moves.,VI,1,0,0 +170,Magician,The Pokémon steals the held item of a Pokémon it hits with a move.,VI,1,0,4 +171,Bulletproof,Protects the Pokémon from some ball and bomb moves.,VI,0,0,3 +172,Competitive,Boosts the Sp.Atk stat when a stat is lowered.,VI,0,7,1 +173,Strong Jaw,The Pokémon's strong jaw gives it tremendous biting power.,VI,3,0,0 +174,Refrigerate,Normal-type moves become Ice-type moves.,VI,3,0,0 +175,Sweet Veil,Prevents itself and its allies from falling asleep.,VI,2,0,0 +176,Stance Change,The Pokémon changes form depending on how it battles.,VI,1,0,0 +177,Gale Wings,Gives priority to Flying-type moves.,VI,0,0,3 +178,Mega Launcher,Powers up aura and pulse moves.,VI,3,0,0 +179,Grass Pelt,Boosts the Defense stat in Grassy Terrain.,VI,0,0,2 +180,Symbiosis,The Pokémon can pass an item to an ally.,VI,0,0,3 +181,Tough Claws,Powers up moves that make direct contact.,VI,3,2,0 +182,Pixilate,Normal-type moves become Fairy-type moves.,VI,2,0,1 +183,Gooey,Contact with the Pokémon lowers the attacker's Speed stat.,VI,0,0,3 +184,Aerilate,Normal-type moves become Flying-type moves.,VI,2,0,0 +185,Parental Bond,Parent and child attack together.,VI,1,0,0 +186,Dark Aura,Powers up each Pokémon's Dark-type moves.,VI,1,0,0 +187,Fairy Aura,Powers up each Pokémon's Fairy-type moves.,VI,1,0,0 +188,Aura Break,The effects of "Aura" Abilities are reversed.,VI,1,0,0 +189,Primordial Sea,Causes heavy rain.,VI,1,0,0 +190,Desolate Land,Creates harsh sunlight.,VI,1,0,0 +191,Delta Stream,Eliminates weather effects and eliminates weaknesses of Flying-type Pokémon.,VI,1,0,0 \ No newline at end of file diff --git a/src/data/moves.csv b/src/data/moves.csv new file mode 100644 index 0000000..357cfff --- /dev/null +++ b/src/data/moves.csv @@ -0,0 +1,622 @@ +0,Name,Type,Category,0,0,0 +1,Pound,Normal,Physical,35,35,100 +2,Karate Chop,Fighting,Physical,25,25,100 +3,Double Slap,Normal,Physical,10,10,85 +4,Comet Punch,Normal,Physical,15,15,85 +5,Mega Punch,Normal,Physical,20,20,85 +6,Pay Day,Normal,Physical,20,20,100 +7,Fire Punch,Fire,Physical,15,15,100 +8,Ice Punch,Ice,Physical,15,15,100 +9,Thunder Punch,Electric,Physical,15,15,100 +10,Scratch,Normal,Physical,35,35,100 +11,Vice Grip,Normal,Physical,30,30,100 +12,Guillotine,Normal,Physical,5,5,100 +13,Razor Wind,Normal,Special,10,10,100 +14,Swords Dance,Normal,Status,20,20,100 +15,Cut,Normal,Physical,30,30,95 +16,Gust,Flying,Special,35,35,100 +17,Wing Attack,Flying,Physical,35,35,100 +18,Whirlwind,Normal,Status,20,20,100 +19,Fly,Flying,Physical,15,15,95 +20,Bind,Normal,Physical,20,20,85 +21,Slam,Normal,Physical,20,20,75 +22,Vine Whip,Grass,Physical,25,25,100 +23,Stomp,Normal,Physical,20,20,100 +24,Double Kick,Fighting,Physical,30,30,100 +25,Mega Kick,Normal,Physical,5,5,75 +26,Jump Kick,Fighting,Physical,10,10,95 +27,Rolling Kick,Fighting,Physical,15,15,85 +28,Sand Attack,Ground,Status,15,15,100 +29,Headbutt,Normal,Physical,15,15,100 +30,Horn Attack,Normal,Physical,25,25,100 +31,Fury Attack,Normal,Physical,20,20,85 +32,Horn Drill,Normal,Physical,5,5,100 +33,Tackle,Normal,Physical,35,35,100 +34,Body Slam,Normal,Physical,15,15,100 +35,Wrap,Normal,Physical,20,20,90 +36,Take Down,Normal,Physical,20,20,85 +37,Thrash,Normal,Physical,10,10,100 +38,Double-Edge,Normal,Physical,15,15,100 +39,Tail Whip,Normal,Status,30,30,100 +40,Poison Sting,Poison,Physical,35,35,100 +41,Twineedle,Bug,Physical,20,20,100 +42,Pin Missile,Bug,Physical,20,20,95 +43,Leer,Normal,Status,30,30,100 +44,Bite,Dark,Physical,25,25,100 +45,Growl,Normal,Status,40,40,100 +46,Roar,Normal,Status,20,20,100 +47,Sing,Normal,Status,15,15,55 +48,Supersonic,Normal,Status,20,20,55 +49,Sonic Boom,Normal,Special,20,20,90 +50,Disable,Normal,Status,20,20,100 +51,Acid,Poison,Special,30,30,100 +52,Ember,Fire,Special,25,25,100 +53,Flamethrower,Fire,Special,15,15,100 +54,Mist,Ice,Status,30,30,100 +55,Water Gun,Water,Special,25,25,100 +56,Hydro Pump,Water,Special,5,5,80 +57,Surf,Water,Special,15,15,100 +58,Ice Beam,Ice,Special,10,10,100 +59,Blizzard,Ice,Special,5,5,70 +60,Psybeam,Psychic,Special,20,20,100 +61,Bubble Beam,Water,Special,20,20,100 +62,Aurora Beam,Ice,Special,20,20,100 +63,Hyper Beam,Normal,Special,5,5,90 +64,Peck,Flying,Physical,35,35,100 +65,Drill Peck,Flying,Physical,20,20,100 +66,Submission,Fighting,Physical,25,25,80 +67,Low Kick,Fighting,Physical,20,20,100 +68,Counter,Fighting,Physical,20,20,100 +69,Seismic Toss,Fighting,Physical,20,20,100 +70,Strength,Normal,Physical,15,15,100 +71,Absorb,Grass,Special,25,25,100 +72,Mega Drain,Grass,Special,15,15,100 +73,Leech Seed,Grass,Status,10,10,90 +74,Growth,Normal,Status,20,20,100 +75,Razor Leaf,Grass,Physical,25,25,95 +76,Solar Beam,Grass,Special,10,10,100 +77,Poison Powder,Poison,Status,35,35,75 +78,Stun Spore,Grass,Status,30,30,75 +79,Sleep Powder,Grass,Status,15,15,75 +80,Petal Dance,Grass,Special,10,10,100 +81,String Shot,Bug,Status,40,40,95 +82,Dragon Rage,Dragon,Special,10,10,100 +83,Fire Spin,Fire,Special,15,15,85 +84,Thunder Shock,Electric,Special,30,30,100 +85,Thunderbolt,Electric,Special,15,15,100 +86,Thunder Wave,Electric,Status,20,20,100 +87,Thunder,Electric,Special,10,10,70 +88,Rock Throw,Rock,Physical,15,15,90 +89,Earthquake,Ground,Physical,10,10,100 +90,Fissure,Ground,Physical,5,5,100 +91,Dig,Ground,Physical,10,10,100 +92,Toxic,Poison,Status,10,10,90 +93,Confusion,Psychic,Special,25,25,100 +94,Psychic,Psychic,Special,10,10,100 +95,Hypnosis,Psychic,Status,20,20,60 +96,Meditate,Psychic,Status,40,40,100 +97,Agility,Psychic,Status,30,30,100 +98,Quick Attack,Normal,Physical,30,30,100 +99,Rage,Normal,Physical,20,20,100 +100,Teleport,Psychic,Status,20,20,100 +101,Night Shade,Ghost,Special,15,15,100 +102,Mimic,Normal,Status,10,10,100 +103,Screech,Normal,Status,40,40,85 +104,Double Team,Normal,Status,15,15,100 +105,Recover,Normal,Status,10,10,100 +106,Harden,Normal,Status,30,30,100 +107,Minimize,Normal,Status,10,10,100 +108,Smokescreen,Normal,Status,20,20,100 +109,Confuse Ray,Ghost,Status,10,10,100 +110,Withdraw,Water,Status,40,40,100 +111,Defense Curl,Normal,Status,40,40,100 +112,Barrier,Psychic,Status,20,20,100 +113,Light Screen,Psychic,Status,30,30,100 +114,Haze,Ice,Status,30,30,100 +115,Reflect,Psychic,Status,20,20,100100 +116,Focus Energy,Normal,Status,30,30,100 +117,Bide,Normal,Physical,10,10,100 +118,Metronome,Normal,Status,10,10, +119,Mirror Move,Flying,Status,20,20, +120,Self-Destruct,Normal,Physical,5,5,100 +121,Egg Bomb,Normal,Physical,10,10,75 +122,Lick,Ghost,Physical,30,30,100 +123,Smog,Poison,Special,20,20,70 +124,Sludge,Poison,Special,20,20,100 +125,Bone Club,Ground,Physical,20,20,85 +126,Fire Blast,Fire,Special,5,5,85 +127,Waterfall,Water,Physical,15,15,100 +128,Clamp,Water,Physical,15,15,85 +129,Swift,Normal,Special,20,20,100 +130,Skull Bash,Normal,Physical,10,10,100 +131,Spike Cannon,Normal,Physical,15,15,100 +132,Constrict,Normal,Physical,35,35,100 +133,Amnesia,Psychic,Status,20,20,100 +134,Kinesis,Psychic,Status,15,15,80 +135,Soft-Boiled,Normal,Status,10,10,100 +136,High Jump Kick,Fighting,Physical,10,10,90 +137,Glare,Normal,Status,30,30,100 +138,Dream Eater,Psychic,Special,15,15,100 +139,Poison Gas,Poison,Status,40,40,90 +140,Barrage,Normal,Physical,20,20,85 +141,Leech Life,Bug,Physical,15,15,100 +142,Lovely Kiss,Normal,Status,10,10,75 +143,Sky Attack,Flying,Physical,5,5,90 +144,Transform,Normal,Status,10,10,100 +145,Bubble,Water,Special,30,30,100 +146,Dizzy Punch,Normal,Physical,10,10,100 +147,Spore,Grass,Status,15,15,100 +148,Flash,Normal,Status,20,20,100 +149,Psywave,Psychic,Special,15,15,100 +150,Splash,Normal,Status,40,40,100 +151,Acid Armor,Poison,Status,20,20,100 +152,Crabhammer,Water,Physical,10,10,90 +153,Explosion,Normal,Physical,5,5,100 +154,Fury Swipes,Normal,Physical,15,15,80 +155,Bonemerang,Ground,Physical,10,10,90 +156,Rest,Psychic,Status,10,10,100 +157,Rock Slide,Rock,Physical,10,10,90 +158,Hyper Fang,Normal,Physical,15,15,90 +159,Sharpen,Normal,Status,30,30,100 +160,Conversion,Normal,Status,30,30,100 +161,Tri Attack,Normal,Special,10,10,100 +162,Super Fang,Normal,Physical,10,10,90 +163,Slash,Normal,Physical,20,20,100 +164,Substitute,Normal,Status,10,10,100 +165,Struggle,Normal,Physical,1,1,100 +166,Sketch,Normal,Status,1,1,100 +167,Triple Kick,Fighting,Physical,10,10,90 +168,Thief,Dark,Physical,25,25,100 +169,Spider Web,Bug,Status,10,10,100 +170,Mind Reader,Normal,Status,5,5,100 +171,Nightmare,Ghost,Status,15,15,100 +172,Flame Wheel,Fire,Physical,25,25,100 +173,Snore,Normal,Special,15,15,100 +174,Curse,Ghost,Status,10,10,100 +175,Flail,Normal,Physical,15,15,100 +176,Conversion 2,Normal,Status,30,30,100 +177,Aeroblast,Flying,Special,5,5,95 +178,Cotton Spore,Grass,Status,40,40,100 +179,Reversal,Fighting,Physical,15,15,100 +180,Spite,Ghost,Status,10,10,100 +181,Powder Snow,Ice,Special,25,25,100 +182,Protect,Normal,Status,10,10,100 +183,Mach Punch,Fighting,Physical,30,30,100 +184,Scary Face,Normal,Status,10,10,100 +185,Feint Attack,Dark,Physical,20,20,100 +186,Sweet Kiss,Fairy,Status,10,10,75 +187,Belly Drum,Normal,Status,10,10,100 +188,Sludge Bomb,Poison,Special,10,10,100 +189,Mud-Slap,Ground,Special,10,10,100 +190,Octazooka,Water,Special,10,10,85 +191,Spikes,Ground,Status,20,20,100 +192,Zap Cannon,Electric,Special,5,5,50 +193,Foresight,Normal,Status,40,40,100 +194,Destiny Bond,Ghost,Status,5,5,100 +195,Perish Song,Normal,Status,5,5,100 +196,Icy Wind,Ice,Special,15,15,95 +197,Detect,Fighting,Status,5,5,100 +198,Bone Rush,Ground,Physical,10,10,90 +199,Lock-On,Normal,Status,5,5,100 +200,Outrage,Dragon,Physical,10,10,100 +201,Sandstorm,Rock,Status,10,10,100 +202,Giga Drain,Grass,Special,10,10,100 +203,Endure,Normal,Status,10,10,100 +204,Charm,Fairy,Status,20,20,100 +205,Rollout,Rock,Physical,20,20,90 +206,False Swipe,Normal,Physical,40,40,100 +207,Swagger,Normal,Status,15,15,90 +208,Milk Drink,Normal,Status,10,10,100 +209,Spark,Electric,Physical,20,20,100 +210,Fury Cutter,Bug,Physical,20,20,95 +211,Steel Wing,Steel,Physical,25,25,90 +212,Mean Look,Normal,Status,5,5,100 +213,Attract,Normal,Status,15,15,100 +214,Sleep Talk,Normal,Status,10,10,100 +215,Heal Bell,Normal,Status,5,5,100 +216,Return,Normal,Physical,20,20,100 +217,Present,Normal,Physical,15,15,90 +218,Frustration,Normal,Physical,20,20,100 +219,Safeguard,Normal,Status,25,25,100 +220,Pain Split,Normal,Status,20,20,100 +221,Sacred Fire,Fire,Physical,5,5,95 +222,Magnitude,Ground,Physical,30,30,100 +223,Dynamic Punch,Fighting,Physical,5,5,50 +224,Megahorn,Bug,Physical,10,10,85 +225,Dragon Breath,Dragon,Special,20,20,100 +226,Baton Pass,Normal,Status,40,40,100 +227,Encore,Normal,Status,5,5,100 +228,Pursuit,Dark,Physical,20,20,100 +229,Rapid Spin,Normal,Physical,40,40,100 +230,Sweet Scent,Normal,Status,20,20,100 +231,Iron Tail,Steel,Physical,15,15,75 +232,Metal Claw,Steel,Physical,35,35,95 +233,Vital Throw,Fighting,Physical,10,10,100 +234,Morning Sun,Normal,Status,5,5,100 +235,Synthesis,Grass,Status,5,5,100 +236,Moonlight,Fairy,Status,5,5,100 +237,Hidden Power,Normal,Special,15,15,100 +238,Cross Chop,Fighting,Physical,5,5,80 +239,Twister,Dragon,Special,20,20,100 +240,Rain Dance,Water,Status,5,5,100 +241,Sunny Day,Fire,Status,5,5,100 +242,Crunch,Dark,Physical,15,15,100 +243,Mirror Coat,Psychic,Special,20,20,100 +244,Psych Up,Normal,Status,10,10,100 +245,Extreme Speed,Normal,Physical,5,5,100 +246,Ancient Power,Rock,Special,5,5,100 +247,Shadow Ball,Ghost,Special,15,15,100 +248,Future Sight,Psychic,Special,10,10,100 +249,Rock Smash,Fighting,Physical,15,15,100 +250,Whirlpool,Water,Special,15,15,85 +251,Beat Up,Dark,Physical,10,10,100 +252,Fake Out,Normal,Physical,10,10,100 +253,Uproar,Normal,Special,10,10,100 +254,Stockpile,Normal,Status,20,20,100 +255,Spit Up,Normal,Special,10,10,100 +256,Swallow,Normal,Status,10,10,100 +257,Heat Wave,Fire,Special,10,10,90 +258,Hail,Ice,Status,10,10,100 +259,Torment,Dark,Status,15,15,100 +260,Flatter,Dark,Status,15,15,100 +261,Will-O-Wisp,Fire,Status,15,15,85 +262,Memento,Dark,Status,10,10,100 +263,Facade,Normal,Physical,20,20,100 +264,Focus Punch,Fighting,Physical,20,20,100 +265,Smelling Salts,Normal,Physical,10,10,100 +266,Follow Me,Normal,Status,20,20,100 +267,Nature Power,Normal,Status,20,20,100 +268,Charge,Electric,Status,20,20,100 +269,Taunt,Dark,Status,20,20,100 +270,Helping Hand,Normal,Status,20,20,100 +271,Trick,Psychic,Status,10,10,100 +272,Role Play,Psychic,Status,10,10,100 +273,Wish,Normal,Status,10,10,100 +274,Assist,Normal,Status,20,20,100 +275,Ingrain,Grass,Status,20,20,100 +276,Superpower,Fighting,Physical,5,5,100 +277,Magic Coat,Psychic,Status,15,15,100 +278,Recycle,Normal,Status,10,10,100 +279,Revenge,Fighting,Physical,10,10,100 +280,Brick Break,Fighting,Physical,15,15,100 +281,Yawn,Normal,Status,10,10,100 +282,Knock Off,Dark,Physical,20,20,100 +283,Endeavor,Normal,Physical,5,5,100 +284,Eruption,Fire,Special,5,5,100 +285,Skill Swap,Psychic,Status,10,10,100 +286,Imprison,Psychic,Status,10,10,100 +287,Refresh,Normal,Status,20,20,100 +288,Grudge,Ghost,Status,5,5,100 +289,Snatch,Dark,Status,10,10,100 +290,Secret Power,Normal,Physical,20,20,100 +291,Dive,Water,Physical,10,10,100 +292,Arm Thrust,Fighting,Physical,20,20,100 +293,Camouflage,Normal,Status,20,20,100 +294,Tail Glow,Bug,Status,20,20,100 +295,Luster Purge,Psychic,Special,5,5,100 +296,Mist Ball,Psychic,Special,5,5,100 +297,Feather Dance,Flying,Status,15,15,100 +298,Teeter Dance,Normal,Status,20,20,100 +299,Blaze Kick,Fire,Physical,10,10,90 +300,Mud Sport,Ground,Status,15,15,100 +301,Ice Ball,Ice,Physical,20,20,90 +302,Needle Arm,Grass,Physical,15,15,100 +303,Slack Off,Normal,Status,10,10,100 +304,Hyper Voice,Normal,Special,10,10,100 +305,Poison Fang,Poison,Physical,15,15,100 +306,Crush Claw,Normal,Physical,10,10,95 +307,Blast Burn,Fire,Special,5,5,90 +308,Hydro Cannon,Water,Special,5,5,90 +309,Meteor Mash,Steel,Physical,10,10,90 +310,Astonish,Ghost,Physical,15,15,100 +311,Weather Ball,Normal,Special,10,10,100 +312,Aromatherapy,Grass,Status,5,5,100 +313,Fake Tears,Dark,Status,20,20,100 +314,Air Cutter,Flying,Special,25,25,95 +315,Overheat,Fire,Special,5,5,90 +316,Odor Sleuth,Normal,Status,40,40,100 +317,Rock Tomb,Rock,Physical,15,15,95 +318,Silver Wind,Bug,Special,5,5,100 +319,Metal Sound,Steel,Status,40,40,85 +320,Grass Whistle,Grass,Status,15,15,55 +321,Tickle,Normal,Status,20,20,100 +322,Cosmic Power,Psychic,Status,20,20,100 +323,Water Spout,Water,Special,5,5,100 +324,Signal Beam,Bug,Special,15,15,100 +325,Shadow Punch,Ghost,Physical,20,20,100 +326,Extrasensory,Psychic,Special,20,20,100 +327,Sky Uppercut,Fighting,Physical,15,15,90 +328,Sand Tomb,Ground,Physical,15,15,85 +329,Sheer Cold,Ice,Special,5,5,100 +330,Muddy Water,Water,Special,10,10,85 +331,Bullet Seed,Grass,Physical,30,30,100 +332,Aerial Ace,Flying,Physical,20,20,100 +333,Icicle Spear,Ice,Physical,30,30,100 +334,Iron Defense,Steel,Status,15,15,100 +335,Block,Normal,Status,5,5,100 +336,Howl,Normal,Status,40,40,100 +337,Dragon Claw,Dragon,Physical,15,15,100 +338,Frenzy Plant,Grass,Special,5,5,90 +339,Bulk Up,Fighting,Status,20,20,100 +340,Bounce,Flying,Physical,5,5,85 +341,Mud Shot,Ground,Special,15,15,95 +342,Poison Tail,Poison,Physical,25,25,100 +343,Covet,Normal,Physical,25,25,100 +344,Volt Tackle,Electric,Physical,15,15,100 +345,Magical Leaf,Grass,Special,20,20,100 +346,Water Sport,Water,Status,15,15,100 +347,Calm Mind,Psychic,Status,20,20,100 +348,Leaf Blade,Grass,Physical,15,15,100 +349,Dragon Dance,Dragon,Status,20,20,100 +350,Rock Blast,Rock,Physical,10,10,90 +351,Shock Wave,Electric,Special,20,20,100 +352,Water Pulse,Water,Special,20,20,100 +353,Doom Desire,Steel,Special,5,5,100 +354,Psycho Boost,Psychic,Special,5,5,90 +355,Roost,Flying,Status,10,10,100 +356,Gravity,Psychic,Status,5,5,100 +357,Miracle Eye,Psychic,Status,40,40,100 +358,Wake-Up Slap,Fighting,Physical,10,10,100 +359,Hammer Arm,Fighting,Physical,10,10,90 +360,Gyro Ball,Steel,Physical,5,5,100 +361,Healing Wish,Psychic,Status,10,10,100 +362,Brine,Water,Special,10,10,100 +363,Natural Gift,Normal,Physical,15,15,100 +364,Feint,Normal,Physical,10,10,100 +365,Pluck,Flying,Physical,20,20,100 +366,Tailwind,Flying,Status,15,15,100 +367,Acupressure,Normal,Status,30,30,100 +368,Metal Burst,Steel,Physical,10,10,100 +369,U-turn,Bug,Physical,20,20,100 +370,Close Combat,Fighting,Physical,5,5,100 +371,Payback,Dark,Physical,10,10,100 +372,Assurance,Dark,Physical,10,10,100 +373,Embargo,Dark,Status,15,15,100 +374,Fling,Dark,Physical,10,10,100 +375,Psycho Shift,Psychic,Status,10,10,100 +376,Trump Card,Normal,Special,5,5,100 +377,Heal Block,Psychic,Status,15,15,100 +378,Wring Out,Normal,Special,5,5,100 +379,Power Trick,Psychic,Status,10,10,100 +380,Gastro Acid,Poison,Status,10,10,100 +381,Lucky Chant,Normal,Status,30,30,100 +382,Me First,Normal,Status,20,20,100 +383,Copycat,Normal,Status,20,20,100 +384,Power Swap,Psychic,Status,10,10,100 +385,Guard Swap,Psychic,Status,10,10,100 +386,Punishment,Dark,Physical,5,5,100 +387,Last Resort,Normal,Physical,5,5,100 +388,Worry Seed,Grass,Status,10,10,100 +389,Sucker Punch,Dark,Physical,5,5,100 +390,Toxic Spikes,Poison,Status,20,20,100 +391,Heart Swap,Psychic,Status,10,10,100 +392,Aqua Ring,Water,Status,20,20,100 +393,Magnet Rise,Electric,Status,10,10,100 +394,Flare Blitz,Fire,Physical,15,15,100 +395,Force Palm,Fighting,Physical,10,10,100 +396,Aura Sphere,Fighting,Special,20,20,100 +397,Rock Polish,Rock,Status,20,20,100 +398,Poison Jab,Poison,Physical,20,20,100 +399,Dark Pulse,Dark,Special,15,15,100 +400,Night Slash,Dark,Physical,15,15,100 +401,Aqua Tail,Water,Physical,10,10,90 +402,Seed Bomb,Grass,Physical,15,15,100 +403,Air Slash,Flying,Special,15,15,95 +404,X-Scissor,Bug,Physical,15,15,100 +405,Bug Buzz,Bug,Special,10,10,100 +406,Dragon Pulse,Dragon,Special,10,10,100 +407,Dragon Rush,Dragon,Physical,10,10,75 +408,Power Gem,Rock,Special,20,20,100 +409,Drain Punch,Fighting,Physical,10,10,100 +410,Vacuum Wave,Fighting,Special,30,30,100 +411,Focus Blast,Fighting,Special,5,5,70 +412,Energy Ball,Grass,Special,10,10,100 +413,Brave Bird,Flying,Physical,15,15,100 +414,Earth Power,Ground,Special,10,10,100 +415,Switcheroo,Dark,Status,10,10,100 +416,Giga Impact,Normal,Physical,5,5,90 +417,Nasty Plot,Dark,Status,20,20,100 +418,Bullet Punch,Steel,Physical,30,30,100 +419,Avalanche,Ice,Physical,10,10,100 +420,Ice Shard,Ice,Physical,30,30,100 +421,Shadow Claw,Ghost,Physical,15,15,100 +422,Thunder Fang,Electric,Physical,15,15,95 +423,Ice Fang,Ice,Physical,15,15,95 +424,Fire Fang,Fire,Physical,15,15,95 +425,Shadow Sneak,Ghost,Physical,30,30,100 +426,Mud Bomb,Ground,Special,10,10,85 +427,Psycho Cut,Psychic,Physical,20,20,100 +428,Zen Headbutt,Psychic,Physical,15,15,90 +429,Mirror Shot,Steel,Special,10,10,85 +430,Flash Cannon,Steel,Special,10,10,100 +431,Rock Climb,Normal,Physical,20,20,85 +432,Defog,Flying,Status,15,15,100 +433,Trick Room,Psychic,Status,5,5,100 +434,Draco Meteor,Dragon,Special,5,5,90 +435,Discharge,Electric,Special,15,15,100 +436,Lava Plume,Fire,Special,15,15,100 +437,Leaf Storm,Grass,Special,5,5,90 +438,Power Whip,Grass,Physical,10,10,85 +439,Rock Wrecker,Rock,Physical,5,5,90 +440,Cross Poison,Poison,Physical,20,20,100 +441,Gunk Shot,Poison,Physical,5,5,80 +442,Iron Head,Steel,Physical,15,15,100 +443,Magnet Bomb,Steel,Physical,20,20,100 +444,Stone Edge,Rock,Physical,5,5,80 +445,Captivate,Normal,Status,20,20,100 +446,Stealth Rock,Rock,Status,20,20,100 +447,Grass Knot,Grass,Special,20,20,100 +448,Chatter,Flying,Special,20,20,100 +449,Judgment,Normal,Special,10,10,100 +450,Bug Bite,Bug,Physical,20,20,100 +451,Charge Beam,Electric,Special,10,10,90 +452,Wood Hammer,Grass,Physical,15,15,100 +453,Aqua Jet,Water,Physical,20,20,100 +454,Attack Order,Bug,Physical,15,15,100 +455,Defend Order,Bug,Status,10,10,100 +456,Heal Order,Bug,Status,10,10,100 +457,Head Smash,Rock,Physical,5,5,80 +458,Double Hit,Normal,Physical,10,10,90 +459,Roar of Time,Dragon,Special,5,5,90 +460,Spacial Rend,Dragon,Special,5,5,95 +461,Lunar Dance,Psychic,Status,10,10,100 +462,Crush Grip,Normal,Physical,5,5,100 +463,Magma Storm,Fire,Special,5,5,75 +464,Dark Void,Dark,Status,10,10,80 +465,Seed Flare,Grass,Special,5,5,85 +466,Ominous Wind,Ghost,Special,5,5,100 +467,Shadow Force,Ghost,Physical,5,5,100 +468,Hone Claws,Dark,Status,15,15,100 +469,Wide Guard,Rock,Status,10,10,100 +470,Guard Split,Psychic,Status,10,10,100 +471,Power Split,Psychic,Status,10,10,100 +472,Wonder Room,Psychic,Status,10,10,100 +473,Psyshock,Psychic,Special,10,10,100 +474,Venoshock,Poison,Special,10,10,100 +475,Autotomize,Steel,Status,15,15,100 +476,Rage Powder,Bug,Status,20,20,100 +477,Telekinesis,Psychic,Status,15,15,100 +478,Magic Room,Psychic,Status,10,10,100 +479,Smack Down,Rock,Physical,15,15,100 +480,Storm Throw,Fighting,Physical,10,10,100 +481,Flame Burst,Fire,Special,15,15,100 +482,Sludge Wave,Poison,Special,10,10,100 +483,Quiver Dance,Bug,Status,20,20,100 +484,Heavy Slam,Steel,Physical,10,10,100 +485,Synchronoise,Psychic,Special,15,15,100 +486,Electro Ball,Electric,Special,10,10,100 +487,Soak,Water,Status,20,20,100 +488,Flame Charge,Fire,Physical,20,20,100 +489,Coil,Poison,Status,20,20,100 +490,Low Sweep,Fighting,Physical,20,20,100 +491,Acid Spray,Poison,Special,20,20,100 +492,Foul Play,Dark,Physical,15,15,100 +493,Simple Beam,Normal,Status,15,15,100 +494,Entrainment,Normal,Status,15,15,100 +495,After You,Normal,Status,15,15,100 +496,Round,Normal,Special,15,15,100 +497,Echoed Voice,Normal,Special,15,15,100 +498,Chip Away,Normal,Physical,20,20,100 +499,Clear Smog,Poison,Special,15,15,100 +500,Stored Power,Psychic,Special,10,10,100 +501,Quick Guard,Fighting,Status,15,15,100 +502,Ally Switch,Psychic,Status,15,15,100 +503,Scald,Water,Special,15,15,100 +504,Shell Smash,Normal,Status,15,15,100 +505,Heal Pulse,Psychic,Status,10,10,100 +506,Hex,Ghost,Special,10,10,100 +507,Sky Drop,Flying,Physical,10,10,100 +508,Shift Gear,Steel,Status,10,10,100 +509,Circle Throw,Fighting,Physical,10,10,90 +510,Incinerate,Fire,Special,15,15,100 +511,Quash,Dark,Status,15,15,100 +512,Acrobatics,Flying,Physical,15,15,100 +513,Reflect Type,Normal,Status,15,15,100 +514,Retaliate,Normal,Physical,5,5,100 +515,Final Gambit,Fighting,Special,5,5,100 +516,Bestow,Normal,Status,15,15,100 +517,Inferno,Fire,Special,5,5,50 +518,Water Pledge,Water,Special,10,10,100 +519,Fire Pledge,Fire,Special,10,10,100 +520,Grass Pledge,Grass,Special,10,10,100 +521,Volt Switch,Electric,Special,20,20,100 +522,Struggle Bug,Bug,Special,20,20,100 +523,Bulldoze,Ground,Physical,20,20,100 +524,Frost Breath,Ice,Special,10,10,90 +525,Dragon Tail,Dragon,Physical,10,10,90 +526,Work Up,Normal,Status,30,30,100 +527,Electroweb,Electric,Special,15,15,95 +528,Wild Charge,Electric,Physical,15,15,100 +529,Drill Run,Ground,Physical,10,10,95 +530,Dual Chop,Dragon,Physical,15,15,90 +531,Heart Stamp,Psychic,Physical,25,25,100 +532,Horn Leech,Grass,Physical,10,10,100 +533,Sacred Sword,Fighting,Physical,15,15,100 +534,Razor Shell,Water,Physical,10,10,95 +535,Heat Crash,Fire,Physical,10,10,100 +536,Leaf Tornado,Grass,Special,10,10,90 +537,Steamroller,Bug,Physical,20,20,100 +538,Cotton Guard,Grass,Status,10,10,100 +539,Night Daze,Dark,Special,10,10,95 +540,Psystrike,Psychic,Special,10,10,100 +541,Tail Slap,Normal,Physical,10,10,85 +542,Hurricane,Flying,Special,10,10,70 +543,Head Charge,Normal,Physical,15,15,100 +544,Gear Grind,Steel,Physical,15,15,85 +545,Searing Shot,Fire,Special,5,5,100 +546,Techno Blast,Normal,Special,5,5,100 +547,Relic Song,Normal,Special,10,10,100 +548,Secret Sword,Fighting,Special,10,10,100 +549,Glaciate,Ice,Special,10,10,95 +550,Bolt Strike,Electric,Physical,5,5,85 +551,Blue Flare,Fire,Special,5,5,85 +552,Fiery Dance,Fire,Special,10,10,100 +553,Freeze Shock,Ice,Physical,5,5,90 +554,Ice Burn,Ice,Special,5,5,90 +555,Snarl,Dark,Special,15,15,95 +556,Icicle Crash,Ice,Physical,10,10,90 +557,V-create,Fire,Physical,5,5,95 +558,Fusion Flare,Fire,Special,5,5,100 +559,Fusion Bolt,Electric,Physical,5,5,100 +560,Flying Press,Fighting,Physical,10,10,95 +561,Mat Block,Fighting,Status,10,10,100 +562,Belch,Poison,Special,10,10,90 +563,Rototiller,Ground,Status,10,10,100 +564,Sticky Web,Bug,Status,20,20,100 +565,Fell Stinger,Bug,Physical,25,25,100 +566,Phantom Force,Ghost,Physical,10,10,100 +567,Trick-or-Treat,Ghost,Status,20,20,100 +568,Noble Roar,Normal,Status,30,30,100 +569,Ion Deluge,Electric,Status,25,25,100 +570,Parabolic Charge,Electric,Special,20,20,100 +571,Forest's Curse,Grass,Status,20,20,100 +572,Petal Blizzard,Grass,Physical,15,15,100 +573,Freeze-Dry,Ice,Special,20,20,100 +574,Disarming Voice,Fairy,Special,15,15,100 +575,Parting Shot,Dark,Status,20,20,100 +576,Topsy-Turvy,Dark,Status,20,20,100 +577,Draining Kiss,Fairy,Special,10,10,100 +578,Crafty Shield,Fairy,Status,10,10,100 +579,Flower Shield,Fairy,Status,10,10,100 +580,Grassy Terrain,Grass,Status,10,10,100 +581,Misty Terrain,Fairy,Status,10,10,100 +582,Electrify,Electric,Status,20,20,100 +583,Play Rough,Fairy,Physical,10,10,90 +584,Fairy Wind,Fairy,Special,30,30,100 +585,Moonblast,Fairy,Special,15,15,100 +586,Boomburst,Normal,Special,10,10,100 +587,Fairy Lock,Fairy,Status,10,10,100 +588,King's Shield,Steel,Status,10,10,100 +589,Play Nice,Normal,Status,20,20,100 +590,Confide,Normal,Status,20,20,100 +591,Diamond Storm,Rock,Physical,5,5,95 +592,Steam Eruption,Water,Special,5,5,95 +593,Hyperspace Hole,Psychic,Special,5,5,100 +594,Water Shuriken,Water,Physical,20,20,100 +595,Mystical Fire,Fire,Special,10,10,100 +596,Spiky Shield,Grass,Status,10,10,100 +597,Aromatic Mist,Fairy,Status,20,20,100 +598,Eerie Impulse,Electric,Status,15,15,100 +599,Venom Drench,Poison,Status,20,20,100 +600,Powder,Bug,Status,20,20,100 +601,Geomancy,Fairy,Status,10,10,100 +602,Magnetic Flux,Electric,Status,20,20,100 +603,Happy Hour,Normal,Status,30,30,100 +604,Electric Terrain,Electric,Status,10,10,100 +605,Dazzling Gleam,Fairy,Special,10,10,100 +606,Celebrate,Normal,Status,40,40,100 +607,Hold Hands,Normal,Status,40,40,100 +608,Baby-Doll Eyes,Fairy,Status,30,30,100 +609,Nuzzle,Electric,Physical,20,20,100 +610,Hold Back,Normal,Physical,40,40,100 +611,Infestation,Bug,Special,20,20,100 +612,Power-Up Punch,Fighting,Physical,20,20,100 +613,Oblivion Wing,Flying,Special,10,10,100 +614,Thousand Arrows,Ground,Physical,10,10,100 +615,Thousand Waves,Ground,Physical,10,10,100 +616,Land's Wrath,Ground,Physical,10,10,100 +617,Light of Ruin,Fairy,Special,5,5,90 +618,Origin Pulse,Water,Special,10,10,85 +619,Precipice Blades,Ground,Physical,10,10,85 +620,Dragon Ascent,Flying,Physical,5,5,100 +621,Hyperspace Fury,Dark,Physical,5,5,100 diff --git a/src/data/pokemon.csv b/src/data/pokemon.csv new file mode 100644 index 0000000..2e5f64e --- /dev/null +++ b/src/data/pokemon.csv @@ -0,0 +1,748 @@ +1,Bulbasaur,45,49,49,65,65,45,318,0,0,0,0,0 +2,Ivysaur,60,62,63,80,80,60,405,0,0,0,0,0 +3,Venusaur,80,82,83,100,100,80,525,0,0,0,0,0 +4,Charmander,39,52,43,60,50,65,309,0,0,0,0,0 +5,Charmeleon,58,64,58,80,65,80,405,0,0,0,0,0 +6,Charizard,78,84,78,109,85,100,534,0,0,0,0,0 +7,Squirtle,44,48,65,50,64,43,314,67,396,406,330,323 +8,Wartortle,59,63,80,65,80,58,405,0,0,0,0,0 +9,Blastoise,79,83,100,85,105,78,530,0,0,0,0,0 +10,Caterpie,45,30,35,20,20,45,195,0,0,0,0,0 +11,Metapod,50,20,55,25,25,30,205,0,0,0,0,0 +12,Butterfree,60,45,50,90,80,70,395,0,0,0,0,0 +13,Weedle,40,35,30,20,20,50,195,0,0,0,0,0 +14,Kakuna,45,25,50,25,25,35,205,0,0,0,0,0 +15,Beedrill,65,90,40,45,80,75,395,0,0,0,0,0 +16,Pidgey,40,45,40,35,35,56,251,0,0,0,0,0 +17,Pidgeotto,63,60,55,50,50,71,349,0,0,0,0,0 +18,Pidgeot,83,80,75,70,70,101,479,0,0,0,0,0 +19,Rattata,30,56,35,25,35,72,253,0,0,0,0,0 +20,Raticate,55,81,60,50,70,97,413,0,0,0,0,0 +21,Spearow,40,60,30,31,31,70,262,0,0,0,0,0 +22,Fearow,65,90,65,61,61,100,442,0,0,0,0,0 +23,Ekans,35,60,44,40,54,55,288,0,0,0,0,0 +24,Arbok,60,85,69,65,79,80,438,0,0,0,0,0 +25,Pikachu,35,55,40,50,50,90,320,0,0,0,0,0 +26,Raichu,60,90,55,90,80,110,485,0,0,0,0,0 +27,Sandshrew,50,75,85,20,30,40,300,0,0,0,0,0 +28,Sandslash,75,100,110,45,55,65,450,0,0,0,0,0 +29,Nidoranâ F,55,47,52,40,40,41,275,0,0,0,0,0 +30,Nidorina,70,62,67,55,55,56,365,0,0,0,0,0 +31,Nidoqueen,90,92,87,75,85,76,505,0,0,0,0,0 +32,Nidoranâ M,46,57,40,40,40,50,273,0,0,0,0,0 +33,Nidorino,61,72,57,55,55,65,365,0,0,0,0,0 +34,Nidoking,81,102,77,85,75,85,505,0,0,0,0,0 +35,Clefairy,70,45,48,60,65,35,323,0,0,0,0,0 +36,Clefable,95,70,73,95,90,60,483,0,0,0,0,0 +37,Vulpix,38,41,40,50,65,65,299,0,0,0,0,0 +38,Ninetales,73,76,75,81,100,100,505,0,0,0,0,0 +39,Jigglypuff,115,45,20,45,25,20,270,0,0,0,0,0 +40,Wigglytuff,140,70,45,85,50,45,435,0,0,0,0,0 +41,Zubat,40,45,35,30,40,55,245,0,0,0,0,0 +42,Golbat,75,80,70,65,75,90,455,0,0,0,0,0 +43,Oddish,45,50,55,75,65,30,320,0,0,0,0,0 +44,Gloom,60,65,70,85,75,40,395,0,0,0,0,0 +45,Vileplume,75,80,85,110,90,50,490,0,0,0,0,0 +46,Paras,35,70,55,45,55,25,285,0,0,0,0,0 +47,Parasect,60,95,80,60,80,30,405,0,0,0,0,0 +48,Venonat,60,55,50,40,55,45,305,0,0,0,0,0 +49,Venomoth,70,65,60,90,75,90,450,0,0,0,0,0 +50,Diglett,10,55,25,35,45,95,265,0,0,0,0,0 +51,Dugtrio,35,80,50,50,70,120,405,0,0,0,0,0 +52,Meowth,40,45,35,40,40,90,290,0,0,0,0,0 +53,Persian,65,70,60,65,65,115,440,0,0,0,0,0 +54,Psyduck,50,52,48,65,50,55,320,0,0,0,0,0 +55,Golduck,80,82,78,95,80,85,500,0,0,0,0,0 +56,Mankey,40,80,35,35,45,70,305,0,0,0,0,0 +57,Primeape,65,105,60,60,70,95,455,0,0,0,0,0 +58,Growlithe,55,70,45,70,50,60,350,0,0,0,0,0 +59,Arcanine,90,110,80,100,80,95,555,0,0,0,0,0 +60,Poliwag,40,50,40,40,40,90,300,0,0,0,0,0 +61,Poliwhirl,65,65,65,50,50,90,385,0,0,0,0,0 +62,Poliwrath,90,95,95,70,90,70,510,0,0,0,0,0 +63,Abra,25,20,15,105,55,90,310,0,0,0,0,0 +64,Kadabra,40,35,30,120,70,105,400,0,0,0,0,0 +65,Alakazam,55,50,45,135,95,120,500,0,0,0,0,0 +66,Machop,70,80,50,35,35,35,305,0,0,0,0,0 +67,Machoke,80,100,70,50,60,45,405,0,0,0,0,0 +68,Machamp,90,130,80,65,85,55,505,0,0,0,0,0 +69,Bellsprout,50,75,35,70,30,40,300,0,0,0,0,0 +70,Weepinbell,65,90,50,85,45,55,390,0,0,0,0,0 +71,Victreebel,80,105,65,100,70,70,490,0,0,0,0,0 +72,Tentacool,40,40,35,50,100,70,335,0,0,0,0,0 +73,Tentacruel,80,70,65,80,120,100,515,0,0,0,0,0 +74,Geodude,40,80,100,30,30,20,300,0,0,0,0,0 +75,Graveler,55,95,115,45,45,35,390,0,0,0,0,0 +76,Golem,80,120,130,55,65,45,495,0,0,0,0,0 +77,Ponyta,50,85,55,65,65,90,410,0,0,0,0,0 +78,Rapidash,65,100,70,80,80,105,500,0,0,0,0,0 +79,Slowpoke,90,65,65,40,40,15,315,0,0,0,0,0 +80,Slowbro,95,75,110,100,80,30,490,0,0,0,0,0 +81,Magnemite,25,35,70,95,55,45,325,0,0,0,0,0 +82,Magneton,50,60,95,120,70,70,465,0,0,0,0,0 +83,Farfetch'd,52,65,55,58,62,60,352,0,0,0,0,0 +84,Doduo,35,85,45,35,35,75,310,0,0,0,0,0 +85,Dodrio,60,110,70,60,60,100,460,0,0,0,0,0 +86,Seel,65,45,55,45,70,45,325,0,0,0,0,0 +87,Dewgong,90,70,80,70,95,70,475,0,0,0,0,0 +88,Grimer,80,80,50,40,50,25,325,0,0,0,0,0 +89,Muk,105,105,75,65,100,50,500,0,0,0,0,0 +90,Shellder,30,65,100,45,25,40,305,0,0,0,0,0 +91,Cloyster,50,95,180,85,45,70,525,0,0,0,0,0 +92,Gastly,30,35,30,100,35,80,310,0,0,0,0,0 +93,Haunter,45,50,45,115,55,95,405,0,0,0,0,0 +94,Gengar,60,65,60,130,75,110,500,0,0,0,0,0 +95,Onix,35,45,160,30,45,70,385,0,0,0,0,0 +96,Drowzee,60,48,45,43,90,42,328,0,0,0,0,0 +97,Hypno,85,73,70,73,115,67,483,0,0,0,0,0 +98,Krabby,30,105,90,25,25,50,325,0,0,0,0,0 +99,Kingler,55,130,115,50,50,75,475,0,0,0,0,0 +100,Voltorb,40,30,50,55,55,100,330,0,0,0,0,0 +101,Electrode,60,50,70,80,80,140,480,0,0,0,0,0 +102,Exeggcute,60,40,80,60,45,40,325,0,0,0,0,0 +103,Exeggutor,95,95,85,125,65,55,520,0,0,0,0,0 +104,Cubone,50,50,95,40,50,35,320,0,0,0,0,0 +105,Marowak,60,80,110,50,80,45,425,0,0,0,0,0 +106,Hitmonlee,50,120,53,35,110,87,455,0,0,0,0,0 +107,Hitmonchan,50,105,79,35,110,76,455,0,0,0,0,0 +108,Lickitung,90,55,75,60,75,30,385,0,0,0,0,0 +109,Koffing,40,65,95,60,45,35,340,0,0,0,0,0 +110,Weezing,65,90,120,85,70,60,490,0,0,0,0,0 +111,Rhyhorn,80,85,95,30,30,25,345,0,0,0,0,0 +112,Rhydon,105,130,120,45,45,40,485,0,0,0,0,0 +113,Chansey,250,5,5,35,105,50,450,0,0,0,0,0 +114,Tangela,65,55,115,100,40,60,435,0,0,0,0,0 +115,Kangaskhan,105,95,80,40,80,90,490,0,0,0,0,0 +116,Horsea,30,40,70,70,25,60,295,0,0,0,0,0 +117,Seadra,55,65,95,95,45,85,440,0,0,0,0,0 +118,Goldeen,45,67,60,35,50,63,320,0,0,0,0,0 +119,Seaking,80,92,65,65,80,68,450,0,0,0,0,0 +120,Staryu,30,45,55,70,55,85,340,0,0,0,0,0 +121,Starmie,60,75,85,100,85,115,520,0,0,0,0,0 +122,Mr. Mime,40,45,65,100,120,90,460,0,0,0,0,0 +123,Scyther,70,110,80,55,80,105,500,0,0,0,0,0 +124,Jynx,65,50,35,115,95,95,455,0,0,0,0,0 +125,Electabuzz,65,83,57,95,85,105,490,0,0,0,0,0 +126,Magmar,65,95,57,100,85,93,495,0,0,0,0,0 +127,Pinsir,65,125,100,55,70,85,500,0,0,0,0,0 +128,Tauros,75,100,95,40,70,110,490,0,0,0,0,0 +129,Magikarp,20,10,55,15,20,80,200,0,0,0,0,0 +130,Gyarados,95,125,79,60,100,81,540,0,0,0,0,0 +131,Lapras,130,85,80,85,95,60,535,0,0,0,0,0 +132,Ditto,48,48,48,48,48,48,288,0,0,0,0,0 +133,Eevee,55,55,50,45,65,55,325,0,0,0,0,0 +134,Vaporeon,130,65,60,110,95,65,525,0,0,0,0,0 +135,Jolteon,65,65,60,110,95,130,525,0,0,0,0,0 +136,Flareon,65,130,60,95,110,65,525,0,0,0,0,0 +137,Porygon,65,60,70,85,75,40,395,0,0,0,0,0 +138,Omanyte,35,40,100,90,55,35,355,0,0,0,0,0 +139,Omastar,70,60,125,115,70,55,495,0,0,0,0,0 +140,Kabuto,30,80,90,55,45,55,355,0,0,0,0,0 +141,Kabutops,60,115,105,65,70,80,495,0,0,0,0,0 +142,Aerodactyl,80,105,65,60,75,130,515,0,0,0,0,0 +143,Snorlax,160,110,65,65,110,30,540,0,0,0,0,0 +144,Articuno,90,85,100,95,125,85,580,0,0,0,0,0 +145,Zapdos,90,90,85,125,90,100,580,0,0,0,0,0 +146,Moltres,90,100,90,125,85,90,580,0,0,0,0,0 +147,Dratini,41,64,45,50,50,50,300,0,0,0,0,0 +148,Dragonair,61,84,65,70,70,70,420,0,0,0,0,0 +149,Dragonite,91,134,95,100,100,80,600,0,0,0,0,0 +150,Mewtwo,106,110,90,154,90,130,680,0,0,0,0,0 +151,Mew,100,100,100,100,100,100,600,0,0,0,0,0 +152,Chikorita,45,49,65,49,65,45,318,0,0,0,0,0 +153,Bayleef,60,62,80,63,80,60,405,0,0,0,0,0 +154,Meganium,80,82,100,83,100,80,525,0,0,0,0,0 +155,Cyndaquil,39,52,43,60,50,65,309,0,0,0,0,0 +156,Quilava,58,64,58,80,65,80,405,0,0,0,0,0 +157,Typhlosion,78,84,78,109,85,100,534,0,0,0,0,0 +158,Totodile,50,65,64,44,48,43,314,0,0,0,0,0 +159,Croconaw,65,80,80,59,63,58,405,0,0,0,0,0 +160,Feraligatr,85,105,100,79,83,78,530,0,0,0,0,0 +161,Sentret,35,46,34,35,45,20,215,0,0,0,0,0 +162,Furret,85,76,64,45,55,90,415,0,0,0,0,0 +163,Hoothoot,60,30,30,36,56,50,262,0,0,0,0,0 +164,Noctowl,100,50,50,76,96,70,442,0,0,0,0,0 +165,Ledyba,40,20,30,40,80,55,265,0,0,0,0,0 +166,Ledian,55,35,50,55,110,85,390,0,0,0,0,0 +167,Spinarak,40,60,40,40,40,30,250,0,0,0,0,0 +168,Ariados,70,90,70,60,60,40,390,0,0,0,0,0 +169,Crobat,85,90,80,70,80,130,535,0,0,0,0,0 +170,Chinchou,75,38,38,56,56,67,330,0,0,0,0,0 +171,Lanturn,125,58,58,76,76,67,460,0,0,0,0,0 +172,Pichu,20,40,15,35,35,60,205,0,0,0,0,0 +173,Cleffa,50,25,28,45,55,15,218,0,0,0,0,0 +174,Igglybuff,90,30,15,40,20,15,210,0,0,0,0,0 +175,Togepi,35,20,65,40,65,20,245,0,0,0,0,0 +176,Togetic,55,40,85,80,105,40,405,0,0,0,0,0 +177,Natu,40,50,45,70,45,70,320,0,0,0,0,0 +178,Xatu,65,75,70,95,70,95,470,0,0,0,0,0 +179,Mareep,55,40,40,65,45,35,280,0,0,0,0,0 +180,Flaaffy,70,55,55,80,60,45,365,0,0,0,0,0 +181,Ampharos,90,75,85,115,90,55,510,0,0,0,0,0 +182,Bellossom,75,80,95,90,100,50,490,0,0,0,0,0 +183,Marill,70,20,50,20,50,40,250,0,0,0,0,0 +184,Azumarill,100,50,80,60,80,50,420,0,0,0,0,0 +185,Sudowoodo,70,100,115,30,65,30,410,0,0,0,0,0 +186,Politoed,90,75,75,90,100,70,500,0,0,0,0,0 +187,Hoppip,35,35,40,35,55,50,250,0,0,0,0,0 +188,Skiploom,55,45,50,45,65,80,340,0,0,0,0,0 +189,Jumpluff,75,55,70,55,95,110,460,0,0,0,0,0 +190,Aipom,55,70,55,40,55,85,360,0,0,0,0,0 +191,Sunkern,30,30,30,30,30,30,180,0,0,0,0,0 +192,Sunflora,75,75,55,105,85,30,425,0,0,0,0,0 +193,Yanma,65,65,45,75,45,95,390,0,0,0,0,0 +194,Wooper,55,45,45,25,25,15,210,0,0,0,0,0 +195,Quagsire,95,85,85,65,65,35,430,0,0,0,0,0 +196,Espeon,65,65,60,130,95,110,525,0,0,0,0,0 +197,Umbreon,95,65,110,60,130,65,525,0,0,0,0,0 +198,Murkrow,60,85,42,85,42,91,405,0,0,0,0,0 +199,Slowking,95,75,80,100,110,30,490,0,0,0,0,0 +200,Misdreavus,60,60,60,85,85,85,435,0,0,0,0,0 +201,Unown,48,72,48,72,48,48,336,0,0,0,0,0 +202,Wobbuffet,190,33,58,33,58,33,405,0,0,0,0,0 +203,Girafarig,70,80,65,90,65,85,455,0,0,0,0,0 +204,Pineco,50,65,90,35,35,15,290,0,0,0,0,0 +205,Forretress,75,90,140,60,60,40,465,0,0,0,0,0 +206,Dunsparce,100,70,70,65,65,45,415,0,0,0,0,0 +207,Gligar,65,75,105,35,65,85,430,0,0,0,0,0 +208,Steelix,75,85,200,55,65,30,510,0,0,0,0,0 +209,Snubbull,60,80,50,40,40,30,300,0,0,0,0,0 +210,Granbull,90,120,75,60,60,45,450,0,0,0,0,0 +211,Qwilfish,65,95,75,55,55,85,430,0,0,0,0,0 +212,Scizor,70,130,100,55,80,65,500,0,0,0,0,0 +213,Shuckle,20,10,230,10,230,5,505,0,0,0,0,0 +214,Heracross,80,125,75,40,95,85,500,0,0,0,0,0 +215,Sneasel,55,95,55,35,75,115,430,0,0,0,0,0 +216,Teddiursa,60,80,50,50,50,40,330,0,0,0,0,0 +217,Ursaring,90,130,75,75,75,55,500,0,0,0,0,0 +218,Slugma,40,40,40,70,40,20,250,0,0,0,0,0 +219,Magcargo,50,50,120,80,80,30,410,0,0,0,0,0 +220,Swinub,50,50,40,30,30,50,250,0,0,0,0,0 +221,Piloswine,100,100,80,60,60,50,450,0,0,0,0,0 +222,Corsola,55,55,85,65,85,35,380,0,0,0,0,0 +223,Remoraid,35,65,35,65,35,65,300,0,0,0,0,0 +224,Octillery,75,105,75,105,75,45,480,0,0,0,0,0 +225,Delibird,45,55,45,65,45,75,330,0,0,0,0,0 +226,Mantine,65,40,70,80,140,70,465,0,0,0,0,0 +227,Skarmory,65,80,140,40,70,70,465,0,0,0,0,0 +228,Houndour,45,60,30,80,50,65,330,0,0,0,0,0 +229,Houndoom,75,90,50,110,80,95,500,0,0,0,0,0 +230,Kingdra,75,95,95,95,95,85,540,0,0,0,0,0 +231,Phanpy,90,60,60,40,40,40,330,0,0,0,0,0 +232,Donphan,90,120,120,60,60,50,500,0,0,0,0,0 +233,Porygon2,85,80,90,105,95,60,515,0,0,0,0,0 +234,Stantler,73,95,62,85,65,85,465,0,0,0,0,0 +235,Smeargle,55,20,35,20,45,75,250,0,0,0,0,0 +236,Tyrogue,35,35,35,35,35,35,210,0,0,0,0,0 +237,Hitmontop,50,95,95,35,110,70,455,0,0,0,0,0 +238,Smoochum,45,30,15,85,65,65,305,0,0,0,0,0 +239,Elekid,45,63,37,65,55,95,360,0,0,0,0,0 +240,Magby,45,75,37,70,55,83,365,0,0,0,0,0 +241,Miltank,95,80,105,40,70,100,490,0,0,0,0,0 +242,Blissey,255,10,10,75,135,55,540,0,0,0,0,0 +243,Raikou,90,85,75,115,100,115,580,0,0,0,0,0 +244,Entei,115,115,85,90,75,100,580,0,0,0,0,0 +245,Suicune,100,75,115,90,115,85,580,0,0,0,0,0 +246,Larvitar,50,64,50,45,50,41,300,0,0,0,0,0 +247,Pupitar,70,84,70,65,70,51,410,0,0,0,0,0 +248,Tyranitar,100,134,110,95,100,61,600,0,0,0,0,0 +249,Lugia,106,90,130,90,154,110,680,0,0,0,0,0 +250,Ho-Oh,106,130,90,110,154,90,680,0,0,0,0,0 +251,Celebi,100,100,100,100,100,100,600,0,0,0,0,0 +252,Treecko,40,45,35,65,55,70,310,0,0,0,0,0 +253,Grovyle,50,65,45,85,65,95,405,0,0,0,0,0 +254,Sceptile,70,85,65,105,85,120,530,0,0,0,0,0 +255,Torchic,45,60,40,70,50,45,310,0,0,0,0,0 +256,Combusken,60,85,60,85,60,55,405,0,0,0,0,0 +257,Blaziken,80,120,70,110,70,80,530,0,0,0,0,0 +258,Mudkip,50,70,50,50,50,40,310,0,0,0,0,0 +259,Marshtomp,70,85,70,60,70,50,405,0,0,0,0,0 +260,Swampert,100,110,90,85,90,60,535,0,0,0,0,0 +261,Poochyena,35,55,35,30,30,35,220,0,0,0,0,0 +262,Mightyena,70,90,70,60,60,70,420,0,0,0,0,0 +263,Zigzagoon,38,30,41,30,41,60,240,0,0,0,0,0 +264,Linoone,78,70,61,50,61,100,420,0,0,0,0,0 +265,Wurmple,45,45,35,20,30,20,195,0,0,0,0,0 +266,Silcoon,50,35,55,25,25,15,205,0,0,0,0,0 +267,Beautifly,60,70,50,100,50,65,395,0,0,0,0,0 +268,Cascoon,50,35,55,25,25,15,205,0,0,0,0,0 +269,Dustox,60,50,70,50,90,65,385,0,0,0,0,0 +270,Lotad,40,30,30,40,50,30,220,0,0,0,0,0 +271,Lombre,60,50,50,60,70,50,340,0,0,0,0,0 +272,Ludicolo,80,70,70,90,100,70,480,0,0,0,0,0 +273,Seedot,40,40,50,30,30,30,220,0,0,0,0,0 +274,Nuzleaf,70,70,40,60,40,60,340,0,0,0,0,0 +275,Shiftry,90,100,60,90,60,80,480,0,0,0,0,0 +276,Taillow,40,55,30,30,30,85,270,0,0,0,0,0 +277,Swellow,60,85,60,50,50,125,430,0,0,0,0,0 +278,Wingull,40,30,30,55,30,85,270,0,0,0,0,0 +279,Pelipper,60,50,100,85,70,65,430,0,0,0,0,0 +280,Ralts,28,25,25,45,35,40,198,0,0,0,0,0 +281,Kirlia,38,35,35,65,55,50,278,0,0,0,0,0 +282,Gardevoir,68,65,65,125,115,80,518,0,0,0,0,0 +283,Surskit,40,30,32,50,52,65,269,0,0,0,0,0 +284,Masquerain,70,60,62,80,82,60,414,0,0,0,0,0 +285,Shroomish,60,40,60,40,60,35,295,0,0,0,0,0 +286,Breloom,60,130,80,60,60,70,460,0,0,0,0,0 +287,Slakoth,60,60,60,35,35,30,280,0,0,0,0,0 +288,Vigoroth,80,80,80,55,55,90,440,0,0,0,0,0 +289,Slaking,150,160,100,95,65,100,670,0,0,0,0,0 +290,Nincada,31,45,90,30,30,40,266,0,0,0,0,0 +291,Ninjask,61,90,45,50,50,160,456,0,0,0,0,0 +292,Shedinja,1,90,45,30,30,40,236,0,0,0,0,0 +293,Whismur,64,51,23,51,23,28,240,0,0,0,0,0 +294,Loudred,84,71,43,71,43,48,360,0,0,0,0,0 +295,Exploud,104,91,63,91,73,68,490,0,0,0,0,0 +296,Makuhita,72,60,30,20,30,25,237,0,0,0,0,0 +297,Hariyama,144,120,60,40,60,50,474,0,0,0,0,0 +298,Azurill,50,20,40,20,40,20,190,0,0,0,0,0 +299,Nosepass,30,45,135,45,90,30,375,0,0,0,0,0 +300,Skitty,50,45,45,35,35,50,260,0,0,0,0,0 +301,Delcatty,70,65,65,55,55,70,380,0,0,0,0,0 +302,Sableye,50,75,75,65,65,50,380,0,0,0,0,0 +303,Mawile,50,85,85,55,55,50,380,0,0,0,0,0 +304,Aron,50,70,100,40,40,30,330,0,0,0,0,0 +305,Lairon,60,90,140,50,50,40,430,0,0,0,0,0 +306,Aggron,70,110,180,60,60,50,530,0,0,0,0,0 +307,Meditite,30,40,55,40,55,60,280,0,0,0,0,0 +308,Medicham,60,60,75,60,75,80,410,0,0,0,0,0 +309,Electrike,40,45,40,65,40,65,295,0,0,0,0,0 +310,Manectric,70,75,60,105,60,105,475,0,0,0,0,0 +311,Plusle,60,50,40,85,75,95,405,0,0,0,0,0 +312,Minun,60,40,50,75,85,95,405,0,0,0,0,0 +313,Volbeat,65,73,55,47,75,85,400,0,0,0,0,0 +314,Illumise,65,47,55,73,75,85,400,0,0,0,0,0 +315,Roselia,50,60,45,100,80,65,400,0,0,0,0,0 +316,Gulpin,70,43,53,43,53,40,302,0,0,0,0,0 +317,Swalot,100,73,83,73,83,55,467,0,0,0,0,0 +318,Carvanha,45,90,20,65,20,65,305,0,0,0,0,0 +319,Sharpedo,70,120,40,95,40,95,460,0,0,0,0,0 +320,Wailmer,130,70,35,70,35,60,400,0,0,0,0,0 +321,Wailord,170,90,45,90,45,60,500,0,0,0,0,0 +322,Numel,60,60,40,65,45,35,305,0,0,0,0,0 +323,Camerupt,70,100,70,105,75,40,460,0,0,0,0,0 +324,Torkoal,70,85,140,85,70,20,470,0,0,0,0,0 +325,Spoink,60,25,35,70,80,60,330,0,0,0,0,0 +326,Grumpig,80,45,65,90,110,80,470,0,0,0,0,0 +327,Spinda,60,60,60,60,60,60,360,0,0,0,0,0 +328,Trapinch,45,100,45,45,45,10,290,0,0,0,0,0 +329,Vibrava,50,70,50,50,50,70,340,0,0,0,0,0 +330,Flygon,80,100,80,80,80,100,520,0,0,0,0,0 +331,Cacnea,50,85,40,85,40,35,335,0,0,0,0,0 +332,Cacturne,70,115,60,115,60,55,475,0,0,0,0,0 +333,Swablu,45,40,60,40,75,50,310,0,0,0,0,0 +334,Altaria,75,70,90,70,105,80,490,0,0,0,0,0 +335,Zangoose,73,115,60,60,60,90,458,0,0,0,0,0 +336,Seviper,73,100,60,100,60,65,458,0,0,0,0,0 +337,Lunatone,70,55,65,95,85,70,440,0,0,0,0,0 +338,Solrock,70,95,85,55,65,70,440,0,0,0,0,0 +339,Barboach,50,48,43,46,41,60,288,0,0,0,0,0 +340,Whiscash,110,78,73,76,71,60,468,0,0,0,0,0 +341,Corphish,43,80,65,50,35,35,308,0,0,0,0,0 +342,Crawdaunt,63,120,85,90,55,55,468,0,0,0,0,0 +343,Baltoy,40,40,55,40,70,55,300,0,0,0,0,0 +344,Claydol,60,70,105,70,120,75,500,0,0,0,0,0 +345,Lileep,66,41,77,61,87,23,355,0,0,0,0,0 +346,Cradily,86,81,97,81,107,43,495,0,0,0,0,0 +347,Anorith,45,95,50,40,50,75,355,0,0,0,0,0 +348,Armaldo,75,125,100,70,80,45,495,0,0,0,0,0 +349,Feebas,20,15,20,10,55,80,200,0,0,0,0,0 +350,Milotic,95,60,79,100,125,81,540,0,0,0,0,0 +351,Castform,70,70,70,70,70,70,420,0,0,0,0,0 +352,Kecleon,60,90,70,60,120,40,440,0,0,0,0,0 +353,Shuppet,44,75,35,63,33,45,295,0,0,0,0,0 +354,Banette,64,115,65,83,63,65,455,0,0,0,0,0 +355,Duskull,20,40,90,30,90,25,295,0,0,0,0,0 +356,Dusclops,40,70,130,60,130,25,455,0,0,0,0,0 +357,Tropius,99,68,83,72,87,51,460,0,0,0,0,0 +358,Chimecho,65,50,70,95,80,65,425,0,0,0,0,0 +359,Absol,65,130,60,75,60,75,465,0,0,0,0,0 +360,Wynaut,95,23,48,23,48,23,260,0,0,0,0,0 +361,Snorunt,50,50,50,50,50,50,300,0,0,0,0,0 +362,Glalie,80,80,80,80,80,80,480,0,0,0,0,0 +363,Spheal,70,40,50,55,50,25,290,0,0,0,0,0 +364,Sealeo,90,60,70,75,70,45,410,0,0,0,0,0 +365,Walrein,110,80,90,95,90,65,530,0,0,0,0,0 +366,Clamperl,35,64,85,74,55,32,345,0,0,0,0,0 +367,Huntail,55,104,105,94,75,52,485,0,0,0,0,0 +368,Gorebyss,55,84,105,114,75,52,485,0,0,0,0,0 +369,Relicanth,100,90,130,45,65,55,485,0,0,0,0,0 +370,Luvdisc,43,30,55,40,65,97,330,0,0,0,0,0 +371,Bagon,45,75,60,40,30,50,300,0,0,0,0,0 +372,Shelgon,65,95,100,60,50,50,420,0,0,0,0,0 +373,Salamence,95,135,80,110,80,100,600,0,0,0,0,0 +374,Beldum,40,55,80,35,60,30,300,0,0,0,0,0 +375,Metang,60,75,100,55,80,50,420,0,0,0,0,0 +376,Metagross,80,135,130,95,90,70,600,0,0,0,0,0 +377,Regirock,80,100,200,50,100,50,580,0,0,0,0,0 +378,Regice,80,50,100,100,200,50,580,0,0,0,0,0 +379,Registeel,80,75,150,75,150,50,580,0,0,0,0,0 +380,Latias,80,80,90,110,130,110,600,0,0,0,0,0 +381,Latios,80,90,80,130,110,110,600,0,0,0,0,0 +382,Kyogre,100,100,90,150,140,90,670,0,0,0,0,0 +383,Groudon,100,150,140,100,90,90,670,0,0,0,0,0 +384,Rayquaza,105,150,90,150,90,95,680,0,0,0,0,0 +385,Jirachi,100,100,100,100,100,100,600,0,0,0,0,0 +386,Deoxys (Normal Forme),50,150,50,150,50,150,600,0,0,0,0,0 +386:01,Deoxys (Attack Forme),50,180,20,180,20,150,600,0,0,0,0,0 +386:02,Deoxys (Defense Forme),50,70,160,70,160,90,600,0,0,0,0,0 +386:03,Deoxys (Speed Forme),50,95,90,95,90,180,600,0,0,0,0,0 +387,Turtwig,55,68,64,45,55,31,318,0,0,0,0,0 +388,Grotle,75,89,85,55,65,36,405,0,0,0,0,0 +389,Torterra,95,109,105,75,85,56,525,0,0,0,0,0 +390,Chimchar,44,58,44,58,44,61,309,0,0,0,0,0 +391,Monferno,64,78,52,78,52,81,405,0,0,0,0,0 +392,Infernape,76,104,71,104,71,108,534,0,0,0,0,0 +393,Piplup,53,51,53,61,56,40,314,0,0,0,0,0 +394,Prinplup,64,66,68,81,76,50,405,0,0,0,0,0 +395,Empoleon,84,86,88,111,101,60,530,0,0,0,0,0 +396,Starly,40,55,30,30,30,60,245,0,0,0,0,0 +397,Staravia,55,75,50,40,40,80,340,0,0,0,0,0 +398,Staraptor,85,120,70,50,60,100,485,0,0,0,0,0 +399,Bidoof,59,45,40,35,40,31,250,0,0,0,0,0 +400,Bibarel,79,85,60,55,60,71,410,0,0,0,0,0 +401,Kricketot,37,25,41,25,41,25,194,0,0,0,0,0 +402,Kricketune,77,85,51,55,51,65,384,0,0,0,0,0 +403,Shinx,45,65,34,40,34,45,263,0,0,0,0,0 +404,Luxio,60,85,49,60,49,60,363,0,0,0,0,0 +405,Luxray,80,120,79,95,79,70,523,0,0,0,0,0 +406,Budew,40,30,35,50,70,55,280,0,0,0,0,0 +407,Roserade,60,70,65,125,105,90,515,0,0,0,0,0 +408,Cranidos,67,125,40,30,30,58,350,0,0,0,0,0 +409,Rampardos,97,165,60,65,50,58,495,0,0,0,0,0 +410,Shieldon,30,42,118,42,88,30,350,0,0,0,0,0 +411,Bastiodon,60,52,168,47,138,30,495,0,0,0,0,0 +412,Burmy,40,29,45,29,45,36,224,0,0,0,0,0 +413,Wormadam (Plant Cloak),60,59,85,79,105,36,424,0,0,0,0,0 +413:01,Wormadam (Sandy Cloak),60,79,105,59,85,36,424,0,0,0,0,0 +413:02,Wormadam (Trash Cloak),60,69,95,69,95,36,424,0,0,0,0,0 +414,Mothim,70,94,50,94,50,66,424,0,0,0,0,0 +415,Combee,30,30,42,30,42,70,244,0,0,0,0,0 +416,Vespiquen,70,80,102,80,102,40,474,0,0,0,0,0 +417,Pachirisu,60,45,70,45,90,95,405,0,0,0,0,0 +418,Buizel,55,65,35,60,30,85,330,0,0,0,0,0 +419,Floatzel,85,105,55,85,50,115,495,0,0,0,0,0 +420,Cherubi,45,35,45,62,53,35,275,0,0,0,0,0 +421,Cherrim,70,60,70,87,78,85,450,0,0,0,0,0 +422,Shellos,76,48,48,57,62,34,325,0,0,0,0,0 +423,Gastrodon,111,83,68,92,82,39,475,0,0,0,0,0 +424,Ambipom,75,100,66,60,66,115,482,0,0,0,0,0 +425,Drifloon,90,50,34,60,44,70,348,0,0,0,0,0 +426,Drifblim,150,80,44,90,54,80,498,0,0,0,0,0 +427,Buneary,55,66,44,44,56,85,350,0,0,0,0,0 +428,Lopunny,65,76,84,54,96,105,480,0,0,0,0,0 +429,Mismagius,60,60,60,105,105,105,495,0,0,0,0,0 +430,Honchkrow,100,125,52,105,52,71,505,0,0,0,0,0 +431,Glameow,49,55,42,42,37,85,310,0,0,0,0,0 +432,Purugly,71,82,64,64,59,112,452,0,0,0,0,0 +433,Chingling,45,30,50,65,50,45,285,0,0,0,0,0 +434,Stunky,63,63,47,41,41,74,329,0,0,0,0,0 +435,Skuntank,103,93,67,71,61,84,479,0,0,0,0,0 +436,Bronzor,57,24,86,24,86,23,300,0,0,0,0,0 +437,Bronzong,67,89,116,79,116,33,500,0,0,0,0,0 +438,Bonsly,50,80,95,10,45,10,290,0,0,0,0,0 +439,Mime Jr.,20,25,45,70,90,60,310,0,0,0,0,0 +440,Happiny,100,5,5,15,65,30,220,0,0,0,0,0 +441,Chatot,76,65,45,92,42,91,411,0,0,0,0,0 +442,Spiritomb,50,92,108,92,108,35,485,0,0,0,0,0 +443,Gible,58,70,45,40,45,42,300,0,0,0,0,0 +444,Gabite,68,90,65,50,55,82,410,0,0,0,0,0 +445,Garchomp,108,130,95,80,85,102,600,0,0,0,0,0 +446,Munchlax,135,85,40,40,85,5,390,0,0,0,0,0 +447,Riolu,40,70,40,35,40,60,285,0,0,0,0,0 +448,Lucario,70,110,70,115,70,90,525,0,0,0,0,0 +449,Hippopotas,68,72,78,38,42,32,330,0,0,0,0,0 +450,Hippowdon,108,112,118,68,72,47,525,0,0,0,0,0 +451,Skorupi,40,50,90,30,55,65,330,0,0,0,0,0 +452,Drapion,70,90,110,60,75,95,500,0,0,0,0,0 +453,Croagunk,48,61,40,61,40,50,300,0,0,0,0,0 +454,Toxicroak,83,106,65,86,65,85,490,0,0,0,0,0 +455,Carnivine,74,100,72,90,72,46,454,0,0,0,0,0 +456,Finneon,49,49,56,49,61,66,330,0,0,0,0,0 +457,Lumineon,69,69,76,69,86,91,460,0,0,0,0,0 +458,Mantyke,45,20,50,60,120,50,345,0,0,0,0,0 +459,Snover,60,62,50,62,60,40,334,0,0,0,0,0 +460,Abomasnow,90,92,75,92,85,60,494,0,0,0,0,0 +461,Weavile,70,120,65,45,85,125,510,0,0,0,0,0 +462,Magnezone,70,70,115,130,90,60,535,0,0,0,0,0 +463,Lickilicky,110,85,95,80,95,50,515,0,0,0,0,0 +464,Rhyperior,115,140,130,55,55,40,535,0,0,0,0,0 +465,Tangrowth,100,100,125,110,50,50,535,0,0,0,0,0 +466,Electivire,75,123,67,95,85,95,540,0,0,0,0,0 +467,Magmortar,75,95,67,125,95,83,540,0,0,0,0,0 +468,Togekiss,85,50,95,120,115,80,545,0,0,0,0,0 +469,Yanmega,86,76,86,116,56,95,515,0,0,0,0,0 +470,Leafeon,65,110,130,60,65,95,525,0,0,0,0,0 +471,Glaceon,65,60,110,130,95,65,525,0,0,0,0,0 +472,Gliscor,75,95,125,45,75,95,510,0,0,0,0,0 +473,Mamoswine,110,130,80,70,60,80,530,0,0,0,0,0 +474,Porygon-Z,85,80,70,135,75,90,535,0,0,0,0,0 +475,Gallade,68,125,65,65,115,80,518,0,0,0,0,0 +476,Probopass,60,55,145,75,150,40,525,0,0,0,0,0 +477,Dusknoir,45,100,135,65,135,45,525,0,0,0,0,0 +478,Froslass,70,80,70,80,70,110,480,0,0,0,0,0 +479,Rotom (Normal Rotom),50,50,77,95,77,91,440,0,0,0,0,0 +479:01,Rotom (Heat Rotom),50,65,107,105,107,86,520,0,0,0,0,0 +479:02,Rotom (Wash Rotom),50,65,107,105,107,86,520,0,0,0,0,0 +479:03,Rotom (Frost Rotom),50,65,107,105,107,86,520,0,0,0,0,0 +479:04,Rotom (Fan Rotom),50,65,107,105,107,86,520,0,0,0,0,0 +479:05,Rotom (Mow Rotom),50,65,107,105,107,86,520,0,0,0,0,0 +480,Uxie,75,75,130,75,130,95,580,0,0,0,0,0 +481,Mesprit,80,105,105,105,105,80,580,0,0,0,0,0 +482,Azelf,75,125,70,125,70,115,580,0,0,0,0,0 +483,Dialga,100,120,120,150,100,90,680,0,0,0,0,0 +484,Palkia,90,120,100,150,120,100,680,0,0,0,0,0 +485,Heatran,91,90,106,130,106,77,600,0,0,0,0,0 +486,Regigigas,110,160,110,80,110,100,670,0,0,0,0,0 +487,Giratina (Altered Forme),150,100,120,100,120,90,680,0,0,0,0,0 +487:01,Giratina (Origin Forme),150,120,100,120,100,90,680,0,0,0,0,0 +488,Cresselia,120,70,120,75,130,85,600,0,0,0,0,0 +489,Phione,80,80,80,80,80,80,480,0,0,0,0,0 +490,Manaphy,100,100,100,100,100,100,600,0,0,0,0,0 +491,Darkrai,70,90,90,135,90,125,600,0,0,0,0,0 +492,Shaymin (Land Forme),100,100,100,100,100,100,600,0,0,0,0,0 +492:01,Shaymin (Sky Forme),100,103,75,120,75,127,600,0,0,0,0,0 +493,Arceus,120,120,120,120,120,120,720,0,0,0,0,0 +494,Victini,100,100,100,100,100,100,600,0,0,0,0,0 +495,Snivy,45,45,55,45,55,63,308,0,0,0,0,0 +496,Servine,60,60,75,60,75,83,413,0,0,0,0,0 +497,Serperior,75,75,95,75,95,113,528,0,0,0,0,0 +498,Tepig,65,63,45,45,45,45,308,0,0,0,0,0 +499,Pignite,90,93,55,70,55,55,418,0,0,0,0,0 +500,Emboar,110,123,65,100,65,65,528,0,0,0,0,0 +501,Oshawott,55,55,45,63,45,45,308,0,0,0,0,0 +502,Dewott,75,75,60,83,60,60,413,0,0,0,0,0 +503,Samurott,95,100,85,108,70,70,528,0,0,0,0,0 +504,Patrat,45,55,39,35,39,42,255,0,0,0,0,0 +505,Watchog,60,85,69,60,69,77,420,0,0,0,0,0 +506,Lillipup,45,60,45,25,45,55,275,0,0,0,0,0 +507,Herdier,65,80,65,35,65,60,370,0,0,0,0,0 +508,Stoutland,85,110,90,45,90,80,500,0,0,0,0,0 +509,Purrloin,41,50,37,50,37,66,281,0,0,0,0,0 +510,Liepard,64,88,50,88,50,106,446,0,0,0,0,0 +511,Pansage,50,53,48,53,48,64,316,0,0,0,0,0 +512,Simisage,75,98,63,98,63,101,498,0,0,0,0,0 +513,Pansear,50,53,48,53,48,64,316,0,0,0,0,0 +514,Simisear,75,98,63,98,63,101,498,0,0,0,0,0 +515,Panpour,50,53,48,53,48,64,316,0,0,0,0,0 +516,Simipour,75,98,63,98,63,101,498,0,0,0,0,0 +517,Munna,76,25,45,67,55,24,292,0,0,0,0,0 +518,Musharna,116,55,85,107,95,29,487,0,0,0,0,0 +519,Pidove,50,55,50,36,30,43,264,0,0,0,0,0 +520,Tranquill,62,77,62,50,42,65,358,0,0,0,0,0 +521,Unfezant,80,115,80,65,55,93,488,0,0,0,0,0 +522,Blitzle,45,60,32,50,32,76,295,0,0,0,0,0 +523,Zebstrika,75,100,63,80,63,116,497,0,0,0,0,0 +524,Roggenrola,55,75,85,25,25,15,280,0,0,0,0,0 +525,Boldore,70,105,105,50,40,20,390,0,0,0,0,0 +526,Gigalith,85,135,130,60,80,25,515,0,0,0,0,0 +527,Woobat,55,45,43,55,43,72,313,0,0,0,0,0 +528,Swoobat,67,57,55,77,55,114,425,0,0,0,0,0 +529,Drilbur,60,85,40,30,45,68,328,0,0,0,0,0 +530,Excadrill,110,135,60,50,65,88,508,0,0,0,0,0 +531,Audino,103,60,86,60,86,50,445,0,0,0,0,0 +532,Timburr,75,80,55,25,35,35,305,0,0,0,0,0 +533,Gurdurr,85,105,85,40,50,40,405,0,0,0,0,0 +534,Conkeldurr,105,140,95,55,65,45,505,0,0,0,0,0 +535,Tympole,50,50,40,50,40,64,294,0,0,0,0,0 +536,Palpitoad,75,65,55,65,55,69,384,0,0,0,0,0 +537,Seismitoad,105,95,75,85,75,74,509,0,0,0,0,0 +538,Throh,120,100,85,30,85,45,465,0,0,0,0,0 +539,Sawk,75,125,75,30,75,85,465,0,0,0,0,0 +540,Sewaddle,45,53,70,40,60,42,310,0,0,0,0,0 +541,Swadloon,55,63,90,50,80,42,380,0,0,0,0,0 +542,Leavanny,75,103,80,70,80,92,500,0,0,0,0,0 +543,Venipede,30,45,59,30,39,57,260,0,0,0,0,0 +544,Whirlipede,40,55,99,40,79,47,360,0,0,0,0,0 +545,Scolipede,60,100,89,55,69,112,485,0,0,0,0,0 +546,Cottonee,40,27,60,37,50,66,280,0,0,0,0,0 +547,Whimsicott,60,67,85,77,75,116,480,0,0,0,0,0 +548,Petilil,45,35,50,70,50,30,280,0,0,0,0,0 +549,Lilligant,70,60,75,110,75,90,480,0,0,0,0,0 +550,Basculin,70,92,65,80,55,98,460,0,0,0,0,0 +551,Sandile,50,72,35,35,35,65,292,0,0,0,0,0 +552,Krokorok,60,82,45,45,45,74,351,0,0,0,0,0 +553,Krookodile,95,117,80,65,70,92,519,0,0,0,0,0 +554,Darumaka,70,90,45,15,45,50,315,0,0,0,0,0 +555,Darmanitan (Standard Mode),105,140,55,30,55,95,480,0,0,0,0,0 +555:01,Darmanitan (Zen Mode),105,30,105,140,105,55,540,0,0,0,0,0 +556,Maractus,75,86,67,106,67,60,461,0,0,0,0,0 +557,Dwebble,50,65,85,35,35,55,325,0,0,0,0,0 +558,Crustle,70,95,125,65,75,45,475,0,0,0,0,0 +559,Scraggy,50,75,70,35,70,48,348,0,0,0,0,0 +560,Scrafty,65,90,115,45,115,58,488,0,0,0,0,0 +561,Sigilyph,72,58,80,103,80,97,490,0,0,0,0,0 +562,Yamask,38,30,85,55,65,30,303,0,0,0,0,0 +563,Cofagrigus,58,50,145,95,105,30,483,0,0,0,0,0 +564,Tirtouga,54,78,103,53,45,22,355,0,0,0,0,0 +565,Carracosta,74,108,133,83,65,32,495,0,0,0,0,0 +566,Archen,55,112,45,74,45,70,401,0,0,0,0,0 +567,Archeops,75,140,65,112,65,110,567,0,0,0,0,0 +568,Trubbish,50,50,62,40,62,65,329,0,0,0,0,0 +569,Garbodor,80,95,82,60,82,75,474,0,0,0,0,0 +570,Zorua,40,65,40,80,40,65,330,0,0,0,0,0 +571,Zoroark,60,105,60,120,60,105,510,0,0,0,0,0 +572,Minccino,55,50,40,40,40,75,300,0,0,0,0,0 +573,Cinccino,75,95,60,65,60,115,470,0,0,0,0,0 +574,Gothita,45,30,50,55,65,45,290,0,0,0,0,0 +575,Gothorita,60,45,70,75,85,55,390,0,0,0,0,0 +576,Gothitelle,70,55,95,95,110,65,490,0,0,0,0,0 +577,Solosis,45,30,40,105,50,20,290,0,0,0,0,0 +578,Duosion,65,40,50,125,60,30,370,0,0,0,0,0 +579,Reuniclus,110,65,75,125,85,30,490,0,0,0,0,0 +580,Ducklett,62,44,50,44,50,55,305,0,0,0,0,0 +581,Swanna,75,87,63,87,63,98,473,0,0,0,0,0 +582,Vanillite,36,50,50,65,60,44,305,0,0,0,0,0 +583,Vanillish,51,65,65,80,75,59,395,0,0,0,0,0 +584,Vanilluxe,71,95,85,110,95,79,535,0,0,0,0,0 +585,Deerling,60,60,50,40,50,75,335,0,0,0,0,0 +586,Sawsbuck,80,100,70,60,70,95,475,0,0,0,0,0 +587,Emolga,55,75,60,75,60,103,428,0,0,0,0,0 +588,Karrablast,50,75,45,40,45,60,315,0,0,0,0,0 +589,Escavalier,70,135,105,60,105,20,495,0,0,0,0,0 +590,Foongus,69,55,45,55,55,15,294,0,0,0,0,0 +591,Amoonguss,114,85,70,85,80,30,464,0,0,0,0,0 +592,Frillish,55,40,50,65,85,40,335,0,0,0,0,0 +593,Jellicent,100,60,70,85,105,60,480,0,0,0,0,0 +594,Alomomola,165,75,80,40,45,65,470,0,0,0,0,0 +595,Joltik,50,47,50,57,50,65,319,0,0,0,0,0 +596,Galvantula,70,77,60,97,60,108,472,0,0,0,0,0 +597,Ferroseed,44,50,91,24,86,10,305,0,0,0,0,0 +598,Ferrothorn,74,94,131,54,116,20,489,0,0,0,0,0 +599,Klink,40,55,70,45,60,30,300,0,0,0,0,0 +600,Klang,60,80,95,70,85,50,440,0,0,0,0,0 +601,Klinklang,60,100,115,70,85,90,520,0,0,0,0,0 +602,Tynamo,35,55,40,45,40,60,275,0,0,0,0,0 +603,Eelektrik,65,85,70,75,70,40,405,0,0,0,0,0 +604,Eelektross,85,115,80,105,80,50,515,0,0,0,0,0 +605,Elgyem,55,55,55,85,55,30,335,0,0,0,0,0 +606,Beheeyem,75,75,75,125,95,40,485,0,0,0,0,0 +607,Litwick,50,30,55,65,55,20,275,0,0,0,0,0 +608,Lampent,60,40,60,95,60,55,370,0,0,0,0,0 +609,Chandelure,60,55,90,145,90,80,520,0,0,0,0,0 +610,Axew,46,87,60,30,40,57,320,0,0,0,0,0 +611,Fraxure,66,117,70,40,50,67,410,0,0,0,0,0 +612,Haxorus,76,147,90,60,70,97,540,0,0,0,0,0 +613,Cubchoo,55,70,40,60,40,40,305,0,0,0,0,0 +614,Beartic,95,110,80,70,80,50,485,0,0,0,0,0 +615,Cryogonal,70,50,30,95,135,105,485,0,0,0,0,0 +616,Shelmet,50,40,85,40,65,25,305,0,0,0,0,0 +617,Accelgor,80,70,40,100,60,145,495,0,0,0,0,0 +618,Stunfisk,109,66,84,81,99,32,471,0,0,0,0,0 +619,Mienfoo,45,85,50,55,50,65,350,0,0,0,0,0 +620,Mienshao,65,125,60,95,60,105,510,0,0,0,0,0 +621,Druddigon,77,120,90,60,90,48,485,0,0,0,0,0 +622,Golett,59,74,50,35,50,35,303,0,0,0,0,0 +623,Golurk,89,124,80,55,80,55,483,0,0,0,0,0 +624,Pawniard,45,85,70,40,40,60,340,0,0,0,0,0 +625,Bisharp,65,125,100,60,70,70,490,0,0,0,0,0 +626,Bouffalant,95,110,95,40,95,55,490,0,0,0,0,0 +627,Rufflet,70,83,50,37,50,60,350,0,0,0,0,0 +628,Braviary,100,123,75,57,75,80,510,0,0,0,0,0 +629,Vullaby,70,55,75,45,65,60,370,0,0,0,0,0 +630,Mandibuzz,110,65,105,55,95,80,510,0,0,0,0,0 +631,Heatmor,85,97,66,105,66,65,484,0,0,0,0,0 +632,Durant,58,109,112,48,48,109,484,0,0,0,0,0 +633,Deino,52,65,50,45,50,38,300,0,0,0,0,0 +634,Zweilous,72,85,70,65,70,58,420,0,0,0,0,0 +635,Hydreigon,92,105,90,125,90,98,600,0,0,0,0,0 +636,Larvesta,55,85,55,50,55,60,360,0,0,0,0,0 +637,Volcarona,85,60,65,135,105,100,550,0,0,0,0,0 +638,Cobalion,91,90,129,90,72,108,580,0,0,0,0,0 +639,Terrakion,91,129,90,72,90,108,580,0,0,0,0,0 +640,Virizion,91,90,72,90,129,108,580,0,0,0,0,0 +641,Tornadus (Incarnate Forme),79,115,70,125,80,111,580,0,0,0,0,0 +641:01,Tornadus (Therian Forme),79,100,80,110,90,121,580,0,0,0,0,0 +642:02,Thundurus (Incarnate Forme),79,115,70,125,80,111,580,0,0,0,0,0 +642:03,Thundurus (Therian Forme),79,105,70,145,80,101,580,0,0,0,0,0 +643,Reshiram,100,120,100,150,120,90,680,0,0,0,0,0 +644,Zekrom,100,150,120,120,100,90,680,0,0,0,0,0 +645,Landorus (Incarnate Forme),89,125,90,115,80,101,600,0,0,0,0,0 +645:01,Landorus (Therian Forme),89,145,90,105,80,91,600,0,0,0,0,0 +646,Kyurem (Normal Kyurem),125,130,90,130,90,95,660,0,0,0,0,0 +646:01,Kyurem (Black Kyurem),125,170,100,120,90,95,700,0,0,0,0,0 +646:02,Kyurem (White Kyurem),125,120,90,170,100,95,700,0,0,0,0,0 +647,Keldeo,91,72,90,129,90,108,580,0,0,0,0,0 +648,Meloetta (Aria Forme),100,77,77,128,128,90,600,0,0,0,0,0 +648:01,Meloetta (Pirouette Forme),100,128,90,77,77,128,600,0,0,0,0,0 +649,Genesect,71,120,95,120,95,99,600,0,0,0,0,0 +650,Chespin,56,61,65,48,45,38,313,0,0,0,0,0 +651,Quilladin,61,78,95,56,58,57,405,0,0,0,0,0 +652,Chesnaught,88,107,122,74,75,64,530,0,0,0,0,0 +653,Fennekin,40,45,40,62,60,60,307,0,0,0,0,0 +654,Braixen,59,59,58,90,70,73,409,0,0,0,0,0 +655,Delphox,75,69,72,114,100,104,534,0,0,0,0,0 +656,Froakie,41,56,40,62,44,71,314,0,0,0,0,0 +657,Frogadier,54,63,52,83,56,97,405,0,0,0,0,0 +658,Greninja,72,95,67,103,71,122,530,0,0,0,0,0 +659,Bunnelby,38,36,38,32,36,57,237,0,0,0,0,0 +660,Diggersby,85,56,77,50,77,78,423,0,0,0,0,0 +661,Fletchling,45,50,43,40,38,62,278,0,0,0,0,0 +662,Fletchinder,62,73,55,56,52,84,382,0,0,0,0,0 +663,Talonflame,78,81,71,74,69,126,499,0,0,0,0,0 +664,Scatterbug,38,35,40,27,25,35,200,0,0,0,0,0 +665,Spewpa,45,22,60,27,30,29,213,0,0,0,0,0 +666,Vivillon,80,52,50,90,50,89,411,0,0,0,0,0 +667,Litleo,62,50,58,73,54,72,369,0,0,0,0,0 +668,Pyroar,86,68,72,109,66,106,507,0,0,0,0,0 +669,Flabébé,44,38,39,61,79,42,303,0,0,0,0,0 +670,Floette,54,45,47,75,98,52,371,0,0,0,0,0 +671,Florges,78,65,68,112,154,75,552,0,0,0,0,0 +672,Skiddo,66,65,48,62,57,52,350,0,0,0,0,0 +673,Gogoat,123,100,62,97,81,68,531,0,0,0,0,0 +674,Pancham,67,82,62,46,48,43,348,0,0,0,0,0 +675,Pangoro,95,124,78,69,71,58,495,0,0,0,0,0 +676,Furfrou,75,80,60,65,90,102,472,0,0,0,0,0 +677,Espurr,62,48,54,63,60,68,355,0,0,0,0,0 +678,Meowstic,74,48,76,83,81,104,466,0,0,0,0,0 +679,Honedge,45,80,100,35,37,28,325,0,0,0,0,0 +680,Doublade,59,110,150,45,49,35,448,0,0,0,0,0 +681,Aegislash (Shield Forme),60,50,150,50,150,60,520,0,0,0,0,0 +681:01,Aegislash (Blade Forme),60,150,50,150,50,60,520,0,0,0,0,0 +682,Spritzee,78,52,60,63,65,23,341,0,0,0,0,0 +683,Aromatisse,101,72,72,99,89,29,462,0,0,0,0,0 +684,Swirlix,62,48,66,59,57,49,341,0,0,0,0,0 +685,Slurpuff,82,80,86,85,75,72,480,0,0,0,0,0 +686,Inkay,53,54,53,37,46,45,288,0,0,0,0,0 +687,Malamar,86,92,88,68,75,73,482,0,0,0,0,0 +688,Binacle,42,52,67,39,56,50,306,0,0,0,0,0 +689,Barbaracle,72,105,115,54,86,68,500,0,0,0,0,0 +690,Skrelp,50,60,60,60,60,30,320,0,0,0,0,0 +691,Dragalge,65,75,90,97,123,44,494,0,0,0,0,0 +692,Clauncher,50,53,62,58,63,44,330,0,0,0,0,0 +693,Clawitzer,71,73,88,120,89,59,500,0,0,0,0,0 +694,Helioptile,44,38,33,61,43,70,289,0,0,0,0,0 +695,Heliolisk,62,55,52,109,94,109,481,0,0,0,0,0 +696,Tyrunt,58,89,77,45,45,48,362,0,0,0,0,0 +697,Tyrantrum,82,121,119,69,59,71,521,0,0,0,0,0 +698,Amaura,77,59,50,67,63,46,362,0,0,0,0,0 +699,Aurorus,123,77,72,99,92,58,521,0,0,0,0,0 +700,Sylveon,95,65,65,110,130,60,525,0,0,0,0,0 +701,Hawlucha,78,92,75,74,63,118,500,0,0,0,0,0 +702,Dedenne,67,58,57,81,67,101,431,0,0,0,0,0 +703,Carbink,50,50,150,50,150,50,500,0,0,0,0,0 +704,Goomy,45,50,35,55,75,40,300,0,0,0,0,0 +705,Sliggoo,68,75,53,83,113,60,452,0,0,0,0,0 +706,Goodra,90,100,70,110,150,80,600,0,0,0,0,0 +707,Klefki,57,80,91,80,87,75,470,0,0,0,0,0 +708,Phantump,43,70,48,50,60,38,309,0,0,0,0,0 +709,Trevenant,85,110,76,65,82,56,474,0,0,0,0,0 +710,Pumpkaboo (Small Size),44,66,70,44,55,56,335,0,0,0,0,0 +710:01,Pumpkaboo (Average Size),49,66,70,44,55,51,335,0,0,0,0,0 +710:02,Pumpkaboo (Large Size),54,66,70,44,55,46,335,0,0,0,0,0 +710:03,Pumpkaboo (Super Size),59,66,70,44,55,41,335,0,0,0,0,0 +711,Gourgeist (Small Size),55,85,122,58,75,99,494,0,0,0,0,0 +711:01,Gourgeist (Average Size),65,90,122,58,75,84,494,0,0,0,0,0 +711:02,Gourgeist (Large Size),75,95,122,58,75,69,494,0,0,0,0,0 +711:03,Gourgeist (Super Size),85,100,122,58,75,54,494,0,0,0,0,0 +712,Bergmite,55,69,85,32,35,28,304,0,0,0,0,0 +713,Avalugg,95,117,184,44,46,28,514,0,0,0,0,0 +714,Noibat,40,30,35,45,40,55,245,0,0,0,0,0 +715,Noivern,85,70,80,97,80,123,535,0,0,0,0,0 +716,Xerneas,126,131,95,131,98,99,680,0,0,0,0,0 +717,Yveltal,126,131,95,131,98,99,680,0,0,0,0,0 +718,Zygarde,108,100,121,81,95,95,600,0,0,0,0,0 +719,Diancie,50,100,150,100,150,50,600,0,0,0,0,0 +720,Hoopa (Hoopa Confined),80,110,60,150,130,70,600,0,0,0,0,0 +720:01,Hoopa (Hoopa Unbound),80,160,60,170,130,80,680,0,0,0,0,0 +721,Volcanion,80,110,120,130,90,70,600,0,0,0,0,0 \ No newline at end of file diff --git a/src/pokemonFramework/Bundle.java b/src/pokemonFramework/Bundle.java new file mode 100644 index 0000000..9989340 --- /dev/null +++ b/src/pokemonFramework/Bundle.java @@ -0,0 +1,132 @@ +package pokemonFramework; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +public class Bundle implements Serializable { + + private static final long serialVersionUID = -7206046496756732915L; + + private int type; + + public static List profiles = new ArrayList(); + + private Party Party0; + private Move Move0; + + private Party Party1; + private Move Move1; + + public Bundle(Profile profile0) { + type = 0; + profiles.add(profile0); + } + + public Bundle(Profile profile0, Party party0) { + type = 1; + profiles.add(profile0); + Party0 = party0; + } + + public Bundle(Profile profile0, Party party0, Move move0) { + type = 2; + profiles.add(profile0); + Party0 = party0; + Move0 = move0; + } + + public Bundle(Profile profile0, Party party0, Move move0, Profile profile1, Party party1, Move move1) { + type = 3; + profiles.add(profile0); + profiles.add(profile1); + Party0 = party0; + Move0 = move0; + Party1 = party1; + Move1 = move1; + } + + /* + * public Bundle(Profile[] profiles) { type = 3; for (int i = 0; i < + * profiles.length; i++) { Bundle.profiles.add(i, profiles[i]); } } + */ + + public Bundle(ArrayList profiles) { + type = 4; + Bundle.profiles = profiles; + } + + public Bundle(Profile profile0, Party party0, Move move0, Profile profile1, Party party1, Move move1, Profile profile2, Profile profile3, Profile profile4, Profile profile5, Profile profile6, Profile profile7) { + type = 7; + Party0 = party0; + Move0 = move0; + Party1 = party1; + Move1 = move1; + profiles.add(profile0); + profiles.add(profile1); + profiles.add(profile2); + profiles.add(profile3); + profiles.add(profile4); + profiles.add(profile5); + profiles.add(profile6); + profiles.add(profile7); + } + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public Profile getSenderProfile() { + return profiles.get(0); + } + + public List getProfiles() { + return profiles; + } + + /* + * public void setProfiles(Profile[] profiles) { for (int i = 0; i < + * profiles.length; i++) { Bundle.profiles.add(i, profiles[i]); } } + */ + + public void setProfiles(ArrayList profiles) { + Bundle.profiles = profiles; + } + + public Party getParty0() { + return Party0; + } + + public void setParty0(Party party0) { + Party0 = party0; + } + + public Move getMove0() { + return Move0; + } + + public void setMove0(Move move0) { + Move0 = move0; + } + + public Party getParty1() { + return Party1; + } + + public void setParty1(Party party1) { + Party1 = party1; + } + + public Move getMove1() { + return Move1; + } + + public void setMove1(Move move1) { + Move1 = move1; + } + +} \ No newline at end of file diff --git a/src/pokemonFramework/Button.java b/src/pokemonFramework/Button.java new file mode 100644 index 0000000..8b73c75 --- /dev/null +++ b/src/pokemonFramework/Button.java @@ -0,0 +1,122 @@ +package pokemonFramework; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Point; + +public class Button { + private Point loc; + private Dimension dim; + private Color col; + private String nam; + private String act; + private String var; + private String val; + private Server srv; + + public Byte State; // 0-Nothing 1-MouseOver 2-MouseDown + + public Button(Point loc, Dimension dim, Color col, String nam, String act, String var, String val, Server srv) { + this.loc = loc; + this.dim = dim; + this.col = col; + this.nam = nam; + this.act = act; + this.var = var; + this.val = val; + this.srv = srv; + } + + + public Button(Point loc, Dimension dim, Color col, String nam, String act, String var, String val) { + this.loc = loc; + this.dim = dim; + this.col = col; + this.nam = nam; + this.act = act; + this.var = var; + this.val = val; + } + + public Button(Point loc, Dimension dim, Color col, String nam, String act) { + this.loc = loc; + this.dim = dim; + this.col = col; + this.nam = nam; + this.act = act; + } + + public Button(Point loc, Dimension dim, Color col, String nam) { + super(); + this.loc = loc; + this.dim = dim; + this.col = col; + this.nam = nam; + } + + public Point getLoc() { + return loc; + } + + public void setLoc(Point loc) { + this.loc = loc; + } + + public Dimension getDim() { + return dim; + } + + public void setDim(Dimension dim) { + this.dim = dim; + } + + public Color getCol() { + return col; + } + + public void setCol(Color col) { + this.col = col; + } + + public String getNam() { + return nam; + } + + public void setNam(String nam) { + this.nam = nam; + } + + public String getAct() { + return act; + } + + public void setAct(String act) { + this.act = act; + } + + public String getVar() { + return var; + } + + public void setVar(String var) { + this.var = var; + } + + public String getVal() { + return val; + } + + public void setVal(String val) { + this.val = val; + } + + + public Server getSrv() { + return srv; + } + + + public void setSrv(Server srv) { + this.srv = srv; + } +} diff --git a/src/pokemonFramework/FuncBattle.java b/src/pokemonFramework/FuncBattle.java new file mode 100644 index 0000000..f2a61bf --- /dev/null +++ b/src/pokemonFramework/FuncBattle.java @@ -0,0 +1,5 @@ +package pokemonFramework; + +public class FuncBattle { + +} diff --git a/src/pokemonFramework/FuncServer.java b/src/pokemonFramework/FuncServer.java new file mode 100644 index 0000000..ae4dc61 --- /dev/null +++ b/src/pokemonFramework/FuncServer.java @@ -0,0 +1,100 @@ +package pokemonFramework; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.util.ArrayList; +import java.util.List; + +public class FuncServer { + + private ObjectInputStream in; + private ObjectOutputStream out; + private Socket socket; + private int port; + + public FuncServer(ObjectInputStream in, ObjectOutputStream out, Socket socket, int port) { + super(); + this.in = in; + this.out = out; + this.socket = socket; + this.port = port; + } + + public List findIPs() { + List ips = new ArrayList(); + for (int i = 0; i <= 255; i++) { + try { + socket = new Socket(); + socket.connect(new InetSocketAddress("192.168.1." + i, port), 50); + out = new ObjectOutputStream(socket.getOutputStream()); + in = new ObjectInputStream(socket.getInputStream()); + ips.add(getServerInfo()); + System.out.println("Yep"); + socket.close(); + socket = null; + } catch (IOException e) { + System.out.println("Nope"); + socket = null; + } + } + return ips; + } + + public void connect(String Ip, int Port) { + try { + socket = new Socket(Ip, Port); + out = new ObjectOutputStream(socket.getOutputStream()); + in = new ObjectInputStream(socket.getInputStream()); + } catch (IOException e) { + System.out.println("No I/O"); + } + } + + public Server getServerInfo() { + Object input = null; + sendData(new String("info")); + try { + input = in.readObject(); + while (input == null || !(input instanceof Server)) { + input = in.readObject(); + System.out.println("null"); + } + System.out.println("Info"); + } catch (ClassNotFoundException | IOException e) { + e.printStackTrace(); + System.out.println("nope"); + } + return (Server) input; + } + + public void sendMove(Bundle clientBundle, Move move) { + System.out.println("Sending Client Bundle"); + sendData(clientBundle); + } + + // data + + public void sendData(String send) { + try { + out.writeObject(new String(send)); + out.flush(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void sendData(Bundle bundle) { + try { + out.writeObject(bundle); + out.flush(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + +} diff --git a/src/pokemonFramework/Move.java b/src/pokemonFramework/Move.java new file mode 100644 index 0000000..081946d --- /dev/null +++ b/src/pokemonFramework/Move.java @@ -0,0 +1,158 @@ +package pokemonFramework; + +import java.io.Serializable; +import java.util.Random; + +public class Move implements Serializable{ + + /** + * + */ + private static final long serialVersionUID = -4173378680595472320L; + // 1,Pound,Normal,Physical,35,40,100% + + private String id; + private String name; + private String type; + private String moveType; + private int pp; + public int cPp; + private int power; + private String acc; + + public Move(String id, String name, String type, String moveType, int pp, int cPp, int power, String acc) { + this.id = id; + this.name = name; + this.type = type; + this.moveType = moveType; + this.cPp = cPp; + this.pp = pp; + this.power = power; + this.acc = acc; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getMoveType() { + return moveType; + } + + public void setMoveType(String moveType) { + this.moveType = moveType; + } + + public int getPp() { + return pp; + } + + public void setPp(int pp) { + this.pp = pp; + } + + public int getcPp() { + return cPp; + } + + public void setcPp(int cPp) { + this.cPp = cPp; + } + + public int getPower() { + return power; + } + + public void setPower(int power) { + this.power = power; + } + + public String getAcc() { + return acc; + } + + public void setAcc(String acc) { + this.acc = acc; + } + + public static Move getMoveInfo(String number) { + + int pkmnIndex = ReadCSV.read("moves.csv")[0].indexOf(number); + if (ReadCSV.read("moves.csv")[4].get(pkmnIndex).toString().equals("") + && ReadCSV.read("moves.csv")[5].get(pkmnIndex).toString().equals("")) { + return new Move(ReadCSV.read("moves.csv")[0].get(pkmnIndex).toString(), + ReadCSV.read("moves.csv")[1].get(pkmnIndex).toString(), + ReadCSV.read("moves.csv")[2].get(pkmnIndex).toString(), + ReadCSV.read("moves.csv")[3].get(pkmnIndex).toString(), Integer.MAX_VALUE, Integer.MAX_VALUE, 0, + ReadCSV.read("moves.csv")[6].get(pkmnIndex).toString()); + } else if (ReadCSV.read("moves.csv")[4].get(pkmnIndex).toString().equals("")) { + return new Move(ReadCSV.read("moves.csv")[0].get(pkmnIndex).toString(), + ReadCSV.read("moves.csv")[1].get(pkmnIndex).toString(), + ReadCSV.read("moves.csv")[2].get(pkmnIndex).toString(), + ReadCSV.read("moves.csv")[3].get(pkmnIndex).toString(), Integer.MAX_VALUE, Integer.MAX_VALUE, + Integer.parseInt(ReadCSV.read("moves.csv")[5].get(pkmnIndex).toString()), + ReadCSV.read("moves.csv")[6].get(pkmnIndex).toString()); + } else if (ReadCSV.read("moves.csv")[5].get(pkmnIndex).toString().equals("")) { + return new Move(ReadCSV.read("moves.csv")[0].get(pkmnIndex).toString(), + ReadCSV.read("moves.csv")[1].get(pkmnIndex).toString(), + ReadCSV.read("moves.csv")[2].get(pkmnIndex).toString(), + ReadCSV.read("moves.csv")[3].get(pkmnIndex).toString(), + Integer.parseInt(ReadCSV.read("moves.csv")[4].get(pkmnIndex).toString()), + Integer.parseInt(ReadCSV.read("moves.csv")[4].get(pkmnIndex).toString()), 0, + ReadCSV.read("moves.csv")[6].get(pkmnIndex).toString()); + } else { + return new Move(ReadCSV.read("moves.csv")[0].get(pkmnIndex).toString(), + ReadCSV.read("moves.csv")[1].get(pkmnIndex).toString(), + ReadCSV.read("moves.csv")[2].get(pkmnIndex).toString(), + ReadCSV.read("moves.csv")[3].get(pkmnIndex).toString(), + (int) Double.parseDouble((ReadCSV.read("moves.csv")[4].get(pkmnIndex).toString())), + (int) Double.parseDouble((ReadCSV.read("moves.csv")[4].get(pkmnIndex).toString())), + (int) Double.parseDouble((ReadCSV.read("moves.csv")[5].get(pkmnIndex).toString())), + ReadCSV.read("moves.csv")[6].get(pkmnIndex).toString()); + } + + } + + public float getDamage(Move move, Pokemon play1, Pokemon play2) { + Random rand = new Random(); + float d; + if (rand.nextInt(100) <= Integer.parseInt(move.getAcc())) { + d = (50f / 250f) * (Float.parseFloat(play1.getAttack()) / Float.parseFloat(play2.getDefense())) + * move.getPower(); + } else { + d = 0; + } + return d; + } + + public float getBaseDamage(Move move, Pokemon play1, Pokemon play2) { + float d = (50f / 250f) * (Float.parseFloat(play1.getAttack()) / Float.parseFloat(play2.getDefense())) + * move.getPower(); + return d; + } + + public float getAverage() { + return (cPp + power + Integer.parseInt(acc)) / 3; + } + +} diff --git a/src/pokemonFramework/Party.java b/src/pokemonFramework/Party.java new file mode 100644 index 0000000..c249983 --- /dev/null +++ b/src/pokemonFramework/Party.java @@ -0,0 +1,160 @@ +package pokemonFramework; + +import java.io.Serializable; +import java.util.ArrayList; + +public class Party implements Serializable{ + /** + * + */ + private static final long serialVersionUID = -401661132587565350L; + + private Pokemon memb0; + private Pokemon memb1; + private Pokemon memb2; + private Pokemon memb3; + private Pokemon memb4; + private Pokemon memb5; + private Pokemon[] partyArray; + private ArrayList partyArrayList = new ArrayList(6); + + public Party(Pokemon memb0, Pokemon memb1, Pokemon memb2, Pokemon memb3, Pokemon memb4, Pokemon memb5) { + this.memb0 = memb0; + this.memb1 = memb1; + this.memb2 = memb2; + this.memb3 = memb3; + this.memb4 = memb4; + this.memb5 = memb5; + this.partyArray = new Pokemon[] {memb0, memb1, memb2, memb3, memb4, memb5}; + this.partyArrayList.add(memb0); + this.partyArrayList.add(memb1); + this.partyArrayList.add(memb2); + this.partyArrayList.add(memb3); + this.partyArrayList.add(memb4); + this.partyArrayList.add(memb5); + } + public Party(Pokemon memb0, Pokemon memb1, Pokemon memb2, Pokemon memb3, Pokemon memb4) { + this.memb0 = memb0; + this.memb1 = memb1; + this.memb2 = memb2; + this.memb3 = memb3; + this.memb4 = memb4; + this.memb5 = null; + this.partyArray = new Pokemon[] {memb0, memb1, memb2, memb3, memb4, null}; + this.partyArrayList.add(memb0); + this.partyArrayList.add(memb1); + this.partyArrayList.add(memb2); + this.partyArrayList.add(memb3); + this.partyArrayList.add(memb4); + this.partyArrayList.add(null); + } + public Party(Pokemon memb0, Pokemon memb1, Pokemon memb2, Pokemon memb3) { + this.memb0 = memb0; + this.memb1 = memb1; + this.memb2 = memb2; + this.memb3 = memb3; + this.memb4 = null; + this.memb5 = null; + this.partyArray = new Pokemon[] {memb0, memb1, memb2, memb3, null, null}; + this.partyArrayList.add(memb0); + this.partyArrayList.add(memb1); + this.partyArrayList.add(memb2); + this.partyArrayList.add(memb3); + this.partyArrayList.add(null); + this.partyArrayList.add(null); + } + public Party(Pokemon memb0, Pokemon memb1, Pokemon memb2) { + this.memb0 = memb0; + this.memb1 = memb1; + this.memb2 = memb2; + this.memb3 = null; + this.memb4 = null; + this.memb5 = null; + this.partyArray = new Pokemon[] {memb0, memb1, memb2, null, null, null}; + this.partyArrayList.add(memb0); + this.partyArrayList.add(memb1); + this.partyArrayList.add(memb2); + this.partyArrayList.add(null); + this.partyArrayList.add(null); + this.partyArrayList.add(null); + } + public Party(Pokemon memb0, Pokemon memb1) { + this.memb0 = memb0; + this.memb1 = memb1; + this.memb2 = null; + this.memb3 = null; + this.memb4 = null; + this.memb5 = null; + this.partyArray = new Pokemon[] {memb0, memb1, null, null, null, null}; + this.partyArrayList.add(memb0); + this.partyArrayList.add(memb1); + this.partyArrayList.add(null); + this.partyArrayList.add(null); + this.partyArrayList.add(null); + this.partyArrayList.add(null); + } + public Party(Pokemon memb0) { + this.memb0 = memb0; + this.memb1 = null; + this.memb2 = null; + this.memb3 = null; + this.memb4 = null; + this.memb5 = null; + this.partyArray = new Pokemon[] {memb0, null, null, null, null, null}; + this.partyArrayList.add(memb0); + this.partyArrayList.add(null); + this.partyArrayList.add(null); + this.partyArrayList.add(null); + this.partyArrayList.add(null); + this.partyArrayList.add(null); + } + + + public Pokemon getMemb0() { + return memb0; + } + public void setMemb0(Pokemon memb0) { + this.memb0 = memb0; + } + public Pokemon getMemb1() { + return memb1; + } + public void setMemb1(Pokemon memb1) { + this.memb1 = memb1; + } + public Pokemon getMemb2() { + return memb2; + } + public void setMemb2(Pokemon memb2) { + this.memb2 = memb2; + } + public Pokemon getMemb3() { + return memb3; + } + public void setMemb3(Pokemon memb3) { + this.memb3 = memb3; + } + public Pokemon getMemb4() { + return memb4; + } + public void setMemb4(Pokemon memb4) { + this.memb4 = memb4; + } + public Pokemon getMemb5() { + return memb5; + } + public void setMemb5(Pokemon memb5) { + this.memb5 = memb5; + } + public Pokemon[] getArray(){ + return partyArray; + } + + + public Pokemon getFromIndex(int i){ + return partyArray[i]; + } + public int getIndexOf(Pokemon pkmn){ + return partyArrayList.indexOf(pkmn); + } +} diff --git a/src/pokemonFramework/Pokemon.java b/src/pokemonFramework/Pokemon.java new file mode 100644 index 0000000..d43db08 --- /dev/null +++ b/src/pokemonFramework/Pokemon.java @@ -0,0 +1,192 @@ +// #,Pokemon,HP,Attack,Defense,Sp. Attack,Sp. Defense,Speed,Total,Ability,Move1,Move2,Move3,Move4 +//#,Name,Type,Category,Contest,PP,Power,Accuracy,Gen +package pokemonFramework; + +import java.io.Serializable; + +public class Pokemon implements Serializable{ + private static final long serialVersionUID = -725146924209724780L; + + private String id; + private String name; + private String HP; + private String cHP; + private String attack; + private String defense; + private String spAttack; + private String spDefense; + private String speed; + private String baseStatTotal; + + private String ability; // see csv file NUMBER + + private Move move0; // Numbers + private Move move1; + private Move move2; + private Move move3; + + public Pokemon(String id, String name, String hP, String cHP, String attack, String defense, String spAttack, + String spDefense, String speed, String baseStatTotal, String ability, Move move0, Move move1, Move move2, + Move move3) { + this.id = id; + this.name = name; + this.HP = hP; + this.cHP = hP; + this.attack = attack; + this.defense = defense; + this.spAttack = spAttack; + this.spDefense = spDefense; + this.speed = speed; + this.baseStatTotal = baseStatTotal; + this.ability = ability; + this.move0 = move0; + this.move1 = move1; + this.move2 = move2; + this.move3 = move3; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getHP() { + return HP; + } + + public void setHP(String hP) { + this.HP = hP; + } + + public String getcHP() { + return cHP; + } + + public void setcHP(String cHP) { + this.cHP = cHP; + } + + public void setcHP(float cHP) { + this.cHP = String.valueOf(cHP); + } + + public String getAttack() { + return attack; + } + + public void setAttack(String attack) { + this.attack = attack; + } + + public String getDefense() { + return defense; + } + + public void setDefense(String defense) { + this.defense = defense; + } + + public String getSpAttack() { + return spAttack; + } + + public void setSpAttack(String spAttack) { + this.spAttack = spAttack; + } + + public String getSpDefense() { + return spDefense; + } + + public void setSpDefense(String spDefense) { + this.spDefense = spDefense; + } + + public String getSpeed() { + return speed; + } + + public void setSpeed(String speed) { + this.speed = speed; + } + + public String getBaseStatTotal() { + return baseStatTotal; + } + + public void setBaseStatTotal(String baseStatTotal) { + this.baseStatTotal = baseStatTotal; + } + + public String getAbility() { + return ability; + } + + public void setAbility(String ability) { + this.ability = ability; + } + + public Move getMove0() { + return move0; + } + + public void setMove0(Move move0) { + this.move0 = move0; + } + + public Move getMove1() { + return move1; + } + + public void setMove1(Move move1) { + this.move1 = move1; + } + + public Move getMove2() { + return move2; + } + + public void setMove2(Move move2) { + this.move2 = move2; + } + + public Move getMove3() { + return move3; + } + + public void setMove3(Move move3) { + this.move3 = move3; + } + + // FROM NUMBER!!! \/ + public static Pokemon getPkmnInfo(String number) { + int pkmnIndex = ReadCSV.read("pokemon.csv")[0].indexOf(number); + return new Pokemon(ReadCSV.read("pokemon.csv")[0].get(pkmnIndex).toString(), + ReadCSV.read("pokemon.csv")[1].get(pkmnIndex).toString(), + ReadCSV.read("pokemon.csv")[2].get(pkmnIndex).toString(), + ReadCSV.read("pokemon.csv")[2].get(pkmnIndex).toString(), + ReadCSV.read("pokemon.csv")[3].get(pkmnIndex).toString(), + ReadCSV.read("pokemon.csv")[4].get(pkmnIndex).toString(), + ReadCSV.read("pokemon.csv")[5].get(pkmnIndex).toString(), + ReadCSV.read("pokemon.csv")[6].get(pkmnIndex).toString(), + ReadCSV.read("pokemon.csv")[7].get(pkmnIndex).toString(), + ReadCSV.read("pokemon.csv")[8].get(pkmnIndex).toString(), + ReadCSV.read("pokemon.csv")[9].get(pkmnIndex).toString(), + Move.getMoveInfo(ReadCSV.read("pokemon.csv")[10].get(pkmnIndex).toString()), + Move.getMoveInfo(ReadCSV.read("pokemon.csv")[11].get(pkmnIndex).toString()), + Move.getMoveInfo(ReadCSV.read("pokemon.csv")[12].get(pkmnIndex).toString()), + Move.getMoveInfo(ReadCSV.read("pokemon.csv")[13].get(pkmnIndex).toString())); + } + +} \ No newline at end of file diff --git a/src/pokemonFramework/Profile.java b/src/pokemonFramework/Profile.java new file mode 100644 index 0000000..0497a50 --- /dev/null +++ b/src/pokemonFramework/Profile.java @@ -0,0 +1,34 @@ +package pokemonFramework; + +import java.io.Serializable; + +public class Profile implements Serializable{ + /** + * + */ + private static final long serialVersionUID = -6905947139643950662L; + private String name; + private int gender; //0=m 1=f 3=u + + public Profile(String name, int gender) { + this.name = name; + this.gender = gender; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getGender() { + return gender; + } + + public void setGender(int gender) { + this.gender = gender; + } + +} diff --git a/src/pokemonFramework/ReadCSV.java b/src/pokemonFramework/ReadCSV.java new file mode 100644 index 0000000..9a7b0ec --- /dev/null +++ b/src/pokemonFramework/ReadCSV.java @@ -0,0 +1,54 @@ +package pokemonFramework; + +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; + +import com.opencsv.CSVReader; + +public class ReadCSV { + + @SuppressWarnings({ "rawtypes", "unchecked" }) + + public static ArrayList[] read(String file) { + ArrayList[] outString = null; + if (file == "pokemon.csv") { + outString = new ArrayList[14]; + for (int i = 0; i < outString.length; i++) { + outString[i] = new ArrayList(); + } + }else if (file == "moves.csv") { + outString = new ArrayList[8]; + for (int i = 0; i < outString.length; i++) { + outString[i] = new ArrayList(); + } + } + CSVReader reader = null; + try { + // Get the CSVReader instance with specifying the delimiter to be + // used + reader = new CSVReader(new FileReader("src/data/" + file), ','); + String[] nextLine; + // Read one line at a time + int y = 0; + while ((nextLine = reader.readNext()) != null) { + + for (int i = 0; i < nextLine.length; i++) { + // Print all tokens + outString[i].add(y, nextLine[i]); + } + y++; + } + + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return outString; + } +} \ No newline at end of file diff --git a/src/pokemonFramework/Server.java b/src/pokemonFramework/Server.java new file mode 100644 index 0000000..dcfa103 --- /dev/null +++ b/src/pokemonFramework/Server.java @@ -0,0 +1,47 @@ +package pokemonFramework; + +import java.io.Serializable; +import java.net.InetAddress; + +public class Server implements Serializable{ + /** + * + */ + private static final long serialVersionUID = -5083127980262387416L; +private String serverName; +private InetAddress serverip; +private String gamemode; + + +public Server(String serverName, String gamemode, InetAddress serverip) { + super(); + this.gamemode = gamemode; + this.serverName = serverName; + this.setServerip(serverip); +} + +public String getGamemode() { + return gamemode; +} +public void setGamemode(String gamemode) { + this.gamemode = gamemode; +} + +public InetAddress getServerip() { + return serverip; +} + + +public void setServerip(InetAddress serverip) { + this.serverip = serverip; +} + +public String getServerName() { + return serverName; +} + +public void setServerName(String serverName) { + this.serverName = serverName; +} + +} diff --git a/src/pokemonFramework/Text.java b/src/pokemonFramework/Text.java new file mode 100644 index 0000000..1461a38 --- /dev/null +++ b/src/pokemonFramework/Text.java @@ -0,0 +1,61 @@ +package pokemonFramework; + +import java.awt.Color; +import java.awt.Point; + +public class Text { + private Point loc; + private int font; + private Color col; + private String txt; + private boolean hid; + + public Text(Point loc, int font, Color col, String txt, boolean hid) { + super(); + this.loc = loc; + this.font = font; + this.col = col; + this.txt = txt; + this.hid = hid; + } + + public Point getLoc() { + return loc; + } + + public void setLoc(Point loc) { + this.loc = loc; + } + + public int getFont() { + return font; + } + + public void setFont(int font) { + this.font = font; + } + + public Color getCol() { + return col; + } + + public void setCol(Color col) { + this.col = col; + } + + public String getTxt() { + return txt; + } + + public void setTxt(String txt) { + this.txt = txt; + } + + public boolean isHid() { + return hid; + } + + public void setHid(boolean hid) { + this.hid = hid; + } +} diff --git a/src/pokemonbattleServer/PKServer.java b/src/pokemonbattleServer/PKServer.java new file mode 100644 index 0000000..aeb3b4c --- /dev/null +++ b/src/pokemonbattleServer/PKServer.java @@ -0,0 +1,209 @@ +package pokemonbattleServer; + +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.net.InetAddress; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.ArrayList; + +import pokemonFramework.Bundle; +import pokemonFramework.Profile; +import pokemonFramework.Server; + +public class PKServer { + // Managing Users Joining + + public static final String Gamemode = "none"; + public static final String Name = "Test Server Please Ignore"; + + private static int ip = 4563; + public static ArrayList map = new ArrayList(8); + + // public static Bundle Client0 = null; + // public static Bundle Client1 = null; + // public static Bundle Client2 = null; + // public static Bundle Client3 = null; + // public static Bundle Client4 = null; + // public static Bundle Client5 = null; + // public static Bundle Client6 = null; + // public static Bundle Client7 = null; + public static ArrayList data = new ArrayList(8); + public static int[] Players = new int[2]; + public static int[] Spectators = new int[6]; + public static String Data0 = ""; + public static String Data1 = ""; + public static boolean both = false; + // public static boolean S0 = false; + // public static boolean S1 = false; + + @SuppressWarnings("resource") + public static void main(String[] args) throws Exception { + ServerLogicThread logicThread = new ServerLogicThread(); + logicThread.start(); + ServerSocket m_ServerSocket = new ServerSocket(ip); + while (true) { + System.out.println("Waiting for connections on port " + ip + " " + (map.size())); + Socket clientSocket = m_ServerSocket.accept(); + ClientServiceThread cliThread = new ClientServiceThread(clientSocket); + cliThread.start(); + map.add(map.size(), cliThread); + } + } +} + +class ServerLogicThread extends Thread { + // Manages Backend Logic + + boolean running = true; + + ServerLogicThread() { + + } + + public void run() { + while (running) { + if (PKServer.Data0 != "" && PKServer.Data1 != "") { + PKServer.both = true; + System.out.println("Both are heree"); + } + } + } + +} + +class ClientServiceThread extends Thread { + // Manages Client-Server Connections + Socket clientSocket; + ObjectInputStream in; + ObjectOutputStream out; + int clientID = PKServer.map.size() - 1; + boolean running = true; + boolean updateClient = false; + Profile clientProfile = null; + + ClientServiceThread(Socket s) { + clientSocket = s; + clientID = PKServer.map.size(); + } + + public void run() { + System.out.println("Accepted Client: ID - " + clientID + " , Address - " + clientSocket.getInetAddress().getHostName()); + + try { + out = new ObjectOutputStream(clientSocket.getOutputStream()); + in = new ObjectInputStream(clientSocket.getInputStream()); + + while (running == true && !clientSocket.isClosed()) { + out.reset(); + Object clientCommand = in.readObject(); + + if (clientCommand != null) { + + if (clientProfile != null) { + System.out.println("Client " + clientProfile.getName() + " Says :" + clientCommand.toString()); + } else + System.out.println("Client " + clientID + " Says :" + clientCommand.getClass()); + + // info + if (clientCommand != null && clientCommand instanceof String) { + String str = clientCommand.toString(); + if (str.equalsIgnoreCase("info")) out.writeObject(new Server(PKServer.Name, PKServer.Gamemode, InetAddress.getLocalHost())); + if (str.equalsIgnoreCase("update")) { + ArrayList prof = new ArrayList(PKServer.data.size()); + for (int i = 0; i < PKServer.data.size(); i++) { + if (PKServer.data.get(i).getProfiles().size() != 0) prof.add(i, PKServer.data.get(i).getSenderProfile()); + } + Bundle pBundle = new Bundle(prof); + // System.out.println(pBundle.toString() + "BundleID"); + out.writeObject(pBundle); + } + out.flush(); + if (clientProfile != null) { + System.out.println(str + "Given To " + clientProfile.getName()); + } else + System.out.println(str + "Given To " + clientID); + + } + + // bundle + /* + * if (clientCommand != null && clientCommand instanceof Bundle) { Bundle + * clientBundle = (Bundle) clientCommand; + * System.out.println(clientBundle.getSenderProfile().getName() + + * "Client Name"); clientProfile = clientBundle.getProfiles().get(0); + * PKServer.data.add(clientID, clientBundle); // got the profile // Confirmed + * Connection out.writeObject(new Server(PKServer.Name, PKServer.Gamemode, + * InetAddress.getLocalHost())); if (clientProfile != null) { + * System.out.println("Info Given To " + clientProfile.getName()); }else + * System.out.println("Info Given To " + clientID); // updateAll(); } + */ + + // Profile + if (clientCommand != null && clientCommand instanceof Profile) { + Profile clientProfile = (Profile) clientCommand; + System.out.println(clientProfile.getName() + "Client Name"); + this.clientProfile = clientProfile; + PKServer.data.add(clientID, new Bundle(clientProfile)); + // got the profile + // Confirmed Connection + out.writeObject(new Server(PKServer.Name, PKServer.Gamemode, InetAddress.getLocalHost())); + if (this.clientProfile != null) { + System.out.println("Info Given To " + clientProfile.getName()); + } else + System.out.println("Info Given To " + clientID); + // updateAll(); + } + + // other + /* + * if (clientID == 0) { if (clientCommand != "") { System.out.println("Data 1 " + * + clientCommand); // PKServer.S1 = false; } + * + * if (PKServer.Data0 != "" && PKServer.Data1 != "") { PKServer.both = true; } + * + * } + */ + + // check for false both + /* + * if (PKServer.S0 && PKServer.S1) { PKServer.both = false; } + * + * if (PKServer.both) { switch (clientID) { case 0: if (!PKServer.S0) { + * out.writeObject(new String(PKServer.Data1)); out.flush(); + * System.out.println("Sent " + PKServer.Data1 + " to 0"); PKServer.Data1 = ""; + * PKServer.S0 = true; } break; case 1: if (!PKServer.S1) { out.writeObject(new + * String(PKServer.Data0)); out.flush(); System.out.println("Sent " + + * PKServer.Data1 + " to 1"); PKServer.Data0 = ""; PKServer.S1 = true; } break; + * + * } } + */ + + // update the client + if (updateClient) { + // updateAll(); + updateClient = false; + } + + } + } + PKServer.map.remove(this); + + } catch (Exception e) { + //e.printStackTrace(); + PKServer.map.remove(this); + running = false; + System.out.println("Client Disconnected: ID - " + clientID + " , Address - " + clientSocket.getInetAddress().getHostName()); + } + } + + /* + * public void updateAll() { for (int i = 0;i < PKServer.map.size(); i++) { try + * { Profile[] prof = new Profile[PKServer.data.size()]; for (int j = 0; j < + * PKServer.data.size(); j++) { prof[j] = PKServer.data.get(i).getProfiles()[0]; + * } out.writeObject(new Bundle(prof)); } catch (IOException e) { + * e.printStackTrace(); //TAG } } + * + * } + */ // MAKE THIS WORK +} \ No newline at end of file diff --git a/tmp/PKServer.pde b/tmp/PKServer.pde new file mode 100644 index 0000000..a8997ce --- /dev/null +++ b/tmp/PKServer.pde @@ -0,0 +1,124 @@ +// Generated by EclipseP5Exporter: Sun Aug 21 18:50:12 EDT 2016 + + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.ArrayList; + + + + private static int ip = 4563; + static ArrayList map = new ArrayList(2); + + static String Data0 = ""; + static String Data1 = ""; + static boolean both = false; + static boolean S0 = false; + static boolean S1 = false; + + @SuppressWarnings("resource") + static void main(String[] args) throws Exception { + ServerSocket m_ServerSocket = new ServerSocket(ip); + int id = 0; + while (true) { + System.out.println("Waiting for connections on port " + ip); + Socket clientSocket = m_ServerSocket.accept(); + ClientServiceThread cliThread = new ClientServiceThread(clientSocket, id); + cliThread.start(); + map.add(id, cliThread); + id++; + } + } +} + +class ClientServiceThread extends Thread { + Socket clientSocket; + BufferedReader in; + PrintWriter out; + int clientID = 0; + boolean running = true; + + ClientServiceThread(Socket s, int i) { + clientSocket = s; + clientID = i; + } + + void run() { + System.out.println( + "Accepted Client : ID - " + clientID + " : Address - " + clientSocket.getInetAddress().getHostName()); + try { + in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); + out = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream())); + + while (running == true) { + + if (in.ready()) { + String clientCommand = in.readLine(); + System.out.println("Client Says :" + clientCommand); + + if (clientID == 0) { + if (clientCommand != "") { + PKServer.Data0 = clientCommand; + System.out.println("Data 0 " + PKServer.Data0); + PKServer.S0 = false; + } + + if (PKServer.Data0 != "" && PKServer.Data1 != "") { + PKServer.both = true; + } + + } else if (clientID == 1) { + if (clientCommand != "") { + PKServer.Data1 = clientCommand; + System.out.println("Data 1 " + PKServer.Data1); + PKServer.S1 = false; + } + + if (PKServer.Data0 != "" && PKServer.Data1 != "") { + PKServer.both = true; + } + + } + System.out.println(PKServer.both + " 0 = " + PKServer.Data0 + " 1 = " + PKServer.Data1); + + } + // check for false both + if (PKServer.S0 && PKServer.S1) { + PKServer.both = false; + } + + if (PKServer.both) { + switch (clientID) { + case 0: + if (!PKServer.S0) { + out.println(PKServer.Data1); + out.flush(); + System.out.println("Sent " + PKServer.Data1 + " to 0"); + PKServer.Data1 = ""; + PKServer.S0 = true; + } + break; + case 1: + if (!PKServer.S1) { + out.println(PKServer.Data0); + out.flush(); + System.out.println("Sent " + PKServer.Data1 + " to 1"); + PKServer.Data0 = ""; + PKServer.S1 = true; + } + break; + + } + } + + } + } catch (Exception e) { + e.printStackTrace(); + } + + } +