From a43b07c5fcc489af6924220d811dd27cad630379 Mon Sep 17 00:00:00 2001 From: Sergiotarxz Date: Thu, 7 Mar 2024 09:38:16 +0100 Subject: [PATCH] Missing files. --- lib/GEmeTool/Constants.pm | 23 + lib/GEmeTool/Save/Pokemon.pm | 28 ++ lib/GEmeTool/Save/PokemonBox.pm | 53 +++ lib/GEmeTool/Save/PokemonPC.pm | 55 +++ lib/Rsaves/Constants/Emerald/Species.pm | 532 ++++++++++++++++++++++++ 5 files changed, 691 insertions(+) create mode 100644 lib/GEmeTool/Constants.pm create mode 100644 lib/GEmeTool/Save/Pokemon.pm create mode 100644 lib/GEmeTool/Save/PokemonBox.pm create mode 100644 lib/GEmeTool/Save/PokemonPC.pm create mode 100644 lib/Rsaves/Constants/Emerald/Species.pm diff --git a/lib/GEmeTool/Constants.pm b/lib/GEmeTool/Constants.pm new file mode 100644 index 0000000..a008d83 --- /dev/null +++ b/lib/GEmeTool/Constants.pm @@ -0,0 +1,23 @@ +package GEmeTool::Constants; + +our @wallpapers = ( + 'FOREST', + 'CITY', + 'DESERT', + 'SAVANNA', + 'CRAG', + 'VOLCANO', + 'SNOW', + 'CAVE', + 'BEACH', + 'SEAFLOOR', + 'RIVER', + 'SKY', + 'POLKADOT', + 'POKECENTER', + 'MACHINE', + 'PLAIN', + 'FRIENDS' +); + +1; diff --git a/lib/GEmeTool/Save/Pokemon.pm b/lib/GEmeTool/Save/Pokemon.pm new file mode 100644 index 0000000..f612bc2 --- /dev/null +++ b/lib/GEmeTool/Save/Pokemon.pm @@ -0,0 +1,28 @@ +package GEmeTool::Save::Pokemon; + +use v5.16.3; + +use strict; +use warnings; + +use Moo; +use Rsaves; +use Rsaves::Constants::Emerald::Species; + +has _pokemon => ( + is => 'rw', +); + +sub species { + my $self = shift; + my $pokemon = $self->_pokemon; + my $substruct_0 = Rsaves::find_pokemon_substruct($pokemon->{substructures}, 0); + return $substruct_0->{species}; +} + +sub get_image { + my $self = shift; + my $pokemon_name = $Rsaves::Constants::Emerald::Species::SPECIES[$self->species]; + return "pokeemerald/graphics/pokemon/@{[lc($pokemon_name)]}/icon.png"; +} +1; diff --git a/lib/GEmeTool/Save/PokemonBox.pm b/lib/GEmeTool/Save/PokemonBox.pm new file mode 100644 index 0000000..1e27714 --- /dev/null +++ b/lib/GEmeTool/Save/PokemonBox.pm @@ -0,0 +1,53 @@ +package GEmeTool::Save::PokemonBox; + +use v5.16.3; + +use strict; +use warnings; + +use Moo; + +use GEmeTool::Save::Pokemon; + +has _wallpaper => ( + is => 'rw', + required => 1, +); + +has _name => ( + is => 'rw', + required => 1, +); + +has _box => ( + is => 'rw', + required => 1, +); + +sub wallpaper { + my $self = shift; + my $arg = shift; + if ( defined $arg ) { + ${ $self->_wallpaper } = $arg; + } + return ${ $self->_wallpaper }; +} + +sub name { + my $self = shift; + my $arg = shift; + if ( defined $arg ) { + ${ $self->_name } = $arg; + } + return ${ $self->_name }; +} + +sub get_pokemon { + my $self = shift; + my $number = shift; + if ($number < 0 || $number > 29) { + die "Pokemon boxes can only hold pokemon from 0 to 29, index $number invalid."; + } + return GEmeTool::Save::Pokemon->new( _pokemon => $self->_box->[$number] ); +} +1; diff --git a/lib/GEmeTool/Save/PokemonPC.pm b/lib/GEmeTool/Save/PokemonPC.pm new file mode 100644 index 0000000..4836c5e --- /dev/null +++ b/lib/GEmeTool/Save/PokemonPC.pm @@ -0,0 +1,55 @@ +package GEmeTool::Save::PokemonPC; + +use v5.16.3; + +use strict; +use warnings; + +use Moo; +use Rsaves; + +use GEmeTool::Save::PokemonBox; + +has _pc => ( + is => 'rw', + required => 1, +); + +has _save => ( + is => 'rw', + required => 1, +); + +sub boxes { + my $self = shift; + my $pc = $self->_pc; + my @boxes; + for ( my $i = 0 ; $i < 14 ; $i++ ) { + $boxes[$i] = $self->get_box($i); + } + return \@boxes; +} + +sub get_box { + my $self = shift; + my $number = shift; + if ($number < 0 || $number > 13) { + die "Bad box number $number."; + } + my $pc = $self->_pc; + my $wallpaper = \$pc->{wallpapers}[$number]; + my $name = \$pc->{boxes_names}[$number]; + my $box = $pc->{boxes}[$number]; + my $return = GEmeTool::Save::PokemonBox->new( + _wallpaper => $wallpaper, + _name => $name, + _box => $box + ); + return $return; +} + +sub save { + my $self = shift; + $self->_save->($self->_pc); +} +1; diff --git a/lib/Rsaves/Constants/Emerald/Species.pm b/lib/Rsaves/Constants/Emerald/Species.pm new file mode 100644 index 0000000..2c8ef47 --- /dev/null +++ b/lib/Rsaves/Constants/Emerald/Species.pm @@ -0,0 +1,532 @@ +package Rsaves::Constants::Emerald::Species; + +use v5.16.3; + +use strict; +use warnings; + +our $SPECIES_NONE = 0; +our $SPECIES_BULBASAUR = 1; +our $SPECIES_IVYSAUR = 2; +our $SPECIES_VENUSAUR = 3; +our $SPECIES_CHARMANDER = 4; +our $SPECIES_CHARMELEON = 5; +our $SPECIES_CHARIZARD = 6; +our $SPECIES_SQUIRTLE = 7; +our $SPECIES_WARTORTLE = 8; +our $SPECIES_BLASTOISE = 9; +our $SPECIES_CATERPIE = 10; +our $SPECIES_METAPOD = 11; +our $SPECIES_BUTTERFREE = 12; +our $SPECIES_WEEDLE = 13; +our $SPECIES_KAKUNA = 14; +our $SPECIES_BEEDRILL = 15; +our $SPECIES_PIDGEY = 16; +our $SPECIES_PIDGEOTTO = 17; +our $SPECIES_PIDGEOT = 18; +our $SPECIES_RATTATA = 19; +our $SPECIES_RATICATE = 20; +our $SPECIES_SPEAROW = 21; +our $SPECIES_FEAROW = 22; +our $SPECIES_EKANS = 23; +our $SPECIES_ARBOK = 24; +our $SPECIES_PIKACHU = 25; +our $SPECIES_RAICHU = 26; +our $SPECIES_SANDSHREW = 27; +our $SPECIES_SANDSLASH = 28; +our $SPECIES_NIDORAN_F = 29; +our $SPECIES_NIDORINA = 30; +our $SPECIES_NIDOQUEEN = 31; +our $SPECIES_NIDORAN_M = 32; +our $SPECIES_NIDORINO = 33; +our $SPECIES_NIDOKING = 34; +our $SPECIES_CLEFAIRY = 35; +our $SPECIES_CLEFABLE = 36; +our $SPECIES_VULPIX = 37; +our $SPECIES_NINETALES = 38; +our $SPECIES_JIGGLYPUFF = 39; +our $SPECIES_WIGGLYTUFF = 40; +our $SPECIES_ZUBAT = 41; +our $SPECIES_GOLBAT = 42; +our $SPECIES_ODDISH = 43; +our $SPECIES_GLOOM = 44; +our $SPECIES_VILEPLUME = 45; +our $SPECIES_PARAS = 46; +our $SPECIES_PARASECT = 47; +our $SPECIES_VENONAT = 48; +our $SPECIES_VENOMOTH = 49; +our $SPECIES_DIGLETT = 50; +our $SPECIES_DUGTRIO = 51; +our $SPECIES_MEOWTH = 52; +our $SPECIES_PERSIAN = 53; +our $SPECIES_PSYDUCK = 54; +our $SPECIES_GOLDUCK = 55; +our $SPECIES_MANKEY = 56; +our $SPECIES_PRIMEAPE = 57; +our $SPECIES_GROWLITHE = 58; +our $SPECIES_ARCANINE = 59; +our $SPECIES_POLIWAG = 60; +our $SPECIES_POLIWHIRL = 61; +our $SPECIES_POLIWRATH = 62; +our $SPECIES_ABRA = 63; +our $SPECIES_KADABRA = 64; +our $SPECIES_ALAKAZAM = 65; +our $SPECIES_MACHOP = 66; +our $SPECIES_MACHOKE = 67; +our $SPECIES_MACHAMP = 68; +our $SPECIES_BELLSPROUT = 69; +our $SPECIES_WEEPINBELL = 70; +our $SPECIES_VICTREEBEL = 71; +our $SPECIES_TENTACOOL = 72; +our $SPECIES_TENTACRUEL = 73; +our $SPECIES_GEODUDE = 74; +our $SPECIES_GRAVELER = 75; +our $SPECIES_GOLEM = 76; +our $SPECIES_PONYTA = 77; +our $SPECIES_RAPIDASH = 78; +our $SPECIES_SLOWPOKE = 79; +our $SPECIES_SLOWBRO = 80; +our $SPECIES_MAGNEMITE = 81; +our $SPECIES_MAGNETON = 82; +our $SPECIES_FARFETCHD = 83; +our $SPECIES_DODUO = 84; +our $SPECIES_DODRIO = 85; +our $SPECIES_SEEL = 86; +our $SPECIES_DEWGONG = 87; +our $SPECIES_GRIMER = 88; +our $SPECIES_MUK = 89; +our $SPECIES_SHELLDER = 90; +our $SPECIES_CLOYSTER = 91; +our $SPECIES_GASTLY = 92; +our $SPECIES_HAUNTER = 93; +our $SPECIES_GENGAR = 94; +our $SPECIES_ONIX = 95; +our $SPECIES_DROWZEE = 96; +our $SPECIES_HYPNO = 97; +our $SPECIES_KRABBY = 98; +our $SPECIES_KINGLER = 99; +our $SPECIES_VOLTORB = 100; +our $SPECIES_ELECTRODE = 101; +our $SPECIES_EXEGGCUTE = 102; +our $SPECIES_EXEGGUTOR = 103; +our $SPECIES_CUBONE = 104; +our $SPECIES_MAROWAK = 105; +our $SPECIES_HITMONLEE = 106; +our $SPECIES_HITMONCHAN = 107; +our $SPECIES_LICKITUNG = 108; +our $SPECIES_KOFFING = 109; +our $SPECIES_WEEZING = 110; +our $SPECIES_RHYHORN = 111; +our $SPECIES_RHYDON = 112; +our $SPECIES_CHANSEY = 113; +our $SPECIES_TANGELA = 114; +our $SPECIES_KANGASKHAN = 115; +our $SPECIES_HORSEA = 116; +our $SPECIES_SEADRA = 117; +our $SPECIES_GOLDEEN = 118; +our $SPECIES_SEAKING = 119; +our $SPECIES_STARYU = 120; +our $SPECIES_STARMIE = 121; +our $SPECIES_MR_MIME = 122; +our $SPECIES_SCYTHER = 123; +our $SPECIES_JYNX = 124; +our $SPECIES_ELECTABUZZ = 125; +our $SPECIES_MAGMAR = 126; +our $SPECIES_PINSIR = 127; +our $SPECIES_TAUROS = 128; +our $SPECIES_MAGIKARP = 129; +our $SPECIES_GYARADOS = 130; +our $SPECIES_LAPRAS = 131; +our $SPECIES_DITTO = 132; +our $SPECIES_EEVEE = 133; +our $SPECIES_VAPOREON = 134; +our $SPECIES_JOLTEON = 135; +our $SPECIES_FLAREON = 136; +our $SPECIES_PORYGON = 137; +our $SPECIES_OMANYTE = 138; +our $SPECIES_OMASTAR = 139; +our $SPECIES_KABUTO = 140; +our $SPECIES_KABUTOPS = 141; +our $SPECIES_AERODACTYL = 142; +our $SPECIES_SNORLAX = 143; +our $SPECIES_ARTICUNO = 144; +our $SPECIES_ZAPDOS = 145; +our $SPECIES_MOLTRES = 146; +our $SPECIES_DRATINI = 147; +our $SPECIES_DRAGONAIR = 148; +our $SPECIES_DRAGONITE = 149; +our $SPECIES_MEWTWO = 150; +our $SPECIES_MEW = 151; +our $SPECIES_CHIKORITA = 152; +our $SPECIES_BAYLEEF = 153; +our $SPECIES_MEGANIUM = 154; +our $SPECIES_CYNDAQUIL = 155; +our $SPECIES_QUILAVA = 156; +our $SPECIES_TYPHLOSION = 157; +our $SPECIES_TOTODILE = 158; +our $SPECIES_CROCONAW = 159; +our $SPECIES_FERALIGATR = 160; +our $SPECIES_SENTRET = 161; +our $SPECIES_FURRET = 162; +our $SPECIES_HOOTHOOT = 163; +our $SPECIES_NOCTOWL = 164; +our $SPECIES_LEDYBA = 165; +our $SPECIES_LEDIAN = 166; +our $SPECIES_SPINARAK = 167; +our $SPECIES_ARIADOS = 168; +our $SPECIES_CROBAT = 169; +our $SPECIES_CHINCHOU = 170; +our $SPECIES_LANTURN = 171; +our $SPECIES_PICHU = 172; +our $SPECIES_CLEFFA = 173; +our $SPECIES_IGGLYBUFF = 174; +our $SPECIES_TOGEPI = 175; +our $SPECIES_TOGETIC = 176; +our $SPECIES_NATU = 177; +our $SPECIES_XATU = 178; +our $SPECIES_MAREEP = 179; +our $SPECIES_FLAAFFY = 180; +our $SPECIES_AMPHAROS = 181; +our $SPECIES_BELLOSSOM = 182; +our $SPECIES_MARILL = 183; +our $SPECIES_AZUMARILL = 184; +our $SPECIES_SUDOWOODO = 185; +our $SPECIES_POLITOED = 186; +our $SPECIES_HOPPIP = 187; +our $SPECIES_SKIPLOOM = 188; +our $SPECIES_JUMPLUFF = 189; +our $SPECIES_AIPOM = 190; +our $SPECIES_SUNKERN = 191; +our $SPECIES_SUNFLORA = 192; +our $SPECIES_YANMA = 193; +our $SPECIES_WOOPER = 194; +our $SPECIES_QUAGSIRE = 195; +our $SPECIES_ESPEON = 196; +our $SPECIES_UMBREON = 197; +our $SPECIES_MURKROW = 198; +our $SPECIES_SLOWKING = 199; +our $SPECIES_MISDREAVUS = 200; +our $SPECIES_UNOWN = 201; +our $SPECIES_WOBBUFFET = 202; +our $SPECIES_GIRAFARIG = 203; +our $SPECIES_PINECO = 204; +our $SPECIES_FORRETRESS = 205; +our $SPECIES_DUNSPARCE = 206; +our $SPECIES_GLIGAR = 207; +our $SPECIES_STEELIX = 208; +our $SPECIES_SNUBBULL = 209; +our $SPECIES_GRANBULL = 210; +our $SPECIES_QWILFISH = 211; +our $SPECIES_SCIZOR = 212; +our $SPECIES_SHUCKLE = 213; +our $SPECIES_HERACROSS = 214; +our $SPECIES_SNEASEL = 215; +our $SPECIES_TEDDIURSA = 216; +our $SPECIES_URSARING = 217; +our $SPECIES_SLUGMA = 218; +our $SPECIES_MAGCARGO = 219; +our $SPECIES_SWINUB = 220; +our $SPECIES_PILOSWINE = 221; +our $SPECIES_CORSOLA = 222; +our $SPECIES_REMORAID = 223; +our $SPECIES_OCTILLERY = 224; +our $SPECIES_DELIBIRD = 225; +our $SPECIES_MANTINE = 226; +our $SPECIES_SKARMORY = 227; +our $SPECIES_HOUNDOUR = 228; +our $SPECIES_HOUNDOOM = 229; +our $SPECIES_KINGDRA = 230; +our $SPECIES_PHANPY = 231; +our $SPECIES_DONPHAN = 232; +our $SPECIES_PORYGON2 = 233; +our $SPECIES_STANTLER = 234; +our $SPECIES_SMEARGLE = 235; +our $SPECIES_TYROGUE = 236; +our $SPECIES_HITMONTOP = 237; +our $SPECIES_SMOOCHUM = 238; +our $SPECIES_ELEKID = 239; +our $SPECIES_MAGBY = 240; +our $SPECIES_MILTANK = 241; +our $SPECIES_BLISSEY = 242; +our $SPECIES_RAIKOU = 243; +our $SPECIES_ENTEI = 244; +our $SPECIES_SUICUNE = 245; +our $SPECIES_LARVITAR = 246; +our $SPECIES_PUPITAR = 247; +our $SPECIES_TYRANITAR = 248; +our $SPECIES_LUGIA = 249; +our $SPECIES_HO_OH = 250; +our $SPECIES_CELEBI = 251; +our $SPECIES_OLD_UNOWN_B = 252; +our $SPECIES_OLD_UNOWN_C = 253; +our $SPECIES_OLD_UNOWN_D = 254; +our $SPECIES_OLD_UNOWN_E = 255; +our $SPECIES_OLD_UNOWN_F = 256; +our $SPECIES_OLD_UNOWN_G = 257; +our $SPECIES_OLD_UNOWN_H = 258; +our $SPECIES_OLD_UNOWN_I = 259; +our $SPECIES_OLD_UNOWN_J = 260; +our $SPECIES_OLD_UNOWN_K = 261; +our $SPECIES_OLD_UNOWN_L = 262; +our $SPECIES_OLD_UNOWN_M = 263; +our $SPECIES_OLD_UNOWN_N = 264; +our $SPECIES_OLD_UNOWN_O = 265; +our $SPECIES_OLD_UNOWN_P = 266; +our $SPECIES_OLD_UNOWN_Q = 267; +our $SPECIES_OLD_UNOWN_R = 268; +our $SPECIES_OLD_UNOWN_S = 269; +our $SPECIES_OLD_UNOWN_T = 270; +our $SPECIES_OLD_UNOWN_U = 271; +our $SPECIES_OLD_UNOWN_V = 272; +our $SPECIES_OLD_UNOWN_W = 273; +our $SPECIES_OLD_UNOWN_X = 274; +our $SPECIES_OLD_UNOWN_Y = 275; +our $SPECIES_OLD_UNOWN_Z = 276; +our $SPECIES_TREECKO = 277; +our $SPECIES_GROVYLE = 278; +our $SPECIES_SCEPTILE = 279; +our $SPECIES_TORCHIC = 280; +our $SPECIES_COMBUSKEN = 281; +our $SPECIES_BLAZIKEN = 282; +our $SPECIES_MUDKIP = 283; +our $SPECIES_MARSHTOMP = 284; +our $SPECIES_SWAMPERT = 285; +our $SPECIES_POOCHYENA = 286; +our $SPECIES_MIGHTYENA = 287; +our $SPECIES_ZIGZAGOON = 288; +our $SPECIES_LINOONE = 289; +our $SPECIES_WURMPLE = 290; +our $SPECIES_SILCOON = 291; +our $SPECIES_BEAUTIFLY = 292; +our $SPECIES_CASCOON = 293; +our $SPECIES_DUSTOX = 294; +our $SPECIES_LOTAD = 295; +our $SPECIES_LOMBRE = 296; +our $SPECIES_LUDICOLO = 297; +our $SPECIES_SEEDOT = 298; +our $SPECIES_NUZLEAF = 299; +our $SPECIES_SHIFTRY = 300; +our $SPECIES_NINCADA = 301; +our $SPECIES_NINJASK = 302; +our $SPECIES_SHEDINJA = 303; +our $SPECIES_TAILLOW = 304; +our $SPECIES_SWELLOW = 305; +our $SPECIES_SHROOMISH = 306; +our $SPECIES_BRELOOM = 307; +our $SPECIES_SPINDA = 308; +our $SPECIES_WINGULL = 309; +our $SPECIES_PELIPPER = 310; +our $SPECIES_SURSKIT = 311; +our $SPECIES_MASQUERAIN = 312; +our $SPECIES_WAILMER = 313; +our $SPECIES_WAILORD = 314; +our $SPECIES_SKITTY = 315; +our $SPECIES_DELCATTY = 316; +our $SPECIES_KECLEON = 317; +our $SPECIES_BALTOY = 318; +our $SPECIES_CLAYDOL = 319; +our $SPECIES_NOSEPASS = 320; +our $SPECIES_TORKOAL = 321; +our $SPECIES_SABLEYE = 322; +our $SPECIES_BARBOACH = 323; +our $SPECIES_WHISCASH = 324; +our $SPECIES_LUVDISC = 325; +our $SPECIES_CORPHISH = 326; +our $SPECIES_CRAWDAUNT = 327; +our $SPECIES_FEEBAS = 328; +our $SPECIES_MILOTIC = 329; +our $SPECIES_CARVANHA = 330; +our $SPECIES_SHARPEDO = 331; +our $SPECIES_TRAPINCH = 332; +our $SPECIES_VIBRAVA = 333; +our $SPECIES_FLYGON = 334; +our $SPECIES_MAKUHITA = 335; +our $SPECIES_HARIYAMA = 336; +our $SPECIES_ELECTRIKE = 337; +our $SPECIES_MANECTRIC = 338; +our $SPECIES_NUMEL = 339; +our $SPECIES_CAMERUPT = 340; +our $SPECIES_SPHEAL = 341; +our $SPECIES_SEALEO = 342; +our $SPECIES_WALREIN = 343; +our $SPECIES_CACNEA = 344; +our $SPECIES_CACTURNE = 345; +our $SPECIES_SNORUNT = 346; +our $SPECIES_GLALIE = 347; +our $SPECIES_LUNATONE = 348; +our $SPECIES_SOLROCK = 349; +our $SPECIES_AZURILL = 350; +our $SPECIES_SPOINK = 351; +our $SPECIES_GRUMPIG = 352; +our $SPECIES_PLUSLE = 353; +our $SPECIES_MINUN = 354; +our $SPECIES_MAWILE = 355; +our $SPECIES_MEDITITE = 356; +our $SPECIES_MEDICHAM = 357; +our $SPECIES_SWABLU = 358; +our $SPECIES_ALTARIA = 359; +our $SPECIES_WYNAUT = 360; +our $SPECIES_DUSKULL = 361; +our $SPECIES_DUSCLOPS = 362; +our $SPECIES_ROSELIA = 363; +our $SPECIES_SLAKOTH = 364; +our $SPECIES_VIGOROTH = 365; +our $SPECIES_SLAKING = 366; +our $SPECIES_GULPIN = 367; +our $SPECIES_SWALOT = 368; +our $SPECIES_TROPIUS = 369; +our $SPECIES_WHISMUR = 370; +our $SPECIES_LOUDRED = 371; +our $SPECIES_EXPLOUD = 372; +our $SPECIES_CLAMPERL = 373; +our $SPECIES_HUNTAIL = 374; +our $SPECIES_GOREBYSS = 375; +our $SPECIES_ABSOL = 376; +our $SPECIES_SHUPPET = 377; +our $SPECIES_BANETTE = 378; +our $SPECIES_SEVIPER = 379; +our $SPECIES_ZANGOOSE = 380; +our $SPECIES_RELICANTH = 381; +our $SPECIES_ARON = 382; +our $SPECIES_LAIRON = 383; +our $SPECIES_AGGRON = 384; +our $SPECIES_CASTFORM = 385; +our $SPECIES_VOLBEAT = 386; +our $SPECIES_ILLUMISE = 387; +our $SPECIES_LILEEP = 388; +our $SPECIES_CRADILY = 389; +our $SPECIES_ANORITH = 390; +our $SPECIES_ARMALDO = 391; +our $SPECIES_RALTS = 392; +our $SPECIES_KIRLIA = 393; +our $SPECIES_GARDEVOIR = 394; +our $SPECIES_BAGON = 395; +our $SPECIES_SHELGON = 396; +our $SPECIES_SALAMENCE = 397; +our $SPECIES_BELDUM = 398; +our $SPECIES_METANG = 399; +our $SPECIES_METAGROSS = 400; +our $SPECIES_REGIROCK = 401; +our $SPECIES_REGICE = 402; +our $SPECIES_REGISTEEL = 403; +our $SPECIES_KYOGRE = 404; +our $SPECIES_GROUDON = 405; +our $SPECIES_RAYQUAZA = 406; +our $SPECIES_LATIAS = 407; +our $SPECIES_LATIOS = 408; +our $SPECIES_JIRACHI = 409; +our $SPECIES_DEOXYS = 410; +our $SPECIES_CHIMECHO = 411; + +our @SPECIES = ( + 'NONE', 'BULBASAUR', 'IVYSAUR', 'VENUSAUR', + 'CHARMANDER', 'CHARMELEON', 'CHARIZARD', 'SQUIRTLE', + 'WARTORTLE', 'BLASTOISE', 'CATERPIE', 'METAPOD', + 'BUTTERFREE', 'WEEDLE', 'KAKUNA', 'BEEDRILL', + 'PIDGEY', 'PIDGEOTTO', 'PIDGEOT', 'RATTATA', + 'RATICATE', 'SPEAROW', 'FEAROW', 'EKANS', + 'ARBOK', 'PIKACHU', 'RAICHU', 'SANDSHREW', + 'SANDSLASH', 'NIDORAN_F', 'NIDORINA', 'NIDOQUEEN', + 'NIDORAN_M', 'NIDORINO', 'NIDOKING', 'CLEFAIRY', + 'CLEFABLE', 'VULPIX', 'NINETALES', 'JIGGLYPUFF', + 'WIGGLYTUFF', 'ZUBAT', 'GOLBAT', 'ODDISH', + 'GLOOM', 'VILEPLUME', 'PARAS', 'PARASECT', + 'VENONAT', 'VENOMOTH', 'DIGLETT', 'DUGTRIO', + 'MEOWTH', 'PERSIAN', 'PSYDUCK', 'GOLDUCK', + 'MANKEY', 'PRIMEAPE', 'GROWLITHE', 'ARCANINE', + 'POLIWAG', 'POLIWHIRL', 'POLIWRATH', 'ABRA', + 'KADABRA', 'ALAKAZAM', 'MACHOP', 'MACHOKE', + 'MACHAMP', 'BELLSPROUT', 'WEEPINBELL', 'VICTREEBEL', + 'TENTACOOL', 'TENTACRUEL', 'GEODUDE', 'GRAVELER', + 'GOLEM', 'PONYTA', 'RAPIDASH', 'SLOWPOKE', + 'SLOWBRO', 'MAGNEMITE', 'MAGNETON', 'FARFETCHD', + 'DODUO', 'DODRIO', 'SEEL', 'DEWGONG', + 'GRIMER', 'MUK', 'SHELLDER', 'CLOYSTER', + 'GASTLY', 'HAUNTER', 'GENGAR', 'ONIX', + 'DROWZEE', 'HYPNO', 'KRABBY', 'KINGLER', + 'VOLTORB', 'ELECTRODE', 'EXEGGCUTE', 'EXEGGUTOR', + 'CUBONE', 'MAROWAK', 'HITMONLEE', 'HITMONCHAN', + 'LICKITUNG', 'KOFFING', 'WEEZING', 'RHYHORN', + 'RHYDON', 'CHANSEY', 'TANGELA', 'KANGASKHAN', + 'HORSEA', 'SEADRA', 'GOLDEEN', 'SEAKING', + 'STARYU', 'STARMIE', 'MR_MIME', 'SCYTHER', + 'JYNX', 'ELECTABUZZ', 'MAGMAR', 'PINSIR', + 'TAUROS', 'MAGIKARP', 'GYARADOS', 'LAPRAS', + 'DITTO', 'EEVEE', 'VAPOREON', 'JOLTEON', + 'FLAREON', 'PORYGON', 'OMANYTE', 'OMASTAR', + 'KABUTO', 'KABUTOPS', 'AERODACTYL', 'SNORLAX', + 'ARTICUNO', 'ZAPDOS', 'MOLTRES', 'DRATINI', + 'DRAGONAIR', 'DRAGONITE', 'MEWTWO', 'MEW', + 'CHIKORITA', 'BAYLEEF', 'MEGANIUM', 'CYNDAQUIL', + 'QUILAVA', 'TYPHLOSION', 'TOTODILE', 'CROCONAW', + 'FERALIGATR', 'SENTRET', 'FURRET', 'HOOTHOOT', + 'NOCTOWL', 'LEDYBA', 'LEDIAN', 'SPINARAK', + 'ARIADOS', 'CROBAT', 'CHINCHOU', 'LANTURN', + 'PICHU', 'CLEFFA', 'IGGLYBUFF', 'TOGEPI', + 'TOGETIC', 'NATU', 'XATU', 'MAREEP', + 'FLAAFFY', 'AMPHAROS', 'BELLOSSOM', 'MARILL', + 'AZUMARILL', 'SUDOWOODO', 'POLITOED', 'HOPPIP', + 'SKIPLOOM', 'JUMPLUFF', 'AIPOM', 'SUNKERN', + 'SUNFLORA', 'YANMA', 'WOOPER', 'QUAGSIRE', + 'ESPEON', 'UMBREON', 'MURKROW', 'SLOWKING', + 'MISDREAVUS', 'UNOWN', 'WOBBUFFET', 'GIRAFARIG', + 'PINECO', 'FORRETRESS', 'DUNSPARCE', 'GLIGAR', + 'STEELIX', 'SNUBBULL', 'GRANBULL', 'QWILFISH', + 'SCIZOR', 'SHUCKLE', 'HERACROSS', 'SNEASEL', + 'TEDDIURSA', 'URSARING', 'SLUGMA', 'MAGCARGO', + 'SWINUB', 'PILOSWINE', 'CORSOLA', 'REMORAID', + 'OCTILLERY', 'DELIBIRD', 'MANTINE', 'SKARMORY', + 'HOUNDOUR', 'HOUNDOOM', 'KINGDRA', 'PHANPY', + 'DONPHAN', 'PORYGON2', 'STANTLER', 'SMEARGLE', + 'TYROGUE', 'HITMONTOP', 'SMOOCHUM', 'ELEKID', + 'MAGBY', 'MILTANK', 'BLISSEY', 'RAIKOU', + 'ENTEI', 'SUICUNE', 'LARVITAR', 'PUPITAR', + 'TYRANITAR', 'LUGIA', 'HO_OH', 'CELEBI', + 'OLD_UNOWN_B', 'OLD_UNOWN_C', 'OLD_UNOWN_D', 'OLD_UNOWN_E', + 'OLD_UNOWN_F', 'OLD_UNOWN_G', 'OLD_UNOWN_H', 'OLD_UNOWN_I', + 'OLD_UNOWN_J', 'OLD_UNOWN_K', 'OLD_UNOWN_L', 'OLD_UNOWN_M', + 'OLD_UNOWN_N', 'OLD_UNOWN_O', 'OLD_UNOWN_P', 'OLD_UNOWN_Q', + 'OLD_UNOWN_R', 'OLD_UNOWN_S', 'OLD_UNOWN_T', 'OLD_UNOWN_U', + 'OLD_UNOWN_V', 'OLD_UNOWN_W', 'OLD_UNOWN_X', 'OLD_UNOWN_Y', + 'OLD_UNOWN_Z', 'TREECKO', 'GROVYLE', 'SCEPTILE', + 'TORCHIC', 'COMBUSKEN', 'BLAZIKEN', 'MUDKIP', + 'MARSHTOMP', 'SWAMPERT', 'POOCHYENA', 'MIGHTYENA', + 'ZIGZAGOON', 'LINOONE', 'WURMPLE', 'SILCOON', + 'BEAUTIFLY', 'CASCOON', 'DUSTOX', 'LOTAD', + 'LOMBRE', 'LUDICOLO', 'SEEDOT', 'NUZLEAF', + 'SHIFTRY', 'NINCADA', 'NINJASK', 'SHEDINJA', + 'TAILLOW', 'SWELLOW', 'SHROOMISH', 'BRELOOM', + 'SPINDA', 'WINGULL', 'PELIPPER', 'SURSKIT', + 'MASQUERAIN', 'WAILMER', 'WAILORD', 'SKITTY', + 'DELCATTY', 'KECLEON', 'BALTOY', 'CLAYDOL', + 'NOSEPASS', 'TORKOAL', 'SABLEYE', 'BARBOACH', + 'WHISCASH', 'LUVDISC', 'CORPHISH', 'CRAWDAUNT', + 'FEEBAS', 'MILOTIC', 'CARVANHA', 'SHARPEDO', + 'TRAPINCH', 'VIBRAVA', 'FLYGON', 'MAKUHITA', + 'HARIYAMA', 'ELECTRIKE', 'MANECTRIC', 'NUMEL', + 'CAMERUPT', 'SPHEAL', 'SEALEO', 'WALREIN', + 'CACNEA', 'CACTURNE', 'SNORUNT', 'GLALIE', + 'LUNATONE', 'SOLROCK', 'AZURILL', 'SPOINK', + 'GRUMPIG', 'PLUSLE', 'MINUN', 'MAWILE', + 'MEDITITE', 'MEDICHAM', 'SWABLU', 'ALTARIA', + 'WYNAUT', 'DUSKULL', 'DUSCLOPS', 'ROSELIA', + 'SLAKOTH', 'VIGOROTH', 'SLAKING', 'GULPIN', + 'SWALOT', 'TROPIUS', 'WHISMUR', 'LOUDRED', + 'EXPLOUD', 'CLAMPERL', 'HUNTAIL', 'GOREBYSS', + 'ABSOL', 'SHUPPET', 'BANETTE', 'SEVIPER', + 'ZANGOOSE', 'RELICANTH', 'ARON', 'LAIRON', + 'AGGRON', 'CASTFORM', 'VOLBEAT', 'ILLUMISE', + 'LILEEP', 'CRADILY', 'ANORITH', 'ARMALDO', + 'RALTS', 'KIRLIA', 'GARDEVOIR', 'BAGON', + 'SHELGON', 'SALAMENCE', 'BELDUM', 'METANG', + 'METAGROSS', 'REGIROCK', 'REGICE', 'REGISTEEL', + 'KYOGRE', 'GROUDON', 'RAYQUAZA', 'LATIAS', + 'LATIOS', 'JIRACHI', 'DEOXYS', 'CHIMECHO', +); + +our %SPECIES_NAME_TO_ID; + +for (my $i = 0; $i < scalar @SPECIES; $i++) { + $SPECIES_NAME_TO_ID{$SPECIES[$i]} = $i; +} +1;