Compare commits

..

6 commits

Author SHA1 Message Date
Kazhnuz
c2d35a20f7 feat: ajoute rumeurs
Fixes #2
2024-02-09 15:19:56 +01:00
Kazhnuz
d2a9188d01 fix: ajoute assets oubliés 2024-02-09 15:16:09 +01:00
Kazhnuz
1c063862fe feat(pokedex): ajoute pokedex g2 2024-02-09 15:14:55 +01:00
Kazhnuz
1c201112d8 feat: ajoute pokedex g1 2024-02-09 15:12:22 +01:00
Kazhnuz
5cd0d4bf4a feat(site): initialise site web 2024-02-09 15:02:12 +01:00
Kazhnuz
172094787e chore: update readme 2024-02-09 14:53:13 +01:00
1740 changed files with 58436 additions and 2 deletions

25
.gitignore vendored Normal file
View file

@ -0,0 +1,25 @@
# Generated files
package/generated*
# Ignore installed npm modules
node_modules/
# Ignore build tool output, e.g. code coverage
.nyc_output/
coverage/
# Ignore API documentation
api-docs/
# Ignore folders from source code editors
.vscode
.idea
# Ignore eleventy output when doing manual tests
_site/
package-lock.json
# Ignore test files
.cache
test/stubs-layout-cache/_includes/*.js

View file

@ -1,3 +1,3 @@
# missing-number
# Missing-Number
A glitch/creepypasta-based "ARG-like" Pokemon website
Un site Pokémon sur la G1/G2

11
_data/metadata.js Normal file
View file

@ -0,0 +1,11 @@
module.exports = {
title: "Missing Number",
url: "https://missingnumber.fanstuff.garden/",
language: "fr",
description: "Découvrez les secrets des premières version de Pokémon",
author: {
name: "Kazhnuz",
email: "kazhnuz@kobold.cafe",
url: "https://kazhnuz.space/"
}
}

38275
_data/pokegold.json Normal file

File diff suppressed because it is too large Load diff

16949
_data/pokered.json Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,34 @@
---
layout: layouts/parent.njk
---
<main id="skip">
<div>
{{ content | safe }}
</div>
</main>
<aside id="more-info">
<div class="card">
<ol>
{%- for post in collections.all | sort(false, true, "data.eleventySubNavigation.order") -%}
{%- if post.data.eleventyNavigation.key == eleventySubNavigation.parent -%}
<li><a href="{{ post.url }}" style="padding-left:3px;">← {{ post.data.eleventyNavigation.key }}</a></li>
{%- endif -%}
{%- endfor -%}
</ol>
</div>
<div class="card">
<h2>Sommaire</h2>
{{ content | toc | safe }}
</div>
<div class="card">
<h2>Pages sœurs</h2>
<ol>
{%- for post in collections.all | sort(false, true, "data.eleventySubNavigation.order") -%}
{%- if post.data.eleventySubNavigation.parent == eleventySubNavigation.parent -%}
<li><a href="{{ post.url }}">{{ post.data.eleventySubNavigation.key }}</a></li>
{%- endif -%}
{%- endfor -%}
</ol>
</div>
</aside>

View file

@ -0,0 +1,25 @@
---
layout: layouts/parent.njk
---
<main id="skip">
<div>
{{ content | safe }}
</div>
</main>
<aside id="more-info">
<div class="card">
<h2>Sommaire</h2>
{{ content | toc | safe }}
</div>
<div class="card">
<h2>Sous-pages</h2>
<ol>
{%- for post in collections.all | sort(false, true, "data.eleventySubNavigation.order") -%}
{%- if post.data.eleventySubNavigation.parent == eleventyNavigation.key -%}
<li><a href="{{ post.url }}">{{ post.data.eleventySubNavigation.key }}</a></li>
{%- endif -%}
{%- endfor -%}
</ol>
</div>
</aside>

View file

@ -0,0 +1,15 @@
---
layout: layouts/parent.njk
---
<main id="skip">
<div>
{{ content | safe }}
</div>
</main>
<aside id="more-info">
<div class="card">
<h2>Sommaire</h2>
{{ content | toc | safe }}
</div>
</aside>

View file

@ -0,0 +1,20 @@
---
layout: layouts/parent.njk
---
<main id="skip">
<div>
{{ content | safe }}
<h2 id="liste-des-pages">Liste des pages</h2>
{{ collections.all | eleventyNavigation: "Annuaire", navToHtmlOptions | eleventyNavigationToHtml | safe | json }}
</div>
</main>
<aside id="more-info">
<div class="card">
<h2 class="visually-hidden">Table of Content</h2>
{{ content | toc | safe }}
<ul>
<li><a href="#liste-des-pages">Liste des pages</a></li>
</ul>
</div>
</aside>

View file

@ -0,0 +1,8 @@
---
layout: layouts/parent.njk
---
<main id="skip">
<div>
{{ content | safe }}
</div>
</main>

View file

@ -0,0 +1,47 @@
<!doctype html>
<html lang="{{ metadata.language }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ title or metadata.title }}</title>
<meta name="description" content="{{ description or metadata.description }}">
{#- Atom and JSON feeds included by default #}
<link rel="alternate" href="/feed/feed.xml" type="application/atom+xml" title="{{ metadata.title }}">
<link rel="alternate" href="/feed/feed.json" type="application/json" title="{{ metadata.title }}">
<link rel="icon" type="image/x-icon" href="/favicon.png">
<script src="/js/datatables.js"></script>
{#- Uncomment this if youd like folks to know that you used Eleventy to build your site! #}
<meta name="generator" content="{{ eleventy.generator }}">
{%- css %}{% include "public/css/index.css" %}{% endcss %}
{%- css %}{% include "public/css/datatables.css" %}{% endcss %}
<style>{% getBundle "css" %}</style>
</head>
<body>
<a href="#skip" class="visually-hidden">Skip to main content</a>
<header>
<h1>
<a href="/" class="home-link"><img src="/img/logo.png" alt="{{ metadata.title }}"></a>
</h1>
<nav>
<h2 class="visually-hidden">Top level navigation menu</h2>
</nav>
</header>
<div class="wrapper">
<nav id="sidebar">
{{ collections.all | eleventyNavigation | eleventyNavigationToHtml({anchorClass: "itemLink",activeAnchorClass: "active",activeListItemClass: "active",activeKey: eleventyNavigation.key, listClass: "nav", listItemClass: "item"}) | safe }}
</nav>
{{ content | safe }}
</div>
<footer><a href="https://creativecommons.org/licenses/by-sa/4.0/"><img src="/img/cc-by-sa.png" /><span class="visually-hidden">Tout le contenu de cette page est sous licence Creatve Common Attribution - Partage à l'identique.</span></a></footer>
<!-- Current page: {{ page.url | htmlBaseUrl }} -->
</body>
</html>

View file

@ -0,0 +1,45 @@
---
layout: layouts/parent.njk
---
<main id="skip" class="pokepage">
<div>
{{ content | safe }}
</div>
</main>
<aside id="more-info">
<div class="card">
<div>Retour au <a href="/pokedex/g1">pokédex</a></div>
</div>
<figure class="card" style="text-align:center;">
<img src="/img/pret/pokered/front/{{ pokemon.sprite }}.png" alt="Sprite de {{ pokemon.namefr }} dans Rouge et Bleu" />
<img src="/img/pret/pokered/front_rg/{{ pokemon.sprite }}.png" alt="Sprite de {{ pokemon.namefr }} dans Rouge et Vert" />
<img src="/img/pret/pokeyellow/front/{{ pokemon.sprite }}.png" alt="Sprite de {{ pokemon.namefr }} dans Jaune" />
<figcaption>{{ pokemon.namefr }} dans Rouge/Bleu, Rouge/Vert, et Jaune</figcaption>
</figure>
<div class="card maininfo" aria-label="Informations principales">
<ul>
<li><strong>Nom</strong>: {{ pokemon.namefr }}</li>
<li><strong>Nom en</strong>: {{ pokemon.nameen }}</li>
<li><strong>Nom jp</strong>: {{ pokemon.namejp }}</li>
<li><strong>N° Pokedex</strong>: {{ pokemon.baseStats.dex }}</li>
<li><strong>ID interne</strong>: {{ pokemon.internalId }}</li>
</ul>
</div>
<div class="card maininfo" aria-label="Data pokedex">
<ul>
<li><strong>{{ pokemon.pokedex.species }}</strong></li>
<li><strong>Taille</strong>: {{ pokemon.pokedex.height }}</li>
<li><strong>Poids</strong>: {{ pokemon.pokedex.weight }}</li>
<li><strong>Types</strong>: {{ pokemon.baseStats.types[0] }}{%- if pokemon.baseStats.types[0] !== pokemon.baseStats.types[1] -%}, {{ pokemon.baseStats.types[1] }} {%- endif -%}</li>
</ul>
</div>
<div class="card maininfo" aria-label="Informations capture">
<ul>
<li><strong>Taux capture</strong>: {{ pokemon.baseStats.catch_rate }}</li>
<li><strong>Bonus exp</strong>: {{ pokemon.baseStats.base_exp }}</li>
<li><strong>Evol exp</strong>: {{ pokemon.baseStats.growth_rate }}</li>
</ul>
</div>
</aside>

View file

@ -0,0 +1,67 @@
---
layout: layouts/parent.njk
---
<main id="skip" class="pokepage">
<div>
{{ content | safe }}
</div>
</main>
<aside id="more-info">
<div class="card">
<div>Retour au <a href="/pokedex/g2">pokédex</a></div>
</div>
<figure class="card" style="text-align:center;">
<img src="/img/pret/pokegold/{{ pokemon.sprite }}/front_gold.png" alt="Sprite de {{ pokemon.namefr }} dans Pokemon Or" />
<img src="/img/pret/pokegold/{{ pokemon.sprite }}/front_silver.png" alt="Sprite de {{ pokemon.namefr }} dans Pokemon Argent" />
<figcaption>{{ pokemon.namefr }} dans Or, Argent</figcaption>
</figure>
<div class="card maininfo" aria-label="Informations principales">
<ul>
<li><strong>Nom</strong>: {{ pokemon.namefr }}</li>
<li><strong>Nom en</strong>: {{ pokemon.nameen }}</li>
<li><strong>Nom jp</strong>: {{ pokemon.namejp }}</li>
<li><strong>N° Dex (Kanto)</strong>: {{ pokemon.baseStats.dex }}</li>
<li><strong>N° Dex (Johto)</strong>: {{ pokemon.internalId }}</li>
</ul>
</div>
<div class="card maininfo" aria-label="Donnée">
<ul>
<li><strong>{{ pokemon.pokedex.species }}</strong></li>
<li><strong>Taille</strong>: {{ pokemon.pokedex.height }}</li>
<li><strong>Poids</strong>: {{ pokemon.pokedex.weight }}</li>
<li><strong>Types</strong>: {{ pokemon.baseStats.types[0] }}{%- if pokemon.baseStats.types[0] !== pokemon.baseStats.types[1] -%}, {{ pokemon.baseStats.types[1] }} {%- endif -%}</li>
</ul>
</div>
<div class="card maininfo" aria-label="Capture">
<ul>
<li><strong>Base capture</strong>: {{ pokemon.baseStats.catch_rate }}</li>
<li><strong>Bonus exp</strong>: {{ pokemon.baseStats.base_exp }}</li>
<li><strong>Evol exp</strong>: {{ pokemon.baseStats.growth_rate }}</li>
<li><strong>Objets</strong>:
{% if pokemon.baseStats.items[0] !== "?" and pokemon.baseStats.items[1] !== "?" and pokemon.baseStats.items[1] !== pokemon.baseStats.items[0] -%}
{{ pokemon.baseStats.items[0] }}, {{ pokemon.baseStats.items[1] }}
{%- endif -%}
{% if pokemon.baseStats.items[0] !== "?" and pokemon.baseStats.items[1] !== "?" and pokemon.baseStats.items[1] === pokemon.baseStats.items[0] -%}
{{ pokemon.baseStats.items[0] }}
{%- endif -%}
{% if pokemon.baseStats.items[0] === "?" and pokemon.baseStats.items[1] !== "?" -%}
{{ pokemon.baseStats.items[1] }}
{%- endif -%}
{% if pokemon.baseStats.items[0] !== "?" and pokemon.baseStats.items[1] === "?" -%}
{{ pokemon.baseStats.items[0] }}
{%- endif -%}
{% if pokemon.baseStats.items[0] === "?" and pokemon.baseStats.items[1] === "?" -%}
Aucun
{%- endif -%}
</li>
</ul>
</div>
<div class="card maininfo" aria-label="Reproduction">
<ul>
<li><strong>Œufs</strong>: {{ pokemon.baseStats.eggs[0] }}{%- if pokemon.baseStats.eggs[0] !== pokemon.baseStats.eggs[1] -%}, {{ pokemon.baseStats.eggs[1] }} {%- endif -%}</li>
<li><strong>Sexe</strong>: {{ pokemon.baseStats.gender }}</li>
<li><strong>Éclosion</strong>: {{ pokemon.baseStats.eclosion * 256 }} pas</li>
</ul>
</div>
</aside>

View file

@ -0,0 +1,33 @@
---
layout: layouts/parent.njk
---
<main id="skip">
<div>
{{ content | safe }}
</div>
</main>
<aside id="more-info">
<div class="card">
<h2>Sommaire</h2>
{{ content | toc | safe }}
</div>
</aside>
<script>
const myTable = document.querySelector("table.pokedex, .pokedex table");
if (myTable) {
let labels = {
placeholder: "Chercher...",
searchTitle: "Chercher dans le tableau",
perPage: "lignes par page",
noRows: "Aucune lignée trouvée",
info: "Résultats {start} à {end} sur {rows}",
noResults: "Aucun résultat ne correspond à votre recherche",
};
let dataTable = new simpleDatatables.DataTable("table.pokedex, .pokedex table", {
labels,
});
}
</script>

View file

@ -0,0 +1,28 @@
---
layout: layouts/parent.njk
---
{# Only include the syntax highlighter CSS on blog posts #}
{%- css %}{% include "node_modules/prismjs/themes/prism-okaidia.css" %}{% endcss %}
{%- css %}{% include "public/css/prism-diff.css" %}{%- endcss %}
<h1>{{ title }}</h1>
<ul class="post-metadata">
<li><time datetime="{{ page.date | htmlDateString }}">{{ page.date | readableDate }}</time></li>
{%- for tag in tags | filterTagList %}
{%- set tagUrl %}/tags/{{ tag | slugify }}/{% endset %}
<li><a href="{{ tagUrl }}" class="post-tag">{{ tag }}</a>{%- if not loop.last %}, {% endif %}</li>
{%- endfor %}
</ul>
{{ content | safe }}
{%- if collections.posts %}
{%- set previousPost = collections.posts | getPreviousCollectionItem %}
{%- set nextPost = collections.posts | getNextCollectionItem %}
{%- if nextPost or previousPost %}
<ul class="links-nextprev">
{%- if previousPost %}<li>Previous: <a href="{{ previousPost.url }}">{{ previousPost.data.title }}</a></li>{% endif %}
{%- if nextPost %}<li>Next: <a href="{{ nextPost.url }}">{{ nextPost.data.title }}</a></li>{% endif %}
</ul>
{%- endif %}
{%- endif %}

9
_includes/postslist.njk Normal file
View file

@ -0,0 +1,9 @@
{%- css %}.postlist { counter-reset: start-from {{ (postslistCounter or postslist.length) + 1 }} }{% endcss %}
<ol reversed class="postlist">
{% for post in postslist | reverse %}
<li class="postlist-item{% if post.url == url %} postlist-item-active{% endif %}">
<a href="{{ post.url }}" class="postlist-link">{% if post.data.title %}{{ post.data.title }}{% else %}<code>{{ post.url }}</code>{% endif %}</a>
<time class="postlist-date" datetime="{{ post.date | htmlDateString }}">{{ post.date | readableDate("LLLL yyyy") }}</time>
</li>
{% endfor %}
</ol>

19
content/404.md Normal file
View file

@ -0,0 +1,19 @@
---
layout: layouts/home.njk
permalink: 404.html
eleventyExcludeFromCollections: true
---
# Contenu non trouvé.
Retournez à l'<a href="/">accueil</a> et essayer une autre page.
<!--
Read more: https://www.11ty.dev/docs/quicktips/not-found/
This will work for both GitHub pages and Netlify:
* https://help.github.com/articles/creating-a-custom-404-page-for-your-github-pages-site/
* https://www.netlify.com/docs/redirects/#custom-404
-->

31
content/apropos.md Normal file
View file

@ -0,0 +1,31 @@
---
layout: layouts/base.njk
eleventyNavigation:
key: À propos
parent: Accueil
order: 0
---
# À propos de Missing Number
Missing Number est un fansite pokémon orienté 1G / 2G, visant à parler des différents aspects de cette époque. Il a pour but à terme de devenir une sorte de mini "guide" de ces jeux, offrant un peu tout ce qu'il y a a savoir aussi. Il est utilise le générateur de site Eleventy pour former des pages HTML simple, et cherche à être légé et rapide à charger.
Ce site à un concept et un sujet similaire au site [Blue Moon Falls](https://bluemoonfalls.com/), mais une approche un peu différente (et Missing Number est en Français là ou BMF est en anglais). Blue Moon Fall offre une approche permettant de découvrir plus les jeux Pokémon 1G/2G et notamment certaines des mécaniques de customisations et "comment obtenir le plus de fun des jeux", là ou Missing Number vise à montrer un tas de chose qui existaient à cette époque, et tout l'aspect "méta-jeu". Si un jour peut-être qu'on aura quelques guides stratégiques pour les pokémons, pour l'instant nous n'en avons pas.
Cependant, je vous conseille de visiter aussi Blue Moon Falls si vous lisez l'anglais, le site à une approche complémentaire très intéressante, et fournis plusieurs outils dont on reparlera dans les pages adéquates.
Nous avons aussi quelques informations en commun avec le site [PRAMA Initiative](https://www.prama-initiative.com/), un fanwiki de glitchologie Pokémon, mais ceux-ci sont bieeeen plus complet sur ce sujet (même s'ils n'ont pas encore de glitchdex).
## Pourquoi ce site ?
Le but de ce site est de fournir un petit site sur un sujet très spécifique (les pokémons des générations 1 et 2) regroupant des liens vers de nombreux autres endroits ou vous aurez plus d'informations. L'idée est d'être moins complet qu'un wiki, mais un peu plus abordable, et traitant de sujets plus divers (mais centré sur la thématique commune), n'hésitant pas à aller dans les domaines moins "officiels", voir moins encyclopédique.
Il se pose en complément des gros sites Pokémon, tout en étant un petit espace ou je peux parler de la partie qui me plaît de ces sujets. L'idée est aussi de fournir un feeling un peu de cette époque, en abordant de nombreux sujets qui revenaient dans la période (ou plus tard) autour de ces jeux.
## Pourquoi la 1G/2G ?
J'ai fait ce site parce que j'ai passé d'excellent moment sur ces générations, et que je voulais aider à les rendre plus accessible aux gens voulant s'y lancer maintenant. Par rapport aux pokémon moderne, les premières générations ont pas mal d'archaïsme, mais elles ont aussi un scope plus petit qui les rends plus accessible sur certains points. N'ayant pas des centaines et centaines de pokémon avec lesquels jongler, cela en fait des jeux plus "abordable" sur certains points, ayant un peu moins de complexité.
Cela ne veut pas dire qu'elles sont toujours facile, ou n'offrent pas de richesse, mais elles ont un caractère plus simple. Mais à côté, il y a tout un univers moins connus, fondée non pas sur les jeux en eux-même mais tout les discours et les phénomènes émergeant qui ont eut lieu.
D'autres "blocs" de générations pourraient être fait avec d'autres sites similaires, tel qu'un site 3-5G, un site 6G/7G, etc.

View file

@ -0,0 +1,3 @@
module.exports = {
eleventyExcludeFromCollections: true
}

27
content/feed/feed.njk Executable file
View file

@ -0,0 +1,27 @@
---
# Metadata comes from _data/metadata.js
permalink: /feed/feed.xml
---
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:base="{{ metadata.language }}">
<title>{{ metadata.title }}</title>
<subtitle>{{ metadata.description }}</subtitle>
<link href="{{ permalink | htmlBaseUrl(metadata.url) }}" rel="self"/>
<link href="{{ metadata.url | addPathPrefixToFullUrl }}"/>
<updated>{{ collections.posts | getNewestCollectionItemDate | dateToRfc3339 }}</updated>
<id>{{ metadata.url }}</id>
<author>
<name>{{ metadata.author.name }}</name>
<email>{{ metadata.author.email }}</email>
</author>
{%- for post in collections.posts | reverse %}
{% set absolutePostUrl %}{{ post.url | htmlBaseUrl(metadata.url) }}{% endset %}
<entry>
<title>{{ post.data.title }}</title>
<link href="{{ absolutePostUrl }}"/>
<updated>{{ post.date | dateToRfc3339 }}</updated>
<id>{{ absolutePostUrl }}</id>
<content type="html">{{ post.templateContent | transformWithHtmlBase(absolutePostUrl, post.url) }}</content>
</entry>
{%- endfor %}
</feed>

29
content/feed/json.njk Normal file
View file

@ -0,0 +1,29 @@
---
# Metadata comes from _data/metadata.js
permalink: /feed/feed.json
---
{
"version": "https://jsonfeed.org/version/1.1",
"title": "{{ metadata.title }}",
"language": "{{ metadata.language }}",
"home_page_url": "{{ metadata.url | addPathPrefixToFullUrl }}",
"feed_url": "{{ permalink | htmlBaseUrl(metadata.url) }}",
"description": "{{ metadata.description }}",
"author": {
"name": "{{ metadata.author.name }}",
"url": "{{ metadata.author.url }}"
},
"items": [
{%- for post in collections.posts | reverse %}
{%- set absolutePostUrl = post.url | htmlBaseUrl(metadata.url) %}
{
"id": "{{ absolutePostUrl }}",
"url": "{{ absolutePostUrl }}",
"title": "{{ post.data.title }}",
"content_html": {% if post.templateContent %}{{ post.templateContent | transformWithHtmlBase(absolutePostUrl, post.url) | dump | safe }}{% else %}""{% endif %},
"date_published": "{{ post.date | dateToRfc3339 }}"
}
{% if not loop.last %},{% endif %}
{%- endfor %}
]
}

35
content/index.md Normal file
View file

@ -0,0 +1,35 @@
---
layout: layouts/base.njk
eleventyNavigation:
key: Accueil
order: 0
---
# Bienvenue sur Missing-Number
Missing-Number est un petit site Pokémon orienté 1G / 2G, qui explore les différents aspects de la série à cette époque, et parle aussi bien des jeux que des rumeurs et légendes urbaines autour. Vous pouvez y trouver quelques sujets niches, ainsi que des pokédex pour les version 1G/2G. Il est proche dans l'esprit de [Blue Moon Falls](https://bluemoonfalls.com/), un autre site parlant du sujet (en anglais).
L'idée de Missing Number est du coup d'être un peu un espace de découverte, où vous pourrez en découvrir plus sur ces deux jeux rétro à votre guise. [En savoir plus](/about).
## Updates
- **2024/02/28** - Ouverture du site
## Todo
- Ajouter les jeux secondaires de ces générations
- Pokédex G2 béta (va compléter la page existante)
- Creepypasta et légendes urbaines du genre
- Infos sur le TGC à l'époque 1G/2G
- Ajouter une section sur les glitchs
- Créer "l'AU" Indigo Foundation, qui mélange pleins de ces éléments présentés ici sous forme d'un univers alternatif
- Ajouter un annuaire des sites web
## Sources et crédits
Ce site faisant en grande partie du regroupement et de la traduction d'informations, de nombreuses informations sont reprise de divers wiki pokémon anglophones et traduits. Les sources sont disponibles également de manière plus précise (ainsi que les artistes quand des artworks de fans sont utilisés) dans chaque page du site quand c'est pertinent.
- Les décompilations du [projet pret](https://github.com/pret/) - Les informations internes des jeux, ainsi que de nombreux sprites
- [The Cutting Room Floor]() - Toutes les informations à propos des béta et éléments de développements des jeux
- [Bulbapedia]() (en) et [Pokepedia]() (fr) - Wiki pokémon de références, où j'ai récupéré de nombreuses informations plus génériques
- [Tyradex](https://tyradex.vercel.app/) - API pokedex francophone, j'y ai récupéré quelques informations qui me manquait des décompilations (genre des tailles/poids)

View file

@ -0,0 +1,55 @@
---
layout: layouts/pokelist.njk
eleventyNavigation:
parent: Autour des jeux
key: Pokédex (RBY)
order: 1
---
# Pokédex Génération 1
Cette page présente les pokémon possible à obtenir dans la première génération de Pokémon (Rouge, Bleu, Jaune).
Les données de ce pokedex sont récupéré directement des dessamblages pokered et pokeyellow (ainsi que la traduction pokered-fr) et transformée via un script en un format de donnée pour que le site puisse les lires.
Cliquez sur le nom d'un pokémon pour accéder à ses informations.
## Liste des pokémons
<table class="pokedex">
<thead>
<tr>
<th>Dex</th>
<th>ID</th>
<th>Nom</th>
<th>Types</th>
<th>PV</th>
<th>Atk</th>
<th>Def</th>
<th>Spd</th>
<th>Spe</th>
</tr>
</thead>
<tbody>
{%- for pokemon in pokered -%}
<tr>
<td>{{ pokemon.baseStats.dex }} </td>
<td>{{ pokemon.internalId }} </td>
<td> <a href="/pokedex/g1/{{ pokemon.namefr | replace("", "F") | replace("", "M") | slugify }}">{{ pokemon.namefr }}</a> </td>
<td> {{ pokemon.baseStats.types[0] }}{%- if pokemon.baseStats.types[0] !== pokemon.baseStats.types[1] -%}, {{ pokemon.baseStats.types[1] }} {%- endif -%} </td>
<td>{{ pokemon.baseStats.stats.hp }}</td>
<td>{{ pokemon.baseStats.stats.atk }}</td>
<td>{{ pokemon.baseStats.stats.def }}</td>
<td>{{ pokemon.baseStats.stats.spd }}</td>
<td>{{ pokemon.baseStats.stats.spe }}</td>
</tr>
{%- endfor -%}
<tbody>
</table>
## Crédits
- Données venant de pokered, pokeyellow
- Traductions récupérés via pokered-fr
- Pokedex inspiré de celui du Monde des Pokémon de Pix@lgo

View file

@ -0,0 +1,177 @@
---
pagination:
data: pokered
size: 1
alias: pokemon
permalink: "pokedex/g1/{{ pokemon.namefr | replace('♀', 'F') | replace('♂', 'M') | slugify }}/"
layout: layouts/pokedex.njk
---
<div style="display:flex;justify-content:space-between;">
<div>
{%- if pokemon.baseStats.dex > 1 -%}<a href="/pokedex/g1/{{ pokered[pokemon.baseStats.dex - 2].namefr | replace('♀', 'F') | replace('♂', 'M') | slugify }}">← {{ pokered[pokemon.baseStats.dex - 2].namefr }}</a> {%- endif -%}
</div>
<div>
{%- if pokemon.baseStats.dex < 151 -%}<a href="/pokedex/g1/{{ pokered[pokemon.baseStats.dex].namefr | replace('♀', 'F') | replace('♂', 'M') | slugify }}">{{ pokered[pokemon.baseStats.dex].namefr }} →</a> {%- endif -%}
</div>
</div>
# {{ pokemon.namefr }}
{{ pokemon.namefr }} ( {{ pokemon.nameen }} en anglais ; {{ pokemon.namejp }} en japonais ) est le pokémon n°{{ pokemon.baseStats.dex }} du pokedex de Kanto, de type {{ pokemon.baseStats.types[0] }}{% if pokemon.baseStats.types[0] !== pokemon.baseStats.types[1] %} et {{ pokemon.baseStats.types[1] }} {%- endif -%}. {% if pokemon.baseStats.dex <= 151 -%} Il est apparu dans la première génération. {%- endif %}
## Généralité
### Statistiques
| | PV | ATK | DEF | SPD | SPE |
|:-:|:--:|:---:|:---:|:---:|:---:|
| **Base :** | {{ pokemon.baseStats.stats.hp }} | {{ pokemon.baseStats.stats.atk }} | {{ pokemon.baseStats.stats.def }} | {{ pokemon.baseStats.stats.spd }} | {{ pokemon.baseStats.stats.spe }} |
### Évolutions
<table>
<thead>
<tr>
<th>Évolue en</th>
<th>via</th>
</tr>
</thead>
<tbody>
{%- for evolution in pokemon.evoMoves.evolutionItems -%}
<tr>
<td><a href="/pokedex/g1/{{ evolution.pokemon | replace("", "F") | replace("", "M") | slugify }}">{{ evolution.pokemon }} </td>
<td>Avec un(e) {{ evolution.item }} </td>
</tr>
{%- endfor -%}
{%- for evolution in pokemon.evoMoves.evolutionLevel -%}
<tr>
<td><a href="/pokedex/g1/{{ evolution.pokemon | replace("", "F") | replace("", "M") | slugify }}">{{ evolution.pokemon }} </td>
<td> Au niveau {{ evolution.level }} </td>
</tr>
{%- endfor -%}
{%- for evolution in pokemon.evoMoves.evolutionTrade -%}
<tr>
<td><a href="/pokedex/g1/{{ evolution.pokemon | replace("", "F") | replace("", "M") | slugify }}">{{ evolution.pokemon }} </td>
<td> Par échange </td>
</tr>
{%- endfor -%}
{%- if (pokemon.evoMoves.nbrEvolution <= 0 ) -%}
<tr>
<td colspan="2"> <em>Stade Final</em> </td>
</tr>
{%- endif -%}
</tbody>
</table>
## Emplacements
<table class="pokedex">
<thead>
<tr>
<th></th>
<th>Emplacement</th>
</tr>
</thead>
<tbody>
<tr>
<th>Rouge </th>
<td>
{%- for encounterList in pokemon.encounters.red -%}
{% if encounterList.prefix !== "" %}{{ encounterList.prefix }} : {% endif -%} {{ encounterList.list | join(" ; ") }}<br />
{%- endfor -%}
</td>
</tr>
<tr>
<th>Bleu </th>
<td>
{%- for encounterList in pokemon.encounters.blue -%}
{% if encounterList.prefix !== "" %}{{ encounterList.prefix }} : {% endif -%} {{ encounterList.list | join(" ; ") }}<br />
{%- endfor -%}
</td>
</tr>
<tr>
<th>Jaune </th>
<td>
{%- for encounterList in pokemon.encounters.yellow -%}
{% if encounterList.prefix !== "" %}{{ encounterList.prefix }} : {% endif -%} {{ encounterList.list | join(" ; ") }}<br />
{%- endfor -%}
</td>
</tr>
</tbody>
</table>
## Attaques
<div class="grid" style="display:flex;">
<div>
<table>
<thead>
<tr>
<th>Attaques de base</th>
</tr>
</thead>
<tbody>
{%- for move in pokemon.baseStats.base_move -%}
<tr>
<td>{{ move }} </td>
</tr>
{%- endfor -%}
</tbody>
</table>
<table>
<thead>
<tr>
<th>Niv</th>
<th>Attaque</th>
</tr>
</thead>
<tbody>
{%- for move in pokemon.evoMoves.moves -%}
<tr>
<td> {{ move.level }} </td>
<td>{{ move.move }} </td>
</tr>
{%- endfor -%}
{%- if pokemon.evoMoves.nbrMoves == 0 -%}
<tr>
<td colspan="2"> <em>Aucune attaque apprise par niveau</em> </td>
</tr>
{%- endif -%}
</tbody>
</table>
*(Note : certaines attaques peuvent se retrouver en double dans les tableaux.)*
</div>
<div>
<table>
<thead>
<tr>
<th>Par CT / CS</th>
</tr>
</thead>
<tbody>
{%- for move in pokemon.baseStats.tmhm -%}
<tr>
<td>{{ move }} </td>
</tr>
{%- endfor -%}
{%- if pokemon.baseStats.nbrTmHm == 0 -%}
<tr>
<td> <em>Aucune attaque apprise par CT/CS</em> </td>
</tr>
{%- endif -%}
</tbody>
</table>
</div>
</div>

View file

@ -0,0 +1,55 @@
---
layout: layouts/pokelist.njk
eleventyNavigation:
parent: Autour des jeux
key: Pokédex (GSC)
order: 1
---
# Pokédex Génération 2
Cette page présente les pokémon possible à obtenir dans la seconde génération de Pokémon (Or, Argent, Cristal).
Les données de ce pokedex sont récupéré directement des dessamblages pokered et pokeyellow (ainsi que la traduction pokered-fr) et transformée via un script en un format de donnée pour que le site puisse les lires.
Cliquez sur le nom d'un pokémon pour accéder à ses informations.
## Liste des pokémons
<table class="pokedex">
<thead>
<tr>
<th>Dex</th>
<th>Nom</th>
<th>Types</th>
<th>PV</th>
<th>Atk</th>
<th>Def</th>
<th>Spd</th>
<th>Spe.Atk</th>
<th>Spe.Def</th>
</tr>
</thead>
<tbody>
{%- for pokemon in pokegold -%}
<tr>
<td>{{ pokemon.baseStats.dex }} </td>
<td> <a href="/pokedex/g2/{{ pokemon.namefr | replace("", "F") | replace("", "M") | slugify }}">{{ pokemon.namefr }}</a> </td>
<td> {{ pokemon.baseStats.types[0] }}{%- if pokemon.baseStats.types[0] !== pokemon.baseStats.types[1] -%}, {{ pokemon.baseStats.types[1] }} {%- endif -%} </td>
<td>{{ pokemon.baseStats.stats.hp }}</td>
<td>{{ pokemon.baseStats.stats.atk }}</td>
<td>{{ pokemon.baseStats.stats.def }}</td>
<td>{{ pokemon.baseStats.stats.spd }}</td>
<td>{{ pokemon.baseStats.stats.speatk }}</td>
<td>{{ pokemon.baseStats.stats.spedef }}</td>
</tr>
{%- endfor -%}
<tbody>
</table>
## Crédits
- Données venant de pokered, pokeyellow
- Traductions récupérés via pokered-fr
- Pokedex inspiré de celui du Monde des Pokémon de Pix@lgo

View file

@ -0,0 +1,191 @@
---
pagination:
data: pokegold
size: 1
alias: pokemon
permalink: "pokedex/g2/{{ pokemon.namefr | replace('♀', 'F') | replace('♂', 'M') | slugify }}/"
layout: layouts/pokedex2.njk
---
<div style="display:flex;justify-content:space-between;">
<div>
{%- if pokemon.baseStats.dex > 1 -%}<a href="/pokedex/g2/{{ pokegold[pokemon.baseStats.dex - 2].namefr | replace('♀', 'F') | replace('♂', 'M') | slugify }}">← {{ pokegold[pokemon.baseStats.dex - 2].namefr }}</a> {%- endif -%}
</div>
<div>
{%- if pokemon.baseStats.dex < 251 -%}<a href="/pokedex/g2/{{ pokegold[pokemon.baseStats.dex].namefr | replace('♀', 'F') | replace('♂', 'M') | slugify }}">{{ pokegold[pokemon.baseStats.dex].namefr }} →</a> {%- endif -%}
</div>
</div>
# {{ pokemon.namefr }}
{{ pokemon.namefr }} ( {{ pokemon.nameen }} en anglais ; {{ pokemon.namejp }} en japonais ) est le pokémon n°{{ pokemon.baseStats.dex }} du pokedex de Kanto, de type {{ pokemon.baseStats.types[0] }}{% if pokemon.baseStats.types[0] !== pokemon.baseStats.types[1] %} et {{ pokemon.baseStats.types[1] }} {%- endif -%}. {% if pokemon.baseStats.dex <= 151 -%} Il est apparu dans la première génération. {%- endif %}{% if pokemon.baseStats.dex > 151 -%} Il est apparu dans la seconde génération. {%- endif %}
## Généralité
### Statistiques
| | PV | ATK | DEF | SPD | SPE.ATK | SPE.DEF |
|:-:|:--:|:---:|:---:|:---:|:-------:|:-------:|
| **Base :** | {{ pokemon.baseStats.stats.hp }} | {{ pokemon.baseStats.stats.atk }} | {{ pokemon.baseStats.stats.def }} | {{ pokemon.baseStats.stats.spd }} | {{ pokemon.baseStats.stats.speatk }} | {{ pokemon.baseStats.stats.spedef }} |
### Évolutions
<table>
<thead>
<tr>
<th>Évolue en</th>
<th>via</th>
</tr>
</thead>
<tbody>
{%- for evolution in pokemon.evoMoves.evolutionItems -%}
<tr>
<td><a href="/pokedex/g1/{{ evolution.pokemon | replace("", "F") | replace("", "M") | slugify }}">{{ evolution.pokemon }} </td>
<td>Avec un(e) {{ evolution.item }} </td>
</tr>
{%- endfor -%}
{%- for evolution in pokemon.evoMoves.evolutionLevel -%}
<tr>
<td><a href="/pokedex/g1/{{ evolution.pokemon | replace("", "F") | replace("", "M") | slugify }}">{{ evolution.pokemon }} </td>
<td> Au niveau {{ evolution.level }} </td>
</tr>
{%- endfor -%}
{%- for evolution in pokemon.evoMoves.evolutionTrade -%}
<tr>
<td><a href="/pokedex/g1/{{ evolution.pokemon | replace("", "F") | replace("", "M") | slugify }}">{{ evolution.pokemon }} </td>
<td> Par échange {% if evolution.item !== "-1" -%} ( Avec un(e) {{ evolution.item }} ) {%- endif -%} </td>
</tr>
{%- endfor -%}
{%- for evolution in pokemon.evoMoves.evolutionHappiness -%}
<tr>
<td><a href="/pokedex/g1/{{ evolution.pokemon | replace("", "F") | replace("", "M") | slugify }}">{{ evolution.pokemon }} </td>
<td> Par bohneur ( {{ evolution.time }} ) </td>
</tr>
{%- endfor -%}
{%- for evolution in pokemon.evoMoves.evolutionStat -%}
<tr>
<td><a href="/pokedex/g1/{{ evolution.pokemon | replace("", "F") | replace("", "M") | slugify }}">{{ evolution.pokemon }} </td>
<td> Au niveau {{ evolution.niveau }} ( {{ evolution.stat }} ) </td>
</tr>
{%- endfor -%}
{%- if (pokemon.evoMoves.nbrEvolution <= 0 ) -%}
<tr>
<td colspan="2"> <em>Stade Final</em> </td>
</tr>
{%- endif -%}
</tbody>
</table>
## Emplacements
<table class="pokedex">
<thead>
<tr>
<th></th>
<th>Emplacement</th>
</tr>
</thead>
<tbody>
<tr>
<th>Or </th>
<td>
{%- for encounterList in pokemon.encounters.gold -%}
{% if encounterList.prefix !== "" %}<strong>{{ encounterList.prefix }}</strong> : {% endif -%} {{ encounterList.list | join(" ; ") }}<br />
{%- endfor -%}
</td>
</tr>
<tr>
<th>Argent </th>
<td>
{%- for encounterList in pokemon.encounters.silver -%}
{% if encounterList.prefix !== "" %}<strong>{{ encounterList.prefix }}</strong> : {% endif -%} {{ encounterList.list | join(" ; ") }}<br />
{%- endfor -%}
</td>
</tr>
<tr>
<th>Cristal </th>
<td>
{%- for encounterList in pokemon.encounters.crystal -%}
{% if encounterList.prefix !== "" %}<strong>{{ encounterList.prefix }}</strong> : {% endif -%} {{ encounterList.list | join(" ; ") }}<br />
{%- endfor -%}
</td>
</tr>
</tbody>
</table>
## Attaques
<div class="grid" style="display:flex;">
<div>
<table>
<thead>
<tr>
<th>Niv</th>
<th>Attaque</th>
</tr>
</thead>
<tbody>
{%- for move in pokemon.evoMoves.moves -%}
<tr>
<td> {{ move.level }} </td>
<td>{{ move.move }} </td>
</tr>
{%- endfor -%}
{%- if pokemon.evoMoves.nbrMoves == 0 -%}
<tr>
<td colspan="2"> <em>Aucune attaque apprise par niveau</em> </td>
</tr>
{%- endif -%}
</tbody>
</table>
{%- if pokemon.eggMoves.nbrMoves != 0 -%}
<table>
<thead>
<tr>
<th>Par reproduction</th>
</tr>
</thead>
<tbody>
{%- for move in pokemon.eggMoves.moves -%}
<tr>
<td>{{ move }} </td>
</tr>
{%- endfor -%}
</tbody>
</table>
{%- endif %}
*(Note : certaines attaques peuvent se retrouver en double dans les tableaux.)*
</div>
<div>
<table>
<thead>
<tr>
<th>Par CT / CS</th>
</tr>
</thead>
<tbody>
{%- for move in pokemon.baseStats.tmhm -%}
<tr>
<td>{{ move }} </td>
</tr>
{%- endfor -%}
{%- if pokemon.baseStats.nbrTmHm == 0 -%}
<tr>
<td> <em>Aucune attaque apprise par CT/CS</em> </td>
</tr>
{%- endif -%}
</tbody>
</table>
</div>
</div>

8
content/pokedex/index.md Normal file
View file

@ -0,0 +1,8 @@
# Pokédex
Missing Number offre un certain nombre de Pokédex, tiré des données des désassemblages des jeux pokémon 8bits. Ces pokédex contiennent une site de tout les pokémon, et pour chaque pokémone une page unique permettant d'accéder aux informations sur eux.
## Les pokédex
- Pokédex G1
- Pokédes G2

View file

@ -0,0 +1,57 @@
---
layout: layouts/base.njk
eleventyNavigation:
key: Rumeurs diverses
parent: Rumeurs
order: 4
---
# Rumeurs diverses
Des tas de rumeurs moins "grandes" existaient, proposant des moyens d'avoir Mew, ou toutes autres manières détournées d'obtenir des trucs utiles au jeu, ou très puissants.
S'il est facile avec le recul de penser que certaines rumeurs étaient "ridicules", il faut se rappeller que beaucoup étaient cru par des enfants ou de jeunes adolescents, et surtout que les manières "légitimes" d'obtenir certains trucs, via des bugs, sont parfois tout aussi absurdes (tel que le bug du croupier, ou le bug des pierres élémentaires).
## Pokémon Vert
Pokémon Vert avait de nombreuses rumeurs, étant souvent supposé comme "la version unique au japon", une sorte de version supplémentaire/originelle qui aurait eut des choses supplémentaires qu'on n'avait pas eut en occident.
L'une des plus connue était que Mew y était accessible simplement en finissant le Pokédex : si on réussissait à y avoir tout les pokémon, le gérant de Game Freak à Celadopole nous offrait en plus du diplome une pokéball contenant Mew. Le manque de connaissance sur les versions japonaise de Pokémon a permis à celle-ci de persister plus longtemps que bien d'autre rumeur, semblant bien plus "plausible".
## Mew et le camion
Une des rumeurs les plus persistentes consistait à penser que si on réussissait à ne pas faire partir l'Océnae, le bateau que l'on peut trouver à Carmin-Sur-Mer et qu'on rejoint le *camion* qui se trouve sur les bords de la zone accessible à cet endroit, alors on poura utiliser Force sur le camion pour le déplacer et obtenir un Mew.
<div style="text-align:center;">
![Le camion sous lequelle les gens pensaient que mew se trouvait](/img/other/truck.png)
</div>
La rumeur est lié en grande partie à l'aspect unique et "mystérieux" de ce camion : en effet, il n'y en a aucun autre dans tout le jeu, ce qui confère une aura particulier au véhicule. Les rumeurs ont donc commencé à naitre sur l'idée qu'il y aurait quelque chose d'incroyable dedans. De plus, l'aspect difficile d'accès de l'endroit donnait l'espoir d'y trouver quelque chose.
Cependant, des objets seront bien trouvable dans le camion dans les générations suivantes :
- Un Cookie Magma dans Rouge Feu / Vert Feuille
- Un Rappel y spawn tout les jours dans Pokemon Let's Go
## Retour de l'Océane
Une autre rumeur autour de l'Océane était qu'il pourrait potentiellement revenir (ce qui n'est cependant pas possible dans le jeu). La théorie était que si un joueur entrait 365 fois dans le Hall of Fame, le bateau reviendrait avec des opposant plus puissant à bord.
Cette théorie venait du fait que le bateau était supposé revenir tout les ans à Carmin-Sur-Mer.
## Trempette
Une croyance persistente était que l'attaque trempette pouvait, de très rare fois, faire des dégats. Cette rumeurs se base sur la croyance qu'une attaque "ne servant à rien" n'était pas possible, et que beaucoup de gens pensaient qu'il devait y avoir une sorte de surprise, un truc en plus.
Mais non, c'est vraiemnt une attaque qui sert à rien.
## B+Bas
C'est peut-être la rumeurs d'école qui était la plus connue et tenté. L'idée derrière cette rumeur était que si on appuyait sur B+Bas, toute pokéball avait le pouvoir d'une Hyper Ball et devenait surpuissante (chez moi, on avait plus tendance à poser la gameboy et s'eloigner, ou rester le plus silencieux possible).
Dans les faits, cependant, il n'en était rien, et appuyer sur B+Bas n'avait pas d'effet positifs à la capture, ni d'effet négatif. Cette rumeur a été notamment pas mal amplifié par les biais cognitif : quand ça marchait, on se disait que c'était grâce à l'astuce qu'on avait fait.
Cela dit, cette croyance est au final pas forcément plus absurde que l'était tout le système de capture de Pokémon Rouge et Bleu.

View file

@ -0,0 +1,68 @@
---
layout: layouts/base.njk
eleventyNavigation:
key: Les fusions
parent: Rumeurs
order: 2
---
# Les fusions de pokémon
Les fusions de pokémon était un type très commun de rumeurs de pokémons "autres" capturables. Ces rumeurs racontaient qu'il était possible avec certains codes de faire fusionner des pokémons, permettant d'obtenir en résultat des pokémons plus puissants.
Ces rumeurs contenaient parfois beaucoup de pokémon, et utilisaient souvent des amalgame des noms pour donner le noms du résultat. De nombreux de ces pokémons avaient des noms du coup trop long pour la limite de caractères de la première génération, ce qui n'empechait pas la dispersion de ces rumeurs, mais cela provient en grande partie des leur grande inspiration : celles de l'anime/du manga.
Il est amusant de noter que la fusion de pokémon arrivera spécifiquement pour le trio légendaires de la cinquième génération, puisque Kyurem aura la capacité dans Blanc 2 et Noir 2 de fusionner avec Reshiram et Zekrom.
## Un concept existant
A noter que le concept de fusion n'est pas un concept complètement inventé dans Pokémon. Si leur présence dans Digimon a sans doute influencé cela, plusieurs pokémons sont plus ou moins décrit comme étant des fusions dans l'anime ou même dans des descriptions des jeux :
- **Flagadoss** est souvent décrit comme la fusion d'un Ramolos et d'un Kokyas
- **Magneton** est souvent décrit comme la fusion de trois Magnéti
- **Triopikeur** est souvent décrit comme la fusion de trois Taupiqueur
- **Smogogo** est souvent décrit comme la fusion de deux Smogo
Donc, l'idée même que des pokémons puissent fusionner (même si ce n'était pas de la manière décrite par les "codes", ni quelque chose qui arrivait en gameplay) existait déjà dans l'univers collectif.
## Dans les autres média
Outre les "fusions" présente dans les jeux, l'anime et le manga Pokémon contiendront chacun une fusion qui influencera beaucoup ce que seront dans l'esprit de ces rumeurs les fusions : deux pokémon mélangeant des aspects de leur apparence, et les noms "amalgame"
- **Venustoise** est la version présente dans l'anime (mais qui n'est qu'une illusion), une fusion entre un florizarre et un tortank
- **Zapmolcuno** est la version présente dans le manga, une fusion des trois oiseaux légendaires
Ces fusions seront à la source de la plupars des rumeurs de fusions qui existeront.
## Petite liste de fusion
Voici une petite liste de fusion, reprise du site [RageCandyBar](https://www.angelfire.com/pokemon2/animerpg/merged_pokegods.html). Ici, je vais surtout mettre une liste plutôt que de mettre pour chacun l'exemple utilisée pour comment les obtenir. En effet, les codes pouvaient régulièrement varier suivant les sites et qui écrivaient, pouvant venir du gameshark ou de codes plus complexes.
- **Articzapmewtres** contient les trois oiseaux légendaires et mew
- **Charmewsquirasuar** contient les trois starters et mew
- **Chartres** contient dracaufeu et sulfura
- **Charticuno** contient Artikoda et Salamèche
- **Pikamew** contient Pikachu et Mew
- **Pikish** contient Pikachu et Mystherbe
- **Ratichu** contient Ratatac et Raichu
- **Supercharstoise** contient Dracaufeu et Tortank
- **Stonebro** contient… *soupir* : Ramolos, Papilusion, Dardargnan, Artikodin, Lipoutou and Grolem
Ces rumeurs se recoupent parfois aussi avec celle habituelle des PokéGods, ou d'autres éléments du jeu :
- **Chrono Mew** ou **Mewthree** ont été parfois décrit comme des fusions de Mewtwo et Mew
- **Nidogod** a déjà été décrit comme des fusions de Nidoking et Nidoqueen (et parfois avec un Ramollos)
- Les **spectres** de Lavanville ont été décrit comme une fusion des trois membres de la lignée de fantominus
Et avec cela, on peut voir qu'en fait, sans doute presque toute combinaison de pokémon à eu sa fusion, et sa méthode souvent un peu aléatoire pour l'obtenir. C'est une des choses que l'on peut retrouver avec toute cette époque, cette effervescence de trouver des "secrets", souvent couplé à une envie que son site ai plus de visite que les autres sites de fans.
## Les méthodes
Les méthodes souvent recoupaient un certains nombre de paramètres, qui souvent se fusionnaient :
- Mettre un pokémon dans une certaine place, ou les pokémon dans un certain ordre dans l'équipe
- Avoir les pokémon niveau 100
- Faire un certain nombre de fois la ligue
- Avoir certaines attaques sur l'un des pokémons ou tous
- Aller à un endroit particulier et faire une action spécifique
- Avoir une Mist Stone
- Parler à Mr. Psy

12
content/rumeurs/index.md Normal file
View file

@ -0,0 +1,12 @@
---
layout: layouts/base.njk
eleventyNavigation:
key: Rumeurs
order: 11
---
# Les rumeurs pokémon
La série pokémon à eut beaucoup de rumeurs au fil des années, et les premières générations étaient en particulier pleines d'histoire et de rumeurs sur ce que pouvait contenir les jeux. La plupars de ces rumeurs ont été debunk, et le but est d'un peu les découvrir ici.
## Liste des pages

47
content/rumeurs/lieux.md Normal file
View file

@ -0,0 +1,47 @@
---
layout: layouts/base.njk
eleventyNavigation:
key: Lieux spéciaux
parent: Rumeurs
order: 4
---
# Lieux spéciaux
Divers lieux spéciaux étaient théorisés dans Pokémon Rouge et Bleu, et était réputés comme étant accessibles et pouvant offrir accès à des pokémon incroyables.
## La Pokémon Factory
La Pokémon Factory (ou Pokégods Factory) est le nom que je donne à un type de rumeur particulière : il existe un lieu unique, une toute nouvelle ville/donjon ou l'on peut affronter des dresseurs extrèmement puissant et capturer les pokédieux et/ou des pokémons extrêmement rares et/ou puissants.
L'idée de ce lieu est souvent qu'il était un lieu "post-ligue", qu'on atteignait après avoir affronté un certain nombre de fois la ligue et/ou atteints des objectifs ou obtenus des objets secrets. La copypasta originelle est la suivante :
> Il existe un truc nommés les Pokégods. Pour les obtenir, vous devez vaincre l'Elite 4 trente fois sans parler à qui que ce soit entre l'infirmière du Centre Pokémon du Plateau Indigo ou quoi que ce soit, et le riv (note : ici ça signifie rival, c'est une typo présente dans la version originelle). La trentième fois, le Professeur Chen dira "Ça commence à me fatiguer" et te laissera marcher dans le Hall of Fame qui amène à une nouvelle ville ou les gens échangent des Pokégods.
Cette rumeurs existent en des tonnes de variations, parfois il faut obtenir des CS secretes, parfois il faut réussir à faire revenir l'Océane, etc. Ce lieu a eu de nombreux noms : Cloud City, Brick Town, la Pokégod City/Island… Parfois, on y trouvait aussi du coup des dresseurs d'exceptions, unique, des sortes de "boss secrets".
## Le Jardin de Léo
Le jardin de léo était une rumeur assez répandu dans la communauté Pokémon, qui disait qu'avec certains objectifs de rempli, il était possible de pouvoir accéder à un lieu secret nommé le "Jardin de Léo". D'une manière, cette rumeur fait partie de la même catégorie de rumeurs que la Pokemon Factory, mais souvent était un peu plus large, étant un lieu ou il était dit qu'on pouvait y trouver tout les pokémon possible, notamment les plus rares (et souvent Mew, des évolitions inconnues et/ou des pokégods). Les manières d'y accéder etait souvent diverses :
- Amener toute les évolitions avant l'incident de téléportation de Bill
- Avoir un pokédex presque complet
- Amener divers pokémon extrèmement rares
- Avoir vaincu pleins de fois la ligue
- Entrer dans le téléporteur
Elles se basaient sur deux aspects :
- Le côté légendaire de Bill, le "plus grand pokémaniac", inventeur du système de stockage de pokémon par PC
- La présence de tuiles d'herbe derrière la maison de Bill, à travers la montagne, ce qui donnait l'impression que c'était un endroit auquel on pouvait accéder d'une manière ou d'une autre.
D'autres que j'avais lue étaient a base de "capturer Bill quand il est transformé en Pokémon", mais ça c'était sans doute plus notre cruauté habituelle en tant qu'enfant, ahah.
## Bourg Palette
Les herbes autour du Bourg Palettes étaient souvent crue comme étant accessible d'une manière où d'une autre, avec souvent l'idée que c'était ici que le Professeur Chen y garde des pokémon extrêmement rares. Cependant, ce ne sont que des tuiles "visuelles", et on n'y trouve aucun pokémon (on risque juste de faire crash le jeu).
Cette rumeur est très similaire à la précédente.
## Sources et crédits
- https://www.angelfire.com/pokemon2/animerpg/rumors.html

181
content/rumeurs/pokegods.md Normal file
View file

@ -0,0 +1,181 @@
---
layout: layouts/base.njk
eleventyNavigation:
key: Les pokédieux
parent: Rumeurs
order: 1
---
# Les pokédieux
Les pokédieux (*pokégods* en anglais) étaient une rumeur persistante qu'il y aurait plus de pokémon que le pokedex le laisserait entendre. Cette légende provient fortement de Mew, qui était déjà un pokémon mythique légendaire en plus des 150 existant déjà, ainsi que des premières images des pokémons de la deuxième génération, qui étaient déjà en développement lors de l'arrivée de la première génération en occident, et étant apparus dans l'anime parfois très tôt (Ho-Oh et Togepi notamment).
La plupars des pokédieux étaient (logiquement à leur noms) souvent considéré comme quasiment invincible, et étaient des pokémons vu comme "caché" et "bonus". De nombreux codes et "triches" étaient présent dans des sites sur comment les obtenirs, souvent avec des méthodes d'obtentions proche de l'impossibilité, demandant souvent des heures de temps de jeu (vaincre la ligue des centaines de fois avec certains pokémon, etc). Sans doute que le but était aussi de faire en sorte que si le code loupait, on disait que la personne l'avait mal fait.
## Évolution de pokémons
Le plus présent dans les types de pokémon étaient des évolutions encore plus puissante que celles finale, souvent à l'aide d'un objet mystérieux, la **Mist Stone**, et elles ont d'une certaine manière eut une forme d'existence sous la forme des *Méga Évolution* les 6e et 7e générations. Cependant, les Pokédieux étaient supposé être des évoutions permanente, là ou les méga étant juste temporaire.
### Evolutions des starters
**Sapasaur**, **Charcolt** et **Rainer** sont sans doute les plus grande démonstration des cas d'évolution de starts post-finale, puisqu'ils sont celles des trois starters : Florizarre, Dracaufau et Tortank. Ils étaient supposé être encore plus puissant que les évolutions finale, et possible d'avoir qu'avec des techniques secretes. Leur descriptions en faisaient souvent des pokémon aux conséquences cataclysmiques.
<div style="text-align:center;">
[![Un fan-sprite de Sapusaur, un Florizarre avec un air dangereux](/img/pokegods/sapusaur.png)](https://www.deviantart.com/chanchimi/art/Sapusaur-Pokegod-171174672)
[![Un fan-sprite de Charcolt, un Dracaufeu avec un air dangereux](/img/pokegods/charcolt.png)](https://www.deviantart.com/chanchimi/art/Charcolt-Pokegod-171123299)
[![Un fan-sprite de Rainer, un Tortank avec un air dangereux](/img/pokegods/rainer.png)](https://www.deviantart.com/chanchimi/art/Rainer-Pokegod-167831493)
*Vue d'artiste des Pokédieux des starters, par [Chanchimi](https://www.deviantart.com/chanchimi/)*
</div>
Ces starters auront tous des méga évolution dès la 6e génération, Dracaufeu fera même parti des rares pokémon ayant le droit à *deux* méga-évolution. Ces méga (comme tout les méga) rappelle beaucoup l'idée des Pokédieux, étant souvent parmis les créatures les plus puissantes de l'univers de Pokémon, ce qui participera beaucoup à nous les rappeller, en amplifiant les traits et la puissance des starters.
<div style="text-align:center;">
![Un mega-florizarre, un Florizarre avec la plante largement augmentée](/img/mega/megaflorizarre.png) ![Un mega-dracaufeu x, un Dracaufeu noir avec une immense flamme bleu](/img/mega/megadracaufeu1.png) ![Un mega-dracaufeu y, un Dracaufeu avec un air plus svelte et rapide](/img/mega/megadracaufeu2.png) ![Un mega-tortank, un Tortank avec des canons beaucoup plus présent](/img/mega/megatortank.png)
</div>
Ces mega ont tous un ajout de 100 points de statistiques en tout, passant de ~530 à ~630. Certains des starters ont quelques pokémons glitchés de la même espèce d'eux, ce qui participait aussi à leur donner
### Evolutions autres
De nombreux autres évolutions ont été cru avec d'autres pokémon de la première génération, avec différents méthode pour les avoirs. Souvent, des noms de fans étaient donnés pour ajouter un aspects plus "puissant" aux pokémons originels.
<div style="text-align:center;">
[![A sprite of Nidogod, an "dangerous-looking" Nidoking](/img/pokegods/nidogod.png)](https://www.deviantart.com/chanchimi/art/Nidogod-Pokegod-191047470)
[![A sprite of Nidogodess, an "dangerous-looking" Nidoqueen](/img/pokegods/nidogodess.png)](https://www.deviantart.com/chanchimi/art/Nidogodess-Pokegod-171224375)
[![A sprite of Flareth, an "dangerous-looking" Flareon](/img/pokegods/flareth.png)](https://www.deviantart.com/chanchimi/art/Flareth-Pokegod-171468888)
[![A sprite of Dreamaster, an "dangerous-looking" Hypno](/img/pokegods/dreamaster.png)](https://www.deviantart.com/chanchimi/art/Dreamaster-Pokegod-171347123)
[![A sprite of Spooky, an "dangerous-looking" Gengar](/img/pokegods/spooky.png)](https://www.deviantart.com/chanchimi/art/Spooky-Pokegod-305148215)
*Vue d'artiste de Pokédieux, par [Chanchimi](https://www.deviantart.com/chanchimi/)*
</div>
Les pokedieux étaient assez nombreux, et voici une petite listes de ceux basées sur des évolutions de pokémon "normaux" :
- **Nidogod**, évolution de Nidoking
- **Nidogoddess**, évolution de Nidoqueen
- **Locustod**, évolution de Papillusion
- **Beepin**, évolution de Dardargnan
- **Raticlaw**, évolution de Ratatac
- **Flareth**, évolution de Flareon
- **Sandswipes**, évolution de Sablairau
- **Spooky**, évolution d'Ectoplasma
- **Pearduck**, évolution de Akwakwak
- **Dreamaster**, évolution d'Hypnomade
- **Diamonix**, évolution de Onix
- **Omnamist**, évolution de Amonistar
Certains de ces pokémons auront des évolutions dans les générations suivantes (tel que Stelix), mais d'autres auront le droit à des méga-évolutions dans les générations 6 et 7 :
<div style="text-align:center;">
![Mega-dardargnan, un dardargnan véner](/img/mega/megadardargnan.png) ![Mega-ectoplasma, un ectoplasma véner](/img/mega/megaectoplasma.png)
</div>
A noter que la liste de ces pokémon (et leur noms) étaient très variable suivant les sites, les erreurs d'orthographes faites par les utilisateurs, etc. De plus, il est intéressant de noter que certains pokémons de la première génération *avaient des évolutions de prévus*.
### Evolutions de légendaires
Mew et Mewtwo avaient le droit à des pokédieu aussi, avec le *Chroma Mew* (aussi écrit Chrono, Crona ou Corona suivant les personnes) et le célèbre Mewthree. Mewthree était très souvent représenté par le Mewtwo en armure qui apparaissait dans le premier film, Mew contre Mewtwo. Cette variante de Mewtwo apparaitra dans Pokémon Go ainsi que dans les cartes pokémon pour célébrer la sortie du remake du premier film.
<div style="text-align:center;">
![Mewtwo en armure, tel que montré dans le premier film](/img/other/mewtwoarmure.png)
</div>
Si Mew n'aura pas de méga, Mewtwo aura le droit à deux méga-évolutions, Mewtwo-X et Mewtwo-Y.
<div style="text-align:center;">
![Mega-mewtwo X, un Mewtwo plus "musclé"](/img/mega/megamewtwox.png) ![Mega-mewtwo Y, un Mewtwo plus svelte, plus aérodynamique](/img/mega/megamewtwoy.png)
</div>
## Générations suivantes
Un second type de Pokégods *très* courant était ceux des générations suivant apparu dans des magazines, des saisons de l'anime ou dans le premier film : Mewtwo contre Mew. Les deux premiers apparaissant très tôt étant Ho-oh et Togépi, apparaissant dès le début de l'anime, et étant certainement des pokémon abandonné de la première génération, réutilisé dans la deuxième.
<div style="text-align:center;">
![Ho-oh en sprite](/img/betagold/247.png) ![Togepi en sprite](/img/betagold/248.png)
</div>
Ensuite, petit à petit d'autres pokémons seront découvert venant des autres média, faisant au total la liste suivante :
- **Ho-oh**, apparu dès le première épisode de pokémon
- **Togepi**, apparu assez tôt dans l'anime
- "**Pikablu**" (Marill), cru comme une évolution eau de Raichu
- "**Pikaflare**" (ou **Flarachu**) cru comme une évolution feu de Raichu.
- **Donphan**
- **Roigada**
- **Pharamp**
- **Lunareon**/**Solareon** étant en fait Noctali et Mentali
- **Snubbull** apparaissant dans le premier film
- **Donphan** apparaissant dans le premier film
<div style="text-align:center;">
![Ho-oh en sprite](/img/betagold/pokemonorargent.png)
</div>
A noter qu'à part *Flarachu* (qui était en fait Honooguma, starter feu de la seconde génération), tout ces pokémons seront donc vraiment découvert à la seconde génération, ce qui commencera à baisser les rumeurs.
<div style="text-align:center;">
![Quelques version originelle de pokémon, avec un donphan (un éléphant avec aspect un peu armure de pierre), un Pharamp (une sorte de mouton bipede sans laine éléctrique), un roigada (un ramollos avec un cocquillage sur la tête), Ho-oh (un oiseau arc-en-ciel)](/img/betagold/155.png)
</div>
## L'onix de cristal
L'onix de cristal est un onix qui apparaissait dans l'anime, dans la saison des îles oranges. Cet Onix avait la particularité d'être entièrement fait de cristal, ce qui faisait qu'il avait un type différent (qui a souvent été décrit comme proche du type glace) puisqu'il était particulièrement sensible aux attaques feu.
## Pokégods inventés
En plus de cela, de nombreux pokédieux seront tout simplement inventés (liste provenant de l'article de bulbapedia sur les Pokégods) :
- Millenium
- Anthrax
- Mysterio
- Apocalypse
- Ruin
- Psybir
- Psybird (son évolution)
- Doomsay
- Doomsday
- Tricket
- Hifishi
- Pokémaniac
- Tyranticus
- Primator
- Wizwar
- Le dragon non-identifié
<div style="text-align:center;">
![Doomsday un sprite retro… difficile à décrire. C'est insectoïde et ça part dans tout les sens.](/img/pokegods/doomsday.png)
*Un fan-sprite de doomsday, circulant depuis cette époque*
</div>
Il est à noter que cette liste contient beaucoup de noms visant à faire "sombre", ou "puissant". Millenium, Anthrax, Apocalypse, Doomsday… sont des bons examples de noms faisant référence à des trucs dangereux, puissant (ou "cool" pour Millenium). Cela fait partie de cette recherche de trouver le truc "cool", le truc qui attirerait l'attention. Pour le pokémon "Pokémaniac", on peut se dire qu'il peut avoir une origine venant du jeu : il existe en effet un type "pokémaniac" glitché dans le jeu, et sa présence parmis les pokédieux peut provenir de cela.
On peut également remarquer que pour les pokémon décrit comme les évolutions les uns des autres, il s'agit sans doute du même "pokédieu" de rumeur qui a été mal écrit à un endroit, et qu'ensuite d'autres fans ont considéré comme étant l'évolution l'un de l'autre en "fusionnant" les deux noms qui avaient divergé.
## Sources et crédits
- [Chanchimi](https://www.deviantart.com/chanchimi/) - Sprites de PokéDieux utilisés
- [Page bulbapedia sur les PokéGods](https://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9Gods)
- [Page RageCandyBar sur les PokéGods](https://www.angelfire.com/pokemon2/animerpg/pokegodsindex.html)

View file

@ -0,0 +1,14 @@
---
permalink: /sitemap.xml
eleventyExcludeFromCollections: true
---
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
{%- for page in collections.all %}
{% set absoluteUrl %}{{ page.url | htmlBaseUrl(metadata.url) }}{% endset %}
<url>
<loc>{{ absoluteUrl }}</loc>
<lastmod>{{ page.date | htmlDateString }}</lastmod>
</url>
{%- endfor %}
</urlset>

50
eleventy.config.drafts.js Normal file
View file

@ -0,0 +1,50 @@
function eleventyComputedPermalink() {
// When using `addGlobalData` and you *want* to return a function, you must nest functions like this.
// `addGlobalData` acts like a global data file and runs the top level function it receives.
return (data) => {
// Always skip during non-watch/serve builds
if(data.draft && !process.env.BUILD_DRAFTS) {
return false;
}
return data.permalink;
}
};
function eleventyComputedExcludeFromCollections() {
// When using `addGlobalData` and you *want* to return a function, you must nest functions like this.
// `addGlobalData` acts like a global data file and runs the top level function it receives.
return (data) => {
// Always exclude from non-watch/serve builds
if(data.draft && !process.env.BUILD_DRAFTS) {
return true;
}
return data.eleventyExcludeFromCollections;
}
};
module.exports.eleventyComputedPermalink = eleventyComputedPermalink;
module.exports.eleventyComputedExcludeFromCollections = eleventyComputedExcludeFromCollections;
module.exports = eleventyConfig => {
eleventyConfig.addGlobalData("eleventyComputed.permalink", eleventyComputedPermalink);
eleventyConfig.addGlobalData("eleventyComputed.eleventyExcludeFromCollections", eleventyComputedExcludeFromCollections);
let logged = false;
eleventyConfig.on("eleventy.before", ({runMode}) => {
let text = "Excluding";
// Only show drafts in serve/watch modes
if(runMode === "serve" || runMode === "watch") {
process.env.BUILD_DRAFTS = true;
text = "Including";
}
// Only log once.
if(!logged) {
console.log( `[11ty/eleventy-base-blog] ${text} drafts.` );
}
logged = true;
});
}

34
eleventy.config.images.js Normal file
View file

@ -0,0 +1,34 @@
const path = require("path");
const eleventyImage = require("@11ty/eleventy-img");
module.exports = eleventyConfig => {
function relativeToInputPath(inputPath, relativeFilePath) {
let split = inputPath.split("/");
split.pop();
return path.resolve(split.join(path.sep), relativeFilePath);
}
// Eleventy Image shortcode
// https://www.11ty.dev/docs/plugins/image/
eleventyConfig.addAsyncShortcode("image", async function imageShortcode(src, alt, widths, sizes) {
// Full list of formats here: https://www.11ty.dev/docs/plugins/image/#output-formats
// Warning: Avif can be resource-intensive so take care!
let formats = ["avif", "webp", "auto"];
let file = relativeToInputPath(this.page.inputPath, src);
let metadata = await eleventyImage(file, {
widths: widths || ["auto"],
formats,
outputDir: path.join(eleventyConfig.dir.output, "img"), // Advanced usage note: `eleventyConfig.dir` works here because were using addPlugin.
});
// TODO loading=eager and fetchpriority=high
let imageAttributes = {
alt,
sizes,
loading: "lazy",
decoding: "async",
};
return eleventyImage.generateHTML(metadata, imageAttributes);
});
};

144
eleventy.config.js Normal file
View file

@ -0,0 +1,144 @@
const { DateTime } = require("luxon");
const markdownItAnchor = require("markdown-it-anchor");
const pluginRss = require("@11ty/eleventy-plugin-rss");
const pluginSyntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight");
const pluginBundle = require("@11ty/eleventy-plugin-bundle");
const pluginNavigation = require("@11ty/eleventy-navigation");
const { EleventyHtmlBasePlugin } = require("@11ty/eleventy");
const pluginDrafts = require("./eleventy.config.drafts.js");
const pluginImages = require("./eleventy.config.images.js");
const pluginTOC = require('eleventy-plugin-toc');
module.exports = function(eleventyConfig) {
// Copy the contents of the `public` folder to the output folder
// For example, `./public/css/` ends up in `_site/css/`
eleventyConfig.addPassthroughCopy({
"./public/": "/",
"./node_modules/prismjs/themes/prism-okaidia.css": "/css/prism-okaidia.css"
});
// Run Eleventy when these files change:
// https://www.11ty.dev/docs/watch-serve/#add-your-own-watch-targets
// Watch content images for the image pipeline.
eleventyConfig.addWatchTarget("content/**/*.{svg,webp,png,jpeg}");
// App plugins
eleventyConfig.addPlugin(pluginDrafts);
eleventyConfig.addPlugin(pluginImages);
// Official plugins
eleventyConfig.addPlugin(pluginRss);
eleventyConfig.addPlugin(pluginSyntaxHighlight, {
preAttributes: { tabindex: 0 }
});
eleventyConfig.addPlugin(pluginNavigation);
eleventyConfig.addPlugin(EleventyHtmlBasePlugin);
eleventyConfig.addPlugin(pluginBundle);
eleventyConfig.addPlugin(pluginTOC, {
tags: ['h2'],
wrapper: 'div'
});
// Filters
eleventyConfig.addFilter("readableDate", (dateObj, format, zone) => {
// Formatting tokens for Luxon: https://moment.github.io/luxon/#/formatting?id=table-of-tokens
return DateTime.fromJSDate(dateObj, { zone: zone || "utc" }).toFormat(format || "dd LLLL yyyy");
});
eleventyConfig.addFilter('htmlDateString', (dateObj) => {
// dateObj input: https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string
return DateTime.fromJSDate(dateObj, {zone: 'utc'}).toFormat('yyyy-LL-dd');
});
// Get the first `n` elements of a collection.
eleventyConfig.addFilter("head", (array, n) => {
if(!Array.isArray(array) || array.length === 0) {
return [];
}
if( n < 0 ) {
return array.slice(n);
}
return array.slice(0, n);
});
// Return the smallest number argument
eleventyConfig.addFilter("min", (...numbers) => {
return Math.min.apply(null, numbers);
});
// Return all the tags used in a collection
eleventyConfig.addFilter("getAllTags", collection => {
let tagSet = new Set();
for(let item of collection) {
(item.data.tags || []).forEach(tag => tagSet.add(tag));
}
return Array.from(tagSet);
});
eleventyConfig.addFilter("filterTagList", function filterTagList(tags) {
return (tags || []).filter(tag => ["all", "nav", "post", "posts"].indexOf(tag) === -1);
});
// Customize Markdown library settings:
eleventyConfig.amendLibrary("md", mdLib => {
mdLib.use(markdownItAnchor, {
permalink: markdownItAnchor.permalink.ariaHidden({
placement: "after",
class: "header-anchor",
symbol: "#",
ariaHidden: false,
}),
level: [1,2,3,4],
slugify: eleventyConfig.getFilter("slugify")
});
});
// Features to make your build faster (when you need them)
// If your passthrough copy gets heavy and cumbersome, add this line
// to emulate the file copy on the dev server. Learn more:
// https://www.11ty.dev/docs/copy/#emulate-passthrough-copy-during-serve
// eleventyConfig.setServerPassthroughCopyBehavior("passthrough");
return {
// Control which files Eleventy will process
// e.g.: *.md, *.njk, *.html, *.liquid
templateFormats: [
"md",
"njk",
"html",
"liquid",
],
// Pre-process *.md files with: (default: `liquid`)
markdownTemplateEngine: "njk",
// Pre-process *.html files with: (default: `liquid`)
htmlTemplateEngine: "njk",
// These are all optional:
dir: {
input: "content", // default: "."
includes: "../_includes", // default: "_includes"
data: "../_data", // default: "_data"
output: "_site"
},
// -----------------------------------------------------------------
// Optional items:
// -----------------------------------------------------------------
// If your site deploys to a subdirectory, change `pathPrefix`.
// Read more: https://www.11ty.dev/docs/config/#deploy-to-a-subdirectory-with-a-path-prefix
// When paired with the HTML <base> plugin https://www.11ty.dev/docs/plugins/html-base/
// it will transform any absolute URLs in your HTML to include this
// folder name and does **not** affect where things go in the output folder.
pathPrefix: "/",
};
};

24
netlify.toml Normal file
View file

@ -0,0 +1,24 @@
[build]
publish = "_site"
command = "npm run build"
[[plugins]]
# Opt-in to the Netlify Lighthouse plugin (choose one):
# 1. Go to your site on https://app.netlify.com and navigate to the Integrations tab, search for the `Lighthouse` plugin
# 2. Or via `npm install -D @netlify/plugin-lighthouse`
# Read more: https://github.com/netlify/netlify-plugin-lighthouse
package = "@netlify/plugin-lighthouse"
# optional, fails build when a category is below a threshold
[plugins.inputs.thresholds]
performance = 1.0
accessibility = 1.0
best-practices = 1.0
seo = 1.0
[plugins.inputs]
output_path = "reports/lighthouse/index.html"

47
package.json Normal file
View file

@ -0,0 +1,47 @@
{
"name": "eleventy-base-blog",
"version": "8.0.0",
"description": "A starter repository for a blog web site using the Eleventy site generator.",
"scripts": {
"build": "npx @11ty/eleventy",
"build-ghpages": "npx @11ty/eleventy --pathprefix=/eleventy-base-blog/",
"start": "npx @11ty/eleventy --serve --quiet",
"debug": "DEBUG=Eleventy* npx @11ty/eleventy",
"debugstart": "DEBUG=Eleventy* npx @11ty/eleventy --serve --quiet",
"benchmark": "DEBUG=Eleventy:Benchmark* npx @11ty/eleventy"
},
"repository": {
"type": "git",
"url": "git://github.com/11ty/eleventy-base-blog.git"
},
"author": {
"name": "Zach Leatherman",
"email": "zachleatherman@gmail.com",
"url": "https://zachleat.com/"
},
"license": "MIT",
"engines": {
"node": ">=14"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/11ty"
},
"bugs": {
"url": "https://github.com/11ty/eleventy-base-blog/issues"
},
"homepage": "https://github.com/11ty/eleventy-base-blog#readme",
"devDependencies": {
"@11ty/eleventy": "^2.0.1",
"@11ty/eleventy-img": "^3.1.0",
"@11ty/eleventy-navigation": "^0.3.5",
"@11ty/eleventy-plugin-bundle": "^1.0.4",
"@11ty/eleventy-plugin-rss": "^1.2.0",
"@11ty/eleventy-plugin-syntaxhighlight": "^5.0.0",
"luxon": "^3.3.0",
"markdown-it-anchor": "^8.6.7"
},
"dependencies": {
"eleventy-plugin-toc": "^1.1.5"
}
}

223
public/css/datatables.css Normal file
View file

@ -0,0 +1,223 @@
.datatable-wrapper {
font-size:0.9rem;
}
.datatable-top,
.datatable-bottom {
padding: 8px 0px;
}
.datatable-top>nav:first-child,
.datatable-top>div:first-child,
.datatable-bottom>nav:first-child,
.datatable-bottom>div:first-child {
float: left;
}
.datatable-top>nav:last-child,
.datatable-top>div:last-child,
.datatable-bottom>nav:last-child,
.datatable-bottom>div:last-child {
float: right;
}
.datatable-selector {
padding: 5px;
border-radius: 5px;
border:1px solid rgba(0,0,0,0.1);
background-color: rgba(0,0,0,0.05);
color:var(--text-color)
}
.datatable-input {
padding: 5px 10px;
background-color:rgba(0,0,0, 0.05);
color: var(--text-color);
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius:5px;
}
.datatable-info {
margin: 7px 0;
}
/* PAGER */
.datatable-pagination ul {
margin: 0;
padding-left: 0;
}
.datatable-pagination li {
list-style: none;
float: left;
}
.datatable-pagination li.datatable-hidden {
visibility: hidden;
}
.datatable-pagination a {
border: 1px solid rgba(0, 0, 0, 0.2);
float: left;
margin-left: 2px;
padding: 5px 10px;
position: relative;
text-decoration: none;
cursor: pointer;
border-radius: 5px;
}
.datatable-pagination a:hover {
background-color: rgba(0,0,0, 0.1);
}
.datatable-pagination .datatable-active a,
.datatable-pagination .datatable-active a:focus,
.datatable-pagination .datatable-active a:hover {
background-color: var(--text-color-link);
border-color: var(--text-color-link);
color: white;
cursor: default;
}
.datatable-pagination .datatable-ellipsis a,
.datatable-pagination .datatable-disabled a,
.datatable-pagination .datatable-disabled a:focus,
.datatable-pagination .datatable-disabled a:hover {
pointer-events: none;
cursor: default;
}
.datatable-pagination .datatable-disabled a,
.datatable-pagination .datatable-disabled a:focus,
.datatable-pagination .datatable-disabled a:hover {
cursor: not-allowed;
opacity: 0.4;
}
.datatable-pagination .datatable-pagination a {
font-weight: bold;
}
/* TABLE */
.datatable-table {
max-width: 100%;
width: 100%;
border-spacing: 0;
border-collapse: separate;
}
.datatable-table>tbody>tr>td,
.datatable-table>tbody>tr>th,
.datatable-table>tfoot>tr>td,
.datatable-table>tfoot>tr>th,
.datatable-table>thead>tr>td,
.datatable-table>thead>tr>th {
vertical-align: top;
padding: 8px 10px;;
}
.datatable-table>thead>tr>th {
vertical-align: bottom;
text-align: left;
background-color: var(--text-color-link);
color: white;
border-bottom: 3px solid black;
}
.datatable-table>tfoot>tr>th {
vertical-align: bottom;
text-align: left;
}
.datatable-table th {
vertical-align: bottom;
text-align: left;
}
.datatable-table th a {
text-decoration: none;
color: inherit;
}
.datatable-sorter,
.datatable-filter {
display: inline-block;
height: 100%;
position: relative;
width: 100%;
}
.datatable-sorter::before,
.datatable-sorter::after {
content: "";
height: 0;
width: 0;
position: absolute;
right: -6px;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
opacity: 0.3;
}
.datatable-sorter::before {
border-top: 4px solid white;
bottom: 0px;
}
.datatable-sorter::after {
border-bottom: 4px solid white;
border-top: 4px solid transparent;
top: 0px;
}
.datatable-ascending .datatable-sorter::after,
.datatable-descending .datatable-sorter::before,
.datatable-ascending .datatable-filter::after,
.datatable-descending .datatable-filter::before {
opacity: 1;
}
a.datatable-sorter:hover {
color:var(--link-color-hover);
border:0;
background-color: transparent;
}
.datatable-filter::before {
content: "";
position: absolute;
right: 4px;
opacity: 0.2;
width: 0;
height: 0;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-radius: 50%;
border-top: 10px solid white;
top: 25%;
}
.datatable-filter-active .datatable-filter::before {
opacity: 0.6;
}
.datatable-empty {
text-align: center;
}
.datatable-top::after,
.datatable-bottom::after {
clear: both;
content: " ";
display: table;
}
table.datatable-table:focus tr.datatable-cursor>td:first-child {
border-left: 3px var(--text-color) solid;
}
table.datatable-table:focus {
outline: solid 1px black;
outline-offset: -1px;
}

292
public/css/index.css Normal file
View file

@ -0,0 +1,292 @@
@font-face {
font-family: "NiseSegaSonic";
src: local("NiseSegaSonic"),
url("/fonts/NiseSegaSonic.ttf") format("truetype");
}
:root {
--color-gray-20: #e0e0e0;
--color-gray-50: #C0C0C0;
--color-gray-90: #333;
/* --text-color is assigned to --color-gray-_ above */
--text-color-link: #c92a2a;
--text-color-link-active: #c92a2a;
--text-color-link-visited: #c92a2a;
--link-color-hover: #ffe8cc;
--background-color: #fff;
--background-menu: #001d6b;
--text-color: var(--color-gray-90);
--font-family: -apple-system, system-ui, sans-serif;
--font-family-monospace: Consolas, Menlo, Monaco, Andale Mono WT, Andale Mono, Lucida Console, Lucida Sans Typewriter, DejaVu Sans Mono, Bitstream Vera Sans Mono, Liberation Mono, Nimbus Mono L, Courier New, Courier, monospace;
--font-family-logo:"NiseSegaSonic", system-ui, sans-serif;
--font-family-title:vipnagorgialla, system-ui, sans-serif;
}
* {
box-sizing: border-box;
}
html,
body {
padding: 0;
margin: 0 auto;
min-height:100%;
font-family: var(--font-family);
color: var(--text-color);
width:1280px;
}
html {
overflow-y: scroll;
background: center top fixed url("/img/dark-b10.png"), center top fixed url("/img/erratu18.png");
background-repeat: repeat-y, repeat;
background-color:#63ce08;
}
/* https://www.a11yproject.com/posts/how-to-hide-content/ */
.visually-hidden {
clip: rect(0 0 0 0);
clip-path: inset(50%);
height: 1px;
overflow: hidden;
position: absolute;
white-space: nowrap;
width: 1px;
}
a[href] {
color: var(--text-color-link);
padding: 0.05rem;
border-radius: 0.1rem;
text-decoration: underline dashed 1px;
text-underline-offset: 0.1rem;
}
a[href]:visited {
color: var(--text-color-link-visited);
}
a[href]:hover,
a[href]:active {
color: var(--text-color-link-active);
background-color: var(--link-color-hover);
text-decoration: none;
}
blockquote {
opacity: 75%;
border-left: 3px solid currentColor;
padding-left: 12px;
}
img {
max-width: 100%;
}
summary {
font-style: italic;
border-radius:3px;
padding:0px 6px;
}
summary:hover {
background-color: rgba(0,0,0,0.2);
}
/* Direct Links / Markdown Headers */
.header-anchor {
text-decoration: none;
font-style: normal;
font-size: 1em;
margin-left: .1em;
}
a[href].header-anchor,
a[href].header-anchor:visited {
color: transparent;
}
a[href].header-anchor:focus,
a[href].header-anchor:hover {
text-decoration: underline;
}
a[href].header-anchor:focus,
:hover > a[href].header-anchor {
color: #aaa;
}
.wrapper {
display:flex;
}
header {
background:center center url("/img/back2.png");
background-size: 110%;
height:240px;
box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.8);
margin:12px 12px 3px;
display:flex;
align-items: center;
justify-content: center;
border: 16px solid transparent;
border-image: url('/img/bgcard.png') 16 round;
border-image-outset: 4px;
}
header h1 {
text-align: center;
}
header h1 a {
font-size:5rem;
text-shadow:-2px -2px 0 #000,
0 -2px 0 #000,
2px -2px 0 #000,
2px 0 0 #000,
2px 2px 0 #000,
0 2px 0 #000,
-2px 2px 0 #000,
-2px 0 0 #000,
.05em .1em 0 #000;
color:white!important;
text-decoration: none;
text-transform: uppercase;
display: block;
font-family: var(--font-family-logo);
line-height: 1;
margin: 0;
padding: 0;
}
main,
.card,
#sidebar ul > li {
padding:0px;
margin:12px;
background-color: var(--background-color);
border: 16px solid transparent;
border-image: url('/img/bgcard.png') 16 round;
border-image-outset: 4px;
line-height:1.5rem;
flex-grow:1;
}
table {
width: 100%;
border-collapse: collapse;
}
.pokepage .grid :first-child {
margin-right: 4px;
}
.pokepage .grid :last-child {
margin-left: 4px;
}
table td,
table th {
text-align: center;
border: 1px solid rgba(0, 0, 0, 0.2);
height: 1.5rem;
}
table thead th {
background-color: var(--text-color-link);
color: white;
border-bottom: 2px solid black;
height: 1.5rem;
}
table:not(.pokedex) {
table-layout: fixed;
}
.pokedex table:not(.pokedex) {
table-layout: auto;
}
#sidebar ul > li {
list-style: none;
font-weight: bold;
}
#more-info ol > li,
#more-info ul > li {
list-style: none;
}
#sidebar ul > li li,
#more-info li {
border-radius:0px;
padding:0px;
margin:0px;
font-weight: normal;
border:0;
box-shadow: none;
}
ul.nav,
#sidebar ul li ul,
#more-info ol,
.maininfo ul {
padding:0;
margin:0;
list-style: none;
}
#sidebar ul li a,
#more-info ol li a,
#more-info .maininfo ul li {
display:block;
width:100%;
text-decoration:none;
color:var(--text-color)!important;
border-radius:3px;
padding:3px;
}
#more-info h2 {
padding: 3px;
margin: 0;
font-size: 1rem;
}
#sidebar ul li li a,
#more-info ul li a,
#more-info ol li a {
padding-left:18px;
}
#sidebar ul li a.active,
#more-info ol li a.active {
background-color:rgba(0,0,0,0.1);
}
#sidebar ul li a:hover,
#more-info ol li a:hover {
background-color:rgba(0,0,0,0.2);
}
#more-info,
#sidebar {
min-width:240px;
width:240px;
}
figcaption {
font-size: 0.8rem;
line-height: 1.1rem;
font-style: italic;
}
.maininfo {
font-size: 0.9rem;
line-height: 1.2rem;
}
footer {
text-align:right;
margin:auto;
padding:12px;
width:800px;
}

BIN
public/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 747 B

0
public/img/.gitkeep Normal file
View file

BIN
public/img/back2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

BIN
public/img/bgcard.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 693 B

BIN
public/img/cc-by-sa.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
public/img/dark-b10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
public/img/erratu18.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

BIN
public/img/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
public/img/other/truck.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

View file

@ -0,0 +1,4 @@
RGB 28, 24, 10
RGB 20, 09, 19

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 646 B

View file

@ -0,0 +1,4 @@
RGB 22, 09, 23
RGB 12, 09, 21

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

View file

@ -0,0 +1,4 @@
RGB 25, 16, 18
RGB 22, 03, 25

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 703 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 734 B

View file

@ -0,0 +1,4 @@
RGB 19, 19, 03
RGB 21, 02, 21

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 B

View file

@ -0,0 +1,4 @@
RGB 24, 20, 21
RGB 14, 05, 31

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 641 B

View file

@ -0,0 +1,4 @@
RGB 18, 19, 11
RGB 20, 10, 30

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 649 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 B

View file

@ -0,0 +1,4 @@
RGB 24, 17, 15
RGB 19, 17, 01

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 B

Some files were not shown because too many files have changed in this diff Show more