**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
5.8 KiB
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)
{
"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
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 à l’ouverture 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.