Lore Bible (canon narratif complet) + Engine Design (séparation moteur/univers).
4 nouvelles zones (Ruisseau Miroir, Marais des Murmures, Torrent Brisé, Source du Courant)
dans la chaîne d'unlock après desert (niv 16-25+).
Module NPC complet (entity, service, controller) — 8 PNJ avec dialogues évolutifs
par palier de niveau : Gorn (niv 1-15), Pierre-Mémoire (niv 16+), Mira, Vell,
La Batracienne, Le Forgeron, Le Marchand.
20 monstres lore-friendly, 12 matériaux, 15 items (dont Bâton de Gorn légendaire).
17 quêtes narratives (4 arcs ch.9-12) avec textes acceptText/completeText
qui racontent l'Odyssée. Nouveau type story_event pour les moments narratifs purs.
3 quêtes répétables optionnelles.
Seed runner : npm run seed:odyssee
Tout est additif — zéro impact sur le contenu existant niv 1-15.
- Sidebar → bottom nav fixe sur mobile (<768px)
- Classes CSS layout: .sidebar, .nav-item, .grid-2, .layout-*
- Grids 2col → 1col sur mobile (Dashboard, Combat, Forge)
- HudBar compact + wrapping sur mobile
- GuideDrawer full-width mobile
- Cards padding réduit mobile
- Header username masqué mobile
- GuideDrawer: panneau coulissant depuis la sidebar, recherche live
- useGuideData: hook unique — même cache React Query pour drawer + page
- Sidebar: BookOpen toggle le drawer (pas de navigation)
- Footer drawer: lien vers /guide complet
- GuidePage refactorisée sur useGuideData (zéro duplication)
- 10 matériaux Égouts/Désert (Poil de Rat → Œil du Sphinx)
- 12 items craftables dont 1 legendary (Sceptre Prophétique)
- 12 recettes cross-zone avec ingrédients cohérents
- 15 monstres mappés à leur drop (tous les Égouts/Désert)
- Drop rate variable par difficulté relative (25-80%)
- Quantité drop variable (1-3 selon boss/difficulté)
Dashboard: titre actif affiché "« Champion »" + sélecteur avec tous les
titres débloqués (achievements claimed avec rewardTitle).
Header: titre visible à côté du level.
Revente: prix inclut l'investissement forge (50% des coûts cumulés).
Épée +5 (investissement 1900 or) → revente base + 950 au lieu de base seul.
API client: ajout méthode PUT.
Frontend: 4 sections distinctes sur la page quêtes:
- Quêtes actives (3 slots combat uniquement)
- Quêtes de combat (stagger: max 3 affichées, "+N après celles-ci")
- 🔨 Métiers (forge/craft — hors pool, toujours disponibles)
- 🔄 Dailies (répétables en fond)
Backend: craft/forge quests ne comptent plus dans le MAX_ACTIVE_QUESTS.
Arc panel: boutons Accepter/Réclamer directement sur chaque quête d'arc,
progress affiché (3/5), arcs lockés avec 🔒 et opacity réduite.
Quêtes disponibles: seulement les secondaires (pas les arcs).
Quêtes d'arc abandonnées: ré-acceptables depuis le panel arc.
Zone locking respecté dans getArcs (zoneUnlocked flag).
Quêtes d'arcs filtrées par zones débloquées — pas de quête Égouts
visible tant que l'arc Marais n'est pas complété.
Gardien des marais: level 5→4. Dératisation: level 4→5.
Exterminateur: description corrigée (kill_any x30, pas "chaque espèce").
Fix: getAvailable filtre maintenant les quêtes active/completed (pas juste
claimed). Plus de doublons dailies, plus d'internal server error.
6 quêtes secondaires pour combler le gap level 2-5:
Chasseur de champignons (lv2, 150 XP), La menace rampante (lv3, 180 XP),
Guerrier éprouvé (lv2, 250 XP), Collecteur de trophées (lv3, 500 XP),
Exterminateur (lv4, 400 XP), Première forge (lv2, 120 XP).
Zones verrouillées: marais toujours ouvert, égouts après arc Marais,
désert après arc Égouts. Filtrage backend sur monstres ET boutique.
Arc "Les Égouts de la Cité" (4 quêtes, lv4-7, boss Roi des Rats)
Arc "Les Sables Brûlants" (3 quêtes, lv8-12, boss Sphinx)
GET /api/monsters/zones — retourne les zones avec statut unlocked.
Combat page: monstres groupés par zone, zones lockées avec icône cadenas.
Boutique: items filtrés par zones débloquées (potions toujours visibles).
Bug: combat/forge/craft calculaient la regen à 1pt/6min (ancien) alors que
character.service utilisait 1pt/3min (nouveau). Le joueur voyait 8 endurance
dans le HUD mais le backend refusait le combat avec 4.
Potions d'énergie: Potion (30 endurance, 20 or) + Grande (60 endurance, 45 or).
Consommable instantané via la boutique — le joueur peut acheter du temps de jeu.
Shop module: GET /api/shop, POST /api/shop/buy/:id, POST /api/shop/sell/:id
Potions: achat instantané, heal 50% HP, pas d'inventaire.
Items: buyPrice + minLevel + zone ajoutés à l'entité.
12 équipements (4 par zone: marais/égouts/désert) + 2 potions.
Monstres: zone field ajouté, 10 nouveaux monstres:
Égouts (lv4-10): Rat, Slime, Araignée, Crocodile, Roi des Rats
Désert (lv8-15): Scorpion, Vautour, Momie, Ver des Sables, Sphinx
Frontend: page /shop groupée par zone, rarity colors, achat/vente.
Sidebar: icône ShoppingBag pour la boutique.
Page /achievements : 20 succès groupés par catégorie (Combat, Progression,
Économie, Équipement), progress bars, paliers bronze/silver/gold,
bouton réclamer, compteur débloqués/total.
Renommage "repos" → "soins" partout (dashboard, budget, messages).
Bouton soins ajouté dans la page combat (accès rapide entre les fights).
Icône Trophy dans la sidebar pour les succès.