Files
builazoo/docs/specs/vente_animal.md
Nicolas Cantu 5143a79890 docs: enrich docs/specs and remove placeholders
**Motivations:**
- Make docs/specs implementation-ready without empty sections or placeholders.

**Root causes:**
- Multiple specs still contained non-actionable placeholders (N/A, “see above”, "..."), and inconsistent “no cache” wording.

**Correctifs:**
- Replace placeholders with explicit tables, structures, and typed examples.
- Align “no cache / no memorization” statements where relevant.

**Evolutions:**
- Add a features doc entry to track the documentation enrichment effort.

**Pages affectées:**
- docs/specs/*
- docs/features/docs-specs-enrichment.md
- docs/leo.md
- docs/plan-enrich-docs-specs.md
2026-03-05 03:08:15 +01:00

179 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Spécifications : Ventes d'Animaux (Général)
## Types de Ventes
- **Aux Enchères** : Vers d'autres joueurs (prix potentiellement élevé).
- **Libération (Vente rapide)** : Vente au "système" (prix plancher fixe) pour libérer de la place rapidement (optionnelle selon design retenu). *Note : Le cahier des charges privilégie le marché joueurs ; la libération est un mode de vente alternatif.*
## Contraintes
- Un animal malade ou mourant ne peut pas être mis en vente.
- Le transport (Camion) immobilise l'animal pendant la durée de la vente.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"sale_id": "uuid",
"seller_zoo_id": "uuid",
"seller_player_id": "uuid | null (null si bot)",
"animal_id": "uuid",
"sale_type": "enum('auction_adult','auction_baby','release_system')",
"status": "enum('draft','in_transit','listed','pending_validation','completed','expired','cancelled')",
"created_at": "timestamp",
"updated_at": "timestamp",
"listing": {
"start_price": "integer",
"buy_now_price": "integer | null",
"currency": "enum('coins')",
"duration_seconds": "integer (3600|14400|86400)",
"end_at": "timestamp"
},
"bids": [
{
"bid_id": "uuid",
"bidder_zoo_id": "uuid",
"amount": "integer",
"created_at": "timestamp"
}
],
"validation": {
"accepted_bid_id": "uuid | null",
"pending_until": "timestamp | null (sablier 10 min)",
"finalized_at": "timestamp | null"
},
"transport": {
"truck_id": "uuid",
"from_site_id": "uuid",
"to_site_id": "uuid | null",
"climate_control": "boolean",
"insurance": "boolean",
"transport_started_at": "timestamp",
"transport_eta_at": "timestamp"
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Caractéristiques Initiales
**Total Vendu** : 0 animaux.
### Scores Initiaux
**Réputation Vendeur** : Neutre (0).
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
**Marché** : Offre publiée par le joueur.
### Conditions de Disparition
**Vente conclue** (Achat par tiers) ou **Annulation** (Retour au zoo).
### Hérédité
**Certificat** : L'acheteur voit les parents et l'arbre généalogique.
## 3. Impacts Environnementaux
### Impact Température
**Transport** : Camion climatisé requis si T° extrême (Coût +10%).
### Impact Milieu (Biome)
**Export** : Le biome d'origine est indiqué (Bonus adaptation si même biome cible).
### Impact Saisons
**Demande** : Varie selon saison (ex: Rennes très demandés en Hiver, Lapins au Printemps).
### Impact Heure / Jour-Nuit
**Enchères** : Souvent le soir (18h-22h) pour maximiser les vues (Prime Time).
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Vente Reproducteur** : Un animal fertile vaut 2x plus cher.
### Impact Mort
**Assurance** : Remboursement 50% si mort pendant transport (si assurance payée).
### Impact Nourriture
**Panier repas** : Coût inclus dans frais vente (L'animal ne doit pas arriver affamé).
### Impact Attractivité (Visiteurs/Animaux)
**Perte Star** : Vendre son meilleur animal (Légendaire) baisse l'attractivité du zoo (-10%).
### Impact Valeur
**Prix Libération** : 10% de la valeur théorique de l'animal (Prix plancher).
**Prix Enchère** : Potentiellement infini (Offre/Demande).
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Durée Enchère** : 1h, 4h, 24h (au choix).
### Dépenses (Boutiques/Visiteurs)
**Taxe Salle Vente** : 10% du prix final prélevé par le jeu.
### Trajet Visiteurs
**Départ** : Les visiteurs font signe "au revoir" quand le camion part.
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Offre** : Mise en ligne.
* **Bid** : Nouvelle enchère reçue.
* **Sold** : Vente terminée.
## 7. Progression
### Tableau des Upgrades
*Note : Compétences Marchand.*
| Niveau | Nom | Avantage |
| :--- | :--- | :--- |
| 1 | Vendeur Rue | Taxe 10% |
| 2 | Négociant | Taxe 8% |
| 3 | Exportateur | Taxe 5%, Visibilité Mondiale |
## 8. Logique et Interfaces
### Pseudo-code Impacts
```javascript
function sellAnimal(animal, price, mode):
if mode == "RELEASE":
player.coins += animal.value * 0.10
removeAnimal(animal)
else:
createOffer(animal, price)
animal.status = "TRANSIT"
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `ANIMAL_SOLD` | Succès | "Animal vendu pour {amount} pièces !" |
| `ANIMAL_RELEASED` | Info | "Animal relâché dans la nature." |
# Annexes UX/UI
## 0. Direction Artistique & Vue
* **Vue** : Isométrique (2.5D).
* **Style** : Coloré, vivant, détails foisonnants (Réf: IMG_20260303_170253.jpg).
* **Sprites** : 4 directions.
* **Interactions** :
* **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner.
* **Feedback** : Surbrillance (outline blanc/jaune) au survol de la souris.
## 1. Expérience Utilisateur (UX)
### Libération (Action)
**Description UX** : Le joueur relâche un animal (vente système).
**Description UI** : Bouton "Libérer" (souvent rouge ou discret pour éviter les erreurs). Confirmation "Êtes-vous sûr ? Vous gagnerez peu (X pièces)".
**Emplacement** : Panneau Animal.
**Intégration** : Option secondaire.
**Navigation** : Clic Libérer -> Confirmer.
**Événements** : `RELEASE_ANIMAL`.
#### Assets
- **Musiques** : `ui_warning_soft.mp3` (jingle court à louverture de confirmation).
- **Sons** : `bird_fly_away.mp3` (bruit de nature positif).
- **Graphiques** : Icône Cage ouverte.
- **Images** : `icon_release.png`, `modal_confirm.png`.
- **Vidéos** : `release_fade.webm` (1.2s non loop, optionnel).
- **Animations** : Animal s'estompe ou court hors de l'écran.
- **Couleurs** : Vert (Nature).
- **Textes** : "Libéré !".
- **Formes** : Bouton danger (rouge) + modal arrondie.