Supprime le concept de "quête" au profit d'un onglet unique "Déclencheurs"
portant toute la logique (dialogue, condition, marquage terminé) directement
sur l'objet de scène. Ajoute une nouvelle action "Modifier une variable"
(réutilisant le vocabulaire du graphe de flow) utilisable après une
collision, une interaction ou une branche de condition, ainsi qu'un
chaînage d'actions ("then") permettant d'enchaîner plusieurs actions à la
suite et d'étendre un déclencheur déjà posé sans le recréer.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
26 lines
1.1 KiB
Python
26 lines
1.1 KiB
Python
from ..screens_repo.list_screens import list_screens
|
||
from ..scenes.list_scene_objects import list_scene_objects
|
||
|
||
# Le widget "💬 Boîte de dialogue" (kind="dialogue_box") n'est pas un
|
||
# acteur de la scène — il n'a pas de sens comme "qui parle" dans un
|
||
# dialogue de quête, contrairement à N'IMPORTE QUEL AUTRE objet
|
||
# (personnage, décor, fond).
|
||
_EXCLUDED_KINDS = {"dialogue_box"}
|
||
|
||
|
||
def list_named_scene_object_names(slug):
|
||
"""Noms distincts de tous les objets de scène nommés (voir "ℹ️
|
||
Informations", templates/scene_edit.html) — n'importe quel kind
|
||
(personnage, décor, fond), toutes scènes 2D du jeu confondues : un
|
||
déclencheur est GAME-WIDE, son dialogue peut donc mettre en scène un
|
||
objet posé sur une autre scène que celle où la règle de collision se
|
||
déclenche. Ordre alphabétique, jamais de doublon."""
|
||
names = set()
|
||
for s in list_screens(slug):
|
||
if s["kind"] != "jeu_2d":
|
||
continue
|
||
for o in list_scene_objects(slug, s["id"]):
|
||
if o["kind"] not in _EXCLUDED_KINDS and o.get("name"):
|
||
names.add(o["name"])
|
||
return sorted(names)
|