{
  "source": "Kpitalism canonical game content",
  "canonicalAppearanceRevision": 3,
  "prototypeCharacterLevel": 1,
  "characters": [
    {
      "id": "hector_id",
      "name": "Hector",
      "role": "dps",
      "race": "humain",
      "description": "Commercial de terrain : fonce au contact, enchaîne les arguments et signe le closing sur les cibles affaiblies.",
      "gold": 1000,
      "pa": 7,
      "pm": 3,
      "hp": 800,
      "initiative": 150,
      "damages": 0,
      "resistances": 0,
      "rangeBonus": 0,
      "dodge": 100,
      "lock": 0,
      "retrait": 0,
      "fuite": 0,
      "heals": 0,
      "crit": 0,
      "portrait": "/siege/media/portraits/hector.webp",
      "spells": [
        {
          "id": "entaille",
          "name": "Accroche",
          "description": "Ouvre la garde d'un ennemi au corps à corps. 115 à 135 dégâts (150 à 176 en critique).",
          "cost": 180,
          "pa": 3,
          "range": [
            1,
            1
          ],
          "cooldown": 0,
          "level": 1,
          "icon": "icons/spells-optimized/512/entaille.webp"
        },
        {
          "id": "charge_heroique",
          "name": "Rendez-vous forcé",
          "description": "Fonce en ligne droite jusqu'au contact d'un ennemi puis frappe. 90 à 110 dégâts. Le trajet doit être entièrement libre.",
          "cost": 190,
          "pa": 3,
          "range": [
            2,
            4
          ],
          "cooldown": 0,
          "level": 1,
          "icon": "icons/spells-optimized/512/charge_heroique.webp"
        },
        {
          "id": "puissance",
          "name": "Argumentaire",
          "description": "+25% de dégâts pendant 3 tours, sur les dégâts directs comme différés. Non cumulable.",
          "cost": 130,
          "pa": 3,
          "range": [
            0,
            0
          ],
          "cooldown": 5,
          "level": 1,
          "icon": "icons/spells-optimized/512/puissance.webp"
        },
        {
          "id": "brise_garde",
          "name": "Objection balayée",
          "description": "Frappe un ennemi au contact puis réduit sa résistance de 12% pendant 2 tours. 100 à 120 dégâts (130 à 156 en critique).",
          "cost": 185,
          "pa": 3,
          "range": [
            1,
            1
          ],
          "cooldown": 0,
          "level": 2,
          "icon": "icons/spells-optimized/512/brise_garde.webp"
        },
        {
          "id": "clairon",
          "name": "Prospect chaud",
          "description": "+30% de critique et +20% de PV max temporaires pendant 2 tours. Les PV max accordés viennent avec autant de PV courants. Non cumulable.",
          "cost": 140,
          "pa": 2,
          "range": [
            0,
            0
          ],
          "cooldown": 5,
          "level": 5,
          "icon": "icons/spells-optimized/512/clairon.webp"
        },
        {
          "id": "tournoiement",
          "name": "Pitch collectif",
          "description": "Balaye les ennemis dans un rayon de 2 autour du lanceur, sans ligne de vue. 120 à 145 dégâts, jet propre à chaque cible.",
          "cost": 180,
          "pa": 4,
          "range": [
            0,
            0
          ],
          "cooldown": 1,
          "level": 8,
          "icon": "icons/spells-optimized/512/tournoiement.webp"
        },
        {
          "id": "enchainement",
          "name": "Vente additionnelle",
          "description": "Deux frappes successives au contact : 70 à 85 puis 85 à 105. La seconde ne part que si la cible est encore debout.",
          "cost": 210,
          "pa": 4,
          "range": [
            1,
            1
          ],
          "cooldown": 1,
          "level": 11,
          "icon": "icons/spells-optimized/512/enchainement.webp"
        },
        {
          "id": "precipitation",
          "name": "Appel urgent",
          "description": "+4 PA immédiatement, puis -2 PA au tour suivant. Le contrecoup tombe même si les PA gagnés n'ont pas été dépensés.",
          "cost": 160,
          "pa": 1,
          "range": [
            0,
            0
          ],
          "cooldown": 4,
          "level": 14,
          "icon": "icons/spells-optimized/512/precipitation.webp"
        },
        {
          "id": "defi_sanglant",
          "name": "Négociation musclée",
          "description": "Provoque un ennemi 2 tours : +25% de dégâts contre lui, mais +35% subis de sa part. Un seul défi actif. Recharge 3 tours.",
          "cost": 150,
          "pa": 2,
          "range": [
            1,
            3
          ],
          "cooldown": 3,
          "level": 17,
          "icon": "icons/spells-optimized/512/defi_sanglant.webp"
        },
        {
          "id": "coup_de_grace",
          "name": "Closing",
          "description": "Achève un ennemi au contact. 180 à 200 dégâts, ou 240 à 270 si la cible est à 35% de ses PV max ou moins.",
          "cost": 240,
          "pa": 5,
          "range": [
            1,
            1
          ],
          "cooldown": 2,
          "level": 20,
          "icon": "icons/spells-optimized/512/coup_de_grace.webp"
        }
      ]
    },
    {
      "id": "ombeline_id",
      "name": "Ombeline",
      "role": "dps",
      "race": "humain",
      "description": "Prospectrice à distance : démarche de loin, arrose les groupes de relances et raccroche avant qu'on la rattrape.",
      "gold": 1000,
      "pa": 7,
      "pm": 3,
      "hp": 820,
      "initiative": 130,
      "damages": 0,
      "resistances": 0,
      "rangeBonus": 0,
      "dodge": 100,
      "lock": 0,
      "retrait": 0,
      "fuite": 0,
      "heals": 20,
      "crit": 0,
      "portrait": "/siege/media/portraits/ombeline.webp",
      "spells": [
        {
          "id": "tir_precis",
          "name": "Démarchage",
          "description": "Tir direct, fiable et répétable à longue portée. 100 à 120 dégâts (130 à 156 en critique).",
          "cost": 170,
          "pa": 3,
          "range": [
            2,
            6
          ],
          "cooldown": 0,
          "level": 1,
          "icon": "icons/spells-optimized/512/ombeline/tir_precis.webp"
        },
        {
          "id": "recul",
          "name": "Appel insistant",
          "description": "Ombeline tire une flèche d'impact qui blesse et repousse la cible de 1 case. 75 à 95 dégâts (98 à 124 en critique).",
          "cost": 150,
          "pa": 3,
          "range": [
            1,
            5
          ],
          "cooldown": 0,
          "level": 1,
          "icon": "icons/spells-optimized/512/ombeline/recul.webp"
        },
        {
          "id": "puissance",
          "name": "Argumentaire",
          "description": "+25% de dégâts pendant 3 tours, sur les dégâts directs comme différés. Non cumulable.",
          "cost": 130,
          "pa": 3,
          "range": [
            0,
            0
          ],
          "cooldown": 5,
          "level": 1,
          "icon": "icons/spells-optimized/512/ombeline/puissance.webp"
        },
        {
          "id": "fleche_perforante",
          "name": "Relance groupée",
          "description": "Traverse jusqu'à 3 ennemis alignés : 130 à 155 dégâts sur la première cible, −20% par cible suivante. Arrêtée par les obstacles.",
          "cost": 210,
          "pa": 4,
          "range": [
            2,
            7
          ],
          "cooldown": 1,
          "level": 2,
          "icon": "icons/spells-optimized/512/ombeline/fleche_perforante.webp"
        },
        {
          "id": "clairon",
          "name": "Prospect chaud",
          "description": "+30% de critique et +20% de PV max temporaires pendant 2 tours. Les PV max accordés viennent avec autant de PV courants. Non cumulable.",
          "cost": 140,
          "pa": 2,
          "range": [
            0,
            0
          ],
          "cooldown": 5,
          "level": 5,
          "icon": "icons/spells-optimized/512/ombeline/clairon.webp"
        },
        {
          "id": "fleche_explosive",
          "name": "Spam massif",
          "description": "Fait exploser une flèche sur la case ciblée et frappe tous les ennemis dans un cercle de rayon 2. 105 à 130 dégâts par cible.",
          "cost": 230,
          "pa": 4,
          "range": [
            2,
            7
          ],
          "cooldown": 1,
          "level": 8,
          "icon": "icons/spells-optimized/512/ombeline/fleche_explosive.webp"
        },
        {
          "id": "tir_esquive",
          "name": "Raccrochage sec",
          "description": "Ombeline tire puis bondit de 2 cases dans la direction opposée à sa cible pour recréer de la distance. 85 à 105 dégâts.",
          "cost": 200,
          "pa": 3,
          "range": [
            2,
            6
          ],
          "cooldown": 2,
          "level": 11,
          "icon": "icons/spells-optimized/512/ombeline/tir_esquive.webp"
        },
        {
          "id": "precipitation",
          "name": "Appel urgent",
          "description": "+4 PA immédiatement, puis -2 PA au tour suivant. Le contrecoup tombe même si les PA gagnés n'ont pas été dépensés.",
          "cost": 160,
          "pa": 1,
          "range": [
            0,
            0
          ],
          "cooldown": 4,
          "level": 14,
          "icon": "icons/spells-optimized/512/ombeline/precipitation.webp"
        },
        {
          "id": "marque_du_faucon",
          "name": "Prospect prioritaire",
          "description": "Ombeline désigne une cible prioritaire : elle lui inflige +20% de dégâts pendant 2 tours. Une seule marque active à la fois.",
          "cost": 160,
          "pa": 2,
          "range": [
            2,
            8
          ],
          "cooldown": 3,
          "level": 17,
          "icon": "icons/spells-optimized/512/ombeline/marque_du_faucon.webp"
        },
        {
          "id": "fleche_punitive",
          "name": "Ultime relance",
          "description": "Tir d'exécution : 160 à 190 dégâts, +15 dégâts par case au-delà de 3 (maximum +90). Le bonus de distance est calculé avant l'impact.",
          "cost": 260,
          "pa": 5,
          "range": [
            3,
            10
          ],
          "cooldown": 2,
          "level": 20,
          "icon": "icons/spells-optimized/512/ombeline/fleche_punitive.webp"
        }
      ]
    },
    {
      "id": "philemon_id",
      "name": "Solal",
      "role": "placeur",
      "race": "nain",
      "description": "Fiscaliste d'entrave : prélève les PA adverses à la source, pose des clauses abusives et redresse tout ce qui bouge encore.",
      "gold": 1000,
      "pa": 7,
      "pm": 3,
      "hp": 980,
      "initiative": 90,
      "damages": 0,
      "resistances": 10,
      "rangeBonus": 0,
      "dodge": 70,
      "lock": 20,
      "retrait": 0,
      "fuite": 0,
      "heals": 0,
      "crit": 0,
      "portrait": "/siege/media/portraits/solal.webp",
      "spells": [
        {
          "id": "vol_de_temps",
          "name": "Délai fiscal",
          "description": "Attaque principale qui retire 1 PA pendant 1 tour. 75 à 95 dégâts (98 à 124 en critique).",
          "cost": 175,
          "pa": 3,
          "range": [
            1,
            4
          ],
          "cooldown": 0,
          "level": 1,
          "icon": "icons/spells-optimized/512/philemon/vol_de_temps.webp"
        },
        {
          "id": "piege_a_rouages",
          "name": "Clause abusive",
          "description": "Pose un piège sur une case : le premier ennemi qui y entre subit 80 à 100 dégâts (104 à 130 en critique) et perd 1 PA.",
          "cost": 190,
          "pa": 3,
          "range": [
            1,
            4
          ],
          "cooldown": 0,
          "level": 1,
          "icon": "icons/spells-optimized/512/philemon/piege_a_rouages.webp"
        },
        {
          "id": "sape",
          "name": "Contrôle surprise",
          "description": "réduit la résistance aux retraits de la cible — −20 esquive PA/PM pendant 2 tours.",
          "cost": 140,
          "pa": 2,
          "range": [
            1,
            4
          ],
          "cooldown": 3,
          "level": 1,
          "icon": "icons/spells-optimized/512/philemon/sape.webp"
        },
        {
          "id": "pillage",
          "name": "Prélèvement",
          "description": "Vole temporairement 1 PA à la cible et le donne à Solal. 60 à 80 dégâts (78 à 104 en critique).",
          "cost": 180,
          "pa": 3,
          "range": [
            1,
            3
          ],
          "cooldown": 2,
          "level": 2,
          "icon": "icons/spells-optimized/512/philemon/pillage.webp"
        },
        {
          "id": "cle_rouillee",
          "name": "Dossier incomplet",
          "description": "frappe et réduit la portée de la cible de 2 pendant 2 tours. 65 à 85 dégâts (85 à 111 en critique).",
          "cost": 180,
          "pa": 3,
          "range": [
            1,
            5
          ],
          "cooldown": 2,
          "level": 5,
          "icon": "icons/spells-optimized/512/philemon/cle_rouillee.webp"
        },
        {
          "id": "faux_mouvement",
          "name": "Dépense suspecte",
          "description": "Punit la dépense de PA : 18 dégâts par PA dépensé au prochain tour de la cible, maximum 108. 50 à 70 dégâts à l'impact.",
          "cost": 200,
          "pa": 3,
          "range": [
            1,
            5
          ],
          "cooldown": 3,
          "level": 8,
          "icon": "icons/spells-optimized/512/philemon/faux_mouvement.webp"
        },
        {
          "id": "larcin",
          "name": "Optimisation fiscale",
          "description": "Dérobe une partie de la puissance ennemie : −15% de dégâts à la cible et +15% à Solal pendant 2 tours. 75 à 95 dégâts.",
          "cost": 210,
          "pa": 3,
          "range": [
            1,
            4
          ],
          "cooldown": 3,
          "level": 11,
          "icon": "icons/spells-optimized/512/philemon/larcin.webp"
        },
        {
          "id": "grippage",
          "name": "Gel budgétaire",
          "description": "perturbe actions et déplacements — −1 PA et −1 PM pendant 1 tour. 55 à 75 dégâts (72 à 98 en critique).",
          "cost": 180,
          "pa": 3,
          "range": [
            1,
            4
          ],
          "cooldown": 2,
          "level": 14,
          "icon": "icons/spells-optimized/512/philemon/grippage.webp"
        },
        {
          "id": "banqueroute",
          "name": "Redressement",
          "description": "Renforce l'entrave sur une cible déjà privée de PA : −2 PA supplémentaires si elle porte déjà un malus de PA. 100 à 125 dégâts.",
          "cost": 240,
          "pa": 4,
          "range": [
            1,
            4
          ],
          "cooldown": 3,
          "level": 17,
          "icon": "icons/spells-optimized/512/philemon/banqueroute.webp"
        },
        {
          "id": "heure_creuse",
          "name": "Contrôle fiscal",
          "description": "Réduit fortement les PA d'un ennemi : −3 à −4 PA pendant 1 tour.",
          "cost": 250,
          "pa": 5,
          "range": [
            1,
            4
          ],
          "cooldown": 3,
          "level": 20,
          "icon": "icons/spells-optimized/512/philemon/heure_creuse.webp"
        }
      ]
    },
    {
      "id": "aeva_id",
      "name": "Clodion",
      "role": "placeur",
      "race": "nain",
      "description": "Comptable d'entrave : bloque les paiements, alourdit les tableurs et gèle les PM adverses jusqu'à la clôture.",
      "gold": 1000,
      "pa": 7,
      "pm": 3,
      "hp": 1020,
      "initiative": 85,
      "damages": 0,
      "resistances": 12,
      "rangeBonus": 0,
      "dodge": 70,
      "lock": 24,
      "retrait": 0,
      "fuite": 0,
      "heals": 0,
      "crit": 0,
      "portrait": "/siege/media/portraits/clodion.webp",
      "spells": [
        {
          "id": "entrave_temporelle",
          "name": "Retard paiement",
          "description": "Attaque principale qui ralentit la cible — −1 PM pendant 1 tour. 75 à 95 dégâts (98 à 124 en critique).",
          "cost": 170,
          "pa": 3,
          "range": [
            1,
            4
          ],
          "cooldown": 0,
          "level": 1,
          "icon": "icons/spells-optimized/512/bertille/entrave_temporelle.webp"
        },
        {
          "id": "lance_magnetique",
          "name": "Relance facture",
          "description": "Projette sa lance et attire légèrement la cible de 1 case. 80 à 100 dégâts (104 à 130 en critique).",
          "cost": 175,
          "pa": 3,
          "range": [
            2,
            5
          ],
          "cooldown": 0,
          "level": 1,
          "icon": "icons/spells-optimized/512/bertille/lance_magnetique.webp"
        },
        {
          "id": "sape",
          "name": "Contrôle surprise",
          "description": "réduit la résistance aux retraits de la cible — −20 esquive PA/PM pendant 2 tours.",
          "cost": 140,
          "pa": 2,
          "range": [
            1,
            4
          ],
          "cooldown": 3,
          "level": 1,
          "icon": "icons/spells-optimized/512/bertille/sape.webp"
        },
        {
          "id": "cadran_de_plomb",
          "name": "Tableur lourd",
          "description": "Crée une zone de rayon 1 qui ralentit les ennemis : −1 PM au début de leur tour tant qu'ils s'y trouvent, pendant 2 tours.",
          "cost": 190,
          "pa": 3,
          "range": [
            1,
            4
          ],
          "cooldown": 2,
          "level": 2,
          "icon": "icons/spells-optimized/512/bertille/cadran_de_plomb.webp"
        },
        {
          "id": "cle_rouillee",
          "name": "Dossier incomplet",
          "description": "frappe et réduit la portée de la cible de 2 pendant 2 tours. 65 à 85 dégâts (85 à 111 en critique).",
          "cost": 180,
          "pa": 3,
          "range": [
            1,
            5
          ],
          "cooldown": 2,
          "level": 5,
          "icon": "icons/spells-optimized/512/bertille/cle_rouillee.webp"
        },
        {
          "id": "javelot_arret",
          "name": "Paiement bloqué",
          "description": "Empêche les déplacements spéciaux de la cible : Pesanteur pendant 2 tours. 110 à 135 dégâts (143 à 176 en critique).",
          "cost": 220,
          "pa": 4,
          "range": [
            2,
            5
          ],
          "cooldown": 3,
          "level": 8,
          "icon": "icons/spells-optimized/512/bertille/javelot_arret.webp"
        },
        {
          "id": "retour_de_lance",
          "name": "Rapprochement bancaire",
          "description": "La lance parcourt une ligne de 5 cases et attire d'une case chaque ennemi traversé. 90 à 115 dégâts (117 à 150 en critique) par cible.",
          "cost": 220,
          "pa": 4,
          "range": [
            1,
            5
          ],
          "cooldown": 2,
          "level": 11,
          "icon": "icons/spells-optimized/512/bertille/retour_de_lance.webp"
        },
        {
          "id": "grippage",
          "name": "Gel budgétaire",
          "description": "perturbe actions et déplacements — −1 PA et −1 PM pendant 1 tour. 55 à 75 dégâts (72 à 98 en critique).",
          "cost": 180,
          "pa": 3,
          "range": [
            1,
            4
          ],
          "cooldown": 2,
          "level": 14,
          "icon": "icons/spells-optimized/512/bertille/grippage.webp"
        },
        {
          "id": "decalage",
          "name": "Mauvaise saisie",
          "description": "Replace la cible sur la case qu'elle occupait au début de son dernier tour, si celle-ci est libre. 70 à 90 dégâts.",
          "cost": 200,
          "pa": 3,
          "range": [
            1,
            5
          ],
          "cooldown": 4,
          "level": 17,
          "icon": "icons/spells-optimized/512/bertille/decalage.webp"
        },
        {
          "id": "arret_du_temps",
          "name": "Clôture mensuelle",
          "description": "Immobilise presque totalement une cible : −4 PM pendant 1 tour et Pesanteur. 90 à 115 dégâts (117 à 150 en critique).",
          "cost": 260,
          "pa": 5,
          "range": [
            1,
            4
          ],
          "cooldown": 5,
          "level": 20,
          "icon": "icons/spells-optimized/512/bertille/arret_du_temps.webp"
        }
      ]
    },
    {
      "id": "clodion_id",
      "name": "Philémon",
      "role": "tank",
      "race": "gardien",
      "description": "Ingénieur en première ligne : monte le pare-feu, encaisse, renvoie les erreurs et coupe les bonus adverses.",
      "gold": 1000,
      "pa": 7,
      "pm": 3,
      "hp": 810,
      "initiative": 120,
      "damages": 0,
      "resistances": 5,
      "rangeBonus": 0,
      "dodge": 90,
      "lock": 10,
      "retrait": 0,
      "fuite": 0,
      "heals": 0,
      "crit": 0,
      "portrait": "/siege/media/portraits/philemon.webp",
      "spells": [
        {
          "id": "neutralisation",
          "name": "Ticket critique",
          "description": "Retire les bonus de dégâts actifs d'un ennemi et l'empêche d'en recevoir de nouveaux pendant 1 tour.",
          "cost": 190,
          "pa": 3,
          "range": [
            1,
            4
          ],
          "cooldown": 3,
          "level": 1,
          "icon": "icons/spells-optimized/512/clodion/neutralisation.webp"
        },
        {
          "id": "egide_personnelle",
          "name": "Environnement isolé",
          "description": "Accorde un bouclier de 220 à un allié pendant 1 tour.",
          "cost": 200,
          "pa": 3,
          "range": [
            0,
            4
          ],
          "cooldown": 0,
          "level": 1,
          "icon": "icons/spells-optimized/512/clodion/egide_personnelle.webp"
        },
        {
          "id": "blindage",
          "name": "Correctif sécurité",
          "description": "renforce la coque du lanceur — +20% de résistance pendant 2 tours.",
          "cost": 150,
          "pa": 2,
          "range": [
            0,
            0
          ],
          "cooldown": 4,
          "level": 1,
          "icon": "icons/spells-optimized/512/clodion/blindage.webp"
        },
        {
          "id": "dome_protecteur",
          "name": "Pare-feu collectif",
          "description": "Protège les alliés d'un cercle de rayon 1 avec un bouclier de 175 pendant 1 tour.",
          "cost": 230,
          "pa": 4,
          "range": [
            0,
            4
          ],
          "cooldown": 2,
          "level": 2,
          "icon": "icons/spells-optimized/512/clodion/dome_protecteur.webp"
        },
        {
          "id": "ancrage",
          "name": "Mode maintenance",
          "description": "fixe le lanceur au terrain (indéplaçable) et lui donne +20 tacle pendant 2 tours.",
          "cost": 190,
          "pa": 2,
          "range": [
            0,
            0
          ],
          "cooldown": 3,
          "level": 5,
          "icon": "icons/spells-optimized/512/clodion/ancrage.webp"
        },
        {
          "id": "renvoi_defensif",
          "name": "Retour erreur",
          "description": "Protège un allié avec un bouclier de 180 et renvoie 25% des dégâts subis à l'attaquant, pendant 1 tour.",
          "cost": 220,
          "pa": 3,
          "range": [
            0,
            4
          ],
          "cooldown": 3,
          "level": 8,
          "icon": "icons/spells-optimized/512/clodion/renvoi_defensif.webp"
        },
        {
          "id": "bastion_gravitationnel",
          "name": "Réseau captif",
          "description": "Zone de contrôle de rayon 2 : les ennemis présents perdent 20 de fuite et ne peuvent plus se téléporter, 2 tours.",
          "cost": 240,
          "pa": 4,
          "range": [
            1,
            4
          ],
          "cooldown": 4,
          "level": 11,
          "icon": "icons/spells-optimized/512/clodion/bastion_gravitationnel.webp"
        },
        {
          "id": "sceau_immobilite",
          "name": "Gel production",
          "description": "pose un sceau de rayon 1 qui empêche toute attraction, poussée ou échange de position dans la zone, pendant 2 tours.",
          "cost": 180,
          "pa": 2,
          "range": [
            1,
            4
          ],
          "cooldown": 3,
          "level": 14,
          "icon": "icons/spells-optimized/512/clodion/sceau_immobilite.webp"
        },
        {
          "id": "conversion",
          "name": "Recyclage système",
          "description": "Consomme le bouclier restant d'un allié et le convertit en soins à hauteur de 75% de sa valeur.",
          "cost": 190,
          "pa": 2,
          "range": [
            0,
            4
          ],
          "cooldown": 3,
          "level": 17,
          "icon": "icons/spells-optimized/512/clodion/conversion.webp"
        },
        {
          "id": "treve",
          "name": "Coupure générale",
          "description": "Impose une accalmie : TOUS les combattants infligent −50% de dégâts pendant 1 tour.",
          "cost": 270,
          "pa": 5,
          "range": [
            0,
            0
          ],
          "cooldown": 5,
          "level": 20,
          "icon": "icons/spells-optimized/512/clodion/treve.webp"
        }
      ]
    },
    {
      "id": "sylvaine_id",
      "name": "Sylvaine",
      "role": "soutien",
      "race": "elfe",
      "description": "Recruteuse de soutien : soigne l'équipe, replace chaque collègue au bon poste et glisse une clause de mobilité à l'adversaire.",
      "gold": 1000,
      "pa": 7,
      "pm": 3,
      "hp": 830,
      "initiative": 115,
      "damages": 0,
      "resistances": 4,
      "rangeBonus": 0,
      "dodge": 90,
      "lock": 4,
      "retrait": 8,
      "fuite": 4,
      "heals": 18,
      "crit": 0,
      "portrait": "/siege/media/portraits/sylvaine.webp",
      "spells": [
        {
          "id": "elan",
          "name": "Chasse active",
          "description": "Accorde +2 PM à un allié pendant 1 tour.",
          "cost": 150,
          "pa": 2,
          "range": [
            0,
            4
          ],
          "cooldown": 0,
          "level": 1,
          "icon": "icons/spells-optimized/512/sylvaine/elan.webp"
        },
        {
          "id": "souffle_sylvestre",
          "name": "Mobilité accompagnée",
          "description": "Soigne un allié et l'aide à se repositionner : 95 à 115 PV rendus (124 à 150 en critique) et +1 PM pendant 1 tour.",
          "cost": 190,
          "pa": 3,
          "range": [
            0,
            4
          ],
          "cooldown": 0,
          "level": 1,
          "icon": "icons/spells-optimized/512/sylvaine/souffle_sylvestre.webp"
        },
        {
          "id": "aube",
          "name": "Formation interne",
          "description": "améliore l'efficacité offensive d'un allié — +15% de dégâts et +1 portée pendant 2 tours.",
          "cost": 150,
          "pa": 2,
          "range": [
            0,
            4
          ],
          "cooldown": 4,
          "level": 1,
          "icon": "icons/spells-optimized/512/sylvaine/aube.webp"
        },
        {
          "id": "porte_secouru",
          "name": "Reclassement",
          "description": "Porte un allié adjacent et le dépose de l'autre côté du lanceur, jusqu'à 3 cases plus loin, sans consommer ses PM.",
          "cost": 190,
          "pa": 3,
          "range": [
            1,
            1
          ],
          "cooldown": 2,
          "level": 2,
          "icon": "icons/spells-optimized/512/sylvaine/porte_secouru.webp"
        },
        {
          "id": "valse",
          "name": "Suivi salarié",
          "description": "soigne légèrement un allié. 70 à 90 PV rendus (91 à 117 en critique).",
          "cost": 150,
          "pa": 2,
          "range": [
            0,
            4
          ],
          "cooldown": 2,
          "level": 5,
          "icon": "icons/spells-optimized/512/sylvaine/valse.webp"
        },
        {
          "id": "terrier_mouvant",
          "name": "Mobilité interne",
          "description": "Deux terriers reliés, à 1 à 5 cases : l'allié qui termine son déplacement sur l'un ressort par l'autre, une fois par ronde, 3 tours.",
          "cost": 230,
          "pa": 4,
          "range": [
            1,
            5
          ],
          "cooldown": 5,
          "level": 8,
          "icon": "icons/spells-optimized/512/sylvaine/terrier_mouvant.webp"
        },
        {
          "id": "lancer_salvateur",
          "name": "Mutation forcée",
          "description": "Projette l'unité adjacente au lanceur sur une case libre à 2 à 5 cases. Un ennemi ainsi projeté subit 60 à 80 dégâts.",
          "cost": 200,
          "pa": 3,
          "range": [
            2,
            5
          ],
          "cooldown": 2,
          "level": 11,
          "icon": "icons/spells-optimized/512/sylvaine/lancer_salvateur.webp"
        },
        {
          "id": "engramme",
          "name": "Entretien annuel",
          "description": "retire les états négatifs d'un allié et lui donne +10 esquive PA/PM pendant 1 tour.",
          "cost": 160,
          "pa": 3,
          "range": [
            0,
            4
          ],
          "cooldown": 3,
          "level": 14,
          "icon": "icons/spells-optimized/512/sylvaine/engramme.webp"
        },
        {
          "id": "venin_des_sentiers",
          "name": "Clause mobilité",
          "description": "Empoisonne un adversaire : 22 dégâts par PM dépensé à son prochain tour, maximum 132. Les déplacements forcés sont exclus.",
          "cost": 210,
          "pa": 3,
          "range": [
            1,
            6
          ],
          "cooldown": 3,
          "level": 17,
          "icon": "icons/spells-optimized/512/sylvaine/venin_des_sentiers.webp"
        },
        {
          "id": "grand_convoyage",
          "name": "Onboarding collectif",
          "description": "Désigne une zone de rayon 2 à 1 à 6 cases et rapproche chaque allié d'une case de son centre, si une case valide est disponible.",
          "cost": 250,
          "pa": 5,
          "range": [
            1,
            6
          ],
          "cooldown": 5,
          "level": 20,
          "icon": "icons/spells-optimized/512/sylvaine/grand_convoyage.webp"
        }
      ]
    },
    {
      "id": "solal_id",
      "name": "Bertille",
      "role": "tank",
      "race": "gardien",
      "description": "Technicienne en première ligne : attire les ennemis à elle, intercepte les coups destinés aux collègues et durcit à mesure qu'elle encaisse.",
      "gold": 1000,
      "pa": 7,
      "pm": 3,
      "hp": 1040,
      "initiative": 80,
      "damages": 0,
      "resistances": 14,
      "rangeBonus": 0,
      "dodge": 65,
      "lock": 24,
      "retrait": 0,
      "fuite": 0,
      "heals": 0,
      "crit": 0,
      "portrait": "/siege/media/portraits/bertille.webp",
      "spells": [
        {
          "id": "poigne_mecanique",
          "name": "Retour atelier",
          "description": "Attire un ennemi de 2 cases vers Bertille. 65 à 85 dégâts (85 à 111 en critique).",
          "cost": 175,
          "pa": 3,
          "range": [
            2,
            5
          ],
          "cooldown": 0,
          "level": 1,
          "icon": "icons/spells-optimized/512/solal/poigne_mecanique.webp"
        },
        {
          "id": "magnetisation",
          "name": "Connexion filaire",
          "description": "Attire la cible de 2 cases et 55 à 75 dégâts. Pendant 1 tour, si elle s'éloigne à plus de 2 cases, elle est ramenée d'une case.",
          "cost": 190,
          "pa": 3,
          "range": [
            2,
            5
          ],
          "cooldown": 2,
          "level": 1,
          "icon": "icons/spells-optimized/512/solal/magnetisation.webp"
        },
        {
          "id": "blindage",
          "name": "Correctif sécurité",
          "description": "renforce la coque du lanceur — +20% de résistance pendant 2 tours.",
          "cost": 150,
          "pa": 2,
          "range": [
            0,
            0
          ],
          "cooldown": 4,
          "level": 1,
          "icon": "icons/spells-optimized/512/solal/blindage.webp"
        },
        {
          "id": "plaquage",
          "name": "Intervention terrain",
          "description": "Bertille fonce au contact d'un ennemi et le verrouille : −1 PM et −20 fuite pendant 1 tour. 75 à 95 dégâts (98 à 124 en critique).",
          "cost": 200,
          "pa": 3,
          "range": [
            2,
            4
          ],
          "cooldown": 0,
          "level": 2,
          "icon": "icons/spells-optimized/512/solal/plaquage.webp"
        },
        {
          "id": "ancrage",
          "name": "Mode maintenance",
          "description": "fixe le lanceur au terrain (indéplaçable) et lui donne +20 tacle pendant 2 tours.",
          "cost": 190,
          "pa": 2,
          "range": [
            0,
            0
          ],
          "cooldown": 3,
          "level": 5,
          "icon": "icons/spells-optimized/512/solal/ancrage.webp"
        },
        {
          "id": "transfert_de_coque",
          "name": "Mutualisation",
          "description": "Bertille intercepte 50% des dégâts directs subis par ses alliés situés dans un cercle de rayon 2 autour d'elle, pendant 1 tour.",
          "cost": 220,
          "pa": 3,
          "range": [
            0,
            0
          ],
          "cooldown": 3,
          "level": 8,
          "icon": "icons/spells-optimized/512/solal/transfert_de_coque.webp"
        },
        {
          "id": "retour_force",
          "name": "Réunion urgente",
          "description": "Attire d'une case tous les ennemis d'un cercle de rayon 3 autour de Bertille. 55 à 75 dégâts (72 à 98 en critique) par cible.",
          "cost": 230,
          "pa": 4,
          "range": [
            0,
            0
          ],
          "cooldown": 2,
          "level": 11,
          "icon": "icons/spells-optimized/512/solal/retour_force.webp"
        },
        {
          "id": "provocation",
          "name": "Ticket critique",
          "description": "la cible inflige −20% de dégâts à tout personnage AUTRE que le lanceur, pendant 2 tours.",
          "cost": 170,
          "pa": 2,
          "range": [
            1,
            4
          ],
          "cooldown": 3,
          "level": 14,
          "icon": "icons/spells-optimized/512/solal/provocation.webp"
        },
        {
          "id": "surcharge_protectrice",
          "name": "Heures supplémentaires",
          "description": "Plus Bertille est blessée, plus elle devient résistante : +10% de résistance par tranche de 25% de PV manquants, pendant 2 tours.",
          "cost": 210,
          "pa": 3,
          "range": [
            0,
            0
          ],
          "cooldown": 4,
          "level": 17,
          "icon": "icons/spells-optimized/512/solal/surcharge_protectrice.webp"
        },
        {
          "id": "sacrifice_integral",
          "name": "Prise en charge",
          "description": "Bertille intercepte 100% des dégâts directs destinés à un allié, où qu'il se trouve sur le terrain, pendant 1 tour.",
          "cost": 270,
          "pa": 5,
          "range": [
            0,
            0
          ],
          "cooldown": 5,
          "level": 20,
          "icon": "icons/spells-optimized/512/solal/sacrifice_integral.webp"
        }
      ]
    },
    {
      "id": "aliocha_id",
      "name": "Aliocha",
      "role": "soutien",
      "race": "elfe",
      "description": "Formateur de soutien : distribue des PA, remet les collègues sur pied et transforme chaque tour en séminaire intensif.",
      "gold": 1000,
      "pa": 7,
      "pm": 4,
      "hp": 740,
      "initiative": 180,
      "damages": 8,
      "resistances": 0,
      "rangeBonus": 1,
      "dodge": 120,
      "lock": 0,
      "retrait": 10,
      "fuite": 16,
      "heals": 0,
      "crit": 5,
      "portrait": "/siege/media/portraits/aliocha.webp",
      "spells": [
        {
          "id": "stimulant",
          "name": "Module express",
          "description": "Accorde immédiatement +2 PA à un allié, pendant 3 tours.",
          "cost": 150,
          "pa": 2,
          "range": [
            0,
            4
          ],
          "cooldown": 0,
          "level": 1,
          "icon": "icons/spells-optimized/512/aliocha/stimulant.webp"
        },
        {
          "id": "mot_revigorant",
          "name": "Encouragement",
          "description": "Soin principal répétable : 105 à 125 PV rendus (137 à 163 en critique).",
          "cost": 200,
          "pa": 3,
          "range": [
            0,
            4
          ],
          "cooldown": 0,
          "level": 1,
          "icon": "icons/spells-optimized/512/aliocha/mot_revigorant.webp"
        },
        {
          "id": "aube",
          "name": "Formation interne",
          "description": "améliore l'efficacité offensive d'un allié — +15% de dégâts et +1 portée pendant 2 tours.",
          "cost": 150,
          "pa": 2,
          "range": [
            0,
            4
          ],
          "cooldown": 4,
          "level": 1,
          "icon": "icons/spells-optimized/512/aliocha/aube.webp"
        },
        {
          "id": "coup_de_chance",
          "name": "Quiz surprise",
          "description": "Accorde un bonus aléatoire de PA à un allié : 50% +1 PA, 35% +2 PA, 15% +3 PA, pendant 1 tour.",
          "cost": 170,
          "pa": 2,
          "range": [
            0,
            4
          ],
          "cooldown": 2,
          "level": 2,
          "icon": "icons/spells-optimized/512/aliocha/coup_de_chance.webp"
        },
        {
          "id": "valse",
          "name": "Suivi salarié",
          "description": "soigne légèrement un allié. 70 à 90 PV rendus (91 à 117 en critique).",
          "cost": 150,
          "pa": 2,
          "range": [
            0,
            4
          ],
          "cooldown": 2,
          "level": 5,
          "icon": "icons/spells-optimized/512/aliocha/valse.webp"
        },
        {
          "id": "redistribution",
          "name": "Tutorat",
          "description": "Transfère jusqu'à 3 des PA restants d'Aliocha à un allié, pour son tour.",
          "cost": 190,
          "pa": 2,
          "range": [
            0,
            4
          ],
          "cooldown": 3,
          "level": 8,
          "icon": "icons/spells-optimized/512/aliocha/redistribution.webp"
        },
        {
          "id": "mot_economie",
          "name": "Astuce métier",
          "description": "Réduit le coût du prochain sort d'un allié de 2 PA, sans jamais descendre sous 1 PA.",
          "cost": 200,
          "pa": 3,
          "range": [
            0,
            4
          ],
          "cooldown": 3,
          "level": 11,
          "icon": "icons/spells-optimized/512/aliocha/mot_economie.webp"
        },
        {
          "id": "engramme",
          "name": "Entretien annuel",
          "description": "retire les états négatifs d'un allié et lui donne +10 esquive PA/PM pendant 1 tour.",
          "cost": 160,
          "pa": 3,
          "range": [
            0,
            4
          ],
          "cooldown": 3,
          "level": 14,
          "icon": "icons/spells-optimized/512/aliocha/engramme.webp"
        },
        {
          "id": "relance_heureuse",
          "name": "Rattrapage",
          "description": "Réduit de 2 tours la recharge du dernier sort utilisé par un allié.",
          "cost": 230,
          "pa": 4,
          "range": [
            0,
            4
          ],
          "cooldown": 4,
          "level": 17,
          "icon": "icons/spells-optimized/512/aliocha/relance_heureuse.webp"
        },
        {
          "id": "tour_miraculeux",
          "name": "Séminaire intensif",
          "description": "Offre +2 PA à TOUS les alliés pendant 1 tour, où qu'ils se trouvent.",
          "cost": 260,
          "pa": 5,
          "range": [
            0,
            0
          ],
          "cooldown": 5,
          "level": 20,
          "icon": "icons/spells-optimized/512/aliocha/tour_miraculeux.webp"
        }
      ]
    }
  ],
  "items": [
    {
      "id": "osses_anneau_rare",
      "name": "Anneau Osses",
      "slot": "ring",
      "rarity": "Rare",
      "cost": 150,
      "description": "Offensive mobile à moyenne et longue portée.",
      "stats": {
        "damages": 1.5,
        "crit": 1.5,
        "initiative": 20
      },
      "icon": "icons/items/osses_anneau_rare.png"
    },
    {
      "id": "osses_amulette_rare",
      "name": "Amulette Osses",
      "slot": "amulet",
      "rarity": "Rare",
      "cost": 150,
      "description": "Offensive mobile à moyenne et longue portée.",
      "stats": {
        "damages": 1.5,
        "rangeBonus": 1,
        "initiative": 20
      },
      "icon": "icons/items/osses_amulette_rare.png"
    },
    {
      "id": "osses_chapeau_rare",
      "name": "Chapeau Osses",
      "slot": "hat",
      "rarity": "Rare",
      "cost": 150,
      "description": "Offensive mobile à moyenne et longue portée.",
      "stats": {
        "crit": 1.5,
        "dodge": 3,
        "hp": 25
      },
      "icon": "icons/items/osses_chapeau_rare.png"
    },
    {
      "id": "osses_cape_rare",
      "name": "Cape Osses",
      "slot": "cape",
      "rarity": "Rare",
      "cost": 150,
      "description": "Offensive mobile à moyenne et longue portée.",
      "stats": {
        "fuite": 3,
        "rangeBonus": 1,
        "initiative": 20
      },
      "icon": "icons/items/osses_cape_rare.png"
    }
  ]
}
