# Plan de réalisation de l'histoire

Plan du 06/10/2026 pour faire entrer dans le jeu l'histoire bâtie pendant la
passe narrative. Il s'appuie sur trois sources :

- `docs/passe-narrative-deroule.md` : l'histoire décidée, et la liste des
  chantiers ;
- `docs/chantiers-histoire-moteur.md` : ce que le moteur sait déjà faire ;
- une lecture du code et des données faite le 06/10, qui a confirmé ou
  corrigé ces deux documents.

Les décisions qui restaient sont prises (section 6). Les cartes du carnet
Déroulé passent « Dans le jeu » au fil de la réalisation. Ce plan n'a
encore rien changé dans le jeu.

## 1. La stratégie : des tranches jouables, dimension par dimension

Il y avait deux façons d'avancer :

- **Par couches** : tous les ajouts au moteur d'abord, puis tout le contenu,
  puis les gros systèmes. Rien n'est jouable avant longtemps, et les
  problèmes d'assemblage n'apparaissent qu'à la fin.
- **Par tranches** : D1 conforme à l'histoire, puis D2, D3, D4, et enfin les
  fins. Chaque morceau de moteur se construit juste avant la dimension qui en
  a besoin. Chaque jalon livre une dimension jouable de bout en bout.

**Le plan retient les tranches.** Trois phases courtes les précèdent : une
préparation, le remplissage sans risque, et la colonne des cases, c'est-à-dire
l'épine de chaque dimension. Cette colonne se règle une fois pour toutes,
cases futures comprises, avant la première tranche, parce que tout le reste
s'y accroche.

Deux constats ont fixé l'ordre :

- **La D1 ne demande aucun ajout au moteur.** Sa cave en détour, sa passe,
  ses entrées murées, ses stations en cul-de-sac, son Big Egg dans le hall et
  sa fausse fin (une scène à choix) existent déjà sous une forme ou une
  autre. Une fois la colonne posée, elle sert donc de banc d'essai.
- **Le réseau du métro à vraies branches** est le plus gros morceau de
  moteur. Il arrive juste avant la D2, qui ouvre la ligne verte.

## 2. Les enjeux

- **La D4 porte la moitié du travail.** Elle demande trois systèmes neufs
  (l'IA-slop, les défis de l'Épreuve, protéger un objet), cinq des six
  soirées spéciales, presque toutes les quêtes de compagnons et la refonte du
  temple. C'est le jalon à découper le plus finement.
- **Le réseau à branches change la façon dont la course avance**, aujourd'hui
  une simple suite de cases. Le plan le greffe sur la colonne des cases, sans
  la remplacer (section 5).
- **Le chemin critique se resserre.** La Piste de Jay arrête la course de D2
  tant que le fusil de givre manque. MLD ferme la porte de Big Egg 3 tant que
  le plat au piment de lave manque. La barricade ferme la tour de D4 tant que
  la fourchette manque. Chacune de ces portes doit se comprendre, sinon le
  joueur se croit bloqué.
- **La boucle actuelle doit survivre à chaque phase.** Aujourd'hui, une
  dimension finit à Propaganda Plaza (D1 à D3) ou aux Étages exécutifs (D4).
  Le cycle reboucle de la D4 vers la D1. L'Épreuve est une plongée à part,
  lancée quand la salle 46 bloque faute de fourchette. Une phase qui touche à
  l'un de ces points doit laisser un jeu jouable de bout en bout.
- **Chaque ajout au moteur se paie en cinq endroits** : le moteur, le
  catalogue (`data_catalog.gd`), la validation PHP, l'outil de l'auteur et un
  contrôle, plus les textes `Loc`. Une « petite » addition ne l'est qu'au
  moteur.
- **Les courses s'allongent.** La D1 passe de 14 à 16 cases (la salle de MLD
  et le hall), la D2 de 18 à 21 et la D3 de 22 à 25 (le Pied du Mont en
  plus). L'endurance et l'économie ont été réglées sur les anciennes
  longueurs.
