# Les trois premières fins de dimension — lignes 93 et 101

Décision de l’auteur du 14/10/2026 (méthode ELR, ligne 93) : la fuite se joue
dans le hall où Big Egg vient de tomber, en 3D. Ligne 101, même jour : la faille
reste ouverte, le joueur reprend la main, et c’est lui qui décide de suivre
Big Egg. D1, D2 et D3 suivent cet ordre. La fin de D4 garde son déroulement.

## Ordre canonique

1. Le vrai coup fatal termine la salle et accorde ses compteurs et crochets.
2. **Victoire** — `Dungeon._win_dimension_by_rift()` compte la dimension
   (`dimensions.<id>.total_completed`), pose `boss_defeated`, annonce et lance
   `on_complete`. La plongée continue : ni `run_finished`, ni remise à zéro.
3. `_story_settled()` laisse finir la réplique de défaite, le bandeau, puis la
   scène de fuite (`first_portal`…). Son déclencheur exige le compteur et la
   présence dans le hall.
4. La scène s’arrête à l’étape `escape` : la faille encore ouverte **reste dans
   la salle** (groupes `hall_rift` et `interactable`). Le héros, le HUD et les
   chiffres de combat reviennent. Si aucune scène n’a ouvert de faille (passée
   trop tôt, déjà vue dans cette sauvegarde), le hall l’ouvre lui-même.
5. **Question** — Agir devant la faille (teinte dorée, invite « Entrer dans la
   faille ») joue la scène de départ de la dimension (`departure_scene`).
   - **Oui** : la branche joue l’étape `follow`. Dès ce pas, le héros appartient
     au monde suivant (`note_rift_followed`). Un fondu masque ensuite le hall,
     `GameState.complete_dimension()` remet le monde à zéro, puis le restaurant
     suivant s’ouvre.
   - **Non** : rien ne change. Le joueur peut rester, rentrer au resto par la
     bande de retour (sans pénalité), puis revenir lors d’une autre plongée.
6. **Retour dans le hall** : tant que le monde n’a pas changé, le compteur de
   victoire tient lieu de mémoire. Le hall ne lance plus de vague, et Big Egg
   n’y revient pas. La faille rouvre à sa place, retenue dans
   `rooms.<hall>.rift_x/rift_y`, et l’objectif l’annonce. Rien n’est accordé
   deux fois.
7. **Zéro d’endurance** : le coup fatal ne termine plus la plongée. Une fois le
   butin rentré, la question s’ouvre d’elle-même. Un refus achève alors la
   plongée comme tout épuisement, avec tout le butin. La faille attend la
   plongée suivante.

Ne pas remettre la plongée à zéro puis attendre dans un donjon encore affiché :
`DiveMap` résoudrait sa première salle, et le pont rebâtirait la Vallée du Cratère
sur place. Le voile doit déjà couvrir l’écran au moment de la remise à zéro.

Une dimension du cycle **sans** scène de départ change de monde dès la fin de
ses scènes de victoire, comme avant la ligne 101. La dernière dimension et les
épreuves ne lisent pas ce champ.

Les déclencheurs `first_portal`, `second_portal` et `third_portal` gardent leur
compteur `times_fired` de portée méta : la fuite ne se rejoue pas dans le monde
suivant. Une sauvegarde qui l’a déjà vue (ligne 99, voyage F3 vers le hall)
n’a plus la fuite, mais reçoit quand même sa faille et sa question. Le voyage F3
ne réarme volontairement aucune scène unique : plusieurs d’entre elles tiennent
à un fait resté vrai et rejoueraient toutes à l’arrivée. Un voyage vers le hall
d’une dimension déjà gagnée y trouve la faille, sans Big Egg.

## Mise en scène réglable

Dans **Salles et dimensions**, chaque colonne du cycle porte une **Scène de
départ** (`departure_scene`). Les trois scènes `rift_departure_d1/d2/d3`
(« D1 · Faille · Suivre Big Egg ? ») posent la question. Leurs textes sont un
brouillon de l’agent, à retoucher : ce qui est perdu (argent, ingrédients,
améliorations du resto), gardé (armes, équipement, niveau des plats) et ce qui
attend. Elles ne se passent pas. Le oui mène à « Le chef la suit. » puis à
l’étape `follow`. Le non mène à la fin.

Dans **Scènes**, l’événement **Faille : fuite et poursuite** (`rift`) porte :

- `enemy` : la fiche de la coquille vaincue, déjà présente dans la salle ;
- `creature` : l’apparence de l’entité, ici le Malœuf ;
- `action` : `emerge`, `open`, `escape` ou `follow` ;
- `distance` : écart de la faille à la coquille, fixé à l’étape `emerge` ;
- `duration` : durée de l’étape, de 0,01 à 30 secondes.

La faille reste dans l’arène, même lorsque le dernier coup porte près d’un mur.
Une étape `follow` d’une scène de départ reprend la faille déjà ouverte dans la
salle, là où le joueur l’a trouvée. **Seule l’étape `follow` vaut départ** :
placée dans une autre scène, elle ferait aussi changer de monde.

`story_rift.gd` tient les positions et l’avancement en 2D, et sert de cible
d’interaction une fois debout. L’entité narrative n’a ni IA, ni collision, ni
compteur de monstre, ni butin. `story_rift_3d.gd` emprunte son modèle ou sa
primitive au catalogue et le shader des entrées. Une faille ouverte par le hall
n’a pas d’entité. `Bridge3D` suit le vrai héros pendant la pause de dialogue et
lui fait jouer la marche. Pendant une scène, le HUD, les chiffres de dégâts et
les avertissements du combat cèdent la place. Une faille debout ne les cache
plus.

Les coquilles des trois Big Egg portent `defeat_stays: true`, y compris leurs
niveaux, pour que l’entité sorte du vrai corps resté à terre. Le menu de pause
fige la chorégraphie. Passer la scène de fuite, même pendant l’`escape`, laisse
la faille ouverte et rend la main.

## Migrations et contrôles

- `migrate_dimension_finales_20261014.py` (ligne 93) : les étapes de fuite.
- `migrate_rift_departure_20261014.py` (ligne 101) : retire `follow` et
  « Le chef la suit. » des trois scènes de fuite, crée les trois scènes de
  départ, renseigne `departure_scene` et ajoute `ui.rift.enter` et
  `ui.rift.objective`.

Toutes deux écrivent dans le maître et dans le brouillon. Sans `--apply`, elles
annoncent les changements. Elles préservent les autres fiches, les textes, les
types de nombres et les fins de ligne. Une deuxième exécution ne change rien.

`python tools/dev/dev.py check --area dimension_finale` porte le coup fatal
avec l’arme du joueur dans les trois halls et lit la fuite. Il vérifie le
retour du contrôle et du HUD, puis la faille ciblée, teintée et invitante. Il
fait le vrai geste A, refuse, et revient dans le hall pour constater l’absence
de Big Egg, la faille à sa place et l’objectif. Il accepte ensuite et suit le
héros dans la faille, sous la vraie pause. Il couvre aussi une scène passée
dès son début ou pendant la fuite, une fuite déjà vue (ligne 99), et une
victoire à zéro d’endurance, avec un oui puis un non à la question automatique.

Contrôles associés : `d1_story`, `d2_story`, `d3_story`, `story_tools`,
`scene_reveal`, `visuals`, `flow`, `return`, `entrance` et les deux tests
`story_scene` du gestionnaire. Utiliser le runner pour isoler les sauvegardes.
