PokeDex/lib/pokemon.dart

1937 lines
51 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ignore_for_file: constant_identifier_names
import 'package:pokedex/Consts.dart';
import 'package:pokedex/Session.dart';
import 'package:pokedex/dexMisc.dart';
import 'package:pokedex/pokemonHelpers.dart';
enum Generation {
One(1, 151),
Two(152, 251),
Three(252, 386),
Four(387, 493),
Five(494, 649),
Six(650, 721),
Seven(722, 809),
Eight(810, 905),
Nine(906, 1025);
final int idStart;
final int idEnd;
const Generation(this.idStart, this.idEnd);
}
enum EvolutionCondition {
HighFriendship,
ThunderStone,
WaterStone,
Trading,
Holding,
KingsRock,
MoonStone,
FireStone,
LeafStone,
Alola,
OutsideAlola,
Night,
Day,
AttackGreaterThanDefense,
AttackLessThanDefense,
AttackEqualDefense,
Galar,
OutsideGalar,
SunStone,
MetalCoat,
BlackAugurite,
DragonScale,
Upgrade,
Random,
Personality,
EmptySlot,
PokeballInBag,
ShinyStone,
PrismScale,
Or,
MaxBeauty,
DeepSeaTooth,
DeepSeaScale,
}
enum LearnType { TM, HM }
enum Move {
Growl(LearnType.TM, Type.Normal, "Growl", 0, 100, 40),
Tackle(LearnType.TM, Type.Normal, "Tackle", 40, 100, 35),
VineWhip(LearnType.TM, Type.Grass, "Vine Whip", 45, 100, 25),
RazorLeaf(LearnType.TM, Type.Grass, "Razor Leaf", 55, 95, 25),
SolarBeam(LearnType.TM, Type.Grass, "Solar Beam", 120, 100, 10),
PoisonPowder(LearnType.TM, Type.Poison, "Poison Powder", 0, 75, 35),
SleepPowder(LearnType.TM, Type.Grass, "Sleep Powder", 0, 75, 15),
TakeDown(LearnType.TM, Type.Normal, "Take Down", 90, 85, 20),
DoubleEdge(LearnType.TM, Type.Normal, "Double-Edge", 120, 100, 15),
LeechSeed(LearnType.TM, Type.Grass, "Leech Seed", 0, 90, 10),
Growth(LearnType.TM, Type.Normal, "Growth", 0, 0, 20),
PoisonSting(LearnType.TM, Type.Poison, "Poison Sting", 15, 100, 35),
StringShot(LearnType.TM, Type.Bug, "String Shot", 0, 95, 40),
BugBite(LearnType.TM, Type.Bug, "Bug Bite", 60, 100, 20),
Confusion(LearnType.TM, Type.Psychic, "Confusion", 50, 100, 25);
final LearnType type;
final Type moveType;
final String moveName;
final int power;
final int accuracy;
final int pp;
const Move(
this.type,
this.moveType,
this.moveName,
this.power,
this.accuracy,
this.pp,
);
}
enum Pokemon {
Bulbasaur(
1,
Generation.One,
[Type.Grass, Type.Poison],
SingleEvolution(2, 16),
locations: [
Location(
Game.Red,
[GameRoute.PalletTown],
Generation.One,
additionalGames: [Game.Blue],
),
Location(Game.Yellow, [GameRoute.CeruleanCity], Generation.One),
Location(
Game.Gold,
[GameRoute.TradeOrMigrate],
Generation.Two,
additionalGames: [Game.Silver, Game.Crystal],
),
Location(
Game.Ruby,
[GameRoute.TradeOrMigrate],
Generation.Three,
additionalGames: [Game.Sapphire, Game.Emerald],
),
Location(
Game.FireRed,
[GameRoute.PalletTown],
Generation.Three,
additionalGames: [Game.LeafGreen],
),
],
dexEntries: [
DexEntry(
Game.Red,
"A strange seed was planted on its back at birth. The plant sprouts and grows with this POKéMON.",
Generation.One,
additionalGames: [Game.Blue],
),
DexEntry(
Game.Yellow,
"It can go for days without eating a single morsel. In the bulb on its back, it stores energy.",
Generation.One,
),
DexEntry(
Game.Gold,
"The seed on its back is filled with nutrients. The seed grows steadily larger as its body grows.",
Generation.Two,
),
DexEntry(
Game.Silver,
"It carries a seed on its back right from birth. As it grows older, the seed also grows larger.",
Generation.Two,
),
DexEntry(
Game.Crystal,
"While it is young, it uses the nutrients that are stored in the seeds on its back in order to grow.",
Generation.Two,
),
DexEntry(
Game.Ruby,
"BULBASAUR can be seen napping in bright sunlight. There is a seed on its back. By soaking up the suns rays, the seed grows progressively larger.",
Generation.Three,
additionalGames: [Game.Sapphire, Game.Emerald],
),
DexEntry(
Game.FireRed,
"There is a plant seed on its back right from the day this POKéMON is born. The seed slowly grows larger.",
Generation.Three,
),
DexEntry(
Game.LeafGreen,
"A strange seed was planted on its back at birth. The plant sprouts and grows with this POKéMON.",
Generation.Three,
),
],
),
Ivysaur(
2,
Generation.One,
[Type.Grass, Type.Poison],
SingleEvolution(3, 32),
previousPokemon: 1,
locations: [
Location(
Game.Red,
[GameRoute.Evolve],
Generation.One,
additionalGames: [Game.Blue, Game.Yellow],
),
Location(
Game.Gold,
[GameRoute.TradeOrMigrate],
Generation.Two,
additionalGames: [Game.Silver, Game.Crystal],
),
Location(
Game.Ruby,
[GameRoute.TradeOrMigrate],
Generation.Three,
additionalGames: [Game.Sapphire],
),
Location(
Game.FireRed,
[GameRoute.Evolve],
Generation.Three,
additionalGames: [Game.LeafGreen],
),
Location(Game.Emerald, [GameRoute.TradeOrMigrate], Generation.Three),
],
dexEntries: [
DexEntry(
Game.Red,
"When the bulb on its back grows large, it appears to lose the ability to stand on its hind legs.",
Generation.One,
additionalGames: [Game.Blue],
),
DexEntry(
Game.Yellow,
"The bulb on its back grows by drawing energy. It gives off an aroma when it is ready to bloom.",
Generation.One,
),
DexEntry(
Game.Gold,
"Exposure to sunlight adds to its strength. Sunlight also makes the bud on its back grow larger",
Generation.Two,
),
DexEntry(
Game.Silver,
"If the bud on its back starts to smell sweet, it is evidence that the large flower will soon bloom.",
Generation.Two,
),
DexEntry(
Game.Crystal,
"The bulb on its back grows as it absorbs nutrients. The bulb gives off a pleasant aroma when it blooms.",
Generation.Two,
),
DexEntry(
Game.Ruby,
"There is a bud on this POKéMONs back. To support its weight, IVYSAURs legs and trunk grow thick and strong. If it starts spending more time lying in the sunlight, its a sign that the bud will bloom into a large flower soon.",
Generation.Three,
additionalGames: [Game.Sapphire],
),
DexEntry(
Game.FireRed,
"There is a plant bulb on its back. When it absorbs nutrients, the bulb is said to blossom into a large flower.",
Generation.Three,
),
DexEntry(
Game.LeafGreen,
"When the bulb on its back grows large, it appears to lose the ability to stand on its hind legs.",
Generation.Three,
),
DexEntry(
Game.Emerald,
"To support its bulb, IVYSAURs legs grow sturdy. If it spends more time lying in the sunlight, the bud will soon bloom into a large flower.",
Generation.Three,
),
],
),
Venusaur(
3,
Generation.One,
[Type.Grass, Type.Poison],
null,
previousPokemon: 2,
locations: [
Location(
Game.Red,
[GameRoute.Evolve],
Generation.One,
additionalGames: [Game.Blue, Game.Yellow],
),
Location(
Game.Gold,
[GameRoute.TradeOrMigrate],
Generation.Two,
additionalGames: [Game.Silver, Game.Crystal],
),
Location(
Game.Ruby,
[GameRoute.TradeOrMigrate],
Generation.Three,
additionalGames: [Game.Sapphire, Game.Emerald],
),
Location(
Game.FireRed,
[GameRoute.Evolve],
Generation.Three,
additionalGames: [Game.LeafGreen],
),
],
dexEntries: [
DexEntry(
Game.Red,
"The plant blooms when it is absorbing solar energy. It stays on the move to seek sunlight.",
Generation.One,
additionalGames: [Game.Blue],
),
DexEntry(
Game.Yellow,
"The flower on its back catches the suns rays. The sunlight is then absorbed and used for energy.",
Generation.One,
),
DexEntry(
Game.Gold,
"By spreading the broad petals of its flower and catching the suns rays, it fills its body with power.",
Generation.Two,
),
DexEntry(
Game.Silver,
"It is able to convert sunlight into energy. As a result, it is more powerful in the summertime.",
Generation.Two,
),
DexEntry(
Game.Crystal,
"As it warms itself and absorbs the sunlight, its flower petals release a pleasant fragrance.",
Generation.Two,
),
DexEntry(
Game.Ruby,
"There is a large flower on VENUSAURs back. The flower is said to take on vivid colors if it gets plenty of nutrition and sunlight. The flowers aroma soothes the emotions of people.",
Generation.Three,
additionalGames: [Game.Sapphire],
),
DexEntry(
Game.FireRed,
"A bewitching aroma wafts from its flower. The fragrance becalms those engaged in a battle.",
Generation.Three,
),
DexEntry(
Game.LeafGreen,
"Its plant blooms when it is absorbing solar energy. It stays on the move to seek sunlight.",
Generation.Three,
),
DexEntry(
Game.Emerald,
"VENUSAURs flower is said to take on vivid colors if it gets plenty of nutrition and sunlight. The flowers aroma soothes the emotions of people.",
Generation.Three,
),
],
),
Charmander(4, Generation.One, [Type.Fire], SingleEvolution(5, 16)),
Charmeleon(
5,
Generation.One,
[Type.Fire],
SingleEvolution(6, 36),
previousPokemon: 4,
),
Charizard(
6,
Generation.One,
[Type.Fire, Type.Flying],
null,
previousPokemon: 5,
),
Squirtle(7, Generation.One, [Type.Water], SingleEvolution(8, 16)),
Wartortle(
8,
Generation.One,
[Type.Water],
SingleEvolution(9, 36),
previousPokemon: 7,
),
Blastoise(9, Generation.One, [Type.Water], null, previousPokemon: 8),
Caterpie(
10,
Generation.One,
[Type.Bug],
SingleEvolution(11, 7),
locations: [
Location(Game.Red, [
GameRoute.RT25,
GameRoute.ViridianForest,
], Generation.One),
Location(Game.Blue, [
GameRoute.RT2,
GameRoute.RT24,
GameRoute.RT25,
GameRoute.ViridianForest,
], Generation.One),
Location(Game.Yellow, [GameRoute.ViridianForest], Generation.One),
Location(Game.Gold, [
GameRoute.RT2,
GameRoute.RT26,
GameRoute.RT27,
GameRoute.RT30,
GameRoute.RT31,
GameRoute.RT34,
GameRoute.RT35,
GameRoute.RT36,
GameRoute.RT37,
GameRoute.RT38,
GameRoute.RT39,
GameRoute.AzaleaTown,
GameRoute.IlexForest,
GameRoute.LakeOfRage,
GameRoute.NationalPark,
], Generation.Two),
Location(Game.Silver, [GameRoute.NationalPark], Generation.Two),
Location(Game.Crystal, [
GameRoute.RT2,
GameRoute.RT24,
GameRoute.RT25,
GameRoute.RT30,
GameRoute.RT31,
GameRoute.IlexForest,
GameRoute.NationalPark,
], Generation.Two),
Location(
Game.Ruby,
[GameRoute.TradeOrMigrate],
Generation.Three,
additionalGames: [Game.Sapphire, Game.Emerald],
),
Location(Game.FireRed, [
GameRoute.RT2,
GameRoute.RT24,
GameRoute.RT25,
GameRoute.PatternBush,
GameRoute.ViridianForest,
], Generation.Three),
],
dexEntries: [
DexEntry(
Game.Red,
"Its short feet are tipped with suction pads that enable it to tirelessly climb slopes and walls.",
Generation.One,
additionalGames: [Game.Blue],
),
DexEntry(
Game.Yellow,
"If you touch the feeler on top of its head, it will release a horrible stink to protect itself.",
Generation.One,
),
DexEntry(
Game.Gold,
"For protection, it releases a horrible stench from the antenna on its head to drive away enemies.",
Generation.Two,
),
DexEntry(
Game.Silver,
"Its feet have suction cups designed to stick to any surface. It tenaciously climbs trees to forage.",
Generation.Two,
),
DexEntry(
Game.Crystal,
"It crawls into foliage where it camouflages itself among leaves that are the same color as its body.",
Generation.Two,
),
DexEntry(
Game.Ruby,
"CATERPIE has a voracious appetite. It can devour leaves bigger than its body right before your eyes. From its antenna, this POKéMON releases a terrifically strong odor.",
Generation.Three,
additionalGames: [Game.Sapphire],
),
DexEntry(
Game.FireRed,
"It is covered with a green skin. When it grows, it sheds the skin, covers itself with silk, and becomes a cocoon.",
Generation.Three,
),
DexEntry(
Game.LeafGreen,
"Its short feet are tipped with suction pads that enable it to tirelessly climb slopes and walls.",
Generation.Three,
),
DexEntry(
Game.Emerald,
"Its voracious appetite compels it to devour leaves bigger than itself without hesitation. It releases a terribly strong odor from its antennae.",
Generation.Three,
),
],
),
Metapod(
11,
Generation.One,
[Type.Bug],
SingleEvolution(12, 10),
previousPokemon: 10,
),
Butterfree(
12,
Generation.One,
[Type.Bug, Type.Flying],
null,
previousPokemon: 11,
),
Weedle(13, Generation.One, [Type.Bug, Type.Poison], SingleEvolution(14, 7)),
Kakuna(
14,
Generation.One,
[Type.Bug, Type.Poison],
SingleEvolution(15, 10),
previousPokemon: 13,
),
Beedrill(
15,
Generation.One,
[Type.Bug, Type.Poison],
null,
previousPokemon: 14,
),
Pidgey(16, Generation.One, [
Type.Normal,
Type.Flying,
], SingleEvolution(17, 18)),
Pidgeotto(
17,
Generation.One,
[Type.Normal, Type.Flying],
SingleEvolution(18, 36),
previousPokemon: 16,
),
Pidgeot(
18,
Generation.One,
[Type.Normal, Type.Flying],
null,
previousPokemon: 17,
),
Rattata(19, Generation.One, [Type.Normal], SingleEvolution(20, 20)),
Raticate(20, Generation.One, [Type.Normal], null, previousPokemon: 19),
Spearow(21, Generation.One, [
Type.Normal,
Type.Flying,
], SingleEvolution(22, 20)),
Fearow(
22,
Generation.One,
[Type.Normal, Type.Flying],
null,
previousPokemon: 21,
),
Ekans(23, Generation.One, [Type.Poison], SingleEvolution(24, 22)),
Arbok(24, Generation.One, [Type.Poison], null, previousPokemon: 23),
Pikachu(
25,
Generation.One,
[Type.Electric],
SingleEvolution(26, -1, condition: [EvolutionCondition.ThunderStone]),
previousPokemon: 172,
),
Raichu(26, Generation.One, [Type.Electric], null, previousPokemon: 25),
Sandshrew(27, Generation.One, [Type.Ground], SingleEvolution(28, 22)),
Sandslash(28, Generation.One, [Type.Ground], null, previousPokemon: 27),
NidoranF(29, Generation.One, [Type.Poison], SingleEvolution(30, 16)),
Nidorina(
30,
Generation.One,
[Type.Poison],
SingleEvolution(31, 36),
previousPokemon: 29,
),
NidoQueen(
31,
Generation.One,
[Type.Poison, Type.Ground],
null,
previousPokemon: 30,
),
NidoranM(32, Generation.One, [Type.Poison], SingleEvolution(33, 16)),
Nidorino(
33,
Generation.One,
[Type.Poison],
SingleEvolution(34, 36),
previousPokemon: 32,
),
NidoKing(
34,
Generation.One,
[Type.Poison, Type.Ground],
null,
previousPokemon: 33,
),
Clefairy(
35,
Generation.One,
[Type.Fairy],
SingleEvolution(36, -1, condition: [EvolutionCondition.MoonStone]),
previousPokemon: 173,
),
Clefable(36, Generation.One, [Type.Fairy], null, previousPokemon: 35),
Vulpix(
37,
Generation.One,
[Type.Fire],
SingleEvolution(38, -1, condition: [EvolutionCondition.FireStone]),
),
NineTales(38, Generation.One, [Type.Fire], null, previousPokemon: 37),
Jigglypuff(
39,
Generation.One,
[Type.Fairy],
SingleEvolution(40, -1, condition: [EvolutionCondition.MoonStone]),
previousPokemon: 174,
),
WigglyTuff(40, Generation.One, [Type.Fairy], null, previousPokemon: 39),
Zubat(41, Generation.One, [
Type.Poison,
Type.Flying,
], SingleEvolution(42, 22)),
Golbat(
42,
Generation.One,
[Type.Poison, Type.Flying],
SingleEvolution(169, -1, condition: [EvolutionCondition.HighFriendship]),
previousPokemon: 41,
),
Oddish(43, Generation.One, [
Type.Poison,
Type.Grass,
], SingleEvolution(44, 21)),
Gloom(
44,
Generation.One,
[Type.Poison, Type.Grass],
BranchedEvolution([45, 182], [-1, -1], [
[EvolutionCondition.LeafStone],
[EvolutionCondition.SunStone],
]),
previousPokemon: 43,
),
Vileplume(
45,
Generation.One,
[Type.Poison, Type.Grass],
null,
previousPokemon: 44,
),
Paras(46, Generation.One, [Type.Bug, Type.Grass], SingleEvolution(47, 24)),
Parasect(
47,
Generation.One,
[Type.Bug, Type.Grass],
null,
previousPokemon: 46,
),
Venonat(48, Generation.One, [Type.Bug, Type.Poison], SingleEvolution(49, 31)),
Venomoth(
49,
Generation.One,
[Type.Bug, Type.Poison],
null,
previousPokemon: 48,
),
Diglett(50, Generation.One, [Type.Ground], SingleEvolution(51, 26)),
Dugtrio(51, Generation.One, [Type.Ground], null, previousPokemon: 50),
Meowth(52, Generation.One, [Type.Normal], SingleEvolution(53, 28)),
Persian(53, Generation.One, [Type.Normal], null, previousPokemon: 52),
Psyduck(54, Generation.One, [Type.Water], SingleEvolution(55, 33)),
Golduck(55, Generation.One, [Type.Water], null, previousPokemon: 54),
Mankey(56, Generation.One, [Type.Fighting], SingleEvolution(57, 28)),
Primeape(57, Generation.One, [Type.Fighting], null, previousPokemon: 56),
Growlithe(
58,
Generation.One,
[Type.Fire],
SingleEvolution(59, -1, condition: [EvolutionCondition.FireStone]),
),
Arcanine(59, Generation.One, [Type.Fire], null, previousPokemon: 58),
Poliwag(60, Generation.One, [Type.Water], SingleEvolution(61, 25)),
Poliwhirl(
61,
Generation.One,
[Type.Water],
BranchedEvolution([62, 186], [-1, -1], [
[EvolutionCondition.WaterStone],
[
EvolutionCondition.Trading,
EvolutionCondition.Holding,
EvolutionCondition.KingsRock,
],
]),
previousPokemon: 60,
),
Poliwrath(62, Generation.One, [Type.Water], null, previousPokemon: 61),
Abra(63, Generation.One, [Type.Psychic], SingleEvolution(64, 16)),
Kadabra(
64,
Generation.One,
[Type.Psychic],
SingleEvolution(65, -1, condition: [EvolutionCondition.Trading]),
previousPokemon: 63,
),
Alakazam(65, Generation.One, [Type.Psychic], null, previousPokemon: 64),
Machop(66, Generation.One, [Type.Fighting], SingleEvolution(67, 28)),
Machoke(
67,
Generation.One,
[Type.Fighting],
SingleEvolution(68, -1, condition: [EvolutionCondition.Trading]),
previousPokemon: 66,
),
Machamp(68, Generation.One, [Type.Fighting], null, previousPokemon: 67),
Bellsprout(69, Generation.One, [
Type.Grass,
Type.Poison,
], SingleEvolution(70, 21)),
Weepinbell(
70,
Generation.One,
[Type.Grass, Type.Poison],
SingleEvolution(71, -1, condition: [EvolutionCondition.LeafStone]),
previousPokemon: 69,
),
Victreebel(
71,
Generation.One,
[Type.Grass, Type.Poison],
null,
previousPokemon: 70,
),
Tentacool(72, Generation.One, [
Type.Water,
Type.Poison,
], SingleEvolution(73, 30)),
Tentacruel(
73,
Generation.One,
[Type.Water, Type.Poison],
null,
previousPokemon: 72,
),
Geodude(74, Generation.One, [
Type.Rock,
Type.Ground,
], SingleEvolution(75, 25)),
Graveler(
75,
Generation.One,
[Type.Rock, Type.Ground],
SingleEvolution(76, -1, condition: [EvolutionCondition.Trading]),
previousPokemon: 74,
),
Golem(
76,
Generation.One,
[Type.Rock, Type.Ground],
null,
previousPokemon: 75,
),
Ponyta(77, Generation.One, [Type.Fire], SingleEvolution(78, 40)),
Rapidash(78, Generation.One, [Type.Fire], null, previousPokemon: 77),
Slowpoke(
79,
Generation.One,
[Type.Water, Type.Psychic],
BranchedEvolution([80, 199], [37, -1], [
[],
[
EvolutionCondition.Trading,
EvolutionCondition.Holding,
EvolutionCondition.KingsRock,
],
]),
),
Slowbro(
80,
Generation.One,
[Type.Water, Type.Psychic],
null,
previousPokemon: 79,
),
Magnemite(81, Generation.One, [
Type.Electric,
Type.Steel,
], SingleEvolution(82, 30)),
Magneton(
82,
Generation.One,
[Type.Electric, Type.Steel],
null,
previousPokemon: 81,
),
Farfetchd(
83,
Generation.One,
[Type.Fighting],
null,
properName: "Farfetch'd",
),
Doduo(84, Generation.One, [
Type.Normal,
Type.Flying,
], SingleEvolution(85, 31)),
Dodrio(
85,
Generation.One,
[Type.Normal, Type.Flying],
null,
previousPokemon: 84,
),
Seel(86, Generation.One, [Type.Water], SingleEvolution(87, 34)),
Dewgong(
87,
Generation.One,
[Type.Water, Type.Ice],
null,
previousPokemon: 86,
),
Grimer(88, Generation.One, [Type.Poison], SingleEvolution(89, 38)),
Muk(89, Generation.One, [Type.Poison], null, previousPokemon: 88),
Shellder(
90,
Generation.One,
[Type.Water],
SingleEvolution(91, -1, condition: [EvolutionCondition.WaterStone]),
),
Cloyster(
91,
Generation.One,
[Type.Water, Type.Ice],
null,
previousPokemon: 90,
),
Gastly(92, Generation.One, [
Type.Ghost,
Type.Poison,
], SingleEvolution(93, 25)),
Haunter(
93,
Generation.One,
[Type.Ghost, Type.Poison],
SingleEvolution(94, -1, condition: [EvolutionCondition.Trading]),
previousPokemon: 92,
),
Gengar(
94,
Generation.One,
[Type.Ghost, Type.Poison],
null,
previousPokemon: 93,
),
Onix(
95,
Generation.One,
[Type.Rock, Type.Ground],
SingleEvolution(
208,
-1,
condition: [
EvolutionCondition.Trading,
EvolutionCondition.Holding,
EvolutionCondition.MetalCoat,
],
),
),
Drowzee(96, Generation.One, [Type.Psychic], SingleEvolution(97, 26)),
Hypno(97, Generation.One, [Type.Psychic], null, previousPokemon: 96),
Krabby(98, Generation.One, [Type.Water], SingleEvolution(99, 28)),
Kingler(99, Generation.One, [Type.Water], null, previousPokemon: 98),
Voltorb(100, Generation.One, [Type.Electric], SingleEvolution(101, 30)),
Electrode(101, Generation.One, [Type.Electric], null, previousPokemon: 100),
Exeggcute(
102,
Generation.One,
[Type.Grass, Type.Psychic],
SingleEvolution(103, -1, condition: [EvolutionCondition.LeafStone]),
),
Exeggutor(
103,
Generation.One,
[Type.Grass, Type.Psychic],
null,
previousPokemon: 102,
),
Cubone(
104,
Generation.One,
[Type.Ground],
SingleEvolution(105, 28, condition: [EvolutionCondition.OutsideAlola]),
),
Marowak(105, Generation.One, [Type.Ground], null, previousPokemon: 104),
Hitmonlee(106, Generation.One, [Type.Fighting], null, previousPokemon: 236),
Hitmonchan(107, Generation.One, [Type.Fighting], null, previousPokemon: 236),
Lickitung(108, Generation.One, [Type.Normal], null),
Koffing(
109,
Generation.One,
[Type.Poison],
SingleEvolution(110, 35, condition: [EvolutionCondition.OutsideGalar]),
),
Weezing(110, Generation.One, [Type.Poison], null, previousPokemon: 109),
Rhyhorn(111, Generation.One, [
Type.Ground,
Type.Rock,
], SingleEvolution(112, 42)),
Rhydon(
112,
Generation.One,
[Type.Ground, Type.Rock],
null,
previousPokemon: 111,
),
Chansey(
113,
Generation.One,
[Type.Normal],
SingleEvolution(242, -1, condition: [EvolutionCondition.HighFriendship]),
),
Tangela(114, Generation.One, [Type.Grass], null),
Kangaskhan(115, Generation.One, [Type.Normal], null),
Horsea(116, Generation.One, [Type.Water], SingleEvolution(117, 32)),
Seadra(
117,
Generation.One,
[Type.Water],
SingleEvolution(
230,
-1,
condition: [
EvolutionCondition.Trading,
EvolutionCondition.Holding,
EvolutionCondition.DragonScale,
],
),
previousPokemon: 116,
),
Goldeen(118, Generation.One, [Type.Water], SingleEvolution(119, 33)),
Seaking(119, Generation.One, [Type.Water], null, previousPokemon: 118),
Staryu(
120,
Generation.One,
[Type.Water],
SingleEvolution(121, -1, condition: [EvolutionCondition.WaterStone]),
),
Starmie(121, Generation.One, [Type.Water, Type.Psychic], null),
MrMime(
122,
Generation.One,
[Type.Psychic, Type.Fairy],
null,
properName: "Mr. Mime",
previousPokemon: 120,
),
Scyther(
123,
Generation.One,
[Type.Bug, Type.Flying],
BranchedEvolution([212, 900], [-1, -1], [
[
EvolutionCondition.Trading,
EvolutionCondition.Holding,
EvolutionCondition.MetalCoat,
],
[EvolutionCondition.BlackAugurite],
]),
),
Jynx(
124,
Generation.One,
[Type.Ice, Type.Psychic],
null,
previousPokemon: 238,
),
Electabuzz(125, Generation.One, [Type.Electric], null, previousPokemon: 239),
Magmar(126, Generation.One, [Type.Fire], null, previousPokemon: 240),
Pinsir(127, Generation.One, [Type.Bug], null),
Tauros(128, Generation.One, [Type.Normal], null),
Magikarp(129, Generation.One, [Type.Water], SingleEvolution(130, 20)),
Gyarados(
130,
Generation.One,
[Type.Water, Type.Flying],
null,
previousPokemon: 129,
),
Lapras(131, Generation.One, [Type.Water, Type.Ice], null),
Ditto(132, Generation.One, [Type.Normal], null),
Eevee(
133,
Generation.One,
[Type.Normal],
BranchedEvolution([134, 135, 136, 196, 197], [-1, -1, -1, -1, -1], [
[EvolutionCondition.WaterStone],
[EvolutionCondition.ThunderStone],
[EvolutionCondition.FireStone],
[EvolutionCondition.Day, EvolutionCondition.HighFriendship],
[EvolutionCondition.Night, EvolutionCondition.HighFriendship],
]),
),
Vaporeon(134, Generation.One, [Type.Water], null, previousPokemon: 133),
Jolteon(135, Generation.One, [Type.Electric], null, previousPokemon: 133),
Flareon(136, Generation.One, [Type.Fire], null, previousPokemon: 133),
Porygon(
137,
Generation.One,
[Type.Normal],
SingleEvolution(
233,
-1,
condition: [
EvolutionCondition.Trading,
EvolutionCondition.Holding,
EvolutionCondition.Upgrade,
],
),
),
Omanyte(138, Generation.One, [
Type.Rock,
Type.Water,
], SingleEvolution(139, 40)),
Omastar(
139,
Generation.One,
[Type.Rock, Type.Water],
null,
previousPokemon: 138,
),
Kabuto(140, Generation.One, [
Type.Rock,
Type.Water,
], SingleEvolution(141, 40)),
Kabutops(
141,
Generation.One,
[Type.Rock, Type.Water],
null,
previousPokemon: 140,
),
Aerodactyl(142, Generation.One, [Type.Rock, Type.Flying], null),
Snorlax(143, Generation.One, [Type.Normal], null),
Articuno(144, Generation.One, [Type.Ice, Type.Flying], null),
Zapdos(145, Generation.One, [Type.Electric, Type.Flying], null),
Moltres(146, Generation.One, [Type.Fire, Type.Flying], null),
Dratini(147, Generation.One, [Type.Dragon], SingleEvolution(148, 30)),
Dragonair(
148,
Generation.One,
[Type.Dragon],
SingleEvolution(149, 55),
previousPokemon: 147,
),
Dragonite(
149,
Generation.One,
[Type.Dragon, Type.Flying],
null,
previousPokemon: 148,
),
Mewtwo(150, Generation.One, [Type.Psychic], null),
Mew(151, Generation.One, [Type.Psychic], null),
Chikorita(152, Generation.Two, [Type.Grass], SingleEvolution(153, 16)),
Bayleef(
153,
Generation.Two,
[Type.Grass],
SingleEvolution(154, 32),
previousPokemon: 152,
),
Meganium(154, Generation.Two, [Type.Grass], null, previousPokemon: 153),
Cyndaquil(155, Generation.Two, [Type.Fire], SingleEvolution(156, 14)),
Quilava(
156,
Generation.Two,
[Type.Fire],
SingleEvolution(157, 36),
previousPokemon: 155,
),
Typhlosion(157, Generation.Two, [Type.Fire], null, previousPokemon: 156),
Totodile(158, Generation.Two, [Type.Water], SingleEvolution(159, 18)),
Croconaw(
159,
Generation.Two,
[Type.Water],
SingleEvolution(160, 30),
previousPokemon: 158,
),
Feraligatr(160, Generation.Two, [Type.Water], null, previousPokemon: 159),
Sentret(161, Generation.Two, [Type.Normal], SingleEvolution(162, 15)),
Furret(162, Generation.Two, [Type.Normal], null, previousPokemon: 161),
Hoothoot(163, Generation.Two, [
Type.Normal,
Type.Flying,
], SingleEvolution(164, 20)),
Noctowl(
164,
Generation.Two,
[Type.Normal, Type.Flying],
null,
previousPokemon: 163,
),
Ledyba(165, Generation.Two, [
Type.Bug,
Type.Flying,
], SingleEvolution(166, 18)),
Ledian(
166,
Generation.Two,
[Type.Bug, Type.Flying],
null,
previousPokemon: 165,
),
Spinarak(167, Generation.Two, [
Type.Bug,
Type.Poison,
], SingleEvolution(168, 22)),
Ariados(
168,
Generation.Two,
[Type.Bug, Type.Poison],
null,
previousPokemon: 167,
),
Crobat(
169,
Generation.Two,
[Type.Poison, Type.Flying],
null,
previousPokemon: 42,
),
Chinchou(170, Generation.Two, [
Type.Water,
Type.Electric,
], SingleEvolution(171, 27)),
Lanturn(
171,
Generation.Two,
[Type.Water, Type.Electric],
null,
previousPokemon: 170,
),
Pichu(
172,
Generation.Two,
[Type.Electric],
SingleEvolution(25, -1, condition: [EvolutionCondition.HighFriendship]),
),
Cleffa(
173,
Generation.Two,
[Type.Fairy],
SingleEvolution(35, -1, condition: [EvolutionCondition.HighFriendship]),
),
Igglybuff(
174,
Generation.Two,
[Type.Normal, Type.Fairy],
SingleEvolution(39, -1, condition: [EvolutionCondition.HighFriendship]),
),
Togepi(
175,
Generation.Two,
[Type.Fairy],
SingleEvolution(176, -1, condition: [EvolutionCondition.HighFriendship]),
),
Togetic(
176,
Generation.Two,
[Type.Fairy, Type.Flying],
null,
previousPokemon: 175,
),
Natu(177, Generation.Two, [
Type.Psychic,
Type.Flying,
], SingleEvolution(178, 25)),
Xatu(
178,
Generation.Two,
[Type.Psychic, Type.Flying],
null,
previousPokemon: 177,
),
Mareep(179, Generation.Two, [Type.Electric], SingleEvolution(180, 15)),
Flaaffy(
180,
Generation.Two,
[Type.Electric],
SingleEvolution(181, 30),
previousPokemon: 179,
),
Ampharos(181, Generation.Two, [Type.Electric], null, previousPokemon: 180),
Bellossom(182, Generation.Two, [Type.Grass], null, previousPokemon: 44),
Marill(
183,
Generation.Two,
[Type.Water, Type.Fairy],
SingleEvolution(184, 18),
previousPokemon: 298,
),
Azumarill(
184,
Generation.Two,
[Type.Water, Type.Fairy],
null,
previousPokemon: 183,
),
Sudowoodo(185, Generation.Two, [Type.Rock], null, previousPokemon: 438),
Politoed(186, Generation.Two, [Type.Water], null, previousPokemon: 61),
Hoppip(187, Generation.Two, [
Type.Grass,
Type.Flying,
], SingleEvolution(188, 18)),
Skiploom(
188,
Generation.Two,
[Type.Grass, Type.Flying],
SingleEvolution(189, 27),
previousPokemon: 187,
),
Jumpluff(
189,
Generation.Two,
[Type.Grass, Type.Flying],
null,
previousPokemon: 188,
),
Aipom(190, Generation.Two, [Type.Normal], null),
Sunkern(
191,
Generation.Two,
[Type.Grass],
SingleEvolution(192, -1, condition: [EvolutionCondition.SunStone]),
),
Sunflora(192, Generation.Two, [Type.Grass], null, previousPokemon: 191),
Yanma(193, Generation.Two, [Type.Bug, Type.Flying], null),
Wooper(194, Generation.Two, [
Type.Water,
Type.Ground,
], SingleEvolution(195, 20)),
Quagsire(
195,
Generation.Two,
[Type.Water, Type.Ground],
null,
previousPokemon: 194,
),
Espeon(196, Generation.Two, [Type.Psychic], null, previousPokemon: 133),
Umbreon(197, Generation.Two, [Type.Dark], null, previousPokemon: 133),
Murkrow(198, Generation.Two, [Type.Dark, Type.Flying], null),
Slowking(
199,
Generation.Two,
[Type.Water, Type.Psychic],
null,
previousPokemon: 79,
),
Misdreavus(200, Generation.Two, [Type.Ghost], null),
Unown(201, Generation.Two, [Type.Psychic], null, extraVariants: ["abc"]),
Wobbuffet(202, Generation.Two, [Type.Psychic], null, previousPokemon: 360),
Girafarig(203, Generation.Two, [Type.Normal, Type.Psychic], null),
Pineco(204, Generation.Two, [Type.Bug], SingleEvolution(205, 31)),
Forretress(
205,
Generation.Two,
[Type.Bug, Type.Steel],
null,
previousPokemon: 204,
),
Dunsparce(206, Generation.Two, [Type.Normal], null),
Gligar(207, Generation.Two, [Type.Ground, Type.Flying], null),
Steelix(
208,
Generation.Two,
[Type.Steel, Type.Ground],
null,
previousPokemon: 95,
),
Snubbull(209, Generation.Two, [Type.Fairy], SingleEvolution(210, 23)),
Granbull(210, Generation.Two, [Type.Fairy], null, previousPokemon: 209),
Qwilfish(211, Generation.Two, [Type.Dark, Type.Poison], null),
Scizor(
212,
Generation.Two,
[Type.Bug, Type.Steel],
null,
previousPokemon: 123,
),
Shuckle(213, Generation.Two, [Type.Bug, Type.Rock], null),
Heracross(214, Generation.Two, [Type.Bug, Type.Fighting], null),
Sneasel(215, Generation.Two, [Type.Dark, Type.Ice], null),
Teddiursa(216, Generation.Two, [Type.Normal], SingleEvolution(217, 30)),
Ursaring(217, Generation.Two, [Type.Normal], null, previousPokemon: 216),
Slugma(218, Generation.Two, [Type.Fire], SingleEvolution(219, 38)),
Magcargo(219, Generation.Two, [Type.Fire], null, previousPokemon: 218),
Swinub(220, Generation.Two, [
Type.Ice,
Type.Ground,
], SingleEvolution(221, 33)),
Piloswine(
221,
Generation.Two,
[Type.Ice, Type.Ground],
null,
previousPokemon: 220,
),
Corsola(222, Generation.Two, [Type.Ghost], null),
Remoraid(223, Generation.Two, [Type.Water], SingleEvolution(224, 25)),
Octillery(224, Generation.Two, [Type.Water], null, previousPokemon: 223),
Delibird(225, Generation.Two, [Type.Ice, Type.Flying], null),
Mantine(
226,
Generation.Two,
[Type.Water, Type.Flying],
null,
previousPokemon: 458,
),
Skarmory(227, Generation.Two, [Type.Steel, Type.Flying], null),
Houndour(228, Generation.Two, [
Type.Dark,
Type.Fire,
], SingleEvolution(229, 24)),
Houndoom(
229,
Generation.Two,
[Type.Dark, Type.Fire],
null,
previousPokemon: 228,
),
Kingdra(
230,
Generation.Two,
[Type.Water, Type.Dragon],
null,
previousPokemon: 117,
),
Phanpy(231, Generation.Two, [Type.Ground], SingleEvolution(232, 25)),
Donphan(232, Generation.Two, [Type.Ground], null, previousPokemon: 231),
Porygon2(233, Generation.Two, [Type.Normal], null, previousPokemon: 137),
Stantler(234, Generation.Two, [Type.Normal], null),
Smeargle(235, Generation.Two, [Type.Normal], null),
Tyrogue(
236,
Generation.Two,
[Type.Fighting],
BranchedEvolution([106, 107, 237], [20, 20, 20], [
[EvolutionCondition.AttackGreaterThanDefense],
[EvolutionCondition.AttackLessThanDefense],
[EvolutionCondition.AttackEqualDefense],
]),
),
Hitmontop(237, Generation.Two, [Type.Fighting], null, previousPokemon: 236),
Smoochum(238, Generation.Two, [
Type.Ice,
Type.Psychic,
], SingleEvolution(124, 30)),
Elekid(239, Generation.Two, [Type.Electric], SingleEvolution(125, 30)),
Magby(240, Generation.Two, [Type.Fire], SingleEvolution(126, 30)),
Miltank(241, Generation.Two, [Type.Normal], null),
Blissey(242, Generation.Two, [Type.Normal], null, previousPokemon: 113),
Raikou(243, Generation.Two, [Type.Electric], null),
Entei(244, Generation.Two, [Type.Fire], null),
Suicune(245, Generation.Two, [Type.Water], null),
Larvitar(246, Generation.Two, [
Type.Rock,
Type.Ground,
], SingleEvolution(247, 30)),
Pupitar(
247,
Generation.Two,
[Type.Rock, Type.Ground],
SingleEvolution(248, 55),
previousPokemon: 246,
),
Tyranitar(
248,
Generation.Two,
[Type.Rock, Type.Dark],
null,
previousPokemon: 247,
),
Lugia(249, Generation.Two, [Type.Psychic, Type.Flying], null),
Hooh(
250,
Generation.Two,
[Type.Fire, Type.Flying],
null,
properName: "Ho-Oh",
),
Celebi(251, Generation.Two, [Type.Psychic, Type.Grass], null),
Treecko(252, Generation.Three, [Type.Grass], SingleEvolution(253, 16)),
Grovyle(
253,
Generation.Three,
[Type.Grass],
SingleEvolution(254, 36),
previousPokemon: 252,
),
Sceptile(254, Generation.Three, [Type.Grass], null, previousPokemon: 253),
Torchic(255, Generation.Three, [Type.Fire], SingleEvolution(256, 16)),
Combusken(
256,
Generation.Three,
[Type.Fire, Type.Fighting],
SingleEvolution(257, 36),
previousPokemon: 255,
),
Blaziken(
257,
Generation.Three,
[Type.Fire, Type.Fighting],
null,
previousPokemon: 256,
),
Mudkip(258, Generation.Three, [Type.Water], SingleEvolution(259, 16)),
Marshtomp(
259,
Generation.Three,
[Type.Water, Type.Ground],
SingleEvolution(260, 36),
previousPokemon: 258,
),
Swampert(
260,
Generation.Three,
[Type.Water, Type.Ground],
null,
previousPokemon: 259,
),
Poochyena(261, Generation.Three, [Type.Dark], SingleEvolution(262, 18)),
Mightyena(262, Generation.Three, [Type.Dark], null, previousPokemon: 261),
Zigzagoon(263, Generation.Three, [Type.Normal], SingleEvolution(264, 20)),
Linoone(264, Generation.Three, [Type.Normal], null, previousPokemon: 263),
Wurmple(
265,
Generation.Three,
[Type.Bug],
BranchedEvolution([266, 268], [7, 7], [
[EvolutionCondition.Random, EvolutionCondition.Personality],
[EvolutionCondition.Random, EvolutionCondition.Personality],
]),
),
Silcoon(
266,
Generation.Three,
[Type.Bug],
SingleEvolution(267, 10),
previousPokemon: 265,
),
Beautifly(
267,
Generation.Three,
[Type.Bug, Type.Flying],
null,
previousPokemon: 266,
),
Cascoon(
268,
Generation.Three,
[Type.Bug],
SingleEvolution(269, 10),
previousPokemon: 265,
),
Dustox(
269,
Generation.Three,
[Type.Bug, Type.Poison],
null,
previousPokemon: 268,
),
Lotad(270, Generation.Three, [
Type.Water,
Type.Grass,
], SingleEvolution(271, 14)),
Lombre(
271,
Generation.Three,
[Type.Water, Type.Grass],
SingleEvolution(272, -1, condition: [EvolutionCondition.WaterStone]),
previousPokemon: 270,
),
Ludicolo(
272,
Generation.Three,
[Type.Water, Type.Grass],
null,
previousPokemon: 271,
),
Seedot(273, Generation.Three, [Type.Grass], SingleEvolution(274, 14)),
Nuzleaf(
274,
Generation.Three,
[Type.Grass, Type.Dark],
SingleEvolution(275, -1, condition: [EvolutionCondition.LeafStone]),
previousPokemon: 273,
),
Shiftry(
275,
Generation.Three,
[Type.Grass, Type.Dark],
null,
previousPokemon: 274,
),
Taillow(276, Generation.Three, [
Type.Normal,
Type.Flying,
], SingleEvolution(277, 22)),
Swellow(
277,
Generation.Three,
[Type.Normal, Type.Flying],
null,
previousPokemon: 276,
),
Wingull(278, Generation.Three, [
Type.Water,
Type.Flying,
], SingleEvolution(279, 25)),
Pelipper(
279,
Generation.Three,
[Type.Water, Type.Flying],
null,
previousPokemon: 278,
),
Ralts(280, Generation.Three, [
Type.Psychic,
Type.Fairy,
], SingleEvolution(281, 20)),
Kirlia(
281,
Generation.Three,
[Type.Psychic, Type.Fairy],
SingleEvolution(282, 30),
previousPokemon: 280,
),
Gardevoir(
282,
Generation.Three,
[Type.Psychic, Type.Fairy],
null,
previousPokemon: 281,
),
Surskit(283, Generation.Three, [
Type.Bug,
Type.Water,
], SingleEvolution(284, 22)),
Masquerain(
284,
Generation.Three,
[Type.Bug, Type.Flying],
null,
previousPokemon: 283,
),
Shroomish(285, Generation.Three, [Type.Grass], SingleEvolution(286, 23)),
Breloom(
286,
Generation.Three,
[Type.Grass, Type.Fighting],
null,
previousPokemon: 285,
),
Slakoth(287, Generation.Three, [Type.Normal], SingleEvolution(288, 18)),
Vigoroth(
288,
Generation.Three,
[Type.Normal],
SingleEvolution(289, 36),
previousPokemon: 287,
),
Slaking(289, Generation.Three, [Type.Normal], null, previousPokemon: 288),
Nincada(
290,
Generation.Three,
[Type.Bug, Type.Ground],
BranchedEvolution([291, 292], [20, 20], [
[],
[EvolutionCondition.EmptySlot, EvolutionCondition.PokeballInBag],
]),
),
Ninjask(
291,
Generation.Three,
[Type.Bug, Type.Flying],
null,
previousPokemon: 290,
),
Shedinja(
292,
Generation.Three,
[Type.Bug, Type.Ghost],
null,
previousPokemon: 290,
),
Whismur(293, Generation.Three, [Type.Normal], SingleEvolution(294, 20)),
Loudred(
294,
Generation.Three,
[Type.Normal],
SingleEvolution(295, 40),
previousPokemon: 293,
),
Exploud(295, Generation.Three, [Type.Normal], null, previousPokemon: 294),
Makuhita(296, Generation.Three, [Type.Fighting], SingleEvolution(297, 24)),
Hariyama(297, Generation.Three, [Type.Fighting], null, previousPokemon: 296),
Azurill(
298,
Generation.Three,
[Type.Normal, Type.Fairy],
SingleEvolution(183, -1, condition: [EvolutionCondition.HighFriendship]),
),
Nosepass(299, Generation.Three, [Type.Rock], null),
Skitty(
300,
Generation.Three,
[Type.Normal],
SingleEvolution(301, -1, condition: [EvolutionCondition.MoonStone]),
),
Delcatty(301, Generation.Three, [Type.Normal], null, previousPokemon: 300),
Sableye(302, Generation.Three, [Type.Dark, Type.Ghost], null),
Mawile(303, Generation.Three, [Type.Steel, Type.Fairy], null),
Aron(304, Generation.Three, [
Type.Steel,
Type.Rock,
], SingleEvolution(305, 32)),
Lairon(
305,
Generation.Three,
[Type.Steel, Type.Rock],
SingleEvolution(306, 42),
previousPokemon: 304,
),
Aggron(
306,
Generation.Three,
[Type.Steel, Type.Rock],
null,
previousPokemon: 305,
),
Meditite(307, Generation.Three, [
Type.Fighting,
Type.Psychic,
], SingleEvolution(308, 37)),
Medicham(
308,
Generation.Three,
[Type.Fighting, Type.Psychic],
null,
previousPokemon: 307,
),
Electrike(309, Generation.Three, [Type.Electric], SingleEvolution(310, 26)),
Manectric(310, Generation.Three, [Type.Electric], null, previousPokemon: 309),
Plusle(311, Generation.Three, [Type.Electric], null),
Minun(312, Generation.Three, [Type.Electric], null),
Volbeat(313, Generation.Three, [Type.Bug], null),
Illumise(314, Generation.Three, [Type.Bug], null),
Roselia(
315,
Generation.Three,
[Type.Grass, Type.Poison],
null,
previousPokemon: 406,
),
Gulpin(316, Generation.Three, [Type.Poison], SingleEvolution(317, 26)),
Swalot(317, Generation.Three, [Type.Poison], null, previousPokemon: 316),
Carvanha(318, Generation.Three, [
Type.Water,
Type.Dark,
], SingleEvolution(319, 30)),
Sharpedo(
319,
Generation.Three,
[Type.Water, Type.Dark],
null,
previousPokemon: 318,
),
Wailmer(320, Generation.Three, [Type.Water], SingleEvolution(321, 40)),
Wailord(321, Generation.Three, [Type.Water], null, previousPokemon: 320),
Numel(322, Generation.Three, [
Type.Fire,
Type.Ground,
], SingleEvolution(323, 33)),
Camerupt(
323,
Generation.Three,
[Type.Fire, Type.Ground],
null,
previousPokemon: 322,
),
Torkoal(324, Generation.Three, [Type.Fire], null),
Spoink(325, Generation.Three, [Type.Psychic], SingleEvolution(326, 32)),
Grumpig(326, Generation.Three, [Type.Psychic], null, previousPokemon: 325),
Spinda(327, Generation.Three, [Type.Normal], null),
Trapinch(328, Generation.Three, [Type.Ground], SingleEvolution(329, 35)),
Vibrava(
329,
Generation.Three,
[Type.Ground, Type.Dragon],
SingleEvolution(330, 45),
previousPokemon: 328,
),
Flygon(
330,
Generation.Three,
[Type.Ground, Type.Dragon],
null,
previousPokemon: 329,
),
Cacnea(331, Generation.Three, [Type.Grass], SingleEvolution(332, 32)),
Cacturne(
332,
Generation.Three,
[Type.Grass, Type.Dark],
null,
previousPokemon: 331,
),
Swablu(333, Generation.Three, [
Type.Normal,
Type.Flying,
], SingleEvolution(334, 35)),
Altaria(
334,
Generation.Three,
[Type.Dragon, Type.Flying],
null,
previousPokemon: 333,
),
Zangoose(335, Generation.Three, [Type.Normal], null),
Seviper(336, Generation.Three, [Type.Poison], null),
Lunatone(337, Generation.Three, [Type.Rock, Type.Psychic], null),
Solrock(338, Generation.Three, [Type.Rock, Type.Psychic], null),
Barboach(339, Generation.Three, [
Type.Water,
Type.Ground,
], SingleEvolution(340, 30)),
Whiscash(
340,
Generation.Three,
[Type.Water, Type.Ground],
null,
previousPokemon: 339,
),
Corphish(341, Generation.Three, [Type.Water], SingleEvolution(342, 30)),
Crawdaunt(
342,
Generation.Three,
[Type.Water, Type.Dark],
null,
previousPokemon: 341,
),
Baltoy(343, Generation.Three, [
Type.Ground,
Type.Psychic,
], SingleEvolution(344, 36)),
Claydol(
344,
Generation.Three,
[Type.Ground, Type.Psychic],
null,
previousPokemon: 343,
),
Lileep(345, Generation.Three, [
Type.Rock,
Type.Grass,
], SingleEvolution(346, 40)),
Cradily(
346,
Generation.Three,
[Type.Rock, Type.Grass],
null,
previousPokemon: 345,
),
Anorith(347, Generation.Three, [
Type.Rock,
Type.Bug,
], SingleEvolution(348, 40)),
Armaldo(
348,
Generation.Three,
[Type.Rock, Type.Bug],
null,
previousPokemon: 347,
),
Feebas(
349,
Generation.Three,
[Type.Water],
SingleEvolution(
350,
-1,
condition: [
EvolutionCondition.Trading,
EvolutionCondition.Holding,
EvolutionCondition.PrismScale,
EvolutionCondition.Or,
EvolutionCondition.MaxBeauty,
],
),
),
Milotic(350, Generation.Three, [Type.Water], null, previousPokemon: 349),
Castform(
351,
Generation.Three,
[Type.Normal],
null,
extraVariants: ["castform_rainy", "castform_snowy", "castform_sunny"],
),
Kecleon(352, Generation.Three, [Type.Normal], null),
Shuppet(353, Generation.Three, [Type.Ghost], SingleEvolution(354, 37)),
Banette(354, Generation.Three, [Type.Ghost], null, previousPokemon: 353),
Duskull(355, Generation.Three, [Type.Ghost], SingleEvolution(356, 37)),
Dusclops(356, Generation.Three, [Type.Ghost], null, previousPokemon: 355),
Tropius(357, Generation.Three, [Type.Grass, Type.Flying], null),
Chimecho(358, Generation.Three, [Type.Psychic], null),
Absol(359, Generation.Three, [Type.Dark], null),
Wynaut(360, Generation.Three, [Type.Psychic], SingleEvolution(202, 15)),
Snorunt(361, Generation.Three, [
Type.Ice,
], BranchedEvolution([362], [42], [[]])),
Glalie(362, Generation.Three, [Type.Ice], null, previousPokemon: 361),
Spheal(363, Generation.Three, [
Type.Ice,
Type.Water,
], SingleEvolution(364, 32)),
Sealeo(
364,
Generation.Three,
[Type.Ice, Type.Water],
SingleEvolution(365, 44),
previousPokemon: 363,
),
Walrein(
365,
Generation.Three,
[Type.Ice, Type.Water],
null,
previousPokemon: 364,
),
Clamperl(
366,
Generation.Three,
[Type.Water],
BranchedEvolution([367, 368], [-1, -1], [
[
EvolutionCondition.Trading,
EvolutionCondition.Holding,
EvolutionCondition.DeepSeaTooth,
],
[
EvolutionCondition.Trading,
EvolutionCondition.Holding,
EvolutionCondition.DeepSeaScale,
],
]),
),
Huntail(367, Generation.Three, [Type.Water], null, previousPokemon: 366),
Gorebyss(368, Generation.Three, [Type.Water], null, previousPokemon: 366),
Relicanth(369, Generation.Three, [Type.Water, Type.Rock], null),
Luvdisc(370, Generation.Three, [Type.Water], null),
Bagon(371, Generation.Three, [Type.Dragon], SingleEvolution(372, 30)),
Shelgon(
372,
Generation.Three,
[Type.Dragon],
SingleEvolution(373, 50),
previousPokemon: 371,
),
Salamence(
373,
Generation.Three,
[Type.Dragon, Type.Flying],
null,
previousPokemon: 372,
),
Beldum(374, Generation.Three, [
Type.Steel,
Type.Psychic,
], SingleEvolution(375, 20)),
Metang(
375,
Generation.Three,
[Type.Steel, Type.Psychic],
SingleEvolution(376, 45),
previousPokemon: 374,
),
Metagross(
376,
Generation.Three,
[Type.Steel, Type.Psychic],
null,
previousPokemon: 375,
),
Regirock(377, Generation.Three, [Type.Rock], null),
Regice(378, Generation.Three, [Type.Ice], null),
Registeel(379, Generation.Three, [Type.Steel], null),
Latias(380, Generation.Three, [Type.Dragon, Type.Psychic], null),
Latios(381, Generation.Three, [Type.Dragon, Type.Psychic], null),
Kyogre(382, Generation.Three, [Type.Water], null),
Groudon(383, Generation.Three, [Type.Ground], null),
Rayquaza(384, Generation.Three, [Type.Dragon, Type.Flying], null),
Jirachi(385, Generation.Three, [Type.Steel, Type.Psychic], null),
Deoxys(
386,
Generation.Three,
[Type.Psychic],
null,
extraVariants: ["deoxys-attack", "deoxys-defense", "deoxys-speed"],
);
final int id;
final String properName;
final Generation generation;
final List<Type> types;
final Evolution? evolution;
final int dexID;
final int previousPokemon;
final List<String> extraVariants;
final List<Location> locations;
final List<DexEntry> dexEntries;
bool get hasEvolutions => evolution != null;
const Pokemon(
this.id,
this.generation,
this.types,
this.evolution, {
this.dexID = -1,
this.properName = "",
this.previousPokemon = -1,
this.extraVariants = const [],
this.locations = const [],
this.dexEntries = const [],
});
String get pokemonName => properName == "" ? name : properName;
int get pokeDexID => dexID == -1 ? id : dexID;
String toDexPath() {
if (this.id == Pokemon.Unown.id) return SessionData.getRandomUnownSprite();
return 'assets/sprites/${printName().replaceAll("", "-f").replaceAll("", "-m").toLowerCase()}.png';
}
String printName({var proper = false}) {
String sRet;
if (!proper) {
sRet = name.replaceAll("_", " ");
} else {
sRet = pokemonName;
}
if (sRet.endsWith("F")) sRet = "${sRet.substring(0, sRet.length - 1)}";
if (sRet.endsWith("M")) sRet = "${sRet.substring(0, sRet.length - 1)}";
return sRet;
}
}