**Motivations:** - Ensure lint config is not degraded and fix all lint errors for pousse workflow. **Root causes:** - Unused variables kept with _ prefix instead of removed (_row, _questReward, _i). - getAnimalBlockOrigin had 5 parameters (max 4). - use of continue statement (no-continue rule). **Correctifs:** - ESLint config verified; no eslint-disable in codebase. - Removed unused variable _row (biome-rules); removed dead function _questReward (quests); removed unused map param _i (state.js). - getAnimalBlockOrigin refactored to 4 params (pos object instead of x, y). - Replaced continue with if (cell) block in normalizeLoadedCells (state.js). - JSDoc param names aligned with _height, _y (biome-rules). **Evolutions:** - (none) **Pages affectées:** - web/js/biome-rules.js - web/js/quests.js - web/js/state.js - web/js/placement.js
43 lines
3.0 KiB
Markdown
43 lines
3.0 KiB
Markdown
# Audit des causes de mort (§12)
|
|
|
|
**Référence :** Cahier des charges §12 (Mort).
|
|
|
|
## Liste du cahier
|
|
|
|
1. Seuls
|
|
2. Pas visités
|
|
3. Manque de nourriture
|
|
4. Tué par un autre animal d'un autre zoo
|
|
5. Niveau de recherche trop inférieur par rapport au niveau de l'animal
|
|
6. Bébé non vendu dans les délais
|
|
7. Bébé de nurserie prêt non placé dans les délais
|
|
8. Animal d'accueil prêt non placé sur la carte après un délai
|
|
9. Animal non placé sur la carte dans les délais (vente échouée)
|
|
10. Température trop en écart avec la température de l'animal
|
|
11. Milieu (couleur) trop en écart avec la température de l'animal
|
|
|
|
## Implémenté
|
|
|
|
- **Pas visités** : `Visitor.MaxSecondsWithoutVisit`, `checkDeathCauses` → `maybeDeathBlock` (visitedOk), `food.js` + `animal-visits.js`.
|
|
- **Manque de nourriture** : `Food.MaxSecondsWithoutFood`, `maybeDeathBlock` (fedOk), `tickFeeding` / `checkDeathCauses`.
|
|
- **Température en écart** : `maybeDeathBlock` (tempOk), `getDisplayTemperature`, `idealTemperature` / `temperatureTolerance` (loot-tables).
|
|
- **Milieu (couleur) en écart** : `maybeDeathBlock` (biomeOk), `isAnimalAllowedOnBiome`, `getDisplayBiome`.
|
|
- **Bébé nurserie prêt non placé** : `Nursery.MaxSecondsMatureNotPlaced`, `filterPendingBabies` dans `checkDeathCauses`.
|
|
- **Animal accueil prêt non placé** : `Reception.MaxSecondsReadyNotPlaced`, `filterReceptionAnimals` dans `checkDeathCauses`.
|
|
- **Bébé non vendu dans les délais** : `Sale.ListingDurationSeconds`, `tickSaleListings` (trade.js) ; annonce expirée et `isBaby` → `deathCountRecent` incrémenté. Côté serveur : `expireSaleListings` (db.js).
|
|
|
|
## Non implémenté
|
|
|
|
- **Seuls** : ~~pas de règle « animal seul meurt ».~~ **Implémenté** : `GameConfig.Animal.MinSameSpeciesInRadius`, `RadiusCells`, `MaxSecondsAlone` ; `checkNotAlone` dans `food.js` ; retrait et `deathCountRecent` si seul depuis trop longtemps.
|
|
- **Tué par un autre animal d'un autre zoo** : pas de mécanique inter-zoo.
|
|
- **Niveau de recherche trop inférieur** : ~~pas de vérification niveau recherche vs niveau animal.~~ **Implémenté** : dans `maybeDeathBlock` (food.js), si `def.rarityLevel > getSkillLevel(state)` → retrait et `deathCountRecent`.
|
|
- **Animal (adulte) vente échouée** : ~~à l'expiration d'une annonce adulte (`isBaby: false`), deathCountRecent n'est pas incrémenté.~~ **Implémenté** : `tickSaleListings` (trade.js) incrémente `deathCountRecent` pour les listings expirés adulte comme bébé.
|
|
|
|
## Fichiers
|
|
|
|
- `web/js/food.js` : `checkDeathCauses`, `maybeDeathBlock`, `checkNotAlone`, `filterPendingBabies`, `filterReceptionAnimals` ; cause recherche (getSkillLevel), cause seuls (Animal config).
|
|
- `web/js/trade.js` : `tickSaleListings` (expiration bébé et adulte → deathCountRecent).
|
|
- `web/js/animal-visits.js` : `lastVisitedAt` pour cause « pas visités ».
|
|
- `server/db.js` : `expireSaleListings` (bébé invendu).
|
|
- `web/js/config.js` : `Animal.MinSameSpeciesInRadius`, `RadiusCells`, `MaxSecondsAlone`.
|