Add evolution backtracing

This commit is contained in:
zontreck 2025-03-23 20:28:22 -07:00
parent e968d61e8b
commit 3f4462435b
3 changed files with 320 additions and 82 deletions

View file

@ -1,7 +1,7 @@
import 'dart:io';
class Constants {
static const VERSION = "1.0.032325+1956";
static const VERSION = "1.0.032325+2027";
static bool get isMobile => Platform.isAndroid || Platform.isIOS;
}

View file

@ -280,77 +280,176 @@ enum Pokemon {
Type.Grass,
Type.Poison,
], SingleEvolution(2, 16)),
Ivysaur(2, Generation.One, [Type.Grass, Type.Poison], SingleEvolution(3, 32)),
Venusaur(3, Generation.One, [Type.Grass, Type.Poison], null),
Ivysaur(
2,
Generation.One,
[Type.Grass, Type.Poison],
SingleEvolution(3, 32),
previousPokemon: 1,
),
Venusaur(
3,
Generation.One,
[Type.Grass, Type.Poison],
null,
previousPokemon: 2,
),
Charmander(4, Generation.One, [Type.Fire], SingleEvolution(5, 16)),
Charmeleon(5, Generation.One, [Type.Fire], SingleEvolution(6, 36)),
Charizard(6, Generation.One, [Type.Fire, Type.Flying], null),
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)),
Blastoise(9, Generation.One, [Type.Water], null),
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)),
Metapod(11, Generation.One, [Type.Bug], SingleEvolution(12, 10)),
Butterfree(12, Generation.One, [Type.Bug, Type.Flying], null),
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)),
Beedrill(15, Generation.One, [Type.Bug, Type.Poison], null),
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)),
Pidgeot(18, Generation.One, [Type.Normal, Type.Flying], null),
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),
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),
Fearow(
22,
Generation.One,
[Type.Normal, Type.Flying],
null,
previousPokemon: 21,
),
Pikachu(
25,
Generation.One,
[Type.Electric],
SingleEvolution(26, -1, condition: [EvolutionCondition.ThunderStone]),
),
Raichu(26, Generation.One, [Type.Electric], null),
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),
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)),
NidoQueen(31, Generation.One, [Type.Poison, Type.Ground], null),
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)),
NidoKing(34, Generation.One, [Type.Poison, Type.Ground], null),
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]),
),
Clefable(36, Generation.One, [Type.Fairy], null),
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),
NineTales(38, Generation.One, [Type.Fire], null, previousPokemon: 37),
Jigglypuff(
39,
Generation.One,
[Type.Fairy],
SingleEvolution(40, -1, condition: [EvolutionCondition.MoonStone]),
),
WigglyTuff(40, Generation.One, [Type.Fairy], null),
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], null),
Golbat(
42,
Generation.One,
[Type.Poison, Type.Flying],
null,
previousPokemon: 41,
),
Oddish(43, Generation.One, [
Type.Poison,
Type.Grass,
@ -360,45 +459,73 @@ enum Pokemon {
Generation.One,
[Type.Poison, Type.Grass],
SingleEvolution(45, -1, condition: [EvolutionCondition.LeafStone]),
previousPokemon: 43,
),
Vileplume(
45,
Generation.One,
[Type.Poison, Type.Grass],
null,
previousPokemon: 44,
),
Vileplume(45, Generation.One, [Type.Poison, Type.Grass], null),
Paras(46, Generation.One, [Type.Bug, Type.Grass], SingleEvolution(47, 24)),
Parasect(47, Generation.One, [Type.Bug, Type.Grass], null),
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),
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),
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),
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),
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),
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),
Arcanine(59, Generation.One, [Type.Fire], null, previousPokemon: 58),
Poliwag(60, Generation.One, [Type.Water], SingleEvolution(61, 25)),
Poliwhirl(
61,
Generation.One,
[Type.Water],
SingleEvolution(62, -1, condition: [EvolutionCondition.WaterStone]),
previousPokemon: 60,
),
Poliwrath(62, Generation.One, [Type.Water], null),
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])),
Alakazam(65, Generation.One, [Type.Psychic], null),
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])),
Machamp(68, Generation.One, [Type.Fighting], null),
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,
@ -408,34 +535,68 @@ enum Pokemon {
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,
),
Victreebel(71, Generation.One, [Type.Grass, Type.Poison], null),
Tentacool(72, Generation.One, [
Type.Water,
Type.Poison,
], SingleEvolution(73, 30)),
Tentacruel(73, Generation.One, [Type.Water, Type.Poison], null),
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])),
Golem(76, Generation.One, [Type.Rock, Type.Ground], null),
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),
Rapidash(78, Generation.One, [Type.Fire], null, previousPokemon: 77),
Slowpoke(79, Generation.One, [
Type.Water,
Type.Psychic,
], SingleEvolution(80, 37)),
Slowbro(80, Generation.One, [Type.Water, Type.Psychic], null),
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),
Magneton(
82,
Generation.One,
[Type.Electric, Type.Steel],
null,
previousPokemon: 81,
),
Farfetchd(
83,
Generation.One,
@ -447,48 +608,81 @@ enum Pokemon {
Type.Normal,
Type.Flying,
], SingleEvolution(85, 31)),
Dodrio(85, Generation.One, [Type.Normal, Type.Flying], null),
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),
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),
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),
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])),
Gengar(94, Generation.One, [Type.Ghost, Type.Poison], null),
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], null),
Drowzee(96, Generation.One, [Type.Psychic], SingleEvolution(97, 26)),
Hypno(97, Generation.One, [Type.Psychic], null),
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),
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),
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),
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),
Marowak(105, Generation.One, [Type.Ground], null, previousPokemon: 104),
Hitmonlee(106, Generation.One, [Type.Fighting], null),
Hitmonchan(107, Generation.One, [Type.Fighting], null),
Lickitung(108, Generation.One, [Type.Normal], null),
@ -498,19 +692,25 @@ enum Pokemon {
[Type.Poison],
SingleEvolution(110, 35, condition: [EvolutionCondition.OutsideGalar]),
),
Weezing(110, Generation.One, [Type.Poison], null),
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),
Rhydon(
112,
Generation.One,
[Type.Ground, Type.Rock],
null,
previousPokemon: 111,
),
Chansey(113, Generation.One, [Type.Normal], null),
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], null),
Seadra(117, Generation.One, [Type.Water], null, previousPokemon: 116),
Goldeen(118, Generation.One, [Type.Water], SingleEvolution(119, 33)),
Seaking(119, Generation.One, [Type.Water], null),
Seaking(119, Generation.One, [Type.Water], null, previousPokemon: 118),
Staryu(
120,
Generation.One,
@ -524,6 +724,7 @@ enum Pokemon {
[Type.Psychic, Type.Fairy],
null,
properName: "Mr. Mime",
previousPokemon: 120,
),
Scyther(123, Generation.One, [Type.Bug, Type.Flying], null),
Jynx(124, Generation.One, [Type.Ice, Type.Psychic], null),
@ -532,7 +733,13 @@ enum Pokemon {
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),
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(
@ -545,28 +752,52 @@ enum Pokemon {
[EvolutionCondition.FireStone],
]),
),
Vaporeon(134, Generation.One, [Type.Water], null),
Jolteon(135, Generation.One, [Type.Electric], null),
Flareon(136, Generation.One, [Type.Fire], null),
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], null),
Omanyte(138, Generation.One, [
Type.Rock,
Type.Water,
], SingleEvolution(139, 40)),
Omastar(139, Generation.One, [Type.Rock, Type.Water], null),
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),
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)),
Dragonite(149, Generation.One, [Type.Dragon, Type.Flying], null),
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);
@ -576,6 +807,7 @@ enum Pokemon {
final List<Type> types;
final Evolution? evolution;
final int dexID;
final int previousPokemon;
bool get hasEvolutions => evolution != null;
const Pokemon(
this.id,
@ -584,6 +816,7 @@ enum Pokemon {
this.evolution, {
this.dexID = -1,
this.properName = "",
this.previousPokemon = -1,
});
String get pokemonName => properName == "" ? name : properName;
@ -635,6 +868,11 @@ enum Pokemon {
List<Pokemon> Evs = [];
if (previousPokemon != -1 && subID == 0) {
Pokemon pkmn = Pokemon.values.where((x) => x.id == previousPokemon).first;
return pkmn.getEvolutions(0);
}
//print("Processing evolutions for ${pokemonName}");
if (evolution is SingleEvolution) {

View file

@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.0.032325+1956
version: 1.0.032325+2027
environment:
sdk: ^3.7.0