# Phase 7 – Score de reproduction du zoo **Objectif :** Exposer un score de reproduction agrégé (birthCount, feedingRate) pour affichage et pour attacher à l’entité vendue (reproductionScoreAtSale). Réutiliser `getReproductionScore` pour le délai de reproduction (phase 6) et pour l’affichage. **Référence :** `docs/plan-implementation-rappel-grandes-regles.md` phase 7. ## Impacts - Un seul « zoo score » : `getReproductionScore(state)` utilisé dans la game loop pour le délai de reproduction et pour remplir `state.reproductionScore` (affichage). - Carte du monde : case « Score repro » sous le nom du zoo (joueur). - Vente : les entrées `saleListings` créées (nursery full en reproduction) portent `reproductionScoreAtSale` pour usage côté acheteur (phase 10). ## Modifications - **types.js** : `GameState.reproductionScore?`. - **game-loop.js** : après `tickReproduction`, `state.reproductionScore = getReproductionScore(state)` ; import de `getReproductionScore` depuis `reproduction.js`. - **reproduction.js** : lors du push en `saleListings` (NoFreeNursery), ajout de `reproductionScoreAtSale: getReproductionScore(state)`. - **ui.js** : pour le zoo joueur sur la carte du monde, ajout d’une ligne « Score repro: X.X » sous le nom (classe `world-map-zoo-reproduction-score`). - **main.css** : style `.world-map-zoo-reproduction-score`. ## Modalités de déploiement - Aucun déploiement serveur. Rechargement client suffit. ## Modalités d’analyse - En jeu : onglet carte du monde, zoo joueur → sous le nom, affichage « Score repro: X.X » (mis à jour à chaque tick). - Après une naissance (reproduction) sans place en nurserie, une entrée dans `saleListings` doit contenir `reproductionScoreAtSale` égal au score courant du zoo.