Files
mountycrawl/README.md
T
percoandClaude Fable 5 2f21f867a5 1.7.0 : équipement Mountypedia — 6 emplacements, 55 objets
- js/gear.js : Arme (12 + 3 à deux mains), Armure (13), Casque (9),
  Bouclier (5), Talisman (7), Bottes (6), valeurs de base officielles
- ATT/ESQ/DEG/REG en dés, Armure/VUE/PV fixes, RM/MM en % (spellMM/spellRM)
- equipGear : échange par emplacement, exclusion 2 mains/bouclier,
  PV max dynamique, gearMods intégré à effTroll
- Drops par tier ≤ profondeur + 1, butin éditeur par emplacement,
  rétrocompat des specs weapon/armor des niveaux publiés
- Page Trésors : section Équipement (6 sous-sections)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 23:56:30 +02:00

207 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🧌 MountyCrawl — Le Monde Souterrain
Un roguelike navigateur en hommage à [MountyHall](https://www.mountyhall.com), la Terre des Trõlls.
Tu incarnes un Trõll qui descend dans le Monde Souterrain à la recherche de monstres,
de trésors et de PX — jusqu'au Béhémoth qui rôde à la profondeur 5.
100 % vanilla HTML/CSS/JS, aucune dépendance, aucun build. Ouvrir `index.html` et jouer.
## Jouer
🎮 **https://mountycrawl.nas.percolouco.com** (déployé via Traefik, compose dans
`/opt/container/mountycrawl`, image node:22-alpine construite depuis ce repo).
En local :
```bash
PORT=8080 LEVELS_FILE=/tmp/levels.json node server.js
# → http://localhost:8080
```
(Le jeu solo fonctionne aussi en ouvrant `index.html` directement ; seuls l'éditeur
« Publier » et les niveaux communautaires ont besoin du serveur.)
Après une modification, redéployer avec :
```bash
cd /opt/container/mountycrawl && docker compose up -d --build
```
Paramètres d'URL pratiques : `index.html?autostart=1&race=Durakuir&name=Grosbill`
lance directement une partie (utilisé pour les captures d'écran et les tests).
## Mécaniques reprises de MountyHall
| Mécanique | Dans MountyHall | Dans MountyCrawl |
|---|---|---|
| Tour de jeu | DLA de 12 h, 6 PA | DLA instantanée quand les PA sont épuisés (ou bouton « Passer la DLA »), 6 PA |
| Caractéristiques | ATT/ESQ en D6, DEG/REG en D3, PV, Vue | Identique, profils de base officiels des 5 races (`MH_Rules/Races_*.php`) |
| Combat | Somme ATT D6 vs somme ESQ D6, dégâts DEG D3 armure, coup critique (attaque ≥ 2 × esquive) aux dégâts doublés | Identique, avec un panneau « Détail du combat » au format des rapports MH (jets, Seuil de Résistance, jet de Résistance, maîtrise, butin, PX) à droite du journal |
| Talents | Compétence + sortilège réservés par race, 15 % de maîtrise initiale, jet D100 sous le %, progression à l'usage (+1D6 % < 50, +1D3 % < 75, +1 % ensuite ; sous 50 %, un échec donne quand même +1 %), plafonds 90 % compétences / 80 % sortilèges, échec = PA partiellement remboursés | Identique |
| Magie | Seuil de Résistance basé sur MM vs RM, borné 1090 % | Identique : jet de résistance des monstres → effets de moitié |
| Progression | PX → PI, le N-ième achat coûte N × coût de base racial (table de Rules_3.php) | Identique : 16 PI de base (12 pour la caractéristique favorite), REG 30 (Darkling 22), Armure naturelle 30 pour tous, PV par tranche de 10 |
| Niveaux | 10 × N PI pour atteindre le niveau N | Identique |
| Races | 5 races, chacune avec sort/compétence propre | Les 5 races avec leur capacité signature (voir ci-dessous) |
| Coûts en PA | Déplacement 13, attaque, ramasser, équiper, potion… | Déplacement 1, attaque 3, ramasser 1, équiper 2, potion 1 |
Simplifications assumées : les PX sont convertis en PI immédiatement (pas de phase
d'entraînement), la DLA ne dure pas 12 h réelles (sinon la partie durerait trois mois),
et le Monde Souterrain est généré procéduralement à chaque descente.
## Les 5 races (profils et talents officiels)
Profils de base repris des pages officielles, compétence (🥋 2 PA) et sortilège
(🔮 4 PA) réservés avec les effets décrits sur la Mountypedia, adaptés à la grille :
| Race | Profil de base | 🥋 Compétence | 🔮 Sortilège |
|---|---|---|---|
| 🟢 Skrim | ATT 4D6 · ESQ 3D6 · DEG 3D3 · REG 1D3 · PV 30 · Vue 3 | **Botte Secrète** : attaque bonus 1/DLA (2D6 par 3 dés d'ATT, 1D3 par 2 dés d'ATT) | **Hypnotisme** : esquive ÷2 + la cible perd son tour |
| 🟤 Durakuir | ATT 3D6 · ESQ 3D6 · DEG 3D3 · REG 1D3 · PV 40 · Vue 3 | **Régénération Accrue** : +1D3 PV par tranche de 15 PV max | **Rafale Psychique** : imparable, 1D3 par dé de DEG, ignore l'armure |
| 🔴 Kastar | ATT 3D6 · ESQ 3D6 · DEG 4D3 · REG 1D3 · PV 30 · Vue 3 | **Accélération du Métabolisme** : sacrifie des PV (fatigue croissante) pour +4 PA | **Vampirisme** : dégâts magiques + vol de 50 % des dégâts |
| 🟡 Tomawak | ATT 3D6 · ESQ 3D6 · DEG 3D3 · REG 1D3 · PV 30 · Vue 4 | **Camouflage** : invisible, jet sous 75 % de la maîtrise à chaque pas | **Projectile Magique** : à distance (portée = Vue), bonus de proximité |
| 🟣 Darkling | ATT 3D6 · ESQ 3D6 · DEG 3D3 · REG 2D3 · PV 30 · Vue 3 | **Balayage** : déstabilise (la cible perd son tour) | **Siphon des Âmes** : 1D3 par dé de REG, ignore toute armure, nécrose ATT |
### Page « Règles des talents »
Accessible depuis l'accueil (📜 Règles des talents) et en jeu (bouton 📜 Règles
dans l'en-tête) : les 10 fiches au format MountyHall — Coût en PA, Type, Jet de
résistance, Effet de zone, limite par DLA, EFFET détaillé avec les formules de
jets, et DESCRIPTION d'ambiance. En cours de partie, la fiche des talents de ta
race affiche en plus un encart « **Mes infos** » : pourcentage actuel et plafond,
taux de réussite sur tes jets, dernière utilisation, et tes jets calculés
(ex. Vampirisme : Attaque 2 D6 · Dégâts 4 D3 · Vol de vie 50 %).
### Coûts d'amélioration (officiels, [Rules_3.php](https://www.mountyhall.com/MH_Rules/Rules_3.php))
Le N-ième achat d'une caractéristique coûte N × le coût de base :
| Amélioration | Skrim | Durakuir | Kastar | Tomawak | Darkling |
|---|---|---|---|---|---|
| +1D6 Attaque | **12** | 16 | 16 | 16 | 16 |
| +1D6 Esquive | 16 | 16 | 16 | 16 | 16 |
| +1D3 Dégâts | 16 | 16 | **12** | 16 | 16 |
| +1D3 Régénération | 30 | 30 | 30 | 30 | **22** |
| +1D3 Armure naturelle | 30 | 30 | 30 | 30 | 30 |
| +1 Vue | 16 | 16 | 16 | **12** | 16 |
| +10 PV | 16 | **12** | 16 | 16 | 16 |
(L'amélioration « 30 minutes de DLA » du jeu original n'a pas d'équivalent ici,
la DLA étant instantanée.)
## Contrôles
- **ZQSD / flèches** : se déplacer (1 PA) — marcher sur un monstre l'attaque (3 PA)
- **Espace** : passer la DLA (les monstres agissent, tu régénères REG D3)
- **E** : ramasser l'objet sous tes pieds (1 PA)
- Boutons à l'écran pour la capacité raciale, l'équipement, les potions et l'entraînement (PI)
## Bestiaire
Gobelin, Champignon Vénéneux, Araignée Géante, Gargouille, Momie, Sorcière, Golem de
Pierre — déclinés en gabarits *Jeune / Vieux / Ancien / Mythique* selon la profondeur,
et le **Béhémoth** comme boss final à la profondeur 5.
## Éditeur de niveaux & partage
Depuis l'écran d'accueil : **🛠️ Éditeur de niveaux**.
- Peins le terrain à la souris (mur, sol, sortie ▼), place le départ 🧌, les monstres
(avec gabarit Jeune → Mythique) et les objets. Outils : tout sol / tout mur /
caverne aléatoire / nouveau niveau.
- **🚪 Portes** : une porte téléporte le troll vers un autre niveau publié, en
conservant PV, PI et équipement — de quoi chaîner des niveaux en campagne.
- **▶️ Tester** joue ton niveau immédiatement (retour à l'éditeur après la partie).
- **🌍 Publier** l'envoie au serveur ; il apparaît dans « Niveaux de la communauté ».
La publication renvoie une clé d'auteur gardée en localStorage : tes niveaux
restent modifiables via la section « Mes niveaux publiés » (bouton devient
« Mettre à jour »).
- Victoire d'un niveau custom : atteindre la sortie ▼ si elle existe, sinon
terrasser tous les monstres. Un niveau avec porte(s) sans sortie ne se termine
pas sur place : la suite est derrière la porte.
- Lien partageable : `https://mountycrawl.nas.percolouco.com/?level=<id>`.
### API
| Route | Description |
|---|---|
| `GET /api/levels` | Liste (id, nom, auteur, date, nb monstres, nb portes, nb parties) |
| `GET /api/levels/<id>` | Niveau complet (incrémente le compteur de parties ; la clé d'auteur n'est jamais renvoyée) |
| `POST /api/levels` | Publie un niveau ; renvoie `{id, secret}` — le `secret` est la clé d'auteur |
| `PUT /api/levels/<id>` | Met à jour un niveau ; exige l'en-tête `X-Level-Secret` (403 sinon) |
Validation serveur : grille 28×20, départ hors mur, max 60 monstres/objets et
10 portes (cible = id de niveau), au moins un objectif (monstre, porte ou sortie).
Stockage : `/data/levels.json` dans le volume `/opt/container/mountycrawl/data`.
## Tests
```bash
node test/smoke.js
```
Vérifie les dés, la résolution de combat, le Seuil de Résistance, les coûts
d'amélioration, les niveaux, la connexité des cavernes générées et le bestiaire.
## Sources
Mécaniques reconstituées depuis le [site officiel](https://www.mountyhall.com),
les [règles](https://www.mountyhall.com/MH_Rules/Rules_4.php) et la
[Mountypedia](https://mountypedia.mountyhall.com). MountyCrawl est un hommage
non affilié au jeu original de Mountyhall SARL.
## Versions
- **1.7.0** (2026-06-11) — Équipement Mountypedia complet : 6 emplacements (Arme,
Armure, Casque, Bouclier, Talisman, Bottes) et 55 objets dropables aux valeurs
de base officielles (ATT/ESQ/DEG/REG en dés, Armure/VUE/PV fixes, RM/MM en %).
Armes à 2 mains incompatibles avec un bouclier, PV max d'équipement, tiers de
drop par profondeur, pinceaux d'éditeur par emplacement, rétrocompatibilité des
anciens niveaux publiés (specs weapon/armor mappées). Section « Équipement »
dans la page Trésors.
- **1.6.0** (2026-06-11) — Parchemins 📜 : les 7 parchemins standards de Mountypedia
(Rune des Cyclopes, Traité de Clairvoyance, Idées Confuses, Rune Explosive,
Plan Génial, Yeu'Ki'Pic, Rune des Foins) en trésors à trouver, butin de monstre
et pinceau d'éditeur. Effets de zone (rayon 3 cases : dégâts ou aveuglement des
monstres), TOUR accéléré/ralenti converti en PA (±30 min = ±1 PA, min. 1 PA par
tour). Nouvelle page « 🧪 Trésors du Hall » : fiches des 25 potions et des
7 parchemins (niveau X, durée, formules), accessible depuis l'accueil et en jeu.
- **1.5.2** (2026-06-11) — Les bonus/malus DEG et REG des potions sont des valeurs
fixes ajoutées au jet, plus des dés supplémentaires (seules les notations « X D3 »
de Mountypedia sont des jets). Concerne Bonne Bouffe, Fertilité, Corruption,
DjhinTonik, Rhume/Grippe/Pneumonie, Biskot, KouleMann et Glacier. La régénération
ne peut plus être négative sous malus.
- **1.5.1** (2026-06-11) — Potions fidèles à Mountypedia : toutes les potions à jet
utilisent des D3 (Sang de Toh Réroh et PufPuff étaient à tort en D6), et chaque
fiole ne fait qu'un seul jet — le même total s'applique à toutes les caracs
concernées (ex. Sang de Toh Réroh niv. 4 : un jet de 4D3 partagé par ATT et ESQ).
Affichage : suppression des mentions « (jet) » dans le panneau des effets.
- **1.5.0** (2026-06-11) — Page « Règles des talents » : les 10 fiches compétences/
sortilèges au format MountyHall (coût, type, jet de résistance, formules, lore),
avec encart « Mes infos » en partie (maîtrise, taux de réussite, jets calculés du
troll). Suivi des statistiques d'utilisation des talents.
- **1.4.0** (2026-06-11) — Panneau « Détail du combat » au format des rapports
MountyHall (jets d'Attaque/Esquive, coup critique, Seuil et jet de Résistance,
progression de Maîtrise, dégâts, mise à mort, butin, total de PX), pour chaque
action du troll et chaque attaque de monstre. Ajout des coups critiques
(dégâts ×2 quand l'attaque fait au moins le double de l'esquive) et du butin
lâché par les monstres (40 % de chance : potion ou Mountyzédons).
`?demo=combat` simule un combat pour les captures d'écran.
- **1.3.2** (2026-06-11) — Sous 50 % de maîtrise, un jet de talent raté fait quand
même progresser de 1 % (plafonds inchangés : 90 % compétences, 80 % sortilèges).
- **1.3.1** (2026-06-11) — Coûts d'amélioration officiels de Rules_3.php (N-ième
achat = N × base, favorisée 12 PI, REG 30/22, PV par 10) et armure naturelle
en D3 achetable (30 PI pour toutes les races).
- **1.3.0** (2026-06-11) — Races fidèles aux règles officielles : profils de base
exacts, dégâts en D3, compétence + sortilège réservés par race avec maîtrise en %
progressant à l'usage, jets de résistance des monstres, statuts (à terre, hypnose,
nécrose), fatigue du Kastar, camouflage persistant du Tomawak.
- **1.2.0** (2026-06-11) — Portes 🚪 entre niveaux (campagnes multi-niveaux, troll
conservé), édition post-publication avec clé d'auteur (`PUT` + localStorage),
section « Mes niveaux publiés », objectifs de victoire affinés.
- **1.1.0** (2026-06-11) — Mode création : éditeur de niveaux visuel, publication en
ligne, écran « Niveaux de la communauté », liens partageables `?level=<id>`,
backend node sans dépendance (`server.js`) avec validation et stockage JSON.
- **1.0.0** (2026-06-11) — Version initiale : 5 races, 5 profondeurs, combat aux dés
fidèle aux règles MH, progression PI, brouillard de guerre, boss Béhémoth.