- **Le budget 3D** : la pieuvre, le castor, le gardien automate, le
  présentateur, Bob en trois couches de costume, les portes des salles à
  plusieurs sorties, et les décors neufs (la cave, les stations, le hall, le
  temple, l'ascenseur, le toit, la fontaine). Il faut des crédits Meshy ou
  Tripo, et des rigs pour des créatures qui ne sont pas humanoïdes. Ti-Gras
  peut reprendre le Rat de quai, en plus gros.

## 3. Ce que le moteur impose

### Les règles du projet que ces chantiers touchent

Elles viennent de `CLAUDE.md`, section 6 :

- **La logique 2D décide, le pont 3D ne fait que montrer.** La fuite de Carl,
  les branches du métro, les défis de l'Épreuve et l'IA-slop vivent côté 2D.
  La 3D ne fait que les rendre.
- **Les données d'auteur vivent dans le maître, et les modificateurs sont la
  vérité.** L'endurance infinie de Coach Chrome est donc un modificateur, pas
  une valeur qu'on écrase.
- **Tout texte affiché passe par `Loc`** : chaque scène, réplique et nom neuf
  a son identifiant.
- **Une salle est l'unité écrite.** Un seul axe de défilement, d'étendue 2.0
  au plus. Une salle de boss ne défile pas : le hall et le toit ne défilent
  pas, l'ascenseur (une salle de combat qui monte) défile.
- **Le restaurant a quatre états d'ouverture**, et un rideau ne se relève
  jamais seul. « Un soir de resto fermé », ce sont les deux rideaux baissés,
  le héros seul avec la brigade : le moment s'appuie sur ces états, sans les
  contourner.
- **Une fonction portée par un meuble suit toujours la même chaîne** :
  amélioration > modificateur > statistique `*_count` >
  `max_count_variable` > `restaurant_element_open_count()`. Le comptoir à
  épices et les souvenirs au mur la suivent.

### Ce qui survit au passage d'une dimension

`complete_dimension()` s'exécute après la victoire sur le boss qui termine
une dimension. Le code (06/10) montre ce qu'il garde :

- les améliorations, faits, quêtes et employés de portée « meta » ;
- les armes possédées ;
- les compteurs qui durent par nature : quêtes méta, conversations,
  déclencheurs « une seule fois ».

Il efface tout le reste :

- les améliorations et faits de portée « dimension » ;
- les pièces et les ingrédients ;
- les objets de quête et les quêtes de portée « run » ou « dimension » ;
- le plan du resto et les employés qui ne sont pas « meta » ;
- les modificateurs actifs, les effets du héros et les bonus de base ;
- le plancher des versions d'ennemis (voir plus bas).

Ce que cela veut dire pour l'histoire :

- **Le comptoir à épices** (`spice_station`) a aujourd'hui la portée
  « dimension ». Il passe en « meta » (décision 6) : sinon il disparaîtrait
  au passage en D4, où le plat de MLD et la quête de Gars-Rond en ont besoin.
- **Les séances de Coach Chrome** : leur avancement est de portée
  « dimension », pour qu'elles recommencent en D4. Leur réussite va dans un
  fait « meta », qui porte la récompense de D4.
- **La réparation du berimbau** peut déborder en D4 : elle doit vivre dans
  une quête ou des faits « meta ».
- **Ce qui se redébloque à chaque monde, « plus vite »** (les clients
  spéciaux, la dette de la pieuvre, le recrutement de MLD en D4) demande deux
  faits : un fait « dimension » pour l'état du monde, un fait « meta » pour se
  souvenir de la fois d'avant.
- **Les cadeaux de Bob sont des armes** : ils suivent le héros sans rien à
  faire.
- **Après la D4, le cycle reboucle sur la D1** (`cycle_dimension_id`).
  Une épreuve (une « dimension » d'ordre 0, comme l'Épreuve actuelle) ne remet
  rien à zéro.

### Les versions d'ennemis

Une fiche d'ennemi peut porter des versions (`levels`), chacune avec ses
conditions, son nom, sa teinte et ses valeurs. Seuls deux ennemis s'en
servent aujourd'hui (l'écureuil « rouge » après 25 morts, et un boss à
phases). Avec `no_return`, une version atteinte devient un plancher : les
versions inférieures sont exclues jusqu'à la fin de la dimension, et si sa
propre condition retombe, la créature ne sort plus du tout. Sans `no_return`,
chaque apparition relit les conditions : c'est ce que demandent les
bestioles slop (décision 7).

## 4. Les pièges

Ils sont numérotés pour que les phases puissent y renvoyer.

### Dans les données

1. **Insérer une case décale toutes les cases suivantes.** Le moteur retrouve
   la salle d'une case par son champ `level`, pas par son identifiant
   (`dive_map.gd`, `base_room_id`). Les identifiants peuvent donc rester : un
   `d2_l15_…` qui vit en case 16, c'est laid, mais sûr. La même migration
   doit décaler, d'un coup, quatre choses : les `level` des salles suivantes,
   les `replaces` des salles spéciales de cette dimension, les `exit_level`
   absolus et les déclencheurs qui citent une case. Quatre scripts
   (`biome_dressing_3d.gd`, `room_terrain.gd`, `relief_check.gd`,
   `bob_quest_check.gd`) et 301 références de données nomment des salles par
   identifiant : ils restent justes tant que les identifiants ne changent
   pas. **On pose toutes les cases futures en une seule passe**, pour ne
   décaler qu'une fois.
2. **Une salle spéciale à 100 % n'est pas garantie.** Si une autre salle
   spéciale peut tomber sur la même case, la probabilité la plus haute décide
   seulement s'il y a remplacement ; le choix se fait ensuite au poids. Le
   sanctuaire « garanti tant qu'il reste une étape » doit donc écarter ses
   concurrentes par une condition.
3. **Un champ neuf se perd sans bruit au chargement**, parce que
   `data_catalog.gd` recopie les champs un par un. Une donnée neuve bien
   remplie peut aussi n'être émise par rien. Une statistique neuve vit dans
   les deux fichiers : le maître remplace `GAME_VARIABLES`.
