- Récompense d'une quête = budget MAXIMUM pour ses questions : la somme
des points des "❓ Question" ne peut plus dépasser recompense_score
(routes/quests/quest_dialogues.py à l'enregistrement des dialogues,
quest_update.py si on abaisse la récompense sous ce qui est déjà
réparti) — message d'erreur explicite (400) dans les deux sens,
affiché via alert() côté éditeur (quest-editor.js), jamais enregistré
silencieusement dans un état incohérent.
- Nombre de choix par question plafonné à 4 (au lieu de 8).
- Deux nouveaux widgets "🖥️ Interface" (mêmes fondations que "💬 Boîte
de dialogue" — screens/rendering/dialogue_box_style.py, même panneau
"🎨 Style") :
- "❓ Boîte à quiz" : affiche la question et ses choix, sans pied (une
question se résout au clic sur un choix, pas de "Suivant").
- "🏆 Score" : affiche en continu les points gagnés, TOUJOURS visible
une fois posé (contrairement aux boîtes de dialogue/quiz, masquées
par défaut).
- Moteur d'exécution (static/js/play/dialogue-box-controller.js,
refonte) : une conversation de quête alterne maintenant répliques
(boîte de dialogue) et questions (boîte à quiz) selon le type de
chaque ligne. Bonne réponse -> crédite le score (compteur runtime
dédié, jamais lié au score du moteur document) et avance ; mauvaise
réponse -> rien, la question reste affichée pour réessayer ; aucune
boîte à quiz posée -> la question est ignorée plutôt que de bloquer
la conversation. Le dialogue "en_cours" épuisé (donc, s'il contenait
des questions, toutes répondues) fait passer la quête "terminee" (en
mémoire seulement, comme le reste de ce système — voir accepter/
refuser une offre de quête) : le joueur peut alors quitter la scène
normalement, ces widgets n'étant jamais des obstacles.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Nouvel espace "🗺️ Quêtes" (game-wide, comme les événements
personnalisés) : liste de cartes + "+ Nouvelle quête", chaque carte
ouvrant une modale d'arbre de dialogue en bulles de théâtre
("speaker: texte"), une colonne par statut de quête (nouvelle/en
cours/terminée) puisque le dialogue joué dépend de l'état de la
quête au moment où le joueur parle au PNJ. Bulles alternées
joueur/PNJ, couleur différente selon qui parle.
L'action "Déclencher une quête" de l'éditeur de collision n'est plus
un champ texte libre : elle ouvre directement CETTE MÊME modale
(picker de quêtes existantes + création à la volée), et finalise la
règle avec l'id numérique de la quête choisie — collision_rules.py
migré en conséquence (quete_id devient un entier, comme evenement_id).
Corrige aussi la miniature d'objet de la carte "🧩 Collision", 3× plus
grande (120px) comme demandé.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>