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

5.8 KiB
Raw Blame History

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 à 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.