4. **Le chargement du maître peut retomber aux valeurs par défaut** sans
   erreur visible. Après une migration, vérifier `loaded_from_master` et les
   salles.
5. **L'auteur publie depuis son navigateur pendant qu'on travaille.** Une
   migration se garde sur la valeur d'origine, traite les deux fichiers et
   passe par `validate_and_normalize`. Jamais de `git checkout` sur les
   données. Vérifier le brouillon avant chaque migration.
6. **`seed_ui_texts` reformate les nombres** sur tout le maître : repasser
   par la validation PHP.

### Dans le moteur

7. **Les déclencheurs partent sur un front montant**, et aucun ne part en
   headless. Un contrôle qui les éprouve doit les rallumer.
8. **Un `class_name` neuf reste invisible aux contrôles** tant que l'éditeur
   n'a pas régénéré le cache. Un harnais `--script` ne doit pas précharger un
   script du jeu.
9. **Dans un contrôle, il faut deux attentes de frame** pour lire ce qu'un
   `_process` a produit.
10. **Une créature sous un nœud désactivé** sort de l'espace physique. Les
    figurants des scènes doivent en tenir compte.
11. **Une instance libérée plante dans une variable typée.** Cela concerne
    Carl qui fuit et l'objet à protéger qui disparaît. Tester avec
    `is_instance_valid` ou `== null`.
12. **L'Épreuve actuelle tient à trois morceaux** : la dimension
    `fork_trial`, le verrou de la salle 46 qui la met en file d'attente
    (`on_blocked` > `gate_pending`), et la fourchette donnée par son
    `on_complete`. Le smoke test les éprouve. La refonte du temple doit les
    remplacer ensemble et réécrire ces contrôles.
13. **La fin de dimension est un drapeau de salle** (`ends_dimension`). Le
    déplacer, c'est déplacer la fin du monde, avec ses scènes et ses
    déclencheurs.
14. **Jamais de `no_return` sur une version slop** : la bestiole
    disparaîtrait des vagues une fois le monde guéri.
15. **Le réseau à branches touche beaucoup de choses** : la position dans la
    course (aujourd'hui un simple numéro de case), la sortie de salle (le
    quota de la porte), la retraite, le HUD et l'objectif, le pont 3D (les
    portes), l'outil de l'auteur et les contrôles de `dive_map`.

### Dans les tests

16. **Le smoke test lit et réécrit la vraie sauvegarde** : toujours passer
    par `dev.py check`. Plusieurs de ses assertions sont instables : répéter
    avant de chercher une régression. Ses échecs préexistants se comparent à
    un rapport de référence (`--baseline`), pas au vert.
17. **Un test neuf doit échouer une fois**, régression réintroduite, puis
    passer.
18. **Drive peut verrouiller `report.json`** pendant une batterie complète.
    Lire alors les `output.log` du run plutôt que tout relancer.
19. **Un contrôle n'emprunte pas les données de l'auteur** : il fabrique ses
    propres fiches. Sinon il casse dès que l'auteur rééquilibre.

### Dans le contenu 3D

20. **Les crédits Meshy et Tripo se présentent avant d'être dépensés.**
21. **Les créatures non humanoïdes** (la pieuvre, le castor) ne se rigguent
    pas par l'API Meshy, qui ne fait que les humanoïdes. Mesh2Motion (CC0) a
    servi pour le goéland.
22. **L'échelle d'un modèle** : la fabrique ajuste sur la hauteur, ce qui
    gonfle les objets larges au-delà de leur collision.
23. **La lumière meurt à deux pas**, parce qu'une OmniLight s'atténue en
    unités du monde. Le défi « dans le noir » de l'Épreuve en dépend.
24. **Les particules billboard** posent trois pièges : l'échelle, la couleur
    sRGB et la durée de vie. **Les captures** se font avec `--fixed-fps 60`.
25. **Allonger une liste tirée modulo sa taille redistribue tout.** Ajouter
    des créatures a déjà changé la silhouette de 47 créatures sur 61.
26. **L'ascenseur défile à la verticale.** Avec la vue actuelle, le décor du
    bord nord passe sous le bandeau du HUD : vérifier le cadrage.

### Dans la méthode et la conception

27. **Vérifier ce qui existe avant de construire.** Le journal et les cartes
    ont déjà eu tort : les éléments de salle apparaissaient déjà, et la salle
    du resto vit hors champ depuis le 23/09.
28. **Les sauvegardes sont jetables** jusqu'à nouvel ordre : aucune migration
    de sauvegarde à prévoir.
29. **Une porte d'histoire demande un indice clair.** Jay en D2, MLD en D3 et
    la barricade en D4 arrêtent la course : le joueur doit savoir quoi
    chercher (une réplique, une entrée du journal, la carte du monde).

## 5. Ce que l'analyse a reclassé

