Files
builazoo/docs/features/causes-mort-audit.md
ncantu c7d389ecbb Lint: fix errors and remove unused variables
**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
2026-03-04 15:32:27 +01:00

3.0 KiB

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, checkDeathCausesmaybeDeathBlock (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 isBabydeathCountRecent 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.