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>
18 lines
672 B
Python
18 lines
672 B
Python
from flask import jsonify, request
|
|
|
|
import db
|
|
|
|
from core.flask_app import app
|
|
|
|
|
|
@app.route("/game/<slug>/quests/<int:quest_id>/dialogues", methods=["POST"])
|
|
def quest_dialogues(slug, quest_id):
|
|
"""Toujours les 3 colonnes ENTIÈRES (voir db.set_quest_dialogues) —
|
|
le client (renderQuestDialogueColumns, quest-editor.js) poste l'objet
|
|
complet à chaque modification plutôt qu'une réplique isolée."""
|
|
body = request.get_json(silent=True) or {}
|
|
dialogues = db.set_quest_dialogues(slug, quest_id, body.get("dialogues"))
|
|
if dialogues is None:
|
|
return jsonify({"error": "quête introuvable"}), 404
|
|
return jsonify({"dialogues": dialogues})
|