- **« Restaurant fermé » et « retour de plongée »** sont de petites additions,
  pas un système. Les déclencheurs relisent déjà leurs conditions sur un
  front montant. Il suffit d'exposer l'état fermé du resto, et un fait posé
  par `end_run()`.
- **Le métro aura de vraies branches** (décision 3), un nouveau système. La
  technique proposée : **greffer les branches sur la colonne des cases**.
  - La colonne (`level`) reste l'épine de la course.
  - Une branche est une sortie nommée vers une salle précise (une station, un
    tunnel, un retour), avec ses conditions ; chaque sortie est une porte
    visible dans la salle.
  - Revenir dans une salle déjà faite la rejoue avec quelques traînards.
  - Entre stations reliées, la rame ouvre la carte du monde pour choisir sa
    destination.

  Rien de ce qui repose sur `level` ne casse (les scripts, les références,
  le décor, les contrôles). Les briques déjà là servent toujours : le
  détour (la sortie « 0 » d'une salle spéciale), la sortie à grand pas
  (`exit_level`), la porte qui exige un objet. Le Mont de D3 et la Ville
  souterraine de D4 deviennent de vraies branches. Le hall de D4 reste une
  seule salle, revisitée : la barricade y dépend de la fourchette.
- **Les bestioles slop sont du remplissage** : une version conditionnelle de
  chaque fiche, sans `no_return`, sur un fait « monde corrompu » ; la fiche
  normale prend la condition inverse. Une migration peut les créer, puis on
  les retouche. Restent neufs : le fait lui-même, et le décor, les affiches,
  les écrans et le resto qui glitchent.
- **La course perdue contre Jay se joue avec ce qui existe** : Jay est
  intouchable sans givre (une résistance conditionnelle), la salle ne se vide
  donc pas, l'endurance s'épuise, et les ambulanciers ramènent le héros.
- **La fausse fin de D1 est du remplissage** : les scènes savent déjà
  proposer un choix. Le montage photo est une scène, et la photo au mur un
  décor sous condition. Seul le succès « Compagnons de vie » demanderait un
  système neuf.
- **La fourchette se donne déjà sans code dédié** : l'Épreuve actuelle la
  remet par un crochet. Le gardien du temple pourra la donner par le crochet
  de sa salle (`on_cleared`).

## 6. Les décisions (prises le 06/10)

| # | Question | Réponse |
|---|---|---|
| 1 | Les identifiants de salles | Ils restent tels quels (par défaut, faute d'objection). |
| 2 | La salle de MLD | MLD est le boss du Centre-ville, dans sa dernière salle. Propaganda Plaza reste une salle ordinaire avant lui ; la Grande République est une case de plus, et Big Egg se bat dans le hall. |
| 3 | Le Pied du Mont en D3 et D4 | Une case de plus, la même salle qu'en D2. |
| 4 | Le métro | De vraies branches, contre la recommandation. |
| 5 | Choisir sa route | Plusieurs portes visibles dans la salle. |
| 6 | Le comptoir à épices en D4 | Il suit le héros, en portée « meta », selon la règle de l'auteur « ce qui appartient au resto suit le héros » (par défaut). |
| 7 | Les bestioles slop | Une version conditionnelle de chaque fiche, sans `no_return`, qui redevient normale quand le monde guérit (vérifié dans le code). |
| 8 | Une salle revisitée | Quelques traînards : une petite vague réduite. |
| 9 | Entre stations reliées | La rame, et la carte du monde pour choisir sa destination. |
| 10 | « Un soir de resto fermé » | Les deux rideaux baissés, le héros seul avec la brigade : la définition de la carte (par défaut). |
| 11 | La course perdue contre Jay | Le héros tombe, les ambulanciers le ramènent, la plongée s'arrête. Tant que le fusil de givre manque, la Piste arrête la course de D2. |
| 12 | Le Mont en D3 | MLD ne cède qu'à un plat au piment de lave : sans lui, la porte de Big Egg 3 reste fermée. Le Mont devient obligatoire en D3. |
| 13 | Après la vraie fin | On continue au restaurant interdimensionnel, dans un monde guéri. |
| 14 | Les textes de cartes en retard | Réécrits d'après leurs notes, le 06/10. |

Restent à régler pendant les phases, sans rien bloquer : les chiffres
d'équilibrage (le seuil de Steve, les quêtes, les PV), le déclencheur fin de
chaque quête, et le détail des étapes de MLD.

## 7. Les phases

Chaque phase donne : ce qu'elle fait, ce dont elle dépend, ce qu'elle touche
dans le jeu existant, ses pièges propres, sa validation (les niveaux de
`CLAUDE.md`, section 3), et quand elle est finie.

### Phase 0 — Préparer

- **Faire** :
  - la sauvegarde hebdomadaire (`dev.py backup`, due vers le 07/10, avec son
    rapport) ;
  - un commit de point de reprise ;
  - une batterie `dev.py check --area gameplay`, qui sert de rapport de
    référence.
- **Fini quand** : le rapport de référence est noté.

### Phase 1 — Le remplissage sans risque

- **Faire** :
  - les renommages : Shaman Musicalo en le Saule (36 noms affichés), Jérémie
    en Jay, le Sanctuaire du sommet en le Sommet. Les identifiants internes
    ne bougent pas.
  - la description de Pyro Pete ;
  - les vagues : Steve sort de la D1 (il reste de la D2 à la D4), Coach
    Chrome sort de la D2 (il reste en D3 et D4) ;
  - Jay en portée « meta » ;
  - les embauches de Jay et de l'Abominable, débloquées par leur défaite au
    lieu du seuil fictif. Les autres attendent leur jalon.
  - la fiche de MLD, qui devient « maître d'hôtel ».
- **Dépend de** : rien.
- **Touche** : les textes et leur `Loc`, les fiches d'employés et d'ennemis,
  les vagues de D1 et de D2.
- **Pièges** :
  - les pièges 3 à 6 : une migration par lot, gardée, sur les deux
    fichiers ;
  - ne retirer aucun combat avant que ce qui le remplace existe. Le
    sanctuaire du Saule de D3 garde donc son boss jusqu'à la phase 7.
- **Validation** : niveau 2 (`smoke_test` et le contrôle de la zone).
- **Fini quand** : les cartes concernées passent « Dans le jeu ».

### Phase 2 — La colonne des cases

- **Faire** : poser **en une seule passe** toutes les cases futures de la
  colonne, même vides, avec des salles provisoires.
  - **D1 à D3** : Propaganda Plaza devient une salle ordinaire ; puis la
    Grande République, salle du boss MLD, dernière du Centre-ville ; puis le
    hall du World Egg Center, où Big Egg se bat et qui porte la fin de
    dimension.
  - **D2 à D4** : le Pied du Mont Royal, avant le Centre-ville en D2, avant
    le Mont en D3 et D4.
  - **D4** : la Grande République ; le hall, où passe Big Egg 4 ; le
    « Blocage » retiré ; l'ascenseur, provisoire, avant la tour ; le toit,
    qui remplace les Étages exécutifs.
  - **La cave aux rats** : une salle spéciale, en détour en D1 (sortie 0),
    puis en raccourci en D2 (`exit_level`). Pas de case à ajouter.
  - **Pas encore** : le Mont de D3 et la Ville souterraine de D4 restent dans
    la colonne. Ils en sortent pour devenir des branches aux phases 7 et 9,
    une fois le réseau construit.
- **Dépend de** : la phase 0.
- **Touche** :
  - la colonne de chaque dimension, les `replaces` des salles spéciales et
    les sorties absolues ;
  - les déclencheurs qui citent une salle, et les scènes de fin de
    dimension ;
  - le décor 3D de chaque salle et la grille de l'outil ;
  - les contrôles qui supposent un nombre de salles.
- **Pièges** :
  - le décalage des niveaux (piège 1) et le drapeau de fin (piège 13) ;
  - la boucle actuelle : jusqu'à la phase 9, la D4 garde l'Épreuve à part
    et le verrou de la salle 46, que porte désormais le toit ;
  - jusqu'à la phase 10, le toit garde le drapeau de fin de dimension ;
  - le hall est une salle de boss : il ne défile pas ;
  - MLD a 3 750 PV, beaucoup trop pour la D1 : une valeur provisoire dès
    maintenant, dimension par dimension ;
  - les courses s'allongent (voir les enjeux).
- **Validation** : niveau 3, la batterie complète, et `bridge_3d_check` pour
  le décor.
- **Fini quand** : chaque dimension se joue de bout en bout dans son nouvel
  ordre, salles provisoires comprises.

### Phase 3 — Jalon D1 (sans ajout au moteur)

- **Faire** :
  - **la cave et Ti-Gras** : un Rat de quai plus gros, avec une barre de
    boss. Son ticket mâchouillé sert de passe.
  - **le métro de D1** : les entrées murées, les stations en cul-de-sac du
    Cratère et des quais (des détours, pour l'instant), avec leurs trois
    récompenses et les signes des ancêtres du Saule ;
  - **les rencontres** : Bob et eLTuna au Cratère, la grue que Gab fait
    tomber, le sigle du KMLD au Centre-ville, le Saule rare dans sa clairière
    du Cratère ;
  - **MLD**, vrai combat de gardien dans sa Grande République ;
  - **Big Egg dans le hall** : « Bonjour, petit chef », puis la fausse fin.
    C'est une scène à choix : le montage photo, puis le retour au refus, et
    la photo au mur ;
  - **le premier portail**.
- **Dépend de** : la phase 2.
- **Touche** : le Vieux-Port, le Centre-ville et le Cratère de D1, la quête
  de Bob (déjà dans le jeu), les scènes.
- **Pièges** :
  - la D1 garde son emplacement de consommable jusqu'à la phase 5 : le
    passer à zéro sans l'émissaire laisserait le joueur sans poche ;
  - les créatures neuves passent par les pièges 20 à 25.
- **Validation** : niveau 2.
- **Fini quand** : la D1 se joue comme le raconte l'histoire, sauf les poches.

### Phase 4 — Le moteur pour la D2

- **Faire**, chacun livré avec le catalogue, la validation PHP, l'outil et un
  contrôle neuf (rouge puis vert) :
  1. **le réseau à vraies branches**, le plus gros morceau. Des sorties
     nommées vers une salle précise, avec leurs conditions ; plusieurs portes
     visibles par salle ; le retour dans une salle déjà faite, avec quelques
     traînards ; la position dans la course, la retraite, le HUD, les portes
     dans le pont 3D, et l'édition des sorties dans l'outil. Les stations de
     D1 peuvent ensuite y passer.
  2. les moments **« restaurant fermé »** (les deux rideaux baissés, le héros
     au resto) et **« retour de plongée »**. Le premier sert à l'émissaire,
     le second aux quêtes d'eLTuna et de Gab ;
  3. des **résistances conditionnelles** : Jay intouchable sans givre. Elles
     resserviront au gardien de la D4 ;
  4. un **filtre de dégâts sur les objets à casser** : les débris que seul un
     plat explosif fait sauter ;
  5. la possibilité de **zéro emplacement de consommable** : retirer le
     minimum de 1, inscrit à la fois dans le code (`maxi(1, …)`) et dans la
     variable du maître (`minimum`). La valeur de base reste à 1 jusqu'à la
     phase 5 ;
  6. **l'écran de boutique**, pour l'Étal de la pieuvre ;
  7. **la fuite d'un ennemi** sous un seuil de vie : Carl ;
  8. **le client capricieux** : il change de plat à intervalles, même pour un
     plat indisponible, et paie au hasard (Steve).
- **Dépend de** : la phase 2.
- **Touche** :
  - les branches : `dive_map.gd`, `dungeon.gd`, la sauvegarde de la course,
    le pont 3D ;
  - les deux moments : `story_triggers.gd` et `game_state.gd` ;
  - les résistances : le combat ;
  - les objets à casser : `room_element.gd` ;
  - les emplacements : `game_state.gd` et la variable du maître ;
  - les clients : `customer.gd` et `restaurant.gd` ;
  - une interface neuve pour la boutique.
- **Pièges** : 3, 7, 11, 15 et 17 à chaque ajout.
- **Validation** : niveau 3, limité aux contrôles touchés, puis la batterie,
  l'impact des branches étant transversal.
- **Fini quand** : chaque ajout a son contrôle vert et s'édite dans l'outil.

### Phase 5 — Jalon D2

- **Faire** :
  - **la brigade** : Bob se réengage par la quête pour trois dans la Serre,
    et eLTuna rejoint. Gab, battu de nouveau, déblaie.
  - **Jay** :
    - la course perdue : Jay est intouchable, le héros tombe, et les
      ambulanciers le ramènent ;
    - le soir même, au resto fermé, l'émissaire (voir plus bas) ;
    - Gab veut un plat chaud, puis remet le fusil de givre ;
    - à la course suivante, Jay est battu au givre et rejoint pour toujours.
  - **l'émissaire au resto fermé** : la carte du monde (d'abord un simple
    objet de quête), la recette des plats explosifs, et le premier emplacement
    de consommable. **L'emplacement de base passe alors à zéro**, et les
    poches restent verrouillées jusqu'à ce cadeau. La note de K. accueille le
    héros dans le local neuf.
  - **le Mont** : au Pied du Mont Royal, le soufre du Mont, et Gars-Rond qui,
    de loin, nous dit de nous en aller ;
  - **la ligne verte**, en vraies branches : les stations, les tunnels, les
    débris, les plats explosifs ;
  - **Carl** : sa fuite, sa jambe sous un seuil de vie, son PNJ au Dépotoir
    sauvage ;
  - **la pieuvre** : son combat au Casino-barge, sa dette, l'Étal dans les
    stations, et la cliente spéciale aux huit commandes ;
  - **Steve**, client capricieux après N Steve battus ;
  - **MLD**, encore un vrai combat de gardien ;
  - **les indices sur Bob**.
- **Dépend de** : les phases 3 et 4.
- **Touche** : le restaurant (clients spéciaux, emplacements, améliorations
  « poches »), le Parc olympique de D2, le Centre-ville de D2.
- **Pièges** :
  - l'emplacement à zéro et le cadeau de l'émissaire se livrent ensemble ;
  - la Piste arrête la course tant que le fusil manque : l'offre de Gab doit
    se comprendre (piège 29) ;
  - la pieuvre se rigge hors de Meshy (piège 21).
- **Validation** : niveau 2, plus `bridge_3d_check` pour les créatures.
- **Fini quand** : la D2 se joue comme le raconte l'histoire, et la D1 se
  joue sans plats emportés.

### Phase 6 — Le moteur pour la D3

- **Faire** :
  1. **offrir une amélioration par un crochet** : le comptoir à épices,
     passé en portée « meta » (décision 6) ;
  2. **l'écran de la carte du monde** : où l'on est, les indices des quêtes,
     ceux du Courrier, les informations de l'Étal. Une fois le réseau
     rallumé, il sert aussi à choisir sa station depuis la rame ;
  3. **un client dont la présence applique un modificateur** : Coach Chrome
     qui entraîne les serveurs.
- **Dépend de** : la phase 4 (le réseau).
- **Touche** : le registre des crochets, une interface neuve, le restaurant.
- **Pièges** : les mêmes que la phase 4.
- **Fini quand** : chaque ajout a son contrôle vert.

### Phase 7 — Jalon D3

- **Faire** :
  - **le réseau** : le Ti-Gras de D3 et ses fusibles, la ligne orange, le 2e
    sous-sol, la centrale qui rallume le réseau ; ensuite, la rame relie
    toutes les stations ;
  - **le Mont devient une branche**, rejointe par la station du Mont Royal ;
    en surface, le Pied du Mont mène au Centre-ville ;
  - **sur le Mont** : Pyro Pete qui brûle la montagne, la voix des
    haut-parleurs, Gars-Rond trompé puis battu. Il chasse Pyro Pete, lance la
    collecte du piment de lave, et offre le comptoir à épices.
  - **le Saule** : son sanctuaire devient une rencontre sans boss. Il confie
    son berimbau brisé, à réparer en quête « meta ».
  - **les recrues** :
    - Gab, par un plat épicé à emporter ;
    - Gars-Rond, après la collecte ;
    - **MLD**, qui ne cède qu'à un plat au piment de lave : sans lui, la
      porte de Big Egg 3 reste fermée. Converti, il rejoint, puis offre un
      combat amical ;
    - Bob se réengage au Mont, et ramène eLTuna.
  - **Coach Chrome devient le boss de la piste**, à la place de Jérémie, en
    D3 et en D4, d'un même bloc. Ses trois séances : l'avancement en
    « dimension », la réussite en « meta ». La course amicale contre Jay (25 %)
    ne vient qu'une fois Coach battu.
  - **les clients spéciaux** : Coach Chrome, Ti-Gras, le Carl de D3 en
    habitué ;
  - **les indices** : le buffet du régime pour Bob, et l'entité qui parle.
- **Dépend de** : les phases 5 et 6.
- **Touche** : le Parc olympique et le Mont de D3, les vagues de Pyro Pete
  (moins nombreuses une fois Gars-Rond battu), les fiches de Coach Chrome et
  de Jérémie, la salle de MLD, le restaurant.
- **Pièges** :
  - le chemin critique de D3 passe désormais par Ti-Gras, la ligne orange,
    Gars-Rond et le comptoir : chaque étape doit pointer vers la suivante
    (piège 29) ;
  - Coach Chrome n'a que 125 PV aujourd'hui.
- **Fini quand** : la D3 se joue comme le raconte l'histoire.

### Phase 8 — Le moteur pour la D4

- **Faire** :
  1. **les soirées spéciales** : des scénarios au resto, en données (scènes et
     événements), une par soir de resto fermé, dans l'ordre où leurs
     déclencheurs tombent. Le dîner aux chandelles de Jay sert de premier cas
     (trois plats dans l'ordre, sans retard) ;
  2. **une condition sur un modificateur de dimension** : l'endurance infinie
     en D4, seulement si les séances sont faites ;
  3. **l'IA-slop comme état du monde** : un fait « monde corrompu », posé par
     Big Egg 4 et levé par la barricade détruite. Les affiches et les écrans
     glitchent, resto compris, et le décor bugge. Un même aspect glitché sert
     aux versions slop des bestioles.
  4. **les défis de l'Épreuve** : le noir (une lumière autour du héros), le
     chrono de salle, le rythme. « Sans arme » existe déjà : c'est un
     modificateur de salle.
  5. **protéger un objet pendant une vague** : les fleurs d'eLTuna ;
  6. **des conditions d'apparition d'un élément de salle**, pour les
     inscriptions de l'enquête au berimbau, si l'inversion des conditions de
     disparition ne suffit pas.
- **Dépend de** : la phase 4 (le moment « restaurant fermé »).
- **Touche** :
  - le cycle du restaurant, les clients et l'économie ;
  - le pont 3D, qui montre l'IA-slop ;
  - la lumière 3D, pour le noir ;
  - le combat et les vagues.
- **Pièges** :
  - les soirées restent en données, pour ne pas devenir six scripts à part ;
  - les soirées respectent les quatre états d'ouverture ;
  - le défi du noir dépend de la lumière 3D (piège 23).
- **Fini quand** : chaque système a son contrôle vert, et le dîner de Jay se
  joue.

### Phase 9 — Jalon D4

- **Faire** :
  - **le hall** : Big Egg 4, l'IA-slop qui se répand, la barricade ;
  - **les bestioles slop** : une version conditionnelle de chaque fiche, sans
    `no_return` (piège 14), créée par migration puis retouchée ;
  - **le métro** : le Ti-Gras de D4, vite fait ;
  - **la Ville souterraine devient une branche**, derrière la porte de la
    Station fantôme, qui exige la mélodie ;
  - **le chemin de la fourchette** :
    - le combat contre le Saule ;
    - l'enquête au berimbau, dont les phrases vont sur la carte ;
    - la Station fantôme ;
    - la Ville souterraine, avec la fête de l'Abominable : le combat est son
      jeu de fête ;
    - le temple et ses quatre défis ;
    - le gardien et ses protections ;
    - la fourchette.
  - **le retrait de l'Épreuve actuelle** : sa dimension, son verrou, et les
    contrôles qui l'éprouvent (piège 12) ;
  - **le 2e passage au Centre-ville** : le Studio de nouvelles (la voix de la
    propagande enfin vue, les ingrédients du plat de Bob) ;
  - **le hall, revisité** : la fourchette détruit la barricade, le monde
    guérit ;
  - **le Mont** : le castor, sa fontaine à casser et son pont-barrage, puis
    la structure de Gars-Rond ;
  - **les quêtes de D4** :
    - les fleurs d'eLTuna, jusqu'aux Serres de production ;
    - la soirée du port de Gab ;
    - Gars-Rond, ses outils et sa structure ;
    - la liste d'invités de l'Abominable et sa fête ;
    - le référendum de MLD ;
    - le concert du Saule et les instruments ;
  - **les réengagements** : Gars-Rond par un combat amical, MLD par le même
    plat au piment de lave ; et le resto de Carl qui envoie ses clients en
    trop ;
  - **le haut de la tour** : l'ascenseur, la tour, le toit.
- **Dépend de** : les phases 7 et 8.
- **Pièges** :
  - la D4 compte 46 cases aujourd'hui et sera la plus chargée : vérifier
    qu'une course reste faisable ;
  - le castor se rigge hors de Meshy (piège 21) ;
  - l'ascenseur défile à la verticale (piège 26).
- **Fini quand** : la D4 se joue jusqu'au toit, quêtes comprises.

### Phase 10 — Le final et les fins

- **Faire** :
  - **le combat final scénarisé** :
    - Bob vole la fourchette, et son costume tombe en trois couches ;
    - l'estomac du héros s'éveille ;
    - chaque compagnon intervient avec son geste ;
    - Big Egg avale la fourchette ;
    - l'entité attaque dans sa forme finale, et Bob encaisse à la place du
      héros.
  - **la fin satisfaisante** : le générique, « … ou pas. », l'écran de fin de
    plongée habituel, puis le retour au restaurant juste après la barricade ;
  - **la vraie fin** : la fourchette retrouvée dans l'œuf, l'omelette
    partagée, Bob minuscule, la fourchette au mur ; puis on continue de jouer
    au restaurant interdimensionnel, dans un monde guéri ;
  - un **système de succès**, si l'on garde « Compagnons de vie ».
- **Dépend de** : toutes les tranches, et les quêtes, qui sont les
  conditions de la vraie fin.
- **Touche** : `_complete_dimension_flow` (`dungeon.gd`), le cycle des
  dimensions, l'aspect du restaurant après la vraie fin.
- **Pièges** : aujourd'hui, le boss du toit appelle `complete_dimension()` :
  tout s'efface, et le cycle repart en D1. Le toit doit terminer la plongée
  sans changer de monde, dans les deux fins. Le « retour juste après la
  barricade » vient alors tout seul : les faits de la D4 restent, et le
  joueur retourne au toit quand il veut.
- **Fini quand** : les deux fins se jouent, et la partie continue après
  chacune.

### Phase 11 — Les finitions

- **Faire** :
  - l'équilibrage : le seuil de Steve, les chiffres des quêtes, les PV de Big
    Egg 1 (90 aujourd'hui, une valeur de test) et de MLD, la Chevauchée (5 et
    5 au lieu des 25 et 25 des textes) ;
  - la version anglaise et ses jeux de mots ;
  - les scènes peaufinées.

## 8. Ce qui avance en parallèle

- **Les modèles 3D ont un délai** : crédits à présenter, rig, retouches dans
  Blender. On les lance une phase avant leur jalon : la pieuvre pendant la
  phase 4, le castor et le gardien pendant la phase 8.
- **Les scènes et les répliques** s'écrivent d'avance dans le carnet Déroulé :
  la réalisation ne fait que les reporter.
- **L'équilibrage** attend que les courses aient leur longueur définitive,
  c'est-à-dire la phase 2, puis chaque jalon.

## 9. L'ordre, en une ligne

Préparer > remplissage sans risque > colonne des cases > D1 > moteur D2,
dont le réseau à branches > D2 > moteur D3 > D3 > moteur D4 > D4 > final et
fins > finitions.

## 10. Suivi

- Les tâches de chaque phase, à cocher : `docs/taches-realisation-histoire.md`.
- Chaque phase finit par un commit, et par les cartes du carnet passées
  « Dans le jeu », avec la date.
- La sauvegarde hebdomadaire reste due chaque semaine, avec son rapport.
- Si l'auteur le veut, une ligne par phase peut aller dans le Sheet de suivi.
