# Vendeur (achat en pièces pour le zoo)

## 1. Définition
Personnage contextuel du module de conversion/achat de monnaie “pièces” pour le zoo. Il intervient dans le `menu_achats.md` pour présenter les packs, confirmer les transactions et afficher les erreurs de paiement/fonds.

## 2. Fonctions
*   **Présentation packs** : Affiche les packs de pièces (et, si présent, la monnaie source : gems, coupons).
*   **Transaction** : Déclenche une transaction atomique (débit monnaie source + crédit pièces).
*   **Transparence** : Affiche le détail (taux, bonus éventuel, limites) sans masquage.

## 3. Icone
*   **Représentation :** Pile de pièces + symbole échange.
*   **Couleur dominante :** Or.

## 4. Interactions
*   **Ouverture** : Menu Achats → section “Pièces”.
*   **Achat** : Sélection pack → confirmer (si requis) → crédit.

## 5. Annexes Techniques

### Données (JSON)
```json
{
  "npc_id": "coin_merchant_01",
  "type": "vendeur_pieces",
  "name": "Maya",
  "offers": [
    {
      "offer_id": "coins_pack_s",
      "coins_amount": 1000,
      "price": { "gems": 10 }
    }
  ],
  "limits": {
    "daily_purchases_max": 10
  }
}
```

### Règles Métier
*   Aucune alternative silencieuse : si paiement impossible, afficher la cause (`NOT_ENOUGH_GEMS`, `LIMIT_REACHED`, `PAYMENT_FAILED`).
*   Les offres doivent rester cohérentes avec le thème (bannière, palette) et les règles “pas d’analytics”.

# Annexes UX/UI

## 0. Direction Artistique & Vue
*   **Style** : Cohérent UI shop (réutilise `menu_achats.md`).
*   **Personnage** : Portrait/mascotte dans le panneau “Pièces”.

## Affichage contextuel (modules)
- **Menu Achats** (`menu_achats.md`) : ouverture section pièces, confirmation, achat réussi/échoué.

## Skins & thèmes
*   Tenue et décor dérivent du thème (`theme.md`).
*   Accessoires (bourse, caisse, badge) via `inventaire_skins.md` si des skins “UI shop staff” existent.
