Repository: NicklasWallgren/PokemonGoAPI-PHP Branch: master Commit: 2e955389cae3 Files: 171 Total size: 833.5 KB Directory structure: gitextract_xjegl40a/ ├── .gitattributes ├── .gitignore ├── LICENSE.txt ├── README.md ├── composer.json ├── examples/ │ ├── AuthenticationExample.php │ ├── CheckChallengeExample.php │ ├── GUI_BestCpPokemonDetails.php │ ├── ProxyExample.php │ ├── ReleaseOnePidgeExample.php │ ├── RetrieveAppliedItemsExample.php │ ├── RetrieveJournalExample.php │ ├── RetrievePlayerPokedexExample.php │ ├── RetrievePlayerProfileExample.php │ ├── RetrievePlayerStatsExample.php │ ├── RetrievePokemonCandyCountExample.php │ ├── RetrievePokemonCountExample.php │ ├── RetrievePokemonTraitExample.php │ └── VerifyChallengeExample.php ├── includes/ │ ├── config.php │ └── protocolbuffers.inc.php ├── phpunit.xml.dist ├── src/ │ ├── Api/ │ │ ├── Data/ │ │ │ ├── Data.php │ │ │ ├── Device.php │ │ │ └── Location.php │ │ ├── Map/ │ │ │ ├── Data/ │ │ │ │ ├── Resource.php │ │ │ │ ├── Resources/ │ │ │ │ │ ├── CatchablePokemon.php │ │ │ │ │ ├── Fort.php │ │ │ │ │ ├── NearbyPokemon.php │ │ │ │ │ ├── SpawnPoint.php │ │ │ │ │ └── WildPokemon.php │ │ │ │ └── Results/ │ │ │ │ └── PokestopSpinResult.php │ │ │ ├── Map.php │ │ │ ├── Pokestop.php │ │ │ └── Support/ │ │ │ └── S2.php │ │ ├── Player/ │ │ │ ├── CheckChallenge.php │ │ │ ├── Data/ │ │ │ │ ├── CheckChallenge/ │ │ │ │ │ └── CheckChallengeData.php │ │ │ │ ├── Inventory/ │ │ │ │ │ ├── AppliedItem.php │ │ │ │ │ ├── AppliedItems.php │ │ │ │ │ ├── CandyBank.php │ │ │ │ │ ├── CandyItem.php │ │ │ │ │ ├── EggIncubator.php │ │ │ │ │ ├── EggIncubators.php │ │ │ │ │ ├── EggPokemon.php │ │ │ │ │ ├── Item.php │ │ │ │ │ ├── Items.php │ │ │ │ │ ├── PokeBank.php │ │ │ │ │ ├── Pokedex.php │ │ │ │ │ ├── PokedexItem.php │ │ │ │ │ ├── PokemonItem.php │ │ │ │ │ └── Stats.php │ │ │ │ ├── Journal/ │ │ │ │ │ ├── Fort.php │ │ │ │ │ ├── Item.php │ │ │ │ │ ├── Log.php │ │ │ │ │ └── Pokemon.php │ │ │ │ └── Profile/ │ │ │ │ ├── Avatar.php │ │ │ │ ├── Badge.php │ │ │ │ ├── ContactSettings.php │ │ │ │ ├── Currencies.php │ │ │ │ ├── Currency.php │ │ │ │ ├── DailyBonus.php │ │ │ │ ├── ProfileData.php │ │ │ │ └── TutorialState.php │ │ │ ├── Inventory.php │ │ │ ├── Journal.php │ │ │ └── Profile.php │ │ ├── Pokemon/ │ │ │ ├── Collection/ │ │ │ │ └── PokemonCollection.php │ │ │ ├── Data/ │ │ │ │ ├── MovementType.php │ │ │ │ ├── PokemonClass.php │ │ │ │ ├── PokemonMeta.php │ │ │ │ ├── PokemonMetaRegistry.php │ │ │ │ └── PokemonMove.php │ │ │ ├── Pokemon.php │ │ │ └── Support/ │ │ │ ├── BasePokemonRetriever.php │ │ │ ├── CombatPointsCalculator.php │ │ │ └── PokemonDetailsTrait.php │ │ ├── PokemonGoApi.php │ │ ├── Procedure.php │ │ └── Support/ │ │ ├── Enums/ │ │ │ ├── AbstractEnum.php │ │ │ ├── GenericEnum.php │ │ │ ├── ItemId.php │ │ │ ├── PokemonFamilyId.php │ │ │ ├── PokemonId.php │ │ │ ├── PokemonMove.php │ │ │ └── PokemonType.php │ │ └── Traits/ │ │ ├── MakeApiResourcesAvailable.php │ │ └── MakeDataPropertiesCallable.php │ ├── Authentication/ │ │ ├── AccessToken.php │ │ ├── Config/ │ │ │ └── Config.php │ │ ├── Contracts/ │ │ │ └── Authenticator.php │ │ ├── Exceptions/ │ │ │ ├── AuthenticationException.php │ │ │ ├── IllegalAuthenticationTypeException.php │ │ │ └── ResponseException.php │ │ ├── Factory/ │ │ │ └── Factory.php │ │ ├── Manager.php │ │ └── Managers/ │ │ ├── Google/ │ │ │ ├── AuthenticationCode/ │ │ │ │ ├── Authenticator.php │ │ │ │ ├── Clients/ │ │ │ │ │ └── AuthenticationClient.php │ │ │ │ └── Parsers/ │ │ │ │ ├── OauthTokenParser.php │ │ │ │ ├── Parser.php │ │ │ │ └── Results/ │ │ │ │ ├── AuthenticationTokenResult.php │ │ │ │ └── Result.php │ │ │ ├── AuthenticationCodeManager.php │ │ │ ├── AuthenticationCredentials/ │ │ │ │ ├── Authenticator.php │ │ │ │ ├── Clients/ │ │ │ │ │ └── AuthenticationClient.php │ │ │ │ ├── Parsers/ │ │ │ │ │ ├── OauthTokenParser.php │ │ │ │ │ ├── Parser.php │ │ │ │ │ ├── Results/ │ │ │ │ │ │ ├── AuthenticationTokenResult.php │ │ │ │ │ │ └── Result.php │ │ │ │ │ └── TokenParser.php │ │ │ │ └── Support/ │ │ │ │ └── Signature.php │ │ │ ├── AuthenticationCredentialsManager.php │ │ │ ├── AuthenticationOauthTokenManager.php │ │ │ ├── AuthenticationRefreshToken/ │ │ │ │ ├── Authenticator.php │ │ │ │ ├── Clients/ │ │ │ │ │ └── AuthenticationClient.php │ │ │ │ └── Parsers/ │ │ │ │ ├── OauthTokenParser.php │ │ │ │ ├── Parser.php │ │ │ │ └── Results/ │ │ │ │ ├── AuthenticationTokenResult.php │ │ │ │ └── Result.php │ │ │ └── AuthenticationRefreshTokenManager.php │ │ └── PTC/ │ │ ├── AuthenticationCredentials/ │ │ │ ├── Authenticator.php │ │ │ ├── Clients/ │ │ │ │ └── AuthenticationClient.php │ │ │ └── Parsers/ │ │ │ ├── AuthenticationInformationParser.php │ │ │ ├── Parser.php │ │ │ ├── Results/ │ │ │ │ ├── AuthenticationInformationResult.php │ │ │ │ ├── Result.php │ │ │ │ ├── TicketResult.php │ │ │ │ └── TokenResult.php │ │ │ ├── TicketParser.php │ │ │ └── TokenParser.php │ │ ├── AuthenticationCredentialsManager.php │ │ └── AuthenticationOauthTokenManager.php │ ├── Clients/ │ │ └── Proxies/ │ │ └── ClientProxy.php │ ├── Facades/ │ │ ├── App.php │ │ └── Log.php │ ├── Handlers/ │ │ ├── RequestHandler/ │ │ │ └── Exceptions/ │ │ │ ├── AuthenticationException.php │ │ │ └── ResponseException.php │ │ ├── RequestHandler.php │ │ └── Session.php │ ├── Kernels/ │ │ ├── ApplicationKernel.php │ │ └── Kernel.php │ ├── Providers/ │ │ ├── PokemonGoApiServiceProvider.php │ │ ├── RequestHandlerServiceProvider.php │ │ └── ServiceProvider.php │ ├── Requests/ │ │ ├── AuthenticateRequest.php │ │ ├── CheckChallengeRequest.php │ │ ├── Envelops/ │ │ │ ├── AuthInfoEnvelope.php │ │ │ └── Factory.php │ │ ├── EvolvePokemonRequest.php │ │ ├── FortSearchRequest.php │ │ ├── GetInventoryRequest.php │ │ ├── GetJournalRequest.php │ │ ├── GetMapResourcesRequest.php │ │ ├── GetPlayerRequest.php │ │ ├── RecycleInventoryItemRequest.php │ │ ├── RenamePokemonRequest.php │ │ ├── Request.php │ │ ├── SetFavoritePokemonRequest.php │ │ ├── TransferPokemonRequest.php │ │ ├── UpgradePokemonRequest.php │ │ ├── UseIncenseRequest.php │ │ ├── UseItemXpBoostRequest.php │ │ └── VerifyChallengeRequest.php │ └── Services/ │ ├── Request/ │ │ ├── CheckChallengeRequestService.php │ │ ├── InventoryRequestService.php │ │ ├── JournalRequestService.php │ │ ├── MapRequestService.php │ │ ├── PlayerRequestService.php │ │ ├── PokemonRequestService.php │ │ └── PokestopRequestService.php │ └── RequestService.php └── tests/ └── Api/ └── Pokemon/ └── PokemonTest.php ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitattributes ================================================ # Path-based git attributes # https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html # Ignore all test and documentation with "export-ignore". /.gitattributes export-ignore /.gitignore export-ignore /phpunit.xml.dist export-ignore /tests export-ignore ================================================ FILE: .gitignore ================================================ .env vendor composer.lock storage/logs .idea build ================================================ FILE: LICENSE.txt ================================================ Copyright (c) 2016, Nicklas Wallgren All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================ FILE: README.md ================================================ # PokemonGoAPI-PHP [![Total Downloads][ico-downloads]][link-packagist] [![PHP7 Ready](https://img.shields.io/badge/PHP7-ready-green.svg)][link-packagist] Pokemon GO PHP API library # Install Run the command `composer require nicklasw/pkm-go-api`. # Usage EG: ```php // Create the authentication config $config = new Config(); $config->setProvider(Factory::PROVIDER_PTC); $config->setUser('INSERT_USER'); $config->setPassword('INSERT_PASSWORD'); // Create the authentication manager $manager = Factory::create($config); // Add a event listener, $manager->addListener(function ($event, $value) { if ($event === Manager::EVENT_ACCESS_TOKEN) { /** @var AccessToken $accessToken */ $accessToken = $value; // Persist the access token in session storage, cache or whatever. } }); // Initialize the pokemon go application $application = new ApplicationKernel($manager); // Retrieve the pokemon go api instance $pokemonGoApi = $application->getPokemonGoApi(); // Retrieve the inventory $inventory = $pokemonGoApi->getInventory(); // Retrieve the poke bank $pokeBank = $inventory->getPokeBank(); // Retrieve a pokemon of type pidgey $pokemon = $pokeBank->getPokemonsByType(PokemonId::PIDGEY)->first(); // Transfer / Release the pokemon (Send to the meat grinder) $pokemon->transfer(); ``` ## TODO - Implement the Map API - Improve logging ## Contributors - [Nicklas Wallgren](https://github.com/NicklasWallgren) - [Ni42](https://github.com/Ni42) - [All Contributors][link-contributors] ## Testing ``` bash $ composer test ``` ## Slack Chat We use [Slack](https://slack.com) for community discussions. You can find our team here: https://pokemongoapi-php.slack.com ## Credits - [Grover-c13](https://github.com/Grover-c13) for the inspiration - [AeonLucid](https://github.com/AeonLucid/POGOProtos) for improved protos [ico-downloads]: https://img.shields.io/packagist/dt/nicklasw/pkm-go-api.svg?style=flat-square [link-packagist]: https://packagist.org/packages/nicklasw/pkm-go-api [link-contributors]: ../../contributors ================================================ FILE: composer.json ================================================ { "name": "nicklasw/pkm-go-api", "description": "The Pokemon Go API library.", "keywords": ["Pokemon Go API"], "license": "MIT", "type": "project", "require": { "php": ">=5.6", "paquettg/php-html-parser": "1.7", "guzzlehttp/guzzle": "^6.2.1", "jeremeamia/xstatic": "^1.0", "php-di/php-di": "^5.3", "phpseclib/phpseclib": "^2.0", "nicklasw/s2-geometry-library-php": "^v2.0", "nicklasw/pogoprotos-php": "^v2.0", "psr/log": "^1.0", "illuminate/support": "^5.2" }, "require-dev": { "phpunit/phpunit": "~4.0||~5.0" }, "autoload": { "psr-4": { "NicklasW\\PkmGoApi\\": "src/" }, "files": [ "includes/config.php" ] }, "autoload-dev": { "psr-4": { "NicklasW\\PkmGoApi\\Test\\": "tests/" } }, "scripts": { "test": "phpunit" } } ================================================ FILE: examples/AuthenticationExample.php ================================================ setProvider(Factory::PROVIDER_GOOGLE); $config->setUser('INSERT_EMAIL'); $config->setPassword('INSERT_PASSWORD'); // Create the authentication manager $manager = Factory::create($config); // EXAMPLE Authentication via PTC user credentials $config = new Config(); $config->setProvider(Factory::PROVIDER_PTC); $config->setUser('INSERT_USER'); $config->setPassword('INSERT_PASSWORD'); // Create the authentication manager $manager = Factory::create($config); // EXAMPLE Authentication via Google authentication code $config = new Config(); $config->setProvider(Factory::PROVIDER_GOOGLE); $config->setAuthToken('INSERT_AUTHENTICATION_CODE'); // EXAMPLE Authentication via Google refresh token $config = new Config(); $config->setProvider(Factory::PROVIDER_GOOGLE); $config->setRefreshToken('INSERT_AUTHENTICATION_REFRESH_TOKEN'); // Add a event listener, $manager->addListener(function ($event, $value) { if ($event === Manager::EVENT_ACCESS_TOKEN) { /** @var AccessToken $accessToken */ $accessToken = $value; // Persist the access token in session storage, cache or whatever. // The persisted access token should be passed to the Authentication factory for authentication } }); // Initialize the pokemon go application $application = new ApplicationKernel($manager); } } echo "This is not a runnable example script."; ================================================ FILE: examples/CheckChallengeExample.php ================================================ setProvider(Factory::PROVIDER_PTC); $config->setUser(''); $config->setPassword(''); // Create the authentication manager $manager = Factory::create($config); // Initialize the example application $application = new ApplicationKernel($manager); // Bookmarklet Config - load your own bookmarklet source to customize RECaptcha iframe injection logic $bookmarkletUrl = "https://aa2e9e20ba653c1903e8-f9a24a1a98160d8ae95f4a0da76ebd6d.ssl.cf1.rackcdn.com/js/pgo-captcha.js?v=1"; $bookmarkletScript = "javascript:(function(){document.body.appendChild(document.createElement('script')).src='" . $bookmarkletUrl . "';})();"; if ($application) { $pogoApi = $application->getPokemonGoApi(); // Ensure api and user are not empty if ($pogoApi && $config->getUser()) { try { $checkChallenge = $pogoApi->checkChallenge()->getData(); } catch (Exception $e) { // DEBUG // 498 - invalid_grant in body response (missing token/expires values) // 503 - Oops! It seems that Pokemon.com has had an unexpected error. // 0 - default error code $error = 'ERROR ' . $e->getCode() . ': ' . $e->getMessage() . '\n'; $checkChallenge = FALSE; } if ($checkChallenge) { // Convert showChallenge boolean to string equiv $flagged = var_export($checkChallenge->getShowChallenge(), true); // Get challengeUrl value - appears to return " " (space) when user is not flagged for captcha $challengeUrl = $checkChallenge->getChallengeUrl(); // If challengeUrl empty, hide "SHOW CHALLANGE" html $showUrl = empty(trim($challengeUrl)) ? 'hidden' : ''; echo << Check Challenge Example

Check Challenge Example

USER: {$config->getUser()} 
SHOW CHALLANGE: {$flagged} 
CHALLENGE URL: {$challengeUrl}
BOOKMARKLET: PGO-Captcha

Instructions:

  1. Drag and Drop the [ PGO-Captcha ] bookmarklet button above to your browser's bookmark toolbar.
  2. Open the CHALLENGE URL in a new tab.
  3. Execute the PGO-Captcha bookmarklet against the challenge page to display the modified captcha form.
  4. Solve the captcha that is displayed to generate a unique challenge token and copy it to your clipboard.
  5. Post the challenge token back through the api using the script @ VerifyChallengeExample.php

Alternatively to the bookmarklet, execute this JS using your browser's developer tools:

function captchaResponse(challengeToken){
    var responseDiv=document.createElement('div');
    responseDiv.id='response';
    document.getElementsByTagName('body')[0].appendChild(responseDiv);
    document.getElementById('response').innerHTML=challengeToken;
}
var captchaHTML='<form action="?" method="POST"><div class="g-recaptcha" data-size="compact" data-sitekey="6LeeTScTAAAAADqvhqVMhPpr_vB9D364Ia-1dSgK" data-callback="captchaResponse"></div></form>';
document.body.parentElement.innerHTML=captchaHTML;
var script=document.createElement('script');
script.src='https://www.google.com/recaptcha/api.js?hl=en';
script.type='text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
                
EOBODY; exit; } }else $error = "Failed to initialize the PokemonGo API! Did you forget to set your credentials?"; }else $error = "Failed to initialize the application kernel!"; if ($error) { echo <<
{$error}
EOERROR; } }//END run() }//END CheckChallengeRequestExample $checkChallengeRequest = new CheckChallengeRequest(); $checkChallengeRequest->run(); ?> ================================================ FILE: examples/GUI_BestCpPokemonDetails.php ================================================ setProvider(Factory::PROVIDER_PTC); $config->setUser('INSERT_USER'); $config->setPassword('INSERT_PASSWORD'); $manager = Factory::create($config); $application = new ApplicationKernel($manager); $error = null; if ($application) { $pokemonGoApi = $application->getPokemonGoApi(); if ($pokemonGoApi) { $pokez = $pokemonGoApi->getInventory()->getPokeBank()->getPokemons(); $pokes = $pokez->sortByCp(true); if ($pokes) { $best = $pokes->first(); if ($best) { html_header(); html_start(); $perc = round($best->getStamina()/$best->getStaminaMax() * 100); $fname = normalize(PokemonFamilyId::toString($best->getFamilyId())); echo ""; echo ""; make_row("FamilyName", $fname); make_row("FamilyId", $best->getFamilyId()); make_row("Name", $best->getName()); make_row("Id", $best->getId()); make_row("PokemonId", $best->getPokemonId()); make_row("Type", normalize($best->getType1String())); make_row("Favorite", $best->getFavorite() ? "Yes" : "No"); make_row("LVL", $best->getLevel()); make_row("CP", $best->getCp()); make_row("IV", number_format($best->getIvRatio()*100, 2)."%"); make_row("HP", $best->getStamina()."/".$best->getStaminaMax()); make_row("Attack 1", normalize($best->getMove1String())); make_row("Attack 2", normalize($best->getMove2String())); make_row("Height", number_format($best->getHeightM(), 2)." m"); make_row("Weight", number_format($best->getWeightKg(), 2)." kg"); make_row("Powerup cost", $best->getStardustCostsForPowerup()." stardust, ".$best->getCandyCostForPowerup()." candies"); if ($best->getCandiesToEvolve() > 0) make_row("Evolve cost", $best->getCandiesToEvolve()); else make_row("Evolve", "Cannot be evolved"); echo "
"; echo "

Pokemon '{$best->getName()}' details

"; echo ""; echo "
"; echo "
{$best->getStamina()}/{$best->getStaminaMax()}
"; echo "
"; echo "
"; html_footer(); } else $error = "There is problem with getting best Pokemon from PokeBank."; } else $error = "There is problem with your PokeBank."; } else $error = "There is problem with PokemonGo API."; } else $error = "Cannot connect with PokemonGo servers."; if ($error) { html_header(); show_error($error); html_footer(); } function normalize($text) { return ucfirst(strtolower(str_replace("_", " ", str_replace(array("FAMILY_", "POKEMON_TYPE_"), "", $text)))); } function make_row($k, $v) { echo "\n\n$k\n$v\n\n"; } function show_error($txt) { echo "
{$txt}
"; } function html_start() { ?>

PokemonGoAPI-PHP

================================================ FILE: examples/ProxyExample.php ================================================ setProvider(Factory::PROVIDER_PTC); $config->setUser('INSERT_USER'); $config->setPassword('INSERT_PASSWORD'); // Create the authentication manager $manager = Factory::create($config); // Initialize the pokemon go application $application = new ApplicationKernel($manager); // Pass a custom client to the library $application->setClient(new Client(array(RequestOptions::PROXY => 'INSERT_PROXY'))); // Retrieve the pokemon go api instance $pokemonGoApi = $application->getPokemonGoApi(); // Retrieve the profile $profile = $pokemonGoApi->getProfile(); // Retrieve the profile data $profileData = $profile->getData(); echo sprintf('The profile data: %s', print_r($profileData, true)); } } $example = new RetrievePlayerProfileExample(); $example->run(); ================================================ FILE: examples/ReleaseOnePidgeExample.php ================================================ setProvider(Factory::PROVIDER_PTC); $config->setUser('INSERT_USER'); $config->setPassword('INSERT_PASSWORD'); // Create the authentication manager $manager = Factory::create($config); // Initialize the pokemon go application $application = new ApplicationKernel($manager); // Retrieve the pokemon go api instance $pokemonGoApi = $application->getPokemonGoApi(); // Retrieve the inventory $inventory = $pokemonGoApi->getInventory(); // Retrieve the poke bank $pokeBank = $inventory->getPokeBank(); // Retrieve a pokemon of type pidgey $pokemon = $pokeBank->getPokemonsByType(PokemonId::PIDGEY)->first(); // Check if we retrieved a pokemon if (!$pokemon) { throw new Exception('No pokemon of type pidgey found. Please check your inventory'); } // Transfer / Release the pokemon $pokemon->transfer(); } } $example = new ReleaseOnePidgeExample(); $example->run(); ================================================ FILE: examples/RetrieveAppliedItemsExample.php ================================================ setProvider(Factory::PROVIDER_PTC); $config->setUser('INSERT_USER'); $config->setPassword('INSERT_PASSWORD'); // Create the authentication manager $manager = Factory::create($config); // Initialize the pokemon go application $application = new ApplicationKernel($manager); // Retrieve the pokemon go api instance $pokemonGoApi = $application->getPokemonGoApi(); // Retrieve the inventory $inventory = $pokemonGoApi->getInventory(); // Retrieve the applied items instance $appliedItems = $inventory->getAppliedItems(); // Retrieve the items within the applied items instance $items = $appliedItems->getAppliedItems(); foreach($items as $item) { // Retrieve item name $item->setName(ItemId::name($item->getItemId())); echo sprintf('Applied item: %s', print_r($item, true)); } } } $example = new RetrieveAppliedItemsExample(); $example->run(); ================================================ FILE: examples/RetrieveJournalExample.php ================================================ setProvider(Factory::PROVIDER_PTC); $config->setUser('INSERT_USER'); $config->setPassword('INSERT_PASSWORD'); // Create the authentication manager $manager = Factory::create($config); // Initialize the pokemon go application $application = new ApplicationKernel($manager); // Retrieve the pokemon go api instance $pokemonGoApi = $application->getPokemonGoApi(); // Retrieve the journal data $journal = $pokemonGoApi->getJournal(); // Loop across all Pokemon encounters foreach($journal->getPokemons() as $pkmn) { echo sprintf("[%s] [Pokemon] #%s %s, Result: %s, %s CP\n", (new DateTime('@'.floor($pkmn->getTimestampMs()/1000)))->format('d.m.Y H:i'), $pkmn->getPokemonId(), PokemonId::name($pkmn->getPokemonId()), $pkmn->getResult() == 2 ? 'flee' : 'captured', $pkmn->getCombatPoints()); } // Loop across all Pokestop interactions foreach($journal->getForts() as $fort) { echo sprintf("[%s] [Fort] Eggs: %s, Items: %s\n", (new DateTime('@'.floor($fort->getTimestampMs()/1000)))->format('d.m.Y H:i'), $fort->getEggs(), array_reduce( $fort->getItems(), function($val, $e) { if($val) $val.=', '; return $val.$e->getCount().'x '.ItemId::name($e->getItemId()); } ) ); } } } $example = new RetrieveJournalExample(); $example->run(); ================================================ FILE: examples/RetrievePlayerPokedexExample.php ================================================ setProvider(Factory::PROVIDER_PTC); $config->setUser('INSERT_USER'); $config->setPassword('INSERT_PASSWORD'); // Create the authentication manager $manager = Factory::create($config); // Initialize the pokemon go application $application = new ApplicationKernel($manager); // Retrieve the pokemon go api instance $pokemonGoApi = $application->getPokemonGoApi(); // Retrieve the inventory $inventory = $pokemonGoApi->getInventory(); // Retrieve the pokedex $pokedex = $inventory->getPokedex(); // Show info about pokemons for($i=1; $i<= 151; $i++) { // Retrieve MetaRegistry for pokemon $pokemonmeta = PokemonMetaRegistry::getByPokemonId($i); // Retrieve Pokedex entry for pokemon $pokemondata = $pokedex->get($i); // If pokedex is empty we don't 'know' that creature if($pokemondata !== null) { echo sprintf("Informations about Pokemon %d. Name: %s \n", $i, $pokemonmeta->getuniqueId()); } else echo sprintf("No information about id: %d \n", $i); } } } $example = new RetrievePlayerPokedexExample(); $example->run(); ================================================ FILE: examples/RetrievePlayerProfileExample.php ================================================ setProvider(Factory::PROVIDER_PTC); $config->setUser('INSERT_USER'); $config->setPassword('INSERT_PASSWORD'); // Create the authentication manager $manager = Factory::create($config); // Initialize the pokemon go application $application = new ApplicationKernel($manager); // Retrieve the pokemon go api instance $pokemonGoApi = $application->getPokemonGoApi(); // Retrieve the profile $profile = $pokemonGoApi->getProfile(); // Retrieve the profile data $profileData = $profile->getData(); echo sprintf('The profile data: %s', print_r($profileData, true)); } } $example = new RetrievePlayerProfileExample(); $example->run(); ================================================ FILE: examples/RetrievePlayerStatsExample.php ================================================ setProvider(Factory::PROVIDER_PTC); $config->setUser('INSERT_USER'); $config->setPassword('INSERT_PASSWORD'); // Create the authentication manager $manager = Factory::create($config); // Initialize the pokemon go application $application = new ApplicationKernel($manager); // Retrieve the pokemon go api instance $pokemonGoApi = $application->getPokemonGoApi(); // Retrieve the inventory $inventory = $pokemonGoApi->getInventory(); // Retrieve the player stats $playerStats = $inventory->getStats(); echo sprintf('The player level: %s', $playerStats->getLevel()); } } $example = new RetrievePlayerStatsExample(); $example->run(); ================================================ FILE: examples/RetrievePokemonCandyCountExample.php ================================================ setProvider(Factory::PROVIDER_PTC); $config->setUser('INSERT_USER'); $config->setPassword('INSERT_PASSWORD'); // Create the authentication manager $manager = Factory::create($config); // Initialize the pokemon go application $application = new ApplicationKernel($manager); // Retrieve the pokemon go api instance $pokemonGoApi = $application->getPokemonGoApi(); // Retrieve the inventory $inventory = $pokemonGoApi->getInventory(); // Retrieve the candy bank $candyBank = $inventory->getCandyBank(); // Retrieve the pidgey candy item $candyItem = $candyBank->get(PokemonFamilyId::FAMILY_PIDGEY); echo sprintf('Number or pidgey candies \'%s\'', $candyItem->getCount()); } } $example = new RetrievePokemonCandyCountExample(); $example->run(); ================================================ FILE: examples/RetrievePokemonCountExample.php ================================================ setProvider(Factory::PROVIDER_PTC); $config->setUser('INSERT_USER'); $config->setPassword('INSERT_PASSWORD'); // Create the authentication manager $manager = Factory::create($config); // Initialize the pokemon go application $application = new ApplicationKernel($manager); // Retrieve the pokemon go api instance $pokemonGoApi = $application->getPokemonGoApi(); // Retrieve the inventory $inventory = $pokemonGoApi->getInventory(); // Retrieve the poke bank $pokeBank = $inventory->getPokeBank(); // Retrieve a pokemons of type pidgey $pokemons = $pokeBank->getPokemonsByType(PokemonId::PIDGEY); echo sprintf('Number of pokemon of type pidgey: \'%s\'', sizeof($pokemons)); } } $example = new RetrievePokemonCountExample(); $example->run(); ================================================ FILE: examples/RetrievePokemonTraitExample.php ================================================ setProvider(Factory::PROVIDER_PTC); $config->setUser('INSERT_USER'); $config->setPassword('INSERT_PASSWORD'); // Create the authentication manager $manager = Factory::create($config); // Initialize the pokemon go application $application = new ApplicationKernel($manager); // Retrieve the pokemon go api instance $pokemonGoApi = $application->getPokemonGoApi(); // Retrieve the inventory $inventory = $pokemonGoApi->getInventory(); // Retrieve the poke bank $pokeBank = $inventory->getPokeBank(); // Retrieve a pokemon of type pidgey $pokemon = $pokeBank->getPokemons()->first(); // Check if we retrieved a pokemon if (!$pokemon) { throw new Exception('Cannot find any pokemons in your PokeBank.'); } echo sprintf("Pokemon %s, Id: %s, Cp: %d, type: %s, attacks: %s and %s, ", $pokemon->getName(), $pokemon->getId(), $pokemon->getCp(), $pokemon->getType1String(), $pokemon->getMove1String(), $pokemon->getMove2String()); } } $example = new RetrievePokemonTraitExample(); $example->run(); ================================================ FILE: examples/VerifyChallengeExample.php ================================================ Verify Challenge Example

Verify Challenge Example

The RECaptcha challenge token can be obtained by using the CheckChallengeExample.php script and PGO-Captcha bookmarklet.

Ex POST: \$_POST['token']
Ex Response: "{\"user\":\"YOURUSERNAME\",\"success\":true}"
EOFORM; exit; } /** * Authenticate and submit the user supplied challenge token through API. */ public function processRequest($token) { // Initialize error string $error = null; // EXAMPLE Authentication via PTC user credentials $config = new Config(); $config->setProvider(Factory::PROVIDER_PTC); $config->setUser(''); $config->setPassword(''); // Create the authentication manager $manager = Factory::create($config); // Initialize the pokemon go application kernel $application = new ApplicationKernel($manager); if ($application) { // Initialize the pokemon go api $pogoApi = $application->getPokemonGoApi(); if ($pogoApi) { // Process api request $success = $pogoApi->verifyChallenge($token); $challengeResponse = [ "user" => $config->getUser(), "success" => $success, ]; // return JSON encoded challengeResponse return json_encode($challengeResponse); }else $error = "Failed to initialize the PokemonGo API!"; }else $error = "Failed to initialize the application kernel!"; if ($error) { return json_encode(array("error", $error)); } }//END sendToken() }//END VerifyChallengeRequest // Initialize VerifyChallengeRequest $verifyChallengeRequest = new VerifyChallengeRequest(); // Sanatize User Supplied Post Input $_POST = !empty($_POST) ? filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING) : null; // Check For Post if(!$_POST) { // Display challengeForm if no postback detected $verifyChallengeRequest->showForm(); }else { // Check for challenge token if($_POST['token']) { // Process request echo $verifyChallengeRequest->processRequest($_POST['token']); } else { // POST received but token not specified. echo json_encode(array("error", "POST detected but no valid TOKEN value supplied!")); } } ?> ================================================ FILE: includes/config.php ================================================ 1 && Str::startsWith($value, '"') && Str::endsWith($value, '"')) { return substr($value, 1, -1); } return $value; } } ================================================ FILE: includes/protocolbuffers.inc.php ================================================ read($fp, $limit); } // Reads the protobuf public function read($in, &$limit = PHP_INT_MAX) { $fp = ProtobufIO::toStream($in, $limit); while (!feof($fp) && $limit > 0) { $tag = self::read_varint($fp, $limit); if ($tag === false) break; $wire = $tag & 0x07; $field = $tag >> 3; $field_idx = $field . '-' . self::get_wiretype($wire); $this->_unknown[$field_idx][] = self::read_field($fp, $wire, $limit); } } abstract public function write($fp); abstract public function size(); // TODO Rename this public function toProtobuf() { $fp = fopen('php://temp', 'w+b'); $this->write($fp); rewind($fp); return stream_get_contents($fp); } } /** * Class to aid in the parsing and creating of Protocol Buffer Messages * This class should be included by the developer before they use a * generated protobuf class. * * @author Andrew Brampton */ abstract class Protobuf { const TYPE_DOUBLE = 1; // double, exactly eight bytes on the wire. const TYPE_FLOAT = 2; // float, exactly four bytes on the wire. const TYPE_INT64 = 3; // int64, varint on the wire. Negative numbers // take 10 bytes. Use TYPE_SINT64 if negative // values are likely. const TYPE_UINT64 = 4; // uint64, varint on the wire. const TYPE_INT32 = 5; // int32, varint on the wire. Negative numbers // take 10 bytes. Use TYPE_SINT32 if negative // values are likely. const TYPE_FIXED64 = 6; // uint64, exactly eight bytes on the wire. const TYPE_FIXED32 = 7; // uint32, exactly four bytes on the wire. const TYPE_BOOL = 8; // bool, varint on the wire. const TYPE_STRING = 9; // UTF-8 text. const TYPE_GROUP = 10; // Tag-delimited message. Deprecated. const TYPE_MESSAGE = 11; // Length-delimited message. const TYPE_BYTES = 12; // Arbitrary byte array. const TYPE_UINT32 = 13; // uint32, varint on the wire const TYPE_ENUM = 14; // Enum, varint on the wire const TYPE_SFIXED32 = 15; // int32, exactly four bytes on the wire const TYPE_SFIXED64 = 16; // int64, exactly eight bytes on the wire const TYPE_SINT32 = 17; // int32, ZigZag-encoded varint on the wire const TYPE_SINT64 = 18; // int64, ZigZag-encoded varint on the wire const MIN_INT32 = -2147483648; const MAX_INT32 = 2147483647; const MIN_UINT32 = 0; const MAX_UINT32 = 4294967296; const MIN_INT64 = -9223372036854775808; const MAX_INT64 = 9223372036854775807; const MIN_UINT64 = 0; const MAX_UINT64 = 18446744073709551616; const MAX_VARINT_LEN = 10; const MAX_PHP_INT_VARINT_LEN = 9; // The length of the longest varint that represents a valid PHP int /** * Returns a string representing this wiretype * // TODO Rename to something enum related */ public static function get_wiretype($wire_type) { checkArgument(is_int($wire_type), 'wire_type must be a integer'); switch ($wire_type) { case 0: return '(0) varint'; case 1: return '(1) 64-bit'; case 2: return '(2) length-delimited'; case 3: return '(3) group start'; case 4: return '(4) group end'; case 5: return '(5) 32-bit'; default: return 'unknown'; } } /** * Returns how big (in bytes) this number would be as a varint */ public static function size_varint($value) { // TODO Assert 64bit doubles checkArgument(is_int($value) || is_float($value), 'value must be a integer or float'); // TODO Rearrange to make a binary search if ($value < 0) return self::MAX_VARINT_LEN; // Negitive numbers are signed extended and always take 10 bytes if ($value < 0x80) return 1; // 2^7 if ($value < 0x4000) return 2; // 2^14 if ($value < 0x200000) return 3; // 2^21 if ($value < 0x10000000) return 4; // 2^28 if ($value < 0x800000000) return 5; // 2^35 if ($value < 0x40000000000) return 6; // 2^42 if ($value < 0x2000000000000) return 7; // 2^49 if ($value < 0x100000000000000) return 8; // 2^56 if (is_int($value)) { // A PHP int can't be compared to 2^63, so compare to 2^63-1 if ($value <= 0x7FFFFFFFFFFFFFFF) return 9; } else { // However, a float can't exactly represent 2^63-1, so in that case compare to 2^63 (which it can represent) if ($value < 0x8000000000000000) return 9; } return self::MAX_VARINT_LEN; } /** * Parses the raw bytes of a varint, and returns the number it represents * * @param value the raw bytes int to decode * @returns the decoded int */ public static function decode_varint($encoded) { checkArgument(is_string($encoded), 'encoded value must be a string of bytes'); $len = strlen($encoded); if ($len <= self::MAX_PHP_INT_VARINT_LEN) { // TODO lower this on PHP32. return self::decode_varint_int($encoded, $len); } else { return self::decode_varint_float($encoded, $len); } } public static function decode_signed_varint($encoded) { checkArgument(is_string($encoded), 'encoded value must be a string of bytes'); checkArgument($encoded !== '', 'encoded value contains no bytes'); $len = strlen($encoded); if ($len === self::MAX_VARINT_LEN) { // Negative number // Because PHP only has signed types, there is no native way to do // signed extension. To help maintain a accuracy we do it manually // over the bytes of the varint, by flipping the bits and adding one. $len--; for ($i = 0; $i < $len; $i++) { $encoded[$i] = chr(~(ord($encoded[$i]) & 0x7F)); } // Drop the last digit as it's above 64bit and not used $encoded = substr($encoded, 0, $len); $encoded = rtrim($encoded, "\x80"); // TODO change this to rtrim(\xff) and move above the loop return -self::decode_varint($encoded) - 1; } else { return self::decode_varint($encoded); } } public static function decode_varint_int($encoded, $len) { $result = 0; $shift = 0; for ($i = 0; $i < $len; $i++) { $result |= ((ord($encoded[$i]) & 0x7F) << $shift); $shift += 7; } return $result; } /** * Slower implementation that uses math instead of bit operators (as they don't work on floats) */ public static function decode_varint_float($encoded, $len) { $result = 0.0; $shift = 1.0; for ($i = 0; $i < $len; $i++) { $result += (ord($encoded[$i]) & 0x7F) * $shift; $shift *= 128; } return $result; } public static function decode_varint_bc($encoded, $len) { $result = 0; $shift = 1; for ($i = 0; $i < $len; $i++) { $result = bcadd($result, bcmul(ord($encoded[$i]) & 0x7F, $shift)); $shift = bcmul($shift, 128); } return $result; } public static function decode_varint_gmp($encoded, $len) { $i128 = gmp_init(128); $result = gmp_init(0); $shift = gmp_init(1); for ($i = 0; $i < $len; $i++) { $result = gmp_add($result, gmp_mul(ord($encoded[$i]) & 0x7F, $shift)); $shift = gmp_mul($shift, $i128); } return gmp_strval($result); } public static function read_bytes($fp, $len, &$limit = PHP_INT_MAX) { if ($len <= 0) { return; } checkArgument(get_resource_type($fp) === 'stream', 'fp must be a file resource'); checkArgument(is_integer($len) && $len >= 0, 'len must be a postitive integer'); checkArgument(is_integer($limit) && $limit >= 0, 'limit must be a postitive integer'); if ($limit < $len) { throw new Exception('read_bytes(): Unexpected end of stream'); } $bytes = fread($fp, $len); if ($bytes === '' && feof($fp)) { return false; } if ($bytes === false) { throw new Exception('read_bytes(): Error reading byte'); } if (strlen($bytes) !== $len) { throw new Exception('read_bytes(): Unexpected end of stream'); } $limit -= $len; return $bytes; } /** * Reads a varint but does not decode. * * @param resource $fp Resource stream to read from * @param int $limit Max bytes to read, passed by reference and will be decremented by the number of read bytes * @return string|bool Returns the read varint bytes, or false on EOF. * @throws exception if stream error occurs */ public static function read_varint_bytes($fp, &$limit = PHP_INT_MAX) { $value = ''; do { // Keep reading until we find the last byte $b = self::read_bytes($fp, 1, $limit); if ($b === false) { return false; } $value .= $b; } while ($b >= "\x80"); return $value; } /** * Tries to read a varint from $fp. * * @returns the decoded varint in the range [0,2^64-1] from the stream, or false if the stream has reached eof. * @throws exception if stream error occurs */ public static function read_varint($fp, &$limit = PHP_INT_MAX) { $value = self::read_varint_bytes($fp, $limit); if ($value === false) { return false; } return self::decode_varint($value); } public static function read_signed_varint($fp, &$limit = PHP_INT_MAX) { $value = self::read_varint_bytes($fp, $limit); if ($value === false) { return false; } return self::decode_signed_varint($value); } /** * @returns a integer as specified by the pack variable. * On EOF false is returned, otherwise Exception is thrown on stream error or invalid argument. */ protected static function read_unpack($fp, $len, $pack, &$limit = PHP_INT_MAX) { checkArgument(is_string($pack), 'pack must be a valid string'); $bytes = self::read_bytes($fp, $len, $limit); if ($bytes === false) { return false; } return unpack($pack, $bytes)[1]; } public static function read_float($fp, &$limit = PHP_INT_MAX) { return self::read_unpack($fp, 4, 'f', $limit); } // BUG We need to convert from little order to machine order first public static function read_double($fp, &$limit = PHP_INT_MAX) { return self::read_unpack($fp, 8, 'd', $limit); } // BUG We need to convert from little order to machine order first public static function read_int32($fp, &$limit = PHP_INT_MAX) { return self::read_unpack($fp, 4, 'l', $limit); } // BUG We need to convert from little order to machine order first public static function read_uint32($fp, &$limit = PHP_INT_MAX) { return self::read_unpack($fp, 4, 'V', $limit); } // unpack 'q' and 'P' are only supported since PHP 5.6.3 public static function read_int64($fp, &$limit = PHP_INT_MAX) { return self::read_unpack($fp, 8, 'q', $limit); } // BUG We need to convert from little order to machine order first public static function read_uint64($fp, &$limit = PHP_INT_MAX) { return self::read_unpack($fp, 8, 'P', $limit); } public static function read_zint32($fp, &$limit = PHP_INT_MAX) { $i = self::read_varint($fp, $limit); if ($i === false) { return false; } return (!($i & 0x1) ? ($i >> 1) : (($i >> 1) ^ (~0))); } public static function read_zint64($fp, &$limit = PHP_INT_MAX) { $i = self::read_varint($fp, $limit); if ($i === false) { return false; } return (!($i & 0x1) ? ($i >> 1) : (($i >> 1) ^ (~0))); } /** * Read a unknown field from the stream and decodes the value if possible. */ public static function read_field($fp, $wire_type, &$limit = PHP_INT_MAX) { checkArgument(get_resource_type($fp) === 'stream', 'fp must be a file resource'); checkArgument(is_integer($limit) && $limit >= 0, 'limit must be a postitive integer'); switch ($wire_type) { case 0: // varint return self::read_varint_bytes($fp, $limit); case 1: // 64bit return self::read_bytes($fp, 8, $limit); case 2: // length delimited $len = self::read_varint($fp, $limit); if ($len <= 0) { throw new Exception('read_field(' . self::get_wiretype($wire_type) . '): Invalid length: $len it must be >= 0'); } return self::read_bytes($fp, $len, $limit); //case 3: // Start group TODO we must keep looping until we find the closing end grou //case 4: // End group - We should never skip a end group! // return 0; // Do nothing case 5: // 32bit return self::read_bytes($fp, 4, $limit); default: throw new Exception('read_field(' . self::get_wiretype($wire_type) . '): Unsupported wire_type'); } } /** * Varint encodes a integer, using a loop-less bitwise method. * * @param int|float $value The number to encode * @return string the bytes of the encoded value */ public static function encode_varint_slide($value) { checkArgument(is_int($value), 'value must be a integer'); checkArgument($value >= 0, 'value must be positive'); // Code adapted from CodedOutputStream::WriteVarint64ToArrayInline in // coded_stream.cc original protobuf source $target = "\0\0\0\0\0\0\0\0\0\0"; $part0 = $value & 0xffffffff; $part1 = ($value >> 28) & 0xffffffff; $part2 = ($value >> 56) & 0xffffffff; if ($part2 === 0) { if ($part1 === 0) { if ($part0 < (1 << 14)) { if ($part0 < (1 << 7)) { $size = 1; goto size1; } else { $size = 2; goto size2; } } else { if ($part0 < (1 << 21)) { $size = 3; goto size3; } else { $size = 4; goto size4; } } } else { if ($part1 < (1 << 14)) { if ($part1 < (1 << 7)) { $size = 5; goto size5; } else { $size = 6; goto size6; } } else { if ($part1 < (1 << 21)) { $size = 7; goto size7; } else { $size = 8; goto size8; } } } } else { if ($part2 < (1 << 7)) { $size = 9; goto size9; } else { $size = 10; goto size10; } } assert(false, 'reached a line we should never get to'); // Slide size10: $target[9] = chr(($part2 >> 7) | 0x80); size9 : $target[8] = chr(($part2) | 0x80); size8 : $target[7] = chr(($part1 >> 21) | 0x80); size7 : $target[6] = chr(($part1 >> 14) | 0x80); size6 : $target[5] = chr(($part1 >> 7) | 0x80); size5 : $target[4] = chr(($part1) | 0x80); size4 : $target[3] = chr(($part0 >> 21) | 0x80); size3 : $target[2] = chr(($part0 >> 14) | 0x80); size2 : $target[1] = chr(($part0 >> 7) | 0x80); size1 : $target[0] = chr(($part0) | 0x80); $target[$size - 1] = chr(ord($target[$size - 1]) & 0x7F); return substr($target, 0, $size); } /** * Varint encodes a integer, using a bitwise method. * * @param int|float $value The number to encode * @return string the bytes of the encoded value */ public static function encode_varint_int($value) { checkArgument(is_int($value), 'value must be a integer'); checkArgument($value >= 0, 'value must be positive'); $buf = ''; while ($value > 0x7F) { $buf .= chr(($value & 0x7F) | 0x80); $value = $value >> 7; } return $buf . chr($value & 0x7F); } /** * Varint encodes a float, using a arithmetic method. * * @param int|float $value The number to encode * @return string the bytes of the encoded value */ public static function encode_varint_float($value) { checkArgument(is_int($value) || is_float($value), 'value must be a integer or float'); checkArgument($value >= 0 && $value <= self::MAX_UINT64, 'value must be in the range [0, 2^64-1]'); $buf = ''; while ($value > 0x7F) { $buf .= chr(($value & 0x7F) | 0x80); // TODO Test if mod/+ is faster than and/or $value = floor($value / 128.0); // TODO Test if ($a - $a % $b) / $b; is faster } return $buf . chr($value & 0x7F); } public static function encode_varint_bc($value) { checkArgument(is_numeric($value), 'value must be numeric'); checkArgument(bccomp($value, 0) >= 0 && bccomp($value, "18446744073709551615") <= 0, 'value must be in the range [0, 2^64-1]'); $buf = ''; while (bccomp($value, 128) >= 0) { $buf .= chr(bcadd(bcmod($value, 128), 128)); $value = bcdiv($value, 128, 0); } return $buf . chr(bcmod($value, 128)); } public static function encode_varint_gmp($value) { checkArgument(is_numeric($value), 'value must be numeric'); $value = gmp_init($value); checkArgument(gmp_cmp($value, 0) >= 0 && gmp_cmp($value, "18446744073709551615") <= 0, 'value must be in the range [0, 2^64-1]'); $i128 = gmp_init(128); $buf = ''; while (gmp_cmp($value, $i128) >= 0) { $buf .= chr(gmp_intval(gmp_add(gmp_mod($value, $i128), $i128))); $value = gmp_div($value, $i128, GMP_ROUND_ZERO); // TODO Consider changing to gmp_div_qr so we can avoid a mod } return $buf . chr(gmp_intval(gmp_mod($value, $i128))); } /** * Varint encodes a number. * Depending on the type of value, either the the bitwise or * arithmetic method is used. Typically bitwise is faster, but * only works with ints, thus to encode floats a arithmetic method * is used instead. * * @param int|float $value The number to encode * @return string the bytes of the encoded value * @throws InvalidArgumentException if the $value is not a integer of float */ public static function encode_varint($value) { if ($value < 0) { $value = -($value + 1); $negative = true; } else { $negative = false; } if (is_int($value)) { $encoded = self::encode_varint_int($value); } elseif (is_float($value)) { $encoded = self::encode_varint_float($value); } else { throw new InvalidArgumentException('value must be a integer or float'); } if ($negative) { $len = strlen($encoded); for ($i = $len - 1; $i >= 0; $i--) { $encoded[$i] = chr(~(ord($encoded[$i])) | 0x80); } // Now sign extend $encoded = str_pad($encoded, 9, "\xff", STR_PAD_RIGHT) . "\x01"; } return $encoded; } /** * Writes a unsigned varint to $fp * returns the number of bytes written * * @param $fp * @param $value The int to encode and write * @return The number of bytes written */ public static function write_varint($fp, $value) { checkArgument(get_resource_type($fp) === 'stream', 'fp must be a file resource'); $buf = self::encode_varint($value); $len = strlen($buf); if (fwrite($fp, $buf) !== $len) throw new Exception('write_varint(): Error writing byte'); return $len; } /** * Writes a packed value to $fp * returns the number of bytes written * * @param $fp * @param $value The int to encode and write * @param $pack The pack format * @return The number of bytes written */ protected static function write_pack($fp, $value, $pack) { checkArgument(get_resource_type($fp) === 'stream', 'fp must be a file resource'); checkArgument(is_integer($value) || is_float($value), 'value must be numeric'); checkArgument(is_string($pack), 'pack must be a valid string'); $encoded = pack($pack, $value); $len = strlen($encoded); $wrote = fwrite($fp, $encoded, $len); if ($wrote === false || $wrote !== $len) { throw new Exception('write_pack(): Error writing byte'); } return $len; } public static function write_float($fp, $f) { return self::write_pack($fp, $f, 'f'); } // BUG We need to convert from machine order to little order first public static function write_double($fp, $d) { return self::write_pack($fp, $d, 'd'); } // BUG We need to convert from machine order to little order first public static function write_int32($fp, $i) { return self::write_pack($fp, $i, 'l'); } // BUG We need to convert from machine order to little order first public static function write_uint32($fp, $i) { return self::write_pack($fp, $i, 'V'); } // unpack 'q' and 'P' are only supported since PHP 5.6.3 public static function write_int64($fp, $i) { return self::write_pack($fp, $i, 'q'); } // BUG We need to convert from machine order to little order first public static function write_uint64($fp, $i) { return self::write_pack($fp, $i, 'P'); } public static function write_zint32($fp, $i) { return self::write_varint($fp, ($i >= 0 ? ($i << 1) : (($i << 1) ^ ~0))); } public static function write_zint64($fp, $i) { return self::write_varint($fp, ($i >= 0 ? ($i << 1) : (($i << 1) ^ ~0))); } /** * Seek past a varint */ public static function skip_varint($fp) { checkArgument(get_resource_type($fp) === 'stream', 'fp must be a file resource'); $value = self::read_varint_bytes($fp); if ($value === false) { return false; } } /** * Seek past the current field * TODO Rewrite this to be safer */ public static function skip_field($fp, $wire_type, &$limit = PHP_INT_MAX) { checkArgument(get_resource_type($fp) === 'stream', 'fp must be a file resource'); checkArgument(is_int($wire_type), 'wire_type must be a integer'); switch ($wire_type) { case 0: // varint $tmp = self::skip_varint($fp, $limit); if ($tmp === false) throw new \Exception('Protobuf::skip_varint returned false'); case 1: // 64bit if (fseek($fp, 8, SEEK_CUR) === -1) throw new Exception('skip(' . self::get_wiretype(1) . '): Error seeking'); $limit -= 8; case 2: // length delimited $len = self::read_varint($fp, $limit); if ($len === false) throw new \Exception('Protobuf::read_varint returned false'); if (fseek($fp, $len, SEEK_CUR) === -1) throw new Exception('skip(' . self::get_wiretype(2) . '): Error seeking'); $limit -= $len; //case 3: // Start group TODO we must keep looping until we find the closing end grou //case 4: // End group - We should never skip a end group! // return 0; // Do nothing case 5: // 32bit // if (fseek($fp, 4, SEEK_CUR) === -1) // throw new Exception('skip('. self::get_wiretype(5) . '): Error seeking'); // $limit -= 4; default: // throw new Exception('skip('. self::get_wiretype($wire_type) . '): Unsupported wire_type'); } } /** * TODO Decide to delete toString(). It used when printing unknown fields * Used to aid in pretty printing of Protobuf objects * TODO Decode enums */ private static $print_depth = 0; private static $indent_char = "\t"; private static $print_limit = 50; public static function toString($key, $value, $default = null) { if ($value === $default) return; $ret = str_repeat(self::$indent_char, self::$print_depth) . "$key=>"; if (is_array($value)) { $ret .= "array(\n"; self::$print_depth++; foreach ($value as $i => $v) $ret .= self::toString("[$i]", $v); self::$print_depth--; $ret .= str_repeat(self::$indent_char, self::$print_depth) . ")\n"; } elseif (is_object($value)) { self::$print_depth++; $ret .= get_class($value) . "(\n"; $ret .= $value->__toString() . "\n"; self::$print_depth--; $ret .= str_repeat(self::$indent_char, self::$print_depth) . ")\n"; } elseif (is_string($value)) { $safevalue = addcslashes($value, "\0..\37\177..\377"); if (strlen($safevalue) > self::$print_limit) { $safevalue = substr($safevalue, 0, self::$print_limit) . '...'; } $ret .= '"' . $safevalue . '" (' . strlen($value) . " bytes)\n"; } elseif (is_bool($value)) { $ret .= ($value ? 'true' : 'false') . "\n"; } else { $ret .= (string)$value . "\n"; } return $ret; } } ================================================ FILE: phpunit.xml.dist ================================================ tests src/ ================================================ FILE: src/Api/Data/Data.php ================================================ getName()); // Check if the same property exists within the data class if (!array_key_exists($propertyName, $properties)) { continue; } // Sets the property value $instance->{'set' . $propertyName}($data->{'get' . $propertyName}()); } return $instance; } /** * @param $name * @param $arguments */ public function __call($name, $arguments) { if ($this->isSetMethod($name)) { $attribute = $this->getAttribute($name); $this->{$attribute} = current($arguments); } elseif ($this->isGetMethod($name)) { $attribute = $this->getAttribute($name); return $this->{$attribute}; } } /** * Returns the class properties of a class. * * @param mixed $instance * @return array */ protected static function getClassProperties($instance) { $reflection = new ReflectionClass($instance); return $reflection->getProperties(); } /** * Returns the class properties of a class. * * @param mixed $instance * @return array */ protected static function getClassDefaultProperties($instance) { $reflection = new ReflectionClass($instance); return $reflection->getDefaultProperties(); } /** * Returns the corresponding attribute. * * @param $method * @return string */ protected function getAttribute($method) { return lcfirst(substr($method, 3)); } /** * Returns true if the method corresponds to a setter method, false otherwise. * * @param string $method * @return boolean */ protected function isSetMethod($method) { return strpos($method, 'set') !== FALSE; } /** * Returns true if the method corresponds to a getter method, false otherwise. * * @param string $method * @return boolean */ protected function isGetMethod($method) { return strpos($method, 'get') !== FALSE; } } ================================================ FILE: src/Api/Data/Device.php ================================================ latitude = $latitude; $this->longitude = $longitude; } } ================================================ FILE: src/Api/Map/Data/Resource.php ================================================ getMapCellsArray() as $mapCell) { // Add forts to the list of forts $instance->addForts($mapCell->getFortsArray()); // Add spawn points to the list of spawn points $instance->addSpawnPoints($mapCell->getSpawnPointsArray()); // Add catchable pokemons to the list of catchable pokemons $instance->addCatchablePokemons($mapCell->getCatchablePokemonsArray()); // Add wild pokemons to the list of catchable pokemons $instance->addCatchablePokemons($mapCell->getWildPokemonsArray()); // Add wild pokemons to the list of wild pokemons $instance->addWildPokemons($mapCell->getWildPokemonsArray()); // Add nearby pokemons to the list of nearby pokemons $instance->addNearbyPokemons($mapCell->getNearbyPokemonsArray()); } return $instance; } /** * Add a new fort. * * @param FortData[] $forts */ public function addForts($forts) { foreach ($forts as $fort) { // Create the fort instance $instance = Fort::create($fort); switch ($fort->getType()) { case FortType::CHECKPOINT: // Add the fort to the list of pokestop $this->pokestops[] = new Pokestop($instance); break; case FortType::GYM: // Add the fort to the list of gym $this->gyms[] = $instance; break; } } } /** * Adds a spawn point to the list of spawns points. * * @param SpawnPointData[] $spawnPoints */ public function addSpawnPoints($spawnPoints) { foreach ($spawnPoints as $spawnPoint) { // Add spawn point to the list of spawn points $this->spawnPoints[] = SpawnPoint::create($spawnPoint); } } /** * Adds catchable pokemon to the list of catchable pokemons. * * @param MapPokemon $catchablePokemons */ public function addCatchablePokemons($catchablePokemons) { foreach ($catchablePokemons as $catchablePokemon) { $this->catchablePokemons[] = CatchablePokemon::create($catchablePokemon); } } /** * Adds catchable pokemon to the list of catchable pokemons. * * @param WildPokemon $wildPokemons */ public function addWildPokemons($wildPokemons) { foreach ($wildPokemons as $wildPokemon) { $this->wildPokemons[] = WildPokemonData::create($wildPokemon); } } /** * Adds nearby pokemon to the list of nearby pokemons. * * @param MapPokemon $nearbyPokemons */ public function addNearbyPokemons($nearbyPokemons) { foreach ($nearbyPokemons as $nearbyPokemon) { $this->nearbyPokemons[] = NearbyPokemon::create($nearbyPokemon); } } } ================================================ FILE: src/Api/Map/Data/Resources/CatchablePokemon.php ================================================ result; } /** * @return array */ public function getItemsAwarded() { return $this->itemsAwarded; } /** * @return int */ public function getGemsAwarded() { return $this->gemsAwarded; } /** * @return null */ public function getPokemonDataEgg() { return $this->pokemonDataEgg; } /** * @return int */ public function getExperienceAwarded() { return $this->experienceAwarded; } /** * @return int */ public function getCooldownCompleteTimestampMs() { return $this->cooldownCompleteTimestampMs; } /** * @return int */ public function getChainHackSequenceNumber() { return $this->chainHackSequenceNumber; } } ================================================ FILE: src/Api/Map/Map.php ================================================ data = new Resource(); } /** * Returns the pokestops. * * @return Fort[] */ public function getPokestops() { return $this->data->getPokestops(); } /** * Returns gyms. * * @return Fort[] */ public function getGyms() { return $this->data->getGyms(); } /** * Returns the catchable pokemon located on the map. */ public function getCatchablePokemon() { } /** * Returns the map resources. * * @throws Exception */ public function update() { // Retrieve the map resources $resources = $this->getMapResources(); // Create the resource data instance $this->data = Resource::create($resources); } /** * Returns the map resources. * * @return GetMapObjectsResponse */ protected function getMapResources() { // Retrieved the latitude $latitude = $this->getApplication()->getLatitude(); // Retrieved the longitude $longitude = $this->getApplication()->getLongitude(); // Retrieve a list of cell ids from the latitude and longitude $cellIds = S2::getCellIds($latitude, $longitude); // Retrieve the map resources return $this->getRequestService()->getResources($latitude, $longitude, $cellIds); } /** * Returns the request service. * * @return MapRequestService */ protected function getRequestService() { return new MapRequestService(); } } ================================================ FILE: src/Api/Map/Pokestop.php ================================================ data = $fortData; } /** * Returns true if within range of the pokestop, false otherwise. * * @return boolean */ public function isInRange() { // Retrieve the pokestop location $pokestopLocation = S2LatLng::fromDegrees($this->getLatitude(), $this->getLongitude()); // The current player location $playerLocation = S2LatLng::fromDegrees($this->getCurrentLatitude(), $this->getCurrentLongitude()); // Check if the distance is within the loot interval return $pokestopLocation->getEarthDistance($playerLocation) < self::$LOOT_DISTANCE; } /** * Returns true if available for spin, false otherwise. * * @return boolean */ public function canSpin() { // Check if the pokestop is on cooldown $active = $this->cooldownTimestamp < microtime(); return $this->isInRange() && $active; } /** * Spin the pokestop. * * @return PokestopSpinResult */ public function spin() { // Retrieve the map resources $fortResponse = $this->getRequestService()->spin($this->getId(), $this->getLatitude(), $this->getLongitude()); switch ($fortResponse->getResult()) { case FortSearchResponse_Result::SUCCESS: // Update inventory // Set the cooldown timestamp $this->cooldownTimestamp = $fortResponse->getCooldownCompleteTimestampMs(); break; } return PokestopSpinResult::create($fortResponse); } public function hasLure() { } public function addLure() { } /** * Returns the pokestop details. */ public function getDetails() { } /** * Returns the current latitude. * * @return double */ protected function getCurrentLatitude() { return $this->getApplication()->getLocation()->getLatitude(); } /** * Returns the current longitude. * * @return double */ protected function getCurrentLongitude() { return $this->getApplication()->getLocation()->getLongitude(); } /** * Returns the request service. * * @return PokestopRequestService */ protected function getRequestService() { return new PokestopRequestService(); } } ================================================ FILE: src/Api/Map/Support/S2.php ================================================ parent(15); // Calculate the size $size = 1 * (2 ** (S2CellId::MAX_LEVEL - $cellId->level())); $index = 0; $jindex = 0; $face = $cellId->toFaceIJOrientation($index, $jindex); $cells = array(); $halfWidth = (int)floor($width / 2); for ($x = -$halfWidth; $x <= $halfWidth; $x++) { for ($y = -$halfWidth; $y <= $halfWidth; $y++) { $s2CellID = S2CellId::fromFaceIJ($face, $index + $x * $size, $jindex + $y * $size); $cells[] = $s2CellID->parent(15)->id(); } } return $cells; } } ================================================ FILE: src/Api/Player/CheckChallenge.php ================================================ getRequestService()->checkChallenge(); // Set the checkChallenge data $this->data = CheckChallengeData::create($data); } /** * Returns the request service. * * @return CheckChallengeRequestService */ protected function getRequestService() { return new CheckChallengeRequestService(); } } ================================================ FILE: src/Api/Player/Data/CheckChallenge/CheckChallengeData.php ================================================ showChallenge = $data->getShowChallenge(); // Set the challengeUrl $instance->challengeUrl = $data->getChallengeUrl(); return $instance; } } ================================================ FILE: src/Api/Player/Data/Inventory/AppliedItem.php ================================================ appliedItems[] = AppliedItem::create($appliedItem); } /** * Creates a data instance from a Protobuf Message. * * @param AppliedItemsData $data * @return static */ public static function create($data) { // Create a instance $instance = new static(); // Retrieve the items $items = $data->getItem(); // Iterate through the list of items foreach ($items as $item) { // Add a applied item to the list of applied items $instance->add($item); } return $instance; } } ================================================ FILE: src/Api/Player/Data/Inventory/CandyBank.php ================================================ getFamilyId(), $this->candies)) { // Retrieve the candy item $storedCandyItem = $this->candies[$candyItem->getFamilyId()]; // Update the number of candy item $storedCandyItem->setCandy($storedCandyItem->getCandy() + $candyItem->getCandy()); } else { $this->candies[$candyItem->getFamilyId()] = $candyItem; } } /** * Gets candy item by pokemon family id. * * @param integer $familyId * @return CandyItem * @throws Exception */ public function get($familyId) { // Check if the provided family id is valid if (!PokemonFamilyId::isValid($familyId)) { throw new Exception(sprintf('Invalid pokemon family id provided. Pokemon family id \'%s\'', $familyId)); } // Check if the candy bank contains the pokemon family id if (!array_key_exists($familyId, $this->candies)) { throw new Exception(sprintf('The candy bank does not contain candy for the pokemon family. Pokemon family id \'%s\'', $familyId)); } return $this->candies[$familyId]; } } ================================================ FILE: src/Api/Player/Data/Inventory/CandyItem.php ================================================ candy; } } ================================================ FILE: src/Api/Player/Data/Inventory/EggIncubator.php ================================================ eggIncubators[] = EggIncubator::create($eggIncubator); } /** * Creates a data instance from a Protobuf Message. * * @param EggIncubatorsData $data * @return static */ public static function create($data) { // Create a instance $instance = new static(); // Iterate through the list of egg incubators foreach ($data->getEggIncubator() as $eggIncubator) { // Add a egg incubator to the list of egg incubators $instance->add($eggIncubator); } return $instance; } } ================================================ FILE: src/Api/Player/Data/Inventory/EggPokemon.php ================================================ pokeBank = new PokeBank(); $this->candyBank = new CandyBank(); $this->pokedex = new Pokedex(); $this->eggIncubators = new EggIncubators(); $this->appliedItems = new AppliedItems(); } /** * Creates a data instance from a Protobuf Message. * * @param InventoryDelta $data * @return static */ public static function create($data) { // Initialize the Items instance $instance = new static(); /** @var InventoryItem[] $items */ $items = $data->getInventoryItems(); // Iterate through the inventory items foreach ($items as $item) { // Create the corresponding item type $instance->createItemData($item->getInventoryItemData()); } return $instance; } /** * Creates item data. * * @param InventoryItemData $itemData * @throws Exception */ protected function createItemData($itemData) { if (self::isItem($itemData)) { // Retrieve the item data instance $item = $itemData->getItem(); // Retrieve the item data $this->items[$item->getItemId()] = Item::create($item); } elseif (self::isEggPokemon($itemData)) { // Retrieve the applied items data $this->eggPokemon[] = EggPokemon::create($itemData->getPokemonData()); } elseif (self::isPokemon($itemData)) { // Retrieve the pokemon data $this->pokeBank->add($itemData->getPokemonData()); } elseif (self::isCandy($itemData)) { // Retrieve the candy item data $this->candyBank->add($itemData->getCandy()); } elseif (self::isPokedexItem($itemData)) { // Retrieve the pokedex item data $this->pokedex->add($itemData->getPokedexEntry()); } elseif (self::isEggIncubators($itemData)) { // Retrieve the egg incubators item data $this->eggIncubators = EggIncubators::create($itemData->getEggIncubators()); } elseif (self::isAppliedItems($itemData)) { // Retrieve the applied items data $this->appliedItems = AppliedItems::create($itemData->getAppliedItems()); } elseif (self::isPlayerStats($itemData)) { // Retrieve the applied items data $this->stats = Stats::create($itemData->getPlayerStats()); } else { Log::warning('Unknown item type encountered', array('item' => $itemData)); } } /** * Returns item instance or null. * * @param integer $id * @return Item * @throws Exception */ public function getItemById($id) { // Check if we retrieved a valid item id if (!ItemId::isValid($id)) { throw new Exception(sprintf('Invalid item id provided. Id \'%s\'', $id)); } // Check if we have that particular item in the inventory if (!array_key_exists($id, $this->items)) { return null; } return $this->items[$id]; } /** * Returns true if the item data is of type item, false otherwise. * * @param InventoryItemData $itemData * @return boolean */ protected static function isItem($itemData) { return $itemData->getItem() != null; } /** * Returns true if the item data is of type pokemon, false otherwise. * * @param InventoryItemData $itemData * @return boolean */ protected static function isPokemon($itemData) { return $itemData->getPokemonData() != null; } /** * Returns true if the item data is of type candy, false otherwise. * * @param InventoryItemData $itemData * @return boolean */ protected static function isCandy($itemData) { return $itemData->getCandy() != null; } /** * Returns true if the item data is of type pokedex item, false otherwise. * * @param InventoryItemData $itemData * @return boolean */ protected static function isPokedexItem($itemData) { return $itemData->getPokedexEntry() != null; } /** * Returns true if the item data is of type pokedex item, false otherwise. * * @param InventoryItemData $itemData * @return boolean */ protected static function isEggIncubators($itemData) { return $itemData->getEggIncubators() != null; } /** * Returns true if the item data is of type pokedex item, false otherwise. * * @param InventoryItemData $itemData * @return boolean */ protected static function isAppliedItems($itemData) { return $itemData->getAppliedItems() != null; } /** * Returns true if the item data is of type pokedex item, false otherwise. * * @param InventoryItemData $itemData * @return boolean */ protected static function isPlayerStats($itemData) { return $itemData->getPlayerStats() != null; } /** * Returns true if the item data is of type egg pokemon item, false otherwise. * * @param InventoryItemData $itemData * @return boolean */ protected static function isEggPokemon($itemData) { return $itemData->getPokemonData() != null && $itemData->getPokemonData()->getIsEgg(); } } ================================================ FILE: src/Api/Player/Data/Inventory/PokeBank.php ================================================ pokemons = new PokemonCollection(); } /** * Add a pokemon to the poke bank by pokemon data. * * @param PokemonData $data */ public function add($data) { // Create a new pokemon instance $pokemon = new Pokemon(PokemonItem::create($data)); // Add the pokemon to the list of pokemons $this->pokemons->put($pokemon->getId(), $pokemon); } /** * Add a pokemon to the poke bank. * * @param Pokemon $pokemon */ public function addPokemon($pokemon) { // Add the pokemon to the list of pokemons $this->pokemons->put($pokemon->getId(), $pokemon); } /** * Remove the pokemon from the poke bank by pokemon id. * * @param integer $id * @return boolean */ public function removeBydId($id) { // Check if the poke bank contains the pokemon if (!$this->pokemons->offsetExists($id)) { return false; } // Remove the pokemon from the poke bank $this->pokemons->forget($id); return true; } /** * Remove the pokemon from the poke bank. * * @param Pokemon $pokemon * @return boolean */ public function removePokemon($pokemon) { return $this->removeBydId($pokemon->getPokemonId()); } /** * Returns a pokemon by pokemon id. * * @param integer $id * @return Pokemon */ public function getPokemonById($id) { // Check if the pokemon exists within the poke bank if (!$this->pokemons->offsetExists($id)) { return null; } return $this->pokemons->get($id); } /** * Returns pokemons by pokemon type. * * @param integer $typeId * @return PokemonCollection * @throws Exception */ public function getPokemonsByType($typeId) { // Check if we retrieved a valid pokemon type id if (!PokemonId::isValid($typeId)) { throw new Exception(sprintf('Invalid pokemon type id provided. Provided pokemon type id: \'%s\'', $typeId)); } return $this->pokemons->filter(function (Pokemon $pokemon) use ($typeId) { return $pokemon->getPokemonId() == $typeId; }); } /** * Returns pokemons by pokemon family. * * @param integer $familyId * @return PokemonCollection * @throws Exception */ public function getPokemonsByFamily($familyId) { // Check if we retrieved a valid pokemon family id if (!PokemonFamilyId::isValid($familyId)) { throw new Exception(sprintf('Invalid pokemon family id provided. Provided pokemon family id: \'%s\'', $familyId)); } return $this->pokemons->filter(function (Pokemon $pokemon) use ($familyId) { return $pokemon->getFamilyId() == $familyId; }); } } ================================================ FILE: src/Api/Player/Data/Inventory/Pokedex.php ================================================ items[$item->getPokemonId()] = $item; } /** * Gets the pokedex item by pokemon id * * @param integer $pokemonId * @return PokedexItem|null */ public function get($pokemonId) { // Check whether a valid pokemon id was provided if (!PokemonId::isValid($pokemonId)) { return null; } // Check if the pokemon exists within the pokedex if (array_key_exists($pokemonId, $this->items)) { return $this->items[$pokemonId]; } return $this->createEmptyItem($pokemonId); } /** * Creates a empty PokedexItem. * * @param integer $pokemonId * @return PokedexItem */ protected function createEmptyItem($pokemonId) { // Create a new pokedex item $entry = new PokedexItem(); // Set the pokemon id $entry->setPokemonId($pokemonId); return $entry; } } ================================================ FILE: src/Api/Player/Data/Inventory/PokedexItem.php ================================================ getLevelXp($this->getLevel()); } /** * Return the XP earned on the current level. * * @return number */ public function getCurrentLevelProgressXp() { return $this->getExperience() - $this->getCurrentLevelXp(); } } ================================================ FILE: src/Api/Player/Data/Journal/Fort.php ================================================ result = $data->getResult(); // Set the fort id $instance->fortId = $data->getFortId(); // Set the egg count $instance->eggs = $data->getEggs(); foreach ($data->getItems() as $item) { // Add the item to the list of items $instance->items[] = Item::create($item); } return $instance; } } ================================================ FILE: src/Api/Player/Data/Journal/Item.php ================================================ itemId; } /** * Returns the count. * * @return int */ public function getCount() { return $this->count; } /** * Return true if unseen, false otherwise. * * @return boolean */ public function isUnseen() { return $this->unseen; } } ================================================ FILE: src/Api/Player/Data/Journal/Log.php ================================================ forts; } /** * @return Pokemon[] */ public function getPokemons() { return $this->pokemons; } /** * Creates a data instance from a Protobuf Message. * * @param ActionLogEntry[] $data * @return static */ public static function create($data) { $instance = new static(); // Check if we retrieved valid data if ($data == null) { return $instance; } foreach ($data as $logEntry) { if ($logEntry->getCatchPokemon()) { $element = Pokemon::create($logEntry->getCatchPokemon()); $element->setTimestampMs($logEntry->getTimestampMs()); // Adds pokemon to the list of pokemon log entries $instance->pokemons[] = $element; } elseif ($logEntry->getFortSearch()) { $element = Fort::create($logEntry->getFortSearch());; $element->setTimestampMs($logEntry->getTimestampMs()); // Add fort to the list of fort log entries $instance->forts[] = $element; } } return $instance; } } ================================================ FILE: src/Api/Player/Data/Journal/Pokemon.php ================================================ timestampMs; } /** * Returns the catch result. * (1=success, 2=escaped) * @return int */ public function getResult() { return $this->result; } /** * Returns pokemon id. * * @return int */ public function getPokemonId() { return $this->pokemonId; } /** * Returns the combat points. * * @return int */ public function getCombatPoints() { return $this->combatPoints; } /** * Returns the pokemon data id. * * @return int */ public function getPokemonDataId() { return $this->pokemonDataId; } /** * Returns the pokemon metadata. * * @return PokemonMeta */ public function getPokemonMeta() { return PokemonMetaRegistry::getByPokemonId($this->pokemonId); } /** * Returns the pokedex entry. * * @return PokedexItem */ public function getPokedexEntry() { return $this->pokedex()->get($this->pokemonId); } } ================================================ FILE: src/Api/Player/Data/Profile/Avatar.php ================================================ setName($playerCurrency->getName()); $currency->setAmount($playerCurrency->getAmount()); $instance->currencies[$playerCurrency->getName()] = $currency; } return $instance; } /** * Returns the currency by currency type. * * @param string $type * @return Currency * @throws Exception */ public function getByType($type) { // Check if the provided type is a valid currency type if (!array_key_exists($type, $this->currencies)) { throw new Exception('Invalid currency type provided'); } return $this->currencies[$type]; } /** * Returns the pokecoins currency. * * @return Currency * @throws Exception */ public function getPokecoins() { return $this->getByType(self::CURRENCY_TYPE_POKECOIN); } /** * Returns stardust currency. * * @return Currency * @throws Exception */ public function getStardust() { return $this->getByType(self::CURRENCY_TYPE_STARDUST); } /** * Returns all currency types. * * @return array */ public function toArray() { return $this->currencies; } } ================================================ FILE: src/Api/Player/Data/Profile/Currency.php ================================================ username = $data->getUsername(); // Set the team $instance->team = $data->getTeam(); // Set the creation time $instance->creationTime = $data->getCreationTimestampMs(); // Crates the tutorial state $instance->tutorialState = TutorialState::create($data->getTutorialState()); // Creates the player avatar $instance->avatar = Avatar::create($data->getAvatar()); // Set the pokemon storage $instance->pokemonStorage = $data->getMaxPokemonStorage(); // Set the item storage $instance->itemStorage = $data->getMaxItemStorage(); // Set the daily bonus $instance->dailyBonus = DailyBonus::create($data->getDailyBonus()); // Set the equipped badge $instance->badge = Badge::create($data->getEquippedBadge()); // Set the contact settings $instance->contactSettings = ContactSettings::create($data->getContactSettings()); // Sets the player currencies $instance->currencies = Currencies::create($data->getCurrencies()); return $instance; } } ================================================ FILE: src/Api/Player/Data/Profile/TutorialState.php ================================================ setState($tutorialState); return $instance; } } ================================================ FILE: src/Api/Player/Inventory.php ================================================ getRequestService()->getInventory(); // Retrieve the inventory items $inventoryItems = $playerInventory->getInventoryDelta(); // Set the items $this->data = Items::create($inventoryItems); Log::debug(sprintf('[#%s] Retrieved inventory.', __CLASS__)); } /** * Recycle inventory item * * @param int $itemId * @param int $count * @throws Exception * @return RecycleInventoryItemResponse */ public function recycle($itemId, $count) { // Retrieve the item from the inventory $item = $this->data->getItemById($itemId); // Retrieve the item from the inventory, validate the capacity if ($item == null || $item->getCount() < $count) { return RecycleInventoryItemResponse_Result::ERROR_NOT_ENOUGH_COPIES; } // Execute the API request $response = $this->getRequestService()->recycle($itemId, $count); // Check if the request was successfully executed if ($response->getResult() !== RecycleInventoryItemResponse_Result::SUCCESS) { throw new Exception(sprintf('Invalid response during item recycle. Result: \'%s\' Code: \'%s\'', $response->getResult(), GenericEnum::name(RecycleInventoryItemResponse_Result::class, $response->getResult()))); } // Update inventory to reflect on the changes $item->setCount($item->getCount() - $count); return $response; } /** * Use incense item * * @param int $itemId * @throws Exception * @return UseIncenseResponse */ public function useIncense($itemId) { // Execute the API request $response = $this->getRequestService()->useIncense($itemId); // Check if the request was successfully executed if ($response->getResult() !== UseIncenseResponse_Result::SUCCESS) { throw new Exception(sprintf('Invalid response during item usage. Result: \'%s\' Code: \'%s\'', $response->getResult(), GenericEnum::name(UseIncenseResponse_Result::class, $response->getResult()))); } // Update inventory $this->update(); return $response; } /** * Use XP Boost item * * @param int $itemId * @throws Exception * @return UseItemXpBoostResponse */ public function useItemXpBoost($itemId) { // Execute the API request $response = $this->getRequestService()->useItemXpBoost($itemId); // Check if the request was successfully executed if ($response->getResult() !== UseItemXpBoostResponse_Result::SUCCESS) { throw new Exception(sprintf('Invalid response during item usage. Result: \'%s\' Code: \'%s\'', $response->getResult(), GenericEnum::name(UseItemXpBoostResponse_Result::class, $response->getResult()))); } // Update inventory $this->update(); return $response; } /** * Returns the request service. * * @return InventoryRequestService */ protected function getRequestService() { return new InventoryRequestService(); } } ================================================ FILE: src/Api/Player/Journal.php ================================================ getData()->getForts(); } /** * Returns the pokemon log entries. * * @return Data\Journal\Pokemon[] */ public function getPokemons() { return $this->getData()->getPokemons(); } /** * Returns the log entries. * * @return Log */ public function getEntries() { return $this->getData(); } /** * */ public function update() { // Retrieves the player metadata $data = $this->getRequestService()->getJournal(); // Set the log entries $this->data = Log::create($data->getLogEntries()); } /** * Returns the request service. * * @return JournalRequestService */ protected function getRequestService() { return new JournalRequestService(); } } ================================================ FILE: src/Api/Player/Profile.php ================================================ getRequestService()->getPlayer(); // Set the profile data $this->data = ProfileData::create($data->getPlayerData()); } /** * Returns the request service. * * @return PlayerRequestService */ protected function getRequestService() { return new PlayerRequestService(); } } ================================================ FILE: src/Api/Pokemon/Collection/PokemonCollection.php ================================================ sortBy(function (Pokemon $pokemon1) { return $pokemon1->getName(); }, SORT_REGULAR, $descending); } /** * Returns a sorted collection by level. * * @param bool $descending * @return static */ public function sortByLevel($descending = false) { return $this->sortBy(function (Pokemon $pokemon1) { return $pokemon1->getLevel(); }, SORT_REGULAR, $descending); } /** * Returns a sorted collection by combat points. * * @param bool $descending * @return static */ public function sortByCp($descending = false) { return $this->sortBy(function (Pokemon $pokemon1) { return $pokemon1->getCp(); }, SORT_REGULAR, $descending); } /** * Returns a sorted collection by Pokedex index. * * @param bool $descending * @return static */ public function sortByPokedexIndex($descending = false) { return $this->sortBy(function (Pokemon $pokemon1) { return $pokemon1->getPokemonId(); }, SORT_REGULAR, $descending); } /** * Returns a sorted collection by IV ratio. * * @param bool $descending * @return static */ public function sortByIVRatio($descending = false) { return $this->sortBy(function (Pokemon $pokemon1) { return $pokemon1->getIVRatio(); }, SORT_REGULAR, $descending); } /** * Returns a sorted collection by date captured. * * @param bool $descending * @return static */ public function sortByDate($descending = false) { return $this->sortBy(function (Pokemon $pokemon1) { return $pokemon1->getCreationTimeMs(); }, SORT_REGULAR, $descending); } } ================================================ FILE: src/Api/Pokemon/Data/MovementType.php ================================================ templateId; } /** * @param mixed $templateId */ public function setTemplateId($templateId) { $this->templateId = $templateId; } /** * @return mixed */ public function getFamily() { return $this->family; } /** * @param mixed $family */ public function setFamily($family) { $this->family = $family; } /** * @return mixed */ public function getPokemonClass() { return $this->pokemonClass; } /** * @param mixed $pokemonClass */ public function setPokemonClass($pokemonClass) { $this->pokemonClass = $pokemonClass; } /** * @return mixed */ public function getType2() { return $this->type2; } /** * @param mixed $type2 */ public function setType2($type2) { $this->type2 = $type2; } /** * @return mixed */ public function getPokedexHeightM() { return $this->pokedexHeightM; } /** * @param mixed $pokedexHeightM */ public function setPokedexHeightM($pokedexHeightM) { $this->pokedexHeightM = $pokedexHeightM; } /** * @return mixed */ public function getHeightStdDev() { return $this->heightStdDev; } /** * @param mixed $heightStdDev */ public function setHeightStdDev($heightStdDev) { $this->heightStdDev = $heightStdDev; } /** * @return mixed */ public function getBaseStamina() { return $this->baseStamina; } /** * @param mixed $baseStamina */ public function setBaseStamina($baseStamina) { $this->baseStamina = $baseStamina; } /** * @return mixed */ public function getCylRadiusM() { return $this->cylRadiusM; } /** * @param mixed $cylRadiusM */ public function setCylRadiusM($cylRadiusM) { $this->cylRadiusM = $cylRadiusM; } /** * @return mixed */ public function getBaseFleeRate() { return $this->baseFleeRate; } /** * @param mixed $baseFleeRate */ public function setBaseFleeRate($baseFleeRate) { $this->baseFleeRate = $baseFleeRate; } /** * @return mixed */ public function getBaseAttack() { return $this->baseAttack; } /** * @param mixed $baseAttack */ public function setBaseAttack($baseAttack) { $this->baseAttack = $baseAttack; } /** * @return mixed */ public function getDiskRadiusM() { return $this->diskRadiusM; } /** * @param mixed $diskRadiusM */ public function setDiskRadiusM($diskRadiusM) { $this->diskRadiusM = $diskRadiusM; } /** * @return mixed */ public function getCollisionRadiusM() { return $this->collisionRadiusM; } /** * @param mixed $collisionRadiusM */ public function setCollisionRadiusM($collisionRadiusM) { $this->collisionRadiusM = $collisionRadiusM; } /** * @return mixed */ public function getPokedexWeightKg() { return $this->pokedexWeightKg; } /** * @param mixed $pokedexWeightKg */ public function setPokedexWeightKg($pokedexWeightKg) { $this->pokedexWeightKg = $pokedexWeightKg; } /** * @return mixed */ public function getMovementType() { return $this->movementType; } /** * @param mixed $movementType */ public function setMovementType($movementType) { $this->movementType = $movementType; } /** * @return mixed */ public function getType1() { return $this->type1; } /** * @param mixed $type1 */ public function setType1($type1) { $this->type1 = $type1; } /** * @return mixed */ public function getCollisionHeadRadiusM() { return $this->collisionHeadRadiusM; } /** * @param mixed $collisionHeadRadiusM */ public function setCollisionHeadRadiusM($collisionHeadRadiusM) { $this->collisionHeadRadiusM = $collisionHeadRadiusM; } /** * @return mixed */ public function getMovementTimerS() { return $this->movementTimerS; } /** * @param mixed $movementTimerS */ public function setMovementTimerS($movementTimerS) { $this->movementTimerS = $movementTimerS; } /** * @return mixed */ public function getJumpTimeS() { return $this->jumpTimeS; } /** * @param mixed $jumpTimeS */ public function setJumpTimeS($jumpTimeS) { $this->jumpTimeS = $jumpTimeS; } /** * @return mixed */ public function getModelScale() { return $this->modelScale; } /** * @param mixed $modelScale */ public function setModelScale($modelScale) { $this->modelScale = $modelScale; } /** * @return mixed */ public function getUniqueId() { return $this->uniqueId; } /** * @param mixed $uniqueId */ public function setUniqueId($uniqueId) { $this->uniqueId = $uniqueId; } /** * @return mixed */ public function getBaseDefense() { return $this->baseDefense; } /** * @param mixed $baseDefense */ public function setBaseDefense($baseDefense) { $this->baseDefense = $baseDefense; } /** * @return mixed */ public function getAttackTimerS() { return $this->attackTimerS; } /** * @param mixed $attackTimerS */ public function setAttackTimerS($attackTimerS) { $this->attackTimerS = $attackTimerS; } /** * @return mixed */ public function getWeightStdDev() { return $this->weightStdDev; } /** * @param mixed $weightStdDev */ public function setWeightStdDev($weightStdDev) { $this->weightStdDev = $weightStdDev; } /** * @return mixed */ public function getCylHeightM() { return $this->cylHeightM; } /** * @param mixed $cylHeightM */ public function setCylHeightM($cylHeightM) { $this->cylHeightM = $cylHeightM; } /** * @return mixed */ public function getCandyToEvolve() { return $this->candyToEvolve; } /** * @param mixed $candyToEvolve */ public function setCandyToEvolve($candyToEvolve) { $this->candyToEvolve = $candyToEvolve; } /** * @return mixed */ public function getCollisionHeightM() { return $this->collisionHeightM; } /** * @param mixed $collisionHeightM */ public function setCollisionHeightM($collisionHeightM) { $this->collisionHeightM = $collisionHeightM; } /** * @return mixed */ public function getShoulderModeScale() { return $this->shoulderModeScale; } /** * @param mixed $shoulderModeScale */ public function setShoulderModeScale($shoulderModeScale) { $this->shoulderModeScale = $shoulderModeScale; } /** * @return mixed */ public function getBaseCaptureRate() { return $this->baseCaptureRate; } /** * @param mixed $baseCaptureRate */ public function setBaseCaptureRate($baseCaptureRate) { $this->baseCaptureRate = $baseCaptureRate; } /** * @return mixed */ public function getParentId() { return $this->parentId; } /** * @param mixed $parentId */ public function setParentId($parentId) { $this->parentId = $parentId; } /** * @return mixed */ public function getCylGroundM() { return $this->cylGroundM; } /** * @param mixed $cylGroundM */ public function setCylGroundM($cylGroundM) { $this->cylGroundM = $cylGroundM; } /** * @return PokemonMove */ public function getQuickMoves() { return $this->quickMoves; } /** * @param PokemonMove $quickMoves */ public function setQuickMoves(PokemonMove $quickMoves) { $this->quickMoves = $quickMoves; } /** * @return PokemonMove */ public function getCinematicMoves() { return $this->cinematicMoves; } /** * @param PokemonMove $cinematicMoves */ public function setCinematicMoves(PokemonMove $cinematicMoves) { $this->cinematicMoves = $cinematicMoves; } /** * @return mixed */ public function getNumber() { return $this->number; } /** * @param mixed $number */ public function setNumber($number) { $this->number = $number; } } ================================================ FILE: src/Api/Pokemon/Data/PokemonMetaRegistry.php ================================================ setTemplateId("V0001_POKEMON_BULBASAUR"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_BULBASAUR); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(0.7); $pokemonMeta->setHeightStdDev(0.0875); $pokemonMeta->setBaseStamina(90); $pokemonMeta->setCylRadiusM(0.3815); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(118); $pokemonMeta->setDiskRadiusM(0.5723); $pokemonMeta->setCollisionRadiusM(0.3815); $pokemonMeta->setPokedexWeightKg(6.9); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.2725); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1.15); $pokemonMeta->setModelScale(1.09); $pokemonMeta->setUniqueId("V0001_POKEMON_BULBASAUR"); $pokemonMeta->setBaseDefense(118); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(0.8625); $pokemonMeta->setCylHeightM(0.763); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.654); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::VINE_WHIP_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SLUDGE_BOMB, PokemonMove::SEED_BOMB, PokemonMove::POWER_WHIP, ))); $pokemonMeta->setNumber(1); self::$POKEMON_META[PokemonId::BULBASAUR] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0002_POKEMON_IVYSAUR"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_BULBASAUR); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.51); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(151); $pokemonMeta->setDiskRadiusM(0.765); $pokemonMeta->setCollisionRadiusM(0.31875); $pokemonMeta->setPokedexWeightKg(13); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.255); $pokemonMeta->setMovementTimerS(23); $pokemonMeta->setJumpTimeS(1.5); $pokemonMeta->setModelScale(0.85); $pokemonMeta->setUniqueId("V0002_POKEMON_IVYSAUR"); $pokemonMeta->setBaseDefense(151); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(1.625); $pokemonMeta->setCylHeightM(1.0625); $pokemonMeta->setCandyToEvolve(100); $pokemonMeta->setCollisionHeightM(0.6375); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.08); $pokemonMeta->setParentId(PokemonId::BULBASAUR); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::VINE_WHIP_FAST, PokemonMove::RAZOR_LEAF_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SLUDGE_BOMB, PokemonMove::POWER_WHIP, PokemonMove::SOLAR_BEAM, ))); $pokemonMeta->setNumber(2); self::$POKEMON_META[PokemonId::IVYSAUR] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0003_POKEMON_VENUSAUR"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_BULBASAUR); $pokemonMeta->setPokemonClass(PokemonClass::EPIC); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(2); $pokemonMeta->setHeightStdDev(0.25); $pokemonMeta->setBaseStamina(160); $pokemonMeta->setCylRadiusM(0.759); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(198); $pokemonMeta->setDiskRadiusM(1.1385); $pokemonMeta->setCollisionRadiusM(0.759); $pokemonMeta->setPokedexWeightKg(100); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.3795); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(0.69); $pokemonMeta->setUniqueId("V0003_POKEMON_VENUSAUR"); $pokemonMeta->setBaseDefense(198); $pokemonMeta->setAttackTimerS(4); $pokemonMeta->setWeightStdDev(12.5); $pokemonMeta->setCylHeightM(1.2075); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.035); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.04); $pokemonMeta->setParentId(PokemonId::IVYSAUR); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::VINE_WHIP_FAST, PokemonMove::RAZOR_LEAF_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SLUDGE_BOMB, PokemonMove::PETAL_BLIZZARD, PokemonMove::SOLAR_BEAM, ))); $pokemonMeta->setNumber(3); self::$POKEMON_META[PokemonId::VENUSAUR] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0004_POKEMON_CHARMANDER"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CHARMANDER); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.6); $pokemonMeta->setHeightStdDev(0.075); $pokemonMeta->setBaseStamina(78); $pokemonMeta->setCylRadiusM(0.3125); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(116); $pokemonMeta->setDiskRadiusM(0.4688); $pokemonMeta->setCollisionRadiusM(0.15625); $pokemonMeta->setPokedexWeightKg(8.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.15625); $pokemonMeta->setMovementTimerS(29); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(1.25); $pokemonMeta->setUniqueId("V0004_POKEMON_CHARMANDER"); $pokemonMeta->setBaseDefense(96); $pokemonMeta->setAttackTimerS(10); $pokemonMeta->setWeightStdDev(1.0625); $pokemonMeta->setCylHeightM(0.75); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.46875); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::SCRATCH_FAST, PokemonMove::EMBER_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::FLAME_CHARGE, PokemonMove::FLAME_BURST, PokemonMove::FLAMETHROWER, ))); $pokemonMeta->setNumber(4); self::$POKEMON_META[PokemonId::CHARMANDER] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0005_POKEMON_CHARMELEON"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CHARMANDER); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.1); $pokemonMeta->setHeightStdDev(0.1375); $pokemonMeta->setBaseStamina(116); $pokemonMeta->setCylRadiusM(0.4635); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(158); $pokemonMeta->setDiskRadiusM(0.6953); $pokemonMeta->setCollisionRadiusM(0.2575); $pokemonMeta->setPokedexWeightKg(19); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.23175); $pokemonMeta->setMovementTimerS(23); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.03); $pokemonMeta->setUniqueId("V0005_POKEMON_CHARMELEON"); $pokemonMeta->setBaseDefense(129); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(2.375); $pokemonMeta->setCylHeightM(1.133); $pokemonMeta->setCandyToEvolve(100); $pokemonMeta->setCollisionHeightM(0.7725); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.08); $pokemonMeta->setParentId(PokemonId::CHARMANDER); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::SCRATCH_FAST, PokemonMove::EMBER_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::FIRE_PUNCH, PokemonMove::FLAME_BURST, PokemonMove::FLAMETHROWER, ))); $pokemonMeta->setNumber(5); self::$POKEMON_META[PokemonId::CHARMELEON] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0006_POKEMON_CHARIZARD"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CHARMANDER); $pokemonMeta->setPokemonClass(PokemonClass::EPIC); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.7); $pokemonMeta->setHeightStdDev(0.2125); $pokemonMeta->setBaseStamina(156); $pokemonMeta->setCylRadiusM(0.81); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(223); $pokemonMeta->setDiskRadiusM(1.215); $pokemonMeta->setCollisionRadiusM(0.405); $pokemonMeta->setPokedexWeightKg(90.5); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.2025); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.81); $pokemonMeta->setUniqueId("V0006_POKEMON_CHARIZARD"); $pokemonMeta->setBaseDefense(176); $pokemonMeta->setAttackTimerS(4); $pokemonMeta->setWeightStdDev(11.3125); $pokemonMeta->setCylHeightM(1.377); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.0125); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.04); $pokemonMeta->setParentId(PokemonId::CHARMELEON); $pokemonMeta->setCylGroundM(0.405); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::WING_ATTACK_FAST, PokemonMove::EMBER_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DRAGON_CLAW, PokemonMove::FLAMETHROWER, PokemonMove::FIRE_BLAST, ))); $pokemonMeta->setNumber(6); self::$POKEMON_META[PokemonId::CHARIZARD] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0007_POKEMON_SQUIRTLE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SQUIRTLE); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.5); $pokemonMeta->setHeightStdDev(0.0625); $pokemonMeta->setBaseStamina(88); $pokemonMeta->setCylRadiusM(0.3825); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(94); $pokemonMeta->setDiskRadiusM(0.5738); $pokemonMeta->setCollisionRadiusM(0.2295); $pokemonMeta->setPokedexWeightKg(9); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.19125); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.53); $pokemonMeta->setUniqueId("V0007_POKEMON_SQUIRTLE"); $pokemonMeta->setBaseDefense(122); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(1.125); $pokemonMeta->setCylHeightM(0.64259988); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.3825); $pokemonMeta->setShoulderModeScale(0.1); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, PokemonMove::BUBBLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::AQUA_TAIL, PokemonMove::WATER_PULSE, PokemonMove::AQUA_JET, ))); $pokemonMeta->setNumber(7); self::$POKEMON_META[PokemonId::SQUIRTLE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0008_POKEMON_WARTORTLE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SQUIRTLE); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(118); $pokemonMeta->setCylRadiusM(0.375); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(126); $pokemonMeta->setDiskRadiusM(0.5625); $pokemonMeta->setCollisionRadiusM(0.25); $pokemonMeta->setPokedexWeightKg(22.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.1875); $pokemonMeta->setMovementTimerS(23); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0008_POKEMON_WARTORTLE"); $pokemonMeta->setBaseDefense(155); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(2.8125); $pokemonMeta->setCylHeightM(1); $pokemonMeta->setCandyToEvolve(100); $pokemonMeta->setCollisionHeightM(0.625); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.08); $pokemonMeta->setParentId(PokemonId::SQUIRTLE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BITE_FAST, PokemonMove::WATER_GUN_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::ICE_BEAM, PokemonMove::HYDRO_PUMP, PokemonMove::AQUA_JET, ))); $pokemonMeta->setNumber(8); self::$POKEMON_META[PokemonId::WARTORTLE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0009_POKEMON_BLASTOISE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SQUIRTLE); $pokemonMeta->setPokemonClass(PokemonClass::EPIC); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.6); $pokemonMeta->setHeightStdDev(0.2); $pokemonMeta->setBaseStamina(158); $pokemonMeta->setCylRadiusM(0.564); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(171); $pokemonMeta->setDiskRadiusM(0.846); $pokemonMeta->setCollisionRadiusM(0.564); $pokemonMeta->setPokedexWeightKg(85.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.282); $pokemonMeta->setMovementTimerS(14); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(0.94); $pokemonMeta->setUniqueId("V0009_POKEMON_BLASTOISE"); $pokemonMeta->setBaseDefense(210); $pokemonMeta->setAttackTimerS(5); $pokemonMeta->setWeightStdDev(10.6875); $pokemonMeta->setCylHeightM(1.2925); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.175); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.04); $pokemonMeta->setParentId(PokemonId::WARTORTLE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BITE_FAST, PokemonMove::WATER_GUN_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::ICE_BEAM, PokemonMove::FLASH_CANNON, PokemonMove::HYDRO_PUMP, ))); $pokemonMeta->setNumber(9); self::$POKEMON_META[PokemonId::BLASTOISE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0010_POKEMON_CATERPIE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CATERPIE); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.3); $pokemonMeta->setHeightStdDev(0.0375); $pokemonMeta->setBaseStamina(90); $pokemonMeta->setCylRadiusM(0.306); $pokemonMeta->setBaseFleeRate(0.2); $pokemonMeta->setBaseAttack(55); $pokemonMeta->setDiskRadiusM(0.459); $pokemonMeta->setCollisionRadiusM(0.102); $pokemonMeta->setPokedexWeightKg(2.9); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.153); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(0); $pokemonMeta->setModelScale(2.04); $pokemonMeta->setUniqueId("V0010_POKEMON_CATERPIE"); $pokemonMeta->setBaseDefense(62); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(0.3625); $pokemonMeta->setCylHeightM(0.408); $pokemonMeta->setCandyToEvolve(12); $pokemonMeta->setCollisionHeightM(0.306); $pokemonMeta->setShoulderModeScale(0); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BUG_BITE_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(10); self::$POKEMON_META[PokemonId::CATERPIE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0011_POKEMON_METAPOD"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CATERPIE); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.7); $pokemonMeta->setHeightStdDev(0.0875); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.351); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(45); $pokemonMeta->setDiskRadiusM(0.5265); $pokemonMeta->setCollisionRadiusM(0.117); $pokemonMeta->setPokedexWeightKg(9.9); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.1755); $pokemonMeta->setMovementTimerS(3600); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.17); $pokemonMeta->setUniqueId("V0011_POKEMON_METAPOD"); $pokemonMeta->setBaseDefense(64); $pokemonMeta->setAttackTimerS(3600); $pokemonMeta->setWeightStdDev(1.2375); $pokemonMeta->setCylHeightM(0.6435); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.6435); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.2); $pokemonMeta->setParentId(PokemonId::CATERPIE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BUG_BITE_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(11); self::$POKEMON_META[PokemonId::METAPOD] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0012_POKEMON_BUTTERFREE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CATERPIE); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.1); $pokemonMeta->setHeightStdDev(0.1375); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.666); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(167); $pokemonMeta->setDiskRadiusM(0.999); $pokemonMeta->setCollisionRadiusM(0.1665); $pokemonMeta->setPokedexWeightKg(32); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.1776); $pokemonMeta->setMovementTimerS(6); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.11); $pokemonMeta->setUniqueId("V0012_POKEMON_BUTTERFREE"); $pokemonMeta->setBaseDefense(151); $pokemonMeta->setAttackTimerS(17); $pokemonMeta->setWeightStdDev(4); $pokemonMeta->setCylHeightM(1.11); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.555); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.1); $pokemonMeta->setParentId(PokemonId::METAPOD); $pokemonMeta->setCylGroundM(0.555); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::CONFUSION_FAST, PokemonMove::BUG_BITE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::BUG_BUZZ, PokemonMove::PSYCHIC, PokemonMove::SIGNAL_BEAM, ))); $pokemonMeta->setNumber(12); self::$POKEMON_META[PokemonId::BUTTERFREE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0013_POKEMON_WEEDLE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_WEEDLE); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(0.3); $pokemonMeta->setHeightStdDev(0.0375); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.209); $pokemonMeta->setBaseFleeRate(0.2); $pokemonMeta->setBaseAttack(63); $pokemonMeta->setDiskRadiusM(0.3135); $pokemonMeta->setCollisionRadiusM(0.1045); $pokemonMeta->setPokedexWeightKg(3.2); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.15675); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(2.09); $pokemonMeta->setUniqueId("V0013_POKEMON_WEEDLE"); $pokemonMeta->setBaseDefense(55); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(0.4); $pokemonMeta->setCylHeightM(0.418); $pokemonMeta->setCandyToEvolve(12); $pokemonMeta->setCollisionHeightM(0.209); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POISON_STING_FAST, PokemonMove::BUG_BITE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(13); self::$POKEMON_META[PokemonId::WEEDLE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0014_POKEMON_KAKUNA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_WEEDLE); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(0.6); $pokemonMeta->setHeightStdDev(0.075); $pokemonMeta->setBaseStamina(90); $pokemonMeta->setCylRadiusM(0.25); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(46); $pokemonMeta->setDiskRadiusM(0.375); $pokemonMeta->setCollisionRadiusM(0.25); $pokemonMeta->setPokedexWeightKg(10); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.125); $pokemonMeta->setMovementTimerS(3600); $pokemonMeta->setJumpTimeS(0); $pokemonMeta->setModelScale(1.25); $pokemonMeta->setUniqueId("V0014_POKEMON_KAKUNA"); $pokemonMeta->setBaseDefense(86); $pokemonMeta->setAttackTimerS(3600); $pokemonMeta->setWeightStdDev(1.25); $pokemonMeta->setCylHeightM(0.75); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.75); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.2); $pokemonMeta->setParentId(PokemonId::WEEDLE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POISON_STING_FAST, PokemonMove::BUG_BITE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(14); self::$POKEMON_META[PokemonId::KAKUNA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0015_POKEMON_BEEDRILL"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_WEEDLE); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.462); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(169); $pokemonMeta->setDiskRadiusM(0.693); $pokemonMeta->setCollisionRadiusM(0.308); $pokemonMeta->setPokedexWeightKg(29.5); $pokemonMeta->setMovementType(MovementType::ELECTRIC); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.231); $pokemonMeta->setMovementTimerS(6); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.77); $pokemonMeta->setUniqueId("V0015_POKEMON_BEEDRILL"); $pokemonMeta->setBaseDefense(150); $pokemonMeta->setAttackTimerS(17); $pokemonMeta->setWeightStdDev(3.6875); $pokemonMeta->setCylHeightM(0.77); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.5775); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.1); $pokemonMeta->setParentId(PokemonId::KAKUNA); $pokemonMeta->setCylGroundM(0.385); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BUG_BITE_FAST, PokemonMove::POISON_JAB_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SLUDGE_BOMB, PokemonMove::AERIAL_ACE, PokemonMove::X_SCISSOR, ))); $pokemonMeta->setNumber(15); self::$POKEMON_META[PokemonId::BEEDRILL] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0016_POKEMON_PIDGEY"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PIDGEY); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(0.3); $pokemonMeta->setHeightStdDev(0.0375); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.252); $pokemonMeta->setBaseFleeRate(0.2); $pokemonMeta->setBaseAttack(85); $pokemonMeta->setDiskRadiusM(0.378); $pokemonMeta->setCollisionRadiusM(0.1344); $pokemonMeta->setPokedexWeightKg(1.8); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.126); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1.4); $pokemonMeta->setModelScale(1.68); $pokemonMeta->setUniqueId("V0016_POKEMON_PIDGEY"); $pokemonMeta->setBaseDefense(76); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(0.225); $pokemonMeta->setCylHeightM(0.504); $pokemonMeta->setCandyToEvolve(12); $pokemonMeta->setCollisionHeightM(0.252); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, PokemonMove::QUICK_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::TWISTER, PokemonMove::AERIAL_ACE, PokemonMove::AIR_CUTTER, ))); $pokemonMeta->setNumber(16); self::$POKEMON_META[PokemonId::PIDGEY] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0017_POKEMON_PIDGEOTTO"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PIDGEY); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.1); $pokemonMeta->setHeightStdDev(0.1375); $pokemonMeta->setBaseStamina(126); $pokemonMeta->setCylRadiusM(0.474); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(117); $pokemonMeta->setDiskRadiusM(0.711); $pokemonMeta->setCollisionRadiusM(0.316); $pokemonMeta->setPokedexWeightKg(30); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.237); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.79); $pokemonMeta->setUniqueId("V0017_POKEMON_PIDGEOTTO"); $pokemonMeta->setBaseDefense(108); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(3.75); $pokemonMeta->setCylHeightM(0.9875); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.69125); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.2); $pokemonMeta->setParentId(PokemonId::PIDGEY); $pokemonMeta->setCylGroundM(0.395); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::STEEL_WING_FAST, PokemonMove::WING_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::TWISTER, PokemonMove::AERIAL_ACE, PokemonMove::AIR_CUTTER, ))); $pokemonMeta->setNumber(17); self::$POKEMON_META[PokemonId::PIDGEOTTO] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0018_POKEMON_PIDGEOT"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PIDGEY); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.5); $pokemonMeta->setHeightStdDev(0.1875); $pokemonMeta->setBaseStamina(166); $pokemonMeta->setCylRadiusM(0.864); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(166); $pokemonMeta->setDiskRadiusM(1.296); $pokemonMeta->setCollisionRadiusM(0.36); $pokemonMeta->setPokedexWeightKg(39.5); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.216); $pokemonMeta->setMovementTimerS(6); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.72); $pokemonMeta->setUniqueId("V0018_POKEMON_PIDGEOT"); $pokemonMeta->setBaseDefense(157); $pokemonMeta->setAttackTimerS(17); $pokemonMeta->setWeightStdDev(4.9375); $pokemonMeta->setCylHeightM(1.44); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.008); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.1); $pokemonMeta->setParentId(PokemonId::PIDGEOTTO); $pokemonMeta->setCylGroundM(0.36); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::STEEL_WING_FAST, PokemonMove::WING_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::HURRICANE, PokemonMove::AERIAL_ACE, PokemonMove::AIR_CUTTER, ))); $pokemonMeta->setNumber(18); self::$POKEMON_META[PokemonId::PIDGEOT] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0019_POKEMON_RATTATA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_RATTATA); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.3); $pokemonMeta->setHeightStdDev(0.0375); $pokemonMeta->setBaseStamina(60); $pokemonMeta->setCylRadiusM(0.252); $pokemonMeta->setBaseFleeRate(0.2); $pokemonMeta->setBaseAttack(103); $pokemonMeta->setDiskRadiusM(0.378); $pokemonMeta->setCollisionRadiusM(0.189); $pokemonMeta->setPokedexWeightKg(3.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.126); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(0.9); $pokemonMeta->setModelScale(1.26); $pokemonMeta->setUniqueId("V0019_POKEMON_RATTATA"); $pokemonMeta->setBaseDefense(70); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(0.4375); $pokemonMeta->setCylHeightM(0.378); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.252); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::QUICK_ATTACK_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DIG, PokemonMove::BODY_SLAM, PokemonMove::HYPER_FANG, ))); $pokemonMeta->setNumber(19); self::$POKEMON_META[PokemonId::RATTATA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0020_POKEMON_RATICATE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_RATTATA); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.7); $pokemonMeta->setHeightStdDev(0.0875); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.5265); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(161); $pokemonMeta->setDiskRadiusM(0.7898); $pokemonMeta->setCollisionRadiusM(0.2925); $pokemonMeta->setPokedexWeightKg(18.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.26325); $pokemonMeta->setMovementTimerS(23); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.17); $pokemonMeta->setUniqueId("V0020_POKEMON_RATICATE"); $pokemonMeta->setBaseDefense(144); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(2.3125); $pokemonMeta->setCylHeightM(0.936); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.585); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::RATTATA); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BITE_FAST, PokemonMove::QUICK_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DIG, PokemonMove::HYPER_BEAM, PokemonMove::HYPER_FANG, ))); $pokemonMeta->setNumber(20); self::$POKEMON_META[PokemonId::RATICATE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0021_POKEMON_SPEAROW"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SPEAROW); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(0.3); $pokemonMeta->setHeightStdDev(0.0375); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.296); $pokemonMeta->setBaseFleeRate(0.15); $pokemonMeta->setBaseAttack(112); $pokemonMeta->setDiskRadiusM(0.444); $pokemonMeta->setCollisionRadiusM(0.148); $pokemonMeta->setPokedexWeightKg(2); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.148); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(1.48); $pokemonMeta->setUniqueId("V0021_POKEMON_SPEAROW"); $pokemonMeta->setBaseDefense(61); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(0.25); $pokemonMeta->setCylHeightM(0.518); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.2664); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::QUICK_ATTACK_FAST, PokemonMove::PECK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::TWISTER, PokemonMove::AERIAL_ACE, PokemonMove::DRILL_PECK, ))); $pokemonMeta->setNumber(21); self::$POKEMON_META[PokemonId::SPEAROW] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0022_POKEMON_FEAROW"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SPEAROW); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.2); $pokemonMeta->setHeightStdDev(0.15); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.504); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(182); $pokemonMeta->setDiskRadiusM(1.26); $pokemonMeta->setCollisionRadiusM(0.252); $pokemonMeta->setPokedexWeightKg(38); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.126); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.84); $pokemonMeta->setUniqueId("V0022_POKEMON_FEAROW"); $pokemonMeta->setBaseDefense(135); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(4.75); $pokemonMeta->setCylHeightM(1.05); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.63); $pokemonMeta->setShoulderModeScale(0.375); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::SPEAROW); $pokemonMeta->setCylGroundM(0.42); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::STEEL_WING_FAST, PokemonMove::PECK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::TWISTER, PokemonMove::AERIAL_ACE, PokemonMove::DRILL_RUN, ))); $pokemonMeta->setNumber(22); self::$POKEMON_META[PokemonId::FEAROW] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0023_POKEMON_EKANS"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_EKANS); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(2); $pokemonMeta->setHeightStdDev(0.25); $pokemonMeta->setBaseStamina(70); $pokemonMeta->setCylRadiusM(0.4325); $pokemonMeta->setBaseFleeRate(0.15); $pokemonMeta->setBaseAttack(110); $pokemonMeta->setDiskRadiusM(0.6488); $pokemonMeta->setCollisionRadiusM(0.2595); $pokemonMeta->setPokedexWeightKg(6.9); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setCollisionHeadRadiusM(0.1384); $pokemonMeta->setMovementTimerS(29); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(1.73); $pokemonMeta->setUniqueId("V0023_POKEMON_EKANS"); $pokemonMeta->setBaseDefense(102); $pokemonMeta->setAttackTimerS(10); $pokemonMeta->setWeightStdDev(0.8625); $pokemonMeta->setCylHeightM(0.6055); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.346); $pokemonMeta->setShoulderModeScale(0.375); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POISON_STING_FAST, PokemonMove::ACID_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SLUDGE_BOMB, PokemonMove::WRAP, PokemonMove::GUNK_SHOT, ))); $pokemonMeta->setNumber(23); self::$POKEMON_META[PokemonId::EKANS] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0024_POKEMON_ARBOK"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_EKANS); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(3.5); $pokemonMeta->setHeightStdDev(0.4375); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.615); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(167); $pokemonMeta->setDiskRadiusM(0.9225); $pokemonMeta->setCollisionRadiusM(0.41); $pokemonMeta->setPokedexWeightKg(65); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setCollisionHeadRadiusM(0.164); $pokemonMeta->setMovementTimerS(23); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.82); $pokemonMeta->setUniqueId("V0024_POKEMON_ARBOK"); $pokemonMeta->setBaseDefense(158); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(8.125); $pokemonMeta->setCylHeightM(1.353); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.353); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::EKANS); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BITE_FAST, PokemonMove::ACID_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DARK_PULSE, PokemonMove::GUNK_SHOT, PokemonMove::SLUDGE_WAVE, ))); $pokemonMeta->setNumber(24); self::$POKEMON_META[PokemonId::ARBOK] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0025_POKEMON_PIKACHU"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PIKACHU); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.4); $pokemonMeta->setHeightStdDev(0.05); $pokemonMeta->setBaseStamina(70); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(112); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.185); $pokemonMeta->setPokedexWeightKg(6); $pokemonMeta->setMovementType(MovementType::NORMAL); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setCollisionHeadRadiusM(0.185); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.48); $pokemonMeta->setUniqueId("V0025_POKEMON_PIKACHU"); $pokemonMeta->setBaseDefense(101); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(0.75); $pokemonMeta->setCylHeightM(0.74); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.518); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::QUICK_ATTACK_FAST, PokemonMove::THUNDER_SHOCK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::THUNDER, PokemonMove::THUNDERBOLT, PokemonMove::DISCHARGE, ))); $pokemonMeta->setNumber(25); self::$POKEMON_META[PokemonId::PIKACHU] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0026_POKEMON_RAICHU"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PIKACHU); $pokemonMeta->setPokemonClass(PokemonClass::VERY_RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.8); $pokemonMeta->setHeightStdDev(0.1); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.486); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(192); $pokemonMeta->setDiskRadiusM(0.729); $pokemonMeta->setCollisionRadiusM(0.27); $pokemonMeta->setPokedexWeightKg(30); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setCollisionHeadRadiusM(0.216); $pokemonMeta->setMovementTimerS(6); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(1.08); $pokemonMeta->setUniqueId("V0026_POKEMON_RAICHU"); $pokemonMeta->setBaseDefense(165); $pokemonMeta->setAttackTimerS(17); $pokemonMeta->setWeightStdDev(3.75); $pokemonMeta->setCylHeightM(1.35); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.54); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.08); $pokemonMeta->setParentId(PokemonId::PIKACHU); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::SPARK_FAST, PokemonMove::THUNDER_SHOCK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::THUNDER_PUNCH, PokemonMove::THUNDER, PokemonMove::BRICK_BREAK, ))); $pokemonMeta->setNumber(26); self::$POKEMON_META[PokemonId::RAICHU] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0027_POKEMON_SANDSHREW"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SANDSHREW); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.6); $pokemonMeta->setHeightStdDev(0.075); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.3225); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(126); $pokemonMeta->setDiskRadiusM(0.4838); $pokemonMeta->setCollisionRadiusM(0.258); $pokemonMeta->setPokedexWeightKg(12); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setCollisionHeadRadiusM(0.1935); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.29); $pokemonMeta->setUniqueId("V0027_POKEMON_SANDSHREW"); $pokemonMeta->setBaseDefense(145); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(1.5); $pokemonMeta->setCylHeightM(0.774); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.48375); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SHOT_FAST, PokemonMove::SCRATCH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DIG, PokemonMove::ROCK_SLIDE, PokemonMove::ROCK_TOMB, ))); $pokemonMeta->setNumber(27); self::$POKEMON_META[PokemonId::SANDSHREW] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0028_POKEMON_SANDSLASH"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SANDSHREW); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(150); $pokemonMeta->setCylRadiusM(0.4); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(182); $pokemonMeta->setDiskRadiusM(0.6); $pokemonMeta->setCollisionRadiusM(0.35); $pokemonMeta->setPokedexWeightKg(29.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setCollisionHeadRadiusM(0.35); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0028_POKEMON_SANDSLASH"); $pokemonMeta->setBaseDefense(202); $pokemonMeta->setAttackTimerS(4); $pokemonMeta->setWeightStdDev(3.6875); $pokemonMeta->setCylHeightM(1); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.9); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::SANDSHREW); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SHOT_FAST, PokemonMove::METAL_CLAW_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::BULLDOZE, PokemonMove::EARTHQUAKE, PokemonMove::ROCK_TOMB, ))); $pokemonMeta->setNumber(28); self::$POKEMON_META[PokemonId::SANDSLASH] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0029_POKEMON_NIDORAN"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_NIDORAN_FEMALE); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.4); $pokemonMeta->setHeightStdDev(0.05); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.15); $pokemonMeta->setBaseAttack(86); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.185); $pokemonMeta->setPokedexWeightKg(7); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setCollisionHeadRadiusM(0.185); $pokemonMeta->setMovementTimerS(29); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(1.48); $pokemonMeta->setUniqueId("V0029_POKEMON_NIDORAN"); $pokemonMeta->setBaseDefense(94); $pokemonMeta->setAttackTimerS(10); $pokemonMeta->setWeightStdDev(0.875); $pokemonMeta->setCylHeightM(0.666); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.37); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BITE_FAST, PokemonMove::POISON_STING_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::POISON_FANG, PokemonMove::SLUDGE_BOMB, PokemonMove::BODY_SLAM, ))); $pokemonMeta->setNumber(29); self::$POKEMON_META[PokemonId::NIDORAN_FEMALE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0030_POKEMON_NIDORINA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_NIDORAN_FEMALE); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.8); $pokemonMeta->setHeightStdDev(0.1); $pokemonMeta->setBaseStamina(140); $pokemonMeta->setCylRadiusM(0.4388); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(117); $pokemonMeta->setDiskRadiusM(0.6581); $pokemonMeta->setCollisionRadiusM(0.2925); $pokemonMeta->setPokedexWeightKg(20); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setCollisionHeadRadiusM(0.1755); $pokemonMeta->setMovementTimerS(23); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.17); $pokemonMeta->setUniqueId("V0030_POKEMON_NIDORINA"); $pokemonMeta->setBaseDefense(126); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(2.5); $pokemonMeta->setCylHeightM(0.87749988); $pokemonMeta->setCandyToEvolve(100); $pokemonMeta->setCollisionHeightM(0.585); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.2); $pokemonMeta->setParentId(PokemonId::NIDORAN_FEMALE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BITE_FAST, PokemonMove::POISON_STING_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::POISON_FANG, PokemonMove::DIG, PokemonMove::SLUDGE_BOMB, ))); $pokemonMeta->setNumber(30); self::$POKEMON_META[PokemonId::NIDORINA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0031_POKEMON_NIDOQUEEN"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_NIDORAN_FEMALE); $pokemonMeta->setPokemonClass(PokemonClass::VERY_RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setPokedexHeightM(1.3); $pokemonMeta->setHeightStdDev(0.1625); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.4095); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(180); $pokemonMeta->setDiskRadiusM(0.6143); $pokemonMeta->setCollisionRadiusM(0.455); $pokemonMeta->setPokedexWeightKg(60); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setCollisionHeadRadiusM(0.2275); $pokemonMeta->setMovementTimerS(14); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.91); $pokemonMeta->setUniqueId("V0031_POKEMON_NIDOQUEEN"); $pokemonMeta->setBaseDefense(174); $pokemonMeta->setAttackTimerS(5); $pokemonMeta->setWeightStdDev(7.5); $pokemonMeta->setCylHeightM(1.183); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.79625); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.1); $pokemonMeta->setParentId(PokemonId::NIDORINA); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BITE_FAST, PokemonMove::POISON_JAB_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STONE_EDGE, PokemonMove::EARTHQUAKE, PokemonMove::SLUDGE_WAVE, ))); $pokemonMeta->setNumber(31); self::$POKEMON_META[PokemonId::NIDOQUEEN] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0032_POKEMON_NIDORAN"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_NIDORAN_MALE); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.5); $pokemonMeta->setHeightStdDev(0.0625); $pokemonMeta->setBaseStamina(92); $pokemonMeta->setCylRadiusM(0.4725); $pokemonMeta->setBaseFleeRate(0.15); $pokemonMeta->setBaseAttack(105); $pokemonMeta->setDiskRadiusM(0.7088); $pokemonMeta->setCollisionRadiusM(0.252); $pokemonMeta->setPokedexWeightKg(9); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setCollisionHeadRadiusM(0.1575); $pokemonMeta->setMovementTimerS(29); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.26); $pokemonMeta->setUniqueId("V0032_POKEMON_NIDORAN"); $pokemonMeta->setBaseDefense(76); $pokemonMeta->setAttackTimerS(10); $pokemonMeta->setWeightStdDev(1.125); $pokemonMeta->setCylHeightM(0.756); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.315); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POISON_STING_FAST, PokemonMove::PECK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SLUDGE_BOMB, PokemonMove::HORN_ATTACK, PokemonMove::BODY_SLAM, ))); $pokemonMeta->setNumber(32); self::$POKEMON_META[PokemonId::NIDORAN_MALE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0033_POKEMON_NIDORINO"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_NIDORAN_MALE); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.9); $pokemonMeta->setHeightStdDev(0.1125); $pokemonMeta->setBaseStamina(122); $pokemonMeta->setCylRadiusM(0.495); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(137); $pokemonMeta->setDiskRadiusM(0.7425); $pokemonMeta->setCollisionRadiusM(0.297); $pokemonMeta->setPokedexWeightKg(19.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setCollisionHeadRadiusM(0.2475); $pokemonMeta->setMovementTimerS(23); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.99); $pokemonMeta->setUniqueId("V0033_POKEMON_NIDORINO"); $pokemonMeta->setBaseDefense(112); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(2.4375); $pokemonMeta->setCylHeightM(0.792); $pokemonMeta->setCandyToEvolve(100); $pokemonMeta->setCollisionHeightM(0.594); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.2); $pokemonMeta->setParentId(PokemonId::NIDORAN_MALE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POISON_STING_FAST, PokemonMove::POISON_JAB_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SLUDGE_BOMB, PokemonMove::DIG, PokemonMove::HORN_ATTACK, ))); $pokemonMeta->setNumber(33); self::$POKEMON_META[PokemonId::NIDORINO] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0034_POKEMON_NIDOKING"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_NIDORAN_MALE); $pokemonMeta->setPokemonClass(PokemonClass::VERY_RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setPokedexHeightM(1.4); $pokemonMeta->setHeightStdDev(0.175); $pokemonMeta->setBaseStamina(162); $pokemonMeta->setCylRadiusM(0.5481); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(204); $pokemonMeta->setDiskRadiusM(0.8222); $pokemonMeta->setCollisionRadiusM(0.5481); $pokemonMeta->setPokedexWeightKg(62); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setCollisionHeadRadiusM(0.27405); $pokemonMeta->setMovementTimerS(14); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.87); $pokemonMeta->setUniqueId("V0034_POKEMON_NIDOKING"); $pokemonMeta->setBaseDefense(157); $pokemonMeta->setAttackTimerS(5); $pokemonMeta->setWeightStdDev(7.75); $pokemonMeta->setCylHeightM(1.305); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.87); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.1); $pokemonMeta->setParentId(PokemonId::NIDORINO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::FURY_CUTTER_FAST, PokemonMove::POISON_JAB_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::MEGAHORN, PokemonMove::EARTHQUAKE, PokemonMove::SLUDGE_WAVE, ))); $pokemonMeta->setNumber(34); self::$POKEMON_META[PokemonId::NIDOKING] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0035_POKEMON_CLEFAIRY"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CLEFAIRY); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.6); $pokemonMeta->setHeightStdDev(0.075); $pokemonMeta->setBaseStamina(140); $pokemonMeta->setCylRadiusM(0.45); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(107); $pokemonMeta->setDiskRadiusM(0.675); $pokemonMeta->setCollisionRadiusM(0.3125); $pokemonMeta->setPokedexWeightKg(7.5); $pokemonMeta->setMovementType(MovementType::NORMAL); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FAIRY); $pokemonMeta->setCollisionHeadRadiusM(0.225); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(1.25); $pokemonMeta->setUniqueId("V0035_POKEMON_CLEFAIRY"); $pokemonMeta->setBaseDefense(116); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(0.9375); $pokemonMeta->setCylHeightM(0.75); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.75); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.24); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POUND_FAST, PokemonMove::ZEN_HEADBUTT_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DISARMING_VOICE, PokemonMove::MOONBLAST, PokemonMove::BODY_SLAM, ))); $pokemonMeta->setNumber(35); self::$POKEMON_META[PokemonId::CLEFAIRY] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0036_POKEMON_CLEFABLE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CLEFAIRY); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.3); $pokemonMeta->setHeightStdDev(0.1625); $pokemonMeta->setBaseStamina(190); $pokemonMeta->setCylRadiusM(0.712); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(178); $pokemonMeta->setDiskRadiusM(1.1681); $pokemonMeta->setCollisionRadiusM(0.445); $pokemonMeta->setPokedexWeightKg(40); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FAIRY); $pokemonMeta->setCollisionHeadRadiusM(0.445); $pokemonMeta->setMovementTimerS(4); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(0.89); $pokemonMeta->setUniqueId("V0036_POKEMON_CLEFABLE"); $pokemonMeta->setBaseDefense(171); $pokemonMeta->setAttackTimerS(11); $pokemonMeta->setWeightStdDev(5); $pokemonMeta->setCylHeightM(1.44625); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.1125); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.08); $pokemonMeta->setParentId(PokemonId::CLEFAIRY); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POUND_FAST, PokemonMove::ZEN_HEADBUTT_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DAZZLING_GLEAM, PokemonMove::PSYCHIC, PokemonMove::MOONBLAST, ))); $pokemonMeta->setNumber(36); self::$POKEMON_META[PokemonId::CLEFABLE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0037_POKEMON_VULPIX"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_VULPIX); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.6); $pokemonMeta->setHeightStdDev(0.075); $pokemonMeta->setBaseStamina(76); $pokemonMeta->setCylRadiusM(0.567); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(96); $pokemonMeta->setDiskRadiusM(0.8505); $pokemonMeta->setCollisionRadiusM(0.315); $pokemonMeta->setPokedexWeightKg(9.9); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.252); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.26); $pokemonMeta->setUniqueId("V0037_POKEMON_VULPIX"); $pokemonMeta->setBaseDefense(122); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(1.2375); $pokemonMeta->setCylHeightM(0.756); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.63); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.24); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::EMBER_FAST, PokemonMove::QUICK_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::FLAME_CHARGE, PokemonMove::FLAMETHROWER, PokemonMove::BODY_SLAM, ))); $pokemonMeta->setNumber(37); self::$POKEMON_META[PokemonId::VULPIX] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0038_POKEMON_NINETALES"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_VULPIX); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.1); $pokemonMeta->setHeightStdDev(0.1375); $pokemonMeta->setBaseStamina(146); $pokemonMeta->setCylRadiusM(0.864); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(169); $pokemonMeta->setDiskRadiusM(1.296); $pokemonMeta->setCollisionRadiusM(0.36); $pokemonMeta->setPokedexWeightKg(19.9); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.24); $pokemonMeta->setMovementTimerS(5); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(0.96); $pokemonMeta->setUniqueId("V0038_POKEMON_NINETALES"); $pokemonMeta->setBaseDefense(204); $pokemonMeta->setAttackTimerS(14); $pokemonMeta->setWeightStdDev(2.4875); $pokemonMeta->setCylHeightM(1.2); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.96); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.08); $pokemonMeta->setParentId(PokemonId::VULPIX); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::FEINT_ATTACK_FAST, PokemonMove::EMBER_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::FLAMETHROWER, PokemonMove::HEAT_WAVE, PokemonMove::FIRE_BLAST, ))); $pokemonMeta->setNumber(38); self::$POKEMON_META[PokemonId::NINETALES] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0039_POKEMON_JIGGLYPUFF"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_JIGGLYPUFF); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FAIRY); $pokemonMeta->setPokedexHeightM(0.5); $pokemonMeta->setHeightStdDev(0.0625); $pokemonMeta->setBaseStamina(230); $pokemonMeta->setCylRadiusM(0.512); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(80); $pokemonMeta->setDiskRadiusM(0.768); $pokemonMeta->setCollisionRadiusM(0.32); $pokemonMeta->setPokedexWeightKg(5.5); $pokemonMeta->setMovementType(MovementType::NORMAL); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.256); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(3); $pokemonMeta->setModelScale(1.28); $pokemonMeta->setUniqueId("V0039_POKEMON_JIGGLYPUFF"); $pokemonMeta->setBaseDefense(44); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(0.6875); $pokemonMeta->setCylHeightM(0.96); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.64); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POUND_FAST, PokemonMove::FEINT_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DISARMING_VOICE, PokemonMove::PLAY_ROUGH, PokemonMove::BODY_SLAM, ))); $pokemonMeta->setNumber(39); self::$POKEMON_META[PokemonId::JIGGLYPUFF] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0040_POKEMON_WIGGLYTUFF"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_JIGGLYPUFF); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FAIRY); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(280); $pokemonMeta->setCylRadiusM(0.445); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(156); $pokemonMeta->setDiskRadiusM(1.0013); $pokemonMeta->setCollisionRadiusM(0.356); $pokemonMeta->setPokedexWeightKg(12); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.2225); $pokemonMeta->setMovementTimerS(4); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(0.89); $pokemonMeta->setUniqueId("V0040_POKEMON_WIGGLYTUFF"); $pokemonMeta->setBaseDefense(93); $pokemonMeta->setAttackTimerS(11); $pokemonMeta->setWeightStdDev(1.5); $pokemonMeta->setCylHeightM(1.22375); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.89); $pokemonMeta->setShoulderModeScale(0.4); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::JIGGLYPUFF); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POUND_FAST, PokemonMove::FEINT_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DAZZLING_GLEAM, PokemonMove::PLAY_ROUGH, PokemonMove::HYPER_BEAM, ))); $pokemonMeta->setNumber(40); self::$POKEMON_META[PokemonId::WIGGLYTUFF] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0041_POKEMON_ZUBAT"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ZUBAT); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(0.8); $pokemonMeta->setHeightStdDev(0.1); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.642); $pokemonMeta->setBaseFleeRate(0.2); $pokemonMeta->setBaseAttack(83); $pokemonMeta->setDiskRadiusM(0.963); $pokemonMeta->setCollisionRadiusM(0.0535); $pokemonMeta->setPokedexWeightKg(7.5); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setCollisionHeadRadiusM(0.1605); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.07); $pokemonMeta->setUniqueId("V0041_POKEMON_ZUBAT"); $pokemonMeta->setBaseDefense(76); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(0.9375); $pokemonMeta->setCylHeightM(0.6955); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.0535); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.535); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BITE_FAST, PokemonMove::QUICK_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::POISON_FANG, PokemonMove::SLUDGE_BOMB, PokemonMove::AIR_CUTTER, ))); $pokemonMeta->setNumber(41); self::$POKEMON_META[PokemonId::ZUBAT] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0042_POKEMON_GOLBAT"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ZUBAT); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.6); $pokemonMeta->setHeightStdDev(0.2); $pokemonMeta->setBaseStamina(150); $pokemonMeta->setCylRadiusM(0.75); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(161); $pokemonMeta->setDiskRadiusM(1.5975); $pokemonMeta->setCollisionRadiusM(0.0355); $pokemonMeta->setPokedexWeightKg(55); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setCollisionHeadRadiusM(0.355); $pokemonMeta->setMovementTimerS(6); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.71); $pokemonMeta->setUniqueId("V0042_POKEMON_GOLBAT"); $pokemonMeta->setBaseDefense(153); $pokemonMeta->setAttackTimerS(17); $pokemonMeta->setWeightStdDev(6.875); $pokemonMeta->setCylHeightM(1.2425); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.0355); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::ZUBAT); $pokemonMeta->setCylGroundM(1.065); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BITE_FAST, PokemonMove::WING_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::POISON_FANG, PokemonMove::AIR_CUTTER, PokemonMove::OMINOUS_WIND, ))); $pokemonMeta->setNumber(42); self::$POKEMON_META[PokemonId::GOLBAT] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0043_POKEMON_ODDISH"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ODDISH); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(0.5); $pokemonMeta->setHeightStdDev(0.0625); $pokemonMeta->setBaseStamina(90); $pokemonMeta->setCylRadiusM(0.405); $pokemonMeta->setBaseFleeRate(0.15); $pokemonMeta->setBaseAttack(131); $pokemonMeta->setDiskRadiusM(0.6075); $pokemonMeta->setCollisionRadiusM(0.2025); $pokemonMeta->setPokedexWeightKg(5.4); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.2025); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.35); $pokemonMeta->setUniqueId("V0043_POKEMON_ODDISH"); $pokemonMeta->setBaseDefense(116); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(0.675); $pokemonMeta->setCylHeightM(0.81000012); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.50625); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.48); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ACID_FAST, PokemonMove::RAZOR_LEAF_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SLUDGE_BOMB, PokemonMove::SEED_BOMB, PokemonMove::MOONBLAST, ))); $pokemonMeta->setNumber(43); self::$POKEMON_META[PokemonId::ODDISH] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0044_POKEMON_GLOOM"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ODDISH); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(0.8); $pokemonMeta->setHeightStdDev(0.1); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.495); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(153); $pokemonMeta->setDiskRadiusM(0.7425); $pokemonMeta->setCollisionRadiusM(0.4125); $pokemonMeta->setPokedexWeightKg(8.6); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.2475); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.1); $pokemonMeta->setUniqueId("V0044_POKEMON_GLOOM"); $pokemonMeta->setBaseDefense(139); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(1.075); $pokemonMeta->setCylHeightM(0.88000011); $pokemonMeta->setCandyToEvolve(100); $pokemonMeta->setCollisionHeightM(0.88000011); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.24); $pokemonMeta->setParentId(PokemonId::ODDISH); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ACID_FAST, PokemonMove::RAZOR_LEAF_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SLUDGE_BOMB, PokemonMove::PETAL_BLIZZARD, PokemonMove::MOONBLAST, ))); $pokemonMeta->setNumber(44); self::$POKEMON_META[PokemonId::GLOOM] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0045_POKEMON_VILEPLUME"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ODDISH); $pokemonMeta->setPokemonClass(PokemonClass::VERY_RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(1.2); $pokemonMeta->setHeightStdDev(0.15); $pokemonMeta->setBaseStamina(150); $pokemonMeta->setCylRadiusM(0.828); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(202); $pokemonMeta->setDiskRadiusM(1.242); $pokemonMeta->setCollisionRadiusM(1.012); $pokemonMeta->setPokedexWeightKg(18.6); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.552); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.92); $pokemonMeta->setUniqueId("V0045_POKEMON_VILEPLUME"); $pokemonMeta->setBaseDefense(170); $pokemonMeta->setAttackTimerS(4); $pokemonMeta->setWeightStdDev(2.325); $pokemonMeta->setCylHeightM(1.196); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.196); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::GLOOM); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ACID_FAST, PokemonMove::RAZOR_LEAF_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::MOONBLAST, PokemonMove::PETAL_BLIZZARD, PokemonMove::SOLAR_BEAM, ))); $pokemonMeta->setNumber(45); self::$POKEMON_META[PokemonId::VILEPLUME] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0046_POKEMON_PARAS"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PARAS); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setPokedexHeightM(0.3); $pokemonMeta->setHeightStdDev(0.0375); $pokemonMeta->setBaseStamina(70); $pokemonMeta->setCylRadiusM(0.384); $pokemonMeta->setBaseFleeRate(0.15); $pokemonMeta->setBaseAttack(121); $pokemonMeta->setDiskRadiusM(0.576); $pokemonMeta->setCollisionRadiusM(0.192); $pokemonMeta->setPokedexWeightKg(5.4); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.192); $pokemonMeta->setMovementTimerS(29); $pokemonMeta->setJumpTimeS(1.1); $pokemonMeta->setModelScale(1.28); $pokemonMeta->setUniqueId("V0046_POKEMON_PARAS"); $pokemonMeta->setBaseDefense(99); $pokemonMeta->setAttackTimerS(10); $pokemonMeta->setWeightStdDev(0.675); $pokemonMeta->setCylHeightM(0.448); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.32); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.32); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BUG_BITE_FAST, PokemonMove::SCRATCH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::CROSS_POISON, PokemonMove::X_SCISSOR, PokemonMove::SEED_BOMB, ))); $pokemonMeta->setNumber(46); self::$POKEMON_META[PokemonId::PARAS] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0047_POKEMON_PARASECT"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PARAS); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.6313); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(165); $pokemonMeta->setDiskRadiusM(0.9469); $pokemonMeta->setCollisionRadiusM(0.4545); $pokemonMeta->setPokedexWeightKg(29.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.505); $pokemonMeta->setMovementTimerS(17); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(1.01); $pokemonMeta->setUniqueId("V0047_POKEMON_PARASECT"); $pokemonMeta->setBaseDefense(146); $pokemonMeta->setAttackTimerS(6); $pokemonMeta->setWeightStdDev(3.6875); $pokemonMeta->setCylHeightM(1.01); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.01); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::PARAS); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BUG_BITE_FAST, PokemonMove::FURY_CUTTER_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::CROSS_POISON, PokemonMove::X_SCISSOR, PokemonMove::SOLAR_BEAM, ))); $pokemonMeta->setNumber(47); self::$POKEMON_META[PokemonId::PARASECT] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0048_POKEMON_VENONAT"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_VENONAT); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.5325); $pokemonMeta->setBaseFleeRate(0.15); $pokemonMeta->setBaseAttack(100); $pokemonMeta->setDiskRadiusM(0.7988); $pokemonMeta->setCollisionRadiusM(0.355); $pokemonMeta->setPokedexWeightKg(30); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.26625); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(0.71); $pokemonMeta->setUniqueId("V0048_POKEMON_VENONAT"); $pokemonMeta->setBaseDefense(102); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(3.75); $pokemonMeta->setCylHeightM(1.1715); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.71); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::CONFUSION_FAST, PokemonMove::BUG_BITE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DAZZLING_GLEAM, PokemonMove::SHADOW_BALL, PokemonMove::PSYBEAM, ))); $pokemonMeta->setNumber(48); self::$POKEMON_META[PokemonId::VENONAT] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0049_POKEMON_VENOMOTH"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_VENONAT); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(1.5); $pokemonMeta->setHeightStdDev(0.1875); $pokemonMeta->setBaseStamina(140); $pokemonMeta->setCylRadiusM(0.576); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(179); $pokemonMeta->setDiskRadiusM(0.864); $pokemonMeta->setCollisionRadiusM(0.36); $pokemonMeta->setPokedexWeightKg(12.5); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.288); $pokemonMeta->setMovementTimerS(6); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.72); $pokemonMeta->setUniqueId("V0049_POKEMON_VENOMOTH"); $pokemonMeta->setBaseDefense(150); $pokemonMeta->setAttackTimerS(17); $pokemonMeta->setWeightStdDev(1.5625); $pokemonMeta->setCylHeightM(1.08); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.72); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::VENONAT); $pokemonMeta->setCylGroundM(0.36); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::CONFUSION_FAST, PokemonMove::BUG_BITE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::POISON_FANG, PokemonMove::PSYCHIC, PokemonMove::BUG_BUZZ, ))); $pokemonMeta->setNumber(49); self::$POKEMON_META[PokemonId::VENOMOTH] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0050_POKEMON_DIGLETT"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_DIGLETT); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.2); $pokemonMeta->setHeightStdDev(0.025); $pokemonMeta->setBaseStamina(20); $pokemonMeta->setCylRadiusM(0.3); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(109); $pokemonMeta->setDiskRadiusM(0.45); $pokemonMeta->setCollisionRadiusM(0.16); $pokemonMeta->setPokedexWeightKg(0.8); $pokemonMeta->setMovementType(MovementType::NORMAL); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setCollisionHeadRadiusM(0.18); $pokemonMeta->setMovementTimerS(29); $pokemonMeta->setJumpTimeS(0); $pokemonMeta->setModelScale(2); $pokemonMeta->setUniqueId("V0050_POKEMON_DIGLETT"); $pokemonMeta->setBaseDefense(88); $pokemonMeta->setAttackTimerS(10); $pokemonMeta->setWeightStdDev(0.1); $pokemonMeta->setCylHeightM(0.4); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.4); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SHOT_FAST, PokemonMove::SCRATCH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DIG, PokemonMove::MUD_BOMB, PokemonMove::ROCK_TOMB, ))); $pokemonMeta->setNumber(50); self::$POKEMON_META[PokemonId::DIGLETT] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0051_POKEMON_DUGTRIO"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_DIGLETT); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.7); $pokemonMeta->setHeightStdDev(0.0875); $pokemonMeta->setBaseStamina(70); $pokemonMeta->setCylRadiusM(0.672); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(167); $pokemonMeta->setDiskRadiusM(1.008); $pokemonMeta->setCollisionRadiusM(0.448); $pokemonMeta->setPokedexWeightKg(33.3); $pokemonMeta->setMovementType(MovementType::NORMAL); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setCollisionHeadRadiusM(0.336); $pokemonMeta->setMovementTimerS(29); $pokemonMeta->setJumpTimeS(0); $pokemonMeta->setModelScale(1.12); $pokemonMeta->setUniqueId("V0051_POKEMON_DUGTRIO"); $pokemonMeta->setBaseDefense(147); $pokemonMeta->setAttackTimerS(10); $pokemonMeta->setWeightStdDev(4.1625); $pokemonMeta->setCylHeightM(0.84); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.84); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::DIGLETT); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::SUCKER_PUNCH_FAST, PokemonMove::MUD_SHOT_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STONE_EDGE, PokemonMove::EARTHQUAKE, PokemonMove::MUD_BOMB, ))); $pokemonMeta->setNumber(51); self::$POKEMON_META[PokemonId::DUGTRIO] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0052_POKEMON_MEOWTH"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MEOWTH); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.4); $pokemonMeta->setHeightStdDev(0.05); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.4); $pokemonMeta->setBaseFleeRate(0.15); $pokemonMeta->setBaseAttack(92); $pokemonMeta->setDiskRadiusM(0.6); $pokemonMeta->setCollisionRadiusM(0.128); $pokemonMeta->setPokedexWeightKg(4.2); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.2); $pokemonMeta->setMovementTimerS(29); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.6); $pokemonMeta->setUniqueId("V0052_POKEMON_MEOWTH"); $pokemonMeta->setBaseDefense(81); $pokemonMeta->setAttackTimerS(10); $pokemonMeta->setWeightStdDev(0.525); $pokemonMeta->setCylHeightM(0.64); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.4); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BITE_FAST, PokemonMove::SCRATCH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DARK_PULSE, PokemonMove::NIGHT_SLASH, PokemonMove::BODY_SLAM, ))); $pokemonMeta->setNumber(52); self::$POKEMON_META[PokemonId::MEOWTH] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0053_POKEMON_PERSIAN"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MEOWTH); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.533); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(150); $pokemonMeta->setDiskRadiusM(0.7995); $pokemonMeta->setCollisionRadiusM(0.328); $pokemonMeta->setPokedexWeightKg(32); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.164); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(0.82); $pokemonMeta->setUniqueId("V0053_POKEMON_PERSIAN"); $pokemonMeta->setBaseDefense(139); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(4); $pokemonMeta->setCylHeightM(0.902); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.615); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MEOWTH); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::SCRATCH_FAST, PokemonMove::FEINT_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::PLAY_ROUGH, PokemonMove::POWER_GEM, PokemonMove::NIGHT_SLASH, ))); $pokemonMeta->setNumber(53); self::$POKEMON_META[PokemonId::PERSIAN] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0054_POKEMON_PSYDUCK"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PSYDUCK); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.8); $pokemonMeta->setHeightStdDev(0.1); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.3638); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(122); $pokemonMeta->setDiskRadiusM(0.5456); $pokemonMeta->setCollisionRadiusM(0.291); $pokemonMeta->setPokedexWeightKg(19.6); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3395); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.97); $pokemonMeta->setUniqueId("V0054_POKEMON_PSYDUCK"); $pokemonMeta->setBaseDefense(96); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(2.45); $pokemonMeta->setCylHeightM(0.97); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.60625); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::WATER_GUN_FAST, PokemonMove::ZEN_HEADBUTT_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::AQUA_TAIL, PokemonMove::PSYBEAM, PokemonMove::CROSS_CHOP, ))); $pokemonMeta->setNumber(54); self::$POKEMON_META[PokemonId::PSYDUCK] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0055_POKEMON_GOLDUCK"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PSYDUCK); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.7); $pokemonMeta->setHeightStdDev(0.2125); $pokemonMeta->setBaseStamina(160); $pokemonMeta->setCylRadiusM(0.465); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(191); $pokemonMeta->setDiskRadiusM(0.9765); $pokemonMeta->setCollisionRadiusM(0.2325); $pokemonMeta->setPokedexWeightKg(76.6); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.2325); $pokemonMeta->setMovementTimerS(5); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.93); $pokemonMeta->setUniqueId("V0055_POKEMON_GOLDUCK"); $pokemonMeta->setBaseDefense(163); $pokemonMeta->setAttackTimerS(14); $pokemonMeta->setWeightStdDev(9.575); $pokemonMeta->setCylHeightM(1.3485); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.81375); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::PSYDUCK); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::CONFUSION_FAST, PokemonMove::WATER_GUN_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::PSYCHIC, PokemonMove::HYDRO_PUMP, PokemonMove::ICE_BEAM, ))); $pokemonMeta->setNumber(55); self::$POKEMON_META[PokemonId::GOLDUCK] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0056_POKEMON_MANKEY"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MANKEY); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.5); $pokemonMeta->setHeightStdDev(0.0625); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.4838); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(148); $pokemonMeta->setDiskRadiusM(0.7256); $pokemonMeta->setCollisionRadiusM(0.1935); $pokemonMeta->setPokedexWeightKg(28); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIGHTING); $pokemonMeta->setCollisionHeadRadiusM(0.129); $pokemonMeta->setMovementTimerS(29); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.29); $pokemonMeta->setUniqueId("V0056_POKEMON_MANKEY"); $pokemonMeta->setBaseDefense(87); $pokemonMeta->setAttackTimerS(10); $pokemonMeta->setWeightStdDev(3.5); $pokemonMeta->setCylHeightM(0.80625); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.645); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::KARATE_CHOP_FAST, PokemonMove::SCRATCH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::LOW_SWEEP, PokemonMove::BRICK_BREAK, PokemonMove::CROSS_CHOP, ))); $pokemonMeta->setNumber(56); self::$POKEMON_META[PokemonId::MANKEY] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0057_POKEMON_PRIMEAPE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MANKEY); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.46); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(207); $pokemonMeta->setDiskRadiusM(0.69); $pokemonMeta->setCollisionRadiusM(0.46); $pokemonMeta->setPokedexWeightKg(32); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIGHTING); $pokemonMeta->setCollisionHeadRadiusM(0.23); $pokemonMeta->setMovementTimerS(17); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.92); $pokemonMeta->setUniqueId("V0057_POKEMON_PRIMEAPE"); $pokemonMeta->setBaseDefense(144); $pokemonMeta->setAttackTimerS(6); $pokemonMeta->setWeightStdDev(4); $pokemonMeta->setCylHeightM(1.15); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.104); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MANKEY); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::KARATE_CHOP_FAST, PokemonMove::LOW_KICK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::LOW_SWEEP, PokemonMove::NIGHT_SLASH, PokemonMove::CROSS_CHOP, ))); $pokemonMeta->setNumber(57); self::$POKEMON_META[PokemonId::PRIMEAPE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0058_POKEMON_GROWLITHE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_GROWLITHE); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.7); $pokemonMeta->setHeightStdDev(0.0875); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.585); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(136); $pokemonMeta->setDiskRadiusM(0.8775); $pokemonMeta->setCollisionRadiusM(0.234); $pokemonMeta->setPokedexWeightKg(19); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.1755); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.17); $pokemonMeta->setUniqueId("V0058_POKEMON_GROWLITHE"); $pokemonMeta->setBaseDefense(96); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(2.375); $pokemonMeta->setCylHeightM(1.02375); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.585); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.24); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BITE_FAST, PokemonMove::EMBER_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::FLAME_WHEEL, PokemonMove::FLAMETHROWER, PokemonMove::BODY_SLAM, ))); $pokemonMeta->setNumber(58); self::$POKEMON_META[PokemonId::GROWLITHE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0059_POKEMON_ARCANINE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_GROWLITHE); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.9); $pokemonMeta->setHeightStdDev(0.2375); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.666); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(227); $pokemonMeta->setDiskRadiusM(0.999); $pokemonMeta->setCollisionRadiusM(0.37); $pokemonMeta->setPokedexWeightKg(155); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.333); $pokemonMeta->setMovementTimerS(4); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(0.74); $pokemonMeta->setUniqueId("V0059_POKEMON_ARCANINE"); $pokemonMeta->setBaseDefense(166); $pokemonMeta->setAttackTimerS(11); $pokemonMeta->setWeightStdDev(19.375); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.74); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.08); $pokemonMeta->setParentId(PokemonId::GROWLITHE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BITE_FAST, PokemonMove::FIRE_FANG_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::BULLDOZE, PokemonMove::FLAMETHROWER, PokemonMove::FIRE_BLAST, ))); $pokemonMeta->setNumber(59); self::$POKEMON_META[PokemonId::ARCANINE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0060_POKEMON_POLIWAG"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_POLIWAG); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.6); $pokemonMeta->setHeightStdDev(0.075); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.5); $pokemonMeta->setBaseFleeRate(0.15); $pokemonMeta->setBaseAttack(101); $pokemonMeta->setDiskRadiusM(0.75); $pokemonMeta->setCollisionRadiusM(0.3125); $pokemonMeta->setPokedexWeightKg(12.4); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3125); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.25); $pokemonMeta->setUniqueId("V0060_POKEMON_POLIWAG"); $pokemonMeta->setBaseDefense(82); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(1.55); $pokemonMeta->setCylHeightM(0.875); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.75); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SHOT_FAST, PokemonMove::BUBBLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::MUD_BOMB, PokemonMove::BUBBLE_BEAM, PokemonMove::BODY_SLAM, ))); $pokemonMeta->setNumber(60); self::$POKEMON_META[PokemonId::POLIWAG] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0061_POKEMON_POLIWHIRL"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_POLIWAG); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.735); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(130); $pokemonMeta->setDiskRadiusM(1.1025); $pokemonMeta->setCollisionRadiusM(0.49); $pokemonMeta->setPokedexWeightKg(20); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3675); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(0.8); $pokemonMeta->setModelScale(0.98); $pokemonMeta->setUniqueId("V0061_POKEMON_POLIWHIRL"); $pokemonMeta->setBaseDefense(130); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(2.5); $pokemonMeta->setCylHeightM(1.078); $pokemonMeta->setCandyToEvolve(100); $pokemonMeta->setCollisionHeightM(0.882); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.2); $pokemonMeta->setParentId(PokemonId::POLIWAG); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SHOT_FAST, PokemonMove::BUBBLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SCALD, PokemonMove::MUD_BOMB, PokemonMove::BUBBLE_BEAM, ))); $pokemonMeta->setNumber(61); self::$POKEMON_META[PokemonId::POLIWHIRL] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0062_POKEMON_POLIWRATH"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_POLIWAG); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FIGHTING); $pokemonMeta->setPokedexHeightM(1.3); $pokemonMeta->setHeightStdDev(0.1625); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.817); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(182); $pokemonMeta->setDiskRadiusM(1.2255); $pokemonMeta->setCollisionRadiusM(0.645); $pokemonMeta->setPokedexWeightKg(54); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.344); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1.05); $pokemonMeta->setModelScale(0.86); $pokemonMeta->setUniqueId("V0062_POKEMON_POLIWRATH"); $pokemonMeta->setBaseDefense(187); $pokemonMeta->setAttackTimerS(4); $pokemonMeta->setWeightStdDev(6.75); $pokemonMeta->setCylHeightM(1.204); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.118); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.1); $pokemonMeta->setParentId(PokemonId::POLIWHIRL); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SHOT_FAST, PokemonMove::BUBBLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::HYDRO_PUMP, PokemonMove::SUBMISSION, PokemonMove::ICE_PUNCH, ))); $pokemonMeta->setNumber(62); self::$POKEMON_META[PokemonId::POLIWRATH] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0063_POKEMON_ABRA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ABRA); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.9); $pokemonMeta->setHeightStdDev(0.1125); $pokemonMeta->setBaseStamina(50); $pokemonMeta->setCylRadiusM(0.448); $pokemonMeta->setBaseFleeRate(0.99); $pokemonMeta->setBaseAttack(195); $pokemonMeta->setDiskRadiusM(0.672); $pokemonMeta->setCollisionRadiusM(0.28); $pokemonMeta->setPokedexWeightKg(19.5); $pokemonMeta->setMovementType(MovementType::PSYCHIC); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setCollisionHeadRadiusM(0.28); $pokemonMeta->setMovementTimerS(29); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.12); $pokemonMeta->setUniqueId("V0063_POKEMON_ABRA"); $pokemonMeta->setBaseDefense(103); $pokemonMeta->setAttackTimerS(10); $pokemonMeta->setWeightStdDev(2.4375); $pokemonMeta->setCylHeightM(0.784); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.56); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.168); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ZEN_HEADBUTT_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SHADOW_BALL, PokemonMove::PSYSHOCK, PokemonMove::SIGNAL_BEAM, ))); $pokemonMeta->setNumber(63); self::$POKEMON_META[PokemonId::ABRA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0064_POKEMON_KADABRA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ABRA); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.3); $pokemonMeta->setHeightStdDev(0.1625); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.6675); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(232); $pokemonMeta->setDiskRadiusM(1.0013); $pokemonMeta->setCollisionRadiusM(0.445); $pokemonMeta->setPokedexWeightKg(56.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setCollisionHeadRadiusM(0.33375); $pokemonMeta->setMovementTimerS(6); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(0.89); $pokemonMeta->setUniqueId("V0064_POKEMON_KADABRA"); $pokemonMeta->setBaseDefense(138); $pokemonMeta->setAttackTimerS(17); $pokemonMeta->setWeightStdDev(7.0625); $pokemonMeta->setCylHeightM(1.157); $pokemonMeta->setCandyToEvolve(100); $pokemonMeta->setCollisionHeightM(0.89); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.2); $pokemonMeta->setParentId(PokemonId::ABRA); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::CONFUSION_FAST, PokemonMove::PSYCHO_CUT_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DAZZLING_GLEAM, PokemonMove::SHADOW_BALL, PokemonMove::PSYBEAM, ))); $pokemonMeta->setNumber(64); self::$POKEMON_META[PokemonId::KADABRA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0065_POKEMON_ALAKAZAM"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ABRA); $pokemonMeta->setPokemonClass(PokemonClass::VERY_RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.5); $pokemonMeta->setHeightStdDev(0.1875); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.51); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(271); $pokemonMeta->setDiskRadiusM(0.765); $pokemonMeta->setCollisionRadiusM(0.425); $pokemonMeta->setPokedexWeightKg(48); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setCollisionHeadRadiusM(0.255); $pokemonMeta->setMovementTimerS(4); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.85); $pokemonMeta->setUniqueId("V0065_POKEMON_ALAKAZAM"); $pokemonMeta->setBaseDefense(194); $pokemonMeta->setAttackTimerS(11); $pokemonMeta->setWeightStdDev(6); $pokemonMeta->setCylHeightM(1.275); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.93500012); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.1); $pokemonMeta->setParentId(PokemonId::KADABRA); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::CONFUSION_FAST, PokemonMove::PSYCHO_CUT_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::PSYCHIC, PokemonMove::DAZZLING_GLEAM, PokemonMove::SHADOW_BALL, ))); $pokemonMeta->setNumber(65); self::$POKEMON_META[PokemonId::ALAKAZAM] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0066_POKEMON_MACHOP"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MACHOP); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.8); $pokemonMeta->setHeightStdDev(0.1); $pokemonMeta->setBaseStamina(140); $pokemonMeta->setCylRadiusM(0.4125); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(137); $pokemonMeta->setDiskRadiusM(0.6188); $pokemonMeta->setCollisionRadiusM(0.22); $pokemonMeta->setPokedexWeightKg(19.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIGHTING); $pokemonMeta->setCollisionHeadRadiusM(0.20625); $pokemonMeta->setMovementTimerS(23); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.1); $pokemonMeta->setUniqueId("V0066_POKEMON_MACHOP"); $pokemonMeta->setBaseDefense(88); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(2.4375); $pokemonMeta->setCylHeightM(0.88000011); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.55); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::KARATE_CHOP_FAST, PokemonMove::LOW_KICK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::LOW_SWEEP, PokemonMove::BRICK_BREAK, PokemonMove::CROSS_CHOP, ))); $pokemonMeta->setNumber(66); self::$POKEMON_META[PokemonId::MACHOP] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0067_POKEMON_MACHOKE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MACHOP); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.5); $pokemonMeta->setHeightStdDev(0.1875); $pokemonMeta->setBaseStamina(160); $pokemonMeta->setCylRadiusM(0.546); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(177); $pokemonMeta->setDiskRadiusM(0.819); $pokemonMeta->setCollisionRadiusM(0.54600012); $pokemonMeta->setPokedexWeightKg(70.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIGHTING); $pokemonMeta->setCollisionHeadRadiusM(0.1365); $pokemonMeta->setMovementTimerS(14); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.91); $pokemonMeta->setUniqueId("V0067_POKEMON_MACHOKE"); $pokemonMeta->setBaseDefense(130); $pokemonMeta->setAttackTimerS(5); $pokemonMeta->setWeightStdDev(8.8125); $pokemonMeta->setCylHeightM(1.274); $pokemonMeta->setCandyToEvolve(100); $pokemonMeta->setCollisionHeightM(1.092); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.2); $pokemonMeta->setParentId(PokemonId::MACHOP); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::KARATE_CHOP_FAST, PokemonMove::LOW_KICK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SUBMISSION, PokemonMove::BRICK_BREAK, PokemonMove::CROSS_CHOP, ))); $pokemonMeta->setNumber(67); self::$POKEMON_META[PokemonId::MACHOKE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0068_POKEMON_MACHAMP"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MACHOP); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.6); $pokemonMeta->setHeightStdDev(0.2); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.5785); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(234); $pokemonMeta->setDiskRadiusM(0.8678); $pokemonMeta->setCollisionRadiusM(0.5785); $pokemonMeta->setPokedexWeightKg(130); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIGHTING); $pokemonMeta->setCollisionHeadRadiusM(0.1335); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.89); $pokemonMeta->setUniqueId("V0068_POKEMON_MACHAMP"); $pokemonMeta->setBaseDefense(162); $pokemonMeta->setAttackTimerS(3); $pokemonMeta->setWeightStdDev(16.25); $pokemonMeta->setCylHeightM(1.424); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.246); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.1); $pokemonMeta->setParentId(PokemonId::MACHOKE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::KARATE_CHOP_FAST, PokemonMove::BULLET_PUNCH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STONE_EDGE, PokemonMove::SUBMISSION, PokemonMove::CROSS_CHOP, ))); $pokemonMeta->setNumber(68); self::$POKEMON_META[PokemonId::MACHAMP] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0069_POKEMON_BELLSPROUT"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_BELLSPROUT); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(0.7); $pokemonMeta->setHeightStdDev(0.0875); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.4515); $pokemonMeta->setBaseFleeRate(0.15); $pokemonMeta->setBaseAttack(139); $pokemonMeta->setDiskRadiusM(0.6773); $pokemonMeta->setCollisionRadiusM(0.1935); $pokemonMeta->setPokedexWeightKg(4); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.22575); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1.2); $pokemonMeta->setModelScale(1.29); $pokemonMeta->setUniqueId("V0069_POKEMON_BELLSPROUT"); $pokemonMeta->setBaseDefense(64); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(0.5); $pokemonMeta->setCylHeightM(0.90299988); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.4515); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::VINE_WHIP_FAST, PokemonMove::ACID_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::POWER_WHIP, PokemonMove::SLUDGE_BOMB, PokemonMove::WRAP, ))); $pokemonMeta->setNumber(69); self::$POKEMON_META[PokemonId::BELLSPROUT] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0070_POKEMON_WEEPINBELL"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_BELLSPROUT); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.65); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(172); $pokemonMeta->setDiskRadiusM(0.975); $pokemonMeta->setCollisionRadiusM(0.25); $pokemonMeta->setPokedexWeightKg(6.4); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.25); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0070_POKEMON_WEEPINBELL"); $pokemonMeta->setBaseDefense(95); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(0.8); $pokemonMeta->setCylHeightM(1); $pokemonMeta->setCandyToEvolve(100); $pokemonMeta->setCollisionHeightM(0.95); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.2); $pokemonMeta->setParentId(PokemonId::BELLSPROUT); $pokemonMeta->setCylGroundM(0.375); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ACID_FAST, PokemonMove::RAZOR_LEAF_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::POWER_WHIP, PokemonMove::SLUDGE_BOMB, PokemonMove::SEED_BOMB, ))); $pokemonMeta->setNumber(70); self::$POKEMON_META[PokemonId::WEEPINBELL] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0071_POKEMON_VICTREEBEL"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_BELLSPROUT); $pokemonMeta->setPokemonClass(PokemonClass::VERY_RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(1.7); $pokemonMeta->setHeightStdDev(0.2125); $pokemonMeta->setBaseStamina(160); $pokemonMeta->setCylRadiusM(0.546); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(207); $pokemonMeta->setDiskRadiusM(0.819); $pokemonMeta->setCollisionRadiusM(0.336); $pokemonMeta->setPokedexWeightKg(15.5); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.273); $pokemonMeta->setMovementTimerS(14); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.84); $pokemonMeta->setUniqueId("V0071_POKEMON_VICTREEBEL"); $pokemonMeta->setBaseDefense(138); $pokemonMeta->setAttackTimerS(5); $pokemonMeta->setWeightStdDev(1.9375); $pokemonMeta->setCylHeightM(1.428); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.428); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.1); $pokemonMeta->setParentId(PokemonId::WEEPINBELL); $pokemonMeta->setCylGroundM(0.42); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ACID_FAST, PokemonMove::RAZOR_LEAF_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SLUDGE_BOMB, PokemonMove::LEAF_BLADE, PokemonMove::SOLAR_BEAM, ))); $pokemonMeta->setNumber(71); self::$POKEMON_META[PokemonId::VICTREEBEL] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0072_POKEMON_TENTACOOL"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_TENTACOOL); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(0.9); $pokemonMeta->setHeightStdDev(0.1125); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.315); $pokemonMeta->setBaseFleeRate(0.15); $pokemonMeta->setBaseAttack(97); $pokemonMeta->setDiskRadiusM(0.4725); $pokemonMeta->setCollisionRadiusM(0.21); $pokemonMeta->setPokedexWeightKg(45.5); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.1575); $pokemonMeta->setMovementTimerS(23); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.05); $pokemonMeta->setUniqueId("V0072_POKEMON_TENTACOOL"); $pokemonMeta->setBaseDefense(182); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(5.6875); $pokemonMeta->setCylHeightM(0.91874993); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.91874993); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.2625); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POISON_STING_FAST, PokemonMove::BUBBLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::WATER_PULSE, PokemonMove::BUBBLE_BEAM, PokemonMove::WRAP, ))); $pokemonMeta->setNumber(72); self::$POKEMON_META[PokemonId::TENTACOOL] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0073_POKEMON_TENTACRUEL"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_TENTACOOL); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(1.6); $pokemonMeta->setHeightStdDev(0.2); $pokemonMeta->setBaseStamina(160); $pokemonMeta->setCylRadiusM(0.492); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(166); $pokemonMeta->setDiskRadiusM(0.738); $pokemonMeta->setCollisionRadiusM(0.492); $pokemonMeta->setPokedexWeightKg(55); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.246); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.82); $pokemonMeta->setUniqueId("V0073_POKEMON_TENTACRUEL"); $pokemonMeta->setBaseDefense(237); $pokemonMeta->setAttackTimerS(4); $pokemonMeta->setWeightStdDev(6.875); $pokemonMeta->setCylHeightM(1.312); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.23); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::TENTACOOL); $pokemonMeta->setCylGroundM(0.205); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ACID_FAST, PokemonMove::POISON_JAB_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::BLIZZARD, PokemonMove::HYDRO_PUMP, PokemonMove::SLUDGE_WAVE, ))); $pokemonMeta->setNumber(73); self::$POKEMON_META[PokemonId::TENTACRUEL] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0074_POKEMON_GEODUDE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_GEODUDE); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setPokedexHeightM(0.4); $pokemonMeta->setHeightStdDev(0.05); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.3915); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(132); $pokemonMeta->setDiskRadiusM(0.5873); $pokemonMeta->setCollisionRadiusM(0.3915); $pokemonMeta->setPokedexWeightKg(20); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setCollisionHeadRadiusM(0.19575); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.87); $pokemonMeta->setUniqueId("V0074_POKEMON_GEODUDE"); $pokemonMeta->setBaseDefense(163); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(2.5); $pokemonMeta->setCylHeightM(0.348); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.1305); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.261); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ROCK_THROW_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DIG, PokemonMove::ROCK_SLIDE, PokemonMove::ROCK_TOMB, ))); $pokemonMeta->setNumber(74); self::$POKEMON_META[PokemonId::GEODUDE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0075_POKEMON_GRAVELER"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_GEODUDE); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.697); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(164); $pokemonMeta->setDiskRadiusM(1.0455); $pokemonMeta->setCollisionRadiusM(0.492); $pokemonMeta->setPokedexWeightKg(105); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setCollisionHeadRadiusM(0.369); $pokemonMeta->setMovementTimerS(14); $pokemonMeta->setJumpTimeS(1.2); $pokemonMeta->setModelScale(0.82); $pokemonMeta->setUniqueId("V0075_POKEMON_GRAVELER"); $pokemonMeta->setBaseDefense(196); $pokemonMeta->setAttackTimerS(5); $pokemonMeta->setWeightStdDev(13.125); $pokemonMeta->setCylHeightM(0.82); $pokemonMeta->setCandyToEvolve(100); $pokemonMeta->setCollisionHeightM(0.697); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.2); $pokemonMeta->setParentId(PokemonId::GEODUDE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SHOT_FAST, PokemonMove::ROCK_THROW_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DIG, PokemonMove::ROCK_SLIDE, PokemonMove::STONE_EDGE, ))); $pokemonMeta->setNumber(75); self::$POKEMON_META[PokemonId::GRAVELER] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0076_POKEMON_GOLEM"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_GEODUDE); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setPokedexHeightM(1.4); $pokemonMeta->setHeightStdDev(0.175); $pokemonMeta->setBaseStamina(160); $pokemonMeta->setCylRadiusM(0.63); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(211); $pokemonMeta->setDiskRadiusM(0.945); $pokemonMeta->setCollisionRadiusM(0.63); $pokemonMeta->setPokedexWeightKg(300); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setCollisionHeadRadiusM(0.315); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1.2); $pokemonMeta->setModelScale(0.84); $pokemonMeta->setUniqueId("V0076_POKEMON_GOLEM"); $pokemonMeta->setBaseDefense(229); $pokemonMeta->setAttackTimerS(3); $pokemonMeta->setWeightStdDev(37.5); $pokemonMeta->setCylHeightM(1.092); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.092); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.1); $pokemonMeta->setParentId(PokemonId::GRAVELER); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SHOT_FAST, PokemonMove::ROCK_THROW_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STONE_EDGE, PokemonMove::EARTHQUAKE, PokemonMove::ANCIENT_POWER, ))); $pokemonMeta->setNumber(76); self::$POKEMON_META[PokemonId::GOLEM] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0077_POKEMON_PONYTA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PONYTA); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.3788); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(170); $pokemonMeta->setDiskRadiusM(0.5681); $pokemonMeta->setCollisionRadiusM(0.2525); $pokemonMeta->setPokedexWeightKg(30); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.202); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(0.95); $pokemonMeta->setModelScale(1.01); $pokemonMeta->setUniqueId("V0077_POKEMON_PONYTA"); $pokemonMeta->setBaseDefense(132); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(3.75); $pokemonMeta->setCylHeightM(1.2625); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.63125); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.32); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::EMBER_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::FLAME_WHEEL, PokemonMove::FLAME_CHARGE, PokemonMove::FIRE_BLAST, ))); $pokemonMeta->setNumber(77); self::$POKEMON_META[PokemonId::PONYTA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0078_POKEMON_RAPIDASH"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PONYTA); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.7); $pokemonMeta->setHeightStdDev(0.2125); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.405); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(207); $pokemonMeta->setDiskRadiusM(0.6075); $pokemonMeta->setCollisionRadiusM(0.324); $pokemonMeta->setPokedexWeightKg(95); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.243); $pokemonMeta->setMovementTimerS(6); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.81); $pokemonMeta->setUniqueId("V0078_POKEMON_RAPIDASH"); $pokemonMeta->setBaseDefense(167); $pokemonMeta->setAttackTimerS(17); $pokemonMeta->setWeightStdDev(11.875); $pokemonMeta->setCylHeightM(1.701); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.891); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::PONYTA); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::LOW_KICK_FAST, PokemonMove::EMBER_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::HEAT_WAVE, PokemonMove::DRILL_RUN, PokemonMove::FIRE_BLAST, ))); $pokemonMeta->setNumber(78); self::$POKEMON_META[PokemonId::RAPIDASH] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0079_POKEMON_SLOWPOKE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SLOWPOKE); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setPokedexHeightM(1.2); $pokemonMeta->setHeightStdDev(0.15); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.5925); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(109); $pokemonMeta->setDiskRadiusM(1.185); $pokemonMeta->setCollisionRadiusM(0.316); $pokemonMeta->setPokedexWeightKg(36); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.29625); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.79); $pokemonMeta->setUniqueId("V0079_POKEMON_SLOWPOKE"); $pokemonMeta->setBaseDefense(109); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(4.5); $pokemonMeta->setCylHeightM(0.94800007); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.5135); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::CONFUSION_FAST, PokemonMove::WATER_GUN_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::PSYCHIC, PokemonMove::WATER_PULSE, PokemonMove::PSYSHOCK, ))); $pokemonMeta->setNumber(79); self::$POKEMON_META[PokemonId::SLOWPOKE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0080_POKEMON_SLOWBRO"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SLOWPOKE); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setPokedexHeightM(1.6); $pokemonMeta->setHeightStdDev(0.2); $pokemonMeta->setBaseStamina(190); $pokemonMeta->setCylRadiusM(0.4675); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(177); $pokemonMeta->setDiskRadiusM(0.7013); $pokemonMeta->setCollisionRadiusM(0.425); $pokemonMeta->setPokedexWeightKg(78.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.255); $pokemonMeta->setMovementTimerS(3); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.85); $pokemonMeta->setUniqueId("V0080_POKEMON_SLOWBRO"); $pokemonMeta->setBaseDefense(194); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(9.8125); $pokemonMeta->setCylHeightM(1.275); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.85); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::SLOWPOKE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::CONFUSION_FAST, PokemonMove::WATER_GUN_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::PSYCHIC, PokemonMove::WATER_PULSE, PokemonMove::ICE_BEAM, ))); $pokemonMeta->setNumber(80); self::$POKEMON_META[PokemonId::SLOWBRO] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0081_POKEMON_MAGNEMITE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MAGNEMITE); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_STEEL); $pokemonMeta->setPokedexHeightM(0.3); $pokemonMeta->setHeightStdDev(0.0375); $pokemonMeta->setBaseStamina(50); $pokemonMeta->setCylRadiusM(0.456); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(165); $pokemonMeta->setDiskRadiusM(0.684); $pokemonMeta->setCollisionRadiusM(0.456); $pokemonMeta->setPokedexWeightKg(6); $pokemonMeta->setMovementType(MovementType::ELECTRIC); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setCollisionHeadRadiusM(0.228); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.52); $pokemonMeta->setUniqueId("V0081_POKEMON_MAGNEMITE"); $pokemonMeta->setBaseDefense(128); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(0.75); $pokemonMeta->setCylHeightM(0.456); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.456); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.912); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::SPARK_FAST, PokemonMove::THUNDER_SHOCK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::MAGNET_BOMB, PokemonMove::THUNDERBOLT, PokemonMove::DISCHARGE, ))); $pokemonMeta->setNumber(81); self::$POKEMON_META[PokemonId::MAGNEMITE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0082_POKEMON_MAGNETON"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MAGNEMITE); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_STEEL); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.44); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(223); $pokemonMeta->setDiskRadiusM(0.66); $pokemonMeta->setCollisionRadiusM(0.44); $pokemonMeta->setPokedexWeightKg(60); $pokemonMeta->setMovementType(MovementType::ELECTRIC); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setCollisionHeadRadiusM(0.22); $pokemonMeta->setMovementTimerS(5); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.1); $pokemonMeta->setUniqueId("V0082_POKEMON_MAGNETON"); $pokemonMeta->setBaseDefense(182); $pokemonMeta->setAttackTimerS(14); $pokemonMeta->setWeightStdDev(7.5); $pokemonMeta->setCylHeightM(1.1); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.825); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MAGNEMITE); $pokemonMeta->setCylGroundM(0.44); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::SPARK_FAST, PokemonMove::THUNDER_SHOCK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::MAGNET_BOMB, PokemonMove::FLASH_CANNON, PokemonMove::DISCHARGE, ))); $pokemonMeta->setNumber(82); self::$POKEMON_META[PokemonId::MAGNETON] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0083_POKEMON_FARFETCHD"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_FARFETCHD); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(0.8); $pokemonMeta->setHeightStdDev(0.1); $pokemonMeta->setBaseStamina(104); $pokemonMeta->setCylRadiusM(0.452); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(124); $pokemonMeta->setDiskRadiusM(0.678); $pokemonMeta->setCollisionRadiusM(0.2825); $pokemonMeta->setPokedexWeightKg(15); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.2825); $pokemonMeta->setMovementTimerS(29); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(1.13); $pokemonMeta->setUniqueId("V0083_POKEMON_FARFETCHD"); $pokemonMeta->setBaseDefense(128); $pokemonMeta->setAttackTimerS(10); $pokemonMeta->setWeightStdDev(1.875); $pokemonMeta->setCylHeightM(0.8475); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.42375); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.24); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::FURY_CUTTER_FAST, PokemonMove::CUT_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::AERIAL_ACE, PokemonMove::LEAF_BLADE, PokemonMove::AIR_CUTTER, ))); $pokemonMeta->setNumber(83); self::$POKEMON_META[PokemonId::FARFETCHD] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0084_POKEMON_DODUO"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_DODUO); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.4); $pokemonMeta->setHeightStdDev(0.175); $pokemonMeta->setBaseStamina(70); $pokemonMeta->setCylRadiusM(0.396); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(158); $pokemonMeta->setDiskRadiusM(0.594); $pokemonMeta->setCollisionRadiusM(0.352); $pokemonMeta->setPokedexWeightKg(39.2); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.198); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.88); $pokemonMeta->setUniqueId("V0084_POKEMON_DODUO"); $pokemonMeta->setBaseDefense(88); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(4.9); $pokemonMeta->setCylHeightM(1.232); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(1.232); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::QUICK_ATTACK_FAST, PokemonMove::PECK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::AERIAL_ACE, PokemonMove::DRILL_PECK, PokemonMove::SWIFT, ))); $pokemonMeta->setNumber(84); self::$POKEMON_META[PokemonId::DODUO] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0085_POKEMON_DODRIO"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_DODUO); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.8); $pokemonMeta->setHeightStdDev(0.225); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.5148); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(218); $pokemonMeta->setDiskRadiusM(0.7722); $pokemonMeta->setCollisionRadiusM(0.39); $pokemonMeta->setPokedexWeightKg(85.2); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.2574); $pokemonMeta->setMovementTimerS(6); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(0.78); $pokemonMeta->setUniqueId("V0085_POKEMON_DODRIO"); $pokemonMeta->setBaseDefense(145); $pokemonMeta->setAttackTimerS(17); $pokemonMeta->setWeightStdDev(10.65); $pokemonMeta->setCylHeightM(1.287); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.287); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::DODUO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::STEEL_WING_FAST, PokemonMove::FEINT_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::AERIAL_ACE, PokemonMove::DRILL_PECK, PokemonMove::AIR_CUTTER, ))); $pokemonMeta->setNumber(85); self::$POKEMON_META[PokemonId::DODRIO] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0086_POKEMON_SEEL"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SEEL); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.1); $pokemonMeta->setHeightStdDev(0.1375); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.275); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(85); $pokemonMeta->setDiskRadiusM(0.4125); $pokemonMeta->setCollisionRadiusM(0.275); $pokemonMeta->setPokedexWeightKg(90); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.22); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(0.9); $pokemonMeta->setModelScale(1.1); $pokemonMeta->setUniqueId("V0086_POKEMON_SEEL"); $pokemonMeta->setBaseDefense(128); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(11.25); $pokemonMeta->setCylHeightM(0.55); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.4125); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::WATER_GUN_FAST, PokemonMove::ICE_SHARD_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::ICY_WIND, PokemonMove::AQUA_TAIL, PokemonMove::AQUA_JET, ))); $pokemonMeta->setNumber(86); self::$POKEMON_META[PokemonId::SEEL] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0087_POKEMON_DEWGONG"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SEEL); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_ICE); $pokemonMeta->setPokedexHeightM(1.7); $pokemonMeta->setHeightStdDev(0.2125); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.525); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(139); $pokemonMeta->setDiskRadiusM(0.7875); $pokemonMeta->setCollisionRadiusM(0.315); $pokemonMeta->setPokedexWeightKg(120); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.13125); $pokemonMeta->setMovementTimerS(5); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.05); $pokemonMeta->setUniqueId("V0087_POKEMON_DEWGONG"); $pokemonMeta->setBaseDefense(184); $pokemonMeta->setAttackTimerS(14); $pokemonMeta->setWeightStdDev(15); $pokemonMeta->setCylHeightM(0.84); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.63); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::SEEL); $pokemonMeta->setCylGroundM(0.39375); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ICE_SHARD_FAST, PokemonMove::FROST_BREATH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::ICY_WIND, PokemonMove::BLIZZARD, PokemonMove::AQUA_JET, ))); $pokemonMeta->setNumber(87); self::$POKEMON_META[PokemonId::DEWGONG] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0088_POKEMON_GRIMER"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_GRIMER); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.9); $pokemonMeta->setHeightStdDev(0.1125); $pokemonMeta->setBaseStamina(160); $pokemonMeta->setCylRadiusM(0.588); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(135); $pokemonMeta->setDiskRadiusM(0.882); $pokemonMeta->setCollisionRadiusM(0.49); $pokemonMeta->setPokedexWeightKg(30); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setCollisionHeadRadiusM(0.294); $pokemonMeta->setMovementTimerS(23); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.98); $pokemonMeta->setUniqueId("V0088_POKEMON_GRIMER"); $pokemonMeta->setBaseDefense(90); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(3.75); $pokemonMeta->setCylHeightM(0.98); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.83300012); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SLAP_FAST, PokemonMove::ACID_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SLUDGE_BOMB, PokemonMove::MUD_BOMB, PokemonMove::SLUDGE, ))); $pokemonMeta->setNumber(88); self::$POKEMON_META[PokemonId::GRIMER] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0089_POKEMON_MUK"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_GRIMER); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.2); $pokemonMeta->setHeightStdDev(0.15); $pokemonMeta->setBaseStamina(210); $pokemonMeta->setCylRadiusM(0.86); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(190); $pokemonMeta->setDiskRadiusM(1.14); $pokemonMeta->setCollisionRadiusM(0.76); $pokemonMeta->setPokedexWeightKg(30); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setCollisionHeadRadiusM(0.38); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(0.76); $pokemonMeta->setUniqueId("V0089_POKEMON_MUK"); $pokemonMeta->setBaseDefense(184); $pokemonMeta->setAttackTimerS(3); $pokemonMeta->setWeightStdDev(3.75); $pokemonMeta->setCylHeightM(0.912); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.57); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::GRIMER); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ACID_FAST, PokemonMove::POISON_JAB_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DARK_PULSE, PokemonMove::GUNK_SHOT, PokemonMove::SLUDGE_WAVE, ))); $pokemonMeta->setNumber(89); self::$POKEMON_META[PokemonId::MUK] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0090_POKEMON_SHELLDER"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SHELLDER); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.3); $pokemonMeta->setHeightStdDev(0.0375); $pokemonMeta->setBaseStamina(60); $pokemonMeta->setCylRadiusM(0.3864); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(116); $pokemonMeta->setDiskRadiusM(0.5796); $pokemonMeta->setCollisionRadiusM(0.336); $pokemonMeta->setPokedexWeightKg(4); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.294); $pokemonMeta->setMovementTimerS(23); $pokemonMeta->setJumpTimeS(1.2); $pokemonMeta->setModelScale(1.68); $pokemonMeta->setUniqueId("V0090_POKEMON_SHELLDER"); $pokemonMeta->setBaseDefense(168); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(0.5); $pokemonMeta->setCylHeightM(0.504); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.504); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ICE_SHARD_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::ICY_WIND, PokemonMove::WATER_PULSE, PokemonMove::BUBBLE_BEAM, ))); $pokemonMeta->setNumber(90); self::$POKEMON_META[PokemonId::SHELLDER] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0091_POKEMON_CLOYSTER"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SHELLDER); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_ICE); $pokemonMeta->setPokedexHeightM(1.5); $pokemonMeta->setHeightStdDev(0.1875); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.63); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(186); $pokemonMeta->setDiskRadiusM(0.945); $pokemonMeta->setCollisionRadiusM(0.42); $pokemonMeta->setPokedexWeightKg(132.5); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.54599988); $pokemonMeta->setMovementTimerS(3); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.84); $pokemonMeta->setUniqueId("V0091_POKEMON_CLOYSTER"); $pokemonMeta->setBaseDefense(323); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(16.5625); $pokemonMeta->setCylHeightM(1.05); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.05); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::SHELLDER); $pokemonMeta->setCylGroundM(0.42); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ICE_SHARD_FAST, PokemonMove::FROST_BREATH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::ICY_WIND, PokemonMove::BLIZZARD, PokemonMove::HYDRO_PUMP, ))); $pokemonMeta->setNumber(91); self::$POKEMON_META[PokemonId::CLOYSTER] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0092_POKEMON_GASTLY"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_GASTLY); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(1.3); $pokemonMeta->setHeightStdDev(0.1625); $pokemonMeta->setBaseStamina(60); $pokemonMeta->setCylRadiusM(0.45); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(186); $pokemonMeta->setDiskRadiusM(0.675); $pokemonMeta->setCollisionRadiusM(0.25); $pokemonMeta->setPokedexWeightKg(0.1); $pokemonMeta->setMovementType(MovementType::PSYCHIC); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GHOST); $pokemonMeta->setCollisionHeadRadiusM(0.3); $pokemonMeta->setMovementTimerS(29); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0092_POKEMON_GASTLY"); $pokemonMeta->setBaseDefense(70); $pokemonMeta->setAttackTimerS(10); $pokemonMeta->setWeightStdDev(0.0125); $pokemonMeta->setCylHeightM(0.8); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.6); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.32); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.6); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::SUCKER_PUNCH_FAST, PokemonMove::LICK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SLUDGE_BOMB, PokemonMove::DARK_PULSE, PokemonMove::OMINOUS_WIND, ))); $pokemonMeta->setNumber(92); self::$POKEMON_META[PokemonId::GASTLY] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0093_POKEMON_HAUNTER"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_GASTLY); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(1.6); $pokemonMeta->setHeightStdDev(0.2); $pokemonMeta->setBaseStamina(90); $pokemonMeta->setCylRadiusM(0.51); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(223); $pokemonMeta->setDiskRadiusM(0.765); $pokemonMeta->setCollisionRadiusM(0.442); $pokemonMeta->setPokedexWeightKg(0.1); $pokemonMeta->setMovementType(MovementType::PSYCHIC); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GHOST); $pokemonMeta->setCollisionHeadRadiusM(0.442); $pokemonMeta->setMovementTimerS(23); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.68); $pokemonMeta->setUniqueId("V0093_POKEMON_HAUNTER"); $pokemonMeta->setBaseDefense(112); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(0.0125); $pokemonMeta->setCylHeightM(1.088); $pokemonMeta->setCandyToEvolve(100); $pokemonMeta->setCollisionHeightM(1.156); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::GASTLY); $pokemonMeta->setCylGroundM(0.34); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::SHADOW_CLAW_FAST, PokemonMove::LICK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SLUDGE_BOMB, PokemonMove::SHADOW_BALL, PokemonMove::DARK_PULSE, ))); $pokemonMeta->setNumber(93); self::$POKEMON_META[PokemonId::HAUNTER] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0094_POKEMON_GENGAR"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_GASTLY); $pokemonMeta->setPokemonClass(PokemonClass::VERY_RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(1.5); $pokemonMeta->setHeightStdDev(0.1875); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.462); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(261); $pokemonMeta->setDiskRadiusM(0.693); $pokemonMeta->setCollisionRadiusM(0.462); $pokemonMeta->setPokedexWeightKg(40.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GHOST); $pokemonMeta->setCollisionHeadRadiusM(0.504); $pokemonMeta->setMovementTimerS(14); $pokemonMeta->setJumpTimeS(1.3); $pokemonMeta->setModelScale(0.84); $pokemonMeta->setUniqueId("V0094_POKEMON_GENGAR"); $pokemonMeta->setBaseDefense(156); $pokemonMeta->setAttackTimerS(5); $pokemonMeta->setWeightStdDev(5.0625); $pokemonMeta->setCylHeightM(1.176); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.092); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.08); $pokemonMeta->setParentId(PokemonId::HAUNTER); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::SUCKER_PUNCH_FAST, PokemonMove::SHADOW_CLAW_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SHADOW_BALL, PokemonMove::DARK_PULSE, PokemonMove::SLUDGE_WAVE, ))); $pokemonMeta->setNumber(94); self::$POKEMON_META[PokemonId::GENGAR] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0095_POKEMON_ONIX"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ONIX); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setPokedexHeightM(8.8); $pokemonMeta->setHeightStdDev(1.1); $pokemonMeta->setBaseStamina(70); $pokemonMeta->setCylRadiusM(0.658); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(85); $pokemonMeta->setDiskRadiusM(0.987); $pokemonMeta->setCollisionRadiusM(0.658); $pokemonMeta->setPokedexWeightKg(210); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setCollisionHeadRadiusM(0.376); $pokemonMeta->setMovementTimerS(17); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.47); $pokemonMeta->setUniqueId("V0095_POKEMON_ONIX"); $pokemonMeta->setBaseDefense(288); $pokemonMeta->setAttackTimerS(6); $pokemonMeta->setWeightStdDev(26.25); $pokemonMeta->setCylHeightM(1.41); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.175); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ROCK_THROW_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::IRON_HEAD, PokemonMove::STONE_EDGE, PokemonMove::ROCK_SLIDE, ))); $pokemonMeta->setNumber(95); self::$POKEMON_META[PokemonId::ONIX] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0096_POKEMON_DROWZEE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_DROWZEE); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.42); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(89); $pokemonMeta->setDiskRadiusM(0.63); $pokemonMeta->setCollisionRadiusM(0.3675); $pokemonMeta->setPokedexWeightKg(32.4); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setCollisionHeadRadiusM(0.2625); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(1.05); $pokemonMeta->setUniqueId("V0096_POKEMON_DROWZEE"); $pokemonMeta->setBaseDefense(158); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(4.05); $pokemonMeta->setCylHeightM(1.05); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.63); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::CONFUSION_FAST, PokemonMove::POUND_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::PSYCHIC, PokemonMove::PSYSHOCK, PokemonMove::PSYBEAM, ))); $pokemonMeta->setNumber(96); self::$POKEMON_META[PokemonId::DROWZEE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0097_POKEMON_HYPNO"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_DROWZEE); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.6); $pokemonMeta->setHeightStdDev(0.2); $pokemonMeta->setBaseStamina(170); $pokemonMeta->setCylRadiusM(0.6225); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(144); $pokemonMeta->setDiskRadiusM(0.9338); $pokemonMeta->setCollisionRadiusM(0.332); $pokemonMeta->setPokedexWeightKg(75.6); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setCollisionHeadRadiusM(0.332); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(0.8); $pokemonMeta->setModelScale(0.83); $pokemonMeta->setUniqueId("V0097_POKEMON_HYPNO"); $pokemonMeta->setBaseDefense(215); $pokemonMeta->setAttackTimerS(4); $pokemonMeta->setWeightStdDev(9.45); $pokemonMeta->setCylHeightM(1.328); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.83); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::DROWZEE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::CONFUSION_FAST, PokemonMove::ZEN_HEADBUTT_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::PSYCHIC, PokemonMove::SHADOW_BALL, PokemonMove::PSYSHOCK, ))); $pokemonMeta->setNumber(97); self::$POKEMON_META[PokemonId::HYPNO] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0098_POKEMON_KRABBY"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_KRABBY); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.4); $pokemonMeta->setHeightStdDev(0.05); $pokemonMeta->setBaseStamina(60); $pokemonMeta->setCylRadiusM(0.522); $pokemonMeta->setBaseFleeRate(0.15); $pokemonMeta->setBaseAttack(181); $pokemonMeta->setDiskRadiusM(0.783); $pokemonMeta->setCollisionRadiusM(0.522); $pokemonMeta->setPokedexWeightKg(6.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.261); $pokemonMeta->setMovementTimerS(23); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.16); $pokemonMeta->setUniqueId("V0098_POKEMON_KRABBY"); $pokemonMeta->setBaseDefense(156); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(0.8125); $pokemonMeta->setCylHeightM(0.87); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.87); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SHOT_FAST, PokemonMove::BUBBLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::WATER_PULSE, PokemonMove::VICE_GRIP, PokemonMove::BUBBLE_BEAM, ))); $pokemonMeta->setNumber(98); self::$POKEMON_META[PokemonId::KRABBY] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0099_POKEMON_KINGLER"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_KRABBY); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.3); $pokemonMeta->setHeightStdDev(0.1625); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.6525); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(240); $pokemonMeta->setDiskRadiusM(0.9788); $pokemonMeta->setCollisionRadiusM(0.6525); $pokemonMeta->setPokedexWeightKg(60); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.32625); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(0.8); $pokemonMeta->setModelScale(0.87); $pokemonMeta->setUniqueId("V0099_POKEMON_KINGLER"); $pokemonMeta->setBaseDefense(214); $pokemonMeta->setAttackTimerS(3); $pokemonMeta->setWeightStdDev(7.5); $pokemonMeta->setCylHeightM(1.0005); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.0005); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::KRABBY); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SHOT_FAST, PokemonMove::METAL_CLAW_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::WATER_PULSE, PokemonMove::X_SCISSOR, PokemonMove::VICE_GRIP, ))); $pokemonMeta->setNumber(99); self::$POKEMON_META[PokemonId::KINGLER] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0100_POKEMON_VOLTORB"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_VOLTORB); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.5); $pokemonMeta->setHeightStdDev(0.0625); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.3375); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(109); $pokemonMeta->setDiskRadiusM(0.5063); $pokemonMeta->setCollisionRadiusM(0.3375); $pokemonMeta->setPokedexWeightKg(10.4); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setCollisionHeadRadiusM(0.16875); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1.2); $pokemonMeta->setModelScale(1.35); $pokemonMeta->setUniqueId("V0100_POKEMON_VOLTORB"); $pokemonMeta->setBaseDefense(114); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(1.3); $pokemonMeta->setCylHeightM(0.675); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.675); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::SPARK_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SIGNAL_BEAM, PokemonMove::THUNDERBOLT, PokemonMove::DISCHARGE, ))); $pokemonMeta->setNumber(100); self::$POKEMON_META[PokemonId::VOLTORB] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0101_POKEMON_ELECTRODE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_VOLTORB); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.2); $pokemonMeta->setHeightStdDev(0.15); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.552); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(173); $pokemonMeta->setDiskRadiusM(0.828); $pokemonMeta->setCollisionRadiusM(0.552); $pokemonMeta->setPokedexWeightKg(66.6); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setCollisionHeadRadiusM(0.276); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1.2); $pokemonMeta->setModelScale(0.92); $pokemonMeta->setUniqueId("V0101_POKEMON_ELECTRODE"); $pokemonMeta->setBaseDefense(179); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(8.325); $pokemonMeta->setCylHeightM(1.104); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.104); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::VOLTORB); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::SPARK_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::HYPER_BEAM, PokemonMove::THUNDERBOLT, PokemonMove::DISCHARGE, ))); $pokemonMeta->setNumber(101); self::$POKEMON_META[PokemonId::ELECTRODE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0102_POKEMON_EXEGGCUTE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_EXEGGCUTE); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setPokedexHeightM(0.4); $pokemonMeta->setHeightStdDev(0.05); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.515); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(107); $pokemonMeta->setDiskRadiusM(0.7725); $pokemonMeta->setCollisionRadiusM(0.515); $pokemonMeta->setPokedexWeightKg(2.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.2575); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.03); $pokemonMeta->setUniqueId("V0102_POKEMON_EXEGGCUTE"); $pokemonMeta->setBaseDefense(140); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(0.3125); $pokemonMeta->setCylHeightM(0.412); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.412); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::CONFUSION_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::PSYCHIC, PokemonMove::SEED_BOMB, PokemonMove::ANCIENT_POWER, ))); $pokemonMeta->setNumber(102); self::$POKEMON_META[PokemonId::EXEGGCUTE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0103_POKEMON_EXEGGUTOR"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_EXEGGCUTE); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setPokedexHeightM(2); $pokemonMeta->setHeightStdDev(0.25); $pokemonMeta->setBaseStamina(190); $pokemonMeta->setCylRadiusM(0.507); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(233); $pokemonMeta->setDiskRadiusM(0.7605); $pokemonMeta->setCollisionRadiusM(0.507); $pokemonMeta->setPokedexWeightKg(120); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.2535); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.78); $pokemonMeta->setUniqueId("V0103_POKEMON_EXEGGUTOR"); $pokemonMeta->setBaseDefense(158); $pokemonMeta->setAttackTimerS(3); $pokemonMeta->setWeightStdDev(15); $pokemonMeta->setCylHeightM(1.365); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.365); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::EXEGGCUTE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::CONFUSION_FAST, PokemonMove::ZEN_HEADBUTT_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::PSYCHIC, PokemonMove::SEED_BOMB, PokemonMove::SOLAR_BEAM, ))); $pokemonMeta->setNumber(103); self::$POKEMON_META[PokemonId::EXEGGUTOR] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0104_POKEMON_CUBONE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CUBONE); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.4); $pokemonMeta->setHeightStdDev(0.05); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.296); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(90); $pokemonMeta->setDiskRadiusM(0.444); $pokemonMeta->setCollisionRadiusM(0.222); $pokemonMeta->setPokedexWeightKg(6.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setCollisionHeadRadiusM(0.222); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.48); $pokemonMeta->setUniqueId("V0104_POKEMON_CUBONE"); $pokemonMeta->setBaseDefense(165); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(0.8125); $pokemonMeta->setCylHeightM(0.592); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.37); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.32); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SLAP_FAST, PokemonMove::ROCK_SMASH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DIG, PokemonMove::BONE_CLUB, PokemonMove::BULLDOZE, ))); $pokemonMeta->setNumber(104); self::$POKEMON_META[PokemonId::CUBONE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0105_POKEMON_MAROWAK"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CUBONE); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.35); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(144); $pokemonMeta->setDiskRadiusM(0.525); $pokemonMeta->setCollisionRadiusM(0.25); $pokemonMeta->setPokedexWeightKg(45); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setCollisionHeadRadiusM(0.25); $pokemonMeta->setMovementTimerS(14); $pokemonMeta->setJumpTimeS(0.85); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0105_POKEMON_MAROWAK"); $pokemonMeta->setBaseDefense(200); $pokemonMeta->setAttackTimerS(5); $pokemonMeta->setWeightStdDev(5.625); $pokemonMeta->setCylHeightM(1); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.75); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::CUBONE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SLAP_FAST, PokemonMove::ROCK_SMASH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DIG, PokemonMove::EARTHQUAKE, PokemonMove::BONE_CLUB, ))); $pokemonMeta->setNumber(105); self::$POKEMON_META[PokemonId::MAROWAK] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0106_POKEMON_HITMONLEE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_HITMONLEE); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.5); $pokemonMeta->setHeightStdDev(0.1875); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.415); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(224); $pokemonMeta->setDiskRadiusM(0.6225); $pokemonMeta->setCollisionRadiusM(0.415); $pokemonMeta->setPokedexWeightKg(49.8); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIGHTING); $pokemonMeta->setCollisionHeadRadiusM(0.2075); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(0.8); $pokemonMeta->setModelScale(0.83); $pokemonMeta->setUniqueId("V0106_POKEMON_HITMONLEE"); $pokemonMeta->setBaseDefense(211); $pokemonMeta->setAttackTimerS(4); $pokemonMeta->setWeightStdDev(6.225); $pokemonMeta->setCylHeightM(1.245); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.245); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::LOW_KICK_FAST, PokemonMove::ROCK_SMASH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STOMP, PokemonMove::STONE_EDGE, PokemonMove::LOW_SWEEP, ))); $pokemonMeta->setNumber(106); self::$POKEMON_META[PokemonId::HITMONLEE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0107_POKEMON_HITMONCHAN"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_HITMONCHAN); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.4); $pokemonMeta->setHeightStdDev(0.175); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.459); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(193); $pokemonMeta->setDiskRadiusM(0.6885); $pokemonMeta->setCollisionRadiusM(0.3315); $pokemonMeta->setPokedexWeightKg(50.2); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIGHTING); $pokemonMeta->setCollisionHeadRadiusM(0.255); $pokemonMeta->setMovementTimerS(14); $pokemonMeta->setJumpTimeS(1.1); $pokemonMeta->setModelScale(1.02); $pokemonMeta->setUniqueId("V0107_POKEMON_HITMONCHAN"); $pokemonMeta->setBaseDefense(212); $pokemonMeta->setAttackTimerS(5); $pokemonMeta->setWeightStdDev(6.275); $pokemonMeta->setCylHeightM(1.428); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.02); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BULLET_PUNCH_FAST, PokemonMove::ROCK_SMASH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::THUNDER_PUNCH, PokemonMove::FIRE_PUNCH, PokemonMove::BRICK_BREAK, PokemonMove::ICE_PUNCH, ))); $pokemonMeta->setNumber(107); self::$POKEMON_META[PokemonId::HITMONCHAN] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0108_POKEMON_LICKITUNG"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_LICKITUNG); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.2); $pokemonMeta->setHeightStdDev(0.15); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.46); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(108); $pokemonMeta->setDiskRadiusM(0.69); $pokemonMeta->setCollisionRadiusM(0.46); $pokemonMeta->setPokedexWeightKg(65.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.253); $pokemonMeta->setMovementTimerS(23); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(0.92); $pokemonMeta->setUniqueId("V0108_POKEMON_LICKITUNG"); $pokemonMeta->setBaseDefense(137); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(8.1875); $pokemonMeta->setCylHeightM(1.104); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.92); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ZEN_HEADBUTT_FAST, PokemonMove::LICK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STOMP, PokemonMove::POWER_WHIP, PokemonMove::HYPER_BEAM, ))); $pokemonMeta->setNumber(108); self::$POKEMON_META[PokemonId::LICKITUNG] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0109_POKEMON_KOFFING"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_KOFFING); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.6); $pokemonMeta->setHeightStdDev(0.075); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.48); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(119); $pokemonMeta->setDiskRadiusM(0.72); $pokemonMeta->setCollisionRadiusM(0.36); $pokemonMeta->setPokedexWeightKg(1); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setCollisionHeadRadiusM(0.6); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.2); $pokemonMeta->setUniqueId("V0109_POKEMON_KOFFING"); $pokemonMeta->setBaseDefense(164); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(0.125); $pokemonMeta->setCylHeightM(0.72); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.66); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.6); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ACID_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SLUDGE_BOMB, PokemonMove::DARK_PULSE, PokemonMove::SLUDGE, ))); $pokemonMeta->setNumber(109); self::$POKEMON_META[PokemonId::KOFFING] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0110_POKEMON_WEEZING"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_KOFFING); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.2); $pokemonMeta->setHeightStdDev(0.15); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.62); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(174); $pokemonMeta->setDiskRadiusM(0.93); $pokemonMeta->setCollisionRadiusM(0.682); $pokemonMeta->setPokedexWeightKg(9.5); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setCollisionHeadRadiusM(0.465); $pokemonMeta->setMovementTimerS(4); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.24); $pokemonMeta->setUniqueId("V0110_POKEMON_WEEZING"); $pokemonMeta->setBaseDefense(221); $pokemonMeta->setAttackTimerS(11); $pokemonMeta->setWeightStdDev(1.1875); $pokemonMeta->setCylHeightM(0.744); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.744); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::KOFFING); $pokemonMeta->setCylGroundM(0.62); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ACID_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SLUDGE_BOMB, PokemonMove::SHADOW_BALL, PokemonMove::DARK_PULSE, ))); $pokemonMeta->setNumber(110); self::$POKEMON_META[PokemonId::WEEZING] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0111_POKEMON_RHYHORN"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_RHYHORN); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(160); $pokemonMeta->setCylRadiusM(0.5); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(140); $pokemonMeta->setDiskRadiusM(0.75); $pokemonMeta->setCollisionRadiusM(0.5); $pokemonMeta->setPokedexWeightKg(115); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setCollisionHeadRadiusM(0.3); $pokemonMeta->setMovementTimerS(14); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0111_POKEMON_RHYHORN"); $pokemonMeta->setBaseDefense(157); $pokemonMeta->setAttackTimerS(5); $pokemonMeta->setWeightStdDev(14.375); $pokemonMeta->setCylHeightM(0.85); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.85); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SLAP_FAST, PokemonMove::ROCK_SMASH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STOMP, PokemonMove::BULLDOZE, PokemonMove::HORN_ATTACK, ))); $pokemonMeta->setNumber(111); self::$POKEMON_META[PokemonId::RHYHORN] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0112_POKEMON_RHYDON"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_RHYHORN); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setPokedexHeightM(1.9); $pokemonMeta->setHeightStdDev(0.2375); $pokemonMeta->setBaseStamina(210); $pokemonMeta->setCylRadiusM(0.79); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(222); $pokemonMeta->setDiskRadiusM(1.185); $pokemonMeta->setCollisionRadiusM(0.5925); $pokemonMeta->setPokedexWeightKg(120); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setCollisionHeadRadiusM(0.395); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.79); $pokemonMeta->setUniqueId("V0112_POKEMON_RHYDON"); $pokemonMeta->setBaseDefense(206); $pokemonMeta->setAttackTimerS(3); $pokemonMeta->setWeightStdDev(15); $pokemonMeta->setCylHeightM(1.343); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.185); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::RHYHORN); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SLAP_FAST, PokemonMove::ROCK_SMASH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STONE_EDGE, PokemonMove::EARTHQUAKE, PokemonMove::MEGAHORN, ))); $pokemonMeta->setNumber(112); self::$POKEMON_META[PokemonId::RHYDON] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0113_POKEMON_CHANSEY"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CHANSEY); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.1); $pokemonMeta->setHeightStdDev(0.1375); $pokemonMeta->setBaseStamina(500); $pokemonMeta->setCylRadiusM(0.48); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(60); $pokemonMeta->setDiskRadiusM(0.72); $pokemonMeta->setCollisionRadiusM(0.48); $pokemonMeta->setPokedexWeightKg(34.6); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.24); $pokemonMeta->setMovementTimerS(3); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.96); $pokemonMeta->setUniqueId("V0113_POKEMON_CHANSEY"); $pokemonMeta->setBaseDefense(176); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(4.325); $pokemonMeta->setCylHeightM(1.056); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.056); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POUND_FAST, PokemonMove::ZEN_HEADBUTT_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::PSYCHIC, PokemonMove::DAZZLING_GLEAM, PokemonMove::PSYBEAM, ))); $pokemonMeta->setNumber(113); self::$POKEMON_META[PokemonId::CHANSEY] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0114_POKEMON_TANGELA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_TANGELA); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.73); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(183); $pokemonMeta->setDiskRadiusM(1.095); $pokemonMeta->setCollisionRadiusM(0.5); $pokemonMeta->setPokedexWeightKg(35); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.365); $pokemonMeta->setMovementTimerS(4); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0114_POKEMON_TANGELA"); $pokemonMeta->setBaseDefense(205); $pokemonMeta->setAttackTimerS(11); $pokemonMeta->setWeightStdDev(4.375); $pokemonMeta->setCylHeightM(1); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.9); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.32); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::VINE_WHIP_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::POWER_WHIP, PokemonMove::SLUDGE_BOMB, PokemonMove::SOLAR_BEAM, ))); $pokemonMeta->setNumber(114); self::$POKEMON_META[PokemonId::TANGELA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0115_POKEMON_KANGASKHAN"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_KANGASKHAN); $pokemonMeta->setPokemonClass(PokemonClass::VERY_RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(2.2); $pokemonMeta->setHeightStdDev(0.275); $pokemonMeta->setBaseStamina(210); $pokemonMeta->setCylRadiusM(0.576); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(181); $pokemonMeta->setDiskRadiusM(0.864); $pokemonMeta->setCollisionRadiusM(0.504); $pokemonMeta->setPokedexWeightKg(80); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.36); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(0.7); $pokemonMeta->setModelScale(0.72); $pokemonMeta->setUniqueId("V0115_POKEMON_KANGASKHAN"); $pokemonMeta->setBaseDefense(165); $pokemonMeta->setAttackTimerS(4); $pokemonMeta->setWeightStdDev(10); $pokemonMeta->setCylHeightM(1.584); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.26); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SLAP_FAST, PokemonMove::LOW_KICK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STOMP, PokemonMove::EARTHQUAKE, PokemonMove::BRICK_BREAK, ))); $pokemonMeta->setNumber(115); self::$POKEMON_META[PokemonId::KANGASKHAN] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0116_POKEMON_HORSEA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_HORSEA); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.4); $pokemonMeta->setHeightStdDev(0.05); $pokemonMeta->setBaseStamina(60); $pokemonMeta->setCylRadiusM(0.25); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(129); $pokemonMeta->setDiskRadiusM(0.2775); $pokemonMeta->setCollisionRadiusM(0.148); $pokemonMeta->setPokedexWeightKg(8); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.185); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.48); $pokemonMeta->setUniqueId("V0116_POKEMON_HORSEA"); $pokemonMeta->setBaseDefense(125); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(1); $pokemonMeta->setCylHeightM(0.74); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.444); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.185); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::WATER_GUN_FAST, PokemonMove::BUBBLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::FLASH_CANNON, PokemonMove::BUBBLE_BEAM, PokemonMove::DRAGON_PULSE, ))); $pokemonMeta->setNumber(116); self::$POKEMON_META[PokemonId::HORSEA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0117_POKEMON_SEADRA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_HORSEA); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.2); $pokemonMeta->setHeightStdDev(0.15); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.46); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(187); $pokemonMeta->setDiskRadiusM(0.69); $pokemonMeta->setCollisionRadiusM(0.322); $pokemonMeta->setPokedexWeightKg(25); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.414); $pokemonMeta->setMovementTimerS(6); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.92); $pokemonMeta->setUniqueId("V0117_POKEMON_SEADRA"); $pokemonMeta->setBaseDefense(182); $pokemonMeta->setAttackTimerS(17); $pokemonMeta->setWeightStdDev(3.125); $pokemonMeta->setCylHeightM(1.15); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.46); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::HORSEA); $pokemonMeta->setCylGroundM(0.46); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::DRAGON_BREATH_FAST, PokemonMove::WATER_GUN_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::BLIZZARD, PokemonMove::HYDRO_PUMP, PokemonMove::DRAGON_PULSE, ))); $pokemonMeta->setNumber(117); self::$POKEMON_META[PokemonId::SEADRA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0118_POKEMON_GOLDEEN"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_GOLDEEN); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.6); $pokemonMeta->setHeightStdDev(0.075); $pokemonMeta->setBaseStamina(90); $pokemonMeta->setCylRadiusM(0.27); $pokemonMeta->setBaseFleeRate(0.15); $pokemonMeta->setBaseAttack(123); $pokemonMeta->setDiskRadiusM(0.405); $pokemonMeta->setCollisionRadiusM(0.135); $pokemonMeta->setPokedexWeightKg(15); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.16875); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.35); $pokemonMeta->setUniqueId("V0118_POKEMON_GOLDEEN"); $pokemonMeta->setBaseDefense(115); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(1.875); $pokemonMeta->setCylHeightM(0.3375); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.16875); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.3375); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SHOT_FAST, PokemonMove::PECK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::WATER_PULSE, PokemonMove::HORN_ATTACK, PokemonMove::AQUA_TAIL, ))); $pokemonMeta->setNumber(118); self::$POKEMON_META[PokemonId::GOLDEEN] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0119_POKEMON_SEAKING"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_GOLDEEN); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.3); $pokemonMeta->setHeightStdDev(0.1625); $pokemonMeta->setBaseStamina(160); $pokemonMeta->setCylRadiusM(0.396); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(175); $pokemonMeta->setDiskRadiusM(0.594); $pokemonMeta->setCollisionRadiusM(0.044); $pokemonMeta->setPokedexWeightKg(39); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.242); $pokemonMeta->setMovementTimerS(14); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.88); $pokemonMeta->setUniqueId("V0119_POKEMON_SEAKING"); $pokemonMeta->setBaseDefense(154); $pokemonMeta->setAttackTimerS(5); $pokemonMeta->setWeightStdDev(4.875); $pokemonMeta->setCylHeightM(0.748); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.044); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::GOLDEEN); $pokemonMeta->setCylGroundM(0.33); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POISON_JAB_FAST, PokemonMove::PECK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::ICY_WIND, PokemonMove::MEGAHORN, PokemonMove::DRILL_RUN, ))); $pokemonMeta->setNumber(119); self::$POKEMON_META[PokemonId::SEAKING] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0120_POKEMON_STARYU"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_STARYU); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.8); $pokemonMeta->setHeightStdDev(0.1); $pokemonMeta->setBaseStamina(60); $pokemonMeta->setCylRadiusM(0.4125); $pokemonMeta->setBaseFleeRate(0.15); $pokemonMeta->setBaseAttack(137); $pokemonMeta->setDiskRadiusM(0.6188); $pokemonMeta->setCollisionRadiusM(0.4125); $pokemonMeta->setPokedexWeightKg(34.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.20625); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1.35); $pokemonMeta->setModelScale(1.1); $pokemonMeta->setUniqueId("V0120_POKEMON_STARYU"); $pokemonMeta->setBaseDefense(112); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(4.3125); $pokemonMeta->setCylHeightM(0.88000011); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.88000011); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.4); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::WATER_GUN_FAST, PokemonMove::QUICK_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::POWER_GEM, PokemonMove::BUBBLE_BEAM, PokemonMove::SWIFT, ))); $pokemonMeta->setNumber(120); self::$POKEMON_META[PokemonId::STARYU] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0121_POKEMON_STARMIE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_STARYU); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setPokedexHeightM(1.1); $pokemonMeta->setHeightStdDev(0.1375); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.485); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(210); $pokemonMeta->setDiskRadiusM(0.7275); $pokemonMeta->setCollisionRadiusM(0.485); $pokemonMeta->setPokedexWeightKg(80); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.2425); $pokemonMeta->setMovementTimerS(6); $pokemonMeta->setJumpTimeS(1.6); $pokemonMeta->setModelScale(0.97); $pokemonMeta->setUniqueId("V0121_POKEMON_STARMIE"); $pokemonMeta->setBaseDefense(184); $pokemonMeta->setAttackTimerS(17); $pokemonMeta->setWeightStdDev(10); $pokemonMeta->setCylHeightM(1.067); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.067); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::STARYU); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::WATER_GUN_FAST, PokemonMove::QUICK_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::PSYBEAM, PokemonMove::HYDRO_PUMP, PokemonMove::POWER_GEM, ))); $pokemonMeta->setNumber(121); self::$POKEMON_META[PokemonId::STARMIE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0122_POKEMON_MR_MIME"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MR_MIME); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FAIRY); $pokemonMeta->setPokedexHeightM(1.3); $pokemonMeta->setHeightStdDev(0.1625); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.445); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(192); $pokemonMeta->setDiskRadiusM(0.6675); $pokemonMeta->setCollisionRadiusM(0.267); $pokemonMeta->setPokedexWeightKg(54.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setCollisionHeadRadiusM(0.267); $pokemonMeta->setMovementTimerS(5); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.89); $pokemonMeta->setUniqueId("V0122_POKEMON_MR_MIME"); $pokemonMeta->setBaseDefense(233); $pokemonMeta->setAttackTimerS(14); $pokemonMeta->setWeightStdDev(6.8125); $pokemonMeta->setCylHeightM(1.157); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.6675); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.24); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::CONFUSION_FAST, PokemonMove::ZEN_HEADBUTT_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::PSYCHIC, PokemonMove::SHADOW_BALL, PokemonMove::PSYBEAM, ))); $pokemonMeta->setNumber(122); self::$POKEMON_META[PokemonId::MR_MIME] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0123_POKEMON_SCYTHER"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SCYTHER); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.5); $pokemonMeta->setHeightStdDev(0.1875); $pokemonMeta->setBaseStamina(140); $pokemonMeta->setCylRadiusM(0.76); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(218); $pokemonMeta->setDiskRadiusM(1.14); $pokemonMeta->setCollisionRadiusM(0.4); $pokemonMeta->setPokedexWeightKg(56); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.2); $pokemonMeta->setMovementTimerS(14); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.8); $pokemonMeta->setUniqueId("V0123_POKEMON_SCYTHER"); $pokemonMeta->setBaseDefense(170); $pokemonMeta->setAttackTimerS(5); $pokemonMeta->setWeightStdDev(7); $pokemonMeta->setCylHeightM(1.2); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.24); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.4); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::STEEL_WING_FAST, PokemonMove::FURY_CUTTER_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::BUG_BUZZ, PokemonMove::X_SCISSOR, PokemonMove::NIGHT_SLASH, ))); $pokemonMeta->setNumber(123); self::$POKEMON_META[PokemonId::SCYTHER] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0124_POKEMON_JYNX"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_JYNX); $pokemonMeta->setPokemonClass(PokemonClass::COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setPokedexHeightM(1.4); $pokemonMeta->setHeightStdDev(0.175); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.6525); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(223); $pokemonMeta->setDiskRadiusM(0.9788); $pokemonMeta->setCollisionRadiusM(0.435); $pokemonMeta->setPokedexWeightKg(40.6); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ICE); $pokemonMeta->setCollisionHeadRadiusM(0.522); $pokemonMeta->setMovementTimerS(4); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(0.87); $pokemonMeta->setUniqueId("V0124_POKEMON_JYNX"); $pokemonMeta->setBaseDefense(182); $pokemonMeta->setAttackTimerS(11); $pokemonMeta->setWeightStdDev(5.075); $pokemonMeta->setCylHeightM(1.218); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.87); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.24); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POUND_FAST, PokemonMove::FROST_BREATH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::PSYSHOCK, PokemonMove::DRAINING_KISS, PokemonMove::ICE_PUNCH, ))); $pokemonMeta->setNumber(124); self::$POKEMON_META[PokemonId::JYNX] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0125_POKEMON_ELECTABUZZ"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ELECTABUZZ); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.1); $pokemonMeta->setHeightStdDev(0.1375); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.5635); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(198); $pokemonMeta->setDiskRadiusM(0.8453); $pokemonMeta->setCollisionRadiusM(0.392); $pokemonMeta->setPokedexWeightKg(30); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setCollisionHeadRadiusM(0.28175); $pokemonMeta->setMovementTimerS(6); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.98); $pokemonMeta->setUniqueId("V0125_POKEMON_ELECTABUZZ"); $pokemonMeta->setBaseDefense(173); $pokemonMeta->setAttackTimerS(17); $pokemonMeta->setWeightStdDev(3.75); $pokemonMeta->setCylHeightM(0.98); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.735); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.24); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::LOW_KICK_FAST, PokemonMove::THUNDER_SHOCK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::THUNDER_PUNCH, PokemonMove::THUNDER, PokemonMove::THUNDERBOLT, ))); $pokemonMeta->setNumber(125); self::$POKEMON_META[PokemonId::ELECTABUZZ] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0126_POKEMON_MAGMAR"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MAGMAR); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.3); $pokemonMeta->setHeightStdDev(0.1625); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.66); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(206); $pokemonMeta->setDiskRadiusM(0.99); $pokemonMeta->setCollisionRadiusM(0.44); $pokemonMeta->setPokedexWeightKg(44.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.33); $pokemonMeta->setMovementTimerS(14); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(0.88); $pokemonMeta->setUniqueId("V0126_POKEMON_MAGMAR"); $pokemonMeta->setBaseDefense(169); $pokemonMeta->setAttackTimerS(5); $pokemonMeta->setWeightStdDev(5.5625); $pokemonMeta->setCylHeightM(1.144); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.88); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.24); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::KARATE_CHOP_FAST, PokemonMove::EMBER_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::FIRE_PUNCH, PokemonMove::FLAMETHROWER, PokemonMove::FIRE_BLAST, ))); $pokemonMeta->setNumber(126); self::$POKEMON_META[PokemonId::MAGMAR] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0127_POKEMON_PINSIR"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PINSIR); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.5); $pokemonMeta->setHeightStdDev(0.1875); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.348); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(232); $pokemonMeta->setDiskRadiusM(0.522); $pokemonMeta->setCollisionRadiusM(0.348); $pokemonMeta->setPokedexWeightKg(55); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.348); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(0.87); $pokemonMeta->setUniqueId("V0127_POKEMON_PINSIR"); $pokemonMeta->setBaseDefense(197); $pokemonMeta->setAttackTimerS(3); $pokemonMeta->setWeightStdDev(6.875); $pokemonMeta->setCylHeightM(1.131); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.87); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.24); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::FURY_CUTTER_FAST, PokemonMove::ROCK_SMASH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::SUBMISSION, PokemonMove::X_SCISSOR, PokemonMove::VICE_GRIP, ))); $pokemonMeta->setNumber(127); self::$POKEMON_META[PokemonId::PINSIR] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0128_POKEMON_TAUROS"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_TAUROS); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.4); $pokemonMeta->setHeightStdDev(0.175); $pokemonMeta->setBaseStamina(150); $pokemonMeta->setCylRadiusM(0.5742); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(198); $pokemonMeta->setDiskRadiusM(0.8613); $pokemonMeta->setCollisionRadiusM(0.435); $pokemonMeta->setPokedexWeightKg(88.4); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.2871); $pokemonMeta->setMovementTimerS(4); $pokemonMeta->setJumpTimeS(1.2); $pokemonMeta->setModelScale(0.87); $pokemonMeta->setUniqueId("V0128_POKEMON_TAUROS"); $pokemonMeta->setBaseDefense(197); $pokemonMeta->setAttackTimerS(11); $pokemonMeta->setWeightStdDev(11.05); $pokemonMeta->setCylHeightM(1.19625); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.19625); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.24); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ZEN_HEADBUTT_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::IRON_HEAD, PokemonMove::EARTHQUAKE, PokemonMove::HORN_ATTACK, ))); $pokemonMeta->setNumber(128); self::$POKEMON_META[PokemonId::TAUROS] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0129_POKEMON_MAGIKARP"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MAGIKARP); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.9); $pokemonMeta->setHeightStdDev(0.1125); $pokemonMeta->setBaseStamina(40); $pokemonMeta->setCylRadiusM(0.428); $pokemonMeta->setBaseFleeRate(0.15); $pokemonMeta->setBaseAttack(29); $pokemonMeta->setDiskRadiusM(0.642); $pokemonMeta->setCollisionRadiusM(0.2675); $pokemonMeta->setPokedexWeightKg(10); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.321); $pokemonMeta->setMovementTimerS(3600); $pokemonMeta->setJumpTimeS(1.3); $pokemonMeta->setModelScale(1.07); $pokemonMeta->setUniqueId("V0129_POKEMON_MAGIKARP"); $pokemonMeta->setBaseDefense(102); $pokemonMeta->setAttackTimerS(3600); $pokemonMeta->setWeightStdDev(1.25); $pokemonMeta->setCylHeightM(0.535); $pokemonMeta->setCandyToEvolve(400); $pokemonMeta->setCollisionHeightM(0.4815); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.56); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::SPLASH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(129); self::$POKEMON_META[PokemonId::MAGIKARP] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0130_POKEMON_GYARADOS"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MAGIKARP); $pokemonMeta->setPokemonClass(PokemonClass::EPIC); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(6.5); $pokemonMeta->setHeightStdDev(0.8125); $pokemonMeta->setBaseStamina(190); $pokemonMeta->setCylRadiusM(0.48); $pokemonMeta->setBaseFleeRate(0.07); $pokemonMeta->setBaseAttack(237); $pokemonMeta->setDiskRadiusM(0.72); $pokemonMeta->setCollisionRadiusM(0.24); $pokemonMeta->setPokedexWeightKg(235); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.36); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.48); $pokemonMeta->setUniqueId("V0130_POKEMON_GYARADOS"); $pokemonMeta->setBaseDefense(197); $pokemonMeta->setAttackTimerS(3); $pokemonMeta->setWeightStdDev(29.375); $pokemonMeta->setCylHeightM(1.2); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.48); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.08); $pokemonMeta->setParentId(PokemonId::MAGIKARP); $pokemonMeta->setCylGroundM(0.48); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BITE_FAST, PokemonMove::DRAGON_BREATH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::TWISTER, PokemonMove::HYDRO_PUMP, PokemonMove::DRAGON_PULSE, ))); $pokemonMeta->setNumber(130); self::$POKEMON_META[PokemonId::GYARADOS] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0131_POKEMON_LAPRAS"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_LAPRAS); $pokemonMeta->setPokemonClass(PokemonClass::VERY_RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_ICE); $pokemonMeta->setPokedexHeightM(2.5); $pokemonMeta->setHeightStdDev(0.3125); $pokemonMeta->setBaseStamina(260); $pokemonMeta->setCylRadiusM(0.7); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(186); $pokemonMeta->setDiskRadiusM(1.05); $pokemonMeta->setCollisionRadiusM(0.525); $pokemonMeta->setPokedexWeightKg(220); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.35); $pokemonMeta->setMovementTimerS(3); $pokemonMeta->setJumpTimeS(1.2); $pokemonMeta->setModelScale(0.7); $pokemonMeta->setUniqueId("V0131_POKEMON_LAPRAS"); $pokemonMeta->setBaseDefense(190); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(27.5); $pokemonMeta->setCylHeightM(1.75); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.7); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ICE_SHARD_FAST, PokemonMove::FROST_BREATH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::BLIZZARD, PokemonMove::ICE_BEAM, PokemonMove::DRAGON_PULSE, ))); $pokemonMeta->setNumber(131); self::$POKEMON_META[PokemonId::LAPRAS] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0132_POKEMON_DITTO"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_DITTO); $pokemonMeta->setPokemonClass(PokemonClass::EPIC); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.3); $pokemonMeta->setHeightStdDev(0.0375); $pokemonMeta->setBaseStamina(96); $pokemonMeta->setCylRadiusM(0.4025); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(91); $pokemonMeta->setDiskRadiusM(0.6038); $pokemonMeta->setCollisionRadiusM(0.4025); $pokemonMeta->setPokedexWeightKg(4); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.20125); $pokemonMeta->setMovementTimerS(3600); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.61); $pokemonMeta->setUniqueId("V0132_POKEMON_DITTO"); $pokemonMeta->setBaseDefense(91); $pokemonMeta->setAttackTimerS(3600); $pokemonMeta->setWeightStdDev(0.5); $pokemonMeta->setCylHeightM(0.52325); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.52325); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POUND_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(132); self::$POKEMON_META[PokemonId::DITTO] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0133_POKEMON_EEVEE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_EEVEE); $pokemonMeta->setPokemonClass(PokemonClass::VERY_COMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.3); $pokemonMeta->setHeightStdDev(0.0375); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.42); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(104); $pokemonMeta->setDiskRadiusM(0.63); $pokemonMeta->setCollisionRadiusM(0.252); $pokemonMeta->setPokedexWeightKg(6.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.252); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(1.35); $pokemonMeta->setModelScale(1.68); $pokemonMeta->setUniqueId("V0133_POKEMON_EEVEE"); $pokemonMeta->setBaseDefense(121); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(0.8125); $pokemonMeta->setCylHeightM(0.504); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.336); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.32); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, PokemonMove::QUICK_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DIG, PokemonMove::SWIFT, PokemonMove::BODY_SLAM, ))); $pokemonMeta->setNumber(133); self::$POKEMON_META[PokemonId::EEVEE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0134_POKEMON_VAPOREON"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_EEVEE); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(260); $pokemonMeta->setCylRadiusM(0.3465); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(205); $pokemonMeta->setDiskRadiusM(0.5198); $pokemonMeta->setCollisionRadiusM(0.21); $pokemonMeta->setPokedexWeightKg(29); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.2625); $pokemonMeta->setMovementTimerS(3); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.05); $pokemonMeta->setUniqueId("V0134_POKEMON_VAPOREON"); $pokemonMeta->setBaseDefense(177); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(3.625); $pokemonMeta->setCylHeightM(0.94499987); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.525); $pokemonMeta->setShoulderModeScale(0.4); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::EEVEE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::WATER_GUN_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::WATER_PULSE, PokemonMove::HYDRO_PUMP, PokemonMove::AQUA_TAIL, ))); $pokemonMeta->setNumber(134); self::$POKEMON_META[PokemonId::VAPOREON] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0135_POKEMON_JOLTEON"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_EEVEE); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.8); $pokemonMeta->setHeightStdDev(0.1); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.33); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(232); $pokemonMeta->setDiskRadiusM(0.495); $pokemonMeta->setCollisionRadiusM(0.22); $pokemonMeta->setPokedexWeightKg(24.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setCollisionHeadRadiusM(0.22); $pokemonMeta->setMovementTimerS(4); $pokemonMeta->setJumpTimeS(1.3); $pokemonMeta->setModelScale(1.1); $pokemonMeta->setUniqueId("V0135_POKEMON_JOLTEON"); $pokemonMeta->setBaseDefense(201); $pokemonMeta->setAttackTimerS(11); $pokemonMeta->setWeightStdDev(3.0625); $pokemonMeta->setCylHeightM(0.88000011); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.55); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::EEVEE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::THUNDER_SHOCK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::THUNDER, PokemonMove::THUNDERBOLT, PokemonMove::DISCHARGE, ))); $pokemonMeta->setNumber(135); self::$POKEMON_META[PokemonId::JOLTEON] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0136_POKEMON_FLAREON"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_EEVEE); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.9); $pokemonMeta->setHeightStdDev(0.1125); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.3045); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(246); $pokemonMeta->setDiskRadiusM(0.4568); $pokemonMeta->setCollisionRadiusM(0.2175); $pokemonMeta->setPokedexWeightKg(25); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.19575); $pokemonMeta->setMovementTimerS(3); $pokemonMeta->setJumpTimeS(1.35); $pokemonMeta->setModelScale(0.87); $pokemonMeta->setUniqueId("V0136_POKEMON_FLAREON"); $pokemonMeta->setBaseDefense(204); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(3.125); $pokemonMeta->setCylHeightM(0.783); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.522); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::EEVEE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::EMBER_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::FLAMETHROWER, PokemonMove::HEAT_WAVE, PokemonMove::FIRE_BLAST, ))); $pokemonMeta->setNumber(136); self::$POKEMON_META[PokemonId::FLAREON] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0137_POKEMON_PORYGON"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PORYGON); $pokemonMeta->setPokemonClass(PokemonClass::EPIC); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.8); $pokemonMeta->setHeightStdDev(0.1); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.55); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(153); $pokemonMeta->setDiskRadiusM(0.825); $pokemonMeta->setCollisionRadiusM(0.385); $pokemonMeta->setPokedexWeightKg(36.5); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.33); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.1); $pokemonMeta->setUniqueId("V0137_POKEMON_PORYGON"); $pokemonMeta->setBaseDefense(139); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(4.5625); $pokemonMeta->setCylHeightM(0.93500012); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.55); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.32); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.55); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, PokemonMove::QUICK_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DISCHARGE, PokemonMove::PSYBEAM, PokemonMove::SIGNAL_BEAM, ))); $pokemonMeta->setNumber(137); self::$POKEMON_META[PokemonId::PORYGON] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0138_POKEMON_OMANYTE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_OMANYTE); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setPokedexHeightM(0.4); $pokemonMeta->setHeightStdDev(0.05); $pokemonMeta->setBaseStamina(70); $pokemonMeta->setCylRadiusM(0.222); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(155); $pokemonMeta->setDiskRadiusM(0.333); $pokemonMeta->setCollisionRadiusM(0.222); $pokemonMeta->setPokedexWeightKg(7.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setCollisionHeadRadiusM(0.111); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1.3); $pokemonMeta->setModelScale(1.48); $pokemonMeta->setUniqueId("V0138_POKEMON_OMANYTE"); $pokemonMeta->setBaseDefense(174); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(0.9375); $pokemonMeta->setCylHeightM(0.592); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.592); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.32); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SHOT_FAST, PokemonMove::WATER_GUN_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::ROCK_TOMB, PokemonMove::ANCIENT_POWER, PokemonMove::BRINE, ))); $pokemonMeta->setNumber(138); self::$POKEMON_META[PokemonId::OMANYTE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0139_POKEMON_OMASTAR"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_OMANYTE); $pokemonMeta->setPokemonClass(PokemonClass::VERY_RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setPokedexHeightM(1); $pokemonMeta->setHeightStdDev(0.125); $pokemonMeta->setBaseStamina(140); $pokemonMeta->setCylRadiusM(0.375); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(207); $pokemonMeta->setDiskRadiusM(0.5625); $pokemonMeta->setCollisionRadiusM(0.25); $pokemonMeta->setPokedexWeightKg(35); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setCollisionHeadRadiusM(0.1875); $pokemonMeta->setMovementTimerS(3); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0139_POKEMON_OMASTAR"); $pokemonMeta->setBaseDefense(227); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(4.375); $pokemonMeta->setCylHeightM(1); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.9); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::OMANYTE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ROCK_THROW_FAST, PokemonMove::WATER_GUN_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::HYDRO_PUMP, PokemonMove::ANCIENT_POWER, PokemonMove::ROCK_SLIDE, ))); $pokemonMeta->setNumber(139); self::$POKEMON_META[PokemonId::OMASTAR] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0140_POKEMON_KABUTO"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_KABUTO); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setPokedexHeightM(0.5); $pokemonMeta->setHeightStdDev(0.0625); $pokemonMeta->setBaseStamina(60); $pokemonMeta->setCylRadiusM(0.3375); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(148); $pokemonMeta->setDiskRadiusM(0.5063); $pokemonMeta->setCollisionRadiusM(0.3375); $pokemonMeta->setPokedexWeightKg(11.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setCollisionHeadRadiusM(0.16875); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(0.9); $pokemonMeta->setModelScale(1.35); $pokemonMeta->setUniqueId("V0140_POKEMON_KABUTO"); $pokemonMeta->setBaseDefense(162); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(1.4375); $pokemonMeta->setCylHeightM(0.50625); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.50625); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.32); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SHOT_FAST, PokemonMove::SCRATCH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::ANCIENT_POWER, PokemonMove::AQUA_JET, PokemonMove::ROCK_TOMB, ))); $pokemonMeta->setNumber(140); self::$POKEMON_META[PokemonId::KABUTO] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0141_POKEMON_KABUTOPS"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_KABUTO); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setPokedexHeightM(1.3); $pokemonMeta->setHeightStdDev(0.1625); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.455); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(220); $pokemonMeta->setDiskRadiusM(0.6825); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(40.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.91); $pokemonMeta->setUniqueId("V0141_POKEMON_KABUTOPS"); $pokemonMeta->setBaseDefense(203); $pokemonMeta->setAttackTimerS(4); $pokemonMeta->setWeightStdDev(5.0625); $pokemonMeta->setCylHeightM(1.1375); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::KABUTO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::MUD_SHOT_FAST, PokemonMove::FURY_CUTTER_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STONE_EDGE, PokemonMove::WATER_PULSE, PokemonMove::ANCIENT_POWER, ))); $pokemonMeta->setNumber(141); self::$POKEMON_META[PokemonId::KABUTOPS] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0142_POKEMON_AERODACTYL"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_AERODACTYL); $pokemonMeta->setPokemonClass(PokemonClass::VERY_RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.8); $pokemonMeta->setHeightStdDev(0.225); $pokemonMeta->setBaseStamina(160); $pokemonMeta->setCylRadiusM(0.399); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(221); $pokemonMeta->setDiskRadiusM(0.5985); $pokemonMeta->setCollisionRadiusM(0.285); $pokemonMeta->setPokedexWeightKg(59); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setCollisionHeadRadiusM(0.285); $pokemonMeta->setMovementTimerS(5); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.57); $pokemonMeta->setUniqueId("V0142_POKEMON_AERODACTYL"); $pokemonMeta->setBaseDefense(164); $pokemonMeta->setAttackTimerS(14); $pokemonMeta->setWeightStdDev(7.375); $pokemonMeta->setCylHeightM(0.9975); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.9975); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.855); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BITE_FAST, PokemonMove::STEEL_WING_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::IRON_HEAD, PokemonMove::HYPER_BEAM, PokemonMove::ANCIENT_POWER, ))); $pokemonMeta->setNumber(142); self::$POKEMON_META[PokemonId::AERODACTYL] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0143_POKEMON_SNORLAX"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SNORLAX); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(2.1); $pokemonMeta->setHeightStdDev(0.2625); $pokemonMeta->setBaseStamina(320); $pokemonMeta->setCylRadiusM(0.74); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(190); $pokemonMeta->setDiskRadiusM(1.11); $pokemonMeta->setCollisionRadiusM(0.74); $pokemonMeta->setPokedexWeightKg(460); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.481); $pokemonMeta->setMovementTimerS(3); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.74); $pokemonMeta->setUniqueId("V0143_POKEMON_SNORLAX"); $pokemonMeta->setBaseDefense(190); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(57.5); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.11); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.16); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ZEN_HEADBUTT_FAST, PokemonMove::LICK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::EARTHQUAKE, PokemonMove::HYPER_BEAM, PokemonMove::BODY_SLAM, ))); $pokemonMeta->setNumber(143); self::$POKEMON_META[PokemonId::SNORLAX] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0144_POKEMON_ARTICUNO"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ARTICUNO); $pokemonMeta->setPokemonClass(PokemonClass::LEGENDARY); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.7); $pokemonMeta->setHeightStdDev(0.2125); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.396); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(192); $pokemonMeta->setDiskRadiusM(0.594); $pokemonMeta->setCollisionRadiusM(0.231); $pokemonMeta->setPokedexWeightKg(55.4); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ICE); $pokemonMeta->setCollisionHeadRadiusM(0.231); $pokemonMeta->setMovementTimerS(3); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.66); $pokemonMeta->setUniqueId("V0144_POKEMON_ARTICUNO"); $pokemonMeta->setBaseDefense(249); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(6.925); $pokemonMeta->setCylHeightM(0.99); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.66); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.66); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::FROST_BREATH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::ICY_WIND, PokemonMove::BLIZZARD, PokemonMove::ICE_BEAM, ))); $pokemonMeta->setNumber(144); self::$POKEMON_META[PokemonId::ARTICUNO] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0145_POKEMON_ZAPDOS"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ZAPDOS); $pokemonMeta->setPokemonClass(PokemonClass::LEGENDARY); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.6); $pokemonMeta->setHeightStdDev(0.2); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.5175); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(253); $pokemonMeta->setDiskRadiusM(0.7763); $pokemonMeta->setCollisionRadiusM(0.4485); $pokemonMeta->setPokedexWeightKg(52.6); $pokemonMeta->setMovementType(MovementType::ELECTRIC); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setCollisionHeadRadiusM(0.276); $pokemonMeta->setMovementTimerS(3); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.69); $pokemonMeta->setUniqueId("V0145_POKEMON_ZAPDOS"); $pokemonMeta->setBaseDefense(188); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(6.575); $pokemonMeta->setCylHeightM(1.035); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.759); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.8625); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::THUNDER_SHOCK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::THUNDER, PokemonMove::THUNDERBOLT, PokemonMove::DISCHARGE, ))); $pokemonMeta->setNumber(145); self::$POKEMON_META[PokemonId::ZAPDOS] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0146_POKEMON_MOLTRES"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MOLTRES); $pokemonMeta->setPokemonClass(PokemonClass::LEGENDARY); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(2); $pokemonMeta->setHeightStdDev(0.25); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.62); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(251); $pokemonMeta->setDiskRadiusM(0.93); $pokemonMeta->setCollisionRadiusM(0.403); $pokemonMeta->setPokedexWeightKg(60); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.217); $pokemonMeta->setMovementTimerS(3); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.62); $pokemonMeta->setUniqueId("V0146_POKEMON_MOLTRES"); $pokemonMeta->setBaseDefense(184); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(7.5); $pokemonMeta->setCylHeightM(1.395); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.93); $pokemonMeta->setShoulderModeScale(0.25); $pokemonMeta->setBaseCaptureRate(0.00); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.93); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::EMBER_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::FLAMETHROWER, PokemonMove::HEAT_WAVE, PokemonMove::FIRE_BLAST, ))); $pokemonMeta->setNumber(146); self::$POKEMON_META[PokemonId::MOLTRES] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0147_POKEMON_DRATINI"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_DRATINI); $pokemonMeta->setPokemonClass(PokemonClass::UNCOMMON); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.8); $pokemonMeta->setHeightStdDev(0.225); $pokemonMeta->setBaseStamina(82); $pokemonMeta->setCylRadiusM(0.2775); $pokemonMeta->setBaseFleeRate(0.09); $pokemonMeta->setBaseAttack(119); $pokemonMeta->setDiskRadiusM(0.4163); $pokemonMeta->setCollisionRadiusM(0.2775); $pokemonMeta->setPokedexWeightKg(3.3); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_DRAGON); $pokemonMeta->setCollisionHeadRadiusM(0.19425); $pokemonMeta->setMovementTimerS(10); $pokemonMeta->setJumpTimeS(0.85); $pokemonMeta->setModelScale(1.11); $pokemonMeta->setUniqueId("V0147_POKEMON_DRATINI"); $pokemonMeta->setBaseDefense(94); $pokemonMeta->setAttackTimerS(29); $pokemonMeta->setWeightStdDev(0.4125); $pokemonMeta->setCylHeightM(0.8325); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.555); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.32); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::DRAGON_BREATH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::TWISTER, PokemonMove::WRAP, PokemonMove::AQUA_TAIL, ))); $pokemonMeta->setNumber(147); self::$POKEMON_META[PokemonId::DRATINI] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0148_POKEMON_DRAGONAIR"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_DRATINI); $pokemonMeta->setPokemonClass(PokemonClass::RARE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(4); $pokemonMeta->setHeightStdDev(0.5); $pokemonMeta->setBaseStamina(122); $pokemonMeta->setCylRadiusM(0.5625); $pokemonMeta->setBaseFleeRate(0.06); $pokemonMeta->setBaseAttack(163); $pokemonMeta->setDiskRadiusM(0.8438); $pokemonMeta->setCollisionRadiusM(0.375); $pokemonMeta->setPokedexWeightKg(16.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_DRAGON); $pokemonMeta->setCollisionHeadRadiusM(0.28125); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1.25); $pokemonMeta->setModelScale(0.75); $pokemonMeta->setUniqueId("V0148_POKEMON_DRAGONAIR"); $pokemonMeta->setBaseDefense(138); $pokemonMeta->setAttackTimerS(23); $pokemonMeta->setWeightStdDev(2.0625); $pokemonMeta->setCylHeightM(1.5); $pokemonMeta->setCandyToEvolve(100); $pokemonMeta->setCollisionHeightM(1.125); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.08); $pokemonMeta->setParentId(PokemonId::DRATINI); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::DRAGON_BREATH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::WRAP, PokemonMove::AQUA_TAIL, PokemonMove::DRAGON_PULSE, ))); $pokemonMeta->setNumber(148); self::$POKEMON_META[PokemonId::DRAGONAIR] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0149_POKEMON_DRAGONITE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_DRATINI); $pokemonMeta->setPokemonClass(PokemonClass::EPIC); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(2.2); $pokemonMeta->setHeightStdDev(0.275); $pokemonMeta->setBaseStamina(182); $pokemonMeta->setCylRadiusM(0.42); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(263); $pokemonMeta->setDiskRadiusM(0.63); $pokemonMeta->setCollisionRadiusM(0.42); $pokemonMeta->setPokedexWeightKg(210); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_DRAGON); $pokemonMeta->setCollisionHeadRadiusM(0.245); $pokemonMeta->setMovementTimerS(3); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.7); $pokemonMeta->setUniqueId("V0149_POKEMON_DRAGONITE"); $pokemonMeta->setBaseDefense(201); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(26.25); $pokemonMeta->setCylHeightM(1.47); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.05); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.04); $pokemonMeta->setParentId(PokemonId::DRAGONAIR); $pokemonMeta->setCylGroundM(0.595); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::STEEL_WING_FAST, PokemonMove::DRAGON_BREATH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::DRAGON_CLAW, PokemonMove::HYPER_BEAM, PokemonMove::DRAGON_PULSE, ))); $pokemonMeta->setNumber(149); self::$POKEMON_META[PokemonId::DRAGONITE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0150_POKEMON_MEWTWO"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MEWTWO); $pokemonMeta->setPokemonClass(PokemonClass::LEGENDARY); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(2); $pokemonMeta->setHeightStdDev(0.25); $pokemonMeta->setBaseStamina(212); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(330); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.37); $pokemonMeta->setPokedexWeightKg(122); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setCollisionHeadRadiusM(0.185); $pokemonMeta->setMovementTimerS(8); $pokemonMeta->setJumpTimeS(1.2); $pokemonMeta->setModelScale(0.74); $pokemonMeta->setUniqueId("V0150_POKEMON_MEWTWO"); $pokemonMeta->setBaseDefense(200); $pokemonMeta->setAttackTimerS(3); $pokemonMeta->setWeightStdDev(15.25); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(1.184); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::CONFUSION_FAST, PokemonMove::PSYCHO_CUT_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::PSYCHIC, PokemonMove::SHADOW_BALL, PokemonMove::HYPER_BEAM, ))); $pokemonMeta->setNumber(150); self::$POKEMON_META[PokemonId::MEWTWO] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0151_POKEMON_MEW"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MEWTWO); $pokemonMeta->setPokemonClass(PokemonClass::MYTHIC); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.4); $pokemonMeta->setHeightStdDev(0.05); $pokemonMeta->setBaseStamina(200); $pokemonMeta->setCylRadiusM(0.282); $pokemonMeta->setBaseFleeRate(0.1); $pokemonMeta->setBaseAttack(210); $pokemonMeta->setDiskRadiusM(0.423); $pokemonMeta->setCollisionRadiusM(0.141); $pokemonMeta->setPokedexWeightKg(4); $pokemonMeta->setMovementType(MovementType::PSYCHIC); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setCollisionHeadRadiusM(0.17625); $pokemonMeta->setMovementTimerS(3); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.41); $pokemonMeta->setUniqueId("V0151_POKEMON_MEW"); $pokemonMeta->setBaseDefense(210); $pokemonMeta->setAttackTimerS(8); $pokemonMeta->setWeightStdDev(0.5); $pokemonMeta->setCylHeightM(0.7755); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.564); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.0705); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POUND_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::MOONBLAST, PokemonMove::FIRE_BLAST, PokemonMove::SOLAR_BEAM, PokemonMove::HYPER_BEAM, PokemonMove::PSYCHIC, PokemonMove::HURRICANE, PokemonMove::EARTHQUAKE, PokemonMove::DRAGON_PULSE, PokemonMove::THUNDER, ))); $pokemonMeta->setNumber(151); self::$POKEMON_META[PokemonId::MEW] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0152_POKEMON_CHIKORITA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CHIKORITA); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.89); $pokemonMeta->setHeightStdDev(0.11125); $pokemonMeta->setBaseStamina(90); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(92); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(6.4); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.11); $pokemonMeta->setUniqueId("V0152_POKEMON_CHIKORITA"); $pokemonMeta->setBaseDefense(122); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.8); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.32); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::RAZOR_LEAF_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(152); self::$POKEMON_META[PokemonId::CHIKORITA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0153_POKEMON_BAYLEEF"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CHIKORITA); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.19); $pokemonMeta->setHeightStdDev(0.14875); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(122); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(15.8); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.75); $pokemonMeta->setUniqueId("V0153_POKEMON_BAYLEEF"); $pokemonMeta->setBaseDefense(155); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(1.975); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(100); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.25); $pokemonMeta->setParentId(PokemonId::CHIKORITA); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::RAZOR_LEAF_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(153); self::$POKEMON_META[PokemonId::BAYLEEF] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0154_POKEMON_MEGANIUM"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CHIKORITA); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.8); $pokemonMeta->setHeightStdDev(0.225); $pokemonMeta->setBaseStamina(160); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(168); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(100.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(0.7); $pokemonMeta->setUniqueId("V0154_POKEMON_MEGANIUM"); $pokemonMeta->setBaseDefense(202); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(12.5625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(0); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::BAYLEEF); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::RAZOR_LEAF_FAST, PokemonMove::VINE_WHIP_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(154); self::$POKEMON_META[PokemonId::MEGANIUM] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0155_POKEMON_CYNDAQUIL"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CYNDAQUIL); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.51); $pokemonMeta->setHeightStdDev(0.06375); $pokemonMeta->setBaseStamina(78); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(116); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(7.9); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0155_POKEMON_CYNDAQUIL"); $pokemonMeta->setBaseDefense(96); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.9875); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::EMBER_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(155); self::$POKEMON_META[PokemonId::CYNDAQUIL] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0156_POKEMON_QUILAVA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CYNDAQUIL); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.89); $pokemonMeta->setHeightStdDev(0.11125); $pokemonMeta->setBaseStamina(116); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(158); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(19); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0156_POKEMON_QUILAVA"); $pokemonMeta->setBaseDefense(129); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(2.375); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::CYNDAQUIL); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::EMBER_FAST, PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(156); self::$POKEMON_META[PokemonId::QUILAVA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0157_POKEMON_TYPHLOSION"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CYNDAQUIL); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.7); $pokemonMeta->setHeightStdDev(0.2125); $pokemonMeta->setBaseStamina(156); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(223); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(79.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0157_POKEMON_TYPHLOSION"); $pokemonMeta->setBaseDefense(176); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(9.9375); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::QUILAVA); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::EMBER_FAST, PokemonMove::SHADOW_CLAW_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(157); self::$POKEMON_META[PokemonId::TYPHLOSION] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0158_POKEMON_TOTODILE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_TOTODILE); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.61); $pokemonMeta->setHeightStdDev(0.07625); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(117); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(9.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0158_POKEMON_TOTODILE"); $pokemonMeta->setBaseDefense(116); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(1.1875); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::WATER_GUN_FAST, PokemonMove::SCRATCH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(158); self::$POKEMON_META[PokemonId::TOTODILE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0159_POKEMON_CROCONAW"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_TOTODILE); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.09); $pokemonMeta->setHeightStdDev(0.13625); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(150); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(25); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0159_POKEMON_CROCONAW"); $pokemonMeta->setBaseDefense(151); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(3.125); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::TOTODILE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::WATER_GUN_FAST, PokemonMove::SCRATCH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(159); self::$POKEMON_META[PokemonId::CROCONAW] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0160_POKEMON_FERALIGATR"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_TOTODILE); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(2.31); $pokemonMeta->setHeightStdDev(0.28875); $pokemonMeta->setBaseStamina(170); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(205); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(88.8); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0160_POKEMON_FERALIGATR"); $pokemonMeta->setBaseDefense(197); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(11.1); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::CROCONAW); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::WATER_GUN_FAST, PokemonMove::BITE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(160); self::$POKEMON_META[PokemonId::FERALIGATR] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0161_POKEMON_SENTRET"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SENTRET); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.79); $pokemonMeta->setHeightStdDev(0.09875); $pokemonMeta->setBaseStamina(70); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(79); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(6); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0161_POKEMON_SENTRET"); $pokemonMeta->setBaseDefense(77); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.75); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::SCRATCH_FAST, PokemonMove::QUICK_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(161); self::$POKEMON_META[PokemonId::SENTRET] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0162_POKEMON_FURRET"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SENTRET); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.8); $pokemonMeta->setHeightStdDev(0.225); $pokemonMeta->setBaseStamina(170); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(148); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(32.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0162_POKEMON_FURRET"); $pokemonMeta->setBaseDefense(130); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(4.0625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::SENTRET); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::QUICK_ATTACK_FAST, PokemonMove::SUCKER_PUNCH_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(162); self::$POKEMON_META[PokemonId::FURRET] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0163_POKEMON_HOOTHOOT"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_HOOTHOOT); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(0.71); $pokemonMeta->setHeightStdDev(0.08875); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(67); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(21.2); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0163_POKEMON_HOOTHOOT"); $pokemonMeta->setBaseDefense(101); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(2.65); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, PokemonMove::PECK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(163); self::$POKEMON_META[PokemonId::HOOTHOOT] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0164_POKEMON_NOCTOWL"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_HOOTHOOT); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.6); $pokemonMeta->setHeightStdDev(0.2); $pokemonMeta->setBaseStamina(200); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(145); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(40.8); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0164_POKEMON_NOCTOWL"); $pokemonMeta->setBaseDefense(179); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(5.1); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::HOOTHOOT); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, PokemonMove::PECK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(164); self::$POKEMON_META[PokemonId::NOCTOWL] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0165_POKEMON_LEDYBA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_LEDYBA); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(0.99); $pokemonMeta->setHeightStdDev(0.12375); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(72); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(10.8); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0165_POKEMON_LEDYBA"); $pokemonMeta->setBaseDefense(142); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(1.35); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, PokemonMove::BUG_BITE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(165); self::$POKEMON_META[PokemonId::LEDYBA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0166_POKEMON_LEDIAN"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_LEDYBA); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.4); $pokemonMeta->setHeightStdDev(0.175); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(107); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(35.6); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0166_POKEMON_LEDIAN"); $pokemonMeta->setBaseDefense(209); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(4.45); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::LEDYBA); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, PokemonMove::BUG_BITE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(166); self::$POKEMON_META[PokemonId::LEDIAN] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0167_POKEMON_SPINARAK"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SPINARAK); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(0.51); $pokemonMeta->setHeightStdDev(0.06375); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(105); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(8.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0167_POKEMON_SPINARAK"); $pokemonMeta->setBaseDefense(73); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(1.0625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POISON_STING_FAST, PokemonMove::BUG_BITE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(167); self::$POKEMON_META[PokemonId::SPINARAK] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0168_POKEMON_ARIADOS"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SPINARAK); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(1.09); $pokemonMeta->setHeightStdDev(0.13625); $pokemonMeta->setBaseStamina(140); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(161); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(33.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0168_POKEMON_ARIADOS"); $pokemonMeta->setBaseDefense(128); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(4.1875); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::SPINARAK); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POISON_STING_FAST, PokemonMove::BUG_BITE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(168); self::$POKEMON_META[PokemonId::ARIADOS] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0169_POKEMON_CROBAT"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ZUBAT); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.8); $pokemonMeta->setHeightStdDev(0.225); $pokemonMeta->setBaseStamina(170); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(194); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(75); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0169_POKEMON_CROBAT"); $pokemonMeta->setBaseDefense(178); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(9.375); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::GOLBAT); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::WING_ATTACK_FAST, PokemonMove::BITE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(169); self::$POKEMON_META[PokemonId::CROBAT] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0170_POKEMON_CHINCHOU"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CHINCHOU); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setPokedexHeightM(0.51); $pokemonMeta->setHeightStdDev(0.06375); $pokemonMeta->setBaseStamina(150); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(106); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(12); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0170_POKEMON_CHINCHOU"); $pokemonMeta->setBaseDefense(106); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(1.5); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::BUBBLE_FAST, PokemonMove::SPARK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(170); self::$POKEMON_META[PokemonId::CHINCHOU] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0171_POKEMON_LANTURN"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CHINCHOU); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setPokedexHeightM(1.19); $pokemonMeta->setHeightStdDev(0.14875); $pokemonMeta->setBaseStamina(250); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(146); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(22.5); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0171_POKEMON_LANTURN"); $pokemonMeta->setBaseDefense(146); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(2.8125); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::CHINCHOU); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::WATER_GUN_FAST, PokemonMove::SPARK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(171); self::$POKEMON_META[PokemonId::LANTURN] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0172_POKEMON_PICHU"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PIKACHU); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.3); $pokemonMeta->setHeightStdDev(0.0375); $pokemonMeta->setBaseStamina(40); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(77); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.185); $pokemonMeta->setPokedexWeightKg(2); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setCollisionHeadRadiusM(0.185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.76); $pokemonMeta->setUniqueId("V0172_POKEMON_PICHU"); $pokemonMeta->setBaseDefense(63); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.25); $pokemonMeta->setCylHeightM(0.65); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.42); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::THUNDER_SHOCK_FAST, PokemonMove::QUICK_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::THUNDERBOLT, PokemonMove::DISARMING_VOICE, PokemonMove::THUNDER_PUNCH, ))); $pokemonMeta->setNumber(172); self::$POKEMON_META[PokemonId::PICHU] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0173_POKEMON_CLEFFA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CLEFAIRY); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.3); $pokemonMeta->setHeightStdDev(0.0375); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.45); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(75); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.2); $pokemonMeta->setPokedexWeightKg(3); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FAIRY); $pokemonMeta->setCollisionHeadRadiusM(0.215); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(0.9); $pokemonMeta->setModelScale(2); $pokemonMeta->setUniqueId("V0173_POKEMON_CLEFFA"); $pokemonMeta->setBaseDefense(91); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.375); $pokemonMeta->setCylHeightM(0.65); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.52); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POUND_FAST, PokemonMove::ZEN_HEADBUTT_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::BODY_SLAM, PokemonMove::PSYCHIC, PokemonMove::SIGNAL_BEAM, ))); $pokemonMeta->setNumber(173); self::$POKEMON_META[PokemonId::CLEFFA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0174_POKEMON_IGGLYBUFF"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_JIGGLYPUFF); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FAIRY); $pokemonMeta->setPokedexHeightM(0.3); $pokemonMeta->setHeightStdDev(0.0375); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.4); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(69); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.2); $pokemonMeta->setPokedexWeightKg(1); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.45); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(0.2); $pokemonMeta->setModelScale(1.88); $pokemonMeta->setUniqueId("V0174_POKEMON_IGGLYBUFF"); $pokemonMeta->setBaseDefense(34); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.125); $pokemonMeta->setCylHeightM(0.74); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.42); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0.4); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::POUND_FAST, PokemonMove::FEINT_ATTACK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::BODY_SLAM, PokemonMove::SHADOW_BALL, PokemonMove::PSYCHIC, ))); $pokemonMeta->setNumber(174); self::$POKEMON_META[PokemonId::IGGLYBUFF] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0175_POKEMON_TOGEPI"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_TOGEPI); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.3); $pokemonMeta->setHeightStdDev(0.0375); $pokemonMeta->setBaseStamina(70); $pokemonMeta->setCylRadiusM(0.4); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(67); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.2); $pokemonMeta->setPokedexWeightKg(1.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FAIRY); $pokemonMeta->setCollisionHeadRadiusM(0.185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(0.8); $pokemonMeta->setModelScale(2); $pokemonMeta->setUniqueId("V0175_POKEMON_TOGEPI"); $pokemonMeta->setBaseDefense(116); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.1875); $pokemonMeta->setCylHeightM(0.65); $pokemonMeta->setCandyToEvolve(50); $pokemonMeta->setCollisionHeightM(0.45); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ZEN_HEADBUTT_FAST, PokemonMove::PECK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::ANCIENT_POWER, PokemonMove::PSYSHOCK, PokemonMove::DAZZLING_GLEAM, ))); $pokemonMeta->setNumber(175); self::$POKEMON_META[PokemonId::TOGEPI] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0176_POKEMON_TOGETIC"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_TOGEPI); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(0.61); $pokemonMeta->setHeightStdDev(0.07625); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.45); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(139); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.2); $pokemonMeta->setPokedexWeightKg(3.2); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FAIRY); $pokemonMeta->setCollisionHeadRadiusM(0.185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(0.2); $pokemonMeta->setModelScale(1.33); $pokemonMeta->setUniqueId("V0176_POKEMON_TOGETIC"); $pokemonMeta->setBaseDefense(191); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.4); $pokemonMeta->setCylHeightM(0.8); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.7); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::TOGEPI); $pokemonMeta->setCylGroundM(0.4); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ZEN_HEADBUTT_FAST, PokemonMove::STEEL_WING_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::ANCIENT_POWER, PokemonMove::DAZZLING_GLEAM, PokemonMove::AERIAL_ACE, ))); $pokemonMeta->setNumber(176); self::$POKEMON_META[PokemonId::TOGETIC] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0177_POKEMON_NATU"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_NATU); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(0.2); $pokemonMeta->setHeightStdDev(0.025); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(134); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(2); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0177_POKEMON_NATU"); $pokemonMeta->setBaseDefense(89); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.25); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::PECK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(177); self::$POKEMON_META[PokemonId::NATU] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0178_POKEMON_XATU"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_NATU); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.5); $pokemonMeta->setHeightStdDev(0.1875); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(192); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(15); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0178_POKEMON_XATU"); $pokemonMeta->setBaseDefense(146); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(1.875); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::NATU); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(178); self::$POKEMON_META[PokemonId::XATU] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0179_POKEMON_MAREEP"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MAREEP); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.61); $pokemonMeta->setHeightStdDev(0.07625); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(114); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(7.8); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0179_POKEMON_MAREEP"); $pokemonMeta->setBaseDefense(82); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.975); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(179); self::$POKEMON_META[PokemonId::MAREEP] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0180_POKEMON_FLAAFFY"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MAREEP); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.79); $pokemonMeta->setHeightStdDev(0.09875); $pokemonMeta->setBaseStamina(140); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(145); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(13.3); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0180_POKEMON_FLAAFFY"); $pokemonMeta->setBaseDefense(112); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(1.6625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MAREEP); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(180); self::$POKEMON_META[PokemonId::FLAAFFY] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0181_POKEMON_AMPHAROS"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MAREEP); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.4); $pokemonMeta->setHeightStdDev(0.175); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(211); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(61.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0181_POKEMON_AMPHAROS"); $pokemonMeta->setBaseDefense(172); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(7.6875); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::FLAAFFY); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(181); self::$POKEMON_META[PokemonId::AMPHAROS] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0182_POKEMON_BELLOSSOM"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ODDISH); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.41); $pokemonMeta->setHeightStdDev(0.05125); $pokemonMeta->setBaseStamina(150); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(169); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(5.8); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0182_POKEMON_BELLOSSOM"); $pokemonMeta->setBaseDefense(189); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.725); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::GLOOM); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(182); self::$POKEMON_META[PokemonId::BELLOSSOM] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0183_POKEMON_MARILL"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MARILL); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FAIRY); $pokemonMeta->setPokedexHeightM(0.41); $pokemonMeta->setHeightStdDev(0.05125); $pokemonMeta->setBaseStamina(140); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(37); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(8.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0183_POKEMON_MARILL"); $pokemonMeta->setBaseDefense(93); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(1.0625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(183); self::$POKEMON_META[PokemonId::MARILL] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0184_POKEMON_AZUMARILL"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MARILL); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FAIRY); $pokemonMeta->setPokedexHeightM(0.79); $pokemonMeta->setHeightStdDev(0.09875); $pokemonMeta->setBaseStamina(200); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(112); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(28.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0184_POKEMON_AZUMARILL"); $pokemonMeta->setBaseDefense(152); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(3.5625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MARILL); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(184); self::$POKEMON_META[PokemonId::AZUMARILL] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0185_POKEMON_SUDOWOODO"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SUDOWOODO); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.19); $pokemonMeta->setHeightStdDev(0.14875); $pokemonMeta->setBaseStamina(140); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(167); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(38); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0185_POKEMON_SUDOWOODO"); $pokemonMeta->setBaseDefense(198); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(4.75); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(185); self::$POKEMON_META[PokemonId::SUDOWOODO] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0186_POKEMON_POLITOED"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_POLIWAG); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(10.9); $pokemonMeta->setHeightStdDev(1.3625); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(174); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(33.9); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0186_POKEMON_POLITOED"); $pokemonMeta->setBaseDefense(192); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(4.2375); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::POLIWHIRL); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(186); self::$POKEMON_META[PokemonId::POLITOED] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0187_POKEMON_HOPPIP"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_HOPPIP); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(0.41); $pokemonMeta->setHeightStdDev(0.05125); $pokemonMeta->setBaseStamina(70); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(67); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(0.5); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0187_POKEMON_HOPPIP"); $pokemonMeta->setBaseDefense(101); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.0625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::SKIPLOOM); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(187); self::$POKEMON_META[PokemonId::HOPPIP] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0188_POKEMON_SKIPLOOM"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_HOPPIP); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(0.61); $pokemonMeta->setHeightStdDev(0.07625); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(91); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(1); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0188_POKEMON_SKIPLOOM"); $pokemonMeta->setBaseDefense(127); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.125); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::JUMPLUFF); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(188); self::$POKEMON_META[PokemonId::SKIPLOOM] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0189_POKEMON_JUMPLUFF"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_HOPPIP); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(0.79); $pokemonMeta->setHeightStdDev(0.09875); $pokemonMeta->setBaseStamina(150); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(118); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(3); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0189_POKEMON_JUMPLUFF"); $pokemonMeta->setBaseDefense(197); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.375); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(189); self::$POKEMON_META[PokemonId::JUMPLUFF] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0190_POKEMON_AIPOM"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_AIPOM); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.79); $pokemonMeta->setHeightStdDev(0.09875); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(136); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(11.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0190_POKEMON_AIPOM"); $pokemonMeta->setBaseDefense(112); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(1.4375); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(190); self::$POKEMON_META[PokemonId::AIPOM] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0191_POKEMON_SUNKERN"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SUNKERN); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.3); $pokemonMeta->setHeightStdDev(0.0375); $pokemonMeta->setBaseStamina(60); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(55); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(1.8); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0191_POKEMON_SUNKERN"); $pokemonMeta->setBaseDefense(55); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.225); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::SUNFLORA); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(191); self::$POKEMON_META[PokemonId::SUNKERN] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0192_POKEMON_SUNFLORA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SUNKERN); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.79); $pokemonMeta->setHeightStdDev(0.09875); $pokemonMeta->setBaseStamina(150); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(185); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(8.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0192_POKEMON_SUNFLORA"); $pokemonMeta->setBaseDefense(148); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(1.0625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(192); self::$POKEMON_META[PokemonId::SUNFLORA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0193_POKEMON_YANMA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_YANMA); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.19); $pokemonMeta->setHeightStdDev(0.14875); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(154); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(38); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0193_POKEMON_YANMA"); $pokemonMeta->setBaseDefense(94); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(4.75); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(193); self::$POKEMON_META[PokemonId::YANMA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0194_POKEMON_WOOPER"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_WOOPER); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setPokedexHeightM(0.41); $pokemonMeta->setHeightStdDev(0.05125); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(75); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(8.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0194_POKEMON_WOOPER"); $pokemonMeta->setBaseDefense(75); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(1.0625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::QUAGSIRE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(194); self::$POKEMON_META[PokemonId::WOOPER] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0195_POKEMON_QUAGSIRE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_WOOPER); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setPokedexHeightM(1.4); $pokemonMeta->setHeightStdDev(0.175); $pokemonMeta->setBaseStamina(190); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(152); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(75); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0195_POKEMON_QUAGSIRE"); $pokemonMeta->setBaseDefense(152); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(9.375); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(195); self::$POKEMON_META[PokemonId::QUAGSIRE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0196_POKEMON_ESPEON"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_EEVEE); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.89); $pokemonMeta->setHeightStdDev(0.11125); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.4); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(261); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.2525); $pokemonMeta->setPokedexWeightKg(26.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setCollisionHeadRadiusM(0.185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1.1); $pokemonMeta->setModelScale(1.25); $pokemonMeta->setUniqueId("V0196_POKEMON_ESPEON"); $pokemonMeta->setBaseDefense(194); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(3.3125); $pokemonMeta->setCylHeightM(1); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.9); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::EEVEE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::CONFUSION_FAST, PokemonMove::ZEN_HEADBUTT_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(196); self::$POKEMON_META[PokemonId::ESPEON] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0197_POKEMON_UMBREON"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_EEVEE); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.99); $pokemonMeta->setHeightStdDev(0.12375); $pokemonMeta->setBaseStamina(190); $pokemonMeta->setCylRadiusM(0.4); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(126); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.2525); $pokemonMeta->setPokedexWeightKg(27); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_DARK); $pokemonMeta->setCollisionHeadRadiusM(0.185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1.1); $pokemonMeta->setModelScale(1.01); $pokemonMeta->setUniqueId("V0197_POKEMON_UMBREON"); $pokemonMeta->setBaseDefense(250); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(3.375); $pokemonMeta->setCylHeightM(0.85); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.8); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::EEVEE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::FEINT_ATTACK_FAST, PokemonMove::BITE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(197); self::$POKEMON_META[PokemonId::UMBREON] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0198_POKEMON_MURKROW"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MURKROW); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(0.51); $pokemonMeta->setHeightStdDev(0.06375); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(175); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(2.1); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_DARK); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0198_POKEMON_MURKROW"); $pokemonMeta->setBaseDefense(87); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.2625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(198); self::$POKEMON_META[PokemonId::MURKROW] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0199_POKEMON_SLOWKING"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SLOWPOKE); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setPokedexHeightM(2.01); $pokemonMeta->setHeightStdDev(0.25125); $pokemonMeta->setBaseStamina(190); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(177); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(79.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0199_POKEMON_SLOWKING"); $pokemonMeta->setBaseDefense(194); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(9.9375); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::SLOWPOKE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(199); self::$POKEMON_META[PokemonId::SLOWKING] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0200_POKEMON_MISDREAVUS"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MISDREAVUS); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.71); $pokemonMeta->setHeightStdDev(0.08875); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(167); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(1); $pokemonMeta->setMovementType(MovementType::PSYCHIC); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GHOST); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0200_POKEMON_MISDREAVUS"); $pokemonMeta->setBaseDefense(167); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.125); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(200); self::$POKEMON_META[PokemonId::MISDREAVUS] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0201_POKEMON_UNOWN"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_UNOWN); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.51); $pokemonMeta->setHeightStdDev(0.06375); $pokemonMeta->setBaseStamina(96); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(136); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(5); $pokemonMeta->setMovementType(MovementType::PSYCHIC); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0201_POKEMON_UNOWN"); $pokemonMeta->setBaseDefense(91); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(201); self::$POKEMON_META[PokemonId::UNOWN] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0202_POKEMON_WOBBUFFET"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_WOBBUFFET); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.3); $pokemonMeta->setHeightStdDev(0.1625); $pokemonMeta->setBaseStamina(380); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(60); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(28.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0202_POKEMON_WOBBUFFET"); $pokemonMeta->setBaseDefense(106); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(3.5625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(202); self::$POKEMON_META[PokemonId::WOBBUFFET] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0203_POKEMON_GIRAFARIG"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_GIRAFARIG); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setPokedexHeightM(1.5); $pokemonMeta->setHeightStdDev(0.1875); $pokemonMeta->setBaseStamina(140); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(182); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(41.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0203_POKEMON_GIRAFARIG"); $pokemonMeta->setBaseDefense(133); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(5.1875); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(203); self::$POKEMON_META[PokemonId::GIRAFARIG] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0204_POKEMON_PINECO"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PINECO); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.61); $pokemonMeta->setHeightStdDev(0.07625); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(108); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(7.2); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0204_POKEMON_PINECO"); $pokemonMeta->setBaseDefense(146); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.9); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(204); self::$POKEMON_META[PokemonId::PINECO] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0205_POKEMON_FORRETRESS"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PINECO); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_STEEL); $pokemonMeta->setPokedexHeightM(1.19); $pokemonMeta->setHeightStdDev(0.14875); $pokemonMeta->setBaseStamina(150); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(161); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(125.8); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0205_POKEMON_FORRETRESS"); $pokemonMeta->setBaseDefense(242); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(15.725); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::PINECO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(205); self::$POKEMON_META[PokemonId::FORRETRESS] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0206_POKEMON_DUNSPARCE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_DUNSPARCE); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.5); $pokemonMeta->setHeightStdDev(0.1875); $pokemonMeta->setBaseStamina(200); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(131); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(14); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0206_POKEMON_DUNSPARCE"); $pokemonMeta->setBaseDefense(131); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(1.75); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(206); self::$POKEMON_META[PokemonId::DUNSPARCE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0207_POKEMON_GLIGAR"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_GLIGAR); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.09); $pokemonMeta->setHeightStdDev(0.13625); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(143); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(64.8); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0207_POKEMON_GLIGAR"); $pokemonMeta->setBaseDefense(204); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(8.1); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(207); self::$POKEMON_META[PokemonId::GLIGAR] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0208_POKEMON_STEELIX"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ONIX); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setPokedexHeightM(9.19); $pokemonMeta->setHeightStdDev(1.14875); $pokemonMeta->setBaseStamina(150); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(148); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(400); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_STEEL); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0208_POKEMON_STEELIX"); $pokemonMeta->setBaseDefense(333); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(50); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::ONIX); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(208); self::$POKEMON_META[PokemonId::STEELIX] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0209_POKEMON_SNUBBULL"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SNUBBULL); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.61); $pokemonMeta->setHeightStdDev(0.07625); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(137); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(7.8); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FAIRY); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0209_POKEMON_SNUBBULL"); $pokemonMeta->setBaseDefense(89); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.975); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(209); self::$POKEMON_META[PokemonId::SNUBBULL] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0210_POKEMON_GRANBULL"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SNUBBULL); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.4); $pokemonMeta->setHeightStdDev(0.175); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(212); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(48.7); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FAIRY); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0210_POKEMON_GRANBULL"); $pokemonMeta->setBaseDefense(137); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(6.0875); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::SNUBBULL); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(210); self::$POKEMON_META[PokemonId::GRANBULL] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0211_POKEMON_QWILFISH"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_QWILFISH); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_POISON); $pokemonMeta->setPokedexHeightM(0.51); $pokemonMeta->setHeightStdDev(0.06375); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(184); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(3.9); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0211_POKEMON_QWILFISH"); $pokemonMeta->setBaseDefense(148); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.4875); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(211); self::$POKEMON_META[PokemonId::QWILFISH] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0212_POKEMON_SCIZOR"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SCYTHER); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_STEEL); $pokemonMeta->setPokedexHeightM(2.01); $pokemonMeta->setHeightStdDev(0.25125); $pokemonMeta->setBaseStamina(140); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(236); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(125); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0212_POKEMON_SCIZOR"); $pokemonMeta->setBaseDefense(191); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(15.625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::SCYTHER); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(212); self::$POKEMON_META[PokemonId::SCIZOR] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0213_POKEMON_SHUCKLE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SHUCKLE); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setPokedexHeightM(0.61); $pokemonMeta->setHeightStdDev(0.07625); $pokemonMeta->setBaseStamina(40); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(17); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(20.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0213_POKEMON_SHUCKLE"); $pokemonMeta->setBaseDefense(396); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(2.5625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(213); self::$POKEMON_META[PokemonId::SHUCKLE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0214_POKEMON_HERACROSS"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_HERACROSS); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FIGHTING); $pokemonMeta->setPokedexHeightM(1.5); $pokemonMeta->setHeightStdDev(0.1875); $pokemonMeta->setBaseStamina(160); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(234); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(54); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_BUG); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0214_POKEMON_HERACROSS"); $pokemonMeta->setBaseDefense(189); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(6.75); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(214); self::$POKEMON_META[PokemonId::HERACROSS] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0215_POKEMON_SNEASEL"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SNEASEL); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_ICE); $pokemonMeta->setPokedexHeightM(0.89); $pokemonMeta->setHeightStdDev(0.11125); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(189); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(28); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_DARK); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0215_POKEMON_SNEASEL"); $pokemonMeta->setBaseDefense(157); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(3.5); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(215); self::$POKEMON_META[PokemonId::SNEASEL] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0216_POKEMON_TEDDIURSA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_TEDDIURSA); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.61); $pokemonMeta->setHeightStdDev(0.07625); $pokemonMeta->setBaseStamina(120); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(142); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(8.8); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0216_POKEMON_TEDDIURSA"); $pokemonMeta->setBaseDefense(93); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(1.1); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(216); self::$POKEMON_META[PokemonId::TEDDIURSA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0217_POKEMON_URSARING"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_TEDDIURSA); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.8); $pokemonMeta->setHeightStdDev(0.225); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(236); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(125.8); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0217_POKEMON_URSARING"); $pokemonMeta->setBaseDefense(144); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(15.725); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::TEDDIURSA); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(217); self::$POKEMON_META[PokemonId::URSARING] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0218_POKEMON_SLUGMA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SLUGMA); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.71); $pokemonMeta->setHeightStdDev(0.08875); $pokemonMeta->setBaseStamina(80); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(118); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(35); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0218_POKEMON_SLUGMA"); $pokemonMeta->setBaseDefense(71); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(4.375); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(218); self::$POKEMON_META[PokemonId::SLUGMA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0219_POKEMON_MAGCARGO"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SLUGMA); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setPokedexHeightM(0.79); $pokemonMeta->setHeightStdDev(0.09875); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(139); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(55); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0219_POKEMON_MAGCARGO"); $pokemonMeta->setBaseDefense(209); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(6.875); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::SLUGMA); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(219); self::$POKEMON_META[PokemonId::MAGCARGO] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0220_POKEMON_SWINUB"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SWINUB); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setPokedexHeightM(0.41); $pokemonMeta->setHeightStdDev(0.05125); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(90); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(6.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ICE); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0220_POKEMON_SWINUB"); $pokemonMeta->setBaseDefense(74); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.8125); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(220); self::$POKEMON_META[PokemonId::SWINUB] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0221_POKEMON_PILOSWINE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SWINUB); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setPokedexHeightM(1.09); $pokemonMeta->setHeightStdDev(0.13625); $pokemonMeta->setBaseStamina(200); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(181); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(55.8); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ICE); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0221_POKEMON_PILOSWINE"); $pokemonMeta->setBaseDefense(147); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(6.975); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::SWINUB); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(221); self::$POKEMON_META[PokemonId::PILOSWINE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0222_POKEMON_CORSOLA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CORSOLA); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setPokedexHeightM(0.61); $pokemonMeta->setHeightStdDev(0.07625); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(118); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0222_POKEMON_CORSOLA"); $pokemonMeta->setBaseDefense(156); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(222); self::$POKEMON_META[PokemonId::CORSOLA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0223_POKEMON_REMORAID"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_REMORAID); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.61); $pokemonMeta->setHeightStdDev(0.07625); $pokemonMeta->setBaseStamina(70); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(127); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(12); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0223_POKEMON_REMORAID"); $pokemonMeta->setBaseDefense(69); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(1.5); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(223); self::$POKEMON_META[PokemonId::REMORAID] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0224_POKEMON_OCTILLERY"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_REMORAID); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.89); $pokemonMeta->setHeightStdDev(0.11125); $pokemonMeta->setBaseStamina(150); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(197); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(28.5); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0224_POKEMON_OCTILLERY"); $pokemonMeta->setBaseDefense(141); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(3.5625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::REMORAID); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(224); self::$POKEMON_META[PokemonId::OCTILLERY] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0225_POKEMON_DELIBIRD"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_DELIBIRD); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(0.89); $pokemonMeta->setHeightStdDev(0.11125); $pokemonMeta->setBaseStamina(90); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(128); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(16); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ICE); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0225_POKEMON_DELIBIRD"); $pokemonMeta->setBaseDefense(90); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(2); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(225); self::$POKEMON_META[PokemonId::DELIBIRD] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0226_POKEMON_MANTINE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MANTINE); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(2.11); $pokemonMeta->setHeightStdDev(0.26375); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(148); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(220); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0226_POKEMON_MANTINE"); $pokemonMeta->setBaseDefense(260); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(27.5); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(226); self::$POKEMON_META[PokemonId::MANTINE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0227_POKEMON_SKARMORY"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SKARMORY); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(1.7); $pokemonMeta->setHeightStdDev(0.2125); $pokemonMeta->setBaseStamina(130); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(148); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(50.5); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_STEEL); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0227_POKEMON_SKARMORY"); $pokemonMeta->setBaseDefense(260); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(6.3125); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(227); self::$POKEMON_META[PokemonId::SKARMORY] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0228_POKEMON_HOUNDOUR"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_HOUNDOUR); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setPokedexHeightM(0.61); $pokemonMeta->setHeightStdDev(0.07625); $pokemonMeta->setBaseStamina(90); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(152); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(10.8); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_DARK); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0228_POKEMON_HOUNDOUR"); $pokemonMeta->setBaseDefense(93); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(1.35); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(228); self::$POKEMON_META[PokemonId::HOUNDOUR] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0229_POKEMON_HOUNDOOM"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_HOUNDOUR); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setPokedexHeightM(1.4); $pokemonMeta->setHeightStdDev(0.175); $pokemonMeta->setBaseStamina(150); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(224); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(35); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_DARK); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0229_POKEMON_HOUNDOOM"); $pokemonMeta->setBaseDefense(159); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(4.375); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::HOUNDOUR); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(229); self::$POKEMON_META[PokemonId::HOUNDOOM] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0230_POKEMON_KINGDRA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_HORSEA); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_DRAGON); $pokemonMeta->setPokedexHeightM(1.8); $pokemonMeta->setHeightStdDev(0.225); $pokemonMeta->setBaseStamina(150); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(194); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(152); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0230_POKEMON_KINGDRA"); $pokemonMeta->setBaseDefense(194); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(19); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(230); self::$POKEMON_META[PokemonId::KINGDRA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0231_POKEMON_PHANPY"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PHANPY); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.51); $pokemonMeta->setHeightStdDev(0.06375); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(107); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(33.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0231_POKEMON_PHANPY"); $pokemonMeta->setBaseDefense(107); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(4.1875); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(231); self::$POKEMON_META[PokemonId::PHANPY] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0232_POKEMON_DONPHAN"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PHANPY); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.09); $pokemonMeta->setHeightStdDev(0.13625); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(214); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(120); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0232_POKEMON_DONPHAN"); $pokemonMeta->setBaseDefense(214); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(15); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::PHANPY); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(232); self::$POKEMON_META[PokemonId::DONPHAN] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0233_POKEMON_PORYGON2"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_PORYGON); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.61); $pokemonMeta->setHeightStdDev(0.07625); $pokemonMeta->setBaseStamina(170); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(198); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(32.5); $pokemonMeta->setMovementType(MovementType::HOVERING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0233_POKEMON_PORYGON2"); $pokemonMeta->setBaseDefense(183); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(4.0625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::PORYGON); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(233); self::$POKEMON_META[PokemonId::PORYGON2] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0234_POKEMON_STANTLER"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_STANTLER); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.4); $pokemonMeta->setHeightStdDev(0.175); $pokemonMeta->setBaseStamina(146); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(192); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(71.2); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0234_POKEMON_STANTLER"); $pokemonMeta->setBaseDefense(132); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(8.9); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(234); self::$POKEMON_META[PokemonId::STANTLER] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0235_POKEMON_SMEARGLE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SMEARGLE); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.19); $pokemonMeta->setHeightStdDev(0.14875); $pokemonMeta->setBaseStamina(110); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(40); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(58); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0235_POKEMON_SMEARGLE"); $pokemonMeta->setBaseDefense(88); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(7.25); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(235); self::$POKEMON_META[PokemonId::SMEARGLE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0236_POKEMON_TYROGUE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_TYROGUE); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.71); $pokemonMeta->setHeightStdDev(0.08875); $pokemonMeta->setBaseStamina(70); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(64); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.2); $pokemonMeta->setPokedexWeightKg(21); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIGHTING); $pokemonMeta->setCollisionHeadRadiusM(0.185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1.1); $pokemonMeta->setModelScale(1.23); $pokemonMeta->setUniqueId("V0236_POKEMON_TYROGUE"); $pokemonMeta->setBaseDefense(64); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(2.625); $pokemonMeta->setCylHeightM(0.85); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.75); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::ROCK_SMASH_FAST, PokemonMove::LOW_KICK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::BRICK_BREAK, PokemonMove::BODY_SLAM, PokemonMove::LOW_SWEEP, ))); $pokemonMeta->setNumber(236); self::$POKEMON_META[PokemonId::TYROGUE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0237_POKEMON_HITMONTOP"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_TYROGUE); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.4); $pokemonMeta->setHeightStdDev(0.175); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(173); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(48); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIGHTING); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0237_POKEMON_HITMONTOP"); $pokemonMeta->setBaseDefense(214); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(6); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::TYROGUE); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(237); self::$POKEMON_META[PokemonId::HITMONTOP] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0238_POKEMON_SMOOCHUM"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_JYNX); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setPokedexHeightM(0.41); $pokemonMeta->setHeightStdDev(0.05125); $pokemonMeta->setBaseStamina(90); $pokemonMeta->setCylRadiusM(0.4); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(153); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.35); $pokemonMeta->setPokedexWeightKg(6); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ICE); $pokemonMeta->setCollisionHeadRadiusM(0.215); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1.52); $pokemonMeta->setUniqueId("V0238_POKEMON_SMOOCHUM"); $pokemonMeta->setBaseDefense(116); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.75); $pokemonMeta->setCylHeightM(0.075); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.6); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::FROST_BREATH_FAST, PokemonMove::POUND_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::ICE_BEAM, PokemonMove::ICE_PUNCH, PokemonMove::PSYSHOCK, ))); $pokemonMeta->setNumber(238); self::$POKEMON_META[PokemonId::SMOOCHUM] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0239_POKEMON_ELEKID"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ELECTABUZZ); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.61); $pokemonMeta->setHeightStdDev(0.07625); $pokemonMeta->setBaseStamina(90); $pokemonMeta->setCylRadiusM(0.4); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(135); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.3); $pokemonMeta->setPokedexWeightKg(23.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setCollisionHeadRadiusM(0.215); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1.1); $pokemonMeta->setModelScale(1.33); $pokemonMeta->setUniqueId("V0239_POKEMON_ELEKID"); $pokemonMeta->setBaseDefense(110); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(2.9375); $pokemonMeta->setCylHeightM(0.85); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.6); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::THUNDER_SHOCK_FAST, PokemonMove::LOW_KICK_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::THUNDER_PUNCH, PokemonMove::THUNDERBOLT, PokemonMove::DISCHARGE, ))); $pokemonMeta->setNumber(239); self::$POKEMON_META[PokemonId::ELEKID] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0240_POKEMON_MAGBY"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MAGMAR); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(0.71); $pokemonMeta->setHeightStdDev(0.08875); $pokemonMeta->setBaseStamina(90); $pokemonMeta->setCylRadiusM(0.4); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(151); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.35); $pokemonMeta->setPokedexWeightKg(21.4); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.215); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1.1); $pokemonMeta->setModelScale(1.23); $pokemonMeta->setUniqueId("V0240_POKEMON_MAGBY"); $pokemonMeta->setBaseDefense(108); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(2.675); $pokemonMeta->setCylHeightM(0.9); $pokemonMeta->setCandyToEvolve(25); $pokemonMeta->setCollisionHeightM(0.9); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::EMBER_FAST, PokemonMove::KARATE_CHOP_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::BRICK_BREAK, PokemonMove::FIRE_PUNCH, PokemonMove::FLAMETHROWER, ))); $pokemonMeta->setNumber(240); self::$POKEMON_META[PokemonId::MAGBY] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0241_POKEMON_MILTANK"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_MILTANK); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.19); $pokemonMeta->setHeightStdDev(0.14875); $pokemonMeta->setBaseStamina(190); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(157); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(75.5); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0241_POKEMON_MILTANK"); $pokemonMeta->setBaseDefense(211); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(9.4375); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(241); self::$POKEMON_META[PokemonId::MILTANK] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0242_POKEMON_BLISSEY"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CHANSEY); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.5); $pokemonMeta->setHeightStdDev(0.1875); $pokemonMeta->setBaseStamina(510); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(129); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(46.8); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_NORMAL); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0242_POKEMON_BLISSEY"); $pokemonMeta->setBaseDefense(229); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(5.85); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::CHANSEY); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(242); self::$POKEMON_META[PokemonId::BLISSEY] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0243_POKEMON_RAIKOU"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_RAIKOU); $pokemonMeta->setPokemonClass(PokemonClass::LEGENDARY); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(1.91); $pokemonMeta->setHeightStdDev(0.23875); $pokemonMeta->setBaseStamina(180); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(241); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(178); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ELECTRIC); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0243_POKEMON_RAIKOU"); $pokemonMeta->setBaseDefense(210); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(22.25); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(243); self::$POKEMON_META[PokemonId::RAIKOU] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0244_POKEMON_ENTEI"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_ENTEI); $pokemonMeta->setPokemonClass(PokemonClass::LEGENDARY); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(2.11); $pokemonMeta->setHeightStdDev(0.26375); $pokemonMeta->setBaseStamina(230); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(235); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(198); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0244_POKEMON_ENTEI"); $pokemonMeta->setBaseDefense(176); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(24.75); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(244); self::$POKEMON_META[PokemonId::ENTEI] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0245_POKEMON_SUICUNE"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_SUICUNE); $pokemonMeta->setPokemonClass(PokemonClass::LEGENDARY); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_NONE); $pokemonMeta->setPokedexHeightM(2.01); $pokemonMeta->setHeightStdDev(0.25125); $pokemonMeta->setBaseStamina(200); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(180); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(187); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_WATER); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0245_POKEMON_SUICUNE"); $pokemonMeta->setBaseDefense(235); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(23.375); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(245); self::$POKEMON_META[PokemonId::SUICUNE] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0246_POKEMON_LARVITAR"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_LARVITAR); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setPokedexHeightM(0.61); $pokemonMeta->setHeightStdDev(0.07625); $pokemonMeta->setBaseStamina(100); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(115); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(72); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0246_POKEMON_LARVITAR"); $pokemonMeta->setBaseDefense(93); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(9); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(246); self::$POKEMON_META[PokemonId::LARVITAR] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0247_POKEMON_PUPITAR"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_LARVITAR); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_GROUND); $pokemonMeta->setPokedexHeightM(1.19); $pokemonMeta->setHeightStdDev(0.14875); $pokemonMeta->setBaseStamina(140); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(155); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(152); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0247_POKEMON_PUPITAR"); $pokemonMeta->setBaseDefense(133); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(19); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::LARVITAR); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(247); self::$POKEMON_META[PokemonId::PUPITAR] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0248_POKEMON_TYRANITAR"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_LARVITAR); $pokemonMeta->setPokemonClass(PokemonClass::NONE); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_DARK); $pokemonMeta->setPokedexHeightM(2.01); $pokemonMeta->setHeightStdDev(0.25125); $pokemonMeta->setBaseStamina(200); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(251); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(202); $pokemonMeta->setMovementType(MovementType::JUMP); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_ROCK); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0248_POKEMON_TYRANITAR"); $pokemonMeta->setBaseDefense(212); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(25.25); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::PUPITAR); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(248); self::$POKEMON_META[PokemonId::TYRANITAR] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0249_POKEMON_LUGIA"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_LUGIA); $pokemonMeta->setPokemonClass(PokemonClass::LEGENDARY); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(5.21); $pokemonMeta->setHeightStdDev(0.65125); $pokemonMeta->setBaseStamina(212); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(193); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(216); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0249_POKEMON_LUGIA"); $pokemonMeta->setBaseDefense(323); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(27); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(249); self::$POKEMON_META[PokemonId::LUGIA] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0250_POKEMON_HO_OH"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_HO_OH); $pokemonMeta->setPokemonClass(PokemonClass::LEGENDARY); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_FLYING); $pokemonMeta->setPokedexHeightM(3.81); $pokemonMeta->setHeightStdDev(0.47625); $pokemonMeta->setBaseStamina(212); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(263); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(199); $pokemonMeta->setMovementType(MovementType::FLYING); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_FIRE); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0250_POKEMON_HO_OH"); $pokemonMeta->setBaseDefense(301); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(24.875); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(250); self::$POKEMON_META[PokemonId::HO_OH] = $pokemonMeta; $pokemonMeta = new PokemonMeta(); $pokemonMeta->setTemplateId("V0251_POKEMON_CELEBI"); $pokemonMeta->setFamily(PokemonFamilyId::FAMILY_CELEBI); $pokemonMeta->setPokemonClass(PokemonClass::MYTHIC); $pokemonMeta->setType2(PokemonType::POKEMON_TYPE_GRASS); $pokemonMeta->setPokedexHeightM(0.61); $pokemonMeta->setHeightStdDev(0.07625); $pokemonMeta->setBaseStamina(200); $pokemonMeta->setCylRadiusM(0.37); $pokemonMeta->setBaseFleeRate(0.05); $pokemonMeta->setBaseAttack(210); $pokemonMeta->setDiskRadiusM(0.555); $pokemonMeta->setCollisionRadiusM(0.364); $pokemonMeta->setPokedexWeightKg(5); $pokemonMeta->setMovementType(MovementType::PSYCHIC); $pokemonMeta->setType1(PokemonType::POKEMON_TYPE_PSYCHIC); $pokemonMeta->setCollisionHeadRadiusM(0.3185); $pokemonMeta->setMovementTimerS(11); $pokemonMeta->setJumpTimeS(1); $pokemonMeta->setModelScale(1); $pokemonMeta->setUniqueId("V0251_POKEMON_CELEBI"); $pokemonMeta->setBaseDefense(210); $pokemonMeta->setAttackTimerS(20); $pokemonMeta->setWeightStdDev(0.625); $pokemonMeta->setCylHeightM(1.48); $pokemonMeta->setCandyToEvolve(1); $pokemonMeta->setCollisionHeightM(0.91); $pokemonMeta->setShoulderModeScale(0.5); $pokemonMeta->setBaseCaptureRate(0.12); $pokemonMeta->setParentId(PokemonId::MISSINGNO); $pokemonMeta->setCylGroundM(0); $pokemonMeta->setQuickMoves(new PokemonMoveData(array( PokemonMove::TACKLE_FAST, ))); $pokemonMeta->setCinematicMoves(new PokemonMoveData(array( PokemonMove::STRUGGLE, ))); $pokemonMeta->setNumber(251); self::$POKEMON_META[PokemonId::CELEBI] = $pokemonMeta; } } PokemonMetaRegistry::initialize(); ================================================ FILE: src/Api/Pokemon/Data/PokemonMove.php ================================================ */ namespace NicklasW\PkmGoApi\Api\Pokemon\Data; use NicklasW\PkmGoApi\Api\Support\Enums\PokemonMove as PokemonMoveEnumSupport; use POGOProtos\Enums\PokemonMove as PokemonMoveEnum; class PokemonMove { /** @var array|int[]|PokemonMoveEnum[] */ protected $moves; /** * PokemonMove constructor. * * @param array|int[]|PokemonMoveEnum[] $moves */ public function __construct(array $moves) { $this->moves = $moves; } /** * Get the moves (raw). * * @return array|\int[]|PokemonMoveEnum[] */ public function getMoves() { return $this->moves; } /** * Get the moves as names. * * @return string[] */ public function getMovesStrings() { return array_map(function ($move) { return PokemonMoveEnumSupport::name($move); }, $this->getMoves()); } } ================================================ FILE: src/Api/Pokemon/Pokemon.php ================================================ data = $pokemonData; } /** * Transfers the pokemon. * * @return ReleasePokemonResponse * @throws Exception */ public function transfer() { // Check if the pokemon is deployed if ($this->isDeployed()) { return ReleasePokemonResponse_Result::POKEMON_DEPLOYED; } // Execute the API request $response = $this->getRequestService()->transfer($this->getId()); // Check if the request was successfully executed if ($response->getResult() !== ReleasePokemonResponse_Result::SUCCESS) { throw new Exception(sprintf('Invalid response during pokemon transfer. Result: \'%s\' Code: \'%s\'', $response->getResult(), GenericEnum::name(ReleasePokemonResponse_Result::class, $response->getResult()))); } // Retrieve the poke bank $pokeBank = $this->pokeBank(); // Remove the pokemon from the poke bank $pokeBank->removePokemon($this); return $response; } /** * Upgrade the pokemon. * * @return UpgradePokemonResponse * @throws Exception */ public function upgrade() { // Validate the upgrade status if (($status = $this->getUpgradeStatus()) !== UpgradePokemonResponse_Result::SUCCESS) { return $status; } // Execute the API request $response = $this->getRequestService()->upgrade($this->getId()); // Check if the request was successfully executed if ($response->getResult() !== UpgradePokemonResponse_Result::SUCCESS) { throw new Exception(sprintf('Invalid response during pokemon upgrade. Result: \'%s\' Code: \'%s\'', $response->getResult(), GenericEnum::name(UpgradePokemonResponse_Result::class, $response->getResult()))); } // Retrieve the poke bank $pokeBank = $this->pokeBank(); // Remove the pokemon from the poke bank $pokeBank->removePokemon($this); return $response; } /** * Renames the pokemon. * * @param string $name * @throws Exception * @return NicknamePokemonResponse */ public function rename($name) { // Execute the API request $response = $this->getRequestService()->rename($this->getId(), $name); // Check if the request was successfully executed if ($response->getResult() !== NicknamePokemonResponse_Result::SUCCESS) { throw new Exception(sprintf('Invalid response during pokemon rename. Result: \'%s\' Code: \'%s\'', $response->getResult(), GenericEnum::name(NicknamePokemonResponse_Result::class, $response->getResult()))); } // Update the pokemon name $this->data->setNickname($name); return $response; } /** * Evolves the pokemon. * * @return EvolvePokemonResponse * @throws Exception */ public function evolve() { // Validate the evolve status if (($status = $this->getEvolveStatus()) !== EvolvePokemonResponse_Result::SUCCESS) { return $status; } // Execute the API request $response = $this->getRequestService()->envolve($this->getId()); // Check if the request was successfully executed if ($response->getResult() !== EvolvePokemonResponse_Result::SUCCESS) { throw new Exception(sprintf('Invalid response during pokemon evolve. Result: \'%s\' Code: \'%s\'', $response->getResult(), GenericEnum::name(EvolvePokemonResponse_Result::class, $response->getResult()))); } // Update the inventory $this->inventory()->update(); return $response; } /** * Set favorite pokemon. * * @param boolean $favourite * @throws Exception * @return SetFavoritePokemonResponse */ public function favorite($favourite) { // Check if already has the requested state // Execute the API request $response = $this->getRequestService()->favorite($this->getId(), $favourite); // Check if the request was successfully executed if ($response->getResult() !== SetFavoritePokemonResponse_Result::SUCCESS) { throw new Exception(sprintf('Invalid response during changing favorite state. Result: \'%s\' Code: \'%s\'', $response->getResult(), GenericEnum::name(SetFavoritePokemonResponse_Result::class, $response->getResult()))); } // Update pokemon state $this->data->setFavorite($favourite); return $response; } /** * Returns the pokemon data. * * @return PokemonItem */ public function getData() { return parent::getData(); } /** * Returns the request service. * * @return PokemonRequestService */ protected function getRequestService() { return new PokemonRequestService(); } } ================================================ FILE: src/Api/Pokemon/Support/BasePokemonRetriever.php ================================================ 0.094, '1.5' => 0.135137432, '2' => 0.16639787, '2.5' => 0.192650919, '3' => 0.21573247, '3.5' => 0.236572661, '4' => 0.25572005, '4.5' => 0.273530381, '5' => 0.29024988, '5.5' => 0.306057377, '6' => 0.3210876, '6.5' => 0.335445036, '7' => 0.34921268, '7.5' => 0.362457751, '8' => 0.37523559, '8.5' => 0.387592406, '9' => 0.39956728, '9.5' => 0.411193551, '10' => 0.42250001, '10.5' => 0.432926419, '11' => 0.44310755, '11.5' => 0.453059958, '12' => 0.46279839, '12.5' => 0.472336083, '13' => 0.48168495, '13.5' => 0.4908558, '14' => 0.49985844, '14.5' => 0.508701765, '15' => 0.51739395, '15.5' => 0.525942511, '16' => 0.53435433, '16.5' => 0.542635767, '17' => 0.55079269, '17.5' => 0.558830576, '18' => 0.56675452, '18.5' => 0.574569153, '19' => 0.58227891, '19.5' => 0.589887917, '20' => 0.59740001, '20.5' => 0.604818814, '21' => 0.61215729, '21.5' => 0.619399365, '22' => 0.62656713, '22.5' => 0.633644533, '23' => 0.64065295, '23.5' => 0.647576426, '24' => 0.65443563, '24.5' => 0.661214806, '25' => 0.667934, '25.5' => 0.674577537, '26' => 0.68116492, '26.5' => 0.687680648, '27' => 0.69414365, '27.5' => 0.700538673, '28' => 0.70688421, '28.5' => 0.713164996, '29' => 0.71939909, '29.5' => 0.725571552, '30' => 0.7317, '30.5' => 0.734741009, '31' => 0.73776948, '31.5' => 0.740785574, '32' => 0.74378943, '32.5' => 0.746781211, '33' => 0.74976104, '33.5' => 0.752729087, '34' => 0.75568551, '34.5' => 0.758630378, '35' => 0.76156384, '35.5' => 0.764486065, '36' => 0.76739717, '36.5' => 0.770297266, '37' => 0.7731865, '37.5' => 0.776064962, '38' => 0.77893275, '38.5' => 0.781790055, '39' => 0.78463697, '39.5' => 0.787473578, '40' => 0.79030001, ); } ================================================ FILE: src/Api/Pokemon/Support/PokemonDetailsTrait.php ================================================ getPokemonId()); return $data->getFamily(); } /** * Returns the pokemon type. * * @return string */ public function getType1String() { // Retrieve the pokemon metadata $data = PokemonMetaRegistry::getByPokemonId($this->getPokemonId()); return PokemonType::name($data->getType1()); } /** * Returns the pokemon second type. * * @return string */ public function getType2String() { // Retrieve the pokemon metadata $data = PokemonMetaRegistry::getByPokemonId($this->getPokemonId()); return PokemonType::name($data->getType2()); } /** * Returns the pokemon move1. * * @return string */ public function getMove1String() { return PokemonMove::name($this->getMove1()); } /** * Returns the pokemon move2. * * @return string */ public function getMove2String() { return PokemonMove::name($this->getMove2()); } /** * Returns the combat points after powerup. * * @return int */ public function getCpAfterPowerup() { return CombatPointsCalculator::getCpAfterPowerup($this->getCp(), $this->getCpMultiplier() + $this->getAdditionalCpMultiplier()); } /** * Returns the candy cost for powerup. * * @return integer */ public function getCandyCostForPowerup() { return CombatPointsCalculator::getCandyCostForPowerup($this->getCpMultiplier() + $this->getAdditionalCpMultiplier(), $this->getNumUpgrades()); } /** * Returns the stardust cost for powerup. * * @return integer */ public function getStardustCostsForPowerup() { return CombatPointsCalculator::getStardustCostsForPowerup($this->getCpMultiplier() + $this->getAdditionalCpMultiplier(), $this->getNumUpgrades()); } /** * Returns true if injured, false otherwise. * * @return boolean */ public function isInjured() { return !$this->isFainted() && $this->getStamina() < $this->getStaminaMax(); } /** * Returns true if fainted, false otherwise. * * @return boolean */ public function isFainted() { return $this->getStamina() == 0; } /** * Returns true if it is possible to evolve, false otherwise. * * @return boolean */ public function canEvolve() { return $this->getEvolveStatus() === EvolvePokemonResponse_Result::SUCCESS; } /** * Returns the evolve status. * * @return int */ public function getEvolveStatus() { // Check if the pokemon is deployed at fort if ($this->isDeployed()) { return EvolvePokemonResponse_Result::FAILED_POKEMON_IS_DEPLOYED; } // Retrieve the pokemon metadata $data = PokemonMetaRegistry::getByPokemonId($this->getPokemonId()); // Check if the pokemon type can be evolved if ($data->getCandyToEvolve() === 0) { return EvolvePokemonResponse_Result::FAILED_POKEMON_CANNOT_EVOLVE; } if ($this->getCandies()->getCount() < $data->getCandyToEvolve()) { return EvolvePokemonResponse_Result::FAILED_INSUFFICIENT_RESOURCES; } return EvolvePokemonResponse_Result::SUCCESS; } /** * Returns true if it is possible to upgrade, false otherwise. * * @return boolean */ public function canUpgrade() { return $this->getUpgradeStatus() === UpgradePokemonResponse_Result::SUCCESS; } /** * Returns the upgrade status. * * @return int */ public function getUpgradeStatus() { // Check if the pokemon is deployed at fort if ($this->isDeployed()) { return UpgradePokemonResponse_Result::ERROR_POKEMON_IS_DEPLOYED; } // Check if the combat points is higher than the maximum level for the player level if ($this->getCp() >= $this->getMaxCpForPlayer()) { return UpgradePokemonResponse_Result::ERROR_UPGRADE_NOT_AVAILABLE; } // Retrieve the amount of stardust $stardustAmount = $this->profile()->getCurrencies()->getStardust()->getAmount(); // Retrieve the candy amount $candyAmount = $this->getCandies()->getCount(); if ($stardustAmount < $this->getStardustCostsForPowerup() || $candyAmount < $this->getCandyCostForPowerup()) { return UpgradePokemonResponse_Result::ERROR_INSUFFICIENT_RESOURCES; } return UpgradePokemonResponse_Result::SUCCESS; } /** * Returns the base stamina. * * @return integer */ public function getBaseStamina() { // Retrieve the pokemon metadata $data = PokemonMetaRegistry::getByPokemonId($this->getPokemonId()); return $data->getBaseStamina(); } /** * Returns the base capture rate. * * @return double */ public function getBaseCaptureRate() { // Retrieve the pokemon metadata $data = PokemonMetaRegistry::getByPokemonId($this->getPokemonId()); return $data->getBaseCaptureRate(); } /** * Returns the candies to evolve. * * @return integer */ public function getCandiesToEvolve() { // Retrieve the pokemon metadata $data = PokemonMetaRegistry::getByPokemonId($this->getPokemonId()); return $data->getCandyToEvolve(); } /** * Returns base flee rate. * * @return integer */ public function getBaseFleeRate() { // Retrieve the pokemon metadata $data = PokemonMetaRegistry::getByPokemonId($this->getPokemonId()); return $data->getBaseFleeRate(); } /** * Returns the pokemon name. * * @return mixed|string */ public function getName() { return $this->getNameOrNickname(); } /** * Returns the level. * * @return float */ public function getLevel() { return CombatPointsCalculator::getLevel($this->getCpMultiplier() + $this->getAdditionalCpMultiplier()); } /** * @return float */ public function getIvRatio() { return ($this->getIndividualAttack() + $this->getIndividualDefense() + $this->getIndividualStamina()) / 45.0; } /** * Returns the number of candies. * * @return CandyItem */ public function getCandies() { return $this->candyBank()->get($this->getFamilyId()); } /** * Returns the pokedex entry. * * @return PokedexItem */ public function getPokedexEntry() { return $this->pokedex()->get($this->getPokemonId()); } /** * Returns true if deployed, false otherwise. * * @return boolean */ public function isDeployed() { return $this->getDeployedFortId() != null; } /** * Calculate the maximum CP for this individual pokemon and this player's level * * @return float The maximum CP for this pokemon * @throws NoSuchItemException If the PokemonId value cannot be found in the {@link PokemonMetaRegistry}. * @throws LoginFailedException If login failed * @throws RemoteServerException If the server is causing issues */ public function getMaxCpForPlayer() { // Retrieve the pokemon metadata $data = PokemonMetaRegistry::getByPokemonId($this->getPokemonId()); $attack = $this->getIndividualAttack() + $data->getBaseAttack(); $defense = $this->getIndividualDefense() + $data->getBaseDefense(); $stamina = $this->getIndividualStamina() + $data->getBaseStamina(); $level = $this->inventory()->getStats()->getLevel(); return CombatPointsCalculator::getMaxCpForPlayer($attack, $defense, $stamina, $level); } /** * Returns the pokemon name or nickname. * * @return string */ protected function getNameOrNickname() { // Check if the pokemon has a nickname if ($this->getNickname() != null) { return $this->getNickname(); } return PokemonId::name($this->getPokemonId()); } } ================================================ FILE: src/Api/PokemonGoApi.php ================================================ requestService = new RequestService(); // Initialize the prerequisites $this->initialize(); } /** * Returns the player inventory. * * @return Inventory */ public function getInventory() { return $this->inventory; } /** * Returns the player profile. * * @return Profile */ public function getProfile() { return $this->profile; } /** * @return Journal */ public function getJournal() { return $this->journal; } /** * Returns the map. * * @return Map */ public function getMap() { return $this->map; } /** * Returns the player checkChallenge. * * @return CheckChallenge */ public function checkChallenge() { return $this->checkChallenge; } /** * Sends back the RECaptcha challenge token * * @param string $token The recaptcha "solved-token" * * @return bool Whether the account is now "unflagged" */ public function verifyChallenge($token) { $request = new VerifyChallengeRequest($token); $this->getRequestService()->requestHandler()->handle($request); /** @var \POGOProtos\Networking\Responses\VerifyChallengeResponse $response */ $response = $request->getData(); return (bool) $response->getSuccess(); } /** * @return RequestService */ public function getRequestService() { return $this->requestService; } /** * Initialize the prerequisites. */ protected function initialize() { // Initialize the inventory instance $this->inventory = new Inventory($this); // Initialize the profile instance $this->profile = new Profile($this); // Initialize the journal instance $this->journal = new Journal($this); // Initialize the map instance $this->map = new Map($this); // Initialize the checkChallenge instance $this->checkChallenge = new CheckChallenge($this); } } ================================================ FILE: src/Api/Procedure.php ================================================ data === null) { $this->update(); } return $this->data; } /** * @param string $name * @param mixed $arguments * @return mixed */ public function __call($name, $arguments) { // Check if the data is defined if ($this->data == null) { $this->update(); } return $this->data->{$name}($arguments); } /** * Returns the request service. * * @return RequestService */ protected function getRequestService() { return $this->getPokemonGoApi()->getRequestService(); } } ================================================ FILE: src/Api/Support/Enums/AbstractEnum.php ================================================ getConstants()); } return static::$CACHED_ENTRIES; } } ================================================ FILE: src/Api/Support/Enums/GenericEnum.php ================================================ getConstants()); } return self::$CACHED_ENTRIES[$class]; } } ================================================ FILE: src/Api/Support/Enums/ItemId.php ================================================ getPokemonGoApi()->getInventory()->getPokeBank(); } /** * Returns the candy bank. * * @return Pokedex */ protected function pokedex() { return $this->inventory()->getPokedex(); } /** * Returns the candy bank. * * @return CandyBank */ protected function candyBank() { return $this->inventory()->getCandyBank(); } /** * Returns the candy bank. * * @return Profile */ protected function profile() { return $this->getPokemonGoApi()->getProfile(); } /** * Returns the inventory. * * @return Inventory */ protected function inventory() { return $this->getPokemonGoApi()->getInventory(); } /** * Returns the pokemon go api. * * @return PokemonGoApi */ protected function getPokemonGoApi() { return App::getPokemonGoApi(); } /** * Returns the application. * * @return ApplicationKernel */ protected function getApplication() { return App::getInstance(); } } ================================================ FILE: src/Api/Support/Traits/MakeDataPropertiesCallable.php ================================================ data->{$name}($arguments); } } ================================================ FILE: src/Authentication/AccessToken.php ================================================ token = $token; $this->provider = $provider; $this->timestamp = $timestamp; $this->refreshToken = $refreshToken; } /** * @return string */ public function getToken() { return $this->token; } /** * @param string $token */ public function setToken($token) { $this->token = $token; } /** * @return int */ public function getTimestamp() { return $this->timestamp; } /** * @param int $timestamp */ public function setTimestamp($timestamp) { $this->timestamp = $timestamp; } /** * Returns true if the timestamp is defined, false otherwise. * * @return boolean */ public function hasTimestamp() { return $this->timestamp !== null; } /** * Returns true if the timestamp is valid, false otherwise. * * @return boolean */ public function isTimestampValid() { return $this->hasTimestamp() && intval($this->timestamp) > time(); } /** * Returns true if the access token is valid, false otherwise. * * @return boolean */ public function isValid() { // Check if we have a oauth token, but no token lifetime timestamp if ($this->getToken() && !$this->hasTimestamp()) { // Authenticated using oauth token, we can't validate the state of the access token. return true; } // Check if we have a oauth token, a token lifetime timestamp and no fresh token if ($this->getToken() && $this->hasTimestamp() && !$this->hasFreshToken()) { // Authenticated using user credentials. We have no refresh token. return $this->isTimestampValid(); } // Check if we have a fresh token and a token lifetime timestamp if ($this->hasFreshToken() && $this->hasTimestamp()) { // Authenticated using authentication code, or refresh token. return true; } } /** * @return mixed */ public function getRefreshToken() { return $this->refreshToken; } /** * @param mixed $refreshToken */ public function setRefreshToken($refreshToken) { $this->refreshToken = $refreshToken; } /** * @return boolean */ public function hasFreshToken() { return $this->refreshToken !== null; } /** * @return string */ public function getProvider() { return $this->provider; } } ================================================ FILE: src/Authentication/Config/Config.php ================================================ user; } /** * @param string $user */ public function setUser($user) { $this->user = $user; } /** * @return string */ public function getPassword() { return $this->password; } /** * @param string $password */ public function setPassword($password) { $this->password = $password; } /** * @return string */ public function getAuthToken() { return $this->authToken; } /** * @param string $authToken */ public function setAuthToken($authToken) { $this->authToken = $authToken; } /** * @return string */ public function getRefreshToken() { return $this->refreshToken; } /** * @param string $refreshToken */ public function setRefreshToken($refreshToken) { $this->refreshToken = $refreshToken; } /** * @return string */ public function getOauthToken() { return $this->oauthToken; } /** * @param string $oauthToken */ public function setOauthToken($oauthToken) { $this->oauthToken = $oauthToken; } /** * @return string */ public function getProvider() { return $this->provider; } /** * @param string $provider */ public function setProvider($provider) { $this->provider = $provider; } /** * @return boolean */ public function isGoogle() { return $this->provider === Factory::PROVIDER_GOOGLE; } /** * @return boolean */ public function isPTC() { return $this->provider === Factory::PROVIDER_PTC; } } ================================================ FILE: src/Authentication/Contracts/Authenticator.php ================================================ getCode(); return $code == static::PTC_INVALID_GRANT_ERROR || $code == static::AUTH_SERVER_ERROR; } } ================================================ FILE: src/Authentication/Exceptions/IllegalAuthenticationTypeException.php ================================================ isGoogle()) { return self::createGoogleManager($config); } elseif ($config->isPTC()) { return self::createPTCManager($config); } throw new Exception('Invalid config provided. No provider defined'); } /** * Create authentication manager. * * @param AccessToken $accessToken * * @return Manager * * @throws AuthenticationException * @throws Exception */ protected static function createAuthenticationManagerByAccessToken($accessToken) { if ($accessToken->getProvider() == AccessToken::PROVIDER_GOOGLE) { // Check if a token timestamp is provided if (!$accessToken->hasTimestamp()) { return new GoogleAuthenticationOauthTokenManager($accessToken); } // Check if a fresh token is available, check if it is still valid if ($accessToken->hasFreshToken() && $accessToken->isTimestampValid()) { return new GoogleAuthenticationRefreshTokenManager($accessToken->getRefreshToken()); } if ($accessToken->isTimestampValid()) { return new GoogleAuthenticationOauthTokenManager($accessToken); } throw new AuthenticationException('Please re-login, the access token has expired'); } elseif ($accessToken->getProvider() == AccessToken::PROVIDER_PTC) { if (!$accessToken->isTimestampValid()) { throw new AuthenticationException('Please re-login, the access token has expired'); } return new PTCAuthenticationOauthTokenManager($accessToken); } throw new Exception('Invalid config provided. No provider defined'); } /** * Create Google authentication manager. * * @param Config $config * @return GoogleAuthenticationCodeManager|GoogleAuthenticationCredentialsManager|GoogleAuthenticationOauthTokenManager * @throws AuthenticationException */ protected static function createGoogleManager($config) { if (self::isAdaptedForGoogleRefreshTokenManager($config)) { return self::createGoogleRefreshTokenManager($config); } if (self::isAdaptedForGoogleOauthToken($config)) { return self::createGoogleOauthManager($config); } if (self::isAdaptedForGoogleAuthenticationCodeManager($config)) { return self::createGoogleAuthenticationCodeManager($config); } if (self::isAdaptedForUserCredentialsManager($config)) { return self::createGoogleUserCredentialsManager($config); } throw new AuthenticationException('Invalid config provided. Could not create authentication manager'); } /** * Create PTC authentication manager. * * @param Config $config * @return PTCAuthenticationCredentialsManager * @throws AuthenticationException */ protected static function createPTCManager($config) { if (self::isAdaptedForUserCredentialsManager($config)) { return new PTCAuthenticationCredentialsManager($config->getUser(), $config->getPassword()); } throw new AuthenticationException('Invalid config provided. Could not create authentication manager'); } /** * Return true if config is of type access token, false otherwise. * * @param Config|AccessToken $config * @return boolean */ protected static function isAccessConfig($config) { return $config instanceof AccessToken; } /** * Returns true if the config is adapted for google authentication code manager, false otherwise. * * @param Config $config * @return boolean */ protected static function isAdaptedForGoogleAuthenticationCodeManager($config) { return $config->getAuthToken() !== null; } /** * Returns true if the config is adapted for google user credentials manager, false otherwise. * * @param Config $config * @return boolean */ protected static function isAdaptedForUserCredentialsManager($config) { return $config->getUser() !== null && $config->getPassword() !== null; } /** * Returns true if the config is adapted for google Oauth token manager, false otherwise. * * @param Config $config * @return boolean */ protected static function isAdaptedForGoogleOauthToken($config) { return $config->getOauthToken() !== null; } /** * Returns true if the config is adapted for google refresh token manager, false otherwise. * * @param Config $config * @return boolean */ protected static function isAdaptedForGoogleRefreshTokenManager($config) { return $config->getRefreshToken() !== null; } /** * Create Google refresh token manager. * * @param Config $config * @return GoogleAuthenticationCodeManager */ protected static function createGoogleRefreshTokenManager($config) { return new GoogleAuthenticationRefreshTokenManager($config->getRefreshToken()); } /** * Create Google oauth manager. * * @param Config $config * @return GoogleAuthenticationOauthTokenManager */ protected static function createGoogleOauthManager($config) { return new GoogleAuthenticationOauthTokenManager($config->getOauthToken()); } /** * Create Google user credentials manager. * * @param Config $config * @return GoogleAuthenticationCodeManager */ protected static function createGoogleAuthenticationCodeManager($config) { return new GoogleAuthenticationCodeManager($config->getAuthToken()); } /** * Create Google user credentials manager. * * @param Config $config * @return GoogleAuthenticationCredentialsManager */ protected static function createGoogleUserCredentialsManager($config) { return new GoogleAuthenticationCredentialsManager($config->getUser(), $config->getPassword()); } } ================================================ FILE: src/Authentication/Manager.php ================================================ listeners[] = $listener; } /** * Dispatch a event to the listeners * * @param int $event * @param mixed $data */ public function dispatchEvent($event, $data) { // Iterate through the list of listeners foreach ($this->listeners as $listener) { // Dispatch the event to the listener $listener($event, $data); } } /** * @param AccessToken $accessToken */ public function setAccessToken($accessToken) { $this->accessToken = $accessToken; } /** * Refresh the token if possible. * * @return AccessToken * @throws AuthenticationException */ protected function refreshTokenIfPossible() { // Check if the oauth token is valid if ($this->isTokenValid()) { return $this->accessToken; } // Check if a refresh token is defined if ($this->hasFreshToken()) { // Use refresh token to retrieve new oauth token // Dispatch event to listeners $this->dispatchEvent(static::EVENT_ACCESS_TOKEN, $this->accessToken); return $this->accessToken; } throw new AuthenticationException('Unable to refresh token, please re-login'); } /** * Returns true if the manager has authenticated, false otherwise. * * @return boolean */ protected function isAuthenticated() { return $this->accessToken !== null; } /** * Returns true if the token is valid, false otherwise. * * @return boolean */ protected function isTokenValid() { // Check if the access token contains lifetime timestamp if ($this->isAuthenticated() && !$this->accessToken->hasTimestamp()) { return true; } return $this->isAuthenticated() && $this->accessToken->isTimestampValid(); } /** * Return true if fresh token is defined and valid, false otherwise. * * @return bool */ protected function hasFreshToken() { return $this->isAuthenticated() && $this->accessToken->isTimestampValid(); } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationCode/Authenticator.php ================================================ getOauthTokenByAuthenticationCode($token); return new AccessToken($result->getToken(), AccessToken::PROVIDER_GOOGLE, $result->getExpiryTimestamp(), $result->getRefreshToken()); } /** * Returns the authentication identifier. * * @return string */ public function identifier() { return 'google'; } /** * Returns the oauth token by authentication code. * * @param string $authenticationCode * @return AuthenticationTokenResult */ protected function getOauthTokenByAuthenticationCode($authenticationCode) { return $this->client()->getOauthTokenByAuthenticationCode($authenticationCode); } /** * Returns the Authentication client * * @return AuthenticationClient */ protected function client() { // Check if the authentication client is initialized if ($this->authenticationClient == null) { $this->authenticationClient = new AuthenticationClient(); } return $this->authenticationClient; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationCode/Clients/AuthenticationClient.php ================================================ self::$PARAMETER_CLIENT_ID, 'client_secret' => self::$PARAMETER_CLIENT_SECRET, 'code' => $authenticationCode, 'grant_type' => self::$PARAMETER_GRANT_TYPE, 'redirect_uri' => self::$PARAMETER_REDIRECT_URI, ); // Retrieve the content $response = $this->post(self::$URL_TOKEN_URL, array('form_params' => $parameters)); // Get the authentication token parser $parser = new OauthTokenParser(); // Parse the content return $parser->parse($response); } /** * Execute a POST request and returns the response content. * * @param string $url * @param array $parameters * @return ResponseInterface */ protected function post($url, $parameters = array()) { // Execute the POST request $response = $this->client()->post($url, $parameters); // Retrieve the content return $response; } /** * Returns the Client. * * @return Client */ protected function client() { return App::get('client'); } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationCode/Parsers/OauthTokenParser.php ================================================ validateResponse($response); // Retrieve the content $content = (string)$response->getBody(); // Decode the response content $content = json_decode($content); Log::debug(sprintf('[#%s] Retrieved response. Content: \'%s\'', __CLASS__, print_r($content, true))); return new AuthenticationTokenResult( array( 'token' => $content->id_token, 'timestamp' => time() + $content->expires_in, 'refresh_token' => $content->refresh_token, ) ); } /** * Validate the request response. * * @param ResponseInterface $response * @throws AuthenticationException * @throws ResponseException */ protected function validateResponse($response) { Log::debug(sprintf('[#%s] Validating response. Status code: \'%s\'', __CLASS__, $response->getStatusCode())); // Check if the response corresponds to a server error if (!$this->isServerError($response)) { return; } // Retrieve the response content $content = json_decode((string)$response->getBody()); // Check if the token is already redeemed if ($this->isTokenAlreadyRedeemed($content)) { throw new AuthenticationException($content->error_description); } // Check if the token is invalid if ($this->isTokenInvalid($content)) { throw new AuthenticationException('Invalid token provided'); } Log::debug(sprintf('[#%s] Retrieved a invalid response. Content: \'%s\'', __CLASS__, $response->getBody())); throw new ResponseException( sprintf('Retrieved a invalid response. Response: \'%s\'', (string)$response->getBody())); } /** * Check if the token provided is already redeemed. * * @param $content * @return boolean */ protected function isTokenAlreadyRedeemed($content) { return $content->error_description === 'Code was already redeemed.'; } /** * Check if the token provided was invalid. * * @param $content * @return boolean */ protected function isTokenInvalid($content) { return $content->error_description === 'Bad Request'; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationCode/Parsers/Parser.php ================================================ dom = $dom; } /** * The method which parses the content. * * @param string $content * @return Result */ abstract public function parse($content); /** * Validate the request response. * * @param ResponseInterface $response * @throws ResponseException */ protected function validateResponse($response) { Log::debug(sprintf('[#%s] Validating response. Status code: \'%s\'', __CLASS__, $response->getStatusCode())); // Check if the response corresponds to a server error if (!$this->isServerError($response)) { return; } Log::debug(sprintf('[#%s] Retrieved a invalid response. Content: \'%s\'', __CLASS__, $response->getBody())); throw new ResponseException( sprintf('Retrieved a invalid response. Response: \'%s\'', (string)$response->getBody())); } /** * Returns true if the status code corresponds to a server error, false otherwise. * * @param ResponseInterface $response * @return boolean */ protected function isServerError($response) { // Retrieve the initial integer from the status code $responseCode = substr($response->getStatusCode(), 0, 1); return $responseCode == 5 || $responseCode == 4; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationCode/Parsers/Results/AuthenticationTokenResult.php ================================================ data['token']; } /** * Returns the refresh token. * * @return string */ public function getRefreshToken() { return $this->data['refresh_token']; } /** * Returns the expiry timestamp. * * @return string */ public function getExpiryTimestamp() { return $this->data['timestamp']; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationCode/Parsers/Results/Result.php ================================================ data = $data; } /** * @return mixed The parsed data */ public function getData() { return $this->data; } /** * @param $data The parsed data */ public function setData($data) { $this->data = $data; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationCodeManager.php ================================================ authenticationCode = $authenticationCode; } /** * Returns the Oauth token. * * @return AccessToken */ public function getAccessToken() { // Check if we are authenticated if ($this->isAuthenticated()) { // Try to refresh the token if required and possible return $this->refreshTokenIfPossible(); } // Retrieve the Google authenticator $authenticator = $this->authenticator(); // Retrieve the access token by authentication code $accessToken = $authenticator->loginByToken($this->authenticationCode); // Dispatch event to listeners $this->dispatchEvent(static::EVENT_ACCESS_TOKEN, $accessToken); // Add the access token to the manager $this->setAccessToken($accessToken); return $accessToken; } /** * Returns the identifier. * * @return string */ public function getIdentifier() { return $this->authenticator()->identifier(); } /** * Returns the authenticator. * * @return Authenticator */ protected function authenticator() { return new Authenticator(); } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationCredentials/Authenticator.php ================================================ getAuthenticationToken($email, $password); Log::debug(sprintf('[#%s] Token: \'%s\'', __CLASS__, $tokenResult->getToken())); // Retrieve the oauth token $result = $this->getOauthTokenByUserCredentials($email, $tokenResult->getToken()); Log::debug(sprintf('[#%s] OAuth token: \'%s\'', __CLASS__, $result->getToken())); return new AccessToken($result->getToken(), AccessToken::PROVIDER_GOOGLE, $result->getExpiryTimestamp()); } /** * Returns the authentication identifier. * * @return string */ public function identifier() { return 'google'; } /** * Returns the authentication token. * * @param $email * @param $password * @return AuthenticationTokenResult */ protected function getAuthenticationToken($email, $password) { return $this->client()->getAuthenticationToken($email, $password); } /** * Returns the oauth token by user credentials. * * @param string $email * @param string $token * @return AuthenticationTokenResult */ protected function getOauthTokenByUserCredentials($email, $token) { return $this->client()->getOauthTokenByUserCredentials($email, $token); } /** * Returns the Authentication client * * @return AuthenticationClient */ protected function client() { // Check if the authentication client is initialized if ($this->authenticationClient == null) { $this->authenticationClient = new AuthenticationClient(); } return $this->authenticationClient; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationCredentials/Clients/AuthenticationClient.php ================================================ 'HOSTED_OR_GOOGLE', 'Email' => $email, 'has_permission' => 1, 'add_account' => 1, 'EncryptedPasswd' => $encryptedPassword, 'service' => 'ac2dm', 'source' => 'android', 'device_country' => 'us', 'operatorCountry' => 'us', 'lang' => 'en', 'sdk_version' => '17', ); // Retrieve the response $response = $this->post(self::$URL_ANDROID_TOKEN_URL, array('form_params' => $parameters)); // Get the authentication token parser $parser = new TokenParser(); // Parse the content return $parser->parse($response); } /** * Retrieves the the oauth token using user credentials. * * @param string $email * @param string $token * @return AuthenticationTokenResult */ public function getOauthTokenByUserCredentials($email, $token) { $parameters = array( 'accountType' => 'HOSTED_OR_GOOGLE', 'Email' => $email, 'has_permission' => 1, 'EncryptedPasswd' => $token, 'service' => self::$OAUTH_LOGIN_SERVICE, 'source' => 'android', 'app' => self::$OAUTH_LOGIN_APPLICATION, 'client_sig' => self::$OAUTH_LOGIN_CLIENT_SIGNATURE, 'device_country' => 'us', 'operatorCountry' => 'us', 'lang' => 'en', 'sdk_version' => '17', ); // Retrieve the response $response = $this->post(self::$URL_ANDROID_TOKEN_URL, array('form_params' => $parameters)); // Get the authentication token parser $parser = new OauthTokenParser(); // Parse the content return $parser->parse($response); } /** * Execute a POST request and returns the response content. * * @param string $url * @param array $parameters * @return ResponseInterface */ protected function post($url, $parameters = array()) { // Execute the POST request $response = $this->client()->post($url, $parameters); // Retrieve the content return $response; } /** * Retrieve the options. * * @param array $options * @return array */ protected function options($options = array()) { return array_merge($options, array(array('headers' => array('User-Agent' => 'gpsoauth/0.0.5')))); } /** * Returns the Client. * * @return Client */ protected function client() { return App::get('client'); } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationCredentials/Parsers/OauthTokenParser.php ================================================ validateResponse($response); // Retrieve the content $content = (string)$response->getBody(); Log::debug(sprintf('[#%s] Retrieved response. Content: \'%s\'', __CLASS__, $content)); return new AuthenticationTokenResult( array('token' => $this->parseAuthId($content), 'timestamp' => $this->parseExpiryTimestamp($content))); } /** * Returns the parsed auth id. * * @param string $content * @return string */ protected function parseAuthId($content) { $matches = array(); preg_match('/Auth=(?.*)/', $content, $matches); return $matches['token']; } /** * Returns the expiry timestamp. * * @param string $content * @return string */ protected function parseExpiryTimestamp($content) { $matches = array(); preg_match('/Expiry=(?.*)/', $content, $matches); return $matches['expiry']; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationCredentials/Parsers/Parser.php ================================================ dom = $dom; } /** * The method which parses the content. * * @param string $content * @return Result */ abstract public function parse($content); /** * Validate the request response. * * @param ResponseInterface $response * @throws ResponseException */ protected function validateResponse($response) { Log::debug(sprintf('[#%s] Validating response. Status code: \'%s\'', __CLASS__, $response->getStatusCode())); // Check if the response corresponds to a server error if (!$this->isServerError($response)) { return; } Log::debug(sprintf('[#%s] Retrieved a invalid response. Content: \'%s\'', __CLASS__, $response->getBody())); throw new ResponseException( sprintf('Retrieved a invalid response. Response: \'%s\'', (string)$response->getBody())); } /** * Returns true if the status code corresponds to a server error, false otherwise. * * @param ResponseInterface $response * @return boolean */ protected function isServerError($response) { // Retrieve the initial integer from the status code $responseCode = substr($response->getStatusCode(), 0, 1); return $responseCode === 5; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationCredentials/Parsers/Results/AuthenticationTokenResult.php ================================================ data['token']; } /** * Returns the auth id. * * @return string */ public function getAuthId() { return $this->data['auth']; } /** * Returns the expiry timestamp. * * @return string */ public function getExpiryTimestamp() { return $this->data['timestamp']; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationCredentials/Parsers/Results/Result.php ================================================ data = $data; } /** * @return The parsed data */ public function getData() { return $this->data; } /** * @param mixed $data The parsed data */ public function setData($data) { $this->data = $data; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationCredentials/Parsers/TokenParser.php ================================================ validateResponse($response); // Retrieve the content $content = (string)$response->getBody(); // Check if we provided valid user credentials if ($response->getStatusCode() === self::$RESPONSE_STATUS_FORBIDDEN) { Log::debug(sprintf('[#%s] Retrieved invalid response. Content: \'%s\' Status code: \'%s\' ', __CLASS__, $content, $response->getStatusCode())); throw new AuthenticationException( sprintf('Invalid user credentials. Response: \'%s\'', $content)); } Log::debug(sprintf('[#%s] Response content: \'%s\'', __CLASS__, $content)); return new AuthenticationTokenResult(array('token' => $this->parseToken($content))); } /** * Returns the parsed ticket. * * @param string $content * @return string mixed */ protected function parseToken($content) { $matches = array(); preg_match('/Token=(?.*)/', $content, $matches); return $matches['token']; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationCredentials/Support/Signature.php ================================================ setPublicKeyFormat("CRYPT_RSA_PUBLIC_FORMAT_RAW"); $rsa->setEncryptionMode("CRYPT_RSA_ENCRYPTION_OAEP"); $rsa->loadKey(array('n' => $modulus, 'e' => $exponent)); $rsa->setPublicKey(); $plain = "{$email}\x00{$password}"; return bin2hex($rsa->encrypt($plain)); } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationCredentialsManager.php ================================================ email = $email; $this->password = $password; } /** * Returns the Oauth token. * * @return AccessToken */ public function getAccessToken() { // Check if we are authenticated if ($this->isAuthenticated() && ($token = $this->refreshTokenIfPossible())) { return $token; } // Retrieve the Google authenticator $authenticator = $this->authenticator(); // Retrieve the access token by user credentials $accessToken = $authenticator->login($this->email, $this->password); // Dispatch event to listeners $this->dispatchEvent(static::EVENT_ACCESS_TOKEN, $accessToken); // Add the access token to the manager $this->setAccessToken($accessToken); return $accessToken; } /** * Returns the identifier. * * @return string */ public function getIdentifier() { return $this->authenticator()->identifier(); } /** * Refresh the token if possible. * * @return AccessToken|null * @throws AuthenticationException */ protected function refreshTokenIfPossible() { // Check if the oauth token is valid if ($this->isTokenValid()) { return $this->accessToken; } // Check if a refresh token is defined if ($this->hasFreshToken()) { // Use refresh token to retrieve new oauth token // Dispatch event to listeners $this->dispatchEvent(static::EVENT_ACCESS_TOKEN, $this->accessToken); return $this->accessToken; } return null; } /** * Returns the authenticator. * * @return Authenticator */ protected function authenticator() { return new Authenticator(); } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationOauthTokenManager.php ================================================ setAccessToken($token); } else { $this->token = $token; } } /** * Returns the Oauth token. * * @return AccessToken */ public function getAccessToken() { if (!$this->accessToken) { $this->accessToken = new AccessToken($this->token, AccessToken::PROVIDER_GOOGLE); } // Dispatch event to listeners $this->dispatchEvent(static::EVENT_ACCESS_TOKEN, $this->accessToken); return $this->accessToken; } /** * Returns the identifier. * * @return string */ public function getIdentifier() { return 'google'; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationRefreshToken/Authenticator.php ================================================ getOauthTokenByAuthenticationRefreshToken($token); return new AccessToken($result->getToken(), AccessToken::PROVIDER_GOOGLE, $result->getExpiryTimestamp()); } /** * Returns the authentication identifier. * * @return string */ public function identifier() { return 'google'; } /** * Returns the oauth token by refresh code. * * @param string $AuthenticationRefreshToken * @return AuthenticationTokenResult */ protected function getOauthTokenByAuthenticationRefreshToken($AuthenticationRefreshToken) { return $this->client()->getOauthTokenByAuthenticationRefreshToken($AuthenticationRefreshToken); } /** * Returns the Authentication client * * @return AuthenticationClient */ protected function client() { // Check if the authentication client is initialized if ($this->authenticationClient == null) { $this->authenticationClient = new AuthenticationClient(); } return $this->authenticationClient; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationRefreshToken/Clients/AuthenticationClient.php ================================================ cookies = new CookieJar(); } /** * Retrieves the the oauth token using refresh code. * * @param string $token * @return AuthenticationTokenResult */ public function getOauthTokenByAuthenticationRefreshToken($token) { $parameters = array( 'access_type' => 'offline', 'client_id' => self::$PARAMETER_CLIENT_ID, 'client_secret' => self::$PARAMETER_CLIENT_SECRET, 'refresh_token' => $token, 'grant_type' => 'refresh_token', 'scope' => self::$PARAMETER_SCOPE, ); // Retrieve the content $response = $this->post(self::$URL_TOKEN_URL, array('form_params' => $parameters)); // Get the authentication token parser $parser = new OauthTokenParser(); // Parse the content return $parser->parse($response); } /** * Execute a POST request and returns the response content. * * @param string $url * @param array $parameters * @return ResponseInterface */ protected function post($url, $parameters = array()) { // Execute the POST request $response = $this->client()->post($url, $this->options($parameters)); // Retrieve the content return $response; } /** * Retrieve the options. * * @param array $options * @return array */ protected function options($options = array()) { return array_merge($options, array('cookies' => $this->cookies)); } /** * Returns the Client. * * @return Client */ protected function client() { return App::get('client'); } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationRefreshToken/Parsers/OauthTokenParser.php ================================================ validateResponse($response); // Retrieve the content $content = (string)$response->getBody(); // Decode the response content $content = json_decode($content); Log::debug(sprintf('[#%s] Retrieved response. Content: \'%s\'', __CLASS__, print_r($content, true))); return new AuthenticationTokenResult( array( 'token' => $content->id_token, 'timestamp' => time() + $content->expires_in, ) ); } /** * Validate the request response. * * @param ResponseInterface $response * @throws AuthenticationException */ protected function validateResponse($response) { Log::debug(sprintf('[#%s] Validating response. Status code: \'%s\'', __CLASS__, $response->getStatusCode())); // Check if the response corresponds to a server error if (!$this->isServerError($response)) { return; } // Retrieve the response content $content = json_decode((string)$response->getBody()); // Check if the token is already redeemed if ($this->isTokenAlreadyRedeemed($content)) { throw new AuthenticationException($content->error_description); } // Check if the token is invalid if ($this->isTokenInvalid($content)) { throw new AuthenticationException('Invalid token provided'); } Log::debug(sprintf('[#%s] Retrieved a invalid response. Content: \'%s\'', __CLASS__, $response->getBody())); throw new ResponseException( sprintf('Retrieved a invalid response. Response: \'%s\'', (string)$response->getBody())); } /** * Check if the token provided is already redeemed. * * @param $content * @return boolean */ protected function isTokenAlreadyRedeemed($content) { return $content->error_description === 'Code was already redeemed.'; } /** * Check if the token provided was invalid. * * @param $content * @return boolean */ protected function isTokenInvalid($content) { return $content->error_description === 'Bad Request'; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationRefreshToken/Parsers/Parser.php ================================================ dom = $dom; } /** * The method which parses the content. * * @param string $content * @return Result */ abstract public function parse($content); /** * Validate the request response. * * @param ResponseInterface $response * @throws ResponseException */ protected function validateResponse($response) { Log::debug(sprintf('[#%s] Validating response. Status code: \'%s\'', __CLASS__, $response->getStatusCode())); // Check if the response corresponds to a server error if (!$this->isServerError($response)) { return; } Log::debug(sprintf('[#%s] Retrieved a invalid response. Content: \'%s\'', __CLASS__, $response->getBody())); throw new ResponseException( sprintf('Retrieved a invalid response. Response: \'%s\'', (string)$response->getBody())); } /** * Returns true if the status code corresponds to a server error, false otherwise. * * @param ResponseInterface $response * @return boolean */ protected function isServerError($response) { // Retrieve the initial integer from the status code $responseCode = substr($response->getStatusCode(), 0, 1); return $responseCode == 5 || $responseCode == 4; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationRefreshToken/Parsers/Results/AuthenticationTokenResult.php ================================================ data['token']; } /** * Returns the expiry timestamp. * * @return string */ public function getExpiryTimestamp() { return $this->data['timestamp']; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationRefreshToken/Parsers/Results/Result.php ================================================ data = $data; } /** * @return mixed The parsed data */ public function getData() { return $this->data; } /** * @param mixed $data The parsed data */ public function setData($data) { $this->data = $data; } } ================================================ FILE: src/Authentication/Managers/Google/AuthenticationRefreshTokenManager.php ================================================ token = $token; } /** * Returns the Oauth token. * * @return AccessToken */ public function getAccessToken() { // Check if we are authenticated if ($this->isAuthenticated()) { // Try to refresh the token if required and possible return $this->refreshTokenIfPossible(); } // Retrieve the Google authenticator $authenticator = $this->authenticator(); // Retrieve the access token by refresh token $accessToken = $authenticator->loginByRefreshToken($this->token); // Add the refresh token to the access token $accessToken->setRefreshToken($this->token); // Dispatch event to listeners $this->dispatchEvent(static::EVENT_ACCESS_TOKEN, $accessToken); // Add the access token to the manager $this->setAccessToken($accessToken); return $accessToken; } /** * Returns the identifier. * * @return string */ public function getIdentifier() { return $this->authenticator()->identifier(); } /** * Returns the authenticator. * * @return Authenticator */ protected function authenticator() { return new Authenticator(); } } ================================================ FILE: src/Authentication/Managers/PTC/AuthenticationCredentials/Authenticator.php ================================================ client()->authenticationInformation(); // Retrieve the authentication ticket $ticketInformation = $this->client()->ticket($username, $password, $authenticationInformation); Log::debug(sprintf('[#%s] Retrieved ticket: \'%s\'', __CLASS__, $ticketInformation->getTicket())); // Retrieve the authentication token $tokenInformation = $this->client()->token($ticketInformation->getTicket()); Log::debug(sprintf('[#%s] Retrieved token: \'%s\'', __CLASS__, $tokenInformation->getToken())); return new AccessToken($tokenInformation->getToken(), AccessToken::PROVIDER_PTC, $tokenInformation->getTimestamp()); } /** * Returns the authentication identifier. * * @return string */ public function identifier() { return 'ptc'; } /** * Returns the Authentication client * * @return AuthenticationClient */ protected function client() { // Check if the authentication client is initialized if ($this->authenticationClient == null) { $this->authenticationClient = new AuthenticationClient(); } return $this->authenticationClient; } } ================================================ FILE: src/Authentication/Managers/PTC/AuthenticationCredentials/Clients/AuthenticationClient.php ================================================ cookies = new CookieJar(); } /** * Returns the authentication information. * * @return AuthenticationInformationResult */ public function authenticationInformation() { // Retrieve the response $response = $this->get(self::$URL_ENDPOINT_LOGIN); // Get the authentication information parser $parser = new AuthenticationInformationParser(); // Parse the content return $parser->parse($response); } /** * Returns the authentication ticket. * * @param string $username * @param string $password * @param AuthenticationInformationResult $authenticationInformation * @return TicketResult */ public function ticket($username, $password, $authenticationInformation) { $parameters = array( 'lt' => $authenticationInformation->getLtCode(), 'execution' => $authenticationInformation->getExecutionCode(), '_eventId' => 'submit', 'username' => $username, 'password' => $password, 'Login' => 'Sign In', ); // Retrieve the content. $response = $this->post(self::$URL_ENDPOINT_LOGIN, array('form_params' => $parameters, 'allow_redirects' => false)); // Get the authentication ticket parser $parser = new TicketParser(); // Parse the content return $parser->parse($response); } /** * Returns the authentication token. * * @param string $ticket * @return TokenResult */ public function token($ticket) { $parameters = array( 'client_id' => 'mobile-app_pokemon-go', 'redirect_uri' => 'https://www.nianticlabs.com/pokemongo/error', 'client_secret' => self::$CLIENT_SECRET, 'grant_type' => 'refresh_token', 'code' => $ticket, ); Log::debug(sprintf('[#%s] Ticket: \'%s\'', __CLASS__, $ticket)); // Retrieve the content. $content = $this->post(self::$URL_ENDPOINT_OAUTH, array('form_params' => $parameters)); // Get the authentication ticket parser $parser = new TokenParser(); // Parse the content return $parser->parse($content); } /** * Execute a GET request and returns the response content. * * @param string $url * @param array $parameters * @return ResponseInterface */ protected function get($url, $parameters = array()) { // Execute the GET request $response = $this->client()->get($url, $this->options($parameters)); // Retrieve the content return $response; } /** * Execute a POST request and returns the response content. * * @param string $url * @param array $parameters * @return ResponseInterface */ protected function post($url, $parameters = array()) { // Execute the POST request $response = $this->client()->post($url, $this->options($parameters)); // Retrieve the content return $response; } /** * Retrieve the options. * * @param array $options * @return array */ protected function options($options = array()) { return array_merge($options, array('cookies' => $this->cookies, array('headers' => array('User-Agent' => 'niantic')))); } /** * Returns the Client. * * @return Client */ protected function client() { return App::get('client'); } } ================================================ FILE: src/Authentication/Managers/PTC/AuthenticationCredentials/Parsers/AuthenticationInformationParser.php ================================================ validateResponse($response); // Retrieve the content $content = (string)$response->getBody(); // Decode the content $content = $this->content($content); Log::debug(sprintf('[#%s] Retrieved content: \'%s\' ', __CLASS__, var_export($content, true))); return new AuthenticationInformationResult(array('lt' => $content->lt, 'execution' => $content->execution)); } /** * Returns the content. * * @param ResponseInterface $response * @return mixed */ protected function content($response) { return json_decode($response); } } ================================================ FILE: src/Authentication/Managers/PTC/AuthenticationCredentials/Parsers/Parser.php ================================================ dom = $dom; } /** * The method which parses the content. * * @param mixed $content * @return Result */ abstract public function parse($content); /** * @param ResponseInterface $response * @throws ResponseException */ protected function validateResponse($response) { Log::debug(sprintf('[#%s] Validating response. Status code: \'%s\'', __CLASS__, $response->getStatusCode())); // Check if we retrieved a valid response status code if ($this->isSuccessfulResponse($response) || $this->isRedirect($response)) { return; } Log::debug(sprintf('[#%s] Retrieved a invalid response. Content: \'%s\'', __CLASS__, $response->getBody())); throw new ResponseException('Retrieved a invalid response from the server. Please try again later'); } /** * Returns true if the response was successful, false otherwise. * * @param ResponseInterface $response * @return bool */ protected function isSuccessfulResponse($response) { return $response->getStatusCode() === self::$RESPONSE_STATUS_SUCCESS; } /** * Returns true if the response corresponds to a redirect, false otherwise * * @param ResponseInterface $response * @return bool */ protected function isRedirect($response) { return $response->getStatusCode() === self::$RESPONSE_STATUS_REDIRECT; } } ================================================ FILE: src/Authentication/Managers/PTC/AuthenticationCredentials/Parsers/Results/AuthenticationInformationResult.php ================================================ data['lt']; } /** * Returns the execution code. */ public function getExecutionCode() { return $this->data['execution']; } } ================================================ FILE: src/Authentication/Managers/PTC/AuthenticationCredentials/Parsers/Results/Result.php ================================================ data = $data; } /** * @return mixed The parsed data */ public function getData() { return $this->data; } /** * @param mixed $data The parsed data */ public function setData($data) { $this->data = $data; } } ================================================ FILE: src/Authentication/Managers/PTC/AuthenticationCredentials/Parsers/Results/TicketResult.php ================================================ data['ticket']; } } ================================================ FILE: src/Authentication/Managers/PTC/AuthenticationCredentials/Parsers/Results/TokenResult.php ================================================ data['token']; } /** * Returns the timestamp. * * @return string */ public function getTimestamp() { return $this->data['timestamp']; } } ================================================ FILE: src/Authentication/Managers/PTC/AuthenticationCredentials/Parsers/TicketParser.php ================================================ validateResponse($response); Log::debug(sprintf('[#%s] Retrieved content: \'%s\'', __CLASS__, $response->getBody())); // Parse the content $content = $this->parseContent($response); // Check if the response includes any error messages if (array_key_exists('errors', $content)) { // Retrieve the error messages $errors = $content['errors']; // Check if there are any available error messages if (sizeof($errors) > 0) { Log::debug(sprintf('[#%s] Error messages in response. Errors: \'%s\'', __CLASS__, print_r($errors, true))); // A code of 503 indicates a service unavailable or unexpected error response. 0 is default $code = (strpos(implode($errors), 'unexpected error') !== false) ? AuthenticationException::AUTH_SERVER_ERROR : 0; throw new AuthenticationException(current($errors),$code); } } // Retrieves the location header $location = current($response->getHeader('Location')); Log::debug(sprintf('[#%s] Retrieved location header: \'%s\'', __CLASS__, $location)); return new TicketResult(array('ticket' => $this->parseTicket($location))); } /** * Returns the parsed content. * * @param ResponseInterface $response * @return array */ protected function parseContent($response) { // Retrieve the content $content = (string)$response->getBody(); // Decode the response body $content = json_decode($content, true); // Check if the response body is null if ($content === null) { return array(); } return $content; } /** * Returns the parsed ticket. * * @param string $location * @return string mixed */ protected function parseTicket($location) { return substr($location, strpos($location, '=') + 1); } } ================================================ FILE: src/Authentication/Managers/PTC/AuthenticationCredentials/Parsers/TokenParser.php ================================================ getBody(); $errors = array(); // Check if the response includes any error messages preg_match('/error=(?.*)/', $content->getContents(), $errors); if (sizeof($errors) > 0) { Log::debug(sprintf('[#%s] Error messages in response. Errors: \'%s\'', __CLASS__, print_r($errors, true))); // A code of 498 indicates an expired or otherwise invalid token. 0 is default $code = in_array('invalid_grant', $errors) ? AuthenticationException::PTC_INVALID_GRANT_ERROR : 0; throw new AuthenticationException(current($errors),$code); } $content = (string)$content; Log::debug(sprintf('[#%s] Retrieved content: \'%s\'', __CLASS__, $content)); return new TokenResult( array('token' => $this->parseToken($content), 'timestamp' => $this->parseExpiresTimestamp($content))); } /** * Returns the parsed ticket. * * @param string $content * @return string mixed */ protected function parseToken($content) { $matches = array(); preg_match('/access_token=(?.*)&expires/', $content, $matches); return $matches['token']; } /** * Returns the parsed ticket. * * @param string $content * @return string mixed */ protected function parseExpiresTimestamp($content) { $matches = array(); preg_match('/expires=(?.*)/', $content, $matches); return time() + intval($matches['expires']); } } ================================================ FILE: src/Authentication/Managers/PTC/AuthenticationCredentialsManager.php ================================================ username = $username; $this->password = $password; } /** * Returns the Oauth token. * * @return AccessToken */ public function getAccessToken() { // Check if we are authenticated if ($this->isAuthenticated() && ($token = $this->refreshTokenIfPossible())) { return $token; } // Retrieve the PTC authenticator $authenticator = $this->authenticator(); // Retrieve the access token by user credentials $accessToken = $authenticator->login($this->username, $this->password); // Dispatch event to listeners $this->dispatchEvent(static::EVENT_ACCESS_TOKEN, $accessToken); // Add the access token to the manager $this->setAccessToken($accessToken); return $accessToken; } /** * Returns the identifier. * * @return string */ public function getIdentifier() { return $this->authenticator()->identifier(); } /** * Refresh the token if possible. * * @return AccessToken|null * @throws AuthenticationException */ protected function refreshTokenIfPossible() { // Check if the oauth token is valid if ($this->isTokenValid()) { return $this->accessToken; } // Check if a refresh token is defined if ($this->hasFreshToken()) { // Use refresh token to retrieve new oauth token // Dispatch event to listeners $this->dispatchEvent(static::EVENT_ACCESS_TOKEN, $this->accessToken); return $this->accessToken; } return null; } /** * Returns the authenticator. * * @return Authenticator */ protected function authenticator() { return new Authenticator(); } } ================================================ FILE: src/Authentication/Managers/PTC/AuthenticationOauthTokenManager.php ================================================ */ namespace NicklasW\PkmGoApi\Authentication\Managers\PTC; use NicklasW\PkmGoApi\Authentication\AccessToken; use NicklasW\PkmGoApi\Authentication\Factory\Factory; use NicklasW\PkmGoApi\Authentication\Manager; class AuthenticationOauthTokenManager extends Manager { /** * AuthenticationOauthTokenManager constructor. * * @param AccessToken $token */ public function __construct(AccessToken $token) { $this->setAccessToken($token); } public function getAccessToken() { $this->dispatchEvent(static::EVENT_ACCESS_TOKEN, $this->accessToken); return $this->accessToken; } public function getIdentifier() { return Factory::PROVIDER_PTC; } } ================================================ FILE: src/Clients/Proxies/ClientProxy.php ================================================ client = $client; } /** * Send an HTTP request. * * @param RequestInterface $request Request to send * @param array $options Request options to apply to the given * request and to the transfer. * @return ResponseInterface * @throws GuzzleException */ public function send(RequestInterface $request, array $options = []) { return $this->client->send($request, $this->options($options)); } /** * Asynchronously send an HTTP request. * * @param RequestInterface $request Request to send * @param array $options Request options to apply to the given * request and to the transfer. * @return PromiseInterface */ public function sendAsync(RequestInterface $request, array $options = []) { return $this->client->sendAsync($request, $this->options($options)); } /** * Create and send an HTTP request. * Use an absolute path to override the base path of the client, or a * relative path to append to the base path of the client. The URL can * contain the query string as well. * * @param string $method HTTP method. * @param string|UriInterface $uri URI object or string. * @param array $options Request options to apply. * @return ResponseInterface * @throws GuzzleException */ public function request($method, $uri, array $options = []) { return $this->client->request($method, $uri, $this->options($options)); } /** * Create and send an asynchronous HTTP request. * Use an absolute path to override the base path of the client, or a * relative path to append to the base path of the client. The URL can * contain the query string as well. Use an array to provide a URL * template and additional variables to use in the URL template expansion. * * @param string $method HTTP method * @param string|UriInterface $uri URI object or string. * @param array $options Request options to apply. * @return PromiseInterface */ public function requestAsync($method, $uri, array $options = []) { return $this->client->requestAsync($method, $uri, $this->options($options)); } /** * Get a client configuration option. * These options include default request options of the client, a "handler" * (if utilized by the concrete client), and a "base_uri" if utilized by * the concrete client. * * @param string|null $option The config option to retrieve. * @return mixed */ public function getConfig($option = null) { return $this->client->getConfig($option); } /** * @param string $method * @param array $args * @return PromiseInterface|ResponseInterface */ public function __call($method, $args) { if (count($args) < 1) { throw new \InvalidArgumentException('Magic request methods require a URI and optional options array'); } $uri = $args[0]; $opts = isset($args[1]) ? $args[1] : []; return substr($method, -5) === 'Async' ? $this->requestAsync(substr($method, 0, -5), $uri, $this->options($opts)) : $this->request($method, $uri, $this->options($opts)); } /** * Returns the default configuration. * * @param array $options * @return array */ protected function options($options) { // Create a handler stack instance $stack = HandlerStack::create(); // Create a middleware for logging $stack->unshift(Middleware::log(Log::getInstance(), new MessageFormatter(self::$LOGGER_MESSAGE_FORMAT))); return array_merge($options, array('http_errors' => false)); } } ================================================ FILE: src/Facades/App.php ================================================ requestId = rand(100000000, 999999999); // Set the application $this->application = $application; // Initialize the envelope factory $this->envelopeFactory = new EnvelopeFactory(); } /** * Handles a request. * * @param Request $request * @param integer $retry * @throws AuthenticationException * @throws Exception */ public function handle($request, $retry = 0) { // Validate the session, check if the auth token has expired and renew if possible $this->validateSession(); // Build and populate request envelope $requestEnvelope = $this->build($request); // Execute the HTTP request $response = $this->call($requestEnvelope); // Validate the response envelope $this->validateResponseEnvelope($response); // Initialize session $this->session($response); // Check if the request corresponds to a handshake if ($this->isHandshake($response)) { Log::debug(sprintf('Handshake response. Status code: \'%s\'', $response->getStatusCode(), print_r($response->getError(), true))); $this->handle($request); return; } // Check if the request corresponds to a throttled response if ($this->isThrottledResponse($response)) { // Check the number of retries, only retry twice if ($retry < 2) { Log::debug(sprintf('Throttle response. Retrying. Number of retries: \'%s\'', $retry)); // Only one or two request per second is allowed, sleep one second before retrying sleep(1); $this->handle($request, ++$retry); return; } throw new Exception(sprintf('The server is to busy. Please try again later', $response->getStatusCode())); } // Check if the request corresponds to a unknown response if ($this->isUnknownResponse($response)) { throw new Exception(sprintf('Retrieved a unknown status code %s', $response->getStatusCode())); } // Handles and unsmarshalles the response envelope $request->handleResponse($response); } /** * Validates the response envelope. Throws exception on error. * * @param ResponseEnvelope $response * @throws AuthenticationException */ protected function validateResponseEnvelope($response) { // Check the authentication status if ($this->hasAuthenticationError($response)) { Log::debug(sprintf('Authentication error. Status code: \'%s\' Error message: \'%s\'', $response->getStatusCode(), print_r($response->getError(), true))); throw new AuthenticationException('Invalid authentication token provided'); } // Check the account status if ($this->isAccountBannedError($response)) { Log::debug(sprintf('Authentication error. Status code: \'%s\' Error message: \'%s\'', $response->getStatusCode(), print_r($response->getError(), true))); throw new AuthenticationException('Invalid authentication state. The account may be banned'); } } /** * Re-initialize the session. * * @param RequestEnvelope_AuthInfo_JWT $authenticationInformation */ protected function reinitializeSession($authenticationInformation) { $this->session = new Session(); $this->session->setAuthenticationInformation($authenticationInformation); } /** * Builds the server request envelope. * * @param Request $request * @return RequestEnvelope */ protected function build($request) { // Prepare the network request $networkRequest = new NetworkRequest(); $networkRequest->setRequestType($request->getType()); $networkRequest->setRequestMessage($request->getMessage()->encode()); // Prepare the request envelope $requestEnvelope = new RequestEnvelope(); $requestEnvelope->setStatusCode(self::$REQUEST_STATUS_CODE); // Sets the request id $requestEnvelope->setRequestId($this->requestId()); $requestEnvelope->setMsSinceLastLocationfix(rand(901, 999)); // Sets the location $requestEnvelope->setLatitude($this->application->getLocation()->getLatitude()); $requestEnvelope->setLongitude($this->application->getLocation()->getLongitude()); $requestEnvelope->setAccuracy(rand(30, 100) / 10); $repeatedField = new RepeatedField(GPBType::MESSAGE, NetworkRequest::class); $repeatedField[] = $networkRequest; // Add request $requestEnvelope->setRequests($repeatedField); return $requestEnvelope; } /** * Execute the server request. * * @param RequestEnvelope $requestEnvelope * @return ResponseEnvelope */ protected function call($requestEnvelope) { // Set the API URL $url = $this->session->getApiUrl(); // Check if a session is available if ($url == null) { $url = self::$API_URL; } // Prepare the authentication $this->prepareAuthentication($requestEnvelope); Log::debug(sprintf('The request envelope. Content: \'%s\'', print_r($requestEnvelope, true))); // Prepare the HTTP request $request = new HttpRequest('POST', $url, array('User-Agent' => 'Niantic App'), $requestEnvelope->encode()); // Execute the request $response = $this->client()->send($request); // Validate the retrieved response $this->validateResponse($response); // Unmarshall the response return $this->unmarshall($response); } /** * Unmarshall the response. * * @param ResponseInterface $response * @return ResponseEnvelope */ protected function unmarshall($response) { // Initialize the response envelope $responseEnvelop = new ResponseEnvelope(); // Unmarshall the response $responseEnvelop->decode($response->getBody()->getContents()); return $responseEnvelop; } /** * Handle the session. * * @param ResponseEnvelope $response * @return Session */ protected function session($response) { // Check if the session is initialized if (!$this->session) { return new Session(); } // Return if not initial handshake if (!$this->isHandshake($response)) { return; } // Set the API URL $this->session->setApiUrl(sprintf('https://%s/rpc', $response->getApiUrl())); // Set the authentication ticket $this->session->setAuthenticationTicket($response->getAuthTicket()); } /** * Check if the session is valid, if not we refresh if possible. */ protected function validateSession() { // Check if the current session is valid if ($this->session !== null && $this->session->isValid()) { return; } // Retrieve the renewed access token $accessToken = $this->manager()->getAccessToken(); // Build the authentication information $authenticationInformation = $this->envelopeFactory->create( EnvelopeFactory::$TYPE_AUTHINFO, $accessToken->getProvider(), $accessToken); // Reinitialize the session $this->reinitializeSession($authenticationInformation); } /** * Returns true if the request type corresponds to a authentication error, false otherwise. * * @param ResponseEnvelope $responseEnvelop * @return boolean */ protected function hasAuthenticationError($responseEnvelop) { return $responseEnvelop->getStatusCode() === self::$RESPONSE_STATUS_AUTHENTICATION_ERROR; } /** * Returns true if the request type corresponds to an account banned error, false otherwise. * * @param ResponseEnvelope $responseEnvelop * @return boolean */ protected function isAccountBannedError($responseEnvelop) { return $responseEnvelop->getStatusCode() === self::$RESPONSE_STATUS_ACCOUNT_BANNED_ERROR; } /** * Returns true if request type corresponds to a handshake, false otherwise. * * @param ResponseEnvelope $responseEnvelop * @return boolean */ protected function isHandshake($responseEnvelop) { return $responseEnvelop->getStatusCode() === self::$RESPONSE_STATUS_HANDSHAKE; } /** * Returns true if the request status code is unknown, false otherwise. * * @param ResponseEnvelope $responseEnvelop * @return boolean */ protected function isThrottledResponse($responseEnvelop) { return $responseEnvelop->getStatusCode() === self::$RESPONSE_STATUS_THROTTLED; } /** * Returns true if the request status code is unknown, false otherwise. * * @param ResponseEnvelope $responseEnvelop * @return boolean */ protected function isUnknownResponse($responseEnvelop) { return in_array($responseEnvelop->getStatusCode(), self::$RESPONSE_STATUS_UNKNOWN); } /** * Returns true if the status code corresponds to a server error, false otherwise. * * @param ResponseInterface $response * @return boolean */ protected function isServerError($response) { // Retrieve the initial integer from the status code $responseCode = substr($response->getStatusCode(), 0, 1); return $responseCode == 5 || $responseCode == 4; } /** * Returns the request id. * * @return integer */ protected function requestId() { return ++$this->requestId; } /** * Validate the request response. * * @param ResponseInterface $response * @throws ResponseException */ protected function validateResponse($response) { // Check if the response corresponds to a server error if (!$this->isServerError($response)) { return; } throw new ResponseException( sprintf('Retrieved a invalid response. Response code: \'%s\'', $response->getStatusCode())); } /** * Prepares the user authentication. * * @param RequestEnvelope $requestEnvelope */ protected function prepareAuthentication($requestEnvelope) { // Check if we retrieved a authentication ticket since earlier if ($this->session->getAuthenticationTicket() == null) { @$requestEnvelope->setAuthInfo($this->session->getAuthenticationInformation()); return; } @$requestEnvelope->setAuthTicket($this->session->getAuthenticationTicket()); } /** * Returns the authentication manager * * @return Manager */ protected function manager() { return $this->application->getManager(); } /** * Returns the client. * * @returns Client */ protected function client() { return App::get('client'); } } ================================================ FILE: src/Handlers/Session.php ================================================ getAuthenticationTicket(); // Check if we have not authenticated yet if ($authenticationTicket === null && $this->getAuthenticationInformation() !== null) { return true; } // Check if the expire timestamp is valid if ($authenticationTicket->getExpireTimestampMs() > microtime()) { return true; } return false; } /** * @return AuthTicket */ public function getAuthenticationTicket() { return $this->authenticationTicket; } /** * @param AuthTicket $authenticationTicket */ public function setAuthenticationTicket($authenticationTicket) { $this->authenticationTicket = $authenticationTicket; } /** * @return RequestEnvelope_AuthInfo_JWT */ public function getAuthenticationInformation() { return $this->authenticationInformation; } /** * @param RequestEnvelope_AuthInfo_JWT $authenticationInformation */ public function setAuthenticationInformation($authenticationInformation) { $this->authenticationInformation = $authenticationInformation; } /** * @return string */ public function getApiUrl() { return $this->apiUrl; } /** * @param string $apiUrl */ public function setApiUrl($apiUrl) { $this->apiUrl = $apiUrl; } } ================================================ FILE: src/Kernels/ApplicationKernel.php ================================================ manager = $manager; $this->location = new Location(); // Add the defined service providers $this->addServiceProviders(); parent::__construct(); } /** * Initializes the library. */ public function initialize() { parent::initialize(); // Initialize the client $this->initializeClient(); // Add the application object to the container $this->container->set('app', $this); } /** * Sets the HTTP client. * * @param Client $client */ public function setClient($client) { $this->container()->set('client', new ClientProxy($client)); } /** * Returns the pokemon go api. * * @return PokemonGoApi * @throws NotFoundException */ public function getPokemonGoApi() { return $this->container->get('PokemonGoApi'); } /** * Sets the location. * * @param Location $location */ public function setLocation($location) { $this->location = $location; } /** * @return Location */ public function getLocation() { return $this->location; } /** * @return Manager */ public function getManager() { return $this->manager; } /** * Initialize client. */ public function initializeClient() { $this->container->set('client', new ClientProxy(new Client())); } /** * Add the facades classes. */ protected function addFacades() { $this->proxyManager->addProxy('App', 'NicklasW\PkmGoApi\Facades\App'); parent::addFacades(); } /** * Add the service providers classes. */ protected function addServiceProviders() { // Add the pokemon go api service provider $this->register(new PokemonGoApiServiceProvider($this)); // Add the request handler service provider $this->register(new RequestHandlerServiceProvider($this)); } } ================================================ FILE: src/Kernels/Kernel.php ================================================ initializeContainer(); // Initialize the library $this->initialize(); } /** * Finds an entry of the container by its identifier and returns it. * * @param string $id Identifier of the entry to look for. * @throws NotFoundException No entry was found for this identifier. * @throws ContainerException Error while retrieving the entry. * @return mixed Entry. */ public function get($id) { return $this->container->get($id); } /** * Returns true if the container can return an entry for the given identifier. * Returns false otherwise. * * @param string $id Identifier of the entry to look for. * @return boolean */ public function has($id) { return $this->container->has($id); } /** * Register a service provider. * * @param ServiceProvider $provider */ public function register($provider) { $this->serviceProviders[] = $provider; } /** * Sets the logger instance. * * @param LoggerInterface $logger */ public function setLogger(LoggerInterface $logger) { $this->container->set('log', $logger); } /** * Initializes the library. */ protected function initialize() { // Initialize the proxy manager $this->initializeProxyManager(); // Initialize the logger $this->initializeLogger(); // Initialize the service providers $this->initializeServiceProviders(); } /** * Add the facades classes. */ protected function addFacades() { // Add the Log facade $this->proxyManager->addProxy('Log', 'NicklasW\PkmGoApi\Facades\Log'); } /** * Initialize the container. */ protected function initializeContainer() { // Initialize the container builder $builder = new ContainerBuilder(); // Build the container $this->container = $builder->build(); } /** * Initialize the proxy manager. */ protected function initializeProxyManager() { // Initialize the proxy manager $this->proxyManager = new ProxyManager($this); // Add the facades $this->addFacades(); $this->proxyManager->enable(ProxyManager::ROOT_NAMESPACE_ANY); } /** * Returns the container. * * @return Container */ public function container() { return $this->container; } /** * Initialize the service providers. */ protected function initializeServiceProviders() { // Iterate through the list of service providers foreach ($this->serviceProviders as $serviceProvider) { // Register the service provider $serviceProvider->register(); } } /** * Initialize the logger. */ protected function initializeLogger() { // Add the logger instance to the container $this->container->set('log', new NullLogger()); } } ================================================ FILE: src/Providers/PokemonGoApiServiceProvider.php ================================================ app->container()->set('PokemonGoApi', new PokemonGoApi()); } } ================================================ FILE: src/Providers/RequestHandlerServiceProvider.php ================================================ app->container()->set('RequestHandler', new RequestHandler($this->app)); } } ================================================ FILE: src/Providers/ServiceProvider.php ================================================ app = $app; } /** * Register the service provider. * * @return mixed */ abstract public function register(); } ================================================ FILE: src/Requests/AuthenticateRequest.php ================================================ getReturns(); // Initialize the player response $checkChallengeResponse = new CheckChallengeResponse(); // Unmarshall the response $checkChallengeResponse->decode($requestData[0]); $this->setData($checkChallengeResponse); } } ================================================ FILE: src/Requests/Envelops/AuthInfoEnvelope.php ================================================ authInfoEnvelope(...$parameters); break; } return $envelope; } /** * Creates AuthInfoEnvelope. * * @param string $type * @param AccessToken $token * @return RequestEnvelope_AuthInfo */ protected function authInfoEnvelope($type, $token) { $authInfoJWT = new RequestEnvelope_AuthInfo_JWT(); $authInfoJWT->setContents($token->getToken()); $authInfoJWT->setUnknown2(59); $authInfoEnvelope = new RequestEnvelope_AuthInfo(); $authInfoEnvelope->setProvider($type); $authInfoEnvelope->setToken($authInfoJWT); return $authInfoEnvelope; } } ================================================ FILE: src/Requests/EvolvePokemonRequest.php ================================================ pokemonId = $pokemonId; } /** * @return int */ public function getType() { return RequestType::EVOLVE_POKEMON; } /** * @return Message */ public function getMessage() { $evolvePokemonMessage = new EvolvePokemonMessage(); $evolvePokemonMessage->setPokemonId($this->pokemonId); return $evolvePokemonMessage; } /** * Handles the request data. * * @param ResponseEnvelope $data * @return EvolvePokemonResponse */ public function handleResponse($data) { // Retrieve the specific request data $requestData = $data->getReturns(); // Initialize the evolve pokemon response $evolvePokemonResponse = new EvolvePokemonResponse(); // Unmarshall the response $evolvePokemonResponse->decode($requestData[0]); $this->setData($evolvePokemonResponse); } } ================================================ FILE: src/Requests/FortSearchRequest.php ================================================ id = $id; $this->latitude = $latitude; $this->longitude = $longitude; } /** * @return int */ public function getType() { return RequestType::FORT_SEARCH;; } /** * @return GetMapObjectsMessage */ public function getMessage() { $message = new FortSearchMessage(); $message->setFortId($this->id); $message->setFortLatitude($this->latitude); $message->setFortLongitude($this->longitude); $message->setPlayerLatitude($this->getCurrentLatitude()); $message->setPlayerLongitude($this->getCurrentLongitude()); return $message; } /** * Handles the request data. * * @param ResponseEnvelope $data * @return mixed */ public function handleResponse($data) { // Retrieve the specific request data $requestData = $data->getReturns(); // Initialize the fort search response $fortSearchResponse = new FortSearchResponse(); // Unmarshall the response $fortSearchResponse->decode($requestData[0]); $this->setData($fortSearchResponse); } /** * Returns the current latitude of the player. * * @return float */ protected function getCurrentLatitude() { return $this->getApplication()->getLatitude(); } /** * Returns the current longitude of the player. * * @return float */ protected function getCurrentLongitude() { return $this->getApplication()->getLongitude(); } /** * Returns the application. * * @return ApplicationKernel */ protected function getApplication() { return App::getInstance(); } } ================================================ FILE: src/Requests/GetInventoryRequest.php ================================================ getReturns(); // Initialize the inventory response $inventoryResponse = new GetInventoryResponse(); // Unmarshall the response $inventoryResponse->decode($requestData[0]); $this->setData($inventoryResponse); } } ================================================ FILE: src/Requests/GetJournalRequest.php ================================================ getReturns(); // Initialize the sfida action log response $sfidaActionResponse = new SfidaActionLogResponse(); // Unmarshall the response $sfidaActionResponse->decode($requestData[0]); $this->setData($sfidaActionResponse); } } ================================================ FILE: src/Requests/GetMapResourcesRequest.php ================================================ latitude = $latitude; $this->longitude = $longitude; $this->cellIds = $cellIds; } /** * @return int */ public function getType() { return RequestType::GET_MAP_OBJECTS;; } /** * @return GetMapObjectsMessage */ public function getMessage() { $message = new GetMapObjectsMessage(); $message->setLatitude($this->latitude); $message->setLongitude($this->longitude); foreach ($this->cellIds as $cellId) { $message->addCellId($cellId); $message->addSinceTimestampMs(0); } return $message; } /** * Handles the request data. * * @param ResponseEnvelope $data * @return mixed */ public function handleResponse($data) { // Retrieve the specific request data $requestData = $data->getReturnsArray(); // Initialize the map objects response $mapObjectsResponse = new GetMapObjectsResponse(); // Unmarshall the response $mapObjectsResponse->read($requestData[0]); $this->setData($mapObjectsResponse); } } ================================================ FILE: src/Requests/GetPlayerRequest.php ================================================ getReturns(); // Initialize the player response $playerResponse = new GetPlayerResponse(); // Unmarshall the response $playerResponse->decode($requestData[0]); $this->setData($playerResponse); } } ================================================ FILE: src/Requests/RecycleInventoryItemRequest.php ================================================ itemId = $itemId; $this->itemCount = $count; } /** * @return int */ public function getType() { return RequestType::RECYCLE_INVENTORY_ITEM; } /** * @return Message */ public function getMessage() { $recycleInventoryItemMessage = new RecycleInventoryItemMessage(); $recycleInventoryItemMessage->setItemId($this->itemId); $recycleInventoryItemMessage->setCount($this->itemCount); return $recycleInventoryItemMessage; } /** * Handles the request data. * * @param ResponseEnvelope $data * @return RecycleInventoryItemResponse */ public function handleResponse($data) { // Retrieve the specific request data $requestData = $data->getReturns(); // Initialize the rename pokemon response $recycleInventoryItemResponse = new RecycleInventoryItemResponse(); // Unmarshall the response $recycleInventoryItemResponse->decode($requestData[0]); $this->setData($recycleInventoryItemResponse); } } ================================================ FILE: src/Requests/RenamePokemonRequest.php ================================================ pokemonId = $pokemonId; $this->name = $name; } /** * @return int */ public function getType() { return RequestType::NICKNAME_POKEMON; } /** * @return Message */ public function getMessage() { $nicknamePokemonMessage = new NicknamePokemonMessage(); $nicknamePokemonMessage->setPokemonId($this->pokemonId); $nicknamePokemonMessage->setNickname($this->name); return $nicknamePokemonMessage; } /** * Handles the request data. * * @param ResponseEnvelope $data * @return NicknamePokemonResponse */ public function handleResponse($data) { // Retrieve the specific request data $requestData = $data->getReturns(); // Initialize the rename pokemon response $nicknamePokemonResponse = new NicknamePokemonResponse(); // Unmarshall the response $nicknamePokemonResponse->decode($requestData[0]); $this->setData($nicknamePokemonResponse); } } ================================================ FILE: src/Requests/Request.php ================================================ data; } /** * @param mixed $data */ public function setData($data) { $this->data = $data; } } ================================================ FILE: src/Requests/SetFavoritePokemonRequest.php ================================================ pokemonId = $pokemonId; $this->favorite = $favorite; } /** * @return int */ public function getType() { return RequestType::SET_FAVORITE_POKEMON; } /** * @return Message */ public function getMessage() { $setFavoritePokemonMessage = new SetFavoritePokemonMessage(); $setFavoritePokemonMessage->setPokemonId($this->pokemonId); $setFavoritePokemonMessage->setIsFavorite($this->favorite); return $setFavoritePokemonMessage; } /** * Handles the request data. * * @param ResponseEnvelope $data * @return SetFavoritePokemonResponse */ public function handleResponse($data) { // Retrieve the specific request data $requestData = $data->getReturns(); // Initialize the rename pokemon response $setFavoritePokemonResponse = new SetFavoritePokemonResponse(); // Unmarshall the response $setFavoritePokemonResponse->decode($requestData[0]); $this->setData($setFavoritePokemonResponse); } } ================================================ FILE: src/Requests/TransferPokemonRequest.php ================================================ pokemonId = $pokemonId; } /** * @return int */ public function getType() { return RequestType::RELEASE_POKEMON; } /** * @return Message */ public function getMessage() { $releasePokemonMessage = new ReleasePokemonMessage(); $releasePokemonMessage->setPokemonId($this->pokemonId); return $releasePokemonMessage; } /** * Handles the request data. * * @param ResponseEnvelope $data * @return mixed */ public function handleResponse($data) { // Retrieve the specific request data $requestData = $data->getReturns(); // Initialize the release pokemon response $releasePokemonResponse = new ReleasePokemonResponse(); // Unmarshall the response $releasePokemonResponse->decode($requestData[0]); $this->setData($releasePokemonResponse); } } ================================================ FILE: src/Requests/UpgradePokemonRequest.php ================================================ pokemonId = $pokemonId; } /** * @return int */ public function getType() { return RequestType::UPGRADE_POKEMON; } /** * @return Message */ public function getMessage() { $upgradePokemonMessage = new UpgradePokemonMessage(); $upgradePokemonMessage->setPokemonId($this->pokemonId); return $upgradePokemonMessage; } /** * Handles the request data. * * @param ResponseEnvelope $data * @return mixed */ public function handleResponse($data) { // Retrieve the specific request data $requestData = $data->getReturns(); // Initialize the release pokemon response $upgradePokemonResponse = new UpgradePokemonResponse(); // Unmarshall the response $upgradePokemonResponse->decode($requestData[0]); $this->setData($upgradePokemonResponse); } } ================================================ FILE: src/Requests/UseIncenseRequest.php ================================================ itemId = $itemId; } /** * @return int */ public function getType() { return RequestType::USE_INCENSE; } /** * @return Message */ public function getMessage() { $useIncenseMessage = new UseIncenseMessage(); $useIncenseMessage->setIncenseType($this->itemId); return $useIncenseMessage; } /** * Handles the request data. * * @param ResponseEnvelope $data * @return UseIncenseResponse */ public function handleResponse($data) { // Retrieve the specific request data $requestData = $data->getReturns(); // Initialize the rename pokemon response $useIncenseResponse = new UseIncenseResponse(); // Unmarshall the response $useIncenseResponse->decode($requestData[0]); $this->setData($useIncenseResponse); } } ================================================ FILE: src/Requests/UseItemXpBoostRequest.php ================================================ itemId = $itemId; } /** * @return int */ public function getType() { return RequestType::USE_ITEM_XP_BOOST; } /** * @return Message */ public function getMessage() { $useItemXpBoostMessage = new UseItemXpBoostMessage(); $useItemXpBoostMessage->setItemId($this->itemId); return $useItemXpBoostMessage; } /** * Handles the request data. * * @param ResponseEnvelope $data * @return UseItemXpBoostResponse */ public function handleResponse($data) { // Retrieve the specific request data $requestData = $data->getReturns(); // Initialize the rename pokemon response $useItemXpBoostResponse = new UseItemXpBoostResponse(); // Unmarshall the response $useItemXpBoostResponse->decode($requestData[0]); $this->setData($useItemXpBoostResponse); } } ================================================ FILE: src/Requests/VerifyChallengeRequest.php ================================================ token = $token; } /** * @return int */ public function getType() { return RequestType::VERIFY_CHALLENGE; } /** * @return Message */ public function getMessage() { $verifyChallengeMessage = new VerifyChallengeMessage(); $verifyChallengeMessage->setToken($this->token); return $verifyChallengeMessage; } /** * Handles the request data. * * @param ResponseEnvelope $data * @return mixed */ public function handleResponse($data) { // DEBUG - dump response object //var_dump($data); // DEBUG - check status code of response for error handling, but error can return both 1 and 2 - not sure why? //echo "StatusCode: " . $data->getStatusCode(); // Initialize the VerifyChallenge response $verifyChallengeResponse = new VerifyChallengeResponse(); // Retrieve the specific request data $requestData = $data->getReturns(); if ($requestData) { // Unmarshall the response $verifyChallengeResponse->decode($requestData[0]); }else { // HACK to instansiate a valid VerifyChallengeResponse object when $requestData == NULL - sets success to "0"; $verifyChallengeResponse->setSuccess(true); } $this->setData($verifyChallengeResponse); } } ================================================ FILE: src/Services/Request/CheckChallengeRequestService.php ================================================ requestHandler()->handle($checkChallengeRequest); return $checkChallengeRequest->getData(); } } ================================================ FILE: src/Services/Request/InventoryRequestService.php ================================================ requestHandler()->handle($inventoryRequest); return $inventoryRequest->getData(); } /** * Recycle item. * * @param integer $itemId * @param int $count * @return RecycleInventoryItemResponse */ public function recycle($itemId, $count) { $recycleInventoryItemRequest = new RecycleInventoryItemRequest($itemId, $count); $this->requestHandler()->handle($recycleInventoryItemRequest); return $recycleInventoryItemRequest->getData(); } /** * Use incense item. * * @param integer $itemId * @return UseIncenseResponse */ public function useIncense($itemId) { $useIncenseRequest = new UseIncenseRequest($itemId); $this->requestHandler()->handle($useIncenseRequest); return $useIncenseRequest->getData(); } /** * Use xp boost item. * * @param integer $itemId * @return UseItemXpBoostResponse */ public function useItemXpBoost($itemId) { $useItemXpBoostRequest = new UseItemXpBoostRequest($itemId); $this->requestHandler()->handle($useItemXpBoostRequest); return $useItemXpBoostRequest->getData(); } } ================================================ FILE: src/Services/Request/JournalRequestService.php ================================================ requestHandler()->handle($journalRequest); return $journalRequest->getData(); } } ================================================ FILE: src/Services/Request/MapRequestService.php ================================================ requestHandler()->handle($mapResourcesRequest); return $mapResourcesRequest->getData(); } } ================================================ FILE: src/Services/Request/PlayerRequestService.php ================================================ requestHandler()->handle($playerRequest); return $playerRequest->getData(); } } ================================================ FILE: src/Services/Request/PokemonRequestService.php ================================================ requestHandler()->handle($transferPokemonRequest); return $transferPokemonRequest->getData(); } /** * Renames a pokemon. * * @param integer $pokemonId * @param string $name * @return NicknamePokemonResponse */ public function rename($pokemonId, $name) { $renamePokemonRequest = new RenamePokemonRequest($pokemonId, $name); $this->requestHandler()->handle($renamePokemonRequest); return $renamePokemonRequest->getData(); } /** * Evolves the pokemon. * * @param integer $pokemonId * @return EvolvePokemonResponse * @throws AuthenticationException * @throws Exception */ public function envolve($pokemonId) { $evolvePokemonRequest = new EvolvePokemonRequest($pokemonId); $this->requestHandler()->handle($evolvePokemonRequest); return $evolvePokemonRequest->getData(); } /** * Upgrade the pokemon. * * @param integer $pokemonId * @return UpgradePokemonResponse * @throws AuthenticationException * @throws Exception */ public function upgrade($pokemonId) { $upgradePokemonRequest = new UpgradePokemonRequest($pokemonId); $this->requestHandler()->handle($upgradePokemonRequest); return $upgradePokemonRequest->getData(); } /** * Set pokemon favorite. * * @param integer $pokemonId * @param boolean $fav * @return SetFavoritePokemonResponse * @throws AuthenticationException * @throws Exception */ public function favorite($pokemonId, $fav) { $setFavoritePokemonRequest = new SetFavoritePokemonRequest($pokemonId, $fav); $this->requestHandler()->handle($setFavoritePokemonRequest); return $setFavoritePokemonRequest->getData(); } } ================================================ FILE: src/Services/Request/PokestopRequestService.php ================================================ requestHandler()->handle($fortSearchRequest); return $fortSearchRequest->getData(); } } ================================================ FILE: src/Services/RequestService.php ================================================ getContainer()->get('RequestHandler'); } /** * Returns the container. * * @return Container */ protected function getContainer() { return App::container(); } } ================================================ FILE: tests/Api/Pokemon/PokemonTest.php ================================================ */ namespace NicklasW\PkmGoApi\Test\Api\Pokemon; use NicklasW\PkmGoApi\Api\Player\Data\Inventory\CandyItem; use NicklasW\PkmGoApi\Api\Player\Data\Inventory\PokemonItem; use NicklasW\PkmGoApi\Api\Player\Data\Inventory\Stats; use NicklasW\PkmGoApi\Api\Player\Data\Profile\Currencies; use NicklasW\PkmGoApi\Api\Player\Data\Profile\Currency; use NicklasW\PkmGoApi\Api\Player\Inventory; use NicklasW\PkmGoApi\Api\Player\Profile; use NicklasW\PkmGoApi\Api\Pokemon\Data\PokemonMetaRegistry; use NicklasW\PkmGoApi\Api\Pokemon\Pokemon; use POGOProtos\Enums\PokemonId; class PokemonTest extends \PHPUnit_Framework_TestCase { const UPGRADE_TEST_LEVEL = 30; /** * Get a Pokemon mock with overwritten getCandies method. * * @param PokemonItem $pokemonItem * @param CandyItem $candyItem * * @return Pokemon|\PHPUnit_Framework_MockObject_MockObject */ protected function buildCandyMockedPokemon(PokemonItem $pokemonItem, CandyItem $candyItem) { $stub = $this->getMockBuilder(Pokemon::class) ->setConstructorArgs([$pokemonItem]) ->setMethods(['getCandies']) ->getMock(); $stub->method('getCandies')->willReturn($candyItem); return $stub; } /** * Get a Pokemon mock with overwritten methods for getting player level, stardust and candy. * * @param PokemonItem $pokemonItem * @param int $level * @param Currency $stardust * @param CandyItem $candyItem * * @return Pokemon|\PHPUnit_Framework_MockObject_MockObject */ protected function buildLevelStardustCandyMockedPokemon(PokemonItem $pokemonItem, $level, Currency $stardust, CandyItem $candyItem) { $stub = $this->getMockBuilder(Pokemon::class) ->setConstructorArgs([$pokemonItem]) ->setMethods([ 'inventory', 'profile', 'getCandies', ]) ->getMock(); $statsStub = $this->getMockBuilder(Stats::class) ->disableOriginalConstructor() ->setMethods(['getLevel']) ->getMock(); $statsStub->method('getLevel')->willReturn($level); $inventoryStub = $this->getMockBuilder(Inventory::class) ->disableOriginalConstructor() ->setMethods(['getStats']) ->getMock(); $inventoryStub->method('getStats')->willReturn($statsStub); $currenciesStub = $this->getMockBuilder(Currencies::class) ->disableOriginalConstructor() ->setMethods(['getStardust']) ->getMock(); $currenciesStub->method('getStardust')->willReturn($stardust); $profileStub = $this->getMockBuilder(Profile::class) ->disableOriginalConstructor() ->setMethods(['getCurrencies']) ->getMock(); $profileStub->method('getCurrencies')->willReturn($currenciesStub); $stub->method('inventory')->willReturn($inventoryStub); $stub->method('profile')->willReturn($profileStub); $stub->method('getCandies')->willReturn($candyItem); return $stub; } /** * Tests that the deployment status of a Pokemon is identified correctly. * * @param PokemonItem $pokemonItem * @param bool $deploymentStatus * * @dataProvider providerDeployedPokemon */ public function testIsDeployed(PokemonItem $pokemonItem, $deploymentStatus) { $pokemon = new Pokemon($pokemonItem); $this->assertSame($deploymentStatus, $pokemon->isDeployed()); } /** * Provides a set of Test-PokemonItems for checking their deployment to a fort. * * @return array */ public function providerDeployedPokemon() { $deployedTo20 = new PokemonItem(); $deployedTo20->setDeployedFortId(20); yield [$deployedTo20, true]; $undeployed = new PokemonItem(); yield [$undeployed, false]; } /** * Tests that evolvability of a Pokemon is identified correctly. * * @param Pokemon $pokemon * @param bool $evolvability * * @dataProvider providerEvolvePokemon */ public function testCanEvolve(Pokemon $pokemon, $evolvability) { $this->assertSame($evolvability, $pokemon->canEvolve()); } /** * Provides a set of Test-Pokemons for checking their evolvability. * * @return array */ public function providerEvolvePokemon() { $deployedTo20 = new PokemonItem(); $deployedTo20->setDeployedFortId(20); yield [new Pokemon($deployedTo20), false]; $venusaur = new PokemonItem(); $venusaur->setPokemonId(PokemonId::VENUSAUR); yield [new Pokemon($venusaur), false]; $bulbasaur = new PokemonItem(); $bulbasaur->setPokemonId(PokemonId::BULBASAUR); $noCandy = new CandyItem(); $noCandy->setCandy(0); yield [$this->buildCandyMockedPokemon($bulbasaur, $noCandy), false]; $bulbasaurMeta = PokemonMetaRegistry::getByPokemonId(PokemonId::BULBASAUR); $enoughCandy = new CandyItem(); $enoughCandy->setCandy($bulbasaurMeta->getCandyToEvolve() * 3); yield [$this->buildCandyMockedPokemon($bulbasaur, $enoughCandy), true]; } /** * Tests that upgradeability of a Pokemon is identified correctly. * * @param Pokemon $pokemon * @param bool $upgradeability * * @dataProvider providerUpgradePokemon */ public function testCanUpgrade(Pokemon $pokemon, $upgradeability) { $this->assertSame($upgradeability, $pokemon->canUpgrade()); } /** * Provides a set of Test-Pokemons for checking their upgradeability. * * @return array */ public function providerUpgradePokemon() { $deployedTo20 = new PokemonItem(); $deployedTo20->setDeployedFortId(20); yield [new Pokemon($deployedTo20), false]; $abraMeta = PokemonMetaRegistry::getByPokemonId(PokemonId::ABRA); $abra = new PokemonItem(); $abra->setPokemonId(PokemonId::ABRA); $abraOnSteroids = clone $abra; $abraOnSteroids->setCp(PHP_INT_MAX); $noStardust = new Currency(); $noStardust->setAmount(0); $muchStardust = new Currency(); $muchStardust->setAmount(PHP_INT_MAX); $noCandy = new CandyItem(); $noCandy->setCandy(0); $enoughCandy = new CandyItem(); $enoughCandy->setCandy($abraMeta->getCandyToEvolve() * 3); yield [$this->buildLevelStardustCandyMockedPokemon($abraOnSteroids, 1, $muchStardust, $enoughCandy), false]; yield [$this->buildLevelStardustCandyMockedPokemon($abra, static::UPGRADE_TEST_LEVEL, $muchStardust, $noCandy), false]; yield [$this->buildLevelStardustCandyMockedPokemon($abra, static::UPGRADE_TEST_LEVEL, $noStardust, $enoughCandy), false]; yield [$this->buildLevelStardustCandyMockedPokemon($abra, static::UPGRADE_TEST_LEVEL, $muchStardust, $enoughCandy), true]; } }