# Spécifications : Mort des Bébés ## Causes Spécifiques - **Nurserie Pleine** : Si un œuf éclot et qu'il n'y a pas de place en nurserie ni sur le terrain. - **Vente Échouée** : Bébé resté trop longtemps en zone de vente (camion) sans acheteur et sans rapatriement. - **Conditions Extrêmes** : Les bébés ont des tolérances de température plus faibles que les adultes. ## Conséquences - Perte définitive de l'animal. - Pénalité forte sur le Score de Réputation. - Pas de récupération de ressources (pièces). # Annexes Techniques ## 1. Données et États ### Modèle de Données (JSON) Événement loggé. ### Caractéristiques Initiales **Compteur Morts** : 0. ### Scores Initiaux **Taux Mortalité Infantile** : 0%. ## 2. Cycles de Vie et Apparition ### Conditions d'Apparition Voir Causes. ### Conditions de Disparition **Oubli** : Le souvenir (et le malus) s'estompe après 7 jours in-game. ### Hérédité **Traumatisme** : Les parents ont -50% fertilité pendant 1 semaine (Choc émotionnel). ## 3. Impacts Environnementaux ### Impact Température Voir `bebe_animal.md`. ### Impact Milieu (Biome) **Tombe** : Une petite stèle apparaît temporairement sur la case (décoratif, disparaît au clic). ### Impact Saisons **Hiver rigoureux** : Cause fréquente de mortalité infantile (Froid). ### Impact Heure / Jour-Nuit **Nuit glaciale** : Moment critique (baisse T°). ## 4. Impacts Biologiques et Sociaux ### Impact Reproduction **Deuil** : Pas de reproduction possible pour les parents pendant 24h. ### Impact Mort **Effet domino** : Tristesse contagieuse aux animaux proches (Stress +10). ### Impact Nourriture **Gaspillage** : La nourriture allouée au bébé est perdue (pourrit). ### Impact Attractivité (Visiteurs/Animaux) **Malus** : -50 points de Réputation (temporaire 24h). Les visiteurs pleurent. ### Impact Valeur **Perte sèche** : Valeur potentielle (élevée) perdue définitivement. ## 5. Impacts Logistiques et Économiques ### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite) **Décomposition** : Le corps reste 1h avant de disparaître (Urgence sanitaire). ### Dépenses (Boutiques/Visiteurs) **Frais d'équarrissage** : 10 pièces pour enlever le corps. ### Trajet Visiteurs **Évitement** : Les visiteurs contournent la zone de mort (Rayon 2 cases). ## 6. Événements ### Événements du Jeu / Carte / Zoo / Ville / Visiteur * **Mort Bébé** : Notification critique. * **Enterrement** : Animation de disparition. ## 7. Progression ### Tableau des Upgrades *Note : Prévention via Infirmerie.* | Niveau Infirmerie | Réduction Risque Mort | | :--- | :--- | | 1 | -10% | | 2 | -20% | | 3 | -50% | ## 8. Logique et Interfaces ### Pseudo-code Impacts ```javascript function handleBabyDeath(baby): zoo.reputation -= 50 baby.parents.forEach(p => p.fertilityMod = 0.5) spawnGrave(baby.position) notifyPlayer("BABY_DIED") ``` ### Messages d'Infos / Alerte | ID | Niveau | Message | | :--- | :--- | :--- | | `BABY_DIED` | Critique | "Un bébé est mort ! Les visiteurs sont choqués." | # Annexes UX/UI ## 0. Direction Artistique & Vue * **Vue** : Isométrique (2.5D). * **Style** : Coloré, vivant, détails foisonnants (Réf: IMG_20260303_170253.jpg). * **Sprites** : 4 directions. * **Interactions** : * **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner. * **Feedback** : Surbrillance (outline blanc/jaune) au survol de la souris. ## 1. Expérience Utilisateur (UX) ### Drame (Événement) **Description UX** : Le bébé meurt. **Description UI** : Le sprite devient gris/fantôme puis disparaît (montée au ciel). Musique triste. **Emplacement** : Case Zoo/Nurserie. **Intégration** : Immédiat. **Navigation** : Auto (Cinématique). **Événements** : `DEATH_ANIMATION`. #### Assets - **Musiques** : Jingle Triste (Violon). - **Sons** : `gong.mp3` ou vent lugubre. - **Graphiques** : Fantôme. - **Images** : Pierre tombale (Sprite). - **Vidéos** : Effet de pluie (Overlay). - **Animations** : Opacité 100% -> 0%. Translation Y vers le haut. - **Couleurs** : Gris, Noir. - **Textes** : "RIP". - **Formes** : Halo sombre. ### Notification (Alerte) **Description UX** : Le joueur est informé de la perte. **Description UI** : Popup Rouge/Noir. "Vous avez perdu un bébé [Cause]". **Emplacement** : Centre Écran. **Intégration** : Modal bloquante (Acknowledgment requis). **Navigation** : Clic OK. **Événements** : `DEATH_ACKNOWLEDGE`. #### Assets - **Musiques** : Silence (Coupure son). - **Sons** : Bruit de tonnerre lointain. - **Graphiques** : Crâne (icône). - **Images** : Portrait du bébé avec ruban noir. - **Vidéos** : `death_alert_glitch.webm` (0.7s loop, optionnel), `black_ribbon_fade.webm` (1.2s non loop). - **Animations** : Tremblement de la fenêtre. - **Couleurs** : Noir #000000. - **Textes** : Cause du décès. - **Formes** : Bordure noire épaisse. ## Définition | Champ | Valeur | |---|---| | Concept | Événement de décès d’un animal au stade bébé, avec cause, conséquences (réputation, stress), et traces visuelles temporaires. | | Rôle | Sanctionner les erreurs de gestion (nurserie pleine, conditions extrêmes), informer clairement le joueur, et déclencher des impacts sociaux/logistiques sans silence. | | Portée | Un `animal_id` (bébé) + un contexte (zoo, emplacement iso) + une cause normalisée. | | Contrainte | Pas de fallback silencieux : cause inconnue => log + erreur ; calculs à la volée, sans cache/mémorisation. | ## Fonctions (tableau détaillé) | Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité | |---|---|---|---|---|---| | Détecter décès bébé | tick logique / action | `animal_id`, états | event décès | Mort si `health<=0` ou condition spéciale | Event `BABY_DIED` | | Normaliser cause | au décès | signaux (nurserie pleine, temp, vente) | `cause_code` | Cause dans enum, sinon `UNKNOWN` + erreur | Log structuré `baby_death_unknown_cause` | | Appliquer malus réputation | au décès | `cause_code` | réputation ↓ | Malus fort ; pondéré par visibilité visiteurs | Event `REPUTATION_CHANGED` | | Appliquer stress proche | au décès | position iso | stress ↑ | Rayon 2 cases iso autour | Event `ANIMAL_STRESS_APPLIED` | | Créer trace visuelle | au décès | position | stèle/fantôme | Trace TTL (ex. 1h) ; supprimable par clic | Event `GRAVE_SPAWNED` | | Facturer enlèvement | au décès | - | coût | Coût fixe “équarrissage” si option active | Event `SANITATION_FEE_CHARGED` | | Alerter joueur | au décès | cause + animal | notification | Modal d’ack obligatoire si critique | Event `UI_DEATH_ALERT_SHOWN` | ## Icone de base | Élément | Spécification | |---|---| | Représentation | Icône crâne + ruban noir, variante “bébé” (petit crâne) | | Couleur dominante | Noir / gris | | Variantes | `icon_baby_death.png`, `icon_grave.png` | | États | `critique` (rouge), `info` (gris), `acknowledged` (ruban) | ## Interactions (tableau détaillé) | Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages | |---|---|---|---|---|---| | Voir détail décès | Consultation | événement présent | clic notif | panneau cause + impacts | - | | Acknowledge modal | Action | modal affichée | clic OK | fermeture + trace possible | - | | Retirer stèle | Action | trace visible | clic stèle | suppression trace | `GRAVE_NOT_FOUND` | | Aller à l’emplacement | Navigation | position connue | clic “Voir sur la carte” | caméra centre | `LOCATION_UNAVAILABLE` | ## Annexes Techniques ### 1. Données et États (tableau détaillé) | Donnée / État | Type | Exemple | Source | Contraintes | |---|---|---|---|---| | `death_id` | uuid_v4 | `uuid_v4` | DB | identifiant event | | `animal_id` | uuid_v4 | `uuid_v4` | DB | cible | | `is_baby` | boolean | true | DB | invariant | | `cause_code` | string | `NURSERY_FULL` | calcul | enum | | `scope.zoo_id` | uuid_v4 | `uuid_v4` | DB | - | | `location.iso_x` | int \| null | 120 | DB | null si nurserie (slot) | | `location.iso_y` | int \| null | 88 | DB | null si nurserie (slot) | | `location.nurserie_id` | uuid_v4 \| null | `uuid_v4` | DB | null si sur grille | | `location.slot_id` | int \| null | 3 | DB | requis si nurserie | | `effects.reputation_delta` | int | -50 | calcul | signé | | `effects.stress_radius_tiles` | int | 2 | config | iso | | `effects.cleanup_fee` | int | 10 | config | coins | | `ttl.grave_seconds` | int | 3600 | config | suppression auto | | `timestamps.created_at` | timestamp | - | DB | UTC | #### Caractéristiques Initiales (tableau détaillé) | Caractéristique | Valeur initiale | Unité | Notes | |---|---:|---|---| | Compteur morts bébés | 0 | count | par zoo | | Frais enlèvement | 10 | coins | configurable | | Durée trace | 3600 | s | stèle/fantôme | #### Scores Initiaux (tableau détaillé) | Score | Valeur initiale | Plage | Impact | |---|---:|---|---| | Taux mortalité infantile | 0% | 0..100% | affichage suivi, pas d’analytics | | Malus réputation moyen | 0 | points | calcul à la volée sur fenêtre | ### 2. Cycles de Vie et Apparition (tableau détaillé) | Phase | Déclencheur | Entrées | Sorties | Invariants | |---|---|---|---|---| | Détection | tick | états bébé | décès | cause déterminée | | Notification | décès | cause | modal | ack requis | | Trace | décès | position | stèle | TTL | | Oubli | temps | 7 jours in-game | malus amorti | fenêtre glissante | #### Conditions d'Apparition (tableau détaillé) | Condition | Seuil | Opérateur | Résultat | |---|---:|---|---| | Bébé meurt | true | est | event `BABY_DIED` | #### Conditions de Disparition (tableau détaillé) | Condition | Seuil | Opérateur | Résultat | |---|---:|---|---| | Trace TTL | 3600 | atteint | suppression auto | | Clic stèle | true | est | suppression manuelle | #### Hérédité (tableau détaillé) | Élément | Hérité | Règle | |---|---|---| | Deuil parents | Oui | fertilité \(-50%\) pendant 1 semaine in-game | | Historique décès | Oui | visible journal zoo | ### 3. Impacts Environnementaux #### Impact Température (tableau détaillé) | Condition | Effet | Notes | |---|---|---| | Temp extrême | risque décès ↑ | cf. `bebe_animal.md` | #### Impact Milieu (Biome) (tableau détaillé) | Biome | Effet | Notes | |---|---|---| | - | stèle décorative | apparaît sur case (si décès sur grille) | #### Impact Saisons (tableau détaillé) | Saison | Effet | Notes | |---|---|---| | Hiver | cause fréquente (froid) | surveillance accrue | #### Impact Heure / Jour-Nuit (tableau détaillé) | Période | Effet | Notes | |---|---|---| | Nuit | risque froid ↑ | baisse T° | ### 4. Impacts Biologiques et Sociaux #### Impact Reproduction (tableau détaillé) | Facteur | Effet sur taux | Condition | |---|---|---| | Deuil | \(-50%\) | parents du bébé | | Blocage court | 0 | 24h in-game après décès | #### Impact Mort (tableau détaillé) | Cas | Effet | Condition | |---|---|---| | Domino | stress +10 | animaux à ≤2 cases iso | #### Impact Nourriture (tableau détaillé) | Ressource | Effet | Condition | |---|---|---| | Ration allouée | perdue | décès avant consommation | #### Impact Attractivité(Visiteurs (tableau détaillé) | Action/État | Gain | Rayon | Notes | |---|---:|---:|---| | Décès visible | - | 2 cases | visiteurs évitent | #### Impact Attractivité Animaux) (tableau détaillé) | Action/État | Effet animaux | Condition | |---|---|---| | Décès proche | stress ↑ | zone impact | #### Impact Valeur (tableau détaillé) | Facteur | Variation | Condition | |---|---:|---| | Perte potentielle | -100% | bébé disparu | ### 5. Impacts Logistiques et Économiques #### Vitesse (Camion) (tableau détaillé) | Paramètre | Effet | Condition | |---|---|---| | Décès en camion | blocage slot | vente échouée, non rapatriée | #### Vitesse (Nurserie) (tableau détaillé) | Paramètre | Effet | Condition | |---|---|---| | Saturation | risque décès | nurserie pleine + éclosion | #### Vitesse (Accueil) (tableau détaillé) | Paramètre | Effet | Condition | |---|---|---| | - | - | - | #### Vitesse (Recherche) (tableau détaillé) | Paramètre | Effet | Condition | |---|---|---| | - | - | - | #### Vitesse (Labo) (tableau détaillé) | Paramètre | Effet | Condition | |---|---|---| | - | - | - | #### Vitesse (Visite) (tableau détaillé) | Paramètre | Effet | Condition | |---|---|---| | Zone de décès | ralentit flux | évitement visiteurs | #### Dépenses (Billeterie) (tableau détaillé) | Poste | Coût | Unité | Condition | |---|---:|---|---| | - | 0 | - | - | #### Dépenses (Boutiques) (tableau détaillé) | Poste | Coût | Unité | Condition | |---|---:|---|---| | - | 0 | - | - | #### Dépenses (Visiteurs) (tableau détaillé) | Poste | Coût | Unité | Condition | |---|---:|---|---| | - | 0 | - | - | #### Dépenses (Employés) (tableau détaillé) | Poste | Coût | Unité | Condition | |---|---:|---|---| | Intervention sanitaire | 10 | coins | option équarrissage | #### Dépenses (Boutiques) (tableau détaillé) | Poste | Coût | Unité | Condition | |---|---:|---|---| | Section dupliquée | 0 | - | conservée | #### Dépenses (Nurseries) (tableau détaillé) | Poste | Coût | Unité | Condition | |---|---:|---|---| | Upgrade prévention | variable | coins | infirmerie/nurserie | #### Dépenses (Nourriture) (tableau détaillé) | Poste | Coût | Unité | Condition | |---|---:|---|---| | - | 0 | - | - | #### Dépenses (Acceuil des animaux) (tableau détaillé) | Poste | Coût | Unité | Condition | |---|---:|---|---| | - | 0 | - | - | #### Dépenses (Camion) (tableau détaillé) | Poste | Coût | Unité | Condition | |---|---:|---|---| | Rapatriement | 5 | coins | vente échouée | #### Trajet Visiteurs ##### Trajet Visiteurs vers/depuis la ville (tableau détaillé) | Source | Destination | Déclencheur | Effet | |---|---|---|---| | Ville | Zoo | réputation | baisse fréquentation si répétée | ##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé) | Source | Destination | Déclencheur | Effet | |---|---|---|---| | Allées | Zone décès | proximité | évitement | ##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé) | Source | Destination | Déclencheur | Effet | |---|---|---|---| | Zone décès | Boutique | fuite | déplacement rapide | ##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé) | Source | Destination | Déclencheur | Effet | |---|---|---|---| | Zone décès | Sortie | choc | sortie anticipée | ### 6. Événements #### Événements du Jeu (tableau détaillé) | Event | Déclencheur | Payload | Effet | |---|---|---|---| | `BABY_DIED` | décès | `animal_id`, `cause_code` | impacts | | `GRAVE_SPAWNED` | trace | `iso_x`, `iso_y` | stèle | | `SANITATION_FEE_CHARGED` | option | `amount` | coins - | #### Événements du Carte (tableau détaillé) | Event | Déclencheur | Effet | |---|---|---| | `DEATH_MARKER_SHOW` | map open | marker zone | #### Événements du Zoo (tableau détaillé) | Event | Déclencheur | Effet | |---|---|---| | `UI_DEATH_ALERT_SHOWN` | notif | modal | #### Événements du Ville / Visiteur (tableau détaillé) | Event | Déclencheur | Effet | |---|---|---| | `VISITOR_AVOID_DEATH_ZONE` | proximité | reroute | #### Événements du Visiteur (tableau détaillé) | Event | Déclencheur | Effet | |---|---|---| | `VISITOR_CRIES` | mort visible | satisfaction - | #### Événements du Joueur (tableau détaillé) | Event | Déclencheur | Effet | |---|---|---| | `PLAYER_ACK_DEATH` | clic OK | clôture | | `PLAYER_REMOVE_GRAVE` | clic stèle | suppression | ### 7. Progression #### Tableau des Upgrades (tableau détaillé) | Niveau | Coût | Effet | Débloque | |---|---:|---|---| | Infirmerie 1 | 100 | risque -10% | soins | | Infirmerie 2 | 250 | risque -20% | urgence | | Infirmerie 3 | 800 | risque -50% | protocole | ### 8. Logique et Interfaces #### Pseudo-code Impacts (tableau détaillé) | Fonction | Entrées | Sorties | Notes | |---|---|---|---| | `handleBabyDeath` | baby, cause | event | applique malus | | `computeDeathVisibility` | location, visitors | bool | pondère impacts | | `spawnGrave` | location | grave | TTL | #### Messages d'Infos / Alerte (tableau détaillé) | ID | Niveau | Message | Condition | |---|---|---|---| | `BABY_DIED` | Critique | "Un bébé est mort." | décès | | `NURSERY_FULL_DEATH` | Critique | "Nurserie pleine : décès." | cause `NURSERY_FULL` | | `SALE_TRUCK_DEATH` | Warning | "Décès en camion : vente échouée." | cause `SALE_TRUCK_TIMEOUT` | ## Annexes UX/UI ### 1. Expérience Utilisateur (UX) #### Description UX (tableau détaillé) | Parcours | But | Friction | Réduction clics | |---|---|---|---| | Recevoir l’alerte | comprendre la cause | choc | modal + bouton “voir sur carte” | | Retirer trace | nettoyer zone | navigation | clic direct sur stèle | #### Description UI (tableau détaillé) | Composant | Contenu | États | |---|---|---| | Modal décès | cause + impacts | critique/ack | | Stèle | sprite décoratif | clickable/ttl | | Marker carte | icône | visible/masqué | #### Emplacement (tableau détaillé) | Zone UI | Position | Notes | |---|---|---| | HUD | notifications | priorité haute | | Carte zoo | sur case | stèle | #### Intégration (tableau détaillé) | Intégration | Contrat | Notes | |---|---|---| | `bebe_animal.md` | fragilité temp | causes | | `score_reputation.md` | malus réputation | impacts | #### Navigation (tableau détaillé) | Action | Chemin | Résultat | |---|---|---| | Ouvrir détail | notif → modal | cause affichée | | Aller sur carte | bouton modal | caméra centre | | Retirer stèle | clic stèle | suppression | #### Événements (tableau détaillé) | Event UI | Déclencheur | Effet | |---|---|---| | `OPEN_DEATH_MODAL` | event | modal | | `CLICK_VIEW_ON_MAP` | bouton | caméra | | `CLICK_REMOVE_GRAVE` | stèle | suppression | #### Assets Skinables ##### Musiques (tableau détaillé) | Asset | Usage | Durée | Notes | |---|---|---:|---| | `baby_death_sting.mp3` | décès | 2.0s | triste | ##### Sons (tableau détaillé) | Asset | Usage | Volume | |---|---|---| | `ui_death_gong.mp3` | alerte | moyen | | `ui_modal_close.mp3` | ack | bas | ##### Graphiques (tableau détaillé) | Asset | Usage | Contraintes | |---|---|---| | `grave_stone_iso.png` | stèle | iso 4 dirs | | `baby_ghost_fx.png` | fantôme | overlay | | `death_skull_icon.png` | icône | contraste | ##### Images (tableau détaillé) | Asset | Usage | |---|---| | `black_ribbon.png` | modal | | `death_bg_noise.png` | overlay | ##### Vidéos (tableau détaillé) | Asset | Usage | Durée | |---|---|---:| | `death_alert_glitch.webm` | modal | 0.7s | ##### Animations (tableau détaillé) | Animation | Déclencheur | Notes | |---|---|---| | fade fantôme | décès | 1.0s | | tremblement modal | alerte | 0.5s | ##### Couleurs (tableau détaillé) | Token | Valeur | Usage | |---|---|---| | `death_black` | #000000 | fond | | `death_gray` | #616161 | texte | | `death_red` | #D32F2F | critique | ##### Textes (tableau détaillé) | Clé | FR | EN | |---|---|---| | `death.baby.title` | Décès d’un bébé | Baby death | | `death.baby.cause` | Cause | Cause | | `death.ack` | OK | OK | ##### Formes (tableau détaillé) | Élément | Forme | Notes | |---|---|---| | Modal | rectangle arrondi | accessible | | Icône | rond | constant |