fix: port to Eleventy
|
@ -13,9 +13,8 @@ steps:
|
||||||
- name: build
|
- name: build
|
||||||
image: node:latest
|
image: node:latest
|
||||||
commands:
|
commands:
|
||||||
- npm install -g gulp
|
|
||||||
- npm i
|
- npm i
|
||||||
- npm run build
|
- npx @11ty/eleventy
|
||||||
|
|
||||||
- name: deploy
|
- name: deploy
|
||||||
image: drillster/drone-rsync
|
image: drillster/drone-rsync
|
||||||
|
@ -23,7 +22,7 @@ steps:
|
||||||
hosts:
|
hosts:
|
||||||
from_secret: deploy_host
|
from_secret: deploy_host
|
||||||
target: /var/www/vault.kobold.city
|
target: /var/www/vault.kobold.city
|
||||||
source: dist/*
|
source: _site/*
|
||||||
user:
|
user:
|
||||||
from_secret: deploy_user
|
from_secret: deploy_user
|
||||||
key:
|
key:
|
||||||
|
|
26
.gitignore
vendored
|
@ -1,3 +1,25 @@
|
||||||
dist/
|
# Generated files
|
||||||
|
package/generated*
|
||||||
|
|
||||||
|
# Ignore installed npm modules
|
||||||
node_modules/
|
node_modules/
|
||||||
public/
|
|
||||||
|
# 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
|
11
_data/metadata.js
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
module.exports = {
|
||||||
|
title: "Kazhnuz' Vault",
|
||||||
|
url: "https://vault.kazhnuz.space/",
|
||||||
|
language: "fr",
|
||||||
|
description: "Un site pour mes vieux projets abandonnés",
|
||||||
|
author: {
|
||||||
|
name: "Kazhnuz",
|
||||||
|
email: "kazhnuz@kobold.cafe",
|
||||||
|
url: "https://kazhnuz.space/"
|
||||||
|
}
|
||||||
|
}
|
19
_includes/layouts/base.njk
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
layout: layouts/parent.njk
|
||||||
|
---
|
||||||
|
<main id="skip">
|
||||||
|
<div id="titlebar">kazhnuzvault.html</div>
|
||||||
|
<div id="page">
|
||||||
|
{{ content | safe }}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<aside id="more-info">
|
||||||
|
<div class="card">
|
||||||
|
<h2 class="visually-hidden">Table of Content</h2>
|
||||||
|
{{ content | toc | safe }}
|
||||||
|
</div>
|
||||||
|
<div id="links">
|
||||||
|
{% renderFile "./_includes/websites.md" %}
|
||||||
|
</div>
|
||||||
|
</aside>
|
9
_includes/layouts/home.njk
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
---
|
||||||
|
layout: layouts/parent.njk
|
||||||
|
---
|
||||||
|
<main id="skip">
|
||||||
|
<div id="titlebar">kazhnuzvault.html</div>
|
||||||
|
<div id="page">
|
||||||
|
{{ content | safe }}
|
||||||
|
</div>
|
||||||
|
</main>
|
36
_includes/layouts/parent.njk
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
<!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">
|
||||||
|
|
||||||
|
{#- Uncomment this if you’d 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 %}
|
||||||
|
<style>{% getBundle "css" %}</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a href="#skip" class="visually-hidden">Skip to main content</a>
|
||||||
|
|
||||||
|
<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>
|
28
_includes/layouts/post.njk
Normal 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
|
@ -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>
|
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 306 KiB |
Before Width: | Height: | Size: 147 KiB |
19
content/404.md
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
layout: layouts/home.njk
|
||||||
|
permalink: 404.html
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
|
---
|
||||||
|
# Content not found.
|
||||||
|
|
||||||
|
Go <a href="/">home</a> and try another pages.
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
-->
|
3
content/feed/feed.11tydata.js
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
module.exports = {
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
|
}
|
27
content/feed/feed.njk
Executable 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
|
@ -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
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
layout: layouts/base.njk
|
||||||
|
eleventyNavigation:
|
||||||
|
key: Accueil
|
||||||
|
order: 0
|
||||||
|
---
|
||||||
|
|
||||||
|
# {{ metadata.title }}
|
||||||
|
|
||||||
|
Bienvenue dans mon petit grenier ou je met tout mes vieux trucs !
|
||||||
|
|
||||||
|
Cette page est une petite page pour organiser un peu tout mon bazar et rendre plus simple à lire les vieux trucs que je voudrait poster. Vous y trouverez à la fois des vieux projets, des vieux concepts d'histoire, et d'autres petits trucs que j'ai fait pour le fun.
|
||||||
|
|
||||||
|
Tous ces contenus sont utilisable sous les termes CC BY-SA. (Creative Common Attribution - Partage à l'Identique). Certains de ces trucs reprennent cependant des éléments privateurs (venant de licences de JV, par exemple) en tant que fanfictions. Les aspects opensources ne sont que ceux que j'ai inventés. Tout n'est pas forcément utilisable (certains vieux trucs j'ai du utiliser une vieille VM avec un GM8 cracké pour pouvoir les retester)
|
||||||
|
|
||||||
|
Ce site utilise Eleventy
|
||||||
|
|
||||||
|
## Ce que vous pourrez trouver ici
|
||||||
|
|
||||||
|
- Des vieux concepts de projets
|
||||||
|
- Peut-être du vieux code
|
||||||
|
- Des vieux textes et constructions d'univers que j'ai mis de côté.
|
||||||
|
- En vrai pas grand chose d'intéressant, c'est surtout pour garder mes vieux trucs quelque part si je les reprends.
|
||||||
|
|
||||||
|
## Updates and history
|
||||||
|
|
||||||
|
- (**2023-06-09**) Relancement du site
|
||||||
|
- (**2021-01-24**) Lancement initial du site
|
||||||
|
|
||||||
|
## Crédits
|
||||||
|
|
||||||
|
- Site généré grâce à [Eleventy](11ty.org)
|
||||||
|
- Icone provenant de la version 2.9 du pack d'icone de GNOME
|
||||||
|
- Fond d'écran venant originellement de GNOME
|
||||||
|
- Design inspiré du theme lilac de Windows 95
|
|
@ -1,3 +1,55 @@
|
||||||
|
---
|
||||||
|
layout: layouts/base.njk
|
||||||
|
eleventyNavigation:
|
||||||
|
key: Histoire
|
||||||
|
parent: Sonic Monado
|
||||||
|
order: 0
|
||||||
|
---
|
||||||
|
|
||||||
|
# Histoire et thematiques
|
||||||
|
|
||||||
|
L'histoire de MOnado Adventure se passe dans la base de Monado Prime, une biosphere artificielle en circuit fermé habitée conçue en partenariat entre les Fédérations Unis, G.U.N. et l'entreprise Rimlight. Cette base est construite sur l'île rocheuse de Fortitude Rock, une île quasi-désert située dans les zones polaires. Présentant de nombreux espaces de vies et biomes artificiels, la base est considérée comme l'example à suivre pour les futurs conquêtes spatiales. La base est autonome sauf en lumière (elle a besoin de la lumière du soleil pour faire pousser les plantes), c'est à dire qu'elle est capable de produire elle même tout ce dont elle a besoin en terme d'eau, nourriture et air.
|
||||||
|
|
||||||
|
Sonic, Tails et Amy (équipe de début de jeu) arrivent sur l'île suite à un appel du *Directeur de Monado Prime*, qui est inquiêt de l'arrivée de robot d'Eggman dans certains biomes de l'île. Il a peur que le docteur tente de s'emparer de la base et d'en faire un outil de conquête à la MeteorTech. Il a alors demandé de l'aide aux trois mobiens pour qu'ils se débarrassent de la présence du savant fou dans la biosphère.
|
||||||
|
|
||||||
|
Cependant, la base recèle bien des mystères, et Sonic & compagnies comprendront bien vite qu'on ne peut comprendre la menace présente que subit la biosphère, sans découvrir tout son passé...
|
||||||
|
|
||||||
|
## Rôles dans l'histoire
|
||||||
|
|
||||||
|
L'un des principes de Sonic Monado Adventure est que comme dans Sonic Adventure, chaque personnage à un point de vue différent sur l'intrigue, et a un objectif et un rôle narratif différents. Le rôle de chaque personnage sera
|
||||||
|
|
||||||
|
- **Sonic** doit empêcher le plan d'Eggman de porter ses fruits, et évitera les intrigues secondaires. Son histoire portera sur les dégats que fait Eggman, et la capacité de Sonic à l'empêcher.
|
||||||
|
|
||||||
|
- **Tails** doit sauver les habitants de la ville. Sonic histoire portera sur la différence entre un héros et un sauveteur, et lui fera gagner en autonomie en le montrant *complémentaire* avec Sonic.
|
||||||
|
|
||||||
|
- **Amy** va se pencher sur certains des soutiens qu'Eggman possède dans l'île, et sur la situation du jeune Ankou. Son histoire portera sur le combat contre les injustices existantes, et sur la manipulation.
|
||||||
|
|
||||||
|
- **Knuckles** va ignorer totalement la base (la considérant comme juste un nouveau jouet des humains sur leur planète), mais tentera de purifier l'énergie chaotique de l'île. L'histoire se penchera sur le lore des Erebiens.
|
||||||
|
|
||||||
|
- **Shadow** va faire des recherches sur l'incident de Monado Prime, et chercher le traitre ayant fourni les "clefs" de l'ex-centrale chaotique à Eggman. Son histoire portera sur le fanatismes et la manière dont on peut projeter nos croyances dans la réalité.
|
||||||
|
|
||||||
|
- **Cream** va tenter d'aller retrouver Gemerl, qui a disparu lors de l'attaque d'Eggman. Son histoire montre que cette petite lapine est précieuse et courageuse.
|
||||||
|
|
||||||
|
## Inspirations/Références
|
||||||
|
|
||||||
|
Ici je compile quelques unes des inspirations que je voulais mettre en avant et réutiliser pour construire mon histoire. Ce sont des lignes directrices qui pouvaient m'aider à miser sur certains aspects de l'histoire.
|
||||||
|
|
||||||
|
### Légendes et histoire
|
||||||
|
|
||||||
|
- Tout le concept d'Hybris/Phronésis sont inspiré des valeurs grecques. L’Empire Erebiens (dont le coeur du pouvoir est l'Hybris Altar) chute à cause de son intempérance et de leur orgueil, comme les héros grecs. Le passage de la ville de Phronésis à l'autel d'Hybris représentent l'abondon de la prudence/sagesse dans la quête du grandiose (qui est ici moqué). Le jeu est entièrement fondé sur la paranoïa qui prend les personnes en situation de pouvoir.
|
||||||
|
|
||||||
|
- Les quatres épreuves de Morrigans sont basé sur les quatre vertues telle que présentées par Platon.
|
||||||
|
|
||||||
|
- L'histoire de Monado Prime est inspiré de l'île d'Ys : Gradlon était le roi d'Ys (d'où Ys Gradlon), et Dahut celle qui a laissé le diable entrer dans l’île, la condamnant à sombrer sous les flots. Une légende raconte que le jour ou Paris sombrera sous les flots, l’île d’Ys remontera, ce qui représente un peu les propos du jeu, puisque les technologies Erebienne sont ramenée par Eggman pour faire sombrer symboliquement les capitales du monde.
|
||||||
|
|
||||||
|
- Le nom des bases monado est basé sur les monade de Leibniz, mais en vrai c'est plus pour la classe.
|
||||||
|
|
||||||
|
### Sciences
|
||||||
|
|
||||||
|
- La base de Monado Prime est inspirée des projets de biospheres comme [Biosphère 2](https://fr.wikipedia.org/wiki/Biosph%C3%A8re_II), [BIOS-3](https://en.wikipedia.org/wiki/BIOS-3) ou [MELiSSA](https://en.wikipedia.org/wiki/MELiSSA).
|
||||||
|
|
||||||
|
- L’idée de l’environnement interdit après une explosion de centrale, avec contamination est assez aisé à deviner, je suppose :p
|
||||||
|
|
||||||
# Personnages non-jouables
|
# Personnages non-jouables
|
||||||
|
|
||||||
Etant un jeu de style Adventure, le projet contient un certain nombre de personnage secondaire lié à l'intrigue.
|
Etant un jeu de style Adventure, le projet contient un certain nombre de personnage secondaire lié à l'intrigue.
|
||||||
|
@ -98,4 +150,4 @@ Docteure en énergie chaotique arrivée sur Terre pour pouvoir approfondir plus
|
||||||
|
|
||||||
Sans doute l'une des plus optimiste et des forces principale du projet (par rapport à une Morrigan plus prudente)
|
Sans doute l'une des plus optimiste et des forces principale du projet (par rapport à une Morrigan plus prudente)
|
||||||
|
|
||||||
Elle est celle qui a convaincu une partie des douze chef d'accepter le projet. Elle est morte lors de l'incident. À cause de cela, elle est considérée comme coupable de toute ce qui s'est passé durant ce projet, et son fils unique Ankou subit les contrecoups de cette réputation.
|
Elle est celle qui a convaincu une partie des douze chef d'accepter le projet. Elle est morte lors de l'incident. À cause de cela, elle est considérée comme coupable de toute ce qui s'est passé durant ce projet, et son fils unique Ankou subit les contrecoups de cette réputation.
|
|
@ -1,10 +1,29 @@
|
||||||
# Gameplay
|
---
|
||||||
|
layout: layouts/base.njk
|
||||||
|
eleventyNavigation:
|
||||||
|
key: Sonic Monado
|
||||||
|
order: 1
|
||||||
|
---
|
||||||
|
|
||||||
|
# Sonic Monado Adventure
|
||||||
|
|
||||||
|
Ce document est une mise au propre du scénario et de quelques éléments de design général que j’avais prévu pour mon projet de fangame « Project Millenium » (que j'ai nommé ici Sonic Monado Adventure), qui était un fangame Sonic en 2D, inspiré cependant de l’ère Adventure (pensez Sonic FGX, ou Sonic Fusion). Ce document contiendra donc tout ce que j’avais fait niveau scénario, backstory, personnages, etc. Il présentera aussi de manière générale les niveaux qui existaient dans le jeux, soit 7 niveaux de 3 acts, et 2 de 4 acts.
|
||||||
|
|
||||||
|
Le projet devait se dérouler entièrement dans la base de Monado Prime, une biosphère artificielle. Les personnages présents étaient Sonic the Hedgehog, Miles « Tails » Prower, Knuckles the Echidna, Shadow the Hedgehog, Amy Rose et Cream the Rabbit.
|
||||||
|
|
||||||
|
Le but n'est pas forcément de révolutionner la licence, et le projet n'hésitait pas à être fortement référentiel (par exemple de nombreuses structures du jeu sont inspirée directement de Sonic Adventure ou Sonic Adventure 2), étant un petit plaisir que je me faisais.
|
||||||
|
|
||||||
|
## Présentation du projet
|
||||||
|
|
||||||
|
Sonic : Monado Adventure était un fangame Sonic the Hedgehog inspiré des Sonic Adventure, mais en deux dimension. Le but était de mélanger avec un Sonic Advance les particularités et les possibilités d'un Sonic Adventure en terme de narration (une histoire construite avec des enjeux, du développement de personnage, ordre des stages dictés par le scénario et non scénario dicté par l'ordre des stages) ainsi que l'aspect plus "RPG" de ces titres (nouvelles capacités à débloquer, HUB world) avec le style générale d'un Sonic Advance.
|
||||||
|
|
||||||
|
Le jeux reprenait quelques idées des jeux Rush (notamment de Rush Adventure), tel que les matériaux ou les tableaux de missions, et s’inspirait légèrement de quelques tentatives de recréer en 2D des jeux Adventure-like ou de jeux similaires.
|
||||||
|
|
||||||
|
## Gameplay
|
||||||
|
|
||||||
Sonic Monado Adventure aurait du se jouer globalement comme un Sonic Advance, mais avec un bouton d'action supplémentaire pour les actions contextuelles, à la Sonic Adventure 2. Les personnages auraient eut un gameplay similaire à ceux qu'ils avaient dans les Sonic Advances ou Adventures. Le jeu proposera 6 personnages jouables dans l'aventure principale : Sonic, Tails, Knuckles, Amy, Cream, Shadow. Le jeu aurait contenu également des sub-games tels qu'une phase "Sky Chase" (plus proche de celle d'Adventure que de Sonic 2), des jardin des chao et quelques éléments à collectionner et améliorer.
|
Sonic Monado Adventure aurait du se jouer globalement comme un Sonic Advance, mais avec un bouton d'action supplémentaire pour les actions contextuelles, à la Sonic Adventure 2. Les personnages auraient eut un gameplay similaire à ceux qu'ils avaient dans les Sonic Advances ou Adventures. Le jeu proposera 6 personnages jouables dans l'aventure principale : Sonic, Tails, Knuckles, Amy, Cream, Shadow. Le jeu aurait contenu également des sub-games tels qu'une phase "Sky Chase" (plus proche de celle d'Adventure que de Sonic 2), des jardin des chao et quelques éléments à collectionner et améliorer.
|
||||||
|
|
||||||
## Base du gameplay
|
Chaque personnage à le même core gameplay, avec les mêmes statistiques, le spin-jump et le spin dash seuls trois données changeront :
|
||||||
|
|
||||||
Le gameplay devait être inspiré principalement des Sonic Advance pour le gameplay. Le jeu utilise un moteur 2D avec une physique en 360°, permettant de gérer les pentes et un gameplay à la Sonic. Chaque personnage à le même core gameplay, avec les mêmes statistiques, le spin-jump et le spin dash seuls trois données changeront :
|
|
||||||
|
|
||||||
- L'action secondaire (B) - Généralement une attaque
|
- L'action secondaire (B) - Généralement une attaque
|
||||||
- L'action aérienne (A+A) - Généralement un mouvement aidant au plateforming
|
- L'action aérienne (A+A) - Généralement un mouvement aidant au plateforming
|
|
@ -1,3 +1,11 @@
|
||||||
|
---
|
||||||
|
layout: layouts/base.njk
|
||||||
|
eleventyNavigation:
|
||||||
|
key: Sonic the Hedgehog
|
||||||
|
parent: Sonic Monado
|
||||||
|
order: 3
|
||||||
|
---
|
||||||
|
|
||||||
# Sonic the Hedgehog
|
# Sonic the Hedgehog
|
||||||
|
|
||||||
Le hérisson le plus rapide du monde est de retour ! Orgueilleux, fier et inarrêtable, Sonic est toujours l’amoureux de la liberté et de la course qu’il a toujours été. Étonnamment plus malin qu’il le laisse paraître, le hérisson a été appellé par le dirigeant de la zone avec Tails et Amy afin d’aider face à une invasion de Badniks.
|
Le hérisson le plus rapide du monde est de retour ! Orgueilleux, fier et inarrêtable, Sonic est toujours l’amoureux de la liberté et de la course qu’il a toujours été. Étonnamment plus malin qu’il le laisse paraître, le hérisson a été appellé par le dirigeant de la zone avec Tails et Amy afin d’aider face à une invasion de Badniks.
|
|
@ -1,3 +1,11 @@
|
||||||
|
---
|
||||||
|
layout: layouts/base.njk
|
||||||
|
eleventyNavigation:
|
||||||
|
key: Miles "Tails" Prower
|
||||||
|
parent: Sonic Monado
|
||||||
|
order: 4
|
||||||
|
---
|
||||||
|
|
||||||
# Miles "Tails" Prower
|
# Miles "Tails" Prower
|
||||||
|
|
||||||
Tails est arrivé sur Monado Prime pour aider Sonic et Amy à défaire les nouveaux plans d'Eggman. Cependant, lors d'une attaque sur Eggman, il se retrouvera capturé par ce dernier. Le petit renard vivra alors sa propre aventure, sauvant les habitants de la ville tandis que Sonic affronte le dictateur.
|
Tails est arrivé sur Monado Prime pour aider Sonic et Amy à défaire les nouveaux plans d'Eggman. Cependant, lors d'une attaque sur Eggman, il se retrouvera capturé par ce dernier. Le petit renard vivra alors sa propre aventure, sauvant les habitants de la ville tandis que Sonic affronte le dictateur.
|
|
@ -1,4 +1,70 @@
|
||||||
# Le Projet Millenium
|
---
|
||||||
|
layout: layouts/base.njk
|
||||||
|
eleventyNavigation:
|
||||||
|
key: Univers et lore
|
||||||
|
parent: Sonic Monado
|
||||||
|
order: 1
|
||||||
|
---
|
||||||
|
|
||||||
|
# Sonic Monado Adventure - Univers et lore
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Tout ce lore n'avait pas pour objectif d'être constamment explicitement dans le jeu. Il servait à nourrir surtout mon écriture, quelques dialogues que je pourrais mettre aux PNJ, et si je le sentais, créer un codex avec toutes ces informations.
|
||||||
|
|
||||||
|
Comme Sonic Adventure et Sonic Adventure 2, le projet visait à introduire sa propre histoire tout en étant lié à des éléments déjà existant des jeux précédant, afin de créer de la continuité sans verser dans l’histoire qui n’existe que pour expliquer des trucs des jeux précédant. Cependant, contrairement à SA/SA2, Sonic : Monado Adventure utilise explicitement un monde pour décrire l'univers de Sonic, ici le two-world, afin de l'utiliser pour construire son intrigue et les différents éléments qui vont en faire un jeu.
|
||||||
|
|
||||||
|
Le but de cette page est donc de décrire un peu ici les éléments du monde de Sonic utilisés et remixés pour former l'univers de ce jeu.
|
||||||
|
|
||||||
|
## Le Two-World
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> De nombreux éléments de cette vision du two-world viennent d'une autre version antérieur de mon envie de faire un "Sonic Advance+Adventure" : Sonic Adventure 0. Ce projet avait comme principe d'être une "désadataptation" des premiers épisodes de Sonic X, tentant d'imaginer ce qu'aurait pu être un jeu qui aurait inspiré cette saison 1 pour dans Sonic X (même si en vrai vers la fin ça devenait assez différent). "L'incident de Christmas Island" était le scénario de ce jeu, et le nom de Christmas Island sert pour donner l'idée aux humains que Sonic viendrait de cette île, puisque c'est ici qu'il a été vu pour la première fois.
|
||||||
|
|
||||||
|
Sonic : Monado Adventure se base au niveau de son univers sur le concept des deux mondes (à la Sonic X/IDWSonic… et avec un brin de stargate dedans) : Deux "mondes" (ici des planètes d'un même système planétaire), et les personnages peuvent passer de l'un à l'autre. Ces deux mondes sont ceux de la Terre, une planète organisée et peuplée surtout par les humains, et une planète surnommée nommé le "monde des animaux" (Mobius), peuplé surtout par des animaux anthropomorphiques intelligents. Mobius est dans ce lore un peu un équivalent de Mars dans notre système planétaire, et les deux planètes sont assez proche.
|
||||||
|
|
||||||
|
Le passage d'un monde à l'autre est conduit par l'existence de *Super Warp Ring*, des immenses anneaux qui ont le pouvoir d'être des passage entre les différentes planètes du système solaire, restent d'une ancienne civilisation. Ils étaient inactif depuis des milliers d'année quand les *expéditions interdimensionnelles* d'il y a 50 ans, puis *l'incident de Christmas Island* sur Terre ont provoqué leur réactivation, et la connexion des deux mondes. Depuis, les deux mondes se connaissent, et doivent coéxister, non sans quelques… réserves, parfois.
|
||||||
|
|
||||||
|
### Les quatres grandes civilisations
|
||||||
|
|
||||||
|
Les quatres grandes civilisations sont les quatres peuples qui ont atteint la possibilité d'être des civilisations interplanétaires, et qui ont succèssivements réussi à construire des créations hors de leur planète d'origines. Les quatres proviennent de Mobius, mais les humains sont en phase de devenir la *cinquième grande civilisation*, même si leur technologies spatiales manquent encore de capacités
|
||||||
|
|
||||||
|
- La **première grande civilisation** (-10 000 ans) est encore peu étudiée, parce qu'une grande partie de leurs créations ont disparu du fait de l'érosions. Ils ont construit de nombreux bâtiments dans tout le système solaire, et sont surnommé les premiers. Les plus grands restes de leur civilisations sur les deux planètes habitées seront insinué comme étant les *temples de gaïa*. Ils sont à l'origine des Warp Rings. Ils sont surnommés les *Premiers* et autres surnoms vagues du genre.
|
||||||
|
|
||||||
|
- La **seconde grande civilisation** (-9000 ans) est une civilisation centralisée, qui a surtout vécu sur Mobius. Elle sera insinuée comme étant un équivalent des *Trolls* d'ArchieSonic, mais sans plus de détails.
|
||||||
|
|
||||||
|
- La **troisième grande civilisation** (-7500 ans) est la *civilisation d'Erebe*, à l'origine des premières constructions explotant les *veines chaotiques*. Cette civilisation est le coeur du scénario de Knuckles, et Monado Prime est construit sur une faille utilisé par cette civilisation.
|
||||||
|
|
||||||
|
- La **quatrième grande civilisation** (-5000 ans) est la civilisation qui est à l'origine d'Angel Island et de robots de guerres nommée les Gizoïd. Il était prévu d'en faire une civilisation qui a réduit en esclavage le peuple des échidnés (le Knuckles Clan tel qu'on le voit dans Adventure sont des descendant d'esclave s'étant révolté durant la chute de cette civilisation, et récupérant les CE pour affronter des descendants de la civilisation).
|
||||||
|
|
||||||
|
### Le recontact
|
||||||
|
|
||||||
|
Le monde des animaux a été en partie redécouvert durant les grands débuts de la conquête spatiale terrestre, il y a de cela ~75 ans. La découverte des warp rings inactifs, le lancement de futurs projets comme le projet ARK, et l'exploration de Mobius par les premiers humains (dont le jeune professeur Gerald Robotnik, qui étudiera notamment beaucoup la similarité sur Terres de ruines et de représentations sur Mobius présentant des échidnés).
|
||||||
|
|
||||||
|
Cependant, le recontact se brisera lors du durcissement de la ligne politique terrestres il y a 50 ans, du à la fois de troubles dans les Federations Unis naissantes, et du shutdown de l'ARK du à des suspiscion envers le professeur Gérald Robotnik et l'incident de l'activation d'un robot antique.
|
||||||
|
|
||||||
|
## La Terre
|
||||||
|
|
||||||
|
La "Terre" de Sonic Monado Adventure est une terre alternative à la notre, ou les pays sont principalement remplacé par leurs Erzats, et où la forme des continent est légèrement différent.
|
||||||
|
|
||||||
|
Cette Terre possède comme principale puissance politique les *Fédérations Unis*, et comme plus grande force militaire les *Guardian Units of Nations* (ou GUN).
|
||||||
|
|
||||||
|
### Les Fédérations Unis
|
||||||
|
|
||||||
|
Les Fédérations Unis sont la république parlementaire avec un régime présidentiel qui couvre une grande partie de la planète Terre. Plus puissante nation de la planète, elle a subit plusieurs crise depuis le retour du Docteur *Ivo Robotnik* sur Terre lors de l'incident de Christmas Island.
|
||||||
|
|
||||||
|
Elles peuvent être vu comme quelque chose entres les Nations-Unis et les États-Unis. Le but de cet état est de garantir un développement tout en respectant les libertés des pays qui en font partie (et qui conserve une certaine indépendance). L'île de Sunlit Island est sous contrôle des Fédérations Unis, avec comme représentant le maire de la ville de *Sunlit Metropolis*.
|
||||||
|
|
||||||
|
Leur technologie est majoritairement contemporaire, mais a réussi de grande avancée depuis 50 ans à l'aide des technologies chaotique, en grande partie découvertes par le professeur Gérald
|
||||||
|
|
||||||
|
Dans le jeu, les Fédérations Unis, n'ont pas une présence très forte dans le jeu, en tout cas pas directement.
|
||||||
|
|
||||||
|
### Les Gardian Units of Nations
|
||||||
|
|
||||||
|
Les Gardian Units of Nations (ou G.U.N. parfois orthographié en GUN) sont la principale force militaire des Fédérations Unis, et ont comme rôle de protéger à la fois les Fédérations Unis, et à la fois les pays alliés. Cette armée est dirigé par un Commandant.
|
||||||
|
|
||||||
|
L'armée est actuellement en grande partie dédiée à affronter le Dr. Ivo Robotnik, qui vise à conquérir le monde, mais n’arrive pas à le localiser et à lancer des attaques précises. La capacité à disparaître de ce savant étant déconcertante, et ses moyens encore inconnus. L'inefficacité de GUN à vaincre les menances originaire du monde des animaux est la source d'une méfiance chez certaines personnes.
|
||||||
|
|
||||||
|
## Le Projet Millenium
|
||||||
|
|
||||||
Le projet Millenium est un vaste projet démarré par les fédérations-unis il y a de cela 30 ans, se basant sur les nombreuses recherches effectuées durant le recontact, ayant pour but d'être un projet global pour mettre la civilisation des Fédérations Unis au niveau des quatres grandes civilisations. Il contenait notamment un volet énergitique (provoquant la fondation de Rimlight et des Chaos Central), d'un volet militaire (fondant les satellite militaire Erinye) et d'un projet spatiale (provoquant la fondation des bases Monado).
|
Le projet Millenium est un vaste projet démarré par les fédérations-unis il y a de cela 30 ans, se basant sur les nombreuses recherches effectuées durant le recontact, ayant pour but d'être un projet global pour mettre la civilisation des Fédérations Unis au niveau des quatres grandes civilisations. Il contenait notamment un volet énergitique (provoquant la fondation de Rimlight et des Chaos Central), d'un volet militaire (fondant les satellite militaire Erinye) et d'un projet spatiale (provoquant la fondation des bases Monado).
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
|
---
|
||||||
|
layout: layouts/base.njk
|
||||||
|
eleventyNavigation:
|
||||||
|
key: Zones
|
||||||
|
parent: Sonic Monado
|
||||||
|
order: 2
|
||||||
|
---
|
||||||
|
|
||||||
# Zones
|
# Zones
|
||||||
|
|
||||||
Monado Prime est un système écologique en circuit fermé situé sur l'île désertique de Fortitude Rock. Cette base est composée d'un espace de vie principal, d'usine bactérienne biologique (s'occupant du plus gros de recyclage de l'air et des déchets biologiques), de biomes artificiels, d'un espace numérique autonome, ainsi que de tout un espace de laboratoires et de stations technologique. Il s'agit de la première station (d'où le nom Prime) de type Monado. Le terme monado indique le principe de base d'un écosystème clos : être un monde hermétique, une sorte d'univers fermé, tel les monades de Leibniz.
|
Monado Prime est un système écologique en circuit fermé situé sur l'île désertique de Fortitude Rock. Cette base est composée d'un espace de vie principal, d'usine bactérienne biologique (s'occupant du plus gros de recyclage de l'air et des déchets biologiques), de biomes artificiels, d'un espace numérique autonome, ainsi que de tout un espace de laboratoires et de stations technologique. Il s'agit de la première station (d'où le nom Prime) de type Monado. Le terme monado indique le principe de base d'un écosystème clos : être un monde hermétique, une sorte d'univers fermé, tel les monades de Leibniz.
|
14
content/sitemap/sitemap.xml.njk
Normal 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>
|
12
dep/fork-awesome/css/fork-awesome.min.css
vendored
|
@ -1,446 +0,0 @@
|
||||||
/*!
|
|
||||||
Fork Awesome 1.1.7
|
|
||||||
License - https://forkaweso.me/Fork-Awesome/license
|
|
||||||
|
|
||||||
Copyright 2018 Dave Gandy & Fork Awesome
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
.fas,
|
|
||||||
.fab,
|
|
||||||
.far {
|
|
||||||
display: inline-block;
|
|
||||||
font: normal normal normal 14px/1 ForkAwesome;
|
|
||||||
font-size: inherit;
|
|
||||||
text-rendering: auto;
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
-moz-osx-font-smoothing: grayscale;
|
|
||||||
}
|
|
||||||
.fas.fa-chart-area:before {
|
|
||||||
content: "\f1fe";
|
|
||||||
}
|
|
||||||
.fas.fa-arrows-alt:before {
|
|
||||||
content: "\f047";
|
|
||||||
}
|
|
||||||
.fas.fa-expand-arrows-alt:before {
|
|
||||||
content: "\f0b2";
|
|
||||||
}
|
|
||||||
.fas.fa-arrows-alt-h:before {
|
|
||||||
content: "\f07e";
|
|
||||||
}
|
|
||||||
.fas.fa-arrows-alt-v:before {
|
|
||||||
content: "\f07d";
|
|
||||||
}
|
|
||||||
.fas.fa-calendar-alt:before {
|
|
||||||
content: "\f073";
|
|
||||||
}
|
|
||||||
.fas.fa-circle-notch:before {
|
|
||||||
content: "\f1ce";
|
|
||||||
}
|
|
||||||
.fas.fa-cloud-download-alt:before {
|
|
||||||
content: "\f0ed";
|
|
||||||
}
|
|
||||||
.fas.fa-cloud-upload-alt:before {
|
|
||||||
content: "\f0ee";
|
|
||||||
}
|
|
||||||
.fas.fa-credit-card:before {
|
|
||||||
content: "\f283";
|
|
||||||
}
|
|
||||||
.fas.fa-dollar-sign:before {
|
|
||||||
content: "\f155";
|
|
||||||
}
|
|
||||||
.fas.fa-euro-sign:before {
|
|
||||||
content: "\f153";
|
|
||||||
}
|
|
||||||
.fas.fa-exchange-alt:before {
|
|
||||||
content: "\f0ec";
|
|
||||||
}
|
|
||||||
.fas.fa-external-link-alt:before {
|
|
||||||
content: "\f08e";
|
|
||||||
}
|
|
||||||
.fas.fa-external-link-square-alt:before {
|
|
||||||
content: "\f14c";
|
|
||||||
}
|
|
||||||
.fas.fa-eye-dropper:before {
|
|
||||||
content: "\f1fb";
|
|
||||||
}
|
|
||||||
.fas.fa-pound-sign:before {
|
|
||||||
content: "\f154";
|
|
||||||
}
|
|
||||||
.fas.fa-glass-martini:before {
|
|
||||||
content: "\f000";
|
|
||||||
}
|
|
||||||
.fas.fa-shekel-sign:before {
|
|
||||||
content: "\f20b";
|
|
||||||
}
|
|
||||||
.fas.fa-rupee-sign:before {
|
|
||||||
content: "\f156";
|
|
||||||
}
|
|
||||||
.fas.fa-won-sign:before {
|
|
||||||
content: "\f159";
|
|
||||||
}
|
|
||||||
.fas.fa-level-down-alt:before {
|
|
||||||
content: "\f149";
|
|
||||||
}
|
|
||||||
.fas.fa-level-up-alt:before {
|
|
||||||
content: "\f148";
|
|
||||||
}
|
|
||||||
.fas.fa-chart-line:before {
|
|
||||||
content: "\f201";
|
|
||||||
}
|
|
||||||
.fas.fa-long-arrow-alt-down:before {
|
|
||||||
content: "\f175";
|
|
||||||
}
|
|
||||||
.fas.fa-long-arrow-alt-left:before {
|
|
||||||
content: "\f177";
|
|
||||||
}
|
|
||||||
.fas.fa-long-arrow-alt-right:before {
|
|
||||||
content: "\f178";
|
|
||||||
}
|
|
||||||
.fas.fa-long-arrow-alt-up:before {
|
|
||||||
content: "\f176";
|
|
||||||
}
|
|
||||||
.fas.fa-map-marker-alt:before {
|
|
||||||
content: "\f041";
|
|
||||||
}
|
|
||||||
.fas.fa-mobile-alt:before {
|
|
||||||
content: "\f10b";
|
|
||||||
}
|
|
||||||
.fas.fa-pencil-alt:before {
|
|
||||||
content: "\f040";
|
|
||||||
}
|
|
||||||
.fas.fa-pen-square:before {
|
|
||||||
content: "\f14b";
|
|
||||||
}
|
|
||||||
.fas.fa-chart-pie:before {
|
|
||||||
content: "\f200";
|
|
||||||
}
|
|
||||||
.fas.fa-yen-sign:before {
|
|
||||||
content: "\f157";
|
|
||||||
}
|
|
||||||
.fas.fa-ruble-sign:before {
|
|
||||||
content: "\f158";
|
|
||||||
}
|
|
||||||
.fas.fa-shield-alt:before {
|
|
||||||
content: "\f132";
|
|
||||||
}
|
|
||||||
.fas.fa-sign-in-alt:before {
|
|
||||||
content: "\f090";
|
|
||||||
}
|
|
||||||
.fas.fa-sign-out-alt:before {
|
|
||||||
content: "\f08b";
|
|
||||||
}
|
|
||||||
.fas.fa-sliders-h:before {
|
|
||||||
content: "\f1de";
|
|
||||||
}
|
|
||||||
.fas.fa-tablet-alt:before {
|
|
||||||
content: "\f10a";
|
|
||||||
}
|
|
||||||
.fas.fa-tachometer-alt:before {
|
|
||||||
content: "\f0e4";
|
|
||||||
}
|
|
||||||
.fas.fa-thumbtack:before {
|
|
||||||
content: "\f08d";
|
|
||||||
}
|
|
||||||
.fas.fa-ticket-alt:before {
|
|
||||||
content: "\f145";
|
|
||||||
}
|
|
||||||
.fas.fa-trash-alt:before {
|
|
||||||
content: "\f1f8";
|
|
||||||
}
|
|
||||||
.fas.fa-lira-sign:before {
|
|
||||||
content: "\f195";
|
|
||||||
}
|
|
||||||
.fab.fa-linkedin-in:before {
|
|
||||||
content: "\fe01";
|
|
||||||
}
|
|
||||||
.fab.fa-linkedin:before {
|
|
||||||
content: "\f08c";
|
|
||||||
}
|
|
||||||
.far.fa-address-book:before {
|
|
||||||
content: "\f2ba";
|
|
||||||
}
|
|
||||||
.far.fa-address-card:before {
|
|
||||||
content: "\f2bc";
|
|
||||||
}
|
|
||||||
.far.fa-arrow-alt-circle-down:before {
|
|
||||||
content: "\f01a";
|
|
||||||
}
|
|
||||||
.far.fa-arrow-alt-circle-left:before {
|
|
||||||
content: "\f190";
|
|
||||||
}
|
|
||||||
.far.fa-arrow-alt-circle-right:before {
|
|
||||||
content: "\f18e";
|
|
||||||
}
|
|
||||||
.far.fa-arrow-alt-circle-up:before {
|
|
||||||
content: "\f01b";
|
|
||||||
}
|
|
||||||
.far.fa-bell:before {
|
|
||||||
content: "\f0f3";
|
|
||||||
}
|
|
||||||
.far.fa-bell-slash:before {
|
|
||||||
content: "\f1f7";
|
|
||||||
}
|
|
||||||
.far.fa-bookmark:before {
|
|
||||||
content: "\f097";
|
|
||||||
}
|
|
||||||
.far.fa-building:before {
|
|
||||||
content: "\f0f7";
|
|
||||||
}
|
|
||||||
.far.fa-calendar-check:before {
|
|
||||||
content: "\f274";
|
|
||||||
}
|
|
||||||
.far.fa-calendar-minus:before {
|
|
||||||
content: "\f272";
|
|
||||||
}
|
|
||||||
.far.fa-calendar:before {
|
|
||||||
content: "\f133";
|
|
||||||
}
|
|
||||||
.far.fa-calendar-plus:before {
|
|
||||||
content: "\f271";
|
|
||||||
}
|
|
||||||
.far.fa-calendar-times:before {
|
|
||||||
content: "\f273";
|
|
||||||
}
|
|
||||||
.far.fa-caret-square-down:before {
|
|
||||||
content: "\f150";
|
|
||||||
}
|
|
||||||
.far.fa-caret-square-left:before {
|
|
||||||
content: "\f191";
|
|
||||||
}
|
|
||||||
.far.fa-caret-square-right:before {
|
|
||||||
content: "\f152";
|
|
||||||
}
|
|
||||||
.far.fa-caret-square-up:before {
|
|
||||||
content: "\f151";
|
|
||||||
}
|
|
||||||
.far.fa-check-circle:before {
|
|
||||||
content: "\f05d";
|
|
||||||
}
|
|
||||||
.far.fa-check-square:before {
|
|
||||||
content: "\f046";
|
|
||||||
}
|
|
||||||
.far.fa-circle:before {
|
|
||||||
content: "\f10c";
|
|
||||||
}
|
|
||||||
.far.fa-clock:before {
|
|
||||||
content: "\f017";
|
|
||||||
}
|
|
||||||
.far.fa-comment:before {
|
|
||||||
content: "\f0e5";
|
|
||||||
}
|
|
||||||
.far.fa-comment-dots:before {
|
|
||||||
content: "\f27b";
|
|
||||||
}
|
|
||||||
.far.fa-comments:before {
|
|
||||||
content: "\f0e6";
|
|
||||||
}
|
|
||||||
.far.fa-dot-circle:before {
|
|
||||||
content: "\f192";
|
|
||||||
}
|
|
||||||
.far.fa-id-card:before {
|
|
||||||
content: "\f2c3";
|
|
||||||
}
|
|
||||||
.far.fa-envelope:before {
|
|
||||||
content: "\f003";
|
|
||||||
}
|
|
||||||
.far.fa-envelope-open:before {
|
|
||||||
content: "\f2b7";
|
|
||||||
}
|
|
||||||
.far.fa-file-archive:before {
|
|
||||||
content: "\f1c6";
|
|
||||||
}
|
|
||||||
.far.fa-file-audio:before {
|
|
||||||
content: "\f1c7";
|
|
||||||
}
|
|
||||||
.far.fa-file-code:before {
|
|
||||||
content: "\f1c9";
|
|
||||||
}
|
|
||||||
.far.fa-file-excel:before {
|
|
||||||
content: "\f1c3";
|
|
||||||
}
|
|
||||||
.far.fa-file-image:before {
|
|
||||||
content: "\f1c5";
|
|
||||||
}
|
|
||||||
.far.fa-file-video:before {
|
|
||||||
content: "\f1c8";
|
|
||||||
}
|
|
||||||
.far.fa-copy:before,
|
|
||||||
.far.fa-file:before {
|
|
||||||
content: "\f016";
|
|
||||||
}
|
|
||||||
.far.fa-file-pdf:before {
|
|
||||||
content: "\f1c1";
|
|
||||||
}
|
|
||||||
.far.fa-file-powerpoint:before {
|
|
||||||
content: "\f1c4";
|
|
||||||
}
|
|
||||||
.far.fa-file-alt:before {
|
|
||||||
content: "\f0f6";
|
|
||||||
}
|
|
||||||
.far.fa-file-word:before {
|
|
||||||
content: "\f1c2";
|
|
||||||
}
|
|
||||||
.far.fa-flag:before {
|
|
||||||
content: "\f11d";
|
|
||||||
}
|
|
||||||
.far.fa-save:before {
|
|
||||||
content: "\f0c7";
|
|
||||||
}
|
|
||||||
.far.fa-folder:before {
|
|
||||||
content: "\f114";
|
|
||||||
}
|
|
||||||
.far.fa-folder-open:before {
|
|
||||||
content: "\f115";
|
|
||||||
}
|
|
||||||
.far.fa-frown:before {
|
|
||||||
content: "\f119";
|
|
||||||
}
|
|
||||||
.far.fa-futbol:before {
|
|
||||||
content: "\f1e3";
|
|
||||||
}
|
|
||||||
.far.fa-hand-rock:before {
|
|
||||||
content: "\f255";
|
|
||||||
}
|
|
||||||
.far.fa-hand-lizard:before {
|
|
||||||
content: "\f258";
|
|
||||||
}
|
|
||||||
.far.fa-hand-point-down:before {
|
|
||||||
content: "\f0a7";
|
|
||||||
}
|
|
||||||
.far.fa-hand-point-left:before {
|
|
||||||
content: "\f0a5";
|
|
||||||
}
|
|
||||||
.far.fa-hand-point-right:before {
|
|
||||||
content: "\f0a4";
|
|
||||||
}
|
|
||||||
.far.fa-hand-point-up:before {
|
|
||||||
content: "\f0a6";
|
|
||||||
}
|
|
||||||
.far.fa-hand-paper:before {
|
|
||||||
content: "\256";
|
|
||||||
}
|
|
||||||
.far.fa-hand-pointer:before {
|
|
||||||
content: "\f25a";
|
|
||||||
}
|
|
||||||
.far.fa-hand-scissors:before {
|
|
||||||
content: "\f257";
|
|
||||||
}
|
|
||||||
.far.fa-hand-spock:before {
|
|
||||||
content: "\f259";
|
|
||||||
}
|
|
||||||
.far.fa-handshake:before {
|
|
||||||
content: "\f2b5";
|
|
||||||
}
|
|
||||||
.far.fa-hdd:before {
|
|
||||||
content: "\f0a0";
|
|
||||||
}
|
|
||||||
.far.fa-heart:before {
|
|
||||||
content: "\f08a";
|
|
||||||
}
|
|
||||||
.far.fa-hospital:before {
|
|
||||||
content: "\f0f8";
|
|
||||||
}
|
|
||||||
.far.fa-hourglass:before {
|
|
||||||
content: "\f250";
|
|
||||||
}
|
|
||||||
.far.fa-id-card:before {
|
|
||||||
content: "\f2c3";
|
|
||||||
}
|
|
||||||
.far.fa-keyboard:before {
|
|
||||||
content: "\f11c";
|
|
||||||
}
|
|
||||||
.far.fa-lemon:before {
|
|
||||||
content: "\f094";
|
|
||||||
}
|
|
||||||
.far.fa-lightbulb:before {
|
|
||||||
content: "\f0eb";
|
|
||||||
}
|
|
||||||
.far.fa-meh:before {
|
|
||||||
content: "\f11a";
|
|
||||||
}
|
|
||||||
.far.fa-minus-square:before {
|
|
||||||
content: "\f147";
|
|
||||||
}
|
|
||||||
.far.fa-money-bill-alt:before {
|
|
||||||
content: "\f0d6";
|
|
||||||
}
|
|
||||||
.far.fa-moon:before {
|
|
||||||
content: "\f186";
|
|
||||||
}
|
|
||||||
.far.fa-newspaper:before {
|
|
||||||
content: "\f1ea";
|
|
||||||
}
|
|
||||||
.far.fa-paper-plane:before {
|
|
||||||
content: "\f1d9";
|
|
||||||
}
|
|
||||||
.far.fa-pause-circle:before {
|
|
||||||
content: "\f28c";
|
|
||||||
}
|
|
||||||
.far.fa-edit:before {
|
|
||||||
content: "\f044";
|
|
||||||
}
|
|
||||||
.far.fa-image:before {
|
|
||||||
content: "\f03e";
|
|
||||||
}
|
|
||||||
.far.fa-play-circle:before {
|
|
||||||
content: "\f01d";
|
|
||||||
}
|
|
||||||
.far.fa-plus-square:before {
|
|
||||||
content: "\f196";
|
|
||||||
}
|
|
||||||
.far.fa-question-circle:before {
|
|
||||||
content: "\f92c";
|
|
||||||
}
|
|
||||||
.far.fa-share-square:before {
|
|
||||||
content: "\f045";
|
|
||||||
}
|
|
||||||
.far.fa-smile:before {
|
|
||||||
content: "\f118";
|
|
||||||
}
|
|
||||||
.far.fa-snowflake:before {
|
|
||||||
content: "\f2dc";
|
|
||||||
}
|
|
||||||
.far.fa-futbol:before {
|
|
||||||
content: "\f1e3";
|
|
||||||
}
|
|
||||||
.far.fa-star-half:before {
|
|
||||||
content: "\f089";
|
|
||||||
}
|
|
||||||
.far.fa-star:before {
|
|
||||||
content: "\f006";
|
|
||||||
}
|
|
||||||
.far.fa-sticky-note:before {
|
|
||||||
content: "\f24a";
|
|
||||||
}
|
|
||||||
.far.fa-stop-circle:before {
|
|
||||||
content: "\f28e";
|
|
||||||
}
|
|
||||||
.far.fa-sun:before {
|
|
||||||
content: "\f185";
|
|
||||||
}
|
|
||||||
.far.fa-thumbs-down:before {
|
|
||||||
content: "\f088";
|
|
||||||
}
|
|
||||||
.far.fa-thumbs-up:before {
|
|
||||||
content: "\f087";
|
|
||||||
}
|
|
||||||
.far.fa-times-circle:before {
|
|
||||||
content: "\f05c";
|
|
||||||
}
|
|
||||||
.far.fa-window-close:before {
|
|
||||||
content: "\f2d4";
|
|
||||||
}
|
|
||||||
.far.fa-trash-alt:before {
|
|
||||||
content: "\f014";
|
|
||||||
}
|
|
||||||
.far.fa-user-circle:before {
|
|
||||||
content: "\f2be";
|
|
||||||
}
|
|
||||||
.far.fa-user:before {
|
|
||||||
content: "\f2c0";
|
|
||||||
}
|
|
12
dep/fork-awesome/css/v5-compat.min.css
vendored
|
@ -1 +0,0 @@
|
||||||
{"version":3,"sources":["v5-compat.css"],"names":[],"mappings":";;;;;;;;;;;AAaA,KACA,KAFA,KAGE,QAAA,aACA,KAAA,OAAA,OAAA,OAAA,KAAA,EAAA,YACA,UAAA,QACA,eAAA,KACA,uBAAA,YACA,wBAAA,UAEgB,0BAChB,QAAA,QAEgB,0BAChB,QAAA,QAEuB,iCACvB,QAAA,QAEkB,4BAClB,QAAA,QAEkB,4BAClB,QAAA,QAEkB,4BAClB,QAAA,QAEkB,4BAClB,QAAA,QAEwB,kCACxB,QAAA,QAEsB,gCACtB,QAAA,QAEiB,2BACjB,QAAA,QAEiB,2BACjB,QAAA,QAEe,yBACf,QAAA,QAEkB,4BAClB,QAAA,QAEuB,iCACvB,QAAA,QAE8B,wCAC9B,QAAA,QAEiB,2BACjB,QAAA,QAEgB,0BAChB,QAAA,QAEmB,6BACnB,QAAA,QAEiB,2BACjB,QAAA,QAEgB,0BAChB,QAAA,QAEc,wBACd,QAAA,QAEoB,8BACpB,QAAA,QAEkB,4BAClB,QAAA,QAEgB,0BAChB,QAAA,QAEyB,mCACzB,QAAA,QAEyB,mCACzB,QAAA,QAE0B,oCAC1B,QAAA,QAEuB,iCACvB,QAAA,QAEoB,8BACpB,QAAA,QAEgB,0BAChB,QAAA,QAEgB,0BAChB,QAAA,QAEgB,0BAChB,QAAA,QAEe,yBACf,QAAA,QAEc,wBACd,QAAA,QAEgB,0BAChB,QAAA,QAEgB,0BAChB,QAAA,QAEiB,2BACjB,QAAA,QAEkB,4BAClB,QAAA,QAEe,yBACf,QAAA,QAEgB,0BAChB,QAAA,QAEoB,8BACpB,QAAA,QAEe,yBACf,QAAA,QAEgB,0BAChB,QAAA,QAEe,yBACf,QAAA,QAEe,yBACf,QAAA,QAEiB,2BACjB,QAAA,QAEc,wBACd,QAAA,QAEkB,4BAClB,QAAA,QAEkB,4BAClB,QAAA,QAE2B,qCAC3B,QAAA,QAE2B,qCAC3B,QAAA,QAE4B,sCAC5B,QAAA,QAEyB,mCACzB,QAAA,QAEU,oBACV,QAAA,QAEgB,0BAChB,QAAA,QAEc,wBACd,QAAA,QAEc,wBACd,QAAA,QAEoB,8BACpB,QAAA,QAEoB,8BACpB,QAAA,QAEc,wBACd,QAAA,QAEmB,6BACnB,QAAA,QAEoB,8BACpB,QAAA,QAEuB,iCACvB,QAAA,QAEuB,iCACvB,QAAA,QAEwB,kCACxB,QAAA,QAEqB,+BACrB,QAAA,QAEkB,4BAClB,QAAA,QAEkB,4BAClB,QAAA,QAEY,sBACZ,QAAA,QAEW,qBACX,QAAA,QAEa,uBACb,QAAA,QAEkB,4BAClB,QAAA,QAEc,wBACd,QAAA,QAEgB,0BAChB,QAAA,QAEa,uBACb,QAAA,QAEc,wBACd,QAAA,QAEmB,6BACnB,QAAA,QAEkB,4BAClB,QAAA,QAEgB,0BAChB,QAAA,QAEe,yBACf,QAAA,QAEgB,0BAChB,QAAA,QAEgB,0BAChB,QAAA,QAEgB,0BAChB,QAAA,QAEU,oBACA,oBACV,QAAA,QAEc,wBACd,QAAA,QAEqB,+BACrB,QAAA,QAEc,wBACd,QAAA,QAEe,yBACf,QAAA,QAEU,oBACV,QAAA,QAEU,oBACV,QAAA,QAEY,sBACZ,QAAA,QAEiB,2BACjB,QAAA,QAEW,qBACX,QAAA,QAEY,sBACZ,QAAA,QAEe,yBACf,QAAA,QAEiB,2BACjB,QAAA,QAEqB,+BACrB,QAAA,QAEqB,+BACrB,QAAA,QAEsB,gCACtB,QAAA,QAEmB,6BACnB,QAAA,QAEgB,0BAChB,QAAA,OAEkB,4BAClB,QAAA,QAEmB,6BACnB,QAAA,QAEgB,0BAChB,QAAA,QAEe,yBACf,QAAA,QAES,mBACT,QAAA,QAEW,qBACX,QAAA,QAEc,wBACd,QAAA,QAEe,yBACf,QAAA,QAEa,uBACb,QAAA,QAEc,wBACd,QAAA,QAEW,qBACX,QAAA,QAEe,yBACf,QAAA,QAES,mBACT,QAAA,QAEkB,4BAClB,QAAA,QAEoB,8BACpB,QAAA,QAEU,oBACV,QAAA,QAEe,yBACf,QAAA,QAEiB,2BACjB,QAAA,QAEkB,4BAClB,QAAA,QAEU,oBACV,QAAA,QAEW,qBACX,QAAA,QAEiB,2BACjB,QAAA,QAEiB,2BACjB,QAAA,QAEqB,+BACrB,QAAA,QAEkB,4BAClB,QAAA,QAEW,qBACX,QAAA,QAEe,yBACf,QAAA,QAEY,sBACZ,QAAA,QAEe,yBACf,QAAA,QAEU,oBACV,QAAA,QAEiB,2BACjB,QAAA,QAEiB,2BACjB,QAAA,QAES,mBACT,QAAA,QAEiB,2BACjB,QAAA,QAEe,yBACf,QAAA,QAEkB,4BAClB,QAAA,QAEkB,4BAClB,QAAA,QAEe,yBACf,QAAA,QAEiB,2BACjB,QAAA,QAEU,oBACV,QAAA"}
|
|
Before Width: | Height: | Size: 469 KiB |
2
dep/jquery/jquery.js
vendored
1
dep/spectre/css/spectre-exp.min.css
vendored
|
@ -1,597 +0,0 @@
|
||||||
/*! Spectre.css Icons v0.5.8 | MIT License | github.com/picturepan2/spectre */
|
|
||||||
.icon {
|
|
||||||
box-sizing: border-box;
|
|
||||||
display: inline-block;
|
|
||||||
font-size: inherit;
|
|
||||||
font-style: normal;
|
|
||||||
height: 1em;
|
|
||||||
position: relative;
|
|
||||||
text-indent: -9999px;
|
|
||||||
vertical-align: middle;
|
|
||||||
width: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon::before,
|
|
||||||
.icon::after {
|
|
||||||
content: "";
|
|
||||||
display: block;
|
|
||||||
left: 50%;
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon.icon-2x {
|
|
||||||
font-size: 1.6rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon.icon-3x {
|
|
||||||
font-size: 2.4rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon.icon-4x {
|
|
||||||
font-size: 3.2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.accordion .icon,
|
|
||||||
.btn .icon,
|
|
||||||
.toast .icon,
|
|
||||||
.menu .icon {
|
|
||||||
vertical-align: -10%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-lg .icon {
|
|
||||||
vertical-align: -15%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-arrow-down::before,
|
|
||||||
.icon-arrow-left::before,
|
|
||||||
.icon-arrow-right::before,
|
|
||||||
.icon-arrow-up::before,
|
|
||||||
.icon-downward::before,
|
|
||||||
.icon-back::before,
|
|
||||||
.icon-forward::before,
|
|
||||||
.icon-upward::before {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-bottom: 0;
|
|
||||||
border-right: 0;
|
|
||||||
height: .65em;
|
|
||||||
width: .65em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-arrow-down::before {
|
|
||||||
transform: translate(-50%, -75%) rotate(225deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-arrow-left::before {
|
|
||||||
transform: translate(-25%, -50%) rotate(-45deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-arrow-right::before {
|
|
||||||
transform: translate(-75%, -50%) rotate(135deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-arrow-up::before {
|
|
||||||
transform: translate(-50%, -25%) rotate(45deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-back::after,
|
|
||||||
.icon-forward::after {
|
|
||||||
background: currentColor;
|
|
||||||
height: .1rem;
|
|
||||||
width: .8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-downward::after,
|
|
||||||
.icon-upward::after {
|
|
||||||
background: currentColor;
|
|
||||||
height: .8em;
|
|
||||||
width: .1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-back::after {
|
|
||||||
left: 55%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-back::before {
|
|
||||||
transform: translate(-50%, -50%) rotate(-45deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-downward::after {
|
|
||||||
top: 45%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-downward::before {
|
|
||||||
transform: translate(-50%, -50%) rotate(-135deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-forward::after {
|
|
||||||
left: 45%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-forward::before {
|
|
||||||
transform: translate(-50%, -50%) rotate(135deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-upward::after {
|
|
||||||
top: 55%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-upward::before {
|
|
||||||
transform: translate(-50%, -50%) rotate(45deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-caret::before {
|
|
||||||
border-left: .3em solid transparent;
|
|
||||||
border-right: .3em solid transparent;
|
|
||||||
border-top: .3em solid currentColor;
|
|
||||||
height: 0;
|
|
||||||
transform: translate(-50%, -25%);
|
|
||||||
width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-menu::before {
|
|
||||||
background: currentColor;
|
|
||||||
box-shadow: 0 -.35em, 0 .35em;
|
|
||||||
height: .1rem;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-apps::before {
|
|
||||||
background: currentColor;
|
|
||||||
box-shadow: -.35em -.35em, -.35em 0, -.35em .35em, 0 -.35em, 0 .35em, .35em -.35em, .35em 0, .35em .35em;
|
|
||||||
height: 3px;
|
|
||||||
width: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-resize-horiz::before,
|
|
||||||
.icon-resize-horiz::after,
|
|
||||||
.icon-resize-vert::before,
|
|
||||||
.icon-resize-vert::after {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-bottom: 0;
|
|
||||||
border-right: 0;
|
|
||||||
height: .45em;
|
|
||||||
width: .45em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-resize-horiz::before,
|
|
||||||
.icon-resize-vert::before {
|
|
||||||
transform: translate(-50%, -90%) rotate(45deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-resize-horiz::after,
|
|
||||||
.icon-resize-vert::after {
|
|
||||||
transform: translate(-50%, -10%) rotate(225deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-resize-horiz::before {
|
|
||||||
transform: translate(-90%, -50%) rotate(-45deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-resize-horiz::after {
|
|
||||||
transform: translate(-10%, -50%) rotate(135deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-more-horiz::before,
|
|
||||||
.icon-more-vert::before {
|
|
||||||
background: currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
box-shadow: -.4em 0, .4em 0;
|
|
||||||
height: 3px;
|
|
||||||
width: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-more-vert::before {
|
|
||||||
box-shadow: 0 -.4em, 0 .4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-plus::before,
|
|
||||||
.icon-minus::before,
|
|
||||||
.icon-cross::before {
|
|
||||||
background: currentColor;
|
|
||||||
height: .1rem;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-plus::after,
|
|
||||||
.icon-cross::after {
|
|
||||||
background: currentColor;
|
|
||||||
height: 100%;
|
|
||||||
width: .1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-cross::before {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-cross::after {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-cross::before,
|
|
||||||
.icon-cross::after {
|
|
||||||
transform: translate(-50%, -50%) rotate(45deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-check::before {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-right: 0;
|
|
||||||
border-top: 0;
|
|
||||||
height: .5em;
|
|
||||||
transform: translate(-50%, -75%) rotate(-45deg);
|
|
||||||
width: .9em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-stop {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-stop::before {
|
|
||||||
background: currentColor;
|
|
||||||
height: .1rem;
|
|
||||||
transform: translate(-50%, -50%) rotate(45deg);
|
|
||||||
width: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-shutdown {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
border-top-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-shutdown::before {
|
|
||||||
background: currentColor;
|
|
||||||
content: "";
|
|
||||||
height: .5em;
|
|
||||||
top: .1em;
|
|
||||||
width: .1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-refresh::before {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
border-right-color: transparent;
|
|
||||||
height: 1em;
|
|
||||||
width: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-refresh::after {
|
|
||||||
border: .2em solid currentColor;
|
|
||||||
border-left-color: transparent;
|
|
||||||
border-top-color: transparent;
|
|
||||||
height: 0;
|
|
||||||
left: 80%;
|
|
||||||
top: 20%;
|
|
||||||
width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-search::before {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
height: .75em;
|
|
||||||
left: 5%;
|
|
||||||
top: 5%;
|
|
||||||
transform: translate(0, 0) rotate(45deg);
|
|
||||||
width: .75em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-search::after {
|
|
||||||
background: currentColor;
|
|
||||||
height: .1rem;
|
|
||||||
left: 80%;
|
|
||||||
top: 80%;
|
|
||||||
transform: translate(-50%, -50%) rotate(45deg);
|
|
||||||
width: .4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-edit::before {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
height: .4em;
|
|
||||||
transform: translate(-40%, -60%) rotate(-45deg);
|
|
||||||
width: .85em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-edit::after {
|
|
||||||
border: .15em solid currentColor;
|
|
||||||
border-right-color: transparent;
|
|
||||||
border-top-color: transparent;
|
|
||||||
height: 0;
|
|
||||||
left: 5%;
|
|
||||||
top: 95%;
|
|
||||||
transform: translate(0, -100%);
|
|
||||||
width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-delete::before {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-bottom-left-radius: .1rem;
|
|
||||||
border-bottom-right-radius: .1rem;
|
|
||||||
border-top: 0;
|
|
||||||
height: .75em;
|
|
||||||
top: 60%;
|
|
||||||
width: .75em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-delete::after {
|
|
||||||
background: currentColor;
|
|
||||||
box-shadow: -.25em .2em, .25em .2em;
|
|
||||||
height: .1rem;
|
|
||||||
top: .05rem;
|
|
||||||
width: .5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-share {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-radius: .1rem;
|
|
||||||
border-right: 0;
|
|
||||||
border-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-share::before {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-left: 0;
|
|
||||||
border-top: 0;
|
|
||||||
height: .4em;
|
|
||||||
left: 100%;
|
|
||||||
top: .25em;
|
|
||||||
transform: translate(-125%, -50%) rotate(-45deg);
|
|
||||||
width: .4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-share::after {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-bottom: 0;
|
|
||||||
border-radius: 75% 0;
|
|
||||||
border-right: 0;
|
|
||||||
height: .5em;
|
|
||||||
width: .6em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-flag::before {
|
|
||||||
background: currentColor;
|
|
||||||
height: 1em;
|
|
||||||
left: 15%;
|
|
||||||
width: .1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-flag::after {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-bottom-right-radius: .1rem;
|
|
||||||
border-left: 0;
|
|
||||||
border-top-right-radius: .1rem;
|
|
||||||
height: .65em;
|
|
||||||
left: 60%;
|
|
||||||
top: 35%;
|
|
||||||
width: .8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-bookmark::before {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-bottom: 0;
|
|
||||||
border-top-left-radius: .1rem;
|
|
||||||
border-top-right-radius: .1rem;
|
|
||||||
height: .9em;
|
|
||||||
width: .8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-bookmark::after {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-bottom: 0;
|
|
||||||
border-left: 0;
|
|
||||||
border-radius: .1rem;
|
|
||||||
height: .5em;
|
|
||||||
transform: translate(-50%, 35%) rotate(-45deg) skew(15deg, 15deg);
|
|
||||||
width: .5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-download,
|
|
||||||
.icon-upload {
|
|
||||||
border-bottom: .1rem solid currentColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-download::before,
|
|
||||||
.icon-upload::before {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-bottom: 0;
|
|
||||||
border-right: 0;
|
|
||||||
height: .5em;
|
|
||||||
transform: translate(-50%, -60%) rotate(-135deg);
|
|
||||||
width: .5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-download::after,
|
|
||||||
.icon-upload::after {
|
|
||||||
background: currentColor;
|
|
||||||
height: .6em;
|
|
||||||
top: 40%;
|
|
||||||
width: .1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-upload::before {
|
|
||||||
transform: translate(-50%, -60%) rotate(45deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-upload::after {
|
|
||||||
top: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-copy::before {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-bottom: 0;
|
|
||||||
border-radius: .1rem;
|
|
||||||
border-right: 0;
|
|
||||||
height: .8em;
|
|
||||||
left: 40%;
|
|
||||||
top: 35%;
|
|
||||||
width: .8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-copy::after {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-radius: .1rem;
|
|
||||||
height: .8em;
|
|
||||||
left: 60%;
|
|
||||||
top: 60%;
|
|
||||||
width: .8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-time {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-time::before {
|
|
||||||
background: currentColor;
|
|
||||||
height: .4em;
|
|
||||||
transform: translate(-50%, -75%);
|
|
||||||
width: .1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-time::after {
|
|
||||||
background: currentColor;
|
|
||||||
height: .3em;
|
|
||||||
transform: translate(-50%, -75%) rotate(90deg);
|
|
||||||
transform-origin: 50% 90%;
|
|
||||||
width: .1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-mail::before {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-radius: .1rem;
|
|
||||||
height: .8em;
|
|
||||||
width: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-mail::after {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-right: 0;
|
|
||||||
border-top: 0;
|
|
||||||
height: .5em;
|
|
||||||
transform: translate(-50%, -90%) rotate(-45deg) skew(10deg, 10deg);
|
|
||||||
width: .5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-people::before {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
height: .45em;
|
|
||||||
top: 25%;
|
|
||||||
width: .45em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-people::after {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-radius: 50% 50% 0 0;
|
|
||||||
height: .4em;
|
|
||||||
top: 75%;
|
|
||||||
width: .9em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-message {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-bottom: 0;
|
|
||||||
border-radius: .1rem;
|
|
||||||
border-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-message::before {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-bottom-right-radius: .1rem;
|
|
||||||
border-left: 0;
|
|
||||||
border-top: 0;
|
|
||||||
height: .8em;
|
|
||||||
left: 65%;
|
|
||||||
top: 40%;
|
|
||||||
width: .7em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-message::after {
|
|
||||||
background: currentColor;
|
|
||||||
border-radius: .1rem;
|
|
||||||
height: .3em;
|
|
||||||
left: 10%;
|
|
||||||
top: 100%;
|
|
||||||
transform: translate(0, -90%) rotate(45deg);
|
|
||||||
width: .1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-photo {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-radius: .1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-photo::before {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
height: .25em;
|
|
||||||
left: 35%;
|
|
||||||
top: 35%;
|
|
||||||
width: .25em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-photo::after {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-bottom: 0;
|
|
||||||
border-left: 0;
|
|
||||||
height: .5em;
|
|
||||||
left: 60%;
|
|
||||||
transform: translate(-50%, 25%) rotate(-45deg);
|
|
||||||
width: .5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-link::before,
|
|
||||||
.icon-link::after {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-radius: 5em 0 0 5em;
|
|
||||||
border-right: 0;
|
|
||||||
height: .5em;
|
|
||||||
width: .75em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-link::before {
|
|
||||||
transform: translate(-70%, -45%) rotate(-45deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-link::after {
|
|
||||||
transform: translate(-30%, -55%) rotate(135deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-location::before {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-radius: 50% 50% 50% 0;
|
|
||||||
height: .8em;
|
|
||||||
transform: translate(-50%, -60%) rotate(-45deg);
|
|
||||||
width: .8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-location::after {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
height: .2em;
|
|
||||||
transform: translate(-50%, -80%);
|
|
||||||
width: .2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-emoji {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-emoji::before {
|
|
||||||
border-radius: 50%;
|
|
||||||
box-shadow: -.17em -.1em, .17em -.1em;
|
|
||||||
height: .15em;
|
|
||||||
width: .15em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-emoji::after {
|
|
||||||
border: .1rem solid currentColor;
|
|
||||||
border-bottom-color: transparent;
|
|
||||||
border-radius: 50%;
|
|
||||||
border-right-color: transparent;
|
|
||||||
height: .5em;
|
|
||||||
transform: translate(-50%, -40%) rotate(-135deg);
|
|
||||||
width: .5em;
|
|
||||||
}
|
|
1
dep/spectre/css/spectre-icons.min.css
vendored
1
dep/spectre/css/spectre.min.css
vendored
50
eleventy.config.drafts.js
Normal 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
|
@ -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 we’re using addPlugin.
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO loading=eager and fetchpriority=high
|
||||||
|
let imageAttributes = {
|
||||||
|
alt,
|
||||||
|
sizes,
|
||||||
|
loading: "lazy",
|
||||||
|
decoding: "async",
|
||||||
|
};
|
||||||
|
return eleventyImage.generateHTML(metadata, imageAttributes);
|
||||||
|
});
|
||||||
|
};
|
146
eleventy.config.js
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
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 { EleventyRenderPlugin } = require("@11ty/eleventy");
|
||||||
|
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(EleventyRenderPlugin);
|
||||||
|
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: "/",
|
||||||
|
};
|
||||||
|
};
|
29
gulpfile.js
|
@ -1,29 +0,0 @@
|
||||||
const { src, dest, parallel } = require('gulp');
|
|
||||||
const include = require('gulp-include');
|
|
||||||
|
|
||||||
function html() {
|
|
||||||
return src('static/*')
|
|
||||||
.pipe(include())
|
|
||||||
.pipe(dest('dist'))
|
|
||||||
}
|
|
||||||
|
|
||||||
function dep() {
|
|
||||||
return src(['dep/**/*'])
|
|
||||||
.pipe(dest('dist/dep'));
|
|
||||||
}
|
|
||||||
|
|
||||||
function assets() {
|
|
||||||
return src(['assets/**/*'])
|
|
||||||
.pipe(dest('dist'));
|
|
||||||
}
|
|
||||||
|
|
||||||
function rules() {
|
|
||||||
return src(['vault/**/*'])
|
|
||||||
.pipe(dest('dist'));
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.html = html;
|
|
||||||
exports.dep = dep;
|
|
||||||
exports.assets = assets;
|
|
||||||
exports.rules = rules;
|
|
||||||
exports.default = parallel(html, dep, assets, rules);
|
|
24
netlify.toml
Normal 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"
|
9949
package-lock.json
generated
63
package.json
|
@ -1,20 +1,47 @@
|
||||||
{
|
{
|
||||||
"name": "kobold-vault",
|
"name": "eleventy-base-blog",
|
||||||
"version": "1.0.0",
|
"version": "8.0.0",
|
||||||
"description": "Les vieux projets de kobold-city",
|
"description": "A starter repository for a blog web site using the Eleventy site generator.",
|
||||||
"main": "gulpfile.js",
|
"scripts": {
|
||||||
"dependencies": {
|
"build": "npx @11ty/eleventy",
|
||||||
"gulp": "^4.0.2",
|
"build-ghpages": "npx @11ty/eleventy --pathprefix=/eleventy-base-blog/",
|
||||||
"gulp-include": "^2.4.1"
|
"start": "npx @11ty/eleventy --serve --quiet",
|
||||||
},
|
"debug": "DEBUG=Eleventy* npx @11ty/eleventy",
|
||||||
"scripts": {
|
"debugstart": "DEBUG=Eleventy* npx @11ty/eleventy --serve --quiet",
|
||||||
"build": "gulp",
|
"benchmark": "DEBUG=Eleventy:Benchmark* npx @11ty/eleventy"
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
},
|
||||||
},
|
"repository": {
|
||||||
"repository": {
|
"type": "git",
|
||||||
"type": "git",
|
"url": "git://github.com/11ty/eleventy-base-blog.git"
|
||||||
"url": "https://git.kobold.cafe/jdr/vault"
|
},
|
||||||
},
|
"author": {
|
||||||
"author": "",
|
"name": "Zach Leatherman",
|
||||||
"license": "CC BY-SA"
|
"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"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
212
public/css/index.css
Normal file
|
@ -0,0 +1,212 @@
|
||||||
|
:root {
|
||||||
|
--color-gray-20: #e0e0e0;
|
||||||
|
--color-gray-50: #C0C0C0;
|
||||||
|
--color-gray-90: #333;
|
||||||
|
|
||||||
|
/* --text-color is assigned to --color-gray-_ above */
|
||||||
|
--text-color-link: #f87000;
|
||||||
|
--text-color-link-active: #f89000;
|
||||||
|
--text-color-link-visited: #f87000;
|
||||||
|
|
||||||
|
--background-color: #fff;
|
||||||
|
--background-menu: #aea8d9;
|
||||||
|
|
||||||
|
--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: Arial Black, 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/back.png");
|
||||||
|
background-color: rgb(90, 78, 177);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 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);
|
||||||
|
}
|
||||||
|
a[href]:visited {
|
||||||
|
color: var(--text-color-link-visited);
|
||||||
|
}
|
||||||
|
a[href]:hover,
|
||||||
|
a[href]:active {
|
||||||
|
color: var(--text-color-link-active);
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
opacity: 75%;
|
||||||
|
border-left: 3px solid currentColor;
|
||||||
|
padding-left: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
main,
|
||||||
|
.card,
|
||||||
|
#sidebar ul > li,
|
||||||
|
#links ul > li {
|
||||||
|
border:2px outset;
|
||||||
|
border-color: #d8d5ec;
|
||||||
|
padding:12px;
|
||||||
|
margin:12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebar > ul,
|
||||||
|
#links > ul {
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
background-color: var(--background-menu);
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#titlebar {
|
||||||
|
background: rgb(90, 78, 177);
|
||||||
|
background: linear-gradient(90deg, rgba(90, 78, 177, 1) 0%, rgba(182, 143, 203, 1) 100%);
|
||||||
|
color:white;
|
||||||
|
text-shadow: 1px 0px 0px rgba(0,0,0,1);
|
||||||
|
margin:0px 1px;
|
||||||
|
padding: 0px 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
main #page {
|
||||||
|
background-color: var(--background-color);
|
||||||
|
padding-left: 24px;
|
||||||
|
padding-right: 24px;
|
||||||
|
line-height:1.5rem;
|
||||||
|
flex-grow:1;
|
||||||
|
border: 2px inset;
|
||||||
|
border-color: #d8d5ec;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card,
|
||||||
|
#sidebar ul>li,
|
||||||
|
#links ul>li {
|
||||||
|
color:black;
|
||||||
|
background-color: var(--background-menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebar ul > li,
|
||||||
|
#links ul > li {
|
||||||
|
list-style: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#more-info ol > li,
|
||||||
|
#more-info ul > li {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebar ul > li li,
|
||||||
|
#links ul>li li,
|
||||||
|
#more-info li {
|
||||||
|
padding:0px;
|
||||||
|
margin:0px;
|
||||||
|
font-weight: normal;
|
||||||
|
border:0;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.nav,
|
||||||
|
#sidebar ul li ul,
|
||||||
|
#links ul li ul,
|
||||||
|
#more-info ol {
|
||||||
|
padding:0;
|
||||||
|
margin:0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebar ul li a,
|
||||||
|
#links ul li a,
|
||||||
|
#more-info ol li a {
|
||||||
|
display:block;
|
||||||
|
width:100%;
|
||||||
|
text-decoration:none;
|
||||||
|
color:black!important;
|
||||||
|
padding:3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#links ul li > p {
|
||||||
|
padding: 3px;
|
||||||
|
margin:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebar ul li li a,
|
||||||
|
#links ul li 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,
|
||||||
|
#links 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
text-align:right;
|
||||||
|
margin:12px;
|
||||||
|
}
|
||||||
|
|
BIN
public/favicon.png
Normal file
After Width: | Height: | Size: 520 B |
BIN
public/fonts/NiseSegaSonic.ttf
Normal file
BIN
public/fonts/vipnagorgialla.otf
Normal file
BIN
public/img/back.png
Normal file
After Width: | Height: | Size: 112 KiB |
BIN
public/img/cc-by-sa.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
public/img/logo.png
Normal file
After Width: | Height: | Size: 271 KiB |
|
@ -1,8 +0,0 @@
|
||||||
<nav aria-label="breadcrumb">
|
|
||||||
<ol class="breadcrumb">
|
|
||||||
<li class="breadcrumb-item"><a href="https://kazhnuz.space">kazhnuz.space</a>
|
|
||||||
</li><li class="breadcrumb-item" aria-current="page">
|
|
||||||
<span class="active"><i class="fa fa-vault" aria-hidden="true"></i> Vault</span>
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</nav>
|
|
|
@ -1,18 +0,0 @@
|
||||||
<footer>
|
|
||||||
<div class="footer-collumns">
|
|
||||||
<div>
|
|
||||||
<p>Les contenus sont diffusé sous licence Creative Common Attribution - Partage à l'Identique 4.0 - hors mention contraire.</p>
|
|
||||||
<p>Ces licences vous autorise à partager et copier mes travaux, tant que vous me citiez en source, et que vous autorisez la même chose pour les travaux qui en seraient dérivés. N'hésitez pas à partager ! <i class="text-red fa fa-heart" aria-hidden="true"></i></p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<p>Ce site est propulsé par <a href="https://wordpress.org">Wordpress</a></p>
|
|
||||||
<p>Le <a href="https://git.kobold.cafe/kazhnuz.space/kspace-wordpress-theme">theme wordpress</a> de ce site est disponible sous licence CC BY-SA et GPL v3. Il utilise <a href="https://picturepan2.github.io/spectre/">Spectre</a> et <a href="https://forkawesome.github.io/Fork-Awesome/">Fork-Awesome</a>.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<p>Ce site fait partie de <a href="https://kazhnuz.space">kazhnuz.space</a></p>
|
|
||||||
<p>Kazhnuz Space et les différents sites/services qui le composent sont fourni "tel-quel", sans garantie. Cependant, toute critique, remarque, etc. est la bienvenue. Pour cela, vous pouvez me contacter à kazhnuz [at] kobold [point] cafe ou sur les réseaux sociaux visible plus haut</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
|
@ -1,16 +0,0 @@
|
||||||
<header id="page-header">
|
|
||||||
<nav class="toolbar flex-that">
|
|
||||||
<ul></ul>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="https://kazhnuz.space" class="btn btn-navbar">
|
|
||||||
Retour au blog
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="logo-area">
|
|
||||||
<h1><a href="https://kazhnuz.space"><img src="img/logo.png" alt="Kazhnuz"/></a></h1>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
|
@ -1,13 +0,0 @@
|
||||||
<!-- mon icon -->
|
|
||||||
<link rel="shortcut icon" href="img/favicon.png">
|
|
||||||
|
|
||||||
<!-- dependencies -->
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600,800&display=swap" rel="stylesheet">
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Amatic+SC&display=swap" rel="stylesheet">
|
|
||||||
<link rel="stylesheet" href="dep/spectre/css/spectre.min.css">
|
|
||||||
<link rel="stylesheet" href="dep/fork-awesome/css/fork-awesome.min.css">
|
|
||||||
<script src="dep/jquery/jquery.js"></script>
|
|
||||||
<script src="dep/bootstrap/js/bootstrap.min.js"></script>
|
|
||||||
|
|
||||||
<!-- style and js -->
|
|
||||||
<link rel="stylesheet" href="style.css">
|
|
|
@ -1,8 +0,0 @@
|
||||||
<aside class="sidebar">
|
|
||||||
<div class="card card-primary">
|
|
||||||
<div class="card-header"><i class="fa fa-gamepad" aria-hidden="true"></i> Sonic</div>
|
|
||||||
<ul class="card-menu">
|
|
||||||
<li><a href='/monado-adventure/'>Sonic Monado Adventure</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</aside>
|
|
|
@ -1,45 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="fr">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Kazhnuz' Vault</title>
|
|
||||||
|
|
||||||
<!-- meta -->
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="author" content="">
|
|
||||||
|
|
||||||
<!--=include includes/_links.html -->
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="wrapper">
|
|
||||||
<!--=include includes/_headerbar.html -->
|
|
||||||
<div class="container-blog">
|
|
||||||
<main style="padding-bottom:3rem;">
|
|
||||||
<!--=include includes/_breadcrumb.html -->
|
|
||||||
<article>
|
|
||||||
<h1 class="page-title">Kazhnuz' Vault</h1>
|
|
||||||
<div>
|
|
||||||
<p>Cette page est une petite page pour organiser un peu tout mon
|
|
||||||
bazar et rendre plus simple à lire les vieux trucs que je voudrait
|
|
||||||
poster.</p>
|
|
||||||
|
|
||||||
<p>Vous y trouverez à la fois des vieux projets, des vieux concepts
|
|
||||||
d'histoire, et d'autres petits trucs que j'ai fait pour le fun.</p>
|
|
||||||
|
|
||||||
<p>Tous ces contenus sont utilisable sous les termes CC BY-SA.
|
|
||||||
(Creative Common Attribution - Partage à l'Identique). Certains de
|
|
||||||
ces trucs reprennent cependant des éléments privateurs (venant de
|
|
||||||
licences de JV, par exemple) en tant que fanfictions. Les aspects
|
|
||||||
opensources ne sont que ceux que j'ai inventés.</p>
|
|
||||||
|
|
||||||
<p>Ce site utilise docsify, un excellent moteur de documentation.</p>
|
|
||||||
</div>
|
|
||||||
</article>
|
|
||||||
</main>
|
|
||||||
<!--=include includes/_sidebar.html -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--=include includes/_footer.html -->
|
|
||||||
</body>
|
|
||||||
</html>
|
|
2187
static/style.css
|
@ -1,92 +0,0 @@
|
||||||
ANTICHTON
|
|
||||||
- Présentation
|
|
||||||
- Les deux planètes
|
|
||||||
- **Peuples**
|
|
||||||
- Les humains
|
|
||||||
- Les Caith Sith -- Les Manticore
|
|
||||||
- Les Kobolds -- Les Dragons
|
|
||||||
- Les Harpies -- Les Gryphons
|
|
||||||
- les Zytiron -- Les Krakens
|
|
||||||
- **Politique**
|
|
||||||
- La Confédération Planétaire de Chton
|
|
||||||
- Les royaumes d'Antichton
|
|
||||||
- Les suiveurs des Anciens
|
|
||||||
- Les forbans spaciaux
|
|
||||||
- L'Ordre de l'Humanité
|
|
||||||
- **Géographie**
|
|
||||||
- La Terre
|
|
||||||
- Antichton
|
|
||||||
- Les autres planètes
|
|
||||||
- **Histoire**
|
|
||||||
- Epoque des Anciens Peuples
|
|
||||||
- La grande séparation
|
|
||||||
- La redécouverte
|
|
||||||
- Epoque contemporaine
|
|
||||||
|
|
||||||
AESTRUS
|
|
||||||
- Presentation
|
|
||||||
- La planète Aestrus
|
|
||||||
- Les espèces d'Aestrus
|
|
||||||
- **Dieux et Majeur**
|
|
||||||
- La déesse Hesper
|
|
||||||
- L'énergie stygienne
|
|
||||||
- Les 16 éléments
|
|
||||||
- Les anges
|
|
||||||
- Politique
|
|
||||||
- Le Magister
|
|
||||||
- La fédération des comptoirs
|
|
||||||
- L'Empire Skelfing
|
|
||||||
- Les peuples oubliés
|
|
||||||
- Les Améliorés
|
|
||||||
- **Géographie**
|
|
||||||
- Le nord de Cardia
|
|
||||||
- Le royaume d'Io :: Inspiration Europe
|
|
||||||
- Duchées de ????? :: Inspiration
|
|
||||||
- Les terres d'Anvêbres
|
|
||||||
- Les terres d'Etheriel
|
|
||||||
- L'ile d'Agonia
|
|
||||||
- **Histoire**
|
|
||||||
-
|
|
||||||
|
|
||||||
ERRATUM
|
|
||||||
- Présentation
|
|
||||||
- Le monde magique
|
|
||||||
- Les espèces
|
|
||||||
- **La magie**
|
|
||||||
- L'éclat
|
|
||||||
- Les vertues
|
|
||||||
- Les douzes signes
|
|
||||||
- Les huits magies
|
|
||||||
- L'alchimies
|
|
||||||
- Dieux et demi-dieux
|
|
||||||
- **Politique**
|
|
||||||
- L'organisme international des mages
|
|
||||||
- Liens avec les états réguliers
|
|
||||||
- Les gardiens
|
|
||||||
- La classification des dangers
|
|
||||||
- Frontière et les cultistes
|
|
||||||
- Les arbitres
|
|
||||||
- Frontières
|
|
||||||
- Les cultistes
|
|
||||||
- Les organisations criminelles
|
|
||||||
- L'enseignement de la magie
|
|
||||||
- **Les lieux magiques**
|
|
||||||
- Les terres de l'Arbitre
|
|
||||||
- Les ??? des Héraults
|
|
||||||
- ...
|
|
||||||
- **Histoire**
|
|
||||||
- L'ère des dieux
|
|
||||||
- Les temps anciens
|
|
||||||
- L'époque nouvelle
|
|
||||||
- La guerre des vertues
|
|
||||||
- L'époque moderne
|
|
||||||
- ...
|
|
||||||
|
|
||||||
IMPERIUM-PORCORUM
|
|
||||||
- (todo)
|
|
||||||
|
|
||||||
DIEGESE
|
|
||||||
- (todo)
|
|
||||||
|
|
||||||
NOUVELLE FRONTIERE
|
|
||||||
- (todo)
|
|
|
@ -1,13 +0,0 @@
|
||||||
# Sonic Monado Adventure - Généralités
|
|
||||||
|
|
||||||
Ce document est une mise au propre du scénario et de quelques éléments de design général que j’avais prévu pour mon projet de fangame « Project Millenium » (que j'ai nommé ici Sonic Monado Adventure), qui était un fangame Sonic en 2D, inspiré cependant de l’ère Adventure (pensez Sonic FGX, ou Sonic Fusion). Ce document contiendra donc tout ce que j’avais fait niveau scénario, backstory, personnages, etc. Il présentera aussi de manière générale les niveaux qui existaient dans le jeux, soit 7 niveaux de 3 acts, et 2 de 4 acts.
|
|
||||||
|
|
||||||
Le projet devait se dérouler entièrement dans la base de Monado Prime, une biosphère artificielle. Les personnages présents étaient *Sonic the Hedgehog*, *Miles « Tails » Prower*, *Knuckles the Echidna*, *Shadow the Hedgehog*, *Amy Rose* et *Cream the Rabbit*.
|
|
||||||
|
|
||||||
Le but n'est pas forcément de révolutionner la licence, et le projet n'hésitait pas à être fortement référentiel (par exemple de nombreuses structures du jeu sont inspirée directement de Sonic Adventure ou Sonic Adventure 2), étant un petit plaisir que je me faisais.
|
|
||||||
|
|
||||||
## Présentation du projet
|
|
||||||
|
|
||||||
*Sonic : Monado Adventure* était un fangame Sonic the Hedgehog inspiré des Sonic Adventure, mais en deux dimension. Le but était de mélanger avec un *Sonic Advance* les particularités et les possibilités d'un Sonic Adventure en terme de narration (une histoire construite avec des enjeux, du développement de personnage, ordre des stages dictés par le scénario et non scénario dicté par l'ordre des stages) ainsi que l'aspect plus "RPG" de ces titres (nouvelles capacités à débloquer, HUB world) avec le style générale d'un Sonic Advance.
|
|
||||||
|
|
||||||
Le jeux reprenait quelques idées des jeux Rush (notamment de Rush Adventure), tel que les matériaux ou les tableaux de missions, et s’inspirait légèrement de quelques tentatives de recréer en 2D des jeux Adventure-like ou de jeux similaires.
|
|
|
@ -1 +0,0 @@
|
||||||
- [Retour](https://vault.kobold.city/)
|
|
|
@ -1,19 +0,0 @@
|
||||||
- [Gameplay](bases/gameplay.md)
|
|
||||||
|
|
||||||
- [Histoire](bases/histoire.md)
|
|
||||||
|
|
||||||
- [Zones](bases/zones.md)
|
|
||||||
|
|
||||||
- [Personnages non-jouables](bases/pnj.md)
|
|
||||||
|
|
||||||
- **Lore**
|
|
||||||
|
|
||||||
- [Univers](lore/univers.md)
|
|
||||||
|
|
||||||
- [Projet Millenium](lore/projet-millenium.md)
|
|
||||||
|
|
||||||
- **Histoires**
|
|
||||||
|
|
||||||
- [Sonic the Hedgehog](stories/sonic.md)
|
|
||||||
|
|
||||||
- [Miles "Tails" Prower](stories/tails.md)
|
|
|
@ -1,43 +0,0 @@
|
||||||
# Histoire et thematiques
|
|
||||||
|
|
||||||
L'histoire de MOnado Adventure se passe dans la base de Monado Prime, une biosphere artificielle en circuit fermé habitée conçue en partenariat entre les Fédérations Unis, G.U.N. et l'entreprise Rimlight. Cette base est construite sur l'île rocheuse de Fortitude Rock, une île quasi-désert située dans les zones polaires. Présentant de nombreux espaces de vies et biomes artificiels, la base est considérée comme l'example à suivre pour les futurs conquêtes spatiales. La base est autonome sauf en lumière (elle a besoin de la lumière du soleil pour faire pousser les plantes), c'est à dire qu'elle est capable de produire elle même tout ce dont elle a besoin en terme d'eau, nourriture et air.
|
|
||||||
|
|
||||||
Sonic, Tails et Amy (équipe de début de jeu) arrivent sur l'île suite à un appel du *Directeur de Monado Prime*, qui est inquiêt de l'arrivée de robot d'Eggman dans certains biomes de l'île. Il a peur que le docteur tente de s'emparer de la base et d'en faire un outil de conquête à la MeteorTech. Il a alors demandé de l'aide aux trois mobiens pour qu'ils se débarrassent de la présence du savant fou dans la biosphère.
|
|
||||||
|
|
||||||
Cependant, la base recèle bien des mystères, et Sonic & compagnies comprendront bien vite qu'on ne peut comprendre la menace présente que subit la biosphère, sans découvrir tout son passé...
|
|
||||||
|
|
||||||
## Rôles dans l'histoire
|
|
||||||
|
|
||||||
L'un des principes de Sonic Monado Adventure est que comme dans Sonic Adventure, chaque personnage à un point de vue différent sur l'intrigue, et a un objectif et un rôle narratif différents. Le rôle de chaque personnage sera
|
|
||||||
|
|
||||||
- **Sonic** doit empêcher le plan d'Eggman de porter ses fruits, et évitera les intrigues secondaires. Son histoire portera sur les dégats que fait Eggman, et la capacité de Sonic à l'empêcher.
|
|
||||||
|
|
||||||
- **Tails** doit sauver les habitants de la ville. Sonic histoire portera sur la différence entre un héros et un sauveteur, et lui fera gagner en autonomie en le montrant *complémentaire* avec Sonic.
|
|
||||||
|
|
||||||
- **Amy** va se pencher sur certains des soutiens qu'Eggman possède dans l'île, et sur la situation du jeune Ankou. Son histoire portera sur le combat contre les injustices existantes, et sur la manipulation.
|
|
||||||
|
|
||||||
- **Knuckles** va ignorer totalement la base (la considérant comme juste un nouveau jouet des humains sur leur planète), mais tentera de purifier l'énergie chaotique de l'île. L'histoire se penchera sur le lore des Erebiens.
|
|
||||||
|
|
||||||
- **Shadow** va faire des recherches sur l'incident de Monado Prime, et chercher le traitre ayant fourni les "clefs" de l'ex-centrale chaotique à Eggman. Son histoire portera sur le fanatismes et la manière dont on peut projeter nos croyances dans la réalité.
|
|
||||||
|
|
||||||
- **Cream** va tenter d'aller retrouver Gemerl, qui a disparu lors de l'attaque d'Eggman. Son histoire montre que cette petite lapine est précieuse et courageuse.
|
|
||||||
|
|
||||||
## Inspirations/Références
|
|
||||||
|
|
||||||
Ici je compile quelques unes des inspirations que je voulais mettre en avant et réutiliser pour construire mon histoire. Ce sont des lignes directrices qui pouvaient m'aider à miser sur certains aspects de l'histoire.
|
|
||||||
|
|
||||||
### Légendes et histoire
|
|
||||||
|
|
||||||
- Tout le concept d'Hybris/Phronésis sont inspiré des valeurs grecques. L’Empire Erebiens (dont le coeur du pouvoir est l'Hybris Altar) chute à cause de son intempérance et de leur orgueil, comme les héros grecs. Le passage de la ville de Phronésis à l'autel d'Hybris représentent l'abondon de la prudence/sagesse dans la quête du grandiose (qui est ici moqué). Le jeu est entièrement fondé sur la paranoïa qui prend les personnes en situation de pouvoir.
|
|
||||||
|
|
||||||
- Les quatres épreuves de Morrigans sont basé sur les quatre vertues telle que présentées par Platon.
|
|
||||||
|
|
||||||
- L'histoire de Monado Prime est inspiré de l'île d'Ys : Gradlon était le roi d'Ys (d'où Ys Gradlon), et Dahut celle qui a laissé le diable entrer dans l’île, la condamnant à sombrer sous les flots. Une légende raconte que le jour ou Paris sombrera sous les flots, l’île d’Ys remontera, ce qui représente un peu les propos du jeu, puisque les technologies Erebienne sont ramenée par Eggman pour faire sombrer symboliquement les capitales du monde.
|
|
||||||
|
|
||||||
- Le nom des bases monado est basé sur les monade de Leibniz, mais en vrai c'est plus pour la classe.
|
|
||||||
|
|
||||||
### Sciences
|
|
||||||
|
|
||||||
- La base de Monado Prime est inspirée des projets de biospheres comme [Biosphère 2](https://fr.wikipedia.org/wiki/Biosph%C3%A8re_II), [BIOS-3](https://en.wikipedia.org/wiki/BIOS-3) ou [MELiSSA](https://en.wikipedia.org/wiki/MELiSSA).
|
|
||||||
|
|
||||||
- L’idée de l’environnement interdit après une explosion de centrale, avec contamination est assez aisé à deviner, je suppose :p
|
|
|
@ -1,44 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Sonic Monado Adventure</title>
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
|
||||||
<meta name="description" content="Description">
|
|
||||||
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
|
||||||
<link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/vue.css">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="app"></div>
|
|
||||||
<script>
|
|
||||||
window.$docsify = {
|
|
||||||
name: 'Sonic Monado Adventure',
|
|
||||||
repo: '',
|
|
||||||
loadSidebar: true,
|
|
||||||
loadNavbar: true,
|
|
||||||
subMaxLevel: 2,
|
|
||||||
// complete configuration parameters
|
|
||||||
search: {
|
|
||||||
maxAge: 86400000, // Expiration time, the default one day
|
|
||||||
paths: [], // or 'auto'
|
|
||||||
placeholder: 'Chercher',
|
|
||||||
|
|
||||||
noData: 'Aucun résultat',
|
|
||||||
|
|
||||||
// Headline depth, 1 - 6
|
|
||||||
depth: 2,
|
|
||||||
|
|
||||||
hideOtherSidebarContent: false, // whether or not to hide other sidebar content
|
|
||||||
},
|
|
||||||
requestHeaders: {
|
|
||||||
'cache-control': 'no-cache'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
|
|
||||||
<script src="//unpkg.com/docsify/lib/plugins/search.min.js"></script>
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/docsify-tabs@1"></script>
|
|
||||||
<script src="https://unpkg.com/docsify-plugin-flexible-alerts"></script>
|
|
||||||
<script src="//unpkg.com/docsify/lib/plugins/emoji.min.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,57 +0,0 @@
|
||||||
# Sonic Monado Adventure - Univers et lore
|
|
||||||
|
|
||||||
> [!NOTE]
|
|
||||||
> Tout ce lore n'avait pas pour objectif d'être constamment explicitement dans le jeu. Il servait à nourrir surtout mon écriture, quelques dialogues que je pourrais mettre aux PNJ, et si je le sentais, créer un codex avec toutes ces informations.
|
|
||||||
|
|
||||||
Comme Sonic Adventure et Sonic Adventure 2, le projet visait à introduire sa propre histoire tout en étant lié à des éléments déjà existant des jeux précédant, afin de créer de la continuité sans verser dans l’histoire qui n’existe que pour expliquer des trucs des jeux précédant. Cependant, contrairement à SA/SA2, Sonic : Monado Adventure utilise explicitement un monde pour décrire l'univers de Sonic, ici le two-world, afin de l'utiliser pour construire son intrigue et les différents éléments qui vont en faire un jeu.
|
|
||||||
|
|
||||||
Le but de cette page est donc de décrire un peu ici les éléments du monde de Sonic utilisés et remixés pour former l'univers de ce jeu.
|
|
||||||
|
|
||||||
## Le Two-World
|
|
||||||
|
|
||||||
> [!NOTE]
|
|
||||||
> De nombreux éléments de cette vision du two-world viennent d'une autre version antérieur de mon envie de faire un "Sonic Advance+Adventure" : Sonic Adventure 0. Ce projet avait comme principe d'être une "désadataptation" des premiers épisodes de Sonic X, tentant d'imaginer ce qu'aurait pu être un jeu qui aurait inspiré cette saison 1 pour dans Sonic X (même si en vrai vers la fin ça devenait assez différent). "L'incident de Christmas Island" était le scénario de ce jeu, et le nom de Christmas Island sert pour donner l'idée aux humains que Sonic viendrait de cette île, puisque c'est ici qu'il a été vu pour la première fois.
|
|
||||||
|
|
||||||
Sonic : Monado Adventure se base au niveau de son univers sur le concept des deux mondes (à la Sonic X/IDWSonic… et avec un brin de stargate dedans) : Deux "mondes" (ici des planètes d'un même système planétaire), et les personnages peuvent passer de l'un à l'autre. Ces deux mondes sont ceux de la Terre, une planète organisée et peuplée surtout par les humains, et une planète surnommée nommé le "monde des animaux" (Mobius), peuplé surtout par des animaux anthropomorphiques intelligents. Mobius est dans ce lore un peu un équivalent de Mars dans notre système planétaire, et les deux planètes sont assez proche.
|
|
||||||
|
|
||||||
Le passage d'un monde à l'autre est conduit par l'existence de *Super Warp Ring*, des immenses anneaux qui ont le pouvoir d'être des passage entre les différentes planètes du système solaire, restent d'une ancienne civilisation. Ils étaient inactif depuis des milliers d'année quand les *expéditions interdimensionnelles* d'il y a 50 ans, puis *l'incident de Christmas Island* sur Terre ont provoqué leur réactivation, et la connexion des deux mondes. Depuis, les deux mondes se connaissent, et doivent coéxister, non sans quelques… réserves, parfois.
|
|
||||||
|
|
||||||
### Les quatres grandes civilisations
|
|
||||||
|
|
||||||
Les quatres grandes civilisations sont les quatres peuples qui ont atteint la possibilité d'être des civilisations interplanétaires, et qui ont succèssivements réussi à construire des créations hors de leur planète d'origines. Les quatres proviennent de Mobius, mais les humains sont en phase de devenir la *cinquième grande civilisation*, même si leur technologies spatiales manquent encore de capacités
|
|
||||||
|
|
||||||
- La **première grande civilisation** (-10 000 ans) est encore peu étudiée, parce qu'une grande partie de leurs créations ont disparu du fait de l'érosions. Ils ont construit de nombreux bâtiments dans tout le système solaire, et sont surnommé les premiers. Les plus grands restes de leur civilisations sur les deux planètes habitées seront insinué comme étant les *temples de gaïa*. Ils sont à l'origine des Warp Rings. Ils sont surnommés les *Premiers* et autres surnoms vagues du genre.
|
|
||||||
|
|
||||||
- La **seconde grande civilisation** (-9000 ans) est une civilisation centralisée, qui a surtout vécu sur Mobius. Elle sera insinuée comme étant un équivalent des *Trolls* d'ArchieSonic, mais sans plus de détails.
|
|
||||||
|
|
||||||
- La **troisième grande civilisation** (-7500 ans) est la *civilisation d'Erebe*, à l'origine des premières constructions explotant les *veines chaotiques*. Cette civilisation est le coeur du scénario de Knuckles, et Monado Prime est construit sur une faille utilisé par cette civilisation.
|
|
||||||
|
|
||||||
- La **quatrième grande civilisation** (-5000 ans) est la civilisation qui est à l'origine d'Angel Island et de robots de guerres nommée les Gizoïd. Il était prévu d'en faire une civilisation qui a réduit en esclavage le peuple des échidnés (le Knuckles Clan tel qu'on le voit dans Adventure sont des descendant d'esclave s'étant révolté durant la chute de cette civilisation, et récupérant les CE pour affronter des descendants de la civilisation).
|
|
||||||
|
|
||||||
### Le recontact
|
|
||||||
|
|
||||||
Le monde des animaux a été en partie redécouvert durant les grands débuts de la conquête spatiale terrestre, il y a de cela ~75 ans. La découverte des warp rings inactifs, le lancement de futurs projets comme le projet ARK, et l'exploration de Mobius par les premiers humains (dont le jeune professeur Gerald Robotnik, qui étudiera notamment beaucoup la similarité sur Terres de ruines et de représentations sur Mobius présentant des échidnés).
|
|
||||||
|
|
||||||
Cependant, le recontact se brisera lors du durcissement de la ligne politique terrestres il y a 50 ans, du à la fois de troubles dans les Federations Unis naissantes, et du shutdown de l'ARK du à des suspiscion envers le professeur Gérald Robotnik et l'incident de l'activation d'un robot antique.
|
|
||||||
|
|
||||||
## La Terre
|
|
||||||
|
|
||||||
La "Terre" de Sonic Monado Adventure est une terre alternative à la notre, ou les pays sont principalement remplacé par leurs Erzats, et où la forme des continent est légèrement différent.
|
|
||||||
|
|
||||||
Cette Terre possède comme principale puissance politique les *Fédérations Unis*, et comme plus grande force militaire les *Guardian Units of Nations* (ou GUN).
|
|
||||||
|
|
||||||
### Les Fédérations Unis
|
|
||||||
|
|
||||||
Les Fédérations Unis sont la république parlementaire avec un régime présidentiel qui couvre une grande partie de la planète Terre. Plus puissante nation de la planète, elle a subit plusieurs crise depuis le retour du Docteur *Ivo Robotnik* sur Terre lors de l'incident de Christmas Island.
|
|
||||||
|
|
||||||
Elles peuvent être vu comme quelque chose entres les Nations-Unis et les États-Unis. Le but de cet état est de garantir un développement tout en respectant les libertés des pays qui en font partie (et qui conserve une certaine indépendance). L'île de Sunlit Island est sous contrôle des Fédérations Unis, avec comme représentant le maire de la ville de *Sunlit Metropolis*.
|
|
||||||
|
|
||||||
Leur technologie est majoritairement contemporaire, mais a réussi de grande avancée depuis 50 ans à l'aide des technologies chaotique, en grande partie découvertes par le professeur Gérald
|
|
||||||
|
|
||||||
Dans le jeu, les Fédérations Unis, n'ont pas une présence très forte dans le jeu, en tout cas pas directement.
|
|
||||||
|
|
||||||
### Les Gardian Units of Nations
|
|
||||||
|
|
||||||
Les Gardian Units of Nations (ou G.U.N. parfois orthographié en GUN) sont la principale force militaire des Fédérations Unis, et ont comme rôle de protéger à la fois les Fédérations Unis, et à la fois les pays alliés. Cette armée est dirigé par un Commandant.
|
|
||||||
|
|
||||||
L'armée est actuellement en grande partie dédiée à affronter le Dr. Ivo Robotnik, qui vise à conquérir le monde, mais n’arrive pas à le localiser et à lancer des attaques précises. La capacité à disparaître de ce savant étant déconcertante, et ses moyens encore inconnus. L'inefficacité de GUN à vaincre les menances originaire du monde des animaux est la source d'une méfiance chez certaines personnes.
|
|