# Agent de Sécurité

## 1. Définition
Employé responsable de l'ordre et de la sécurité dans le zoo. Il gère les visiteurs indisciplinés, prévient le vandalisme et peut intervenir en cas d'évasion d'animal (si fonctionnalité présente). Achetable avec des pièces.

## 2. Fonctions
*   **Surveillance :** Patrouille dans les allées pour rassurer les visiteurs (+attractivité).
*   **Intervention :** Expulse les visiteurs qui jettent des déchets ou embêtent les animaux.
*   **Protection :** Capture les animaux échappés (avec filet ou tranquillisant).
*   **Dissuasion :** Sa simple présence réduit la probabilité d'actes de vandalisme dans un rayon donné.

## 3. Icone
*   **Représentation :** Écusson ou Casquette de police.
*   **Couleur dominante :** Bleu marine et Jaune.

## 4. Interactions
*   **Recrutement :** Menu "Employés", coût en pièces.
*   **Ordre :** Le joueur peut cliquer sur une zone pour envoyer l'agent en priorité.
*   **Licenciement :** Possible via le menu employé.

## 5. Annexes Techniques

### Données (JSON)
```json
{
  "employee_id": "security_05",
  "type": "agent_securite",
  "name": "Sgt. Pepper",
  "created_at": "timestamp",
  "salary": 40,
  "hire_cost": 400,
  "state": "enum (PATROL, CHASE, REST, INTERACT)",
  "position": { "x": 12.5, "y": 14.0 },
  "target_position": { "x": 20, "y": 10 },
  "stats": {
    "intimidation": 10,
    "speed": 1.1,
    "stamina": 100
  },
  "iso_x": "integer",
  "iso_y": "integer",
  "z_index": "integer"
}
```

### Règles Métier
*   **Rayon d'action :** 5 cases autour de lui.
*   **Fatigue :** Doit se reposer au Staff Room toutes les 4h in-game.
*   **Priorité :** Animal échappé > Vandalism > Déchets > Patrouille.

### Algorithme de Comportement (FSM)
```python
def update_security_agent(agent, world):
    if agent.state == "REST":
        agent.stamina += 5
        if agent.stamina >= 100:
            agent.state = "PATROL"
        return

    # Scan des menaces
    threat = scan_for_threats(agent.position, radius=10)
    
    if threat:
        agent.state = "CHASE"
        agent.target = threat.position
        move_towards(agent, threat.position, agent.speed * 1.5) # Course
        if distance(agent, threat) < 1:
            neutralize(threat)
    else:
        agent.state = "PATROL"
        patrol_randomly(agent)
```

## 6. Annexes UX/UI
*   **Visuel Carte :** Personnage en uniforme bleu.
*   **Animation :**
    *   **Marche :** Calme, mains dans le dos.
    *   **Course :** Rapide, sifflet à la bouche.
    *   **Action :** Sort un carnet (amende) ou un filet (animal).
*   **Feedback :** Les visiteurs s'écartent sur son passage.
*   **Vue Isométrique :** Sprite 8 directions pour des déplacements fluides.


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