Files
mountycrawl/README.md
T
percoandClaude Fable 5 026e604b0b 1.3.2 : un jet de talent raté sous 50 % progresse quand même de 1 %
Plafonds inchangés : 90 % pour les compétences, 80 % pour les sortilèges.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 14:17:39 +02:00

9.1 KiB
Raw Blame History

🧌 MountyCrawl — Le Monde Souterrain

Un roguelike navigateur en hommage à MountyHall, 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 :

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 :

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 Identique, avec le détail des jets dans le 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

Coûts d'amélioration (officiels, 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

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, les règles et la Mountypedia. MountyCrawl est un hommage non affilié au jeu original de Mountyhall SARL.

Versions

  • 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.