départ du tavernier

This commit is contained in:
2026-03-08 12:44:31 +04:00
parent 5826618947
commit 4de32565a2
8 changed files with 956 additions and 386 deletions

467
package-lock.json generated
View File

@@ -9,7 +9,7 @@
"version": "0.0.1",
"dependencies": {
"@tailwindcss/vite": "^4.1.18",
"astro": "^5.17.1",
"astro": "^5.18.0",
"rehype-external-links": "^3.0.0",
"remark-admonitions": "^1.2.1",
"remark-directive": "^4.0.0",
@@ -1974,9 +1974,9 @@
}
},
"node_modules/astro": {
"version": "5.17.1",
"resolved": "https://registry.npmjs.org/astro/-/astro-5.17.1.tgz",
"integrity": "sha512-oD3tlxTaVWGq/Wfbqk6gxzVRz98xa/rYlpe+gU2jXJMSD01k6sEDL01ZlT8mVSYB/rMgnvIOfiQQ3BbLdN237A==",
"version": "5.18.0",
"resolved": "https://registry.npmjs.org/astro/-/astro-5.18.0.tgz",
"integrity": "sha512-CHiohwJIS4L0G6/IzE1Fx3dgWqXBCXus/od0eGUfxrZJD2um2pE7ehclMmgL/fXqbU7NfE1Ze2pq34h2QaA6iQ==",
"license": "MIT",
"dependencies": {
"@astrojs/compiler": "^2.13.0",
@@ -2002,7 +2002,7 @@
"dlv": "^1.1.3",
"dset": "^3.1.4",
"es-module-lexer": "^1.7.0",
"esbuild": "^0.25.0",
"esbuild": "^0.27.3",
"estree-walker": "^3.0.3",
"flattie": "^1.1.1",
"fontace": "~0.4.0",
@@ -2059,6 +2059,463 @@
"sharp": "^0.34.0"
}
},
"node_modules/astro/node_modules/@esbuild/aix-ppc64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz",
"integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==",
"cpu": [
"ppc64"
],
"license": "MIT",
"optional": true,
"os": [
"aix"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/android-arm": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz",
"integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==",
"cpu": [
"arm"
],
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/android-arm64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz",
"integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/android-x64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz",
"integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/darwin-arm64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz",
"integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/darwin-x64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz",
"integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/freebsd-arm64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz",
"integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/freebsd-x64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz",
"integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/linux-arm": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz",
"integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==",
"cpu": [
"arm"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/linux-arm64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz",
"integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/linux-ia32": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz",
"integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==",
"cpu": [
"ia32"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/linux-loong64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz",
"integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==",
"cpu": [
"loong64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/linux-mips64el": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz",
"integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==",
"cpu": [
"mips64el"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/linux-ppc64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz",
"integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==",
"cpu": [
"ppc64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/linux-riscv64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz",
"integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==",
"cpu": [
"riscv64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/linux-s390x": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz",
"integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==",
"cpu": [
"s390x"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/linux-x64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz",
"integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/netbsd-arm64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz",
"integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/netbsd-x64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz",
"integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/openbsd-arm64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz",
"integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/openbsd-x64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz",
"integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/openharmony-arm64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz",
"integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"openharmony"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/sunos-x64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz",
"integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"sunos"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/win32-arm64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz",
"integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/win32-ia32": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz",
"integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==",
"cpu": [
"ia32"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/@esbuild/win32-x64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz",
"integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/astro/node_modules/esbuild": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz",
"integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==",
"hasInstallScript": true,
"license": "MIT",
"bin": {
"esbuild": "bin/esbuild"
},
"engines": {
"node": ">=18"
},
"optionalDependencies": {
"@esbuild/aix-ppc64": "0.27.3",
"@esbuild/android-arm": "0.27.3",
"@esbuild/android-arm64": "0.27.3",
"@esbuild/android-x64": "0.27.3",
"@esbuild/darwin-arm64": "0.27.3",
"@esbuild/darwin-x64": "0.27.3",
"@esbuild/freebsd-arm64": "0.27.3",
"@esbuild/freebsd-x64": "0.27.3",
"@esbuild/linux-arm": "0.27.3",
"@esbuild/linux-arm64": "0.27.3",
"@esbuild/linux-ia32": "0.27.3",
"@esbuild/linux-loong64": "0.27.3",
"@esbuild/linux-mips64el": "0.27.3",
"@esbuild/linux-ppc64": "0.27.3",
"@esbuild/linux-riscv64": "0.27.3",
"@esbuild/linux-s390x": "0.27.3",
"@esbuild/linux-x64": "0.27.3",
"@esbuild/netbsd-arm64": "0.27.3",
"@esbuild/netbsd-x64": "0.27.3",
"@esbuild/openbsd-arm64": "0.27.3",
"@esbuild/openbsd-x64": "0.27.3",
"@esbuild/openharmony-arm64": "0.27.3",
"@esbuild/sunos-x64": "0.27.3",
"@esbuild/win32-arm64": "0.27.3",
"@esbuild/win32-ia32": "0.27.3",
"@esbuild/win32-x64": "0.27.3"
}
},
"node_modules/axobject-query": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",

View File

@@ -10,7 +10,7 @@
},
"dependencies": {
"@tailwindcss/vite": "^4.1.18",
"astro": "^5.17.1",
"astro": "^5.18.0",
"rehype-external-links": "^3.0.0",
"remark-admonitions": "^1.2.1",
"remark-directive": "^4.0.0",

BIN
public/chatgpt/004.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

View File

@@ -0,0 +1,70 @@
---
// Récupération de l'URL actuelle
const { pathname } = Astro.url;
// On vérifie si on est sur la page création (en gérant le slash final potentiel)
const isCreationPage = pathname.replace(/\/$/, "") === "/creation";
// Définition de la destination et du texte selon la page
const buttonLink = isCreationPage ? "/" : "/creation";
const buttonText = isCreationPage
? "Retour à l'Accueil"
: "Création de Personnage";
---
<header class="dnd-header">
<h1 class="dnd-title">Sweeties Journey</h1>
<div class="dnd-bar"></div>
<p class="dnd-intro">
Chroniques des aventures d'une portion de nouilles de la communauté,
idée originale de Orson Pattes Givrées
</p>
<div class="creation-button-container">
<a href={buttonLink} class="creation-button">{buttonText}</a>
</div>
</header>
<style>
.dnd-header {
margin: 2rem 0;
}
.dnd-title {
font-family: "Playfair Display", serif;
font-size: 3.5rem;
color: #c89b3c;
margin: 0;
}
.dnd-bar {
height: 4px;
background: linear-gradient(to right, #c89b3c 0%, transparent 100%);
margin-top: 4px;
}
.dnd-intro {
font-family: "Cinzel", serif;
font-size: 0.9rem;
margin-top: 1rem;
opacity: 0.8;
}
.creation-button-container {
text-align: center;
margin: 3rem 0;
}
a .creation-button {
font-family: "Cinzel", serif;
font-size: 1.2rem;
background: #c89b3c;
color: white;
border: none;
padding: 0.75rem 2rem;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s;
text-decoration: none;
display: inline-block;
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);
}
a .creation-button:hover {
background: #a27c2c;
}
</style>

View File

@@ -15,7 +15,7 @@ era: "lastchope"
### Recap de l'épisode précédent
La taverne était en verve sous le son et lumière proposé par [[Gurdill]] et [[Jiin]]. [[Orson]] le tavernier ne remarquera la disparition de la tapisserie ornant la taverne que quelques jours plus tard, quand [[Chad-Jay]] repassa en proposer une nouvelle. [[G'Mas]], lui, était encore aux abonnés absents...
*La taverne était en verve sous le son et lumière proposé par [[Gurdill]] et [[Jiin]]. [[Orson]] le tavernier ne remarquera la disparition de la tapisserie ornant la taverne que quelques jours plus tard, quand [[Chad-Jay]] repassa en proposer une nouvelle. [[G'Mas]], lui, était encore aux abonnés absents...*
# La rencontre avec Chad-Jay

View File

@@ -0,0 +1,92 @@
---
title: "003 Le départ du tavernier"
author: "Bulle"
publishDate: 2025-12-02
tags: [
"lieu:La-Taverne-de-la-Derniere-Chope",
"aventurier:G'Mas",
"aventurier:Bulle",
"aventurier:Gurdill",
"aventurier:Chad-Jay",
"aventurier:Nyraë"
]
era: "lastchope"
---
### Recap de l'épisode précédent
*La taverne était en verve, mais le calme est de courte durée. Après que [[G'Mas]] a dû endormir [[Gurdill]] pour éviter un incident diplomatique avec le mobilier, la situation prend une tournure inattendue avec le départ du maître des lieux.*
# Le départ du tavernier
[[Chad]] réveille le nain sans faire exprès, Après une minute, **le nain** se réveille la tête sur la table, la bière renversée à côté, la barbe imbibée. **Le tavernier**, dépité, est partie. Seuls les dieux savent s'il reviendra. **La fée** supplie le tavernier de revenir sans succès.
> [[Gmas]] : « Je veux bien t'acheter celle-là ! Tu peux nous dire ce qu'elle représente ? »
> [[Chad Jay]] : `Ah ça ? C'est un Nimriel.
<img src="/chatgpt/004.png" alt="Nimriel" width="100%" />
[[Bulle]] devant l'oeuvre :
> Oh cest chou !
Puis elle rappelle au nain et au batracien que sils souhaitent profiter le plus longtemps possible de la taverne il faut respecter les lieux et le tavernier qui pourrait devenir un allié dans leur aventure.
[[Chad Jay à Bulle]] :
> `Cette créature, Dame fée, vient de votre plan d'existence. En effet, bien que totalement différente de vous, il s'agit aussi d'une créature féérique capable de réaliser certains voeux, dans la limite du possible. Il est extrêmement rare d'en croisersur notre plan. Et c'est préférable. En effet...`
*biiiiiip - Crrrrrr-crrrrr Donnée protégée.*
> `Je vous prie de bien vouloir m'excuser, chers voyageurs et clients, il semblerait que mes ressources mémorielles rencontrent quelques difficultés actuellement. Je vous propose de renouveler votre demande ultérieurement. En attendant, je peux vous expliquer quelles sont les meilleures méthodes pour survivre à un dragon noir.`
[[Whispering Sending Stones]] à [[Nyraë]] :
> Vous avez [[172 éclats de conversations éthérées]] que vous pouvez consulter.
[[Nyraë]] se rend compte quil y a des pipelettes à la taverne.
Voici un résumé rapide de [[Bulle]] :
> *Alors, **le tavernier** a affiché une tenture, **notre krapo** la voulais, une soirée improvisée cest faite à la taverne avec [[Gurdill Cul Brillant]] en caleçon, **le batracien** a vécu dans la taverne pendant 1 semaine et là ils squattent. Et moi, **la fée**, fait en sorte quils ne brûlent pas la taverne et quils ne ternissent pas la réputation de la compagnie. Ils ont fait la rencontre de [[Chad]] lartiste de la tenture.*
[[Gurdill]] reprenant ses esprits :
> Oups ! **le tavernier** est parti.
**Le MJ** :
> Ah ben le sort a été très efficace ! Il émerge quand même ! **Le nain** profite de labsence du tavernier pour aller se servir et commence à fouiller un peu partout. **La fée** nest pas daccord avec ça et essaie assommer **le nain** ! échec cuisant.
**Le MJ** au **nain** :
> Tu cherches quelque chose en particulier ?
[[Gurdill]] :
> Pas du tout je fais juste le tour de la pièce pour être sûr quil ny ai pas de piège…
**Le MJ** :
> Aucun piège dans la pièce, juste des tables et des tabourets, un banc aussi, un bar, des chopes pas très clean, un escalier qui monte vers les chambres et une porte derrière le bar. Plus la porte d'entrée, bien entendu.
[[Gurdill]] :
> …et la caisse…
**Le MJ** :
> Vide.
**Le nain** gromelle dans sa barbe et décide de camper jusquau petit matin à la taverne.
**Le MJ** :
> Tu fais un feu entre les tables ?
**Le nain** rapproche de tables, met des couvertures de son pactage dessus et sinstalle dessous pour dormir.
**Gurdill** :
> Non quand même pas. Il faudra que je casse le mobilier pour ça.
**Le nain** pense tout haut et commence à vouloir organiser des combats, [[Bulle]] lui demande de se calmer.
[[Nyraë]] entre dans la taverne et réagit au caleçon de [[Gurdill]] :
> Au secours... Tellement trop étincelant...
**La druidesse** a passé une partie de la nuit et toute la journée à veiller sur lune de ses sœurs, malade.
La fatigue hante ses pas. Elle avait bien besoin dun remède, dans la taverne du coin. Lorsquelle entra, elle ne comprit pas tout de suite dans quel établissement elle était entrée. La tête enfoncée dans ses épaules, elle avança jusquau comptoir, le plus loin possible des gens.
[[Nyraë]] **la druidesse** :
> Une de vos plus fortes tisanes… et jentends par “tisane” le breuvage tisane.
**Le nain** entame sa 5ème pinte accompagnée du **MJ**.

View File

@@ -1,6 +1,7 @@
---
import { getCollection } from "astro:content";
import GameLayout from "../layouts/GameLayout.astro";
import Header from "../components/Header.astro"; // Import du header
const classes = await getCollection("classes");
const especes = await getCollection("especes");
@@ -73,23 +74,25 @@ const especeData = personnages.reduce((acc, p) => {
<GameLayout title="Création de Personnage">
<div class="creation-container">
<Header />
<section class="character-select">
<h2 class="dnd-title">Choisissez votre Classe</h2>
<div class="dnd-bar"></div>
<p class="dnd-intro">
La classe définit vos compétences et votre rôle.
</p>
<div
class="dnd-intro"
style="
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
"
>
<span
<section class="character-select">
<h2 class="dnd-title">Choisissez votre Classe</h2>
<div class="dnd-bar"></div>
<p class="dnd-intro">
La classe définit vos compétences et votre rôle.
</p>
<div
class="dnd-intro"
style="
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
"
>
<span
style="
color: rgba(147, 72, 255, 1);
background-color: white;
margin: 5px;
@@ -102,10 +105,10 @@ const especeData = personnages.reduce((acc, p) => {
color-mix(in srgb, rgba(147, 72, 255, 1), transparent 85%);
}
"
>Arcane</span
>
<span
style="
>Arcane</span
>
<span
style="
color: rgba(230, 57, 70, 1);
background-color: white;
margin: 5px;
@@ -118,10 +121,10 @@ const especeData = personnages.reduce((acc, p) => {
color-mix(in srgb, rgba(230, 57, 70, 1), transparent 85%);
}
"
>Martial</span
>
<span
style="
>Martial</span
>
<span
style="
color: rgba(100, 100, 100, 1);
background-color: white;
margin: 5px;
@@ -134,10 +137,10 @@ const especeData = personnages.reduce((acc, p) => {
color-mix(in srgb, rgba(100, 100, 100, 1), transparent 85%);
}
"
>Neutre</span
>
<span
style="
>Neutre</span
>
<span
style="
color: rgba(200, 155, 60, 1);
background-color: white;
margin: 5px;
@@ -150,10 +153,10 @@ const especeData = personnages.reduce((acc, p) => {
color-mix(in srgb, rgba(200, 155, 60, 1), transparent 85%);
}
"
>Sacré</span
>
<span
style="
>Sacré</span
>
<span
style="
color: rgba(42, 157, 143, 1);
background-color: white;
margin: 5px;
@@ -166,308 +169,314 @@ const especeData = personnages.reduce((acc, p) => {
color-mix(in srgb, rgba(42, 157, 143, 1), transparent 85%);
}
"
>Primal</span
>
</div>
>Primal</span
>
</div>
<div class="class-grid">
{
classes.map((charClass) => {
const charactersInClass =
classData[charClass.id.toLowerCase()] || [];
const colorEncre =
SPECTRUM[charClass.data.encre] || "#c89b3c";
<div class="class-grid">
{
classes.map((charClass) => {
const charactersInClass =
classData[charClass.id.toLowerCase()] || [];
const colorEncre =
SPECTRUM[charClass.data.encre] || "#c89b3c";
return (
<div
class="class-card"
style={`--accent-color: ${colorEncre}`}
>
<h3 class="dynamic-title">
{charClass.data.title}
</h3>
<div class="bubble-container">
{charactersInClass.map((p) => (
<a
href={`/personnages/${p.id}`}
class="notification-bubble bubble-species-border"
style={`--p-color: ${p.colorSpectre}`}
>
<span class="p-name">{p.nom}</span>
<span class="p-lvl">
Niv.{p.niveau_classe}
</span>
</a>
))}
</div>
<p>{charClass.data.description}</p>
<a
href={`/classes/${charClass.id}`}
class="select-button"
return (
<div
class="class-card"
style={`--accent-color: ${colorEncre}`}
>
Détails
</a>
</div>
);
})
}
</div>
</section>
<section class="character-select">
<h2 class="dnd-title">Choisissez votre Espèce</h2>
<div class="dnd-bar"></div>
<p class="dnd-intro">
L'espèce influence votre apparence et votre histoire
</p>
<div
class="dnd-intro"
style="
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
"
>
<span
style="
background-color: rgba(200, 155, 60, 0.4);
margin: 5px;
padding: 5px;
border-radius: 5px;
"
>Solaire</span
>
<span
style="
background-color: rgba(0, 171, 255, 0.4);
margin: 5px;
padding: 5px;
border-radius: 5px;
"
>Elementaire</span
>
<span
style="
background-color: rgba(139, 69, 19, 0.4);
margin: 5px;
padding: 5px 10px;
border-radius: 5px;
"
>Terrestre</span
>
<span
style="
background-color: rgba(0, 128, 0, 0.4);
margin: 5px;
padding: 5px 10px;
border-radius: 5px;
"
>Sylvestre</span
>
<span
style="
background-color: rgba(75, 0, 130, 0.4);
margin: 5px;
padding: 5px 10px;
border-radius: 5px;
"
>Ombre</span
>
</div>
<div class="class-grid">
{
especes.map((espece) => {
const charactersInEspece =
especeData[espece.id.toLowerCase()] || [];
const colorBg =
SPECTRUM[espece.data.spectre] ||
"rgba(255,255,255,1)";
return (
<div
class="class-card species-card"
style={`--bg-color: ${colorBg}`}
>
<h3>{espece.data.title}</h3>
<div class="bubble-container">
{charactersInEspece.map((p) => {
// Construction du dégradé : si une seule couleur, on la double pour le gradient
const gradient =
p.colors.length > 1
? `linear-gradient(to right, ${p.colors[0]}, ${p.colors[1]})`
: p.colors[0];
return (
<h3 class="dynamic-title">
{charClass.data.title}
</h3>
<div class="bubble-container">
{charactersInClass.map((p) => (
<a
href={`/personnages/${p.id}`}
class="notification-bubble bubble-class-border"
style={`--p-gradient: ${gradient}`}
class="notification-bubble bubble-species-border"
style={`--p-color: ${p.colorSpectre}`}
>
<span class="p-name">
{p.nom}
</span>
<span class="p-lvl">
Niv.{p.niveau}
Niv.{p.niveau_classe}
</span>
</a>
);
})}
))}
</div>
<p>{charClass.data.description}</p>
<a
href={`/classes/${charClass.id}`}
class="select-button"
>
Détails
</a>
</div>
<p>{espece.data.description}</p>
<a
href={`/especes/${espece.id}`}
class="select-button species-button"
>
Détails
</a>
</div>
);
})
}
</div>
</section>
</div>
</GameLayout>
);
})
}
</div>
</section>
<style>
.creation-container {
max-width: 1000px;
margin: 0 auto;
padding: 2rem 1rem;
}
.character-select {
margin: 4rem 0;
}
.dnd-title {
font-family: "Playfair Display", serif;
font-size: 2.5rem;
color: #c89b3c;
text-align: center;
}
.dnd-bar {
height: 3px;
background: linear-gradient(
to right,
transparent,
#c89b3c,
transparent
);
margin: 4px auto 1rem;
width: 50%;
}
.dnd-intro {
font-family: "Cinzel", serif;
font-size: 0.9rem;
text-align: center;
opacity: 0.8;
margin-bottom: 2rem;
}
.class-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 2rem;
}
.class-card {
background-color: white;
padding: 2rem 1.5rem;
border-radius: 5px;
text-align: center;
display: flex;
flex-direction: column;
justify-content: space-between;
transition: all 0.3s ease;
box-shadow:
0 10px 25px -5px
color-mix(in srgb, var(--accent-color), transparent 80%),
0 8px 10px -6px
color-mix(in srgb, var(--accent-color), transparent 85%);
}
.dynamic-title {
color: var(--accent-color) !important;
font-family: "Playfair Display", serif;
font-size: 1.8rem;
}
.species-card {
background-color: var(--bg-color) !important;
}
.notification-bubble {
background: #1a1a1a !important;
color: white !important;
font-family: "Cinzel", serif;
font-size: 0.7rem;
padding: 4px 10px;
border-radius: 4px;
display: inline-flex;
align-items: center;
gap: 5px;
border: 1px solid rgba(255, 255, 255, 0.1);
text-decoration: none; /* Important pour les liens */
transition: transform 0.2s ease;
}
.notification-bubble:hover {
transform: translateY(-2px);
filter: brightness(1.2);
}
.bubble-species-border {
background-color: var(--p-color) !important;
border-bottom: 3px solid var(--p-color) !important;
box-shadow: inset 0 -2px 0 0 var(--p-color);
}
.bubble-class-border {
position: relative;
border-top: none !important;
overflow: hidden;
}
.bubble-class-border::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px; /* L'épaisseur de ta bordure haute */
background: var(--p-gradient);
}
.p-lvl {
font-size: 0.6rem;
opacity: 0.7;
padding-left: 5px;
border-left: 1px solid rgba(255, 255, 255, 0.2);
}
.bubble-container {
<section class="character-select">
<h2 class="dnd-title">Choisissez votre Espèce</h2>
<div class="dnd-bar"></div>
<p class="dnd-intro">
L'espèce influence votre apparence et votre histoire
</p>
<div
class="dnd-intro"
style="
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
gap: 6px;
margin-bottom: 1.5rem;
min-height: 30px;
}
.select-button {
font-family: "Cinzel", serif;
text-decoration: none;
padding: 0.5rem 1rem;
color: var(--accent-color);
background: color-mix(in srgb, var(--accent-color), transparent 50%);
transition: all 0.3s;
}
.select-button:hover {
background: var(--accent-color);
color: white;
}
.species-button {
border-color: #1a1a1a;
color: #1a1a1a;
}
.species-button:hover {
background: #1a1a1a;
color: white;
}
.class-card p {
font-family: "Cinzel", serif;
font-size: 0.85rem;
margin-bottom: 1.5rem;
flex-grow: 1;
}
</style>
"
>
<span
style="
background-color: rgba(200, 155, 60, 0.4);
margin: 5px;
padding: 5px;
border-radius: 5px;
"
>Solaire</span
>
<span
style="
background-color: rgba(0, 171, 255, 0.4);
margin: 5px;
padding: 5px;
border-radius: 5px;
"
>Elementaire</span
>
<span
style="
background-color: rgba(139, 69, 19, 0.4);
margin: 5px;
padding: 5px 10px;
border-radius: 5px;
"
>Terrestre</span
>
<span
style="
background-color: rgba(0, 128, 0, 0.4);
margin: 5px;
padding: 5px 10px;
border-radius: 5px;
"
>Sylvestre</span
>
<span
style="
background-color: rgba(75, 0, 130, 0.4);
margin: 5px;
padding: 5px 10px;
border-radius: 5px;
"
>Ombre</span
>
</div>
<div class="class-grid">
{
especes.map((espece) => {
const charactersInEspece =
especeData[espece.id.toLowerCase()] || [];
const colorBg =
SPECTRUM[espece.data.spectre] ||
"rgba(255,255,255,1)";
return (
<div
class="class-card species-card"
style={`--bg-color: ${colorBg}`}
>
<h3>{espece.data.title}</h3>
<div class="bubble-container">
{charactersInEspece.map((p) => {
// Construction du dégradé : si une seule couleur, on la double pour le gradient
const gradient =
p.colors.length > 1
? `linear-gradient(to right, ${p.colors[0]}, ${p.colors[1]})`
: p.colors[0];
return (
<a
href={`/personnages/${p.id}`}
class="notification-bubble bubble-class-border"
style={`--p-gradient: ${gradient}`}
>
<span class="p-name">
{p.nom}
</span>
<span class="p-lvl">
Niv.{p.niveau}
</span>
</a>
);
})}
</div>
<p>{espece.data.description}</p>
<a
href={`/especes/${espece.id}`}
class="select-button species-button"
>
Détails
</a>
</div>
);
})
}
</div>
</section>
</section>
</div>
<style>
.creation-container {
max-width: 1000px;
margin: 0 auto;
}
.character-select {
margin: 4rem 0;
}
.dnd-title {
font-family: "Playfair Display", serif;
font-size: 2.5rem;
color: #c89b3c;
text-align: center;
}
.dnd-bar {
height: 3px;
background: linear-gradient(
to right,
transparent,
#c89b3c,
transparent
);
margin: 4px auto 1rem;
width: 50%;
}
.dnd-intro {
font-family: "Cinzel", serif;
font-size: 0.9rem;
text-align: center;
opacity: 0.8;
margin-bottom: 2rem;
}
.class-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 2rem;
}
.class-card {
background-color: white;
padding: 2rem 1.5rem;
border-radius: 5px;
text-align: center;
display: flex;
flex-direction: column;
justify-content: space-between;
transition: all 0.3s ease;
box-shadow:
0 10px 25px -5px
color-mix(in srgb, var(--accent-color), transparent 80%),
0 8px 10px -6px
color-mix(in srgb, var(--accent-color), transparent 85%);
}
.dynamic-title {
color: var(--accent-color) !important;
font-family: "Playfair Display", serif;
font-size: 1.8rem;
}
.species-card {
background-color: var(--bg-color) !important;
}
.notification-bubble {
background: #1a1a1a !important;
color: white !important;
font-family: "Cinzel", serif;
font-size: 0.7rem;
padding: 4px 10px;
border-radius: 4px;
display: inline-flex;
align-items: center;
gap: 5px;
border: 1px solid rgba(255, 255, 255, 0.1);
text-decoration: none; /* Important pour les liens */
transition: transform 0.2s ease;
}
.notification-bubble:hover {
transform: translateY(-2px);
filter: brightness(1.2);
}
.bubble-species-border {
background-color: var(--p-color) !important;
border-bottom: 3px solid var(--p-color) !important;
box-shadow: inset 0 -2px 0 0 var(--p-color);
}
.bubble-class-border {
position: relative;
border-top: none !important;
overflow: hidden;
}
.bubble-class-border::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px; /* L'épaisseur de ta bordure haute */
background: var(--p-gradient);
}
.p-lvl {
font-size: 0.6rem;
opacity: 0.7;
padding-left: 5px;
border-left: 1px solid rgba(255, 255, 255, 0.2);
}
.bubble-container {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 6px;
margin-bottom: 1.5rem;
min-height: 30px;
}
.select-button {
font-family: "Cinzel", serif;
text-decoration: none;
padding: 0.5rem 1rem;
color: var(--accent-color);
background: color-mix(
in srgb,
var(--accent-color),
transparent 50%
);
transition: all 0.3s;
}
.select-button:hover {
background: var(--accent-color);
color: white;
}
.species-button {
border-color: #1a1a1a;
color: #1a1a1a;
}
.species-button:hover {
background: #1a1a1a;
color: white;
}
.class-card p {
font-family: "Cinzel", serif;
font-size: 0.85rem;
margin-bottom: 1.5rem;
flex-grow: 1;
}
</style>
</GameLayout>

View File

@@ -3,6 +3,7 @@ import { getCollection } from "astro:content";
import GameLayout from "../layouts/GameLayout.astro";
import Timeline from "../components/Timeline.astro";
import ContentSearch from "../components/ContentSearch.astro";
import Header from "../components/Header.astro";
const allPosts = await getCollection("journal");
@@ -23,20 +24,7 @@ const allTags = [
<GameLayout title="Sweeties Journey">
<div class="index-container">
<header class="dnd-header">
<h1 class="dnd-title">Sweeties Journey</h1>
<div class="dnd-bar"></div>
<p class="dnd-intro">
Chroniques des aventures d'une portion de nouilles de la
communauté, idée originale de Orson Pattes Givrées
</p>
</header>
<div class="creation-button-container">
<a href="/creation" class="creation-button"
>Création de Personnage</a
>
</div>
<Header />
<Timeline eras={eras} />
@@ -45,58 +33,12 @@ const allTags = [
</GameLayout>
<style is:global>
.creation-button-container {
text-align: center;
margin: 3rem 0;
}
a .creation-button {
font-family: "Cinzel", serif;
font-size: 1.2rem;
background: #c89b3c;
color: white;
border: none;
padding: 0.75rem 2rem;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s;
text-decoration: none;
display: inline-block;
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);
}
a .creation-button:hover {
background: #a27c2c;
}
.index-container {
max-width: 1000px;
margin: 0 auto;
padding: 0 1rem;
}
/* Le style du titre DnD reste le même que précédemment */
.dnd-header {
margin: 2rem 0;
}
.dnd-title {
font-family: "Playfair Display", serif;
font-size: 3.5rem;
color: #c89b3c;
margin: 0;
}
.dnd-bar {
height: 4px;
background: linear-gradient(to right, #c89b3c 0%, transparent 100%);
margin-top: 4px;
}
.dnd-intro {
font-family: "Cinzel", serif;
font-size: 0.9rem;
margin-top: 1rem;
opacity: 0.8;
}
/* Conteneur de la carte pour permettre le positionnement absolu du tag */
.gold-button {
position: relative;