// 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 types; final Evolution? evolution; final int dexID; final int previousPokemon; final List extraVariants; final List locations; final List 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; } }