PokeDex/lib/pokemon.dart
2025-06-02 16:52:27 -07:00

1922 lines
46 KiB
Dart

// ignore_for_file: constant_identifier_names
import 'package:pokedex/Session.dart';
import 'package:pokedex/dexMisc.dart';
import 'package:pokedex/generations/Gen1Data.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: Gen1Locations.Bulbasaur,
dexEntries: Gen1DexData.Bulbasaur,
dexID:
1, // Temporarily added to prevent dexID from being cleaned up by dart fix.
),
Ivysaur(
2,
Generation.One,
[Type.Grass, Type.Poison],
SingleEvolution(3, 32),
previousPokemon: 1,
locations: Gen1Locations.Ivysaur,
dexEntries: Gen1DexData.Ivysaur,
),
Venusaur(
3,
Generation.One,
[Type.Grass, Type.Poison],
null,
previousPokemon: 2,
locations: Gen1Locations.Venusaur,
dexEntries: Gen1DexData.Venusaur,
),
Charmander(
4,
Generation.One,
[Type.Fire],
SingleEvolution(5, 16),
locations: Gen1Locations.Charmander,
dexEntries: Gen1DexData.Charmander,
),
Charmeleon(
5,
Generation.One,
[Type.Fire],
SingleEvolution(6, 36),
previousPokemon: 4,
locations: Gen1Locations.Charmeleon,
dexEntries: Gen1DexData.Charmeleon,
),
Charizard(
6,
Generation.One,
[Type.Fire, Type.Flying],
null,
previousPokemon: 5,
locations: Gen1Locations.Charizard,
dexEntries: Gen1DexData.Charizard,
),
Squirtle(
7,
Generation.One,
[Type.Water],
SingleEvolution(8, 16),
locations: Gen1Locations.Squirtle,
dexEntries: Gen1DexData.Squirtle,
),
Wartortle(
8,
Generation.One,
[Type.Water],
SingleEvolution(9, 36),
previousPokemon: 7,
locations: Gen1Locations.Wartortle,
dexEntries: Gen1DexData.Wartortle,
),
Blastoise(
9,
Generation.One,
[Type.Water],
null,
previousPokemon: 8,
locations: Gen1Locations.Blastoise,
dexEntries: Gen1DexData.Blastoise,
),
Caterpie(
10,
Generation.One,
[Type.Bug],
SingleEvolution(11, 7),
locations: Gen1Locations.Caterpie,
dexEntries: Gen1DexData.Caterpie,
),
Metapod(
11,
Generation.One,
[Type.Bug],
SingleEvolution(12, 10),
previousPokemon: 10,
locations: Gen1Locations.Metapod,
dexEntries: Gen1DexData.Metapod,
),
Butterfree(
12,
Generation.One,
[Type.Bug, Type.Flying],
null,
previousPokemon: 11,
locations: Gen1Locations.Butterfree,
dexEntries: Gen1DexData.Butterfree,
),
Weedle(
13,
Generation.One,
[Type.Bug, Type.Poison],
SingleEvolution(14, 7),
locations: Gen1Locations.Weedle,
dexEntries: Gen1DexData.Weedle,
),
Kakuna(
14,
Generation.One,
[Type.Bug, Type.Poison],
SingleEvolution(15, 10),
previousPokemon: 13,
locations: Gen1Locations.Kakuna,
dexEntries: Gen1DexData.Kakuna,
),
Beedrill(
15,
Generation.One,
[Type.Bug, Type.Poison],
null,
previousPokemon: 14,
locations: Gen1Locations.Beedrill,
dexEntries: Gen1DexData.Beedrill,
),
Pidgey(
16,
Generation.One,
[Type.Normal, Type.Flying],
SingleEvolution(17, 18),
locations: Gen1Locations.Pidgey,
dexEntries: Gen1DexData.Pidgey,
),
Pidgeotto(
17,
Generation.One,
[Type.Normal, Type.Flying],
SingleEvolution(18, 36),
previousPokemon: 16,
locations: Gen1Locations.Pidgeotto,
dexEntries: Gen1DexData.Pidgeotto,
),
Pidgeot(
18,
Generation.One,
[Type.Normal, Type.Flying],
null,
previousPokemon: 17,
locations: Gen1Locations.Pidgeot,
dexEntries: Gen1DexData.Pidgeot,
),
Rattata(
19,
Generation.One,
[Type.Normal],
SingleEvolution(20, 20),
locations: Gen1Locations.Rattata,
dexEntries: Gen1DexData.Rattata,
),
Raticate(
20,
Generation.One,
[Type.Normal],
null,
previousPokemon: 19,
locations: Gen1Locations.Raticate,
dexEntries: Gen1DexData.Raticate,
),
Spearow(
21,
Generation.One,
[Type.Normal, Type.Flying],
SingleEvolution(22, 20),
locations: Gen1Locations.Spearow,
dexEntries: Gen1DexData.Spearow,
),
Fearow(
22,
Generation.One,
[Type.Normal, Type.Flying],
null,
previousPokemon: 21,
locations: Gen1Locations.Fearow,
dexEntries: Gen1DexData.Fearow,
),
Ekans(
23,
Generation.One,
[Type.Poison],
SingleEvolution(24, 22),
locations: Gen1Locations.Ekans,
dexEntries: Gen1DexData.Ekans,
),
Arbok(
24,
Generation.One,
[Type.Poison],
null,
previousPokemon: 23,
locations: Gen1Locations.Arbok,
dexEntries: Gen1DexData.Arbok,
),
Pikachu(
25,
Generation.One,
[Type.Electric],
SingleEvolution(26, -1, condition: [EvolutionCondition.ThunderStone]),
previousPokemon: 172,
locations: Gen1Locations.Pikachu,
dexEntries: Gen1DexData.Pikachu,
),
Raichu(
26,
Generation.One,
[Type.Electric],
null,
previousPokemon: 25,
locations: Gen1Locations.Raichu,
dexEntries: Gen1DexData.Raichu,
),
Sandshrew(
27,
Generation.One,
[Type.Ground],
SingleEvolution(28, 22),
locations: Gen1Locations.Sandshrew,
dexEntries: Gen1DexData.Sandshrew,
),
Sandslash(
28,
Generation.One,
[Type.Ground],
null,
previousPokemon: 27,
locations: Gen1Locations.Sandslash,
dexEntries: Gen1DexData.Sandslash,
),
NidoranF(
29,
Generation.One,
[Type.Poison],
SingleEvolution(30, 16),
locations: Gen1Locations.NidoranF,
dexEntries: Gen1DexData.NidoranF,
),
Nidorina(
30,
Generation.One,
[Type.Poison],
SingleEvolution(31, 36),
previousPokemon: 29,
locations: Gen1Locations.Nidorina,
dexEntries: Gen1DexData.Nidorina,
),
NidoQueen(
31,
Generation.One,
[Type.Poison, Type.Ground],
null,
previousPokemon: 30,
locations: Gen1Locations.Nidoqueen,
dexEntries: Gen1DexData.Nidoqueen,
),
NidoranM(
32,
Generation.One,
[Type.Poison],
SingleEvolution(33, 16),
locations: Gen1Locations.NidoranM,
dexEntries: Gen1DexData.NidoranM,
),
Nidorino(
33,
Generation.One,
[Type.Poison],
SingleEvolution(34, 36),
previousPokemon: 32,
locations: Gen1Locations.Nidorino,
dexEntries: Gen1DexData.Nidorino,
),
NidoKing(
34,
Generation.One,
[Type.Poison, Type.Ground],
null,
previousPokemon: 33,
locations: Gen1Locations.Nidoking,
dexEntries: Gen1DexData.Nidoking,
),
Clefairy(
35,
Generation.One,
[Type.Fairy],
SingleEvolution(36, -1, condition: [EvolutionCondition.MoonStone]),
previousPokemon: 173,
locations: Gen1Locations.Clefairy,
dexEntries: Gen1DexData.Clefairy,
),
Clefable(
36,
Generation.One,
[Type.Fairy],
null,
previousPokemon: 35,
locations: Gen1Locations.Clefable,
dexEntries: Gen1DexData.Clefable,
),
Vulpix(
37,
Generation.One,
[Type.Fire],
SingleEvolution(38, -1, condition: [EvolutionCondition.FireStone]),
locations: Gen1Locations.Vulpix,
dexEntries: Gen1DexData.Vulpix,
),
NineTales(
38,
Generation.One,
[Type.Fire],
null,
previousPokemon: 37,
locations: Gen1Locations.Ninetales,
dexEntries: Gen1DexData.Ninetales,
),
Jigglypuff(
39,
Generation.One,
[Type.Fairy],
SingleEvolution(40, -1, condition: [EvolutionCondition.MoonStone]),
previousPokemon: 174,
locations: Gen1Locations.Jigglypuff,
dexEntries: Gen1DexData.Jigglypuff,
),
WigglyTuff(
40,
Generation.One,
[Type.Fairy],
null,
previousPokemon: 39,
locations: Gen1Locations.Wigglytuff,
dexEntries: Gen1DexData.Wigglytuff,
),
Zubat(
41,
Generation.One,
[Type.Poison, Type.Flying],
SingleEvolution(42, 22),
locations: Gen1Locations.Zubat,
dexEntries: Gen1DexData.Zubat,
),
Golbat(
42,
Generation.One,
[Type.Poison, Type.Flying],
SingleEvolution(169, -1, condition: [EvolutionCondition.HighFriendship]),
previousPokemon: 41,
locations: Gen1Locations.Golbat,
dexEntries: Gen1DexData.Golbat,
),
Oddish(
43,
Generation.One,
[Type.Poison, Type.Grass],
SingleEvolution(44, 21),
locations: Gen1Locations.Oddish,
dexEntries: Gen1DexData.Oddish,
),
Gloom(
44,
Generation.One,
[Type.Poison, Type.Grass],
BranchedEvolution([45, 182], [-1, -1], [
[EvolutionCondition.LeafStone],
[EvolutionCondition.SunStone],
]),
previousPokemon: 43,
locations: Gen1Locations.Gloom,
dexEntries: Gen1DexData.Gloom,
),
Vileplume(
45,
Generation.One,
[Type.Poison, Type.Grass],
null,
previousPokemon: 44,
locations: Gen1Locations.Vileplume,
dexEntries: Gen1DexData.Vileplume,
),
Paras(
46,
Generation.One,
[Type.Bug, Type.Grass],
SingleEvolution(47, 24),
locations: Gen1Locations.Paras,
dexEntries: Gen1DexData.Paras,
),
Parasect(
47,
Generation.One,
[Type.Bug, Type.Grass],
null,
previousPokemon: 46,
locations: Gen1Locations.Parasect,
dexEntries: Gen1DexData.Parasect,
),
Venonat(
48,
Generation.One,
[Type.Bug, Type.Poison],
SingleEvolution(49, 31),
locations: Gen1Locations.Venonat,
dexEntries: Gen1DexData.Venonat,
),
Venomoth(
49,
Generation.One,
[Type.Bug, Type.Poison],
null,
previousPokemon: 48,
locations: Gen1Locations.Venomoth,
dexEntries: Gen1DexData.Venomoth,
),
Diglett(
50,
Generation.One,
[Type.Ground],
SingleEvolution(51, 26),
locations: Gen1Locations.Diglett,
dexEntries: Gen1DexData.Diglett,
),
Dugtrio(
51,
Generation.One,
[Type.Ground],
null,
previousPokemon: 50,
locations: Gen1Locations.Dugtrio,
dexEntries: Gen1DexData.Dugtrio,
),
Meowth(
52,
Generation.One,
[Type.Normal],
SingleEvolution(53, 28),
locations: Gen1Locations.Meowth,
dexEntries: Gen1DexData.Meowth,
),
Persian(
53,
Generation.One,
[Type.Normal],
null,
previousPokemon: 52,
locations: Gen1Locations.Persian,
dexEntries: Gen1DexData.Persian,
),
Psyduck(
54,
Generation.One,
[Type.Water],
SingleEvolution(55, 33),
locations: Gen1Locations.Psyduck,
dexEntries: Gen1DexData.Psyduck,
),
Golduck(
55,
Generation.One,
[Type.Water],
null,
previousPokemon: 54,
locations: Gen1Locations.Golduck,
dexEntries: Gen1DexData.Golduck,
),
Mankey(
56,
Generation.One,
[Type.Fighting],
SingleEvolution(57, 28),
locations: Gen1Locations.Mankey,
dexEntries: Gen1DexData.Mankey,
),
Primeape(
57,
Generation.One,
[Type.Fighting],
null,
previousPokemon: 56,
locations: Gen1Locations.Primeape,
dexEntries: Gen1DexData.Primeape,
),
Growlithe(
58,
Generation.One,
[Type.Fire],
SingleEvolution(59, -1, condition: [EvolutionCondition.FireStone]),
locations: Gen1Locations.Growlithe,
dexEntries: Gen1DexData.Growlithe,
),
Arcanine(
59,
Generation.One,
[Type.Fire],
null,
previousPokemon: 58,
locations: Gen1Locations.Arcanine,
dexEntries: Gen1DexData.Arcanine,
),
Poliwag(
60,
Generation.One,
[Type.Water],
SingleEvolution(61, 25),
locations: Gen1Locations.Poliwag,
dexEntries: Gen1DexData.Poliwag,
),
Poliwhirl(
61,
Generation.One,
[Type.Water],
BranchedEvolution([62, 186], [-1, -1], [
[EvolutionCondition.WaterStone],
[
EvolutionCondition.Trading,
EvolutionCondition.Holding,
EvolutionCondition.KingsRock,
],
]),
previousPokemon: 60,
locations: Gen1Locations.Poliwhirl,
dexEntries: Gen1DexData.Poliwhirl,
),
Poliwrath(
62,
Generation.One,
[Type.Water],
null,
previousPokemon: 61,
locations: Gen1Locations.Poliwrath,
dexEntries: Gen1DexData.Poliwrath,
),
Abra(
63,
Generation.One,
[Type.Psychic],
SingleEvolution(64, 16),
locations: Gen1Locations.Abra,
dexEntries: Gen1DexData.Abra,
),
Kadabra(
64,
Generation.One,
[Type.Psychic],
SingleEvolution(65, -1, condition: [EvolutionCondition.Trading]),
previousPokemon: 63,
locations: Gen1Locations.Kadabra,
dexEntries: Gen1DexData.Kadabra,
),
Alakazam(
65,
Generation.One,
[Type.Psychic],
null,
previousPokemon: 64,
locations: Gen1Locations.Alakazam,
dexEntries: Gen1DexData.Alakazam,
),
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.properName = "",
this.previousPokemon = -1,
this.extraVariants = const [],
this.locations = const [],
this.dexEntries = const [],
this.dexID = -1,
});
String get pokemonName => properName == "" ? name : properName;
int get pokeDexID => dexID == -1 ? id : dexID;
String toDexPath() {
if (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;
}
}