Compare commits

..

25 Commits

Author SHA1 Message Date
06f0835353 Bump year to 2025 2025-01-25 01:23:29 +01:00
fe4dd38656 Update pokemon 2024-07-14 15:12:02 +02:00
b6393beaee Update repository URL 2024-07-14 15:10:34 +02:00
9429626a25 Add Hidden Treasure DLC Pokémons 2024-01-29 15:04:29 +01:00
8afa5684cf Flashdex: wording 2024-01-07 01:22:54 +01:00
cba1c7c3ef Flashdex: added parameters in URL for sharing 2024-01-06 15:31:52 +01:00
670b33850f Remove twitter script from homepage 2024-01-06 00:26:15 +01:00
a4b32ca3ae Fix 1G alternative images not showing 2024-01-06 00:24:53 +01:00
38bdaf397b Remove diploma border 2024-01-06 00:20:34 +01:00
9992e7cc28 Update jQuery, update 2024, remove Twitter share (RIP) 2024-01-05 18:38:03 +01:00
4ab3df9b81 Update jQuery: 3.6.0 => 3.6.4 2023-04-29 13:01:02 +02:00
bd413faf9f Bugfix and code cleaning 2023-04-29 12:57:21 +02:00
ae165903bd Add Walking Wake and Iron Leaves 2023-03-15 18:33:25 +01:00
36dc9b5923 Fix missing names 2023-02-19 00:52:59 +01:00
09bbf223c3 Update to support the 9th generation 2023-02-18 00:48:06 +01:00
c3f84ab2ab Adding 3 new 9G monsters 2022-10-17 23:39:00 +02:00
109334f441 Update with 5 new 9G monsters 2022-09-08 13:57:15 +02:00
5ec2590920 Update with new 9G Pokémons 2022-08-04 23:27:31 +02:00
68d555c676 Fix Pokétest indexes 2022-08-03 00:06:52 +02:00
9edf9e135d Add new batch of 9G monsters 2022-07-25 12:17:35 +02:00
3bde0a4a4f Fix: game could be launched multiple times 2022-03-15 12:47:37 +01:00
caab9fe47d Version 2.9
* Custom input for answer
* Option for no timer
* Play again button
* Rewrite About page
* Modernize clipboard copy
* Lots of misc. fixes
2022-03-14 21:30:46 +01:00
074726aea4 Small visual improvements for Flashdex 2022-03-04 14:39:45 +01:00
396681cfb0 Real iOS compatibility 2022-03-04 14:26:36 +01:00
14e784f821 iOS compatibility 2022-03-04 13:56:46 +01:00
26 changed files with 535 additions and 287 deletions

2
.gitmodules vendored
View File

@ -1,3 +1,3 @@
[submodule "pokemon"]
path = pokemon
url = https://git.n700.ovh/keb/poketest-pokemon.git
url = https://git.marchal.dev/keb/poketest-pokemon.git

View File

