Files
builazoo/docs/specs/soigneur.md
2026-03-05 04:01:29 +01:00

546 lines
17 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Soigneur
## 1. Définition
Employé spécialisé dans la santé des animaux. Il intervient pour prévenir les maladies, soigner les animaux malades et s'assurer de leur bien-être général. Il est achetable avec des pièces du zoo.
## 2. Fonctions
* **Prévention :** Réduit la probabilité d'apparition de maladies dans les enclos assignés ou proches.
* **Soin :** Intervient automatiquement sur les animaux malades pour les guérir (durée d'action).
* **Bien-être :** Augmente légèrement le score de bien-être des animaux.
## 3. Icone
* **Représentation :** Croix verte ou Trousse de secours.
* **Couleur dominante :** Blanc et Vert.
## 4. Interactions
* **Recrutement :** Via le menu "Employés" contre des pièces.
* **Assignation :** Peut être assigné à une zone ou un enclos spécifique (drag & drop ou menu contextuel).
* **Amélioration :** (Optionnel) Formation pour augmenter l'efficacité.
## 5. Annexes Techniques
### Données (JSON)
```json
{
"employee_id": "healer_01",
"type": "soigneur",
"name": "Dr. Doolittle",
"salary": 50, // Coût par cycle (jour/mois)
"hire_cost": 500, // Coût d'achat en pièces
"stats": {
"speed": 1.0,
"efficiency": 0.8,
"range": 5 // Rayon d'action en cases
},
"assigned_zone": null // null = tout le zoo, ou ID de zone,
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Règles Métier
* Un animal malade non soigné peut mourir ou contaminer les autres.
* Le soigneur doit se déplacer physiquement (ou virtuellement avec délai) jusqu'à l'enclos.
* Le coût de recrutement augmente avec le nombre de soigneurs déjà possédés.
## 6. Annexes UX/UI
* **Visuel Carte :** Personnage en blouse blanche avec une mallette.
* **Feedback :** Icône de croix verte au-dessus de l'animal soigné.
* **Notification :** "Un animal est malade !" (si pas de soigneur dispo) ou "Animal soigné par [Nom]".
## Affichage contextuel (modules)
Le soigneur sert de personnage contextuel lors des événements de santé animale.
### Déclencheurs (exemples)
| Event | Condition | Effet UI personnage |
|---|---|---|
| `ANIMAL_SICK` | animal passe `SICK` | bulle “Maladie détectée” + CTA “Voir animal” |
| `NO_HEALER_AVAILABLE` | file saturée / absent | bulle “Aucun soigneur dispo” + CTA recruter |
| `HEALTH_SYSTEM_OVERLOADED` | trop malades | bulle “Système santé saturé” + CTA prioriser zones |
# Annexes UX/UI
## 0. Direction Artistique & Vue
* **Vue** : Isométrique (2.5D).
* **Style** : Coloré, vivant, détails foisonnants (Réf: IMG_20260303_170253.jpg).
* **Sprites** : 4 directions.
* **Interactions** :
* **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner.
* **Feedback** : Surbrillance (outline blanc/jaune) au survol de la souris.
## 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 danimaux 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 deffet 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 |