Files
builazoo/docs/features/reproduction-phase6.md
Nicolas Cantu e031c9a1d2 Initial commit
**Motivations:**
- Initialisation du versionning git pour le projet

**Root causes:**
- N/A (Nouveau projet)

**Correctifs:**
- N/A

**Evolutions:**
- Structure initiale du projet
- Ajout du .gitignore

**Pages affectées:**
- Tous les fichiers
2026-03-03 22:24:17 +01:00

29 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Phase 6 Reproduction
**Objectif :** Deux animaux de même type, dont au moins un provient dun autre zoo, en proximité produisent un bébé après un délai. Le délai est réduit par le score de reproduction du zoo et ladéquation température/milieu.
**Référence :** `docs/plan-implementation-rappel-grandes-regles.md` phase 6.
## Impacts
- Nouveau module `web/js/reproduction.js` (détection de paires, timers, naissances).
- État : `reproductionTimers`, `fromOtherZoo` sur animaux et bébés.
- Bébés créés par reproduction vont en nurserie si place libre, sinon en `saleListings` (vente phase 10).
## Modifications
- **types.js** : `AnimalCell.fromOtherZoo?`, `PendingBaby.fromOtherZoo?`, `GameState.reproductionTimers?`.
- **config.js** : `Reproduction.BaseSeconds`, `Reproduction.MaxDistance`.
- **state.js** : `defaultState.reproductionTimers`, migration `loadState` pour `reproductionTimers`.
- **zoo.js** : `addPendingBaby(state, animalId, fromOtherZoo?)`, `placeMatureBabyOnCell` / `placeReceptionAnimalOnCell` renseignent `fromOtherZoo` sur lanimal placé ; `tryBuyBaby` appelle `addPendingBaby(..., true)`.
- **reproduction.js** : `getReproductionScore`, `getBiomeReproductionFactor`, `getTemperatureFactor`, `findReproductionPairs`, `tickReproduction` ; appel depuis la game loop après `checkDeathCauses`.
## Modalités de déploiement
- Aucun déploiement serveur. Rechargement client suffit.
## Modalités danalyse
- Vérifier en jeu : placer deux animaux de même type (dont un acheté en accueil/conveyor) sur deux cases adjacentes ; après le délai (réduit par score/biome/temp), un bébé apparaît en nurserie ou en vente.
- `state.reproductionTimers` doit contenir les paires en attente avec `dueAt` ; après échéance, entrée retirée et `birthCount` incrémenté.