@ -2,27 +2,30 @@
### About
Around 2012, when I was still a computer science student, I found increasingly difficult the remember the name of all Pokémons. So I decided, as a way to be familiar with JavaScript (even though I've never touched it again after that) to program this little website: <u>Pokétest</u>, an interactive browser game, where you have to find the name of Pokémons in a limited time ; and <u>Flashdex</u>, which is a simple Pokédex with high resolution images.
Around 2012, when I was still a computer science student, I found increasingly difficult the remember the name of all Pokémons. So I decided, as a way to be familiar with JavaScript (even though I've never touched it again after that) to program this little website: <u>Pokétest</u>, an interactive browser game, where you have to find the name of Pokémons in a limited time; and <u>Flashdex</u>, which is a simple Pokédex with high resolution images.
Now that there are now more than 900 of them, and it's as useful as ever! The website features filters for all generations, eight languages settings (English, French, Deutsch, Korean, Japanese, Rōmaji, Traditional and Simplified Chinese) and four combinables modes (image visible or as a silhouette ; configurable number of questions or infinite). It can be played with the mouse or the keyboard (input 1, 2, 3, 4).
Now that there are now more than a thousand of them, and it's as useful as ever! The website features filters for all generations, eight languages settings (English, French, Deutsch, Korean, Japanese, Rōmaji, Traditional and Simplified Chinese) and four combinables modes (image visible or as a silhouette; configurable number of questions or infinite). It can be played with the mouse or the keyboard (input 1, 2, 3, 4).
### Planned updates
- Make answer choices closer by type
- Custom input answers for harder difficulty
- Type weakness calculator
### Scripts
**imagemagick** can be extremely useful to work with batch of images. This script allows to resize a batch of PNG images to a max width of 700px, without altering the height while keeping the ratio:
`mogrify '*.png[x700>]'`
`magick mogrify '*.png[x700>]'`
And this one allows to resize to 700x700px, but putting the image at the center if it is smaller than that.
`magick mogrify -resize 700x700 -background transparent -gravity center -extent 700x700 *.png`
### Licenses
This website has been developed in <strong>JavaScript</strong> using the <strong>jQuery</strong> library. It uses the <a href="https://github.com/alexanderdickson/waitForImages">waitForImages plugin</a>. All of those components are licensed under the MIT license, as is this website's source code. This website is <strong>HTML5</strong> and <strong>CSS3</strong> compliant.
The Pokémon names, the associated artworks and the Pokémon licence is trademarked by <strong>Nintendo</strong> and <strong>The Pokémon Company</strong>, 1996 - 2022.
The Pokémon names, the associated artworks and the Pokémon licence is trademarked by <strong>Nintendo</strong> and <strong>The Pokémon Company</strong>, 1996 - 2025.
All the Pokémon artworks were taken from <a href="https://bulbapedia.bulbagarden.net/wiki/Main_Page">Bulbapedia</a>, that I'd like to thank for their huge work for the Pokémon community.

View File

@ -7,10 +7,10 @@
<link rel="stylesheet" type="text/css" href="normalize-8.0.1.css" id="stylesheet">
<link rel="stylesheet" type="text/css" href="style.css" id="stylesheet">
<link rel="shortcut icon" type="image/png" href="img/favicon.png" />
<script src="jquery-3.6.0.min.js"></script>
<script src="jquery-3.7.1.min.js"></script>
<script src="interface.js"></script>
<script src="poketest.js"></script>
<title>Pokétest</title>
<title>Pokétest - About</title>
</head>
<body>
<div class="bg"></div>
@ -32,54 +32,58 @@
<img src="pokemon/877-0.png" class="top-companion" alt="morpeko" />
<h1>About</h1>
<ul>
<li><a href="#1">Who are you?</a></li>
<li><a href="#2">What is this website made with?</a></li>
<li><a href="#3">Can I use my keyboard to play?</a></li>
<li><a href="#4">What is the «Infinite» option in the number of questions exactly?</a></li>
<li><a href="#5">This website doesn't work well on my browser.</a></li>
<li><a href="#6">Can you add more languages?</a></li>
<li><a href="#7">Can you add this feature?</a></li>
<li><a href="#8">Copyrights</a></li>
<li><a href="#1">How to play: Pokétest</a></li>
<li><a href="#2">How to use: Flashdex</a></li>
<li><a href="#3">Website informations</a></li>
<li><a href="#4">Copyrights</a></li>
</ul>
<h3 id="1">Who are you?</h3>
<p>Hi! My name is <a href="https://theo.marchal.dev/">Théo</a> and I'm a game developer. I love Pokémon, but it has been getting hard to remember all those names, even though I always complete the Pokédex in my games!</p>
<h3 id="2">What is this website made with?</h3>
<h3 id="1">How to play: Pokétest</h3>
<p>The Pokétest is a game where you have to guess the name of the Pokémon appearing. The following options are available:</p>
<ul>
<li><strong>Generations</strong>: you can filter the Pokémon generations that you want. Either all of them, or what you choose, including options for regional forms, mega-evolutions and gigantamax forms.</li>
<li><strong>Language</strong>: all the languages available in the main games are present. Choose the one you're familiar with or want to learn! Please note that in certain country, the Pokémon names are the english ones.</li>
<li><strong>Answer type</strong>: "choice" makes you choose between 4 propositions ; "input" makes you type the exact name, for a harder difficulty!</li>
<li><strong>Silhouette</strong>: "silhouette" only allows you the see the shape, "full art" allows you to see the whole artwork.</li>
<li><strong>Number of questions</strong>: a number to choose between 15, 30, 50, 100, Infinite or Whole Set. In the case of Infinite, the game ends when you have made 5 bad answers.</li>
<li><strong>Time to answer</strong>: the timer, to choose between 2, 5, 10, 30 and 99 seconds. You can also deactivate it.</li>
</ul>
<p>Note: if the answer type is "Choice", you can use the "1", "2", "3" or "4" keys to answer. You can also use the "Enter" key to launch the game.</p>
<h3 id="2">How to use: Flashdex</h3>
<p>The Flashdex is a very simple Pokédex, useful to see the Pokémons in a good resolution. It is filtered by generation and alternate forms. You can chose the language in which it is displayed.</p>
<p>When a deck is generated, the URL is changed with the parameters that were selected. This way, you can easily share it to whoever you want.</p>
<p>Types are displayed in the top-left corner, and generations on the top-right corner. If there are different artworks available for the Pokémon, arrows are displayed on the bottom-left corner. You can use them to switch between artworks. Please note that those are not always alternate forms, they are alternate artworks. For example:</p>
<ul>
<li>The first generation has at least three artworks available by Pokémon.</li>
<li>The starters of the third and fourth generations have two official artworks.</li>
<li>A Pokémon like Pikachu (#25) has 17 official artworks, some of them are different forms available ingame.</li>
<li>Castform (#351) or Rotom (#479), for example, have different forms with different types associated.</li>
<li>A unique case is Beldum (#374) which has an artwork for its shiny form.</li>
</ul>
<h3 id="3">Website informations</h3>
<p>
This website has been developed in <strong>JavaScript</strong> using the <strong>jQuery</strong> library.<br />
It uses the <a href="https://github.com/alexanderdickson/waitForImages">waitForImages plugin</a>.<br />
This website is <strong>HTML5</strong> and <strong>CSS3</strong> compliant.<br />
It has been developed in <strong>JavaScript</strong> using the <strong>jQuery</strong> library.<br />
It uses the <a href="https://github.com/alexanderdickson/waitForImages">waitForImages plugin</a>.
</p>
<p>
All of those components are licensed under the MIT license, as is the website source code, which is <a href="https://git.n700.ovh/keb/poketest">available here</a>.<br />
This website is <strong>HTML5</strong> and <strong>CSS3</strong> compliant.
All of those components are licensed under the MIT license, as is the website source code, which is <a href="https://git.marchal.dev/keb/poketest">available here</a>.<br />
If you found a bug or want to add a feature, you can always contact me or make a pull request.
</p>
<p>
This website has been developed by <a href="https://theo.marchal.dev/">Théo</a>, a game developer having trouble to remember the name of all those monsters.
</p>
<h3 id="3">Can I use my keyboard to play?</h3>
<p>Yes! You can launch the game with "Enter", then press "1", "2", "3" or "4" to answer.</p>
<h3 id="4">What is the «Infinite» option in the number of questions exactly?</h3>
<p>When playing with the Infinite option, the game ends when you have 5 bad answers on all the set.</p>
<img src="pokemon/60RB.png" class="middle-companion" alt="poliwag" />
<h3 id="5">This website doesn't work well on my browser.</h3>
<p>Please contact me or make a pull request!</p>
<h3 id="6">Can you add more languages?</h3>
<p>The game currently supports all of the languages available in the main games. If your language is not on the list, it probably uses the English names! I will not support other languages by myself, but you can always contribute by making a pull request!</p>
<h3 id="7">Can you add this feature?</h3>
<p>Please contact me or make a pull request!</p>
<h3 id="8">Copyrights</h3>
<p>The Pokémon names, the associated artworks and the Pokémon licence is trademarked by <strong>Nintendo</strong> and <strong>The Pokémon Company</strong>, 1996 - 2022.<br />
All the Pokémon artworks were taken from <a href="https://bulbapedia.bulbagarden.net/wiki/Main_Page">Bulbapedia</a>, that I'd like to thank for their huge work for the Pokémon community.</p>
<h3 id="4">Copyrights</h3>
<p>The Pokémon names, the associated artworks and the Pokémon licence is trademarked by <strong>Nintendo</strong> and <strong>The Pokémon Company</strong>, 1996 - 2025.</p>
<p>All the Pokémon artworks were taken from <a href="https://bulbapedia.bulbagarden.net/wiki/Main_Page">Bulbapedia</a>, that I'd like to thank for their huge work for the Pokémon community.</p>
</div>
</article>
</div>
<footer>
<p>© 2012 - 2022 Pokétest 2.8</p>
<p>© 2012 - 2025 Pokétest 2.10</p>
</footer>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 KiB

After

Width:  |  Height:  |  Size: 334 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 800 KiB

After

Width:  |  Height:  |  Size: 761 KiB

BIN
artwork/artwork11.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 KiB

BIN
artwork/artwork12.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 730 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 302 KiB

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 240 KiB

After

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 332 KiB

After

Width:  |  Height:  |  Size: 332 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 416 KiB

After

Width:  |  Height:  |  Size: 416 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 KiB

After

Width:  |  Height:  |  Size: 462 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 474 KiB

After

Width:  |  Height:  |  Size: 474 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 422 KiB

After

Width:  |  Height:  |  Size: 408 KiB

View File

@ -7,11 +7,11 @@
<link rel="stylesheet" type="text/css" href="normalize-8.0.1.css" id="stylesheet">
<link rel="stylesheet" type="text/css" href="style.css" id="stylesheet">
<link rel="shortcut icon" type="image/png" href="img/favicon.png" />
<script src="jquery-3.6.0.min.js"></script>
<script src="jquery-3.7.1.min.js"></script>
<script src="waitforimages-2.4.0.min.js"></script>
<script src="interface.js"></script>
<script src="flashdex.js"></script>
<title>Pokétest</title>
<title>Pokétest - Flashdex</title>
</head>
<body>
<div class="bg"></div>
@ -31,13 +31,15 @@
<article>
<div id="container">
<div id="game">
<img src="pokemon/R79-99.png" alt="slowbro" class="flashdex-companion" />
<img src="pokemon/963-999.png" alt="finizen" class="flashdex-companion" />
<h1>Flashdex</h1>
<p><strong>Now including the first monsters from Pokémon Scarlet & Violet!</strong></p>
<p><strong>Now updated for Pokémon Scarlet and Violet DLC: The Hidden Treasure of Area Zero!</strong></p>
<p>The Flashdex is a very simple Pokédex, useful to see your favorite creatures in good resolution. Perfect for learning new names, and to see the different generations and different Pokémon forms!</p>
<p>The Flashdex is a very simple Pokédex, useful to see your favorite creatures in good resolution. Perfect for learning new names, and to see the different generations and Pokémon forms! It also includes the monster's type.</p>
<p>For more details, please read the <a href="about.html">About page</a>!</p>
<div id="flashdex_config">
<h2><a href="#" class="all unselected"><strong>Select all</strong></a></h2>
@ -85,7 +87,7 @@
</div>
</article>
<footer>
<p>© 2012 - 2022 Pokétest 2.8</p>
<p>© 2012 - 2025 Pokétest 2.10</p>
</footer>
</div>
</body>

View File

@ -9,13 +9,12 @@ $(document).ready(function()
var G6 = [650, 721];
var G7 = [722, 809];
var G8 = [810, 905];
var G9 = [906, 908];
var MEGA = [909, 958];
var GIGA = [959, 990];
var REG = [991, 1043];
var EXCEPTION = 990; // urshifu g-max
var G9 = [906, 1025];
var MEGA = [1026, 1075];
var GIGA = [1076, 1107];
var REG = [1108, 1162];
var gen_number = 9;
var extra_number = 3; // mega, giga, reg
/************ GAME *************/
/*******************************/
@ -23,7 +22,6 @@ $(document).ready(function()
// loading json file
$.getJSON('pokemon.json', function(pk)
{
$('article #container #game #loading').hide();
var pklist = pk;
@ -51,19 +49,35 @@ $(document).ready(function()
}
})
// start the game when clicking on start game
$('article #container .button input.start').click(function()
{
$('article #container #game #loading').show();
$('article #container #game #flashdex').empty();
var lang = $('article select.lang option:selected').attr('id');
var gen_list = new Array();
var pokemon_generation_list = new Array();
generations();
$('article #container #game #flashdex').hide();
if (gen_list.length == 0)
return;
setUrlSearch();
$('article #container #game #loading').show();
$('article #container #game #flashdex').empty().hide();
function setUrlSearch()
{
gen = '';
if (gen_list.length < (gen_number + extra_number))
{
for (i in gen_list)
gen += gen_list[i].substring(0,1);
}
else gen += "all";
window.history.replaceState(null, null, "?gen=" + gen + "&lang=" + lang);
localStorage.setItem('lang', lang);
}
function getFormText(pkmn)
{
@ -85,7 +99,7 @@ $(document).ready(function()
return '<span class="form SWSH"></span>'
else if (pkmn["origin"] == "Hisui")
return '<span class="form LA"></span>'
else if (pkmn["origin"] == "9G")
else if (pkmn["origin"] == "Paldea")
return '<span class="form SV"></span>'
else if (pkmn["form"] == "mega")
return '<span class="form mega"></span>';
@ -96,8 +110,6 @@ $(document).ready(function()
function getFormattedNumber(num)
{
if (num > 905 && num < 909)
return "???";
if (num[0] == 'M' || num[0] == 'R' || num[0] == 'G')
return num.substring(1, num.length);
return num;
@ -122,7 +134,7 @@ $(document).ready(function()
function getFormattedSpriteButton(num)
{
if (num["sprite"] || num["origin"] == "Kanto")
return '<span class="button"><span class="left-arrow"></span><span class="right-arrow"></span></span>';
return '<span class="button"><span class="left-arrow">&#9664;&#xFE0E;</span><span class="right-arrow">&#9654;&#xFE0E;</span></span>';
return '';
}
@ -137,7 +149,7 @@ $(document).ready(function()
+ '<span class="name">' + '<strong>' + '#' + getFormattedNumber(pklist.mn[[pokemon_generation_list[i]]]["num"]) + '</strong> '
+ pklist.mn[[pokemon_generation_list[i]]][lang] + '</span>'
+ '</div>'
);
);
}
$('article #container #game #flashdex').waitForImages(function()
@ -157,19 +169,20 @@ $(document).ready(function()
if (form > 0)
form--;
else
form = pklist.mn[pokemon-1]["sprite"] - 1;
form = pklist.mn[pokemon]["sprite"] - 1;
}
else
{
if (form < pklist.mn[pokemon-1]["sprite"] - 1)
if (form < pklist.mn[pokemon]["sprite"] - 1)
form++;
else
form = 0;
}
var newUrl = 'pokemon/' + pokemon + '-' + form + '.png';
var newUrl = 'pokemon/' + pokemonUrl + '-' + form + '.png';
origin.parent().parent().find("img").attr('src', newUrl);
handleChangeType(form, pokemon-1)
handleChangeType(form, pokemon);
}
function handleKanto()
@ -184,7 +197,7 @@ $(document).ready(function()
if (left)
{
if (KantoForm == "RG")
KantoForm = "RB"
KantoForm = "RB";
else if (KantoForm == "RB")
KantoForm = "";
else
@ -193,28 +206,18 @@ $(document).ready(function()
else
{
if (KantoForm == "RB")
KantoForm = "RG"
KantoForm = "RG";
else if (KantoForm == "RG")
KantoForm = "";
else
KantoForm = "RB";
}
var newUrl = 'pokemon/' + pokemon + KantoForm + '.png';
origin.parent().parent().find("img").attr('src', newUrl);
}
function handleException()
{
var form = url.split('-')[1];
if (form == 0)
form = 1;
else
form = 0;
if (KantoForm)
KantoForm = "-" + KantoForm;
var newUrl = 'pokemon/' + pokemonUrl + '-' + form + '.png';
var newUrl = 'pokemon/' + pokemonUrl + KantoForm + '.png';
origin.parent().parent().find("img").attr('src', newUrl);
handleChangeType(form, EXCEPTION-1)
}
function handleChangeType(form, num)
@ -230,22 +233,19 @@ $(document).ready(function()
var url = origin.parent().parent().find("img").attr('src');
var originalUrl = url;
url = url.split('/')[1];
url = url.split('.')[0];
var pokemonUrl = url.split('-')[0];
var pokemon = '';
for (var i = 0; i < pokemonUrl.length; i++)
{
if (pokemonUrl[i].match(/[0-9]/))
pokemon += pokemonUrl[i];
}
if (pokemonUrl == "G892")
handleException();
else if (pklist.mn[pokemon-1]["origin"] == "Kanto" && !pklist.mn[pokemon-1]["sprite"])
var pokemon = pklist.mn.findIndex(function(item, i)
{
return item.num == pokemonUrl;
});
if (pklist.mn[pokemon]["origin"] == "Kanto" && !pklist.mn[pokemon]["sprite"])
handleKanto();
else if (pklist.mn[pokemon-1]["sprite"])
else if (pklist.mn[pokemon]["sprite"])
handleDefault();
}
@ -304,8 +304,6 @@ $(document).ready(function()
// multiple artworks
function imageType(num)
{
//if (num["origin"] == "Kanto")
// return num["num"] + "RB";
if (num["sprite"])
return num["num"] + "-0";
return num["num"];

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -7,7 +7,7 @@
<link rel="stylesheet" type="text/css" href="normalize-8.0.1.css" id="stylesheet">
<link rel="stylesheet" type="text/css" href="style.css" id="stylesheet">
<link rel="shortcut icon" type="image/png" href="img/favicon.png" />
<script src="jquery-3.6.0.min.js"></script>
<script src="jquery-3.7.1.min.js"></script>
<script src="interface.js"></script>
<script src="poketest.js"></script>
<title>Pokétest</title>
@ -30,14 +30,14 @@
<article>
<div id="container">
<div id="game">
<img src="pokemon/R58.png" alt="Growlithe" class="poketest-companion" />
<h1>What is Pokétest?</h1>
<img src="pokemon/912.png" alt="Quaxly" class="poketest-companion" />
<h1>Pokétest</h1>
<p><strong>Now updated for Pokémon Legends: Arceus!</strong></p>
<p><strong>Now updated for Pokémon Scarlet and Violet DLC: The Hidden Treasure of Area Zero!</strong></p>
<p>There are now more than 900 Pocket&nbsp;Monsters, and a handful number of alternative forms. It's getting pretty tricky to know them all, let alone to catch them all. With Pokétest, you can train yourself and become unbeatable! Filter by generation, language and even by Mega&nbsp;Evolutions, Regional or Gigantamax&nbsp;Forms!</p>
<p>We have now reached the thousand Pocket&nbsp;Monsters mark, and more than a hundred of alternative forms. It's getting pretty tricky to know them all, let alone to catch them all. With Pokétest, you can train yourself and become unbeatable! Filter by generation, language and even by Mega&nbsp;Evolutions, Regional or Gigantamax&nbsp;Forms!</p>
<p>You can play with your keyboard: just press 1, 2, 3 or 4 to choose the answer!</p>
<p>For more details, please read the <a href="about.html">About page</a>!</p>
<div id="configuration">
<h2>Configuration</h2>
@ -75,13 +75,17 @@
<span class="SM1">7</span><span class="SM2">G</span>
</strong> (722 - 809)</label><br />
<input type="checkbox" name="8g" id="8g"><label for="8g"> <strong title="8g">
<input type="checkbox" name="8g" id="8g"><label for="8g"> <strong title="Galar">
<span class="SWSH1">8</span><span class="SWSH2">G</span>
</strong> (810 - 905)</label><br />
<input type="checkbox" name="9g" id="9g"><label for="9g"> <strong title="Paldea">
<span class="SV1">9</span><span class="SV2">G</span>
</strong> (906 - 1008)</label><br />
<input type="checkbox" name="regional" id="regional"><label for="regional"> <strong title="Regional">
Regional Forms
</strong> (53)</label><br />
</strong> (55)</label><br />
<input type="checkbox" name="mega" id="mega"><label for="mega"> <strong title="Mega">
Mega-Evolutions
@ -104,6 +108,10 @@
<option name="lang" id="cn" value="cn">繁體中文</option>
<option name="lang" id="cs" value="cs">简体中文</option>
</select>
<h3>Answer type</h3>
<input type="radio" name="answertype" class="first" id="choice" checked><label for="choice"> Choice</label>
<input type="radio" name="answertype" id="input"><label for="input"> Input</label>
</div>
<div id="right_config">
<h3>Silhouette</h3>
@ -112,7 +120,7 @@
<h3>Number of questions</h3>
<select class="questions first">
<!--<option name="questions" id="1" value="1">1 (debug)</option>-->
<!-- <option name="questions" id="1" value="1">1 (debug)</option> -->
<option name="questions" id="15" value="15">15</option>
<option name="questions" id="30" value="30">30</option>
<option name="questions" id="50" value="50">50</option>
@ -123,14 +131,15 @@
<h3>Time to answer</h3>
<select class="time first">
<!--<option name="time" id="1" value="1">1 (debug)</option>-->
<option name="time" id="2" value="2">2</option>
<option name="time" id="5" value="5" selected>5</option>
<option name="time" id="10" value="10">10</option>
<option name="time" id="30" value="30">30</option>
<option name="time" id="99" value="99">99</option>
<!-- <option name="time" id="1" value="1">1 (debug)</option> -->
<option name="time" id="2" value="2">2 seconds</option>
<option name="time" id="5" value="5" selected>5 seconds</option>
<option name="time" id="10" value="10">10 seconds</option>
<option name="time" id="30" value="30">30 seconds</option>
<option name="time" id="99" value="99">99 seconds</option>
<option name="time" id="notimer" value="notimer">No timer</option>
<!--<option name="time" id="10000" value="10000">10000 (debug)</option>-->
</select> seconds
</select>
</div>
</div>
@ -141,11 +150,8 @@
</div>
</article>
<footer>
<p>© 2012 - 2022 Pokétest 2.8</p>
<p>© 2012 - 2025 Pokétest 2.10</p>
</footer>
</div>
<script>
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');
</script>
</body>
</html>

View File

@ -1,103 +1,19 @@
$(document).ready(function() {
function random(min, max) {
$(document).ready(function()
{
function random(min, max)
{
return Math.floor(Math.random()*(max-min+1)+min);
}
// have a nice little background
//$.backstretch("artwork/artwork"+random(1, 10)+".jpg");
// splice url arguments
function gup(name, url) {
if (!url) url = location.href;
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( url );
return results == null ? null : results[1];
}
// read url
local_gen = gup('gen', window.location.href);
if (local_gen != null) {
if (local_gen == "all")
$('article #container #game #configuration input#all').attr('checked', true);
else {
$('article #container #game #configuration input#select').attr('checked', true);
for (i = 0; i < local_gen.length; i++) {
if (local_gen.charAt(i)) {
if (local_gen.charAt(i) == "m")
$('article #container #game #configuration #selected_options input#mega').attr('checked', true);
else if (local_gen.charAt(i) == "r")
$('article #container #game #configuration #selected_options input#regional').attr('checked', true);
else if (local_gen.charAt(i) == "g")
$('article #container #game #configuration #selected_options input#gigantamax').attr('checked', true);
else
$('article #container #game #configuration #selected_options input#' + local_gen.charAt(i) + 'g').attr('checked', true);
}
}
$('#selected_options').slideDown();
}
$('article #container #game #configuration select.lang').val(gup('lang', window.location.href));
if (gup('silhouette', window.location.href) == "true")
$('article #container #game #configuration input#silhouette').attr('checked', true);
else
$('article #container #game #configuration input#full').attr('checked', true);
$('article #container #game #configuration select.questions').val(gup('questions', window.location.href));
$('article #container #game #configuration select.time').val(gup('time', window.location.href));
}
else { // if we did not come from a personalized URL, we read localstorage
if (localStorage.getItem('generation') != null) {
if (localStorage.getItem('generation') != 'all') {
gen_list = localStorage.getItem('generation');
$('article #container #game #configuration input#select').attr('checked', true);
for (i = 0; i < gen_list.length; i++) {
if (gen_list.charAt(i)) {
if (gen_list.charAt(i) == "m")
$('article #container #game #configuration #selected_options input#mega').attr('checked', true);
else if (gen_list.charAt(i) == "r")
$('article #container #game #configuration #selected_options input#regional').attr('checked', true);
else if (gen_list.charAt(i) == "g")
$('article #container #game #configuration #selected_options input#gigantamax').attr('checked', true);
else
$('article #container #game #configuration #selected_options input#' + gen_list.charAt(i) + 'g').attr('checked', true);
}
}
$('#selected_options').slideDown();
} else
$('article #container #game #configuration input#all').attr('checked', true);
}
if (localStorage.getItem('lang') != null)
$('article #game #configuration select.lang').val(localStorage.getItem('lang'));
if (localStorage.getItem('silhouette') != null)
$('article #game #configuration input:radio[name=silhouette]#'+localStorage.getItem('silhouette')).attr('checked', true);
if (localStorage.getItem('questions') != null)
$('article #game #configuration select.questions').val(localStorage.getItem('questions'));
if (localStorage.getItem('time') != null)
$('article #game #configuration select.time').val(localStorage.getItem('time'));
}
// select generation toggle
$('#configuration input#all').click(function() {
$('#selected_options').slideUp();
});
$('#configuration input#select').click(function() {
$('#selected_options').slideDown();
});
// hamburger mobile
$("#hamburger .container").click(function()
{
if ($("nav").hasClass("active"))
{
$("ul").slideUp(200, function()
$("nav ul").slideUp(200, function()
{
$("nav").removeClass("active");
});
@ -105,7 +21,153 @@ $(document).ready(function() {
else
{
$("nav").addClass("active");
$("ul").slideDown(200);
$("nav ul").slideDown(200);
}
});
// splice url arguments
function gup(name, url)
{
if (!url) url = location.href;
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(url);
return results == null ? null : results[1];
}
// index.html
if (location.pathname.includes("index.html"))
{
// read url
local_gen = gup('gen', location.href);
if (local_gen != null)
{
if (local_gen == "all")
$('article #container #game #configuration input#all').attr('checked', true);
else
{
$('article #container #game #configuration input#select').attr('checked', true);
for (i = 0; i < local_gen.length; i++)
{
if (local_gen.charAt(i)) {
if (local_gen.charAt(i) == "m")
$('article #container #game #configuration #selected_options input#mega').attr('checked', true);
else if (local_gen.charAt(i) == "r")
$('article #container #game #configuration #selected_options input#regional').attr('checked', true);
else if (local_gen.charAt(i) == "g")
$('article #container #game #configuration #selected_options input#gigantamax').attr('checked', true);
else
$('article #container #game #configuration #selected_options input#' + local_gen.charAt(i) + 'g').attr('checked', true);
}
}
$('#selected_options').slideDown();
}
$('article #container #game #configuration select.lang').val(gup('lang', window.location.href));
if (gup('silhouette', window.location.href) == "true")
$('article #container #game #configuration input#silhouette').attr('checked', true);
else
$('article #container #game #configuration input#full').attr('checked', true);
if (gup('answertype', window.location.href) == "choice")
$('article #container #game #configuration input#choice').attr('checked', true);
else
$('article #container #game #configuration input#input').attr('checked', true);
$('article #container #game #configuration select.questions').val(gup('questions', window.location.href));
$('article #container #game #configuration select.time').val(gup('time', window.location.href));
}
else // if we did not come from a personalized URL, we read localstorage
{
if (localStorage.getItem('generation') != null)
{
if (localStorage.getItem('generation') != 'all')
{
gen_list = localStorage.getItem('generation');
$('article #container #game #configuration input#select').attr('checked', true);
for (i = 0; i < gen_list.length; i++)
{
if (gen_list.charAt(i))
{
if (gen_list.charAt(i) == "m")
$('article #container #game #configuration #selected_options input#mega').attr('checked', true);
else if (gen_list.charAt(i) == "r")
$('article #container #game #configuration #selected_options input#regional').attr('checked', true);
else if (gen_list.charAt(i) == "g")
$('article #container #game #configuration #selected_options input#gigantamax').attr('checked', true);
else
$('article #container #game #configuration #selected_options input#' + gen_list.charAt(i) + 'g').attr('checked', true);
}
}
$('#selected_options').slideDown();
}
else
$('article #container #game #configuration input#all').attr('checked', true);
}
if (localStorage.getItem('lang') != null)
$('article #game #configuration select.lang').val(localStorage.getItem('lang'));
if (localStorage.getItem('silhouette') != null)
$('article #game #configuration input:radio[name=silhouette]#'+localStorage.getItem('silhouette')).attr('checked', true);
if (localStorage.getItem('answertype') != null)
$('article #game #configuration input:radio[name=answertype]#'+localStorage.getItem('answertype')).attr('checked', true);
if (localStorage.getItem('questions') != null)
$('article #game #configuration select.questions').val(localStorage.getItem('questions'));
if (localStorage.getItem('time') != null)
$('article #game #configuration select.time').val(localStorage.getItem('time'));
}
// select generation toggle
$('#configuration input#all').click(function()
{
$('#selected_options').slideUp();
});
$('#configuration input#select').click(function()
{
$('#selected_options').slideDown();
});
}
// flashdex.html
if (location.pathname.includes("flashdex.html"))
{
// read url
local_gen = gup('gen', location.href);
if (local_gen != null)
{
if (local_gen == "all")
{
for (i = 0; i < 10; i++)
$('article #container #game #flashdex_config input#' + i + 'g').attr('checked', true);
$('article #container #game #flashdex_config input#mega').attr('checked', true);
$('article #container #game #flashdex_config input#regional').attr('checked', true);
$('article #container #game #flashdex_config input#gigantamax').attr('checked', true);
}
else
{
for (i = 0; i < local_gen.length; i++)
{
if (local_gen.charAt(i)) {
if (local_gen.charAt(i) == "m")
$('article #container #game #flashdex_config input#mega').attr('checked', true);
else if (local_gen.charAt(i) == "r")
$('article #container #game #flashdex_config input#regional').attr('checked', true);
else if (local_gen.charAt(i) == "g")
$('article #container #game #flashdex_config input#gigantamax').attr('checked', true);
else
$('article #container #game #flashdex_config input#' + local_gen.charAt(i) + 'g').attr('checked', true);
}
}
}
$('article #container #game #flashdex_config select.lang').val(gup('lang', window.location.href));
}
else
{
if (localStorage.getItem('lang') != null)
$('article #container #game #flashdex_config select.lang').val(localStorage.getItem('lang'));
}
}
});

2
jquery-3.6.0.min.js vendored

File diff suppressed because one or more lines are too long

2
jquery-3.7.1.min.js vendored Normal file

File diff suppressed because one or more lines are too long

Submodule pokemon updated: cafa98a3b0...7deba0828c

View File

@ -903,9 +903,126 @@
{ "num": 903, "fr": "Farfurex", "en": "Sneasler", "ja": "オオニューラ", "romaji": "Ōnyūra", "de": "Snieboss", "kr": "포푸니크", "cn": "大狃拉", "cs": "大狃拉", "origin": "Hisui", "type": [ "Fighting", "Poison" ] },
{ "num": 904, "fr": "Qwilpik", "en": "Overqwil", "ja": "ハリーマン", "romaji": "Harīman", "de": "Myriador", "kr": "장침바루", "cn": "萬針魚", "cs": "万针鱼", "origin": "Hisui", "type": [ "Dark", "Poison" ] },
{ "num": 905, "fr": "Amovénus", "en": "Enamorus", "ja": "ラブトロス", "romaji": "Rabutorosu", "de": "Cupidos", "kr": "러브로스", "cn": "眷戀雲", "cs": "眷恋云", "origin": "Hisui", "type": [ "Fairy", "Flying" ], "sprite": 2 },
{ "num": 906, "fr": "Poussacha", "en": "Sprigatito", "ja": "ニャオハ", "romaji": "Nyaoha", "de": "Felori", "kr": "나오하", "cn": "新葉喵", "cs": "新叶喵", "origin": "9G", "type": [ "Grass" ] },
{ "num": 907, "fr": "Chochodile", "en": "Fuecoco", "ja": "ホゲータ", "romaji": "Hogēta", "de": "Krokel", "kr": "뜨아거", "cn": "呆火鱷", "cs": "呆火鳄", "origin": "9G", "type": [ "Fire" ] },
{ "num": 908, "fr": "Coiffeton", "en": "Quaxly", "ja": "クワッス", "romaji": "Kewassu", "de": "Kwaks", "kr": "꾸왁스", "cn": "潤水鴨", "cs": "润水鸭", "origin": "9G", "type": [ "Water" ] },
{ "num": 906, "fr": "Poussacha", "en": "Sprigatito", "ja": "ニャオハ", "romaji": "Nyaoha", "de": "Felori", "kr": "나오하", "cn": "新葉喵", "cs": "新叶喵", "origin": "Paldea", "type": [ "Grass" ] },
{ "num": 907, "fr": "Matourgeon", "en": "Floragato", "ja": "ニャローテ", "romaji": "Nyarōte", "de": "Feliospa", "kr": "나로테", "cn": "蒂蕾喵", "cs": "蒂蕾喵", "origin": "Paldea", "type": [ "Grass" ] },
{ "num": 908, "fr": "Miascarade", "en": "Meowscarada", "ja": "マスカーニャ", "romaji": "Masukānya", "de": "Maskagato", "kr": "마스카나", "cn": "魔幻假面喵", "cs": "魔幻假面喵", "origin": "Paldea", "type": [ "Grass", "Dark" ] },
{ "num": 909, "fr": "Chochodile", "en": "Fuecoco", "ja": "ホゲータ", "romaji": "Hogēta", "de": "Krokel", "kr": "뜨아거", "cn": "呆火鱷", "cs": "呆火鳄", "origin": "Paldea", "type": [ "Fire" ] },
{ "num": 910, "fr": "Crocogril", "en": "Crocalor", "ja": "アチゲータ", "romaji": "Achigēta", "de": "Lokroko", "kr": "악뜨거", "cn": "炙燙鱷", "cs": "炙燙鱷", "origin": "Paldea", "type": [ "Fire" ] },
{ "num": 911, "fr": "Flâmigator", "en": "Skeledirge", "ja": "ラウドボーン", "romaji": "Raudobōn", "de": "Skelokrok", "kr": "라우드본", "cn": "骨紋驚聲鱷", "cs": "骨纹惊声鳄", "origin": "Paldea", "type": [ "Fire", "Ghost" ] },
{ "num": 912, "fr": "Coiffeton", "en": "Quaxly", "ja": "クワッス", "romaji": "Kuwassu", "de": "Kwaks", "kr": "꾸왁스", "cn": "潤水鴨", "cs": "润水鸭", "origin": "Paldea", "type": [ "Water" ] },
{ "num": 913, "fr": "Canarbello", "en": "Quaxwell", "ja": "ウェルカモ", "romaji": "Werukamo", "de": "Fuentente", "kr": "아꾸왁", "cn": "湧躍鴨", "cs": "涌跃鸭", "origin": "Paldea", "type": [ "Water" ] },
{ "num": 914, "fr": "Palmaval", "en": "Quaquaval", "ja": "ウェーニバル", "romaji": "Wēnibaru", "de": "Bailonda", "kr": "웨이니발", "cn": "狂歡浪舞鴨", "cs": "狂欢浪舞鸭", "origin": "Paldea", "type": [ "Water", "Fighting" ] },
{ "num": 915, "fr": "Gourmelet", "en": "Lechonk", "ja": "グルトン", "romaji": "Guruton", "de": "Ferkuli", "kr": "맛보돈", "cn": "愛吃豚", "cs": "爱吃豚", "origin": "Paldea", "type": [ "Normal" ] },
{ "num": 916, "fr": "Fragroin", "en": "Oinkologne", "ja": "パフュートン", "romaji": "Pafyūton", "de": "Fragrunz", "kr": "퍼퓨돈", "cn": "飄香豚", "cs": "飘香豚", "origin": "Paldea", "type": [ "Normal" ], "sprite": 2 },
{ "num": 917, "fr": "Tissenboule", "en": "Tarountula ", "ja": "タマンチュラ", "romaji": "Tamanchura", "de": "Tarundel", "kr": "타랜툴라", "cn": "團珠蛛", "cs": "团珠蛛", "origin": "Paldea", "type": [ "Bug" ] },
{ "num": 918, "fr": "Filentrappe", "en": "Spidops", "ja": "ワナイダー", "romaji": "Wanaidā", "de": "Spinsidias", "kr": "트래피더", "cn": "操陷蛛", "cs": "操陷蛛", "origin": "Paldea", "type": [ "Bug" ] },
{ "num": 919, "fr": "Lilliterelle", "en": "Nymble", "ja": "マメバッタ", "romaji": "Mamebatta", "de": "Micrick", "kr": "콩알뚜기", "cn": "豆蟋蟀", "cs": "豆蟋蟀", "origin": "Paldea", "type": [ "Bug" ] },
{ "num": 920, "fr": "Gambex", "en": "Lokix", "ja": "エクスレッグ", "romaji": "Ekusureggu", "de": "Lextremo", "kr": "엑스레그", "cn": "烈腿蝗", "cs": "烈腿蝗", "origin": "Paldea", "type": [ "Bug", "Dark" ] },
{ "num": 921, "fr": "Pohm", "en": "Pawmi", "ja": "パモ", "romaji": "Pamo", "de": "Pamo", "kr": "빠모", "cn": "布撥", "cs": "布拨", "origin": "Paldea", "type": [ "Electric" ] },
{ "num": 922, "fr": "Pohmotte", "en": "Pawmo", "ja": "パモット", "romaji": "Pamotto", "de": "Pamamo", "kr": "빠모트", "cn": "布土撥", "cs": "布土拨", "origin": "Paldea", "type": [ "Electric", "Fighting" ] },
{ "num": 923, "fr": "Pohmarmotte", "en": "Pawmot", "ja": "パーモット", "romaji": "Pāmotto", "de": "Pamomamo", "kr": "빠르모트", "cn": "巴布土撥", "cs": "巴布土拨", "origin": "Paldea", "type": [ "Electric", "Fighting" ] },
{ "num": 924, "fr": "Compagnol", "en": "Tandemaus", "ja": "ワッカネズミ", "romaji": "Wakkanezumi", "de": "Zwieps", "kr": "두리쥐", "cn": "一對鼠", "cs": "一对鼠", "origin": "Paldea", "type": [ "Normal" ] },
{ "num": 925, "fr": "Famignol", "en": "Maushold", "ja": "イッカネズミ", "romaji": "Ikkanezumi", "de": "Famieps", "kr": "파밀리쥐", "cn": "一家鼠", "cs": "一家鼠", "origin": "Paldea", "type": [ "Normal" ] },
{ "num": 926, "fr": "Pâtachiot", "en": "Fidough", "ja": "パピモッチ", "romaji": "Papimocchi", "de": "Hefel", "kr": "쫀도기", "cn": "狗仔包", "cs": "狗仔包", "origin": "Paldea", "type": [ "Fairy" ] },
{ "num": 927, "fr": "Briochien", "en": "Dachsbun", "ja": "バウッツェル", "romaji": "Bauttseru", "de": "Backel", "kr": "바우첼", "cn": "麻花犬", "cs": "麻花犬", "origin": "Paldea", "type": [ "Fairy" ] },
{ "num": 928, "fr": "Olivini", "en": "Smoliv", "ja": "ミニーブ", "romaji": "Minību", "de": "Olini", "kr": "미니브", "cn": "迷你芙", "cs": "迷你芙", "origin": "Paldea", "type": [ "Grass", "Normal" ] },
{ "num": 929, "fr": "Olivado", "en": "Dolliv", "ja": "オリーニョ", "romaji": "Orīnyo", "de": "Olivinio", "kr": "올리뇨", "cn": "奧利紐", "cs": "奥利纽", "origin": "Paldea", "type": [ "Grass", "Normal" ] },
{ "num": 930, "fr": "Arboliva", "en": "Arboliva", "ja": "オリーヴァ", "romaji": "Orīva", "de": "Olithena", "kr": "올리르바", "cn": "奧利瓦", "cs": "奥利瓦", "origin": "Paldea", "type": [ "Grass", "Normal" ] },
{ "num": 931, "fr": "Tapatoès", "en": "Squawkabilly", "ja": "イキリンコ", "romaji": "Ikirinko", "de": "Krawalloro", "kr": "시비꼬", "cn": "怒鸚哥", "cs": "怒鹦哥", "origin": "Paldea", "type": [ "Normal", "Flying" ] },
{ "num": 932, "fr": "Selutin", "en": "Nacli", "ja": "コジオ", "romaji": "Kojio", "de": "Geosali", "kr": "베베솔트", "cn": "鹽石寶", "cs": "盐石宝", "origin": "Paldea", "type": [ "Rock" ] },
{ "num": 933, "fr": "Amassel", "en": "Naclstack", "ja": "ジオヅム", "romaji": "Jiodzumu", "de": "Sedisal", "kr": "스태솔트", "cn": "鹽石壘", "cs": "盐石垒", "origin": "Paldea", "type": [ "Rock" ] },
{ "num": 934, "fr": "Gigansel", "en": "Garganacl", "ja": "キョジオーン", "romaji": "Kyojiōn", "de": "Saltigant", "kr": "콜로솔트", "cn": "鹽石巨靈", "cs": "盐石巨灵", "origin": "Paldea", "type": [ "Rock" ] },
{ "num": 935, "fr": "Charbambin", "en": "Charcadet", "ja": "カルボウ", "romaji": "Karubō", "de": "Knarbon", "kr": "카르본", "cn": "炭小侍", "cs": "炭小侍", "origin": "Paldea", "type": [ "Fire" ] },
{ "num": 936, "fr": "Carmadura", "en": "Armarouge", "ja": "グレンアルマ", "romaji": "Guren'aruma", "de": "Crimanzo", "kr": "카디나르마", "cn": "紅蓮鎧騎", "cs": "红莲铠骑", "origin": "Paldea", "type": [ "Fire", "Psychic" ] },
{ "num": 937, "fr": "Malvalame", "en": "Ceruledge", "ja": "ソウブレイズ", "romaji": "Soubureizu", "de": "Azugladis", "kr": "파라블레이즈", "cn": "蒼炎刃鬼", "cs": "苍炎刃鬼", "origin": "Paldea", "type": [ "Fire", "Ghost" ] },
{ "num": 938, "fr": "Têtampoule", "en": "Tadbulb", "ja": "ズピカ", "romaji": "Zupika", "de": "Blipp", "kr": "빈나두", "cn": "光蚪仔", "cs": "光蚪仔", "origin": "Paldea", "type": [ "Electric" ] },
{ "num": 939, "fr": "Ampibidou", "en": "Bellibolt", "ja": "ハラバリー", "romaji": "Harabarī", "de": "Wampitz", "kr": "찌리배리", "cn": "電肚蛙", "cs": "电肚蛙", "origin": "Paldea", "type": [ "Electric" ] },
{ "num": 940, "fr": "Zapétrel", "en": "Wattrel", "ja": "カイデン", "romaji": "Kaiden", "de": "Voltrel", "kr": "찌리비", "cn": "電海燕", "cs": "电海燕", "origin": "Paldea", "type": [ "Electric", "Flying" ] },
{ "num": 941, "fr": "Fulgulairo", "en": "Kilowattrel", "ja": "タイカイデン", "romaji": "Taikaiden", "de": "Voltrean", "kr": "찌리비크", "cn": "大電海燕", "cs": "大电海燕", "origin": "Paldea", "type": [ "Electric", "Flying" ] },
{ "num": 942, "fr": "Grondogue", "en": "Maschiff", "ja": "オラチフ", "romaji": "Orachifu", "de": "Mobtiff", "kr": "오라티프", "cn": "偶叫獒", "cs": "偶叫獒", "origin": "Paldea", "type": [ "Dark" ] },
{ "num": 943, "fr": "Dogrino", "en": "Mabosstiff", "ja": "マフィティフ", "romaji": "Mafitifu", "de": "Mastifioso", "kr": "마피티프", "cn": "獒教父", "cs": "獒教父", "origin": "Paldea", "type": [ "Dark" ] },
{ "num": 944, "fr": "Gribouraigne", "en": "Shroodle", "ja": "シルシュルー", "romaji": "Shirushurū", "de": "Sproxi", "kr": "땃쭈르", "cn": "滋汁鼴", "cs": "滋汁鼹", "origin": "Paldea", "type": [ "Poison", "Normal" ] },
{ "num": 945, "fr": "Tag-Tag", "en": "Grafaiai", "ja": "タギングル", "romaji": "Taginguru", "de": "Affiti", "kr": "태깅구르", "cn": "塗標客", "cs": "涂标客", "origin": "Paldea", "type": [ "Poison", "Normal" ] },
{ "num": 946, "fr": "Virovent", "en": "Bramblin", "ja": "アノクサ", "romaji": "Anokusa", "de": "Weherba", "kr": "그푸리", "cn": "納噬草", "cs": "纳噬草", "origin": "Paldea", "type": [ "Grass", "Ghost" ] },
{ "num": 947, "fr": "Virevorreur", "en": "Brambleghast", "ja": "アノホラグサ", "romaji": "Anohoragusa", "de": "Horrerba", "kr": "공푸리", "cn": "怖納噬草", "cs": "怖纳噬草", "origin": "Paldea", "type": [ "Grass", "Ghost" ] },
{ "num": 948, "fr": "Terracool", "en": "Toedscool", "ja": "ノノクラゲ", "romaji": "Nonokurage", "de": "Tentagra", "kr": "들눈해", "cn": "原野水母", "cs": "原野水母", "origin": "Paldea", "type": [ "Ground", "Grass" ] },
{ "num": 949, "fr": "Terracruel", "en": "Toedscruel", "ja": "リククラゲ", "romaji": "Rikukurage", "de": "Tenterra", "kr": "육파리", "cn": "陸地水母", "cs": "陸地水母", "origin": "Paldea", "type": [ "Ground", "Grass" ] },
{ "num": 950, "fr": "Craparoi", "en": "Klawf", "ja": "ガケガニ", "romaji": "Gakegani", "de": "Klibbe", "kr": "절벼게", "cn": "毛崖蟹", "cs": "毛崖蟹", "origin": "Paldea", "type": [ "Rock" ] },
{ "num": 951, "fr": "Pimito", "en": "Capsakid", "ja": "カプサイジ", "romaji": "Kapusaiji", "de": "Chilingel", "kr": "캡싸이", "cn": "熱辣娃", "cs": "热辣娃", "origin": "Paldea", "type": [ "Grass" ] },
{ "num": 952, "fr": "Scovilain", "en": "Scovillain", "ja": "スコヴィラン", "romaji": "Sukoviran", "de": "Halupenjo", "kr": "스코빌런", "cn": "狠辣椒", "cs": "狠辣椒", "origin": "Paldea", "type": [ "Grass", "Fire" ] },
{ "num": 953, "fr": "Léboulérou", "en": "Rellor", "ja": "シガロコ", "romaji": "Shigaroko", "de": "Relluk", "kr": "구르데", "cn": "蟲滾泥", "cs": "虫滚泥", "origin": "Paldea", "type": [ "Bug" ] },
{ "num": 954, "fr": "Bérasca", "en": "Rabsca", "ja": "ベラカス", "romaji": "Berakasu", "de": "Skarabaks", "kr": "베라카스", "cn": "蟲甲聖", "cs": "虫甲圣", "origin": "Paldea", "type": [ "Bug", "Psychic" ] },
{ "num": 955, "fr": "Flotillon", "en": "Flittle", "ja": "ヒラヒナ", "romaji": "Hirahina", "de": "Flattutu", "kr": "하느라기", "cn": "飄飄雛", "cs": "飘飘雏", "origin": "Paldea", "type": [ "Psychic" ] },
{ "num": 956, "fr": "Cléopsytra", "en": "Espathra", "ja": "クエスパトラ", "romaji": "Kuesupatora", "de": "Psiopatra", "kr": "클레스퍼트라", "cn": "超能豔鴕", "cs": "超能艳鸵", "origin": "Paldea", "type": [ "Psychic" ] },
{ "num": 957, "fr": "Forgerette", "en": "Tinkatink", "ja": "カヌチャン", "romaji": "Kanuchan", "de": "Forgita", "kr": "어리짱", "cn": "小鍛匠", "cs": "小锻匠", "origin": "Paldea", "type": [ "Fairy", "Steel" ] },
{ "num": 958, "fr": "Forgella", "en": "Tinkatuff", "ja": "ナカヌチャン", "romaji": "Nakanuchan", "de": "Tafforgita", "kr": "벼리짱", "cn": "巧鍛匠", "cs": "巧锻匠", "origin": "Paldea", "type": [ "Fairy", "Steel" ] },
{ "num": 959, "fr": "Forgelina", "en": "Tinkaton", "ja": "デカヌチャン", "romaji": "Dekanuchan", "de": "Granforgita", "kr": "두드리짱", "cn": "巨鍛匠", "cs": "巨锻匠", "origin": "Paldea", "type": [ "Fairy", "Steel" ] },
{ "num": 960, "fr": "Taupikeau", "en": "Wiglett", "ja": "ウミディグダ", "romaji": "Umidiguda", "de": "Schligda", "kr": "바다그다", "cn": "海地鼠", "cs": "海地鼠", "origin": "Paldea", "type": [ "Water" ] },
{ "num": 961, "fr": "Triopikeau", "en": "Wugtrio", "ja": "ウミトリオ", "romaji": "Umitorio", "de": "Schligdri", "kr": "바닥트리오", "cn": "三海地鼠", "cs": "三海地鼠", "origin": "Paldea", "type": [ "Water" ] },
{ "num": 962, "fr": "Lestombaile", "en": "Bombirdier", "ja": "オトシドリ", "romaji": "Otoshidori", "de": "Adebom", "kr": "떨구새", "cn": "下石鳥", "cs": "下石鸟", "origin": "Paldea", "type": [ "Flying", "Dark" ] },
{ "num": 963, "fr": "Dofin", "en": "Finizen", "ja": "ナミイルカ", "romaji": "Nami'iruka", "de": "Normifin", "kr": "맨돌핀", "cn": "波普海豚", "cs": "波普海豚", "origin": "Paldea", "type": [ "Water" ] },
{ "num": 964, "fr": "Superdofin", "en": "Palafin", "ja": "イルカマン", "romaji": "Irukaman", "de": "Delfinator", "kr": "돌핀맨", "cn": "海豚俠", "cs": "海豚侠", "origin": "Paldea", "type": [ "Water" ], "sprite": 2 },
{ "num": 965, "fr": "Vrombi", "en": "Varoom", "ja": "ブロロン", "romaji": "Buroron", "de": "Knattox", "kr": "부르롱", "cn": "噗隆隆", "cs": "噗隆隆", "origin": "Paldea", "type": [ "Steel", "Poison" ] },
{ "num": 966, "fr": "Vrombotor", "en": "Revavroom", "ja": "ブロロローム", "romaji": "Burororōmu", "de": "Knattatox", "kr": "부르르룸", "cn": "普隆隆姆", "cs": "普隆隆姆", "origin": "Paldea", "type": [ "Steel", "Poison" ] },
{ "num": 967, "fr": "Motorizard", "en": "Cyclizar", "ja": "モトトカゲ", "romaji": "Mototokage", "de": "Mopex", "kr": "모토마", "cn": "摩托蜥", "cs": "摩托蜥", "origin": "Paldea", "type": [ "Dragon", "Normal" ] },
{ "num": 968, "fr": "Ferdeter", "en": "Orthworm", "ja": "ミミズズ", "romaji": "Mimizuzu", "de": "Schlurm", "kr": "꿈트렁", "cn": "拖拖蚓", "cs": "拖拖蚓", "origin": "Paldea", "type": [ "Steel" ] },
{ "num": 969, "fr": "Germéclat", "en": "Glimmet", "ja": "キラーメ", "romaji": "Kirāme", "de": "Lumispross", "kr": "초롱순", "cn": "晶光芽", "cs": "晶光芽", "origin": "Paldea", "type": [ "Rock", "Poison" ] },
{ "num": 970, "fr": "Floréclat", "en": "Glimmora", "ja": "キラフロル", "romaji": "Kirafuroru", "de": "Lumiflora", "kr": "킬라플로르", "cn": "晶光花", "cs": "晶光花", "origin": "Paldea", "type": [ "Rock", "Poison" ] },
{ "num": 971, "fr": "Toutombe", "en": "Greavard", "ja": "ボチ", "romaji": "Bochi", "de": "Gruff", "kr": "망망이", "cn": "墓仔狗", "cs": "墓仔狗", "origin": "Paldea", "type": [ "Ghost" ] },
{ "num": 972, "fr": "Tomberro", "en": "Houndstone", "ja": "ハカドッグ", "romaji": "Hakadoggu", "de": "Friedwuff", "kr": "묘두기", "cn": "墓揚犬", "cs": "墓扬犬", "origin": "Paldea", "type": [ "Ghost" ] },
{ "num": 973, "fr": "Flamenroule", "en": "Flamigo", "ja": "カラミンゴ", "romaji": "Karamingo", "de": "Flaminkno", "kr": "꼬이밍고", "cn": "纏紅鶴", "cs": "缠红鹤", "origin": "Paldea", "type": [ "Flying", "Fighting" ] },
{ "num": 974, "fr": "Piétacé", "en": "Cetoddle", "ja": "アルクジラ", "romaji": "Arukujira", "de": "Flaniwal", "kr": "터벅고래", "cn": "走鯨", "cs": "走鲸", "origin": "Paldea", "type": [ "Ice" ] },
{ "num": 975, "fr": "Balbalèze", "en": "Cetitan", "ja": "ハルクジラ", "romaji": "Harukujira", "de": "Kolowal", "kr": "우락고래", "cn": "浩大鯨", "cs": "浩大鲸", "origin": "Paldea", "type": [ "Ice" ] },
{ "num": 976, "fr": "Délestin", "en": "Veluza", "ja": "ミガルーサ", "romaji": "Migarūsa", "de": "Agiluza", "kr": "가비루사", "cn": "輕身鱈", "cs": "轻身鳕", "origin": "Paldea", "type": [ "Water", "Psychic" ] },
{ "num": 977, "fr": "Oyacata", "en": "Dondozo", "ja": "ヘイラッシャ", "romaji": "Heirassha", "de": "Heerashai", "kr": "어써러셔", "cn": "吃吼霸", "cs": "吃吼霸", "origin": "Paldea", "type": [ "Water" ] },
{ "num": 978, "fr": "Nigirigon", "en": "Tatsugiri", "ja": "シャリタツ", "romaji": "Sharitatsu", "de": "Nigiragi", "kr": "싸리용", "cn": "米立龍", "cs": "米立龙", "origin": "Paldea", "type": [ "Dragon", "Water" ], "sprite": 3 },
{ "num": 979, "fr": "Courrousinge", "en": "Annihilape", "ja": "コノヨザル", "romaji": "Konoyozaru", "de": "Epitaff", "kr": "저승갓숭", "cn": "棄世猴", "cs": "弃世猴", "origin": "Paldea", "type": [ "Fighting", "Ghost" ] },
{ "num": 980, "fr": "Terraiste", "en": "Clodsire", "ja": "ドオー", "romaji": "Do'ō", "de": "Suelord", "kr": "Suelord", "cn": "土王", "cs": "土王", "origin": "Paldea", "type": [ "Poison", "Ground" ] },
{ "num": 981, "fr": "Farigiraf", "en": "Farigiraf", "ja": "リキキリン", "romaji": "Rikikirin", "de": "Farigiraf", "kr": "키키링", "cn": "奇麒麟", "cs": "奇麒麟", "origin": "Paldea", "type": [ "Normal", "Psychic" ] },
{ "num": 982, "fr": "Deusolourdo", "en": "Dudunsparce", "ja": "ノココッチ", "romaji": "Nokokocchi", "de": "Dummimisel", "kr": "노고고치", "cn": "土龍節節", "cs": "土龙节节", "origin": "Paldea", "type": [ "Normal" ] },
{ "num": 983, "fr": "Scalpereur", "en": "Kingambit", "ja": "ドドゲザン", "romaji": "Dodogezan", "de": "Gladimperio", "kr": "대도각참", "cn": "仆斬將軍", "cs": "仆刀将军", "origin": "Paldea", "type": [ "Dark", "Steel" ] },
{ "num": 984, "fr": "Fort-Ivoire", "en": "Great Tusk", "ja": "イダイナキバ", "romaji": "Idainakiba", "de": "Riesenzahn", "kr": "위대한엄니", "cn": "雄偉牙", "cs": "雄伟牙", "origin": "Paldea", "type": [ "Ground", "Fighting" ] },
{ "num": 985, "fr": "Hurle-Queue", "en": "Scream Tail", "ja": "サケブシッポ", "romaji": "Sakebushippo", "de": "Brüllschweif", "kr": "우렁찬꼬리", "cn": "吼叫尾", "cs": "吼叫尾", "origin": "Paldea", "type": [ "Fairy", "Psychic" ] },
{ "num": 986, "fr": "Fongus-Furie", "en": "Brute Bonnet", "ja": "アラブルタケ", "romaji": "Araburutake", "de": "Wutpilz", "kr": "사나운버섯", "cn": "猛惡菇", "cs": "猛恶菇", "origin": "Paldea", "type": [ "Grass", "Dark" ] },
{ "num": 987, "fr": "Flotte-Mèche", "en": "Flutter Mane", "ja": "ハバタクカミ", "romaji": "Habatakukami", "de": "Flatterhaar", "kr": "날개치는머리", "cn": "振翼髮", "cs": "振翼发", "origin": "Paldea", "type": [ "Ghost", "Fairy" ] },
{ "num": 988, "fr": "Rampe-Ailes", "en": "Slither Wing", "ja": "チヲハウハネ", "romaji": "Chiohauhane", "de": "Kriechflügel", "kr": "땅을기는날개", "cn": "爬地翅", "cs": "爬地翅", "origin": "Paldea", "type": [ "Bug", "Fighting" ] },
{ "num": 989, "fr": "Pelage-Sablé", "en": "Sandy Shocks", "ja": "スナノケガワ", "romaji": "Sunanokegawa", "de": "Sandfell", "kr": "모래털가죽", "cn": "沙鐵皮", "cs": "沙铁皮", "origin": "Paldea", "type": [ "Electric", "Ground" ] },
{ "num": 990, "fr": "Roue-de-Fer", "en": "Iron Treads", "ja": "テツノワダチ", "romaji": "Tetsunowadachi", "de": "Eisenrad", "kr": "무쇠바퀴", "cn": "鐵轍跡", "cs": "铁辙迹", "origin": "Paldea", "type": [ "Ground", "Steel" ] },
{ "num": 991, "fr": "Hotte-de-Fer", "en": "Iron Bundle", "ja": "テツノツツミ", "romaji": "Tetsunotsutsumi", "de": "Eisenbündel", "kr": "무쇠보따리", "cn": "鐵包袱", "cs": "铁包袱", "origin": "Paldea", "type": [ "Ice", "Water" ] },
{ "num": 992, "fr": "Paume-de-Fer", "en": "Iron Hands", "ja": "テツノカイナ", "romaji": "Tetsunokaina", "de": "Eisenhand", "kr": "무쇠손", "cn": "鐵臂膀", "cs": "铁臂膀", "origin": "Paldea", "type": [ "Fighting", "Electric" ] },
{ "num": 993, "fr": "Têtes-de-Fer", "en": "Iron Jugulis", "ja": "テツノコウベ", "romaji": "Tetsunokoube", "de": "Eisenhals", "kr": "무쇠머리", "cn": "鐵脖頸", "cs": "铁脖颈", "origin": "Paldea", "type": [ "Dark", "Flying" ] },
{ "num": 994, "fr": "Mite-de-Fer", "en": "Iron Moth", "ja": "テツノドクガ", "romaji": "Tetsunodokuga", "de": "Eisenfalter", "kr": "무쇠독나방", "cn": "鐵毒蛾", "cs": "铁毒蛾", "origin": "Paldea", "type": [ "Fire", "Poison" ] },
{ "num": 995, "fr": "Épine-de-Fer", "en": "Iron Thorns", "ja": "テツノイバラ", "romaji": "Tetsunoibara", "de": "Eisendorn", "kr": "무쇠가시", "cn": "鐵荊棘", "cs": "铁荆棘", "origin": "Paldea", "type": [ "Rock", "Electric" ] },
{ "num": 996, "fr": "Frigodo", "en": "Frigibax", "ja": "セビエ", "romaji": "Sebie", "de": "Frospino", "kr": "드니차", "cn": "涼脊龍", "cs": "凉脊龙", "origin": "Paldea", "type": [ "Dragon", "Ice" ] },
{ "num": 997, "fr": "Cryodo", "en": "Arctibax", "ja": "セゴール", "romaji": "Segōru", "de": "Cryospino", "kr": "드니꽁", "cn": "凍脊龍", "cs": "冻脊龙", "origin": "Paldea", "type": [ "Dragon", "Ice" ] },
{ "num": 998, "fr": "Glaivodo", "en": "Baxcalibur", "ja": "セグレイブ", "romaji": "Segureibu", "de": "Espinodon", "kr": "드닐레이브", "cn": "戟脊龍", "cs": "戟脊龙", "origin": "Paldea", "type": [ "Dragon", "Ice" ] },
{ "num": 999, "fr": "Mordudor", "en": "Gimmighoul", "ja": "コレクレー", "romaji": "Korekurē", "de": "Gierspenst", "kr": "모으령", "cn": "索財靈", "cs": "索财灵", "origin": "Paldea", "type": [ "Ghost" ], "sprite": 2 },
{ "num": 1000, "fr": "Gromago", "en": "Gholdengo", "ja": "サーフゴー", "romaji": "Sāfugō", "de": "Monetigo", "kr": "타부자고", "cn": "賽富豪", "cs": "赛富豪", "origin": "Paldea", "type": [ "Steel", "Ghost" ] },
{ "num": 1001, "fr": "Chongjian", "en": "Wo-Chien", "ja": "チオンジェン", "romaji": "Chionjen", "de": "Chongjian", "kr": "총지엔", "cn": "古簡蝸", "cs": "古简蜗", "origin": "Paldea", "type": [ "Dark", "Grass" ] },
{ "num": 1002, "fr": "Baojian", "en": "Chien-Pao", "ja": "パオジアン", "romaji": "Paojian", "de": "Baojian", "kr": "파오젠", "cn": "古劍豹", "cs": "古剑豹", "origin": "Paldea", "type": [ "Dark", "Ice" ] },
{ "num": 1003, "fr": "Dinglu", "en": "Ting-Lu", "ja": "ディンルー", "romaji": "Dinrū", "de": "Dinglu", "kr": "딩루", "cn": "古鼎鹿", "cs": "古鼎鹿", "origin": "Paldea", "type": [ "Dark", "Ground" ] },
{ "num": 1004, "fr": "Yuyu", "en": "Chi-Yu", "ja": "イーユイ", "romaji": "Īyui", "de": "Yuyu", "kr": "위유이", "cn": "古玉魚", "cs": "古玉鱼", "origin": "Paldea", "type": [ "Dark", "Fire" ] },
{ "num": 1005, "fr": "Rugit-Lune", "en": "Roaring Moon", "ja": "トドロクツキ", "romaji": "Todorokutsuki", "de": "Donnersichel", "kr": "고동치는달", "cn": "轟鳴月", "cs": "轰鸣月", "origin": "Paldea", "type": [ "Dragon", "Dark" ] },
{ "num": 1006, "fr": "Garde-de-Fer", "en": "Iron Valiant", "ja": "テツノブジン", "romaji": "Tetsunobujin", "de": "Eisenkrieger", "kr": "무쇠무인", "cn": "鐵武者", "cs": "铁武者", "origin": "Paldea", "type": [ "Fairy", "Fighting" ] },
{ "num": 1007, "fr": "Koraidon", "en": "Koraidon", "ja": "コライドン", "romaji": "Koraidon", "de": "Koraidon", "kr": "코라이돈", "cn": "故勒頓", "cs": "故勒顿", "origin": "Paldea", "type": [ "Fighting", "Dragon" ] },
{ "num": 1008, "fr": "Miraidon", "en": "Miraidon", "ja": "ミライドン", "romaji": "Miraidon", "de": "Miraidon", "kr": "미라이돈", "cn": "密勒頓", "cs": "密勒顿", "origin": "Paldea", "type": [ "Electric", "Fighting" ] },
{ "num": 1009, "fr": "Serpente-Eau", "en": "Walking Wake", "ja": "ウネルミナモ", "romaji": "Uneruminamo", "de": "Windewoge", "kr": "굽이치는물결", "cn": "波盪水", "cs": "波荡水", "origin": "Paldea", "type": [ "Water", "Dragon" ] },
{ "num": 1010, "fr": "Vert-de-Fer", "en": "Iron Leaves", "ja": "テツノイサハ", "romaji": "Tetsunoisaha", "de": "Eisenblatt", "kr": "무쇠잎새", "cn": "鐵斑葉", "cs": "铁斑叶", "origin": "Paldea", "type": [ "Grass", "Psychic" ] },
{ "num": 1011, "fr": "Pomdramour", "en": "Dipplin", "ja": "カミッチュ", "romaji": "Kamitchu", "de": "Sirapfel", "kr": "과미르", "cn": "裹蜜蟲", "cs": "裹蜜虫", "origin": "Paldea", "type": [ "Grass", "Dragon" ] },
{ "num": 1012, "fr": "Poltchageist", "en": "Poltchageist", "ja": "チャデス", "romaji": "Chadesu", "de": "Mortcha", "kr": "차데스", "cn": "斯魔茶", "cs": "斯魔茶", "origin": "Paldea", "type": [ "Grass", "Ghost" ] },
{ "num": 1013, "fr": "Théffroyable", "en": "Sinistcha", "ja": "ヤバソチャ", "romaji": "Yabasocha", "de": "Fatalitcha", "kr": "그우린차", "cn": "來悲粗茶", "cs": "来悲粗茶", "origin": "Paldea", "type": [ "Grass", "Ghost" ] },
{ "num": 1014, "fr": "Félicanis", "en": "Okidogi", "ja": "イイネイヌ", "romaji": "Iineinu", "de": "Boninu", "kr": "조타구", "cn": "夠讚狗", "cs": "够赞狗", "origin": "Paldea", "type": [ "Poison", "Fighting" ] },
{ "num": 1015, "fr": "Fortusimia", "en": "Munkidori", "ja": "マシマシラ", "romaji": "Mashimashira", "de": "Benesaru", "kr": "이야후", "cn": "願增猿", "cs": "愿增猿", "origin": "Paldea", "type": [ "Poison", "Psychic" ] },
{ "num": 1016, "fr": "Favianos", "en": "Fezandipiti", "ja": "キチキギス", "romaji": "Kichikigisu", "de": "Beatori", "kr": "기로치", "cn": "吉雉雞", "cs": "吉雉鸡", "origin": "Paldea", "type": [ "Poison", "Fairy" ] },
{ "num": 1017, "fr": "Ogerpon", "en": "Ogerpon", "ja": "オーガポン", "romaji": "Ōgapon", "de": "Ogerpon", "kr": "오거폰", "cn": "厄鬼椪", "cs": "厄诡椪", "origin": "Paldea", "type": [ "Grass" ], "sprite": 4, "type1": [ "Grass", "Water" ], "type2": [ "Grass", "Fire" ], "type3": [ "Grass", "Rock" ] },
{ "num": 1018, "fr": "Pondralugon", "en": "Archaludon", "ja": "ブリジュラス", "romaji": "Burijurasu", "de": "Briduradon", "kr": "브리두라스", "cn": "鋁鋼橋龍", "cs": "铝钢桥龙", "origin": "Paldea", "type": [ "Steel", "Dragon" ] },
{ "num": 1019, "fr": "Pomdorochi", "en": "Hydrapple", "ja": "カミツオロチ", "romaji": "Kamitsuorochi", "de": "Hydrapfel", "kr": "과미드라", "cn": "蜜集大蛇", "cs": "蜜集大蛇", "origin": "Paldea", "type": [ "Grass", "Dragon" ] },
{ "num": 1020, "fr": "Feu-Perçant", "en": "Gouging Fire", "ja": "ウガツホムラ", "romaji": "Ugatsuhomura", "de": "Keilflamme", "kr": "꿰뚫는화염", "cn": "破空焰", "cs": "破空焰", "origin": "Paldea", "type": [ "Fire", "Dragon" ] },
{ "num": 1021, "fr": "Ire-Foudre", "en": "Raging Bolt", "ja": "タケルライコ", "romaji": "Takeruraiko", "de": "Furienblitz", "kr": "날뛰는우레", "cn": "猛雷鼓", "cs": "猛雷鼓", "origin": "Paldea", "type": [ "Electric", "Dragon" ] },
{ "num": 1022, "fr": "Roc-de-Fer", "en": "Iron Boulder", "ja": "テツノイワオ ", "romaji": "Tetsunoiwao", "de": "Eisenfels", "kr": "무쇠암석", "cn": "鐵磐岩", "cs": "铁磐岩", "origin": "Paldea", "type": [ "Rock", "Psychic" ] },
{ "num": 1023, "fr": "Chef-de-Fer", "en": "Iron Crown", "ja": "テツノカシラ", "romaji": "Tetsunokashira", "de": "Eisenhaupt", "kr": "무쇠감투", "cn": "鐵頭殼", "cs": "铁头壳", "origin": "Paldea", "type": [ "Steel", "Psychic" ] },
{ "num": 1024, "fr": "Terapagos", "en": "Terapagos", "ja": "テラパゴス", "romaji": "Terapagosu", "de": "Terapagos", "kr": "테라파고스", "cn": "太樂巴戈斯", "cs": "太乐巴戈斯", "origin": "Paldea", "type": [ "Normal" ], "sprite": 2 },
{ "num": 1025, "fr": "Pêchaminus", "en": "Pecharunt", "ja": "モモワロウ", "romaji": "Momowarou", "de": "Infamomo", "kr": "복숭악동", "cn": "桃歹郎", "cs": "桃歹郎", "origin": "Paldea", "type": [ "Poison", "Ghost" ] },
{ "num": "M3", "fr": "Méga-Florizarre", "en": "Mega Venusaur", "ja": "メガ フシギバナ", "romaji": "Mega Fushigibana", "de": "Mega-Bisaflor", "kr": "메가이상해꽃", "cn": "超級妙蛙花", "cs": "超级妙蛙花", "form": "mega", "type": [ "Grass", "Poison" ] },
{ "num": "M6X", "fr": "Méga-Dracaufeu X", "en": "Mega Charizard X", "ja": "メガ リザードン X", "romaji": "Mega Lizardon X", "de": "Mega-Glurak X", "kr": "메가리자몽 X", "cn": "超級噴火龍X", "cs": "超级喷火龙X", "form": "mega", "type": [ "Fire", "Dragon" ] },
{ "num": "M6Y", "fr": "Méga-Dracaufeu Y", "en": "Mega Charizard Y", "ja": "メガ リザードン Y", "romaji": "Mega Lizardon Y", "de": "Mega-Glurak Y", "kr": "메가리자몽 Y", "cn": "超級噴火龍Y", "cs": "超级喷火龙Y", "form": "mega", "type": [ "Fire", "Flying" ] },
@ -1040,5 +1157,6 @@
{ "num": "R705", "fr": "Colimucus d'Hisui", "en": "Hisuian Sligoo", "ja": "ヌメイル(ヒスイ)", "romaji": "Numeiru (Hisui)", "de": "Hisui-Viscargot", "kr": "미끄네일(히스이)", "cn": "黏美兒(洗翠)", "cs": "黏美儿(洗翠)", "origin": "Hisui", "form": "regional", "type": [ "Steel", "Dragon" ] },
{ "num": "R706", "fr": "Muplodocus d'Hisui", "en": "Hisuian Goodra", "ja": "ヌメルゴン(ヒスイ)", "romaji": "Numerugon (Hisui)", "de": "Hisui-Viscogon", "kr": "미끄래곤(히스이)", "cn": "黏美龍(洗翠)", "cs": "黏美龙(洗翠)", "origin": "Hisui", "form": "regional", "type": [ "Steel", "Dragon" ] },
{ "num": "R713", "fr": "Séracrawl d'Hisui", "en": "Hisuian Avalugg", "ja": "クレベース(ヒスイ)", "romaji": "Kurebēsu (Hisui)", "de": "Hisui-Arktilas", "kr": "크레베이스(히스이)", "cn": "冰岩怪(洗翠)", "cs": "冰岩怪(洗翠)", "origin": "Hisui", "form": "regional", "type": [ "Ice", "Dragon" ] },
{ "num": "R724", "fr": "Archéduc d'Hisui", "en": "Hisuian Decidueye", "ja": "ジュナイパー(ヒスイ)", "romaji": "Junaipā (Hisui)", "de": "Hisui-Silvarro", "kr": "모크나이퍼(히스이)", "cn": "狙射樹梟(洗翠)", "cs": "狙射树枭(洗翠)", "origin": "Hisui", "form": "regional", "type": [ "Grass", "Fighting" ] }
]}
{ "num": "R724", "fr": "Archéduc d'Hisui", "en": "Hisuian Decidueye", "ja": "ジュナイパー(ヒスイ)", "romaji": "Junaipā (Hisui)", "de": "Hisui-Silvarro", "kr": "모크나이퍼(히스이)", "cn": "狙射樹梟(洗翠)", "cs": "狙射树枭(洗翠)", "origin": "Hisui", "form": "regional", "type": [ "Grass", "Fighting" ] },
{ "num": "R128", "fr": "Tauros de Paldea", "en": "Paldean Tauros", "ja": "ケンタロス(パルデア)", "romaji": "Kentarosu (Parudea)", "de": "Paldea-Tauros", "kr": "켄타로스(팔데아)", "cn": "肯泰羅(帕底亞)", "cs": "肯泰罗(帕底亚)", "origin": "Paldea", "form": "regional", "type": [ "Fighting" ], "sprite": 3, "type1": [ "Fighting", "Fire" ], "type2": [ "Fighting", "Water" ] },
{ "num": "R194", "fr": "Axoloto de Paldea", "en": "Paldean Wooper", "ja": "ウパー(パルデア)", "romaji": "Upā (Parudea)", "de": "Paldea-Felino", "kr": "우파(팔데아)", "cn": "烏波(帕底亞)", "cs": "乌波(帕底亚)", "origin": "Paldea", "form": "regional", "type": [ "Poison", "Ground" ] }]}

View File

@ -8,7 +8,6 @@ $(document).ready(function() {
/********************************/
/****** General variables ******/
var score = 0;
var questions = 0;
var good_answers = 0;
var bad_answers = 0;
@ -30,10 +29,10 @@ $(document).ready(function() {
var G6 = [650, 721];
var G7 = [722, 809];
var G8 = [810, 905];
var G9 = [906, 908];
var MEGA = [909, 958];
var GIGA = [959, 990];
var REG = [991, 1043];
var G9 = [906, 1025];
var MEGA = [1026, 1075];
var GIGA = [1076, 1107];
var REG = [1108, 1162];
var gen_number = 9;
var extra_number = 3; // mega, giga, reg
@ -65,6 +64,11 @@ $(document).ready(function() {
return false;
}
function normalizeString(string)
{
return string.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, "");
}
/************ GAME *************/
/*******************************/
@ -96,6 +100,7 @@ $(document).ready(function() {
else // else, it's all the generation, from the first one to the regional forms
max_questions = REG[1] + 1;
}
answertype = $('article input[name="answertype"]:checked').attr('id');
game();
});
}
@ -156,7 +161,7 @@ $(document).ready(function() {
}
else
{
for (i = 0; i < gen_number; i++)
for (i = 1; i <= gen_number; i++)
createGenerationList((i + "g"));
createGenerationList("mega");
createGenerationList("gigantamax");
@ -182,9 +187,9 @@ $(document).ready(function() {
if (randomValue == 0)
return pklist.mn[result]["num"];
else if (randomValue == 1)
return pklist.mn[result]["num"]+'RB';
return pklist.mn[result]["num"]+'-RB';
else if (randomValue == 2)
return pklist.mn[result]["num"]+'RG';
return pklist.mn[result]["num"]+'-RG';
}
return pklist.mn[result]["num"];
}
@ -228,7 +233,9 @@ $(document).ready(function() {
available_pokemon.splice(resultIndex, 1);
answer = pklist.mn[result][lang];
chooseOptions(result, lang);
if (answertype == "choice")
chooseOptions(result, lang);
imageType(result);
}
@ -238,16 +245,29 @@ $(document).ready(function() {
questions++;
chrono = max_chrono;
$('article #container').addClass('game_active');
$('article #container #share').empty();
$('article #container #seed').empty();
$('article #container #copyseed').empty();
$('article #container .chrono').empty().append(chrono);
$('article #container .whois').empty().append("Who's that Pokémon? " + (!infinite? " ("+questions+"/"+max_questions+")" : ""));
$('article #container .pokemon').empty().append('<img src="pokemon/'+image_name+'.png" class="'+(silhouette)+'" />');
$('article #container #answers').empty().append('<span><input type="submit" class="option a1" name="a1" value="'+options[0]+'"></span>')
$('article #container #answers').append('<span><input type="submit" class="option a2" name="a2" value="'+options[1]+'"></span>')
$('article #container #answers').append('<span><input type="submit" class="option a3" name="a3" value="'+options[2]+'"></span>')
$('article #container #answers').append('<span><input type="submit" class="option a4" name="a4" value="'+options[3]+'"></span>')
$('article #container #share').remove();
$('article #container #seed').remove();
$('article #container #copyseed').remove();
if (chrono != "notimer")
$('article #container .chrono').empty().append(chrono);
else
$('article #container .chrono').hide();
$('article #container .whois').empty().append("Who's that Pokémon? " + (!infinite? " (" + questions + "/" + max_questions + ")" : ""));
$('article #container .pokemon').empty().append('<img src="pokemon/' + image_name + '.png" class="' + (silhouette) + ' ' + (answertype) + '" />');
if (answertype == "choice")
{
$('article #container #answers').empty().append('<span><input type="submit" class="option a1" name="a1" value="' + options[0] + '"></span>');
$('article #container #answers').append('<span><input type="submit" class="option a2" name="a2" value="' + options[1] + '"></span>');
$('article #container #answers').append('<span><input type="submit" class="option a3" name="a3" value="' + options[2] + '"></span>');
$('article #container #answers').append('<span><input type="submit" class="option a4" name="a4" value="' + options[3] + '"></span>');
}
else
{
$('article #container #answers').empty().append('<form autocomplete="off"><input type="text" id="answer" name="answer" placeholder="Input the Pokémon name!"\
class="choice"><p class="button"><input type="submit" value="Answer!"></p></form>');
$('article #container #answers input').focus().select();
}
// timer setting
var clock = setInterval(function()
@ -268,18 +288,34 @@ $(document).ready(function() {
($(this).attr('value') == answer) ? showAnswer(true) : showAnswer(false);
});
document.addEventListener('keydown', funcListener = function(event)
if (answertype == "choice")
{
function checkAnswer(v)
document.addEventListener('keydown', funcListener = function(event)
{
function checkAnswer(v)
{
clearInterval(clock);
($('#answers input.a'+v).attr('value') == answer) ? showAnswer(true) : showAnswer(false);
}
if (event.keyCode == 49 || event.keyCode == 72) checkAnswer(1);
else if (event.keyCode == 50 || event.keyCode == 74) checkAnswer(2);
else if (event.keyCode == 51 || event.keyCode == 75) checkAnswer(3);
else if (event.keyCode == 52 || event.keyCode == 76) checkAnswer(4);
});
}
else
{
$("form").submit(function(event)
{
clearInterval(clock);
($('#answers input.a'+v).attr('value') == answer) ? showAnswer(true) : showAnswer(false);
}
if (event.keyCode == 49 || event.keyCode == 72) checkAnswer(1);
else if (event.keyCode == 50 || event.keyCode == 74) checkAnswer(2);
else if (event.keyCode == 51 || event.keyCode == 75) checkAnswer(3);
else if (event.keyCode == 52 || event.keyCode == 76) checkAnswer(4);
});
pokemon_name = event.currentTarget[0].value;
event.preventDefault(); // do not submit form
if (normalizeString(answer) == normalizeString(pokemon_name))
showAnswer(true);
else
showAnswer(false);
});
}
function showAnswer(ok)
{
@ -310,16 +346,6 @@ $(document).ready(function() {
function score()
{
function generateTwitterText()
{
var start_sentence = 'I got ';
var end_sentence = 'Can you get a better score than me?';
var score_sentence = (Math.floor(good_answers/max_questions*100))+'% Pokémons right!'
if (!infinite) return start_sentence+score_sentence+" "+end_sentence;
else return start_sentence+good_answers+" good Pokémon answers! "+end_sentence;
}
function generateSeed()
{
gen = '';
@ -329,8 +355,10 @@ $(document).ready(function() {
gen += gen_list[i].substring(0,1);
}
else gen += "all";
s_gen = "?gen=" + gen;
s_lang = "&lang=" + lang;
s_answertype = "&answertype=" + answertype;
s_silhouette = "&silhouette=" + (silhouette == "silhouette" ? "true" : "false");
s_questions = "&questions=" + (!whole_set? max_questions : "set");
s_time = "&time=" + max_chrono;
@ -338,14 +366,15 @@ $(document).ready(function() {
// save in the local storage for default use
localStorage.setItem('generation', gen);
localStorage.setItem('lang', lang);
localStorage.setItem('answertype', answertype);
localStorage.setItem('silhouette', silhouette);
localStorage.setItem('questions', (!whole_set? max_questions : "set"));
localStorage.setItem('time', max_chrono);
return domain + s_gen + s_lang + s_silhouette + s_questions + s_time;
return domain + s_gen + s_lang + s_answertype + s_silhouette + s_questions + s_time;
}
$('article #container #score .pokemon').after('<div id="seed"></div><div id="share"></div>');
$('article #container #score .pokemon').empty().after('<div id="seed"></div><div id="share"></div>');
$('article #container').addClass('diploma');
$('article #container').removeClass('game_active');
$('article #container .chrono').hide();
@ -356,19 +385,15 @@ $(document).ready(function() {
$('article #container #seed').empty().append('<p style="margin:0px;">Share your configuration</p><input type="text" name="seed" value="'+
generateSeed()+'">');
$('article #container #share').empty().append('<div id="copyseed"><a href="#">Copy</a></div><a href="https://twitter.com/share" \
class="twitter-share-button" data-url="'+generateSeed()+'" data-text="'+generateTwitterText()+
'" data-size="large" data-hashtags="Pokétest">Tweet</a>');
$.getScript("//platform.twitter.com/widgets.js"); // for the twitter button to work
$('article #container #answers').remove(); // until play again is fixed
//$('article #container #answers').empty().append('<p class="button"><input type="submit" \
// class="start_again" name="start_again" value="Play again!"></p>');
$('article #container #share').empty().append('<div id="copyseed"><a href="#">Copy</a></div>');
$('article #container #answers').empty().append('<p class="button"><input type="submit" \
class="start_again" name="start_again" value="Play again!"></p>');
// copy seed in clipboard
$("article #container #copyseed").click(function()
{
$('article #container #seed input').select();
document.execCommand("copy");
navigator.clipboard.writeText($('article #container #seed input').val());
});
$('article #container .button input.start_again').click(function()
@ -377,6 +402,7 @@ $(document).ready(function() {
chrono = max_chrono;
$('article #container .chrono').show();
$('article #container').removeClass('diploma');
$('article #container').addClass('game_active');
game();
});
}

View File

@ -17,7 +17,7 @@ body {
left: 0;
right: 0;
z-index: -1;
background: url("artwork/artwork10.jpg") center center;
background: url("artwork/artwork11.jpg") center center;
position: fixed;
background-attachment: fixed;
background-size: cover;
@ -100,7 +100,7 @@ article #container .flashdex-companion {
}
article #container .top-companion {
margin-top: 20px;
margin-top: 20px; margin-bottom: 10px;
float: right;
width: 250px;
margin-left: 25px; margin-right: 25px;
@ -114,7 +114,6 @@ article #container .middle-companion {
article #container.about p { margin-left:20px; }
article #container.about ul { margin-bottom: 3.5%; }
article #container.about ul li { margin-top: 5px; margin-bottom: 5px; }
article #container.about ul li a { margin-top: 5px; margin-bottom: 5px; font-weight: normal; }
@ -257,8 +256,20 @@ article #container #answers {
justify-content: center;
}
article #container #answers input { margin-right: 30px; display: inline; }
article #container #answers input:last-child { margin-right: 30px; }
article #container #answers input { margin-right: 15px; margin-left: 15px; display: inline; }
article #container #answers form input:last-child { margin: initial; }
article #container #answers form input.choice {
padding: 10px;
min-width: 25vw;
margin: auto;
margin-bottom: auto;
border-radius: 9px;
margin-bottom: 5px;
margin-right: 15px;
}
article #container #answers form .button { margin: 5px; display: inline-block; }
article #container #answers .final_answer { font-size: 23px; }
article #container #answers .final_answer .good { color:#3ad48d; font-weight:bold; }
@ -293,7 +304,6 @@ article #container #seed input {
}
article #container #copyseed {
float: left;
width: 60px; height: 16px;
display: block;
padding: 10px; padding-top: 4px; padding-bottom: 8px;
@ -302,7 +312,8 @@ article #container #copyseed {
font-size: 15px;
font-variant: small-caps;
text-decoration: none;
cursor:pointer;
cursor: pointer;
margin: auto;
}
article #container #copyseed a {
@ -313,12 +324,6 @@ article #container #copyseed a {
article #container #copyseed:hover { background:lightseagreen; }
article #container.diploma {
border-style: solid;
border-image: url(img/border.png) 64 64 64 62 repeat;
border-width: 8px 8px 8px 8px;
}
article #container.diploma #score {
background: url('img/red.png') no-repeat;
background-size: 180px; background-position: right bottom;
@ -349,7 +354,6 @@ article #container.diploma #score {
margin:auto;
display:none;
text-align:center;
margin-top:2vh;
}
#container #game #flashdex .pokedex {
@ -377,14 +381,19 @@ article #container.diploma #score {
left: 0;
margin: 8px;
background: white;
padding: 1.5px;
padding: 0px;
border-radius: 5px;
color: dimgray;
padding-bottom: 1.5px;
padding-top: 0.5px;
}
#game #flashdex .pokedex .left-arrow, #game #flashdex .pokedex .right-arrow {
cursor: pointer;
user-select: none;
font-size: 0.9rem;
padding: 0rem 0.2rem;
line-height: 1.2rem;
}
#game #flashdex .pokedex span.form {
@ -421,6 +430,7 @@ article #container.diploma #score {
font-weight: bold;
color: #fff;
font-size: 0.8rem;
text-shadow: 0 0 2px #000;
}
#game #flashdex .pokedex span.types .Grass { background: #78C850; }
@ -514,8 +524,8 @@ article #container.diploma #score {
/* poketest */
article #container #game #configuration #left_config { float: none; }
article #container #game #configuration #right_config { float: none; }
/*article #container #game #configuration #left_config { float: none; }
article #container #game #configuration #right_config { float: none; }*/
article #container #game #configuration input[name="gen"], article #container #game #selected_options input,
article #container #game #configuration .first { margin-left:15px; margin-bottom:5px; }
article #container #game .button { padding: 10px; padding-top: 20px; }
@ -544,8 +554,11 @@ article #container.diploma #score {
display: block;
}
article #container #answers input:last-child { margin-right: 0px; }
article #container #answers input:last-child { margin-right: 0px; margin-left: 0px; }
article #container.game_active div#answers span { display: block; }
article #container #answers form input.choice { min-width: 75vw; margin-right:0px; }
article #container.diploma #score { background: none; }
article #container #seed input {
width: 90%;
@ -559,6 +572,11 @@ article #container.diploma #score {
margin-top: 1vh;
}
article #container .pokemon img.input {
height: 42vh;
margin-top: 1vh;
}
article #container #top_game .whois { width: 80%; }
article #container #top_game .chrono {
width: 2rem;
@ -572,6 +590,8 @@ article #container.diploma #score {
padding: 10px; padding-top: 15px;
}
article #container #answers form .button { display: block; }
/* flashdex */
#container #game #flashdex .pokedex { width: 230px; }
@ -599,7 +619,7 @@ article #container.diploma #score {
#game #flashdex_config .gen { padding: 0; margin: 0; display: block; }
#game #flashdex_config .gen label { padding: 2px; margin: 2px; margin-left: 8px; }
#game #flashdex_config select.lang { margin-left: 15px; margin-top:5px; }
#game #flashdex_config p.button { padding-top: 15px; margin-top: 15px; }
#game #flashdex_config p.button { padding-top: 0px; margin-top: 0px; }
/* about */
@ -622,6 +642,15 @@ article #container.diploma #score {
footer { height:6vh; }
}
@media screen and (max-width:500px) {
article #container #game #configuration #left_config { float: none; text-align: center; }
article #container #game #configuration #right_config { float: none; text-align: center; }
article #container #game #configuration input[name="gen"], article #container #game #selected_options input, article #container #game #configuration .first {
margin-left: 0px;
}
}
@media screen and (max-width:400px) {
header img { height: 60px; }
header nav #hamburger { top: 1.05rem; }