Intègre un chat IA capable de manipuler la scène via les mêmes fonctions que l'éditeur manuel (objets, variables, déclencheurs, images générées), avec conversations multiples par écran façon Claude. Corrige au passage le rafraîchissement pjax hors-ordre, l'onglet IA/déclencheurs vide après sélection d'un objet, la comparaison de booléens dans les conditions, et le blocage du glisser-déposer hors du cadre caméra après un redimensionnement de fond par l'IA. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
26 lines
1.3 KiB
Python
26 lines
1.3 KiB
Python
from .get_scene_object import get_scene_object
|
|
from .set_scene_object_collision_rules import set_scene_object_collision_rules
|
|
from ..rendering.collision_rules import resolve_collision_rules, sanitize_collision_rules, set_then_action_in_rules
|
|
|
|
|
|
def append_action_to_trigger(slug, object_id, after_id, raw_action):
|
|
""""+ Ajouter une action" en bout de chaîne — extrait de
|
|
routes/triggers/triggers.py::trigger_append_action pour être
|
|
l'UNIQUE chemin d'écriture, partagé par la route HTTP ET par l'agent
|
|
IA (voir ai/tools.py) : ni l'un ni l'autre n'écrit `_collision_rules`
|
|
directement, tous deux passent par ici. `after_id` : dialogue.id
|
|
(feuille "dialogue") ou id (feuille "variable") de la DERNIÈRE
|
|
feuille d'une chaîne. Renvoie False si l'objet, `after_id`, ou
|
|
`raw_action` sont invalides, ou si la feuille visée a déjà un "then"
|
|
(jamais écrasé par cette fonction — set_then_action_in_rules ne fait
|
|
qu'ajouter en bout de chaîne réelle)."""
|
|
obj = get_scene_object(slug, object_id)
|
|
if obj is None:
|
|
return False
|
|
rules = resolve_collision_rules(obj)
|
|
if not set_then_action_in_rules(rules, after_id, raw_action):
|
|
return False
|
|
sanitized = sanitize_collision_rules(rules)
|
|
set_scene_object_collision_rules(slug, object_id, sanitized)
|
|
return True
|