This commit is contained in:
2026-03-05 03:39:33 +01:00
parent 349f3b8ac3
commit dfecb09b7c
14 changed files with 10081 additions and 28 deletions

3
.gitignore vendored
View File

@@ -3,6 +3,9 @@ node_modules/
.DS_Store .DS_Store
dist/ dist/
build/ build/
app.ini
gitea/
mysql/
.cursor/ .cursor/
terminals/ terminals/
agent-transcripts/ agent-transcripts/

103
app.ini.example Normal file
View File

@@ -0,0 +1,103 @@
APP_NAME = GIT 4NK
RUN_MODE = prod
RUN_USER = git
WORK_PATH = /data/gitea
[repository]
ROOT = /data/git/repositories
[repository.local]
LOCAL_COPY_PATH = /data/gitea/tmp/local-repo
[repository.upload]
TEMP_PATH = /data/gitea/uploads
[server]
APP_DATA_PATH = /data/gitea
DOMAIN = git1.4nkweb.com
SSH_DOMAIN = git1.4nkweb.com
HTTP_PORT = 3000
ROOT_URL = https://git1.4nkweb.com/
DISABLE_SSH = false
SSH_PORT = 2222
SSH_LISTEN_PORT = 22
LFS_START_SERVER = true
LFS_JWT_SECRET =
OFFLINE_MODE = true
[database]
PATH = /data/gitea/gitea.db
DB_TYPE = mysql
HOST = db:3306
NAME = gitea
USER = gitea
PASSWD =
LOG_SQL = false
SCHEMA =
SSL_MODE = disable
[indexer]
ISSUE_INDEXER_PATH = /data/gitea/indexers/issues.bleve
[session]
PROVIDER_CONFIG = /data/gitea/sessions
PROVIDER = file
[picture]
AVATAR_UPLOAD_PATH = /data/gitea/avatars
REPOSITORY_AVATAR_UPLOAD_PATH = /data/gitea/repo-avatars
[attachment]
PATH = /data/gitea/attachments
[log]
MODE = console
LEVEL = info
ROOT_PATH = /data/gitea/log
[security]
INSTALL_LOCK = true
SECRET_KEY =
REVERSE_PROXY_LIMIT = 1
REVERSE_PROXY_TRUSTED_PROXIES = *
INTERNAL_TOKEN =
PASSWORD_HASH_ALGO = pbkdf2
[service]
DISABLE_REGISTRATION = false
REQUIRE_SIGNIN_VIEW = false
REGISTER_EMAIL_CONFIRM = true
ENABLE_NOTIFY_MAIL = true
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
ENABLE_CAPTCHA = false
DEFAULT_KEEP_EMAIL_PRIVATE = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING = true
NO_REPLY_ADDRESS = noreply.localhost
[lfs]
PATH = /data/git/lfs
[mailer]
ENABLED = true
SMTP_ADDR = smtp.protonmail.ch
SMTP_PORT = 587
FROM = noreply@4nkweb.com
USER =
PASSWD =
[openid]
ENABLE_OPENID_SIGNIN = true
ENABLE_OPENID_SIGNUP = true
[cron.update_checker]
ENABLED = false
[repository.pull-request]
DEFAULT_MERGE_STYLE = merge
[repository.signing]
DEFAULT_TRUST_MODEL = committer
[oauth2]
JWT_SECRET =

43
docker-compose-gitea.yml Normal file
View File

@@ -0,0 +1,43 @@
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=db:3306
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3016:3000"
- "2222:22"
depends_on:
- db
db:
image: mysql:8
restart: always
environment:
- MYSQL_ROOT_PASSWORD=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=gitea
- MYSQL_DATABASE=gitea
networks:
- gitea
volumes:
- ./mysql:/var/lib/mysql

5664
docs/specs-format-audit.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -90,3 +90,477 @@ def update_security_agent(agent, world):
* **Interactions** : * **Interactions** :
* **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner. * **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. * **Feedback** : Surbrillance (outline blanc/jaune) au survol de la souris.
## Définition
| Champ | Valeur |
|---|---|
| Entité | Employé “Agent de sécurité” |
| Rôle | Maintenir lordre, 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 danimation), 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 nalimente 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 |

View File

@@ -76,3 +76,484 @@ def update_artist(artist, visitors_nearby):
* **Interactions** : * **Interactions** :
* **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner. * **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. * **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 dintérêt (scène) avec un rayon deffet 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 à lembauche |
| `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 | Sajoute 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 dabris proches |
| 1525°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 |
|---|---|---|
| 10h16h | affluence max | perf prioritaire |
| 18h20h | 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 denclos |
| 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 dimpact direct |
#### Vitesse (Nurserie) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | aucun | artiste naffecte 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 | à lachat |
#### 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é | lartiste naffecte 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 |

View File

@@ -61,3 +61,460 @@ Représentation visuelle du joueur dans l'interface du jeu. L'avatar est personn
* **Interactions** : * **Interactions** :
* **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner. * **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. * **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 demoji 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 à louverture 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 sapproche |
#### 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 |

View File

@@ -209,3 +209,503 @@ function updateBaby(baby, context):
- **Couleurs** : Blanc/Or. - **Couleurs** : Blanc/Or.
- **Textes** : "Adulte". - **Textes** : "Adulte".
- **Formes** : Rayons de lumière. - **Formes** : Rayons de lumière.
## Définition
| Champ | Valeur |
|---|---|
| Concept | Instance danimal au stade “bébé” (post-éclosion), avec progression de croissance vers ladulte. |
| Rôle | Introduire une phase de fragilité et de soins, visible en nurserie et/ou sur le zoo, avec effets dattractivité “mignon” et contraintes biologiques (non reproductible). |
| Portée | Une entité `Animal` (référence `animal_id`) au sein dun 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 dexception 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 quun 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 ladulte |
#### Impact Saisons (tableau détaillé)
| Saison | Effet bébé | Notes |
|---|---|---|
| Hiver | risque froid ↑ | privilégier nurserie |
| Été | risque chaud ↑ | besoin deau/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, dautres 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 dun 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 danalytics |
#### 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 | à larrivé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é |

View File

@@ -203,3 +203,472 @@ function updateResearch(center):
- **Couleurs** : Bleu. - **Couleurs** : Bleu.
- **Textes** : "Upgrade Terminé". - **Textes** : "Upgrade Terminé".
- **Formes** : Hexagones. - **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 daffichage, 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 nest 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 |

View File

@@ -15,25 +15,10 @@ Les chemins sont des cases aménagées permettant aux visiteurs et au staff de s
```json ```json
{ {
"type": "path", "type": "path",
"material": "enum('terre','gravier','paves','bois','tapis_rouge')", "material": "gravel",
"level": "integer (1-7)",
"x": 10, "x": 10,
"y": 12, "y": 12,
"connected_neighbors": ["enum('N','S','E','W')"], "connected_neighbors": ["N", "S", "E"],
"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)"
},
"iso_x": "integer", "iso_x": "integer",
"iso_y": "integer", "iso_y": "integer",
"z_index": "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 ## 2. Règles Métier
* **Connexion Automatique :** Les textures des chemins se connectent automatiquement aux chemins adjacents (Auto-tiling). * **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. * **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 dun chemin sous un visiteur → appliquer au tick suivant, pas instantanément (évite téléportations).
# Annexes UX/UI # 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 ## 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. * **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). * **Variété :** Différents types de sols disponibles (Terre, Gravier, Pavés).
* **Lisibilité iso** : les bordures de chemin doivent rester visibles même sous locclusion 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).

View File

@@ -60,3 +60,472 @@ Employé travaillant dans le Centre de Recherche pour générer des points de sc
* **Interactions** : * **Interactions** :
* **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner. * **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. * **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 ninteragit 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 |

View File

@@ -149,3 +149,474 @@ function handleBabyDeath(baby):
- **Couleurs** : Noir #000000. - **Couleurs** : Noir #000000.
- **Textes** : Cause du décès. - **Textes** : Cause du décès.
- **Formes** : Bordure noire épaisse. - **Formes** : Bordure noire épaisse.
## Définition
| Champ | Valeur |
|---|---|
| Concept | Événement de décès dun 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 dack 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 à lemplacement | 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 danalytics |
| 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 lalerte | 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 dun 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 |

View File

@@ -56,3 +56,474 @@ Employé chargé de l'approvisionnement en nourriture des enclos. Il remplit les
* **Interactions** : * **Interactions** :
* **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner. * **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. * **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 dabord” |
#### 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 |

View File

@@ -59,3 +59,477 @@ Employé spécialisé dans la santé des animaux. Il intervient pour prévenir l
* **Interactions** : * **Interactions** :
* **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner. * **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. * **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 |