ok
This commit is contained in:
5664
docs/specs-format-audit.json
Normal file
5664
docs/specs-format-audit.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -90,3 +90,477 @@ def update_security_agent(agent, world):
|
||||
* **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.
|
||||
|
||||
|
||||
## Définition
|
||||
|
||||
| Champ | Valeur |
|
||||
|---|---|
|
||||
| Entité | Employé “Agent de sécurité” |
|
||||
| Rôle | Maintenir l’ordre, réduire vandalisme/incidents, gérer visiteurs indisciplinés, intervenir (si feature) sur évasions. |
|
||||
| IA | FSM/priority queue : Évasion > Vandalisme > Déchets > Patrouille. |
|
||||
| Vue | Isométrique 2.5D, sprite 4 directions (le bloc “8 directions” existant est conservé comme option d’animation), hitbox base-sprite. |
|
||||
|
||||
## Fonctions (tableau détaillé)
|
||||
|
||||
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||
|---|---|---|---|---|---|
|
||||
| Patrouille | Tick agent | routes, densité | présence | Choisit chemins (visiteurs attirés chemins) | Event `SECURITY_PATROL_TICK` |
|
||||
| Dissuasion vandalisme | proximité incident | `intimidation`, rayon | proba vandalisme - | Effet plafonné ; dépend densité | Event `SECURITY_DETERRENCE_APPLIED` |
|
||||
| Intervention visiteur | visiteur “indiscipliné” | target | expulsion/stop | Temps action ; cooldown | Event `SECURITY_INTERACT_START/END` |
|
||||
| Gestion évasion (option) | animal `ESCAPED` | animal pos | capture | Nécessite équipement (filet) ou tranquillisant | Event `SECURITY_CAPTURE` |
|
||||
| Gestion fatigue | temps actif | stamina | REST | Repos staff room obligatoire | Event `SECURITY_REST_START/END` |
|
||||
|
||||
## Icone de base
|
||||
|
||||
| Élément | Spécification |
|
||||
|---|---|
|
||||
| Représentation | Écusson / casquette |
|
||||
| Couleur dominante | Bleu marine / jaune |
|
||||
| Variantes | `icon_security_badge.png`, `icon_security_cap.png` |
|
||||
| États | Badge “alerte” (rouge), “patrouille” (pas), “recherche” (loupe) |
|
||||
|
||||
## Interactions (tableau détaillé)
|
||||
|
||||
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||
|---|---|---|---|---|---|
|
||||
| Recruter | Action | coins ≥ `hire_cost` | Menu Employés → Sécurité → Confirmer | agent créé | `INSUFFICIENT_FUNDS`, `EMPLOYEE_CAP_REACHED` |
|
||||
| Envoyer en priorité | Action | zone/cible valide | clic carte → “Envoyer sécurité” | target prioritaire | `NO_SECURITY_AVAILABLE`, `INVALID_TARGET` |
|
||||
| Licencier | Action | pas en capture verrouillée | panel agent → “Licencier” | suppression | `ACTION_BLOCKED` |
|
||||
| Inspecter incidents | Consultation | - | panel → incidents | liste + ETA | - |
|
||||
| Activer mode “strict” | Configuration | upgrade / coût | toggle | intervention + mais visiteurs stress + | `LOCKED_FEATURE` |
|
||||
|
||||
## Annexes Techniques
|
||||
|
||||
### 1. Données et États (tableau détaillé)
|
||||
|
||||
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||
|---|---|---|---|---|
|
||||
| `employee_id` | string | `security_05` | DB | unique |
|
||||
| `type` | enum | `agent_securite` | DB | constante |
|
||||
| `created_at` | timestamp | - | DB | - |
|
||||
| `salary` | int | 40 | config | coins/jour |
|
||||
| `hire_cost` | int | 400 | config | one-shot |
|
||||
| `state` | enum | `PATROL|CHASE|REST|INTERACT` | runtime | FSM |
|
||||
| `position` | object | `{x,y}` | runtime | monde |
|
||||
| `target_position` | object | `{x,y}` | runtime | chase |
|
||||
| `stats.intimidation` | int | 10 | DB | [1..100] |
|
||||
| `stats.speed` | float | 1.1 | DB | déplacement |
|
||||
| `stats.stamina` | int | 100 | runtime | 0..100 |
|
||||
| `radius` | int | 5 | config | action |
|
||||
| `grid` | object | `{x,y}` | runtime | position grille zoo |
|
||||
| `iso_x/iso_y` | int | - | rendu | projection |
|
||||
| `z_index` | int | - | rendu | profondeur |
|
||||
| `hitbox` | enum | `base_sprite` | rendu | click base |
|
||||
|
||||
#### Caractéristiques Initiales (tableau détaillé)
|
||||
|
||||
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||
|---|---:|---|---|
|
||||
| Rayon action | 5 | cases | règle existante |
|
||||
| Vitesse | 1.1 | coef | - |
|
||||
| Stamina max | 100 | points | - |
|
||||
| Temps repos | 15 | min in-game | par cycle repos |
|
||||
| Priorité | 4 niveaux | - | évasion > vandalisme > déchets > patrouille |
|
||||
|
||||
#### Scores Initiaux (tableau détaillé)
|
||||
|
||||
| Score | Valeur initiale | Plage | Impact |
|
||||
|---|---:|---|---|
|
||||
| Incidents résolus/jour | 0 | 0..∞ | satisfaction + |
|
||||
| Vandalisme évité | 0 | 0..∞ | réputation + |
|
||||
| Temps réponse moyen | 0 | 0..∞ | performance |
|
||||
|
||||
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||
|
||||
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||
|---|---|---|---|---|
|
||||
| Apparition | embauche | coins | entité | `PATROL` |
|
||||
| Chase | menace détectée | target | déplacement | sprint consomme stamina |
|
||||
| Interact | contact menace | menace | neutralisée | cooldown |
|
||||
| Rest | stamina bas | temps | stamina + | staff room |
|
||||
| Disparition | licenciement | - | suppression | stop chase |
|
||||
|
||||
#### Conditions d'Apparition (tableau détaillé)
|
||||
|
||||
| Condition | Seuil | Opérateur | Résultat |
|
||||
|---|---:|---|---|
|
||||
| Achat | coins ≥ `hire_cost` | vrai | création |
|
||||
|
||||
#### Conditions de Disparition (tableau détaillé)
|
||||
|
||||
| Condition | Seuil | Opérateur | Résultat |
|
||||
|---|---:|---|---|
|
||||
| Licenciement | action joueur | vrai | suppression |
|
||||
| Zoo supprimé | - | vrai | suppression |
|
||||
|
||||
#### Hérédité (tableau détaillé)
|
||||
|
||||
| Élément | Hérité | Règle |
|
||||
|---|---|---|
|
||||
| Stats | Oui | persistées |
|
||||
| Stamina | Non | reset quotidien |
|
||||
|
||||
### 3. Impacts Environnementaux
|
||||
|
||||
#### Impact Température (tableau détaillé)
|
||||
|
||||
| Température | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Extrême | patrouille - | fatigue + |
|
||||
| Tempérée | neutre | - |
|
||||
|
||||
#### Impact Milieu (Biome) (tableau détaillé)
|
||||
|
||||
| Biome | Effet | Notes |
|
||||
|---|---|---|
|
||||
| Chemins | déplacement + | patrouille efficace |
|
||||
| Pont étroit | congestion | éviter chase sur pont |
|
||||
|
||||
#### Impact Saisons (tableau détaillé)
|
||||
|
||||
| Saison | Effet | Modificateur |
|
||||
|---|---|---|
|
||||
| Été | foule + | incidents + |
|
||||
| Hiver | affluence - | incidents - |
|
||||
|
||||
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||
|
||||
| Période | Effet | Règle |
|
||||
|---|---|---|
|
||||
| Jour | patrouille | - |
|
||||
| Nuit | sécurité renforcée | incidents peur + si pas d’éclairage |
|
||||
|
||||
### 4. Impacts Biologiques et Sociaux
|
||||
|
||||
#### Impact Reproduction (tableau détaillé)
|
||||
|
||||
| Facteur | Effet sur taux | Condition |
|
||||
|---|---|---|
|
||||
| Bruit intervention | - | près enclos |
|
||||
|
||||
#### Impact Mort (tableau détaillé)
|
||||
|
||||
| Cas | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Évasion non gérée | risque mort + | collisions/ville |
|
||||
|
||||
#### Impact Nourriture (tableau détaillé)
|
||||
|
||||
| Ressource | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | agent n’alimente pas |
|
||||
|
||||
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||
|
||||
| État | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Présence sécurité | confort + | rayon action |
|
||||
| Interventions fréquentes | confort - | stress visiteurs |
|
||||
|
||||
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||
|
||||
| Action | Effet animaux | Condition |
|
||||
|---|---|---|
|
||||
| Capture évasion | stress + puis - | fin incident |
|
||||
|
||||
#### Impact Valeur (tableau détaillé)
|
||||
|
||||
| Facteur | Variation | Condition |
|
||||
|---|---:|---|
|
||||
| Zoo sûr | + | réputation/flux visiteurs |
|
||||
|
||||
### 5. Impacts Logistiques et Économiques
|
||||
|
||||
#### Vitesse (Camion) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Livraison équipements | + | si feature |
|
||||
|
||||
#### Vitesse (Nurserie) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Vitesse (Accueil) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Gestion sortie | + | si foule panique |
|
||||
|
||||
#### Vitesse (Recherche) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Tech caméras | incidents - | si débloqué |
|
||||
|
||||
#### Vitesse (Labo) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Vitesse (Visite) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Déplacement visiteurs | - | si zones bloquées |
|
||||
|
||||
#### Dépenses (Billeterie) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### Dépenses (Boutiques) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Vente souvenirs “police” | revenu + | coins | option |
|
||||
|
||||
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Remboursement peur | -coins | coins | incidents peur |
|
||||
|
||||
#### Dépenses (Employés) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Salaire | 40 | coins/jour | actif |
|
||||
|
||||
#### 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 |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### 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 |
|
||||
|---|---:|---|---|
|
||||
| dégâts évasion | 100 | coins | réparation |
|
||||
|
||||
#### Dépenses (Camion) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| capture matériel | 50 | coins | filet |
|
||||
|
||||
#### Trajet Visiteurs
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Ville | Zoo | réputation | sécurité augmente confiance |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Incident | Enclos | évasion | zone bloquée |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Visiteurs | Boutique | after incident | achats - |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Panique | sortie | peur | départ massif |
|
||||
|
||||
### 6. Événements
|
||||
|
||||
#### Événements du Jeu (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Payload | Effet |
|
||||
|---|---|---|---|
|
||||
| `VANDALISM_DETECTED` | scan | pos | chase |
|
||||
| `ESCAPE_DETECTED` | animal escaped | animal_id | chase |
|
||||
|
||||
#### Événements du Carte (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `SECURITY_CHASE` | menace | animation course |
|
||||
|
||||
#### Événements du Zoo (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `ZONE_BLOCKED` | intervention | pathing détour |
|
||||
|
||||
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `VISITOR_CALMED` | sécurité proche | satisfaction + |
|
||||
|
||||
#### Événements du Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `VISITOR_EXPELLED` | interaction | sortie immédiate |
|
||||
|
||||
#### Événements du Joueur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `PLAYER_SEND_SECURITY` | clic zone | priorité chase |
|
||||
|
||||
### 7. Progression
|
||||
|
||||
#### Tableau des Upgrades (tableau détaillé)
|
||||
|
||||
| Niveau | Coût | Effet | Débloque |
|
||||
|---|---:|---|---|
|
||||
| 1 | 0 | patrouille base | - |
|
||||
| 2 | 1500 | intimidation +2 | dissuasion |
|
||||
| 3 | 3000 | speed +0.1 | réponse |
|
||||
| 4 | 6000 | équipement capture | gestion évasion |
|
||||
|
||||
### 8. Logique et Interfaces
|
||||
|
||||
#### Pseudo-code Impacts (tableau détaillé)
|
||||
|
||||
| Fonction | Entrées | Sorties | Notes |
|
||||
|---|---|---|---|
|
||||
| `scan_for_threats` | position, radius | threat | existant |
|
||||
| `neutralize` | threat | resolved | expulsion/capture |
|
||||
| `apply_deterrence` | intimidation | proba- | clamp |
|
||||
|
||||
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||
|
||||
| ID | Niveau | Message | Condition |
|
||||
|---|---|---|---|
|
||||
| `SECURITY_BUSY` | Warning | "Agent occupé." | chase/interact |
|
||||
| `ESCAPE_ALERT` | Alerte | "Évasion détectée !" | animal escaped |
|
||||
| `VANDALISM_ALERT` | Warning | "Vandalisme !" | incident |
|
||||
|
||||
## Annexes UX/UI
|
||||
|
||||
### 1. Expérience Utilisateur (UX)
|
||||
|
||||
#### Description UX (tableau détaillé)
|
||||
|
||||
| Parcours | But | Friction | Réduction clics |
|
||||
|---|---|---|---|
|
||||
| Envoyer agent | résoudre incident | localisation | action contextuelle sur incident |
|
||||
| Voir sécurité | confiance | info | badges sur carte |
|
||||
|
||||
#### Description UI (tableau détaillé)
|
||||
|
||||
| Composant | Contenu | États |
|
||||
|---|---|---|
|
||||
| Panel agent | stamina, état, target | patrol/chase/rest |
|
||||
| Badge incident | type | priorité |
|
||||
|
||||
#### Emplacement (tableau détaillé)
|
||||
|
||||
| Zone UI | Position | Notes |
|
||||
|---|---|---|
|
||||
| Carte | sprite agent | sélection base |
|
||||
| Incidents | bulles | clic direct |
|
||||
|
||||
#### Intégration (tableau détaillé)
|
||||
|
||||
| Intégration | Contrat | Notes |
|
||||
|---|---|---|
|
||||
| Pathfinding | zones bloquées | pas de fallback |
|
||||
| Incidents visiteurs | expulsion | - |
|
||||
|
||||
#### Navigation (tableau détaillé)
|
||||
|
||||
| Action | Chemin | Résultat |
|
||||
|---|---|---|
|
||||
| Ouvrir panel | clic agent | panel |
|
||||
| Envoyer | clic incident | target |
|
||||
|
||||
#### Événements (tableau détaillé)
|
||||
|
||||
| Event UI | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `OPEN_SECURITY_PANEL` | clic | panel |
|
||||
| `CLICK_SEND_SECURITY` | clic zone | send |
|
||||
|
||||
#### Assets Skinables
|
||||
|
||||
##### Musiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée | Notes |
|
||||
|---|---|---:|---|
|
||||
| `security_loop.mp3` | ambiance | loop | discret |
|
||||
|
||||
##### Sons (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Volume |
|
||||
|---|---|---|
|
||||
| `whistle.mp3` | chase | moyen |
|
||||
| `ui_alert.mp3` | alerte | moyen |
|
||||
|
||||
##### Graphiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Contraintes |
|
||||
|---|---|---|
|
||||
| `security_sprite_[dir].png` | sprite | 4 dirs |
|
||||
| `fx_alert_ring.png` | FX | overlay |
|
||||
|
||||
##### Images (tableau détaillé)
|
||||
|
||||
| Asset | Usage |
|
||||
|---|---|
|
||||
| `icon_security_badge.png` | icône |
|
||||
| `portrait_security.png` | panel |
|
||||
|
||||
##### Vidéos (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée |
|
||||
|---|---|---:|
|
||||
| `security_alert.webm` | popup | 0.9s |
|
||||
|
||||
##### Animations (tableau détaillé)
|
||||
|
||||
| Animation | Déclencheur | Notes |
|
||||
|---|---|---|
|
||||
| ring alerte | incident | loop |
|
||||
| dash | chase | burst |
|
||||
|
||||
##### Couleurs (tableau détaillé)
|
||||
|
||||
| Token | Valeur | Usage |
|
||||
|---|---|---|
|
||||
| `security_primary` | #1B3B6F | UI |
|
||||
| `security_accent` | #F1C40F | badge |
|
||||
|
||||
##### Textes (tableau détaillé)
|
||||
|
||||
| Clé | FR | EN |
|
||||
|---|---|---|
|
||||
| `security.send` | Envoyer | Send |
|
||||
| `security.busy` | Occupé | Busy |
|
||||
|
||||
##### Formes (tableau détaillé)
|
||||
|
||||
| Élément | Forme | Notes |
|
||||
|---|---|---|
|
||||
| Badge alerte | triangle arrondi | lisible |
|
||||
| Panel | bottom sheet | standard |
|
||||
|
||||
@@ -76,3 +76,484 @@ def update_artist(artist, visitors_nearby):
|
||||
* **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.
|
||||
|
||||
|
||||
## Définition
|
||||
|
||||
| Champ | Valeur |
|
||||
|---|---|
|
||||
| Entité | Employé “Artiste” |
|
||||
| Rôle | Divertir les visiteurs pour augmenter satisfaction, temps de séjour et micro-revenus (pourboires). |
|
||||
| Position | Se déplace sur chemins / points d’intérêt (scène) avec un rayon d’effet local. |
|
||||
| Vue | Isométrique 2.5D, sprite 4 directions, hitbox base-sprite. |
|
||||
|
||||
## Fonctions (tableau détaillé)
|
||||
|
||||
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||
|---|---|---|---|---|---|
|
||||
| Divertissement de zone | Tick IA / début performance | `radius`, visiteurs proches | `+happiness`, `+stay_duration` | Effet décroissant si performance continue sans pause ; nécessite cases walkable | Event `ARTIST_PERF_TICK`, compteur visiteurs affectés |
|
||||
| Show spécial | Action joueur | cooldown, coût optionnel | Bonus temporaire fort | Cooldown strict ; annule si artiste en pause forcée | Event `ARTIST_SPECIAL_SHOW_START/END` |
|
||||
| Pourboires | Aléatoire pendant performance | RNG, densité foule | `+coins` | Plafond par minute ; augmente avec `charisma` | Event `ARTIST_TIP`, cumul `tips_collected` |
|
||||
| Gestion fatigue | Temps passé en perf | durée | état `BREAK` | Pause obligatoire ; réduit efficacité avant pause | Event `ARTIST_BREAK_START/END` |
|
||||
|
||||
## Icone de base
|
||||
|
||||
| Élément | Spécification |
|
||||
|---|---|
|
||||
| Représentation | Masque de théâtre / notes de musique |
|
||||
| Couleur dominante | Rose / Violet |
|
||||
| Variantes | `icon_artist_mask.png`, `icon_artist_music.png`, `icon_artist_paint.png` |
|
||||
| États | Badge “cooldown” (horloge), “en pause” (Zzz) |
|
||||
|
||||
## Interactions (tableau détaillé)
|
||||
|
||||
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||
|---|---|---|---|---|---|
|
||||
| Recruter | Action | Coins ≥ `hire_cost`, slot employé dispo | Menu Employés → Artiste → Confirmer | Artiste créé/assignable | `INSUFFICIENT_FUNDS`, `EMPLOYEE_CAP_REACHED` |
|
||||
| Assigner à une scène | Action | Scène/POI existant, path possible | Sélection artiste → “Assigner” → clic scène | Itinéraire fixé + zone perf | `NO_PATH`, `SCENE_BUSY` |
|
||||
| Déplacer manuellement | Action | Pas en show spécial verrouillé | Drag & drop / tap-to-move | Nouvelle position, recalcul foule | `INVALID_TILE` |
|
||||
| Lancer show spécial | Action | Cooldown fini | Bouton “Show spécial” | Buff + FX + foule | `COOLDOWN_ACTIVE` |
|
||||
| Inspecter stats | Consultation | - | Sélection artiste | Panel stats (charisma, tips) | - |
|
||||
|
||||
## Annexes Techniques
|
||||
|
||||
### 1. Données et États (tableau détaillé)
|
||||
|
||||
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||
|---|---|---|---|---|
|
||||
| `employee_id` | string | `artist_03` | DB | Unique |
|
||||
| `type` | enum | `artiste` | DB | Constante |
|
||||
| `subtype` | enum | `musician|clown|painter|juggler` | DB | 1 parmi n |
|
||||
| `salary` | int | 45 | config | Paiement journalier |
|
||||
| `hire_cost` | int | 450 | config | Paiement à l’embauche |
|
||||
| `state` | enum | `IDLE|PERFORMING|BREAK` | runtime | Transitions contrôlées |
|
||||
| `performance_cooldown_end` | timestamp | - | runtime | Non nul après show |
|
||||
| `stats.charisma` | int | 15 | DB | [1..100] |
|
||||
| `stats.radius` | int | 3 | DB | [1..8] |
|
||||
| `stats.tips_collected` | int | 0 | runtime | Cumul session/jour |
|
||||
| `grid` | object | `{x,y}` | runtime | Coord grille |
|
||||
| `iso_x/iso_y` | int | - | rendu | Proj iso |
|
||||
| `z_index` | int | - | rendu | Tri profondeur |
|
||||
| `hitbox` | enum | `base_sprite` | rendu | Click sur base |
|
||||
|
||||
#### Caractéristiques Initiales (tableau détaillé)
|
||||
|
||||
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||
|---|---:|---|---|
|
||||
| Rayon effet | 3 | cases | `radius` |
|
||||
| Chance pourboire | 5% | / tick perf | modulée par `charisma` |
|
||||
| Bonus happiness | +0.1 × `charisma` | / tick | clamp max par visiteur |
|
||||
| Pause requise | 10 | min in-game | après perf continue |
|
||||
| Cooldown show spécial | 30 | min in-game | après activation |
|
||||
|
||||
#### Scores Initiaux (tableau détaillé)
|
||||
|
||||
| Score | Valeur initiale | Plage | Impact |
|
||||
|---|---:|---|---|
|
||||
| Satisfaction locale | 0 | -100..+100 | S’ajoute au calcul visiteur |
|
||||
| Densité foule | 0 | 0..∞ | Conditionne bouchons |
|
||||
| Revenu tips/jour | 0 | 0..∞ | Finance zoo |
|
||||
|
||||
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||
|
||||
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||
|---|---|---|---|---|
|
||||
| Apparition | Embauche | coins, config | entité artiste | créé en `IDLE` |
|
||||
| Activité | Tick | position, visiteurs | effets | pas de perf si `BREAK` |
|
||||
| Disparition | Licenciement (si prévu) | - | suppression | pas de suppression si en show (attendre fin) |
|
||||
|
||||
#### Conditions d'Apparition (tableau détaillé)
|
||||
|
||||
| Condition | Seuil | Opérateur | Résultat |
|
||||
|---|---:|---|---|
|
||||
| Achat employé | coins ≥ `hire_cost` | vrai | création |
|
||||
| Cap employé | slots > employés actifs | vrai | autorisé |
|
||||
|
||||
#### Conditions de Disparition (tableau détaillé)
|
||||
|
||||
| Condition | Seuil | Opérateur | Résultat |
|
||||
|---|---:|---|---|
|
||||
| Licenciement | action joueur | vrai | suppression + arrêt effets |
|
||||
| Zoo supprimé | - | vrai | suppression |
|
||||
|
||||
#### Hérédité (tableau détaillé)
|
||||
|
||||
| Élément | Hérité | Règle |
|
||||
|---|---|---|
|
||||
| `subtype` | Oui | reste identique |
|
||||
| Stats (charisma/radius) | Oui | persistées |
|
||||
| Tips collectés | Non | remis à 0 par jour |
|
||||
|
||||
### 3. Impacts Environnementaux
|
||||
|
||||
#### Impact Température (tableau détaillé)
|
||||
|
||||
| Température | Effet sur artiste | Effet sur visiteurs | Condition |
|
||||
|---|---|---|---|
|
||||
| < 0°C | perf -20% | satisfaction - | si pas d’abris proches |
|
||||
| 15–25°C | neutre | neutre | - |
|
||||
| > 35°C | perf -10% (fatigue) | incidents “soif” + | canicule |
|
||||
|
||||
#### Impact Milieu (Biome) (tableau détaillé)
|
||||
|
||||
| Biome | Effet | Notes |
|
||||
|---|---|---|
|
||||
| Chemin pavé | foule + | visitors préfèrent rester sur chemins |
|
||||
| Boue / marécage | perf - | gêne visuelle + saleté |
|
||||
| Pont | neutre | éviter attroupement sur pont étroit |
|
||||
|
||||
#### Impact Saisons (tableau détaillé)
|
||||
|
||||
| Saison | Effet | Modificateur |
|
||||
|---|---|---|
|
||||
| Été | demande shows + | tips +10% |
|
||||
| Hiver | shows indoor | perf -10% si extérieur |
|
||||
|
||||
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||
|
||||
| Période | Effet | Règle |
|
||||
|---|---|---|
|
||||
| 10h–16h | affluence max | perf prioritaire |
|
||||
| 18h–20h | sortie visiteurs | show spécial conseillé |
|
||||
| Nuit | zoo fermé | artiste `IDLE` |
|
||||
|
||||
### 4. Impacts Biologiques et Sociaux
|
||||
|
||||
#### Impact Reproduction (tableau détaillé)
|
||||
|
||||
| Facteur | Effet sur taux | Condition |
|
||||
|---|---|---|
|
||||
| Foule bruyante | -5% | si densité > seuil près d’enclos |
|
||||
| Show doux (musician) | +2% | si proche enclos et calme |
|
||||
|
||||
#### Impact Mort (tableau détaillé)
|
||||
|
||||
| Cas | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Accident foule | incident | si bouchon + chemins étroits |
|
||||
| Animal mort visible | choc | artiste stop perf, foule se disperse |
|
||||
|
||||
#### Impact Nourriture (tableau détaillé)
|
||||
|
||||
| Ressource | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Boisson visiteur | ventes + | show près boutique boisson |
|
||||
| Nourriture artiste | coût | si mécanique employé nourrit (option) |
|
||||
|
||||
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||
|
||||
| Action/État | Gain attractivité | Rayon | Notes |
|
||||
|---|---:|---:|---|
|
||||
| Performance active | +5 | 3 cases | cumul limité par zone |
|
||||
| Show spécial | +20 | 5 cases | déclenche attroupement |
|
||||
|
||||
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||
|
||||
| Action/État | Effet animaux | Condition |
|
||||
|---|---|---|
|
||||
| Bruit clown | stress + | espèces sensibles |
|
||||
| Musique douce | stress - | espèces calmes |
|
||||
|
||||
#### Impact Valeur (tableau détaillé)
|
||||
|
||||
| Facteur | Variation | Condition |
|
||||
|---|---:|---|
|
||||
| Tips collectés | +coins | par tick perf |
|
||||
| Réputation zoo | + | si artistes actifs sans incidents |
|
||||
|
||||
### 5. Impacts Logistiques et Économiques
|
||||
|
||||
#### Vitesse (Camion) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Livraison employés | neutre | pas d’impact direct |
|
||||
|
||||
#### Vitesse (Nurserie) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | artiste n’affecte pas nurserie |
|
||||
|
||||
#### Vitesse (Accueil) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| File entrée | + lente | foule show proche billeterie |
|
||||
|
||||
#### Vitesse (Recherche) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Vitesse (Labo) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Vitesse (Visite) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Temps de séjour | + | performance active |
|
||||
| Déplacement | - | si attroupement crée bouchon |
|
||||
|
||||
#### Dépenses (Billeterie) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Gestion file | 0 | - | - |
|
||||
|
||||
#### Dépenses (Boutiques) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Stock goodies show | variable | coins | si boutique vend souvenirs |
|
||||
|
||||
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Pourboires | +revenu (pas dépense) | coins | tips |
|
||||
|
||||
#### Dépenses (Employés) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Salaire artiste | `salary` | coins/jour | employé actif |
|
||||
| Embauche | `hire_cost` | coins | à l’achat |
|
||||
|
||||
#### Dépenses (Boutiques) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Cross-sell | - | - | section dupliquée conservée |
|
||||
|
||||
#### Dépenses (Nurseries) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### Dépenses (Nourriture) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Snacks show | 10 | coins | option “stand temporaire” |
|
||||
|
||||
#### 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 |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### Trajet Visiteurs
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Ville | Zoo | réputation/attractivité | l’artiste n’affecte pas le flux initial |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Show | Enclos proche | curiosité | détour possible, congestion |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Show | Boutique | soif/envie souvenir | augmente dépenses |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Billeterie | Show proche | densité | risque file lente |
|
||||
|
||||
### 6. Événements
|
||||
|
||||
#### Événements du Jeu (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Payload | Effet |
|
||||
|---|---|---|---|
|
||||
| `EMPLOYEE_HIRED` | embauche | type, id | ajoute entité |
|
||||
| `EMPLOYEE_SALARY_PAID` | fin jour | id, amount | dépense |
|
||||
|
||||
#### Événements du Carte (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `CROWD_CONGESTION` | densité > seuil | ralentit pathing local |
|
||||
|
||||
#### Événements du Zoo (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `ARTIST_SPECIAL_SHOW_START` | clic show | buff + FX |
|
||||
| `ARTIST_BREAK_START` | fatigue | stop perf |
|
||||
|
||||
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `VISITOR_DONATION` | tip | coins + |
|
||||
|
||||
#### Événements du Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `VISITOR_HAPPINESS_GAIN` | tick perf | happiness + |
|
||||
|
||||
#### Événements du Joueur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `PLAYER_TRIGGER_SHOW` | bouton | démarre cooldown |
|
||||
|
||||
### 7. Progression
|
||||
|
||||
#### Tableau des Upgrades (tableau détaillé)
|
||||
|
||||
| Niveau | Coût | Effet | Débloque |
|
||||
|---|---:|---|---|
|
||||
| 1 | 0 | artiste basic | subtype 1 |
|
||||
| 2 | 1000 | `radius` +1 | meilleur crowd control |
|
||||
| 3 | 2500 | tips +10% | bonus revenu |
|
||||
| 4 | 5000 | show spécial + | FX + durée |
|
||||
|
||||
### 8. Logique et Interfaces
|
||||
|
||||
#### Pseudo-code Impacts (tableau détaillé)
|
||||
|
||||
| Fonction | Entrées | Sorties | Notes |
|
||||
|---|---|---|---|
|
||||
| `update_artist` | artiste, visiteurs proches | happiness/tips | cf. algo existant |
|
||||
| `trigger_special_show` | artiste | buff | cooldown |
|
||||
|
||||
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||
|
||||
| ID | Niveau | Message | Condition |
|
||||
|---|---|---|---|
|
||||
| `ARTIST_ASSIGNED` | Info | "Artiste assigné." | assign ok |
|
||||
| `ARTIST_COOLDOWN` | Warning | "Show spécial en recharge." | cooldown actif |
|
||||
| `CROWD_BLOCKING` | Alerte | "Bouchon détecté près du show." | densité > seuil |
|
||||
|
||||
## Annexes UX/UI
|
||||
|
||||
### 1. Expérience Utilisateur (UX)
|
||||
|
||||
#### Description UX (tableau détaillé)
|
||||
|
||||
| Parcours | But | Friction | Réduction clics |
|
||||
|---|---|---|---|
|
||||
| Recruter artiste | augmenter attractivité | coûts/slots | achat direct depuis panneau Employés |
|
||||
| Lancer show | booster momentané | cooldown | bouton direct sur panneau artiste |
|
||||
|
||||
#### Description UI (tableau détaillé)
|
||||
|
||||
| Composant | Contenu | États |
|
||||
|---|---|---|
|
||||
| Panneau employé | salaire, rayon, subtype | IDLE/PERF/BREAK |
|
||||
| Bouton show spécial | cooldown + tooltip | enabled/disabled |
|
||||
|
||||
#### Emplacement (tableau détaillé)
|
||||
|
||||
| Zone UI | Position | Notes |
|
||||
|---|---|---|
|
||||
| HUD | menu Employés | accès rapide |
|
||||
| Carte | sprite artiste | sélection base |
|
||||
|
||||
#### Intégration (tableau détaillé)
|
||||
|
||||
| Intégration | Contrat | Notes |
|
||||
|---|---|---|
|
||||
| Pathfinding visiteurs | densité/obstacles | éviter ponts étroits |
|
||||
| Système incidents | foule/bouchons | événements dédiés |
|
||||
|
||||
#### Navigation (tableau détaillé)
|
||||
|
||||
| Action | Chemin | Résultat |
|
||||
|---|---|---|
|
||||
| Ouvrir panneau | clic artiste | panel visible |
|
||||
| Recruter | menu → confirmer | entité créée |
|
||||
|
||||
#### Événements (tableau détaillé)
|
||||
|
||||
| Event UI | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `OPEN_EMPLOYEE_PANEL` | clic artiste | ouvre panel |
|
||||
| `CLICK_SPECIAL_SHOW` | clic bouton | démarre show |
|
||||
|
||||
#### Assets Skinables
|
||||
|
||||
##### Musiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée | Notes |
|
||||
|---|---|---:|---|
|
||||
| `artist_theme_loop.mp3` | zone perf | loop | mix selon subtype |
|
||||
|
||||
##### Sons (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Volume |
|
||||
|---|---|---|
|
||||
| `crowd_cheer.mp3` | show spécial | moyen |
|
||||
| `coin_tip.mp3` | tip | faible |
|
||||
|
||||
##### Graphiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Contraintes |
|
||||
|---|---|---|
|
||||
| `artist_sprite_[subtype]_[dir].png` | sprite | 4 directions |
|
||||
| `fx_music_notes.png` | FX | overlay |
|
||||
|
||||
##### Images (tableau détaillé)
|
||||
|
||||
| Asset | Usage |
|
||||
|---|---|
|
||||
| `portrait_artist.png` | panel |
|
||||
| `icon_artist_mask.png` | liste employés |
|
||||
|
||||
##### Vidéos (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée |
|
||||
|---|---|---:|
|
||||
| `artist_special_show.webm` | popup show | 1.2s |
|
||||
|
||||
##### Animations (tableau détaillé)
|
||||
|
||||
| Animation | Déclencheur | Notes |
|
||||
|---|---|---|
|
||||
| notes flottantes | perf active | cadence 1/s |
|
||||
| confetti | show spécial | burst |
|
||||
|
||||
##### Couleurs (tableau détaillé)
|
||||
|
||||
| Token | Valeur | Usage |
|
||||
|---|---|---|
|
||||
| `artist_primary` | #C86DD7 | UI |
|
||||
| `artist_accent` | #FF77AA | FX |
|
||||
|
||||
##### Textes (tableau détaillé)
|
||||
|
||||
| Clé | FR | EN |
|
||||
|---|---|---|
|
||||
| `artist.hire` | Recruter | Hire |
|
||||
| `artist.special_show` | Show spécial | Special show |
|
||||
|
||||
##### Formes (tableau détaillé)
|
||||
|
||||
| Élément | Forme | Notes |
|
||||
|---|---|---|
|
||||
| Badge cooldown | pill arrondi | lisible |
|
||||
| Zone radius | cercle iso-projeté | overlay |
|
||||
|
||||
@@ -61,3 +61,460 @@ Représentation visuelle du joueur dans l'interface du jeu. L'avatar est personn
|
||||
* **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.
|
||||
|
||||
|
||||
## Définition
|
||||
|
||||
| Champ | Valeur |
|
||||
|---|---|
|
||||
| Entité | Avatar du joueur (HUD) + “Directeur” (NPC miniature) |
|
||||
| Rôle | Identité visuelle (pseudo/niveau/titre), personnalisation par skins, feedback d’état global du zoo. |
|
||||
| Visibilité | Toujours visible dans le HUD ; visible sur carte monde et potentiellement en visite/classements. |
|
||||
| Vue | Isométrique 2.5D (NPC), sprite 4 directions, hitbox base-sprite pour sélection NPC. |
|
||||
|
||||
## Fonctions (tableau détaillé)
|
||||
|
||||
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||
|---|---|---|---|---|---|
|
||||
| Personnaliser | Action joueur | inventaire skins, genre | `equipped_skins` | Équiper uniquement skins possédés ; genre modifiable | Event `AVATAR_EQUIP`, `AVATAR_GENDER_SET` |
|
||||
| Afficher identité | HUD render | pseudo, level, title | UI avatar | Toujours présent ; tooltip au hover | Event `HUD_AVATAR_RENDER` |
|
||||
| Réagir état zoo | Tick / événements | incidents, survie, réputation | `mood_state` + anim | Mapping déterministe (pas de “best effort”) | Event `AVATAR_MOOD_CHANGED` |
|
||||
| Level-up | XP gain | xp, seuil | level+1 | Animation + textes | Event `PLAYER_LEVEL_UP` |
|
||||
| NPC Directeur | Tick IA | heatmap incidents | déplacement | Priorise zones critiques, respecte chemins | Event `DIRECTOR_NPC_MOVE` |
|
||||
|
||||
## Icone de base
|
||||
|
||||
| Élément | Spécification |
|
||||
|---|---|
|
||||
| Représentation | Portrait tête (cadre rond/carré) |
|
||||
| Couleur dominante | Dépend skins équipés |
|
||||
| Variantes | `avatar_frame_round.png`, `avatar_frame_square.png` |
|
||||
| États | Badge niveau, badge humeur (🙂/😟) via icônes, pas d’emoji dans UI final (icônes). |
|
||||
|
||||
## Interactions (tableau détaillé)
|
||||
|
||||
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||
|---|---|---|---|---|---|
|
||||
| Ouvrir profil | Action | - | Clic avatar HUD | ouvre panneau profil | - |
|
||||
| Ouvrir inventaire skins | Action | - | Profil → onglet Skins | liste + preview | `NO_SKIN_OWNED` (info) |
|
||||
| Équiper skin | Action | skin possédé | Clic skin → “Équiper” | update `equipped_skins` | `SKIN_LOCKED` |
|
||||
| Changer genre | Action | - | Profil → genre | update `gender` | - |
|
||||
| Inspecter NPC | Consultation | NPC visible | Clic base sprite NPC | mini panel | - |
|
||||
|
||||
## Annexes Techniques
|
||||
|
||||
### 1. Données et États (tableau détaillé)
|
||||
|
||||
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||
|---|---|---|---|---|
|
||||
| `avatar_id` | string/uuid | `player_12345` | DB | unique |
|
||||
| `gender` | enum | `male|female` | DB | modifiable |
|
||||
| `level` | int | 12 | DB | monotone |
|
||||
| `experience` | int | 4500 | DB | 0..∞ |
|
||||
| `next_level_xp` | int | 5000 | config | recalcul |
|
||||
| `title` | string | `Expert Zoologist` | DB | liste débloquée |
|
||||
| `equipped_skins.head/body/accessory` | string | `skin_hat_safari` | DB | doit être possédé |
|
||||
| `unlocked_titles` | string[] | - | DB | append-only |
|
||||
| `mood_state` | enum | `happy|neutral|worried` | runtime | mapping événements |
|
||||
| `director_npc` | object | - | runtime | si feature active |
|
||||
| `grid` | object | `{x,y}` | runtime | NPC |
|
||||
| `iso_x/iso_y` | int | - | rendu | NPC |
|
||||
| `z_index` | int | - | rendu | NPC |
|
||||
| `hitbox` | enum | `base_sprite` | rendu | NPC |
|
||||
|
||||
#### Caractéristiques Initiales (tableau détaillé)
|
||||
|
||||
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||
|---|---:|---|---|
|
||||
| Genre | male/female | enum | choix initial |
|
||||
| Niveau | 1 | level | départ |
|
||||
| Mood | neutral | enum | départ |
|
||||
| Slots skins | 3 | slots | head/body/accessory |
|
||||
| NPC directeur | actif | bool | si feature |
|
||||
|
||||
#### Scores Initiaux (tableau détaillé)
|
||||
|
||||
| Score | Valeur initiale | Plage | Impact |
|
||||
|---|---:|---|---|
|
||||
| XP | 0 | 0..∞ | progression |
|
||||
| Prestige (titre) | 0 | 0..∞ | cosmétiques |
|
||||
| Incidents vus (NPC) | 0 | 0..∞ | debug IA |
|
||||
|
||||
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||
|
||||
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||
|---|---|---|---|---|
|
||||
| Création | création compte | pseudo | avatar | persisté |
|
||||
| Session | login | state | render | HUD constant |
|
||||
| Level-up | XP seuil | xp | level+1 | animation |
|
||||
| Disparition | suppression compte | - | supprimé | - |
|
||||
|
||||
#### Conditions d'Apparition (tableau détaillé)
|
||||
|
||||
| Condition | Seuil | Opérateur | Résultat |
|
||||
|---|---:|---|---|
|
||||
| Compte créé | true | est | avatar créé |
|
||||
|
||||
#### Conditions de Disparition (tableau détaillé)
|
||||
|
||||
| Condition | Seuil | Opérateur | Résultat |
|
||||
|---|---:|---|---|
|
||||
| Compte supprimé | true | est | supprimé |
|
||||
|
||||
#### Hérédité (tableau détaillé)
|
||||
|
||||
| Élément | Hérité | Règle |
|
||||
|---|---|---|
|
||||
| Skins équipés | Oui | persiste |
|
||||
| Titres | Oui | persiste |
|
||||
| Mood | Non | recalcul à l’ouverture session |
|
||||
|
||||
### 3. Impacts Environnementaux
|
||||
|
||||
#### Impact Température (tableau détaillé)
|
||||
|
||||
| Condition | Effet | Notes |
|
||||
|---|---|---|
|
||||
| Canicule | mood plus “worried” | si incidents chaleur |
|
||||
|
||||
#### Impact Milieu (Biome) (tableau détaillé)
|
||||
|
||||
| Biome | Effet | Notes |
|
||||
|---|---|---|
|
||||
| Chemins | NPC préfère | pathing |
|
||||
|
||||
#### Impact Saisons (tableau détaillé)
|
||||
|
||||
| Saison | Effet | Notes |
|
||||
|---|---|---|
|
||||
| Hiver | tenue “hiver” (si skin) | visuel option |
|
||||
|
||||
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||
|
||||
| Période | Effet | Notes |
|
||||
|---|---|---|
|
||||
| Nuit | NPC plus lent / rentre | zoo fermé |
|
||||
|
||||
### 4. Impacts Biologiques et Sociaux
|
||||
|
||||
#### Impact Reproduction (tableau détaillé)
|
||||
|
||||
| Facteur | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Mood “happy” | aucun direct | UI seulement |
|
||||
|
||||
#### Impact Mort (tableau détaillé)
|
||||
|
||||
| Cas | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Mort animal | mood worried | événement mort |
|
||||
|
||||
#### Impact Nourriture (tableau détaillé)
|
||||
|
||||
| Ressource | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | avatar ne consomme pas |
|
||||
|
||||
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||
|
||||
| Action/État | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Avatar soigné (skins VIP) | perception + | cosmétique |
|
||||
|
||||
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||
|
||||
| Action/État | Effet animaux | Condition |
|
||||
|---|---|---|
|
||||
| NPC inspecte | stress +/- | si s’approche |
|
||||
|
||||
#### Impact Valeur (tableau détaillé)
|
||||
|
||||
| Facteur | Variation | Condition |
|
||||
|---|---:|---|
|
||||
| Skins rares | valeur compte + | cosmétique |
|
||||
|
||||
### 5. Impacts Logistiques et Économiques
|
||||
|
||||
#### Vitesse (Camion) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Vitesse (Nurserie) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Vitesse (Accueil) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Vitesse (Recherche) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Vitesse (Labo) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Vitesse (Visite) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Dépenses (Billeterie) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### Dépenses (Boutiques) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Achat skins | variable | coins | boutique |
|
||||
|
||||
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### Dépenses (Employés) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### 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 |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### 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 |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### Trajet Visiteurs
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Ville | Zoo | réputation | avatar indirect |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| - | - | - | - |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| - | - | - | - |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| - | - | - | - |
|
||||
|
||||
### 6. Événements
|
||||
|
||||
#### Événements du Jeu (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Payload | Effet |
|
||||
|---|---|---|---|
|
||||
| `PLAYER_LEVEL_UP` | xp seuil | level | anim |
|
||||
|
||||
#### Événements du Carte (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `DIRECTOR_NPC_MOVE` | tick | déplacement |
|
||||
|
||||
#### Événements du Zoo (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `AVATAR_MOOD_CHANGED` | incidents | expression |
|
||||
|
||||
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `SHOW_PLAYER_AVATAR` | visite/classement | portrait |
|
||||
|
||||
#### Événements du Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| `VISITOR_SEE_OWNER` | proximité NPC | réaction |
|
||||
|
||||
#### Événements du Joueur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| `AVATAR_EQUIP` | equip | update |
|
||||
|
||||
### 7. Progression
|
||||
|
||||
#### Tableau des Upgrades (tableau détaillé)
|
||||
|
||||
| Niveau | Coût | Effet | Débloque |
|
||||
|---|---:|---|---|
|
||||
| 1 | 0 | avatar base | 3 slots |
|
||||
| 2 | 0 | titres | badges |
|
||||
| 3 | 1000 | emotes | mood FX |
|
||||
|
||||
### 8. Logique et Interfaces
|
||||
|
||||
#### Pseudo-code Impacts (tableau détaillé)
|
||||
|
||||
| Fonction | Entrées | Sorties | Notes |
|
||||
|---|---|---|---|
|
||||
| `computeMoodState` | incidents/survie | mood_state | mapping |
|
||||
| `renderAvatarHud` | avatar | DOM | - |
|
||||
|
||||
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||
|
||||
| ID | Niveau | Message | Condition |
|
||||
|---|---|---|---|
|
||||
| `SKIN_LOCKED` | Warning | "Skin non débloqué." | equip fail |
|
||||
| `PLAYER_LEVEL_UP` | Info | "Niveau supérieur !" | level up |
|
||||
|
||||
## Annexes UX/UI
|
||||
|
||||
### 1. Expérience Utilisateur (UX)
|
||||
|
||||
#### Description UX (tableau détaillé)
|
||||
|
||||
| Parcours | But | Friction | Réduction clics |
|
||||
|---|---|---|---|
|
||||
| Accéder skins | personnaliser | navigation | clic avatar → onglet skins direct |
|
||||
|
||||
#### Description UI (tableau détaillé)
|
||||
|
||||
| Composant | Contenu | États |
|
||||
|---|---|---|
|
||||
| HUD avatar | portrait + badge | hover |
|
||||
| Panel skins | grille + preview | equip |
|
||||
|
||||
#### Emplacement (tableau détaillé)
|
||||
|
||||
| Zone UI | Position | Notes |
|
||||
|---|---|---|
|
||||
| HUD | coin sup | fixe |
|
||||
|
||||
#### Intégration (tableau détaillé)
|
||||
|
||||
| Intégration | Contrat | Notes |
|
||||
|---|---|---|
|
||||
| Inventaire skins | items | cf. `inventaire_skins.md` |
|
||||
|
||||
#### Navigation (tableau détaillé)
|
||||
|
||||
| Action | Chemin | Résultat |
|
||||
|---|---|---|
|
||||
| Ouvrir profil | clic | panel |
|
||||
|
||||
#### Événements (tableau détaillé)
|
||||
|
||||
| Event UI | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `OPEN_PROFILE` | clic avatar | panel |
|
||||
|
||||
#### Assets Skinables
|
||||
|
||||
##### Musiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée | Notes |
|
||||
|---|---|---:|---|
|
||||
| `ui_profile_loop.mp3` | panel | loop | discret |
|
||||
|
||||
##### Sons (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Volume |
|
||||
|---|---|---|
|
||||
| `ui_open.mp3` | open | faible |
|
||||
| `equip_click.mp3` | equip | faible |
|
||||
|
||||
##### Graphiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Contraintes |
|
||||
|---|---|---|
|
||||
| `avatar_portrait.png` | HUD | - |
|
||||
| `director_sprite_[dir].png` | NPC | 4 dirs |
|
||||
|
||||
##### Images (tableau détaillé)
|
||||
|
||||
| Asset | Usage |
|
||||
|---|---|
|
||||
| `icon_gender_male.png` | switch |
|
||||
| `icon_gender_female.png` | switch |
|
||||
|
||||
##### Vidéos (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée |
|
||||
|---|---|---:|
|
||||
| `level_up.webm` | level up | 1.0s |
|
||||
|
||||
##### Animations (tableau détaillé)
|
||||
|
||||
| Animation | Déclencheur | Notes |
|
||||
|---|---|---|
|
||||
| blink | idle | loop |
|
||||
| smile/frown | mood change | 0.6s |
|
||||
|
||||
##### Couleurs (tableau détaillé)
|
||||
|
||||
| Token | Valeur | Usage |
|
||||
|---|---|---|
|
||||
| `avatar_frame` | #FFFFFF | cadre |
|
||||
| `avatar_badge` | #FFD700 | niveau |
|
||||
|
||||
##### Textes (tableau détaillé)
|
||||
|
||||
| Clé | FR | EN |
|
||||
|---|---|---|
|
||||
| `profile.open` | Profil | Profile |
|
||||
| `skins.open` | Skins | Skins |
|
||||
|
||||
##### Formes (tableau détaillé)
|
||||
|
||||
| Élément | Forme | Notes |
|
||||
|---|---|---|
|
||||
| Avatar HUD | cercle | accessible |
|
||||
| Boutons onglets | pills | lisible |
|
||||
|
||||
@@ -209,3 +209,503 @@ function updateBaby(baby, context):
|
||||
- **Couleurs** : Blanc/Or.
|
||||
- **Textes** : "Adulte".
|
||||
- **Formes** : Rayons de lumière.
|
||||
|
||||
## Définition
|
||||
|
||||
| Champ | Valeur |
|
||||
|---|---|
|
||||
| Concept | Instance d’animal au stade “bébé” (post-éclosion), avec progression de croissance vers l’adulte. |
|
||||
| Rôle | Introduire une phase de fragilité et de soins, visible en nurserie et/ou sur le zoo, avec effets d’attractivité “mignon” et contraintes biologiques (non reproductible). |
|
||||
| Portée | Une entité `Animal` (référence `animal_id`) au sein d’un zoo, potentiellement rattachée à une `nurserie_id`. |
|
||||
| Contrainte | Calculs dérivés (croissance, fragilité, dégâts) à la volée, sans cache/mémorisation ; pas de fallback silencieux en cas d’état incohérent (log + erreur). |
|
||||
|
||||
## Fonctions (tableau détaillé)
|
||||
|
||||
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||
|---|---|---|---|---|---|
|
||||
| Créer bébé | éclosion / naissance | `parents_ids?`, `species_id`, `genetics` | entité animal `is_baby=true` | Création atomique ; init `growth_progress=0` | Event `BABY_CREATED` |
|
||||
| Assigner à une nurserie | placement automatique ou choix joueur | `animal_id`, `nurserie_id`, `slot_id` | bébé visible en slot | Un bébé peut être en nurserie ou sur grille, pas les deux | Event `BABY_ASSIGNED_NURSERY` |
|
||||
| Progresser croissance | tick logique (lazy) | temps, conditions | `growth_progress` ↑ | Vitesse dépend de rareté + niveau nurserie ; clamp 0..100 | Event `BABY_GROWTH_UPDATED` |
|
||||
| Appliquer fragilité | calcul impacts | température, faim, stress | santé ↓ | Multiplicateur fragilité > adulte ; pas d’exception au biome/temp extrêmes | Event `BABY_FRAGILITY_APPLIED` |
|
||||
| Interdire reproduction | tentative accouplement | `animal_id` | refus | Toujours refus tant que `is_baby=true` | Event `BABY_REPRO_BLOCKED` |
|
||||
| Transformer en adulte | `growth_progress>=100` | `animal_id` | `is_baby=false` | Transition irréversible ; conserve identité + génétique | Event `BABY_BECAME_ADULT` |
|
||||
| Mettre en vente (bébé) | action joueur | `animal_id`, type vente | listing créé | Vente possible si pas “en danger critique” | Event `BABY_LISTED_FOR_SALE` |
|
||||
|
||||
## Icone de base
|
||||
|
||||
| Élément | Spécification |
|
||||
|---|---|
|
||||
| Représentation | Sprite “bébé” (tête plus grande), badge “B” sur coin UI |
|
||||
| Couleur dominante | Pastel (bleu/rose selon thème), outline blanc au survol |
|
||||
| Variantes | `animal_baby_<species>_dir_{N,E,S,W}.png` |
|
||||
| États | `calme`, `affamé`, `froid/chaud`, `malade`, `en_croissance` |
|
||||
|
||||
## Interactions (tableau détaillé)
|
||||
|
||||
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||
|---|---|---|---|---|---|
|
||||
| Ouvrir fiche bébé | Consultation | bébé visible (nurserie ou zoo) | clic sprite/base → panneau | stats + actions | - |
|
||||
| Nourrir bébé | Action | nourriture dispo | clic “Nourrir” | faim ↓, santé stable | `NO_FOOD`, `BABY_CRITICAL` |
|
||||
| Soigner bébé | Action | employé/soigneur dispo | clic “Soigner” | maladie ↓ | `NO_STAFF`, `NETWORK_ERROR` |
|
||||
| Sortie prématurée | Action | bébé en nurserie | drag vers case → confirm | bébé sur grille | `PLACEMENT_INVALID`, `BABY_TOO_FRAGILE` |
|
||||
| Mettre en vente | Action | bébé stable | “Vendre” → choisir mode | listing créé | `BABY_CRITICAL` |
|
||||
|
||||
## Annexes Techniques
|
||||
|
||||
### 1. Données et États (tableau détaillé)
|
||||
|
||||
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||
|---|---|---|---|---|
|
||||
| `animal_id` | uuid_v4 | `...` | DB | identifiant stable |
|
||||
| `species_id` | string | `PANDA` | DB | enum espèces |
|
||||
| `is_baby` | boolean | true | DB | vrai jusqu’à transition adulte |
|
||||
| `growth_progress` | float | 42.5 | calcul/DB | clamp 0..100 |
|
||||
| `growth_stage` | string | `juvenile` | calcul | dérivé de `growth_progress` |
|
||||
| `nurserie_id` | uuid_v4 \| null | `...` | DB | null si sur grille |
|
||||
| `position.iso_x` | int \| null | 120 | DB | requis si sur grille |
|
||||
| `position.iso_y` | int \| null | 88 | DB | requis si sur grille |
|
||||
| `render.z_index` | int | 12088 | calcul | tri profondeur (iso) |
|
||||
| `render.hitbox` | string | `base_sprite` | client | clic sur base |
|
||||
| `health` | float | 100.0 | calcul/DB | 0..100 |
|
||||
| `hunger` | float | 0.0 | calcul/DB | 0..100 |
|
||||
| `stress` | float | 0.0 | calcul/DB | 0..100 |
|
||||
| `timestamps.created_at` | timestamp | - | DB | UTC |
|
||||
| `timestamps.updated_at` | timestamp | - | DB | UTC |
|
||||
|
||||
#### Caractéristiques Initiales (tableau détaillé)
|
||||
|
||||
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||
|---|---:|---|---|
|
||||
| Santé | 100.0 | pts | base |
|
||||
| Faim | 0.0 | pts | augmente plus vite qu’un adulte |
|
||||
| Stress | 0.0 | pts | sensible aux écarts |
|
||||
| Croissance | 0.0 | % | 0..100 |
|
||||
| Fragilité | 2.0 | multiplicateur | dégâts environnement ×2 |
|
||||
|
||||
#### Scores Initiaux (tableau détaillé)
|
||||
|
||||
| Score | Valeur initiale | Plage | Impact |
|
||||
|---|---:|---|---|
|
||||
| Attractivité “mignon” | +100% vs adulte | 0..+200% | augmente afflux visiteurs |
|
||||
| Valeur potentielle | 150% du prix adulte | 50%..200% | décroît avec croissance |
|
||||
| Malus réputation (mort bébé) | ×2 | ×1..×3 | punit davantage un accident |
|
||||
|
||||
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||
|
||||
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||
|---|---|---|---|---|
|
||||
| Éclosion/Naissance | reproduction ok / timer œuf | genetics, species | bébé créé | `is_baby=true` |
|
||||
| Croissance | temps + conditions | température, nourriture | `growth_progress` ↑ | monotone |
|
||||
| Transition adulte | `growth_progress>=100` | animal | adulte | identité conservée |
|
||||
|
||||
#### Conditions d'Apparition (tableau détaillé)
|
||||
|
||||
| Condition | Seuil | Opérateur | Résultat |
|
||||
|---|---:|---|---|
|
||||
| Reproduction réussie | true | est | spawn bébé |
|
||||
| Éclosion | timer fini | atteint | spawn bébé |
|
||||
|
||||
#### Conditions de Disparition (tableau détaillé)
|
||||
|
||||
| Condition | Seuil | Opérateur | Résultat |
|
||||
|---|---:|---|---|
|
||||
| Croissance terminée | 100 | >= | devient adulte |
|
||||
| Santé critique | 0 | <= | mort |
|
||||
|
||||
#### Hérédité (tableau détaillé)
|
||||
|
||||
| Élément | Hérité | Règle |
|
||||
|---|---|---|
|
||||
| Génétique | Oui | copie des gènes (voir `animal_generique.md`) |
|
||||
| Traits esthétiques | Oui | pattern/couleurs, appliqués au sprite bébé |
|
||||
| Affinités milieu/temp | Oui | modifie fragilité effective |
|
||||
|
||||
### 3. Impacts Environnementaux
|
||||
|
||||
#### Impact Température (tableau détaillé)
|
||||
|
||||
| Condition | Effet bébé | Notes |
|
||||
|---|---|---|
|
||||
| \(|\Delta T|\le 1\) | santé \(-2\) / h | fragilité ×2 vs adulte |
|
||||
| \(|\Delta T|=2\) | santé \(-10\) / h | soins requis rapidement |
|
||||
| \(|\Delta T|\ge 3\) | santé \(-40\) / h | mort rapide si non corrigé |
|
||||
|
||||
#### Impact Milieu (Biome) (tableau détaillé)
|
||||
|
||||
| Biome | Effet bébé | Notes |
|
||||
|---|---|---|
|
||||
| Biome compatible | stress +0 | nominal |
|
||||
| Biome incompatible | stress +2x | plus fort que l’adulte |
|
||||
|
||||
#### Impact Saisons (tableau détaillé)
|
||||
|
||||
| Saison | Effet bébé | Notes |
|
||||
|---|---|---|
|
||||
| Hiver | risque froid ↑ | privilégier nurserie |
|
||||
| Été | risque chaud ↑ | besoin d’eau/ombre |
|
||||
|
||||
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||
|
||||
| Période | Effet bébé | Notes |
|
||||
|---|---|---|
|
||||
| Nuit | sommeil ↑, faim ↑ | bébé se repose, métabolisme reste rapide |
|
||||
| Jour | attractivité visiteurs ↑ | “mignon” visible |
|
||||
|
||||
### 4. Impacts Biologiques et Sociaux
|
||||
|
||||
#### Impact Reproduction (tableau détaillé)
|
||||
|
||||
| Facteur | Effet sur taux | Condition |
|
||||
|---|---|---|
|
||||
| Stade bébé | 0 | reproduction interdite |
|
||||
|
||||
#### Impact Mort (tableau détaillé)
|
||||
|
||||
| Cas | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Mort bébé | malus réputation ×2 | si visiteurs exposés à l’événement |
|
||||
|
||||
#### Impact Nourriture (tableau détaillé)
|
||||
|
||||
| Ressource | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Nourriture espèce | faim \(-\) plus fréquemment | métabolisme ×1.5 |
|
||||
|
||||
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||
|
||||
| Action/État | Gain | Rayon | Notes |
|
||||
|---|---:|---:|---|
|
||||
| Bébé visible | +50% | +2 cases | priorité de visite |
|
||||
| Bébé en nurserie | +0% sur grille | - | visible uniquement via UI |
|
||||
|
||||
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||
|
||||
| Action/État | Effet animaux | Condition |
|
||||
|---|---|---|
|
||||
| Présence bébé | stress \(\pm\) selon espèce | certaines espèces parentales calment, d’autres stressent |
|
||||
|
||||
#### Impact Valeur (tableau détaillé)
|
||||
|
||||
| Facteur | Variation | Condition |
|
||||
|---|---:|---|
|
||||
| Croissance 0..50% | +50% | potentiel maximum |
|
||||
| Croissance 50..99% | décroissance vers adulte | linéaire |
|
||||
| Santé < 50 | -30% | vente risquée |
|
||||
|
||||
### 5. Impacts Logistiques et Économiques
|
||||
|
||||
#### Vitesse (Camion) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Transport bébé | vitesse \(-20%\) | conduite prudente |
|
||||
| Contrôle température | stabilité ↑ | camion équipé |
|
||||
|
||||
#### Vitesse (Nurserie) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Niveau nurserie | croissance +\(\{0,10,20,30\}%\) | upgrade nurserie |
|
||||
| Soins assignés | dégâts temp \(-25%\) | soigneur actif |
|
||||
|
||||
#### Vitesse (Accueil) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Check-in bébé | durée +10% | contrôles supplémentaires |
|
||||
|
||||
#### Vitesse (Recherche) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Étude bébé | progrès recherche +5% | si centre recherche dispose d’un protocole |
|
||||
|
||||
#### Vitesse (Labo) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Analyses | durée +15% | prélèvements délicats |
|
||||
|
||||
#### Vitesse (Visite) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Temps devant bébé | +20% | “effet mignon” |
|
||||
|
||||
#### Dépenses (Billeterie) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Communication “naissance” | 0 | - | événement interne, pas d’analytics |
|
||||
|
||||
#### Dépenses (Boutiques) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Souvenir “bébé” | +1 | item | si boutique souvenir |
|
||||
|
||||
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Satisfaction (bonus) | + | points | si bébé visible |
|
||||
|
||||
#### Dépenses (Employés) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Temps soigneur | +1 | min / tick | bébé fragile |
|
||||
|
||||
#### 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 |
|
||||
|---|---:|---|---|
|
||||
| Slot nurserie | 5 | coins / h | par bébé |
|
||||
|
||||
#### Dépenses (Nourriture) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Nourriture bébé | +20% | coins / ration | rations plus fréquentes |
|
||||
|
||||
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Contrôle santé bébé | 10 | coins | à l’arrivée |
|
||||
|
||||
#### Dépenses (Camion) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Caisson temp | 15 | coins | transport bébé |
|
||||
|
||||
#### Trajet Visiteurs
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Ville | Zoo | annonce naissance (in-game) | afflux modéré |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Entrée | Enclos bébé | bébé visible | priorité haute |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Enclos bébé | Boutique souvenir | souvenir dispo | achat impulsif |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Billetterie | Enclos bébé | visite planifiée | détour direct |
|
||||
|
||||
### 6. Événements
|
||||
|
||||
#### Événements du Jeu (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Payload | Effet |
|
||||
|---|---|---|---|
|
||||
| `BABY_CREATED` | éclosion/naissance | `animal_id`, `species_id` | ajoute entité |
|
||||
| `BABY_GROWTH_UPDATED` | tick lazy | `animal_id`, `growth_progress` | UI jauge |
|
||||
| `BABY_BECAME_ADULT` | seuil 100 | `animal_id` | swap sprite + stats |
|
||||
| `BABY_CRITICAL` | santé basse | `animal_id`, raison | alerte |
|
||||
|
||||
#### Événements du Carte (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `BABY_MARKER_SHOW` | map open | badge sur bâtiment nurserie |
|
||||
|
||||
#### Événements du Zoo (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `BABY_SELECTED` | clic sprite | ouvre panneau |
|
||||
| `BABY_MOVED` | placement | maj position iso + z_index |
|
||||
|
||||
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `VISITOR_ATTRACTED_BY_BABY` | bébé visible | route vers enclos |
|
||||
|
||||
#### Événements du Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `VISITOR_TAKES_PHOTO_BABY` | proche enclos | satisfaction + |
|
||||
|
||||
#### Événements du Joueur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `PLAYER_FEEDS_BABY` | action | faim ↓ |
|
||||
| `PLAYER_LISTS_BABY` | vente | listing |
|
||||
|
||||
### 7. Progression
|
||||
|
||||
#### Tableau des Upgrades (tableau détaillé)
|
||||
|
||||
| Niveau | Coût | Effet | Débloque |
|
||||
|---|---:|---|---|
|
||||
| Nurserie 1 | 0 | croissance nominale | slots base |
|
||||
| Nurserie 2 | 250 | croissance +10% | slot +1 |
|
||||
| Nurserie 3 | 750 | dégâts temp -10% | protocole soins |
|
||||
|
||||
### 8. Logique et Interfaces
|
||||
|
||||
#### Pseudo-code Impacts (tableau détaillé)
|
||||
|
||||
| Fonction | Entrées | Sorties | Notes |
|
||||
|---|---|---|---|
|
||||
| `computeBabyGrowth` | baby, now, nurserieLevel | float | clamp 0..100 |
|
||||
| `computeBabyTempDamage` | deltaT, fragility | float | multiplicateur |
|
||||
| `canReproduce` | baby | bool | false si `is_baby` |
|
||||
| `transformToAdult` | baby | adult | conserve ID + génétique |
|
||||
|
||||
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||
|
||||
| ID | Niveau | Message | Condition |
|
||||
|---|---|---|---|
|
||||
| `BABY_GROWING` | Info | "Croissance en cours." | bébé actif |
|
||||
| `BABY_BECAME_ADULT` | Info | "Un bébé est devenu adulte." | transition |
|
||||
| `BABY_CRITICAL` | Critique | "Un bébé est en danger critique." | santé basse |
|
||||
| `BABY_TOO_FRAGILE` | Warning | "Bébé trop fragile pour sortir." | sortie prématurée |
|
||||
|
||||
## Annexes UX/UI
|
||||
|
||||
### 1. Expérience Utilisateur (UX)
|
||||
|
||||
#### Description UX (tableau détaillé)
|
||||
|
||||
| Parcours | But | Friction | Réduction clics |
|
||||
|---|---|---|---|
|
||||
| Consulter bébé | suivre croissance | trouver slot | notif deep-link vers slot |
|
||||
| Nourrir | éviter danger | action répétée | bouton direct dans panneau sélection |
|
||||
| Sortir prématurément | placer sur grille | validation risque | une seule modale de confirmation |
|
||||
|
||||
#### Description UI (tableau détaillé)
|
||||
|
||||
| Composant | Contenu | États |
|
||||
|---|---|---|
|
||||
| Slot nurserie | sprite + jauge | normal/critique |
|
||||
| Panneau bébé | santé, faim, croissance | actions activées/désactivées |
|
||||
| Badge “B” | état bébé | visible sur sprite et liste |
|
||||
|
||||
#### Emplacement (tableau détaillé)
|
||||
|
||||
| Zone UI | Position | Notes |
|
||||
|---|---|---|
|
||||
| Nurserie | slots | vue principale |
|
||||
| Zoo | sur case (iso) | clic sur base |
|
||||
| Notifications | top UI | deep-link |
|
||||
|
||||
#### Intégration (tableau détaillé)
|
||||
|
||||
| Intégration | Contrat | Notes |
|
||||
|---|---|---|
|
||||
| `nurserie.md` | slots + jauge | croissance |
|
||||
| `animal_generique.md` | base stats | mêmes champs + `is_baby` |
|
||||
| `vente_*` | vente bébé | règles “pas critique” |
|
||||
|
||||
#### Navigation (tableau détaillé)
|
||||
|
||||
| Action | Chemin | Résultat |
|
||||
|---|---|---|
|
||||
| Ouvrir bébé (nurserie) | notif → nurserie → slot | panneau ouvert |
|
||||
| Ouvrir bébé (zoo) | clic sprite/base | panneau |
|
||||
| Nourrir | panneau → bouton | action appliquée |
|
||||
| Sortir prématurément | drag → modale → drop | bébé placé |
|
||||
|
||||
#### Événements (tableau détaillé)
|
||||
|
||||
| Event UI | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `OPEN_BABY_PANEL` | clic | ouvre panneau |
|
||||
| `CLICK_FEED_BABY` | bouton | action |
|
||||
| `CONFIRM_PLACE_BABY` | modale | place |
|
||||
|
||||
#### Assets Skinables
|
||||
|
||||
##### Musiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée | Notes |
|
||||
|---|---|---:|---|
|
||||
| `nursery_lullaby_loop.mp3` | nurserie | loop | discret |
|
||||
|
||||
##### Sons (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Volume |
|
||||
|---|---|---|
|
||||
| `baby_chirp_01.mp3` | idle bébé | bas |
|
||||
| `ui_warning_beep.mp3` | critique | moyen |
|
||||
| `ui_level_up.mp3` | transition adulte | moyen |
|
||||
|
||||
##### Graphiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Contraintes |
|
||||
|---|---|---|
|
||||
| `baby_outline_hover.png` | survol | overlay iso |
|
||||
| `baby_growth_bar.png` | jauge | lisible petit |
|
||||
| `baby_warning_icon.png` | critique | contraste |
|
||||
|
||||
##### Images (tableau détaillé)
|
||||
|
||||
| Asset | Usage |
|
||||
|---|---|
|
||||
| `nursery_slot_frame.png` | slot |
|
||||
| `baby_card_bg.png` | panneau |
|
||||
|
||||
##### Vidéos (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée |
|
||||
|---|---|---:|
|
||||
| `baby_hatch.webm` | éclosion | 2.0s |
|
||||
| `baby_morph_to_adult.webm` | transition | 1.2s |
|
||||
|
||||
##### Animations (tableau détaillé)
|
||||
|
||||
| Animation | Déclencheur | Notes |
|
||||
|---|---|---|
|
||||
| respiration légère | idle | 1.5s loop |
|
||||
| tremblement | critique | 0.4s |
|
||||
| flash + particules | adulte | 0.8s |
|
||||
|
||||
##### Couleurs (tableau détaillé)
|
||||
|
||||
| Token | Valeur | Usage |
|
||||
|---|---|---|
|
||||
| `baby_pastel_blue` | #A7D8FF | nurserie |
|
||||
| `baby_pastel_pink` | #FFB3D9 | accents |
|
||||
| `baby_warning_red` | #D32F2F | critique |
|
||||
|
||||
##### Textes (tableau détaillé)
|
||||
|
||||
| Clé | FR | EN |
|
||||
|---|---|---|
|
||||
| `baby.title` | Bébé | Baby |
|
||||
| `baby.feed` | Nourrir | Feed |
|
||||
| `baby.heal` | Soigner | Heal |
|
||||
| `baby.too_fragile` | Bébé trop fragile. | Baby too fragile. |
|
||||
| `baby.became_adult` | Devenu adulte. | Became adult. |
|
||||
|
||||
##### Formes (tableau détaillé)
|
||||
|
||||
| Élément | Forme | Notes |
|
||||
|---|---|---|
|
||||
| Jauge croissance | rectangle arrondi | compacte |
|
||||
| Badge “B” | pastille ronde | lisible |
|
||||
| Alerte critique | triangle | contraste élevé |
|
||||
|
||||
@@ -203,3 +203,472 @@ function updateResearch(center):
|
||||
- **Couleurs** : Bleu.
|
||||
- **Textes** : "Upgrade Terminé".
|
||||
- **Formes** : Hexagones.
|
||||
|
||||
|
||||
## Fonctions (tableau détaillé)
|
||||
|
||||
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||
|---|---|---|---|---|---|
|
||||
| Production RP | Tick / delta | `level`, mod saison/météo | `research_points +` | Production continue 24h/24 ; modifs cumulables avec caps | Event `RESEARCH_TICK`, compteurs `/h` et `/jour` |
|
||||
| Déblocage carte | Action joueur | `research_points`, coût | `world_map_unlocks +` | Dépense atomique, refuse si points insuffisants | Event `RESEARCH_SPEND_UNLOCK` |
|
||||
| Radar offres | Tick visibilité | `range`, `rarity_visible` | UI offre filtrée | La visibilité est une règle d’affichage, pas un cache | Event `WORLD_OFFER_VISIBILITY_UPDATED` |
|
||||
| Musée / conférences | Calendrier | week-end, level | attractivité + | Actif si module/milestone atteint | Event `RESEARCH_TALK` |
|
||||
|
||||
## Icone de base
|
||||
|
||||
| Élément | Spécification |
|
||||
|---|---|
|
||||
| Représentation | Fiole / atome / radar |
|
||||
| Couleur dominante | Bleu science |
|
||||
| Variantes | `icon_research_flask.png`, `icon_research_atom.png`, `icon_research_radar.png` |
|
||||
| États | Badge “collectable” (+RP), “boost” (éclair), “surchauffe” (thermo) |
|
||||
|
||||
## Interactions (tableau détaillé)
|
||||
|
||||
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||
|---|---|---|---|---|---|
|
||||
| Collecter points | Action | points disponibles | Clic bâtiment | RP crédités | `RESEARCH_NOT_READY` |
|
||||
| Ouvrir détail | Consultation | - | Double clic / bouton “Détails” | panneau stats/upgrade | - |
|
||||
| Améliorer | Action | coins ≥ coût | Bouton upgrade | level +1 | `INSUFFICIENT_FUNDS` |
|
||||
| Consommer RP | Action | RP ≥ coût | Arbre/Carte monde → déverrouiller | unlock | `INSUFFICIENT_RESEARCH_POINTS` |
|
||||
| Affecter chercheurs | Action | slots < 3 | Panel centre → slots | production + | `RESEARCH_CENTER_FULL` |
|
||||
|
||||
## Annexes Techniques
|
||||
|
||||
### 1. Données et États (tableau détaillé)
|
||||
|
||||
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||
|---|---|---|---|---|
|
||||
| `id` | uuid | - | DB | unique |
|
||||
| `type` | enum | `research_center` | DB | constante |
|
||||
| `level` | int | 1..7 | DB | clamp |
|
||||
| `stats.points_generated` | int | 0..∞ | runtime | monotone |
|
||||
| `stats.last_collection` | timestamp | - | runtime | null au début |
|
||||
| `production_rate_per_hour` | int | 10..600 | config | selon tableau |
|
||||
| `range_zoos` | int/string | 10..Tout | config | niveau 7 = Tout |
|
||||
| `rarity_visible` | int | 1..5 | config | 1=commun, 5=légendaire |
|
||||
| `assigned_researchers` | uuid[] | max 3 | runtime | cf. `chercheur.md` |
|
||||
| `grid` | object | `{x,y}` | runtime | position |
|
||||
| `iso_x/iso_y` | int | - | rendu | projection |
|
||||
| `z_index` | int | - | rendu | profondeur |
|
||||
| `hitbox` | enum | `base_sprite` | rendu | click base |
|
||||
|
||||
#### Caractéristiques Initiales (tableau détaillé)
|
||||
|
||||
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||
|---|---:|---|---|
|
||||
| Production | 10 | RP/heure | niv 1 |
|
||||
| Portée radar | 10 | zoos | proximité |
|
||||
| Rareté visible | 1 | niveau | commun |
|
||||
| Slots chercheurs | 0/3 | slots | activés si feature employés |
|
||||
|
||||
#### Scores Initiaux (tableau détaillé)
|
||||
|
||||
| Score | Valeur initiale | Plage | Impact |
|
||||
|---|---:|---|---|
|
||||
| Archives découvertes | 0 | 0..∞ | progression méta |
|
||||
| RP cumulés | 0 | 0..∞ | déverrouillages |
|
||||
| Boost actif | 0 | 0/1 | modifie production |
|
||||
|
||||
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||
|
||||
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||
|---|---|---|---|---|
|
||||
| Apparition | début partie | seed | bâtiment | présent au démarrage |
|
||||
| Production | tick | delta | RP + | 24h/24 |
|
||||
| Collecte | clic | points | RP global + | atomicité |
|
||||
| Disparition | supprimé compte | - | supprimé | indestructible en jeu |
|
||||
|
||||
#### Conditions d'Apparition (tableau détaillé)
|
||||
|
||||
| Condition | Seuil | Opérateur | Résultat |
|
||||
|---|---:|---|---|
|
||||
| Début partie | true | est | présent |
|
||||
|
||||
#### Conditions de Disparition (tableau détaillé)
|
||||
|
||||
| Condition | Seuil | Opérateur | Résultat |
|
||||
|---|---:|---|---|
|
||||
| Compte supprimé | true | est | supprimé |
|
||||
| Destruction | - | interdit | refus |
|
||||
|
||||
#### Hérédité (tableau détaillé)
|
||||
|
||||
| Élément | Hérité | Règle |
|
||||
|---|---|---|
|
||||
| Archives | Oui | 10% des RP conservés |
|
||||
| Level | Oui | persiste |
|
||||
| RP non collectés | Non | convertis/collectés au login (lazy update) |
|
||||
|
||||
### 3. Impacts Environnementaux
|
||||
|
||||
#### Impact Température (tableau détaillé)
|
||||
|
||||
| Condition | Effet | Modificateur |
|
||||
|---|---|---|
|
||||
| Canicule | production - | -10% |
|
||||
| Tempérée | neutre | 0% |
|
||||
|
||||
#### Impact Milieu (Biome) (tableau détaillé)
|
||||
|
||||
| Biome | Effet | Règle |
|
||||
|---|---|---|
|
||||
| Marais | coût construction | x2 |
|
||||
| Terrain stable | normal | x1 |
|
||||
|
||||
#### Impact Saisons (tableau détaillé)
|
||||
|
||||
| Saison | Effet | Modificateur |
|
||||
|---|---|---|
|
||||
| Automne | rentrée | +10% |
|
||||
| Été | vacances | -5% |
|
||||
|
||||
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||
|
||||
| Période | Effet | Règle |
|
||||
|---|---|---|
|
||||
| Jour | production | normale |
|
||||
| Nuit | production | normale (24h/24) |
|
||||
|
||||
### 4. Impacts Biologiques et Sociaux
|
||||
|
||||
#### Impact Reproduction (tableau détaillé)
|
||||
|
||||
| Déclencheur | Gain RP | Condition |
|
||||
|---|---:|---|
|
||||
| Naissance rare | +50 | rareté ≥ 3 |
|
||||
|
||||
#### Impact Mort (tableau détaillé)
|
||||
|
||||
| Déclencheur | Gain RP | Condition |
|
||||
|---|---:|---|
|
||||
| Mort | +20 | autopsie active |
|
||||
|
||||
#### Impact Nourriture (tableau détaillé)
|
||||
|
||||
| Poste | Consommation | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Cafétéria | 5 | unités/jour | personnel centre |
|
||||
|
||||
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||
|
||||
| Action/État | Gain | Rayon | Notes |
|
||||
|---|---:|---:|---|
|
||||
| Conférences | +10 | zoo | week-end |
|
||||
| Musée module | + | local | niv 4+ |
|
||||
|
||||
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||
|
||||
| Action/État | Effet animaux | Condition |
|
||||
|---|---|---|
|
||||
| Aucune interaction directe | aucun | centre n’est pas un enclos |
|
||||
|
||||
#### Impact Valeur (tableau détaillé)
|
||||
|
||||
| Facteur | Variation | Condition |
|
||||
|---|---:|---|
|
||||
| Brevets | valeur élevée | non revendable |
|
||||
|
||||
### 5. Impacts Logistiques et Économiques
|
||||
|
||||
#### Vitesse (Camion) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Livraison matériel | indirect | si feature équipement |
|
||||
|
||||
#### Vitesse (Nurserie) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Tech incub | accélère | si recherche débloquée |
|
||||
|
||||
#### Vitesse (Accueil) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Vitesse (Recherche) (tableau détaillé)
|
||||
|
||||
| Niveau | Points / Heure | Unité | Notes |
|
||||
|---|---:|---|---|
|
||||
| 1 | 10 | RP/h | base |
|
||||
| 2 | 20 | RP/h | - |
|
||||
| 3 | 40 | RP/h | - |
|
||||
| 4 | 80 | RP/h | - |
|
||||
| 5 | 150 | RP/h | - |
|
||||
| 6 | 300 | RP/h | - |
|
||||
| 7 | 600 | RP/h | - |
|
||||
|
||||
#### Vitesse (Labo) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | indirect | via tech |
|
||||
|
||||
#### Vitesse (Visite) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Temps de séjour | + | musée/conférences |
|
||||
|
||||
#### Dépenses (Billeterie) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### Dépenses (Boutiques) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Souvenirs science | stock | coins | boutique |
|
||||
|
||||
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Conférences | 0 | - | included |
|
||||
|
||||
#### Dépenses (Employés) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Salaires chercheurs | variable | coins/jour | selon `chercheur.md` |
|
||||
|
||||
#### 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 |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### Dépenses (Nourriture) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Cafétéria | 5 | unités/jour | centre |
|
||||
|
||||
#### 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 |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### Trajet Visiteurs
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Ville | Zoo | attractivité | centre augmente attractivité |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Centre | Enclos | curiosité | détour (si musée) |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Centre | Boutique | souvenirs | dépense + |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Entrée | Centre | halo science | visite guidée |
|
||||
|
||||
### 6. Événements
|
||||
|
||||
#### Événements du Jeu (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Payload | Effet |
|
||||
|---|---|---|---|
|
||||
| `RESEARCH_TICK` | tick | amount | RP+ |
|
||||
| `RESEARCH_SPEND_UNLOCK` | spend | cost | unlock |
|
||||
|
||||
#### Événements du Carte (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `WORLD_OFFER_VISIBILITY_UPDATED` | level/range | UI filtre |
|
||||
|
||||
#### Événements du Zoo (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `RESEARCH_BOOST` | percée | +500 RP |
|
||||
|
||||
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `RESEARCH_TALK` | week-end | attractivité + |
|
||||
|
||||
#### Événements du Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| `VISITOR_INTEREST_SCIENCE` | musée | stay + |
|
||||
|
||||
#### Événements du Joueur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| `COLLECT_RESEARCH` | clic | collecte |
|
||||
|
||||
### 7. Progression
|
||||
|
||||
#### Tableau des Upgrades (tableau détaillé)
|
||||
|
||||
| Niveau | Coût (Pièces) | Production | Portée (Zoos) | Rareté Visible | Notes |
|
||||
|---|---:|---:|---|---:|---|
|
||||
| 1 | 0 | 10 | 10 | 1 | base |
|
||||
| 2 | 300 | 20 | 20 | 2 | - |
|
||||
| 3 | 600 | 40 | 30 | 2 | - |
|
||||
| 4 | 1200 | 80 | 50 | 3 | musée possible |
|
||||
| 5 | 2400 | 150 | 80 | 3 | - |
|
||||
| 6 | 4800 | 300 | 120 | 4 | - |
|
||||
| 7 | 9600 | 600 | Tout | 5 | max |
|
||||
|
||||
### 8. Logique et Interfaces
|
||||
|
||||
#### Pseudo-code Impacts (tableau détaillé)
|
||||
|
||||
| Fonction | Entrées | Sorties | Notes |
|
||||
|---|---|---|---|
|
||||
| `updateResearch` | center, delta | rp | basé sur `level` |
|
||||
| `updateWorldMapVisibility` | range, rarity | UI | pas de cache |
|
||||
|
||||
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||
|
||||
| ID | Niveau | Message | Condition |
|
||||
|---|---|---|---|
|
||||
| `RESEARCH_UNLOCK` | Info | "Nouvelle zone de carte découverte !" | spend ok |
|
||||
| `RESEARCH_BOOST` | Info | "Percée scientifique ! +500 pts." | random proc |
|
||||
| `INSUFFICIENT_RESEARCH_POINTS` | Warning | "Points de recherche insuffisants." | spend fail |
|
||||
|
||||
## Annexes UX/UI
|
||||
|
||||
### 1. Expérience Utilisateur (UX)
|
||||
|
||||
#### Description UX (tableau détaillé)
|
||||
|
||||
| Parcours | But | Friction | Réduction clics |
|
||||
|---|---|---|---|
|
||||
| Collecter | récupérer RP | oubli | badge + clic direct |
|
||||
| Upgrader | augmenter prod | coût | comparaison “actuel/suivant” |
|
||||
| Déverrouiller | étendre monde | navigation | deep-link carte monde |
|
||||
|
||||
#### Description UI (tableau détaillé)
|
||||
|
||||
| Composant | Contenu | États |
|
||||
|---|---|---|
|
||||
| Badge RP | +RP | visible quand dispo |
|
||||
| Panel centre | prod/h, portée, rareté | level 1..7 |
|
||||
|
||||
#### Emplacement (tableau détaillé)
|
||||
|
||||
| Zone UI | Position | Notes |
|
||||
|---|---|---|
|
||||
| Carte zoo | bâtiment | clic base |
|
||||
| HUD | compteur RP | global |
|
||||
|
||||
#### Intégration (tableau détaillé)
|
||||
|
||||
| Intégration | Contrat | Notes |
|
||||
|---|---|---|
|
||||
| Carte monde | portée radar | overlay |
|
||||
| Achats upgrades | coût coins | - |
|
||||
|
||||
#### Navigation (tableau détaillé)
|
||||
|
||||
| Action | Chemin | Résultat |
|
||||
|---|---|---|
|
||||
| Ouvrir panel | clic | panel |
|
||||
| Aller carte monde | bouton | navigation |
|
||||
|
||||
#### Événements (tableau détaillé)
|
||||
|
||||
| Event UI | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `OPEN_RESEARCH` | clic | ouvre |
|
||||
| `UPGRADE_RESEARCH` | bouton | upgrade |
|
||||
|
||||
#### Assets Skinables
|
||||
|
||||
##### Musiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée | Notes |
|
||||
|---|---|---:|---|
|
||||
| `research_center_loop.mp3` | ambiance | loop | discret |
|
||||
|
||||
##### Sons (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Volume |
|
||||
|---|---|---|
|
||||
| `sci_fi_bloop.mp3` | collecte | faible |
|
||||
| `upgrade_tech.mp3` | upgrade | moyen |
|
||||
|
||||
##### Graphiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Contraintes |
|
||||
|---|---|---|
|
||||
| `fx_atoms.png` | overlay | isométrique |
|
||||
| `radar_sweep.png` | radar | décoratif |
|
||||
|
||||
##### Images (tableau détaillé)
|
||||
|
||||
| Asset | Usage |
|
||||
|---|---|
|
||||
| `radar_icon.png` | panel |
|
||||
| `icon_research_atom.png` | HUD |
|
||||
|
||||
##### Vidéos (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée |
|
||||
|---|---|---:|
|
||||
| `hologram_upgrade.webm` | upgrade | 1.2s |
|
||||
|
||||
##### Animations (tableau détaillé)
|
||||
|
||||
| Animation | Déclencheur | Notes |
|
||||
|---|---|---|
|
||||
| icône bobbing | points dispo | loop |
|
||||
| trajectoire points | collecte | 0.6s |
|
||||
|
||||
##### Couleurs (tableau détaillé)
|
||||
|
||||
| Token | Valeur | Usage |
|
||||
|---|---|---|
|
||||
| `research_primary` | #0088FF | UI |
|
||||
| `research_neon` | #00E5FF | accent |
|
||||
|
||||
##### Textes (tableau détaillé)
|
||||
|
||||
| Clé | FR | EN |
|
||||
|---|---|---|
|
||||
| `research.collect` | Collecter | Collect |
|
||||
| `research.upgrade` | Améliorer | Upgrade |
|
||||
|
||||
##### Formes (tableau détaillé)
|
||||
|
||||
| Élément | Forme | Notes |
|
||||
|---|---|---|
|
||||
| Badge RP | cercle | lisible |
|
||||
| Panel | bottom sheet | standard |
|
||||
|
||||
@@ -15,25 +15,10 @@ Les chemins sont des cases aménagées permettant aux visiteurs et au staff de s
|
||||
```json
|
||||
{
|
||||
"type": "path",
|
||||
"material": "enum('terre','gravier','paves','bois','tapis_rouge')",
|
||||
"level": "integer (1-7)",
|
||||
"material": "gravel",
|
||||
"x": 10,
|
||||
"y": 12,
|
||||
"connected_neighbors": ["enum('N','S','E','W')"],
|
||||
"movement": {
|
||||
"visitor_speed_multiplier": "float (>= 1.0)",
|
||||
"staff_speed_multiplier": "float (>= 1.0)",
|
||||
"visitor_preference_weight": "integer (0-100)"
|
||||
},
|
||||
"economy": {
|
||||
"build_cost": "integer (coins)",
|
||||
"upkeep_cost_per_day": "integer (coins)",
|
||||
"attractiveness_bonus": "integer"
|
||||
},
|
||||
"render": {
|
||||
"auto_tile_key": "string",
|
||||
"variant_seed": "integer (for random subtle variation)"
|
||||
},
|
||||
"connected_neighbors": ["N", "S", "E"],
|
||||
"iso_x": "integer",
|
||||
"iso_y": "integer",
|
||||
"z_index": "integer"
|
||||
@@ -43,15 +28,6 @@ Les chemins sont des cases aménagées permettant aux visiteurs et au staff de s
|
||||
## 2. Règles Métier
|
||||
* **Connexion Automatique :** Les textures des chemins se connectent automatiquement aux chemins adjacents (Auto-tiling).
|
||||
* **Vitesse :** Bonus de vitesse de déplacement pour les entités sur les chemins.
|
||||
* Terre : visiteurs x1.15, staff x1.25
|
||||
* Gravier : visiteurs x1.25, staff x1.35
|
||||
* Pavés : visiteurs x1.35, staff x1.45
|
||||
* Bois (pont / passerelle) : visiteurs x1.20, staff x1.30
|
||||
* Tapis rouge (VIP) : visiteurs VIP x1.50 (sinon x1.10), bonus satisfaction +2/min sur la tuile
|
||||
* **Attraction** : les visiteurs préfèrent rester sur les chemins quand ils se déplacent (`visitor_preference_weight`).
|
||||
* **Construction** : une tuile chemin ne peut pas être posée si la case est occupée par un bâtiment/animal/enclos (sauf règle “chemin sous enclos” explicitement définie ailleurs).
|
||||
* **Auto-tiling** : le `auto_tile_key` dépend de `connected_neighbors` et de `material` (ex. `paves_NSE`).
|
||||
* **Cas limites** : conversion d’un chemin sous un visiteur → appliquer au tick suivant, pas instantanément (évite téléportations).
|
||||
|
||||
# Annexes UX/UI
|
||||
|
||||
@@ -77,5 +53,3 @@ Les chemins sont des cases aménagées permettant aux visiteurs et au staff de s
|
||||
## 1. Détails Spécifiques
|
||||
* **Textures Connectées :** Les chemins utilisent des textures connectées (Terre, Gravier, Pavés) pour éviter les coupures nettes entre les cases.
|
||||
* **Variété :** Différents types de sols disponibles (Terre, Gravier, Pavés).
|
||||
* **Lisibilité iso** : les bordures de chemin doivent rester visibles même sous l’occlusion partielle (contraste + outline discret).
|
||||
* **Hitbox** : clic sur le losange (tuile) sélectionne la tuile chemin ; un clic sur une entité au-dessus a priorité (z-order + hit testing).
|
||||
|
||||
@@ -60,3 +60,472 @@ Employé travaillant dans le Centre de Recherche pour générer des points de sc
|
||||
* **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.
|
||||
|
||||
|
||||
## Définition
|
||||
|
||||
| Champ | Valeur |
|
||||
|---|---|
|
||||
| Entité | Employé “Chercheur” |
|
||||
| Rôle | Générer des unités de recherche (science) via `centre_recherche.md` ; distinct du laboratoire de la carte monde. |
|
||||
| Capacité | Max 3 chercheurs par centre de recherche (contrainte métier). |
|
||||
| Vue | Isométrique 2.5D, sprite 4 directions, sélection base-sprite. |
|
||||
|
||||
## Fonctions (tableau détaillé)
|
||||
|
||||
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||
|---|---|---|---|---|---|
|
||||
| Production recherche | Tick centre | `intelligence`, fatigue, bonus centre | `research_units +` | Production réduite si fatigue élevée ; pause obligatoire | Event `RESEARCH_TICK`, métriques /jour |
|
||||
| Spécialisation | Assignation | `specialty` | bonus ciblé | Bonus appliqué aux recherches du domaine | Event `RESEARCH_SPECIALTY_APPLIED` |
|
||||
| Synergie | 3 chercheurs | spécialité identique | +20% | Uniquement si même centre | Event `RESEARCH_SYNERGY_ON/OFF` |
|
||||
| Formation | Action joueur | coût, temps | `intelligence +` | Immobilise le chercheur pendant training | Event `RESEARCHER_TRAIN_START/END` |
|
||||
|
||||
## Icone de base
|
||||
|
||||
| Élément | Spécification |
|
||||
|---|---|
|
||||
| Représentation | Microscope / atome |
|
||||
| Couleur dominante | Bleu ciel / blanc |
|
||||
| Variantes | `icon_research_microscope.png`, `icon_research_atom.png` |
|
||||
| États | Badge “en recherche” (fioles), “en stage” (diplôme), “fatigué” (Zzz) |
|
||||
|
||||
## Interactions (tableau détaillé)
|
||||
|
||||
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||
|---|---|---|---|---|---|
|
||||
| Recruter | Action | coins ≥ `hire_cost` | Menu Employés → Chercheur → Confirmer | Chercheur créé (non assigné) | `INSUFFICIENT_FUNDS`, `EMPLOYEE_CAP_REACHED` |
|
||||
| Assigner au centre | Action | centre dispo, slots < 3 | Centre → Slots → Sélectionner → Assigner | Prod active | `RESEARCH_CENTER_FULL`, `NO_PATH` |
|
||||
| Démarrer formation | Action | coins ≥ coût, centre présent | Panel chercheur → “Former” → Confirmer | état `TRAINING` | `COOLDOWN_ACTIVE`, `INSUFFICIENT_FUNDS` |
|
||||
| Changer spécialité | Action (si permis) | stage débloqué | Panel → spécialité | bonus différent | `SPECIALTY_LOCKED` |
|
||||
| Inspecter production | Consultation | - | Centre → onglet Recherche | graphiques / taux | - |
|
||||
|
||||
## Annexes Techniques
|
||||
|
||||
### 1. Données et États (tableau détaillé)
|
||||
|
||||
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||
|---|---|---|---|---|
|
||||
| `employee_id` | string | `researcher_01` | DB | Unique |
|
||||
| `type` | enum | `chercheur` | DB | Constante |
|
||||
| `salary` | int | 60 | config | coins/jour |
|
||||
| `hire_cost` | int | 600 | config | one-shot |
|
||||
| `assigned_building` | uuid/string | `research_center_01` | runtime | null si non assigné |
|
||||
| `fatigue_level` | float | 0..100 | runtime | réduit prod |
|
||||
| `current_task` | enum | `IDLE|RESEARCHING|TRAINING` | runtime | transitions contrôlées |
|
||||
| `stats.intelligence` | int | 10 | DB | unités/cycle |
|
||||
| `stats.specialty` | enum | `genetics|ecology|marketing|logistics` | DB | 1 parmi n |
|
||||
| `grid` | object | `{x,y}` | runtime | position (si visible) |
|
||||
| `iso_x/iso_y` | int | - | rendu | projection |
|
||||
| `z_index` | int | - | rendu | profondeur |
|
||||
| `hitbox` | enum | `base_sprite` | rendu | click base |
|
||||
|
||||
#### Caractéristiques Initiales (tableau détaillé)
|
||||
|
||||
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||
|---|---:|---|---|
|
||||
| Production brute | 10 | units/cycle | `intelligence` |
|
||||
| Fatigue départ | 0 | % | - |
|
||||
| Seuil fatigue malus | 80 | % | prod -30% au-delà |
|
||||
| Pause | 15 | min in-game | après cycle long |
|
||||
| Synergie | +20% | prod | si 3 mêmes spécialités |
|
||||
|
||||
#### Scores Initiaux (tableau détaillé)
|
||||
|
||||
| Score | Valeur initiale | Plage | Impact |
|
||||
|---|---:|---|---|
|
||||
| Units/jour | 0 | 0..∞ | progression recherches |
|
||||
| Efficacité centre | 100 | 0..200 | résume bonus/malus |
|
||||
| Coût salarial/jour | 60 | 0..∞ | dépenses employé |
|
||||
|
||||
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||
|
||||
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||
|---|---|---|---|---|
|
||||
| Apparition | embauche | coins | entité | `IDLE` |
|
||||
| Assignation | action centre | slot dispo | `RESEARCHING` | max 3/centre |
|
||||
| Training | action joueur | coins + temps | `intelligence +` | immobilisé |
|
||||
| Disparition | licenciement (si prévu) | - | suppression | stop production |
|
||||
|
||||
#### Conditions d'Apparition (tableau détaillé)
|
||||
|
||||
| Condition | Seuil | Opérateur | Résultat |
|
||||
|---|---:|---|---|
|
||||
| Achat | coins ≥ `hire_cost` | vrai | création |
|
||||
| Centre existant | optionnel | - | assignation possible |
|
||||
|
||||
#### Conditions de Disparition (tableau détaillé)
|
||||
|
||||
| Condition | Seuil | Opérateur | Résultat |
|
||||
|---|---:|---|---|
|
||||
| Licenciement | action joueur | vrai | suppression |
|
||||
| Zoo supprimé | - | vrai | suppression |
|
||||
|
||||
#### Hérédité (tableau détaillé)
|
||||
|
||||
| Élément | Hérité | Règle |
|
||||
|---|---|---|
|
||||
| Spécialité | Oui | persistée |
|
||||
| Intelligence | Oui | persistée |
|
||||
| Fatigue | Non | recalcul / reset quotidien |
|
||||
|
||||
### 3. Impacts Environnementaux
|
||||
|
||||
#### Impact Température (tableau détaillé)
|
||||
|
||||
| Température | Effet sur prod | Condition |
|
||||
|---|---|---|
|
||||
| Extrême | -10% | si bâtiment non amélioré (isolation) |
|
||||
| Tempéré | 0 | - |
|
||||
|
||||
#### Impact Milieu (Biome) (tableau détaillé)
|
||||
|
||||
| Biome | Effet | Notes |
|
||||
|---|---|---|
|
||||
| Ville/route | neutre | centre en intérieur |
|
||||
| Zone humide | malus | humidité (option visuelle) |
|
||||
|
||||
#### Impact Saisons (tableau détaillé)
|
||||
|
||||
| Saison | Effet | Modificateur |
|
||||
|---|---|---|
|
||||
| Hiver | chauffage coûte + | prod stable |
|
||||
| Été | canicule | fatigue +5%/jour |
|
||||
|
||||
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||
|
||||
| Période | Effet | Règle |
|
||||
|---|---|---|
|
||||
| Jour | prod normale | - |
|
||||
| Nuit | prod réduite | -20% si “horaires normaux”, 0% si centre fermé |
|
||||
|
||||
### 4. Impacts Biologiques et Sociaux
|
||||
|
||||
#### Impact Reproduction (tableau détaillé)
|
||||
|
||||
| Facteur | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Recherche “fertilité” | +taux | si tech débloquée |
|
||||
|
||||
#### Impact Mort (tableau détaillé)
|
||||
|
||||
| Cas | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Accident labo | none | chercheur ≠ labo monde |
|
||||
|
||||
#### Impact Nourriture (tableau détaillé)
|
||||
|
||||
| Ressource | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Café (option) | fatigue - | mécanique employé |
|
||||
|
||||
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||
|
||||
| Action/État | Gain | Rayon | Notes |
|
||||
|---|---:|---:|---|
|
||||
| Centre actif visible | +5 | 2 cases | bulles science |
|
||||
|
||||
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||
|
||||
| Action/État | Effet animaux | Condition |
|
||||
|---|---|---|
|
||||
| Aucun effet direct | aucun | le chercheur n’interagit pas directement avec les animaux |
|
||||
|
||||
#### Impact Valeur (tableau détaillé)
|
||||
|
||||
| Facteur | Variation | Condition |
|
||||
|---|---:|---|
|
||||
| Recherche débloquée | + | débloque upgrades, économie |
|
||||
|
||||
### 5. Impacts Logistiques et Économiques
|
||||
|
||||
#### Vitesse (Camion) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Livraison composants | - | si mécanique ravitaillement centre |
|
||||
|
||||
#### Vitesse (Nurserie) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Recherche incub | + | si tech appliquée |
|
||||
|
||||
#### Vitesse (Accueil) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Vitesse (Recherche) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Production units | + | intelligence/synergie |
|
||||
|
||||
#### Vitesse (Labo) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | indirect | via tech |
|
||||
|
||||
#### Vitesse (Visite) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | indirect | via attractivité centre |
|
||||
|
||||
#### Dépenses (Billeterie) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### Dépenses (Boutiques) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Vente “science kit” | +revenu | coins | boutique souvenirs |
|
||||
|
||||
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### Dépenses (Employés) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Salaire | `salary` | coins/jour | actif |
|
||||
| Stage | 300 | coins | par formation |
|
||||
|
||||
#### 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 |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### 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 |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### Trajet Visiteurs
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Ville | Zoo | attractivité/réputation | chercheur indirect |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Centre | Enclos | curiosité | détour si FX visibles |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Centre | Boutique | achat souvenir | dépense + |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Entrée | Centre | halo science | visite guidée |
|
||||
|
||||
### 6. Événements
|
||||
|
||||
#### Événements du Jeu (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Payload | Effet |
|
||||
|---|---|---|---|
|
||||
| `RESEARCH_UNIT_GAINED` | tick | amount | progression |
|
||||
|
||||
#### Événements du Carte (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `BUILDING_ACTIVE_FX` | centre actif | bulles science |
|
||||
|
||||
#### Événements du Zoo (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `RESEARCH_CENTER_FULL` | slots=3 | bloque assignation |
|
||||
|
||||
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `VISITOR_INTEREST_SCIENCE` | centre proche | temps séjour + |
|
||||
|
||||
#### Événements du Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `VISITOR_PHOTO` | FX visibles | satisfaction + |
|
||||
|
||||
#### Événements du Joueur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `PLAYER_START_TRAINING` | bouton | start stage |
|
||||
|
||||
### 7. Progression
|
||||
|
||||
#### Tableau des Upgrades (tableau détaillé)
|
||||
|
||||
| Niveau | Coût | Effet | Débloque |
|
||||
|---|---:|---|---|
|
||||
| 1 | 0 | recrutement | base |
|
||||
| 2 | 1500 | intelligence +2 | prod + |
|
||||
| 3 | 3000 | fatigue -10% | endurance |
|
||||
| 4 | 6000 | spécialités avancées | nouveaux domaines |
|
||||
|
||||
### 8. Logique et Interfaces
|
||||
|
||||
#### Pseudo-code Impacts (tableau détaillé)
|
||||
|
||||
| Fonction | Entrées | Sorties | Notes |
|
||||
|---|---|---|---|
|
||||
| `update_researcher` | fatigue, intelligence | units | clamp + pause |
|
||||
| `apply_synergy` | team | multiplier | 3 mêmes |
|
||||
|
||||
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||
|
||||
| ID | Niveau | Message | Condition |
|
||||
|---|---|---|---|
|
||||
| `RESEARCH_CENTER_FULL` | Warning | "Centre complet." | slots=3 |
|
||||
| `RESEARCHER_FATIGUED` | Warning | "Chercheur fatigué." | fatigue>80 |
|
||||
| `RESEARCH_UNLOCKED` | Info | "Recherche débloquée." | units seuil |
|
||||
|
||||
## Annexes UX/UI
|
||||
|
||||
### 1. Expérience Utilisateur (UX)
|
||||
|
||||
#### Description UX (tableau détaillé)
|
||||
|
||||
| Parcours | But | Friction | Réduction clics |
|
||||
|---|---|---|---|
|
||||
| Assigner chercheurs | augmenter production | slots | drag & drop dans slots |
|
||||
| Former | améliorer prod | coût/temps | bouton direct sur carte employé |
|
||||
|
||||
#### Description UI (tableau détaillé)
|
||||
|
||||
| Composant | Contenu | États |
|
||||
|---|---|---|
|
||||
| Panel centre | slots 0/3, prod/h | actifs/plein |
|
||||
| Carte chercheur | spécialité, fatigue | researching/training |
|
||||
|
||||
#### Emplacement (tableau détaillé)
|
||||
|
||||
| Zone UI | Position | Notes |
|
||||
|---|---|---|
|
||||
| Menu Employés | HUD | liste |
|
||||
| Centre recherche | carte | sélection |
|
||||
|
||||
#### Intégration (tableau détaillé)
|
||||
|
||||
| Intégration | Contrat | Notes |
|
||||
|---|---|---|
|
||||
| Système unités | accumulation | pas de cache |
|
||||
| Upgrades | coût/effet | via `achat_upgrade_*` |
|
||||
|
||||
#### Navigation (tableau détaillé)
|
||||
|
||||
| Action | Chemin | Résultat |
|
||||
|---|---|---|
|
||||
| Ouvrir centre | clic bâtiment | panel |
|
||||
| Assigner | slot → choisir | start prod |
|
||||
|
||||
#### Événements (tableau détaillé)
|
||||
|
||||
| Event UI | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `OPEN_RESEARCH_CENTER` | clic centre | panel |
|
||||
| `ASSIGN_RESEARCHER` | drag/drop | assign |
|
||||
|
||||
#### Assets Skinables
|
||||
|
||||
##### Musiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée | Notes |
|
||||
|---|---|---:|---|
|
||||
| `research_center_loop.mp3` | ambiance centre | loop | discret |
|
||||
|
||||
##### Sons (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Volume |
|
||||
|---|---|---|
|
||||
| `science_bubble.mp3` | FX | faible |
|
||||
| `ui_assign.mp3` | assignation | faible |
|
||||
|
||||
##### Graphiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Contraintes |
|
||||
|---|---|---|
|
||||
| `fx_atoms.png` | bulles science | overlay |
|
||||
| `researcher_sprite_[dir].png` | sprite | 4 dirs |
|
||||
|
||||
##### Images (tableau détaillé)
|
||||
|
||||
| Asset | Usage |
|
||||
|---|---|
|
||||
| `icon_microscope.png` | icône |
|
||||
| `portrait_researcher.png` | panel |
|
||||
|
||||
##### Vidéos (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée |
|
||||
|---|---|---:|
|
||||
| `research_unlock.webm` | pop unlock | 1.0s |
|
||||
|
||||
##### Animations (tableau détaillé)
|
||||
|
||||
| Animation | Déclencheur | Notes |
|
||||
|---|---|---|
|
||||
| fioles qui montent | production | loop |
|
||||
| badge “+units” | tick | 0.4s |
|
||||
|
||||
##### Couleurs (tableau détaillé)
|
||||
|
||||
| Token | Valeur | Usage |
|
||||
|---|---|---|
|
||||
| `research_primary` | #6EC6FF | UI |
|
||||
| `research_accent` | #FFFFFF | highlights |
|
||||
|
||||
##### Textes (tableau détaillé)
|
||||
|
||||
| Clé | FR | EN |
|
||||
|---|---|---|
|
||||
| `research.assign` | Assigner | Assign |
|
||||
| `research.train` | Former | Train |
|
||||
|
||||
##### Formes (tableau détaillé)
|
||||
|
||||
| Élément | Forme | Notes |
|
||||
|---|---|---|
|
||||
| Slots employés | cartes | drag target |
|
||||
| Badge unités | pill | lisible |
|
||||
|
||||
@@ -149,3 +149,474 @@ function handleBabyDeath(baby):
|
||||
- **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 |
|
||||
|
||||
@@ -56,3 +56,474 @@ Employé chargé de l'approvisionnement en nourriture des enclos. Il remplit les
|
||||
* **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.
|
||||
|
||||
|
||||
## Définition
|
||||
|
||||
| Champ | Valeur |
|
||||
|---|---|
|
||||
| Entité | Employé “Nourisseur” |
|
||||
| Rôle | Approvisionner les mangeoires, éviter la faim, appliquer (si présent) la nourriture spéciale ciblée. |
|
||||
| Logistique | Transport capacité `stats.capacity`, ravitaillement depuis stock. |
|
||||
| Vue | Isométrique 2.5D, sprite 4 directions, sélection base-sprite. |
|
||||
|
||||
## Fonctions (tableau détaillé)
|
||||
|
||||
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||
|---|---|---|---|---|---|
|
||||
| Détection auge vide | Tick nourisseur | enclos, jauges auge | liste tâches | Priorité bébés > adultes | Event `FEEDER_SCAN` |
|
||||
| Remplissage | Arrivée en enclos | stock, capacity | auge + | Consomme stock global, clamp max auge | Event `FEEDER_FILL_START/END` |
|
||||
| Ravitaillement stock | capacity=0 | stock bâtiment | capacity reset | Retour “service stock” obligatoire | Event `FEEDER_RESTOCK` |
|
||||
| Qualité nourriture | upgrade | niveau/skill | santé + | Bonus si nourriture premium active | Event `FEEDER_PREMIUM_APPLIED` |
|
||||
|
||||
## Icone de base
|
||||
|
||||
| Élément | Spécification |
|
||||
|---|---|
|
||||
| Représentation | Seau / sac de graines |
|
||||
| Couleur dominante | Marron / orange |
|
||||
| Variantes | `icon_feeder_bucket.png`, `icon_feeder_bag.png` |
|
||||
| États | Badge “en route” (flèche), “débordé” (rouge), “capacity vide” (0) |
|
||||
|
||||
## Interactions (tableau détaillé)
|
||||
|
||||
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||
|---|---|---|---|---|---|
|
||||
| Recruter | Action | coins ≥ `hire_cost` | Menu Employés → Nourisseur → Confirmer | entité créée | `INSUFFICIENT_FUNDS`, `EMPLOYEE_CAP_REACHED` |
|
||||
| Définir priorités | Action | - | panel nourisseur → priorités | ordre tâches | - |
|
||||
| Assigner zone/enclos | Action | cible valide | “Assigner” → clic | couverture | `INVALID_TARGET` |
|
||||
| Forcer nourrir | Action | enclos sélectionné | bouton “Nourrir maintenant” | tâche top priorité | `NO_FEEDER_AVAILABLE`, `OUT_OF_FOOD_STOCK` |
|
||||
| Inspecter stock | Consultation | - | panel stock | quantités | - |
|
||||
|
||||
## Annexes Techniques
|
||||
|
||||
### 1. Données et États (tableau détaillé)
|
||||
|
||||
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||
|---|---|---|---|---|
|
||||
| `employee_id` | string | `feeder_02` | DB | unique |
|
||||
| `type` | enum | `nourisseur` | DB | constante |
|
||||
| `salary` | int | 30 | config | coins/jour |
|
||||
| `hire_cost` | int | 300 | config | one-shot |
|
||||
| `stats.capacity` | int | 50 | DB | [10..200] |
|
||||
| `stats.speed` | float | 1.2 | DB | déplacement |
|
||||
| `current_task` | string | `moving_to_enclosure_12` | runtime | debug |
|
||||
| `state` | enum | `IDLE|MOVING|FILLING|RESTOCK|BREAK` | runtime | FSM |
|
||||
| `carried_food` | int | 0..capacity | runtime | décrémente |
|
||||
| `assigned_zone` | uuid/null | null | runtime | null=global |
|
||||
| `grid` | object | `{x,y}` | runtime | position |
|
||||
| `iso_x/iso_y` | int | - | rendu | projection |
|
||||
| `z_index` | int | - | rendu | profondeur |
|
||||
| `hitbox` | enum | `base_sprite` | rendu | click base |
|
||||
|
||||
#### Caractéristiques Initiales (tableau détaillé)
|
||||
|
||||
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||
|---|---:|---|---|
|
||||
| Capacité | 50 | unités | transport |
|
||||
| Vitesse | 1.2 | coef | marche |
|
||||
| Temps remplissage | 1 | min in-game | par auge |
|
||||
| Temps restock | 2 | min in-game | au stock |
|
||||
| Seuil faim critique | 80 | % | déclenche urgence |
|
||||
|
||||
#### Scores Initiaux (tableau détaillé)
|
||||
|
||||
| Score | Valeur initiale | Plage | Impact |
|
||||
|---|---:|---|---|
|
||||
| Auges remplies/jour | 0 | 0..∞ | faim - |
|
||||
| Ruptures évitées | 0 | 0..∞ | survie + |
|
||||
| Coût nourrissage/jour | 30 | 0..∞ | dépenses employés |
|
||||
|
||||
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||
|
||||
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||
|---|---|---|---|---|
|
||||
| Apparition | embauche | coins | entité | `IDLE` |
|
||||
| Action | auge vide | stock | auge + | pas si stock=0 |
|
||||
| Restock | capacity=0 | stock bâtiment | capacity reset | chemin valide |
|
||||
| Disparition | licenciement (si prévu) | - | suppression | stop tâches |
|
||||
|
||||
#### Conditions d'Apparition (tableau détaillé)
|
||||
|
||||
| Condition | Seuil | Opérateur | Résultat |
|
||||
|---|---:|---|---|
|
||||
| Achat | coins ≥ `hire_cost` | vrai | création |
|
||||
|
||||
#### Conditions de Disparition (tableau détaillé)
|
||||
|
||||
| Condition | Seuil | Opérateur | Résultat |
|
||||
|---|---:|---|---|
|
||||
| Licenciement | action joueur | vrai | suppression |
|
||||
| Zoo supprimé | - | vrai | suppression |
|
||||
|
||||
#### Hérédité (tableau détaillé)
|
||||
|
||||
| Élément | Hérité | Règle |
|
||||
|---|---|---|
|
||||
| Stats | Oui | persistées |
|
||||
| Carried food | Non | remis à 0 au reset |
|
||||
|
||||
### 3. Impacts Environnementaux
|
||||
|
||||
#### Impact Température (tableau détaillé)
|
||||
|
||||
| Température | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Extrême | consommation + | animaux mangent plus selon règles |
|
||||
| Tempérée | neutre | - |
|
||||
|
||||
#### Impact Milieu (Biome) (tableau détaillé)
|
||||
|
||||
| Biome | Effet | Notes |
|
||||
|---|---|---|
|
||||
| Chemins | déplacement + | visiteurs attirés aux chemins |
|
||||
| Sable/neige | déplacement - | ralentissement |
|
||||
|
||||
#### Impact Saisons (tableau détaillé)
|
||||
|
||||
| Saison | Effet | Modificateur |
|
||||
|---|---|---|
|
||||
| Hiver | ration + | +10% conso |
|
||||
| Été | eau/boisson + | incidents soif visiteurs + |
|
||||
|
||||
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||
|
||||
| Période | Effet | Règle |
|
||||
|---|---|---|
|
||||
| Matin | repas 1 | tâche batch |
|
||||
| Soir | repas 2 | tâche batch |
|
||||
| Nuit | urgence | uniquement si faim critique |
|
||||
|
||||
### 4. Impacts Biologiques et Sociaux
|
||||
|
||||
#### Impact Reproduction (tableau détaillé)
|
||||
|
||||
| Facteur | Effet sur taux | Condition |
|
||||
|---|---|---|
|
||||
| Faim basse | + | si animaux bien nourris |
|
||||
|
||||
#### Impact Mort (tableau détaillé)
|
||||
|
||||
| Cas | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Stock 0 | risque mort + | faim extrême prolongée |
|
||||
|
||||
#### Impact Nourriture (tableau détaillé)
|
||||
|
||||
| Type | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Standard | neutre | base |
|
||||
| Spéciale | buff | selon `nourriture_speciale.md` |
|
||||
|
||||
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||
|
||||
| État | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Animaux actifs (pas affamés) | satisfaction + | enclos proches |
|
||||
|
||||
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||
|
||||
| Action | Effet animaux | Condition |
|
||||
|---|---|---|
|
||||
| Nourrir | stress - | faim résolue |
|
||||
|
||||
#### Impact Valeur (tableau détaillé)
|
||||
|
||||
| Facteur | Variation | Condition |
|
||||
|---|---:|---|
|
||||
| Animal bien nourri | +5% | vente animal |
|
||||
|
||||
### 5. Impacts Logistiques et Économiques
|
||||
|
||||
#### Vitesse (Camion) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Livraison nourriture | +stock | via camion/achat |
|
||||
|
||||
#### Vitesse (Nurserie) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Priorité bébés | + | si règle activée |
|
||||
|
||||
#### Vitesse (Accueil) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Vitesse (Recherche) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Tech nutrition | + | réduit conso ou augmente qualité |
|
||||
|
||||
#### Vitesse (Labo) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Vitesse (Visite) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Temps séjour | + | animaux visibles actifs |
|
||||
|
||||
#### Dépenses (Billeterie) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### Dépenses (Boutiques) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Vente nourriture visiteurs | revenu + | coins | canicule |
|
||||
|
||||
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Plainte faim | remboursement | coins | si incidents |
|
||||
|
||||
#### Dépenses (Employés) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Salaire | 30 | coins/jour | actif |
|
||||
|
||||
#### 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 |
|
||||
|---|---:|---|---|
|
||||
| Lait/bébés | +conso | stock | si bébés présents |
|
||||
|
||||
#### Dépenses (Nourriture) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Achat nourriture | variable | coins | menu achats |
|
||||
|
||||
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Ration arrivée | 5 | coins | accueil |
|
||||
|
||||
#### Dépenses (Camion) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Transport nourriture | 10 | coins | livraison |
|
||||
|
||||
#### Trajet Visiteurs
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Ville | Zoo | réputation | nourisseur indirect |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Nourisseur | Enclos | auge vide | déplacement sur chemins |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Visiteur | Boutique | faim/soif | achat |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Visiteur mécontent | sortie | incidents | départ |
|
||||
|
||||
### 6. Événements
|
||||
|
||||
#### Événements du Jeu (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Payload | Effet |
|
||||
|---|---|---|---|
|
||||
| `FEED_LOW` | auge < seuil | enclosure_id | warning |
|
||||
| `FEED_FILLED` | fin remplissage | enclosure_id | info |
|
||||
|
||||
#### Événements du Carte (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `FEEDER_MOVING` | tâche | rendu déplacement |
|
||||
|
||||
#### Événements du Zoo (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `FOOD_STOCK_EMPTY` | stock=0 | alerte |
|
||||
|
||||
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `VISITOR_BUY_FOOD` | faim/soif | revenu |
|
||||
|
||||
#### Événements du Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| `VISITOR_COMPLAINT_HUNGER` | faim | satisfaction - |
|
||||
|
||||
#### Événements du Joueur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `PLAYER_FORCE_FEED` | bouton | tâche urgente |
|
||||
|
||||
### 7. Progression
|
||||
|
||||
#### Tableau des Upgrades (tableau détaillé)
|
||||
|
||||
| Niveau | Coût | Effet | Débloque |
|
||||
|---|---:|---|---|
|
||||
| 1 | 0 | remplissage base | - |
|
||||
| 2 | 1000 | capacity +20 | moins restocks |
|
||||
| 3 | 2500 | speed +0.1 | réactivité |
|
||||
| 4 | 5000 | qualité + | premium |
|
||||
|
||||
### 8. Logique et Interfaces
|
||||
|
||||
#### Pseudo-code Impacts (tableau détaillé)
|
||||
|
||||
| Fonction | Entrées | Sorties | Notes |
|
||||
|---|---|---|---|
|
||||
| `scan_empty_troughs` | enclos | list | priorités |
|
||||
| `fill_trough` | stock, carried | trough | clamp |
|
||||
| `restock` | stock building | carried reset | - |
|
||||
|
||||
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||
|
||||
| ID | Niveau | Message | Condition |
|
||||
|---|---|---|---|
|
||||
| `OUT_OF_FOOD_STOCK` | Alerte | "Stock de nourriture vide." | stock=0 |
|
||||
| `FEEDER_OVERLOADED` | Warning | "Nourisseur débordé." | trop tâches |
|
||||
| `FEED_FILLED` | Info | "Mangeoire remplie." | fin |
|
||||
|
||||
## Annexes UX/UI
|
||||
|
||||
### 1. Expérience Utilisateur (UX)
|
||||
|
||||
#### Description UX (tableau détaillé)
|
||||
|
||||
| Parcours | But | Friction | Réduction clics |
|
||||
|---|---|---|---|
|
||||
| Automatiser nourrissage | éviter morts | manque stock | deep-link menu achats |
|
||||
| Prioriser bébés | survie | réglages | preset “bébés d’abord” |
|
||||
|
||||
#### Description UI (tableau détaillé)
|
||||
|
||||
| Composant | Contenu | États |
|
||||
|---|---|---|
|
||||
| Panel nourisseur | capacity, tâches | moving/filling |
|
||||
| Badge faim | icône rouge | clignote |
|
||||
|
||||
#### Emplacement (tableau détaillé)
|
||||
|
||||
| Zone UI | Position | Notes |
|
||||
|---|---|---|
|
||||
| HUD | menu employés | - |
|
||||
| Enclos | jauge auge | overlay |
|
||||
|
||||
#### Intégration (tableau détaillé)
|
||||
|
||||
| Intégration | Contrat | Notes |
|
||||
|---|---|---|
|
||||
| Stock nourriture | global | pas de cache |
|
||||
| Nourriture spéciale | ciblée | cf. spec |
|
||||
|
||||
#### Navigation (tableau détaillé)
|
||||
|
||||
| Action | Chemin | Résultat |
|
||||
|---|---|---|
|
||||
| Ouvrir panel | clic nourisseur | panel |
|
||||
| Forcer nourrir | clic enclos | tâche |
|
||||
|
||||
#### Événements (tableau détaillé)
|
||||
|
||||
| Event UI | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `OPEN_FEEDER_PANEL` | clic | panel |
|
||||
| `CLICK_FORCE_FEED` | bouton | urgence |
|
||||
|
||||
#### Assets Skinables
|
||||
|
||||
##### Musiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée | Notes |
|
||||
|---|---|---:|---|
|
||||
| `feeder_loop.mp3` | ambiance | loop | discret |
|
||||
|
||||
##### Sons (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Volume |
|
||||
|---|---|---|
|
||||
| `pour_food.mp3` | verse | faible |
|
||||
| `ui_food_empty.mp3` | stock 0 | moyen |
|
||||
|
||||
##### Graphiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Contraintes |
|
||||
|---|---|---|
|
||||
| `feeder_sprite_[dir].png` | sprite | 4 dirs |
|
||||
| `fx_grains.png` | FX | overlay |
|
||||
|
||||
##### Images (tableau détaillé)
|
||||
|
||||
| Asset | Usage |
|
||||
|---|---|
|
||||
| `icon_feeder_bag.png` | icône |
|
||||
| `portrait_feeder.png` | panel |
|
||||
|
||||
##### Vidéos (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée |
|
||||
|---|---|---:|
|
||||
| `feed_success.webm` | popup | 0.8s |
|
||||
|
||||
##### Animations (tableau détaillé)
|
||||
|
||||
| Animation | Déclencheur | Notes |
|
||||
|---|---|---|
|
||||
| grains qui tombent | filling | loop |
|
||||
| jauge auge + | fin | 0.4s |
|
||||
|
||||
##### Couleurs (tableau détaillé)
|
||||
|
||||
| Token | Valeur | Usage |
|
||||
|---|---|---|
|
||||
| `feeder_primary` | #E67E22 | UI |
|
||||
| `feeder_alert` | #E74C3C | faim |
|
||||
|
||||
##### Textes (tableau détaillé)
|
||||
|
||||
| Clé | FR | EN |
|
||||
|---|---|---|
|
||||
| `feeder.force` | Nourrir maintenant | Feed now |
|
||||
| `food.empty` | Stock vide | Empty stock |
|
||||
|
||||
##### Formes (tableau détaillé)
|
||||
|
||||
| Élément | Forme | Notes |
|
||||
|---|---|---|
|
||||
| Jauge auge | barre | lisible |
|
||||
| Badge faim | rond | clignote |
|
||||
|
||||
@@ -59,3 +59,477 @@ Employé spécialisé dans la santé des animaux. Il intervient pour prévenir l
|
||||
* **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.
|
||||
|
||||
|
||||
## Définition
|
||||
|
||||
| Champ | Valeur |
|
||||
|---|---|
|
||||
| Entité | Employé “Soigneur” |
|
||||
| Rôle | Prévenir/traiter maladies, stabiliser les états critiques, améliorer bien-être. |
|
||||
| Portée | Zone ou enclos assigné + rayon `stats.range`. |
|
||||
| Contraintes | Se déplace (coût temps), file de tâches, disponibilité. |
|
||||
| Vue | Isométrique 2.5D, sprite 4 directions, hitbox base-sprite. |
|
||||
|
||||
## Fonctions (tableau détaillé)
|
||||
|
||||
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||
|---|---|---|---|---|---|
|
||||
| Prévention maladies | Tick soigneur / tick zoo | `efficiency`, enclos, densité | probas maladies - | Effet plafonné ; dépend propreté enclos | Event `HEALER_PREVENTION_TICK`, métrique “maladies évitées” |
|
||||
| Soin automatique | Animal `SICK` | animal, soigneur dispo | état animal amélioré | Priorité: critique > contagieux > léger | Event `HEALER_TREAT_START/END` |
|
||||
| Quarantaine (si prévue) | Animal contagieux | enclos, iso | propagation - | nécessite zone dédiée | Event `HEALER_QUARANTINE` |
|
||||
| Boost bien-être | Tick | `efficiency` | `wellbeing +` | Bonus léger, cumul limité/jour | Event `HEALER_WELLBEING_TICK` |
|
||||
|
||||
## Icone de base
|
||||
|
||||
| Élément | Spécification |
|
||||
|---|---|
|
||||
| Représentation | Croix verte / trousse de soin |
|
||||
| Couleur dominante | Blanc / vert |
|
||||
| Variantes | `icon_healer_cross.png`, `icon_healer_bag.png` |
|
||||
| États | Badge “occupé” (sablier), “urgence” (rouge), “en pause” (Zzz) |
|
||||
|
||||
## Interactions (tableau détaillé)
|
||||
|
||||
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||
|---|---|---|---|---|---|
|
||||
| Recruter | Action | coins ≥ `hire_cost` | Menu Employés → Soigneur → Confirmer | entité créée | `INSUFFICIENT_FUNDS`, `EMPLOYEE_CAP_REACHED` |
|
||||
| Assigner zone/enclos | Action | zone existe, path possible | Sélection soigneur → “Assigner” → clic zone/enclos | priorité locale | `NO_PATH`, `INVALID_TARGET` |
|
||||
| Forcer intervention | Action | animal malade visible | clic animal → “Appeler soigneur” | tâche ajoutée | `NO_HEALER_AVAILABLE` |
|
||||
| Former | Action (option) | ressources/temps | panel → “Former” | `efficiency +` | `INSUFFICIENT_FUNDS` |
|
||||
| Inspecter file | Consultation | - | panel soigneur | liste tâches + ETA | - |
|
||||
|
||||
## Annexes Techniques
|
||||
|
||||
### 1. Données et États (tableau détaillé)
|
||||
|
||||
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||
|---|---|---|---|---|
|
||||
| `employee_id` | string | `healer_01` | DB | unique |
|
||||
| `type` | enum | `soigneur` | DB | constante |
|
||||
| `salary` | int | 50 | config | coins/jour |
|
||||
| `hire_cost` | int | 500 | config | one-shot |
|
||||
| `stats.speed` | float | 1.0 | DB | modifie déplacement |
|
||||
| `stats.efficiency` | float | 0.8 | DB | [0..1.5] |
|
||||
| `stats.range` | int | 5 | DB | [1..10] |
|
||||
| `assigned_zone` | uuid/null | null | runtime | null = global |
|
||||
| `task_queue` | array | - | runtime | FIFO + priorités |
|
||||
| `state` | enum | `IDLE|MOVING|TREATING|BREAK` | runtime | transitions contrôlées |
|
||||
| `grid` | object | `{x,y}` | runtime | position |
|
||||
| `iso_x/iso_y` | int | - | rendu | projection |
|
||||
| `z_index` | int | - | rendu | profondeur |
|
||||
| `hitbox` | enum | `base_sprite` | rendu | click base |
|
||||
|
||||
#### Caractéristiques Initiales (tableau détaillé)
|
||||
|
||||
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||
|---|---:|---|---|
|
||||
| Rayon action | 5 | cases | `range` |
|
||||
| Efficacité | 0.8 | coef | prévention/soin |
|
||||
| Temps soin léger | 2 | min in-game | tâche |
|
||||
| Temps soin moyen | 5 | min in-game | tâche |
|
||||
| Temps soin critique | 10 | min in-game | tâche |
|
||||
| Pause | 15 | min in-game | toutes 4h in-game |
|
||||
|
||||
#### Scores Initiaux (tableau détaillé)
|
||||
|
||||
| Score | Valeur initiale | Plage | Impact |
|
||||
|---|---:|---|---|
|
||||
| Animaux soignés/jour | 0 | 0..∞ | santé globale |
|
||||
| Maladies évitées/jour | 0 | 0..∞ | survie |
|
||||
| Coût santé/jour | 50 | 0..∞ | dépenses employés |
|
||||
|
||||
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||
|
||||
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||
|---|---|---|---|---|
|
||||
| Apparition | embauche | coins | entité | état `IDLE` |
|
||||
| Action | détection maladie | animal | tâche | priorité |
|
||||
| Pause | fatigue | temps | état `BREAK` | pas de soin |
|
||||
| Disparition | licenciement (si prévu) | - | suppression | stop tâches |
|
||||
|
||||
#### Conditions d'Apparition (tableau détaillé)
|
||||
|
||||
| Condition | Seuil | Opérateur | Résultat |
|
||||
|---|---:|---|---|
|
||||
| Achat | coins ≥ `hire_cost` | vrai | création |
|
||||
|
||||
#### Conditions de Disparition (tableau détaillé)
|
||||
|
||||
| Condition | Seuil | Opérateur | Résultat |
|
||||
|---|---:|---|---|
|
||||
| Licenciement | action joueur | vrai | suppression |
|
||||
| Zoo supprimé | - | vrai | suppression |
|
||||
|
||||
#### Hérédité (tableau détaillé)
|
||||
|
||||
| Élément | Hérité | Règle |
|
||||
|---|---|---|
|
||||
| `stats` | Oui | persistées |
|
||||
| `task_queue` | Non | vidée au reset jour |
|
||||
|
||||
### 3. Impacts Environnementaux
|
||||
|
||||
#### Impact Température (tableau détaillé)
|
||||
|
||||
| Température | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Extrême | charge + | plus d’animaux critiques |
|
||||
| Tempérée | neutre | - |
|
||||
|
||||
#### Impact Milieu (Biome) (tableau détaillé)
|
||||
|
||||
| Biome | Effet | Notes |
|
||||
|---|---|---|
|
||||
| Chemins | déplacement + | visiteurs attirés aux chemins |
|
||||
| Boue | déplacement - | pénalité path |
|
||||
|
||||
#### Impact Saisons (tableau détaillé)
|
||||
|
||||
| Saison | Effet | Modificateur |
|
||||
|---|---|---|
|
||||
| Hiver | maladies froid + | tâches + |
|
||||
| Été | stress chaleur + | tâches + |
|
||||
|
||||
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||
|
||||
| Période | Effet | Règle |
|
||||
|---|---|---|
|
||||
| Jour | soins actifs | - |
|
||||
| Nuit | interventions urgentes uniquement | sinon pause |
|
||||
|
||||
### 4. Impacts Biologiques et Sociaux
|
||||
|
||||
#### Impact Reproduction (tableau détaillé)
|
||||
|
||||
| Facteur | Effet sur taux | Condition |
|
||||
|---|---|---|
|
||||
| Soins réguliers | + | animaux non malades |
|
||||
|
||||
#### Impact Mort (tableau détaillé)
|
||||
|
||||
| Cas | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Animal critique sans soigneur | risque mort + | file saturée |
|
||||
| Animal contagieux traité | mortalité - | quarantaine/soin |
|
||||
|
||||
#### Impact Nourriture (tableau détaillé)
|
||||
|
||||
| Ressource | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Nourriture spéciale | soins + efficaces | si buff actif |
|
||||
|
||||
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||
|
||||
| État | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Animaux visibles en bonne santé | satisfaction + | enclos propres |
|
||||
| Animaux malades visibles | satisfaction - | incidents |
|
||||
|
||||
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||
|
||||
| Action | Effet animaux | Condition |
|
||||
|---|---|---|
|
||||
| Soins | stress - | traitement réussi |
|
||||
|
||||
#### Impact Valeur (tableau détaillé)
|
||||
|
||||
| Facteur | Variation | Condition |
|
||||
|---|---:|---|
|
||||
| Certificat santé | +10% | vente animal si soigné récemment |
|
||||
|
||||
### 5. Impacts Logistiques et Économiques
|
||||
|
||||
#### Vitesse (Camion) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Transport animaux malades | interdit | vente/transport bloqué |
|
||||
|
||||
#### Vitesse (Nurserie) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Urgence bébé | soin possible | nurserie niv 4+ |
|
||||
|
||||
#### Vitesse (Accueil) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Réception | - | pas d’effet direct |
|
||||
|
||||
#### Vitesse (Recherche) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Tech médecine | soins + rapides | si débloquée |
|
||||
|
||||
#### Vitesse (Labo) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Vitesse (Visite) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Temps visite | + | zoo sain |
|
||||
|
||||
#### Dépenses (Billeterie) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### Dépenses (Boutiques) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Vente soins | revenu + | coins | boutique pharmacie (si ajoutée) |
|
||||
|
||||
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Remboursement | -coins | coins | visiteur choqué |
|
||||
|
||||
#### Dépenses (Employés) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Salaire | 50 | coins/jour | actif |
|
||||
| Formation | 300 | coins | upgrade |
|
||||
|
||||
#### 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 |
|
||||
|---|---:|---|---|
|
||||
| Soins bébé | 10 | coins | action “urgence” |
|
||||
|
||||
#### Dépenses (Nourriture) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Médicaments | 5 | coins/soin | si consommable |
|
||||
|
||||
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Diagnostic arrivée | 10 | coins | si check santé |
|
||||
|
||||
#### Dépenses (Camion) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Transport vers clinique | 100 | coins | si feature externe |
|
||||
|
||||
#### Trajet Visiteurs
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Ville | Zoo | réputation | soigneur indirect (via santé zoo) |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Soigneur | Enclos | tâche | déplacement sur chemins |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Visiteurs | Boutique | santé/incident | achats + |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Visiteur mécontent | sortie | incident non résolu | départ + |
|
||||
|
||||
### 6. Événements
|
||||
|
||||
#### Événements du Jeu (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Payload | Effet |
|
||||
|---|---|---|---|
|
||||
| `ANIMAL_SICK` | état maladie | animal_id | alerte |
|
||||
| `ANIMAL_HEALED` | fin soin | animal_id | info |
|
||||
|
||||
#### Événements du Carte (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `HEALER_MOVING` | tâche | rendu déplacement |
|
||||
|
||||
#### Événements du Zoo (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `HEALTH_SYSTEM_OVERLOADED` | trop malades | alerte |
|
||||
|
||||
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `VISITOR_WORRIED` | animal malade vu | satisfaction - |
|
||||
|
||||
#### Événements du Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `VISITOR_REFUND_REQUEST` | très mécontent | remboursement |
|
||||
|
||||
#### Événements du Joueur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `PLAYER_CALL_HEALER` | bouton | tâche prioritaire |
|
||||
|
||||
### 7. Progression
|
||||
|
||||
#### Tableau des Upgrades (tableau détaillé)
|
||||
|
||||
| Niveau | Coût | Effet | Débloque |
|
||||
|---|---:|---|---|
|
||||
| 1 | 0 | prévention base | - |
|
||||
| 2 | 1500 | `range` +1 | couverture |
|
||||
| 3 | 3000 | `efficiency` +0.1 | soins plus rapides |
|
||||
| 4 | 6000 | soins contagieux + | quarantaine (option) |
|
||||
|
||||
### 8. Logique et Interfaces
|
||||
|
||||
#### Pseudo-code Impacts (tableau détaillé)
|
||||
|
||||
| Fonction | Entrées | Sorties | Notes |
|
||||
|---|---|---|---|
|
||||
| `scan_sick_animals` | zoo state | list | priorités |
|
||||
| `enqueue_heal_task` | animal | task | file |
|
||||
| `apply_treatment` | animal, efficiency | state | clamp |
|
||||
|
||||
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||
|
||||
| ID | Niveau | Message | Condition |
|
||||
|---|---|---|---|
|
||||
| `NO_HEALER_AVAILABLE` | Alerte | "Aucun soigneur disponible." | file saturée |
|
||||
| `ANIMAL_HEALED` | Info | "Animal soigné." | fin soin |
|
||||
| `DISEASE_SPREAD` | Warning | "Risque de contagion." | cluster |
|
||||
|
||||
## Annexes UX/UI
|
||||
|
||||
### 1. Expérience Utilisateur (UX)
|
||||
|
||||
#### Description UX (tableau détaillé)
|
||||
|
||||
| Parcours | But | Friction | Réduction clics |
|
||||
|---|---|---|---|
|
||||
| Recruter | diminuer morts | coût | bouton recruter direct |
|
||||
| Traiter urgence | sauver animal | localisation | deep-link depuis notif |
|
||||
|
||||
#### Description UI (tableau détaillé)
|
||||
|
||||
| Composant | Contenu | États |
|
||||
|---|---|---|
|
||||
| Panel soigneur | file tâches, range | IDLE/MOVING/TREATING |
|
||||
| Badge maladie | icône croix/virus | levels |
|
||||
|
||||
#### Emplacement (tableau détaillé)
|
||||
|
||||
| Zone UI | Position | Notes |
|
||||
|---|---|---|
|
||||
| Carte | sprite soigneur | sélection base |
|
||||
| Panel animal | bouton “Appeler” | urgence |
|
||||
|
||||
#### Intégration (tableau détaillé)
|
||||
|
||||
| Intégration | Contrat | Notes |
|
||||
|---|---|---|
|
||||
| États animaux | `SICK/CRITICAL` | pas de fallback |
|
||||
| Notifications | push HUD | - |
|
||||
|
||||
#### Navigation (tableau détaillé)
|
||||
|
||||
| Action | Chemin | Résultat |
|
||||
|---|---|---|
|
||||
| Ouvrir panel | clic soigneur | panel |
|
||||
| Appeler | clic animal → bouton | tâche |
|
||||
|
||||
#### Événements (tableau détaillé)
|
||||
|
||||
| Event UI | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `OPEN_HEALER_PANEL` | clic | panel |
|
||||
| `CLICK_CALL_HEALER` | bouton | tâche |
|
||||
|
||||
#### Assets Skinables
|
||||
|
||||
##### Musiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée | Notes |
|
||||
|---|---|---:|---|
|
||||
| `clinic_soft_loop.mp3` | ambiance soin | loop | discret |
|
||||
|
||||
##### Sons (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Volume |
|
||||
|---|---|---|
|
||||
| `ui_alert_med.mp3` | alerte maladie | moyen |
|
||||
| `heal_success.mp3` | fin soin | faible |
|
||||
|
||||
##### Graphiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Contraintes |
|
||||
|---|---|---|
|
||||
| `healer_sprite_[dir].png` | sprite | 4 dirs |
|
||||
| `fx_green_cross.png` | FX | overlay |
|
||||
|
||||
##### Images (tableau détaillé)
|
||||
|
||||
| Asset | Usage |
|
||||
|---|---|
|
||||
| `icon_healer_cross.png` | HUD |
|
||||
| `portrait_healer.png` | panel |
|
||||
|
||||
##### Vidéos (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée |
|
||||
|---|---|---:|
|
||||
| `heal_popup.webm` | popup | 1.0s |
|
||||
|
||||
##### Animations (tableau détaillé)
|
||||
|
||||
| Animation | Déclencheur | Notes |
|
||||
|---|---|---|
|
||||
| pulsation croix | animal malade | loop |
|
||||
| sparkles verts | soin | burst |
|
||||
|
||||
##### Couleurs (tableau détaillé)
|
||||
|
||||
| Token | Valeur | Usage |
|
||||
|---|---|---|
|
||||
| `healer_primary` | #2ECC71 | UI |
|
||||
| `healer_alert` | #E74C3C | urgence |
|
||||
|
||||
##### Textes (tableau détaillé)
|
||||
|
||||
| Clé | FR | EN |
|
||||
|---|---|---|
|
||||
| `healer.call` | Appeler le soigneur | Call healer |
|
||||
| `healer.busy` | Soigneur occupé | Healer busy |
|
||||
|
||||
##### Formes (tableau détaillé)
|
||||
|
||||
| Élément | Forme | Notes |
|
||||
|---|---|---|
|
||||
| Badge maladie | rond | lisible |
|
||||
| Barre santé | rectangulaire | standard |
|
||||
|
||||
Reference in New Issue
Block a user