# Tags de statuts restant à mapper — CSF (game_id=0) + NS (game_id=3)

**73 patterns distincts** encore non pris en charge par `StatusTagEvaluator`,
regroupés par niveau d'effort. `N` = valeur numérique variable dans le pattern
normalisé. Compteurs = occurrences réelles dans le corpus.

---

## Catégorie 1 — Bien cadrés (parsable sans input utilisateur)

Format Yanfly standard, sémantique documentée ou déductible du nom.

### Skill triggers (4 patterns)

| Pattern | CSF | NS | Sémantique |
|---|---:|---:|---|
| `<end turn skill: N, forced>` | 11 | 10 | Lance le skill #N en fin de tour (forcé) |
| `<end turn skill: N, chance: N>` | 1 | 2 | Lance le skill #N en fin de tour à N% de chance |
| `<end action skill: N>` | 3 | 1 | Lance le skill #N après une action du porteur |
| `<end action skill: N, forced>` | 3 | 12 | Idem, forcé |

Ex. CSF *Carapiège* → `<end turn skill: 948, forced>`, NS *Cadeau* → `<end turn skill: 225, chance: 35>`

### close effect : slip damage/heal par stat (14 patterns)

Slip = tick de fin de tour Yanfly. Formule type : `dmg = attackerStat × N%`.

| Pattern | CSF | NS |
|---|---:|---:|
| `<close effect: atk slip damage N%>` | 5 | 2 |
| `<close effect: atk slip heal N%>` | 1 | 0 |
| `<close effect: def slip damage N%>` | 2 | 2 |
| `<close effect: def slip def N%>` | 1 | 0 |
| `<close effect: def slip heal N%>` | 4 | 0 |
| `<close effect: mat slip damage N%>` | 2 | 3 |
| `<close effect: mdf slip damage N%>` | 0 | 2 |
| `<close effect: mdf slip heal N%>` | 1 | 0 |
| `<close effect: luk slip damage N%>` | 1 | 1 |
| `<close effect: luk slip heal N%>` | 1 | 0 |
| `<close effect: vit slip damage N%>` | 0 | 1 |
| `<close effect: agi slip heal N%>` | 1 | 0 |
| `<close effect: maxhp slip heal N%>` | 1 | 0 |
| `<close effect: maxmp slip heal N%>` | 3 | 0 |

Ex. CSF *Brûlure héroïque* → `<close effect: atk slip damage 400%>`

### Effets divers formulaires (3 patterns)

| Pattern | CSF | NS | Sémantique |
|---|---:|---:|---|
| `<timed: N>` | 5 | 8 | Durée custom du statut (frames ou tours ?) |
| `<eff: mana_shield N>` | 1 | 0 | Bouclier PV via EG, N = fraction (ex. 0.5 = 50%) |
| `<eff: share_the_pain N>` | 0 | 2 | Partage N × dégâts entre porteurs |

**Sous-total catégorie 1 : 21 patterns**

---

## Catégorie 2 — Named parametric (sémantique par nom à confirmer)

Nom identifie un effet custom Ruby avec paramètre, chaque nom a sa propre formule.

### close effect : effets nommés paramétrés (6 patterns)

| Pattern | Occ. | Ex. |
|---|---:|---|
| `<close effect: antique N%>` | CSF=1 | *Antique* → 100% |
| `<close effect: dolba N%>` | CSF=1 | *Abzodolba* → 100% |
| `<close effect: quasar N%>` | CSF=1 | *Quasar filant* → 50% |
| `<close effect: scruteur N%>` | CSF=1 | *Scruteur* → 100% |
| `<close effect: hp idole N%>` | NS=4 | *Calice souillé* → 12%, *Mandragore* → 5% |
| `<close effect: mp idole N%>` | NS=3 | *Chandelier doré* → 5%, *Jarre de libation* → 8% |

### begin effect : début de tour (6 patterns — CSF uniquement)

| Pattern | Occ. | Ex. |
|---|---:|---|
| `<begin effect: antique N%>` | 1 | *Oeil antique* → 50% |
| `<begin effect: banner N%>` | 1 | *BannièreChampion* → 50% |
| `<begin effect: champion N%>` | 1 | *Champion* → 50% |
| `<begin effect: induct N%>` | 2 | *Telluromgnt.* → 33%, 70% |
| `<begin effect: turbo N%>` | 1 | *Turbo* → 100% |
| `<begin effect: visage N%>` | 1 | *Horrible visage* → 33% |

### react effect : sur dégât reçu (6 patterns parametric)

| Pattern | CSF | NS | Sémantique probable |
|---|---:|---:|---|
| `<react effect: persist N%>` | 5 | 7 | Persiste au K.O. avec N% PV restants |
| `<react effect: damage barrier N%>` | 6 | 0 | Barrière absorbant les N premiers % de dégâts |
| `<react effect: damage block N>` | 0 | 3 | Bloque N dégâts fixes (valeur négative = seuil ?) |
| `<react effect: damage cut N%>` | 0 | 2 | Réduit dégâts de N% (ex. -34%) |
| `<react effect: damage shelter N%>` | 0 | 1 | Abri (probablement mitigation totale ≤ N%) |
| `<react effect: heal boost N%>` | 1 | 0 | Amplifie soins reçus de N% |

### shock effect : sur choc (2 patterns parametric)

| Pattern | CSF | NS |
|---|---:|---:|
| `<shock effect: drain hp N%>` | 1 | 0 |
| `<shock effect: drain mp N%>` | 1 | 0 |

Ex. CSF *Rocambolesque* → drain hp 200% + drain mp 200%

### while effect : passif continu (3 patterns parametric)

| Pattern | CSF | NS |
|---|---:|---:|
| `<while effect: physical backfire maxhp N%>` | 9 | 0 |
| `<while effect: physical backfire atk N%>` | 1 | 0 |
| `<while effect: vita N%>` | 1 | 0 |

Ex. CSF *Chaotique* → `<while effect: physical backfire maxhp 15%…50%>`

**Sous-total catégorie 2 : 23 patterns**

---

## Catégorie 3 — Named simple (Ruby custom, aucune param)

Callbacks Ruby purs : le nom est l'identifiant d'une fonction custom dans le
script du jeu. Sémantique à décrire au cas par cas.

### close effect : nommés simples (18 patterns)

**CSF (14)** : `chrono`, `entropy`, `mother`, `napalm`, `nihil`, `pool`,
`poudre`, `random`, `shrapnel`, `sournois`, `stress`, `strych`, `venomheal`, `zen`

**NS (4)** : `bluetearstone`, `redtearstone`, `influence`, `jack`

### react effect : nommés simples (2 patterns)

- `<react effect: siphon>` — CSF *Siphon*
- `<react effect: undead hp>` — CSF *Novembre*, *Soinverse* — NS 1 statut

### shock effect : nommés simples (5 patterns)

- `<shock effect: carapace>` — CSF *Carapace (persiste)*
- `<shock effect: caratrap>` — CSF *Carapiège*
- `<shock effect: bluetearstone>` — NS *Brochelarme bleue*
- `<shock effect: redtearstone>` — NS *Brochelarme rouge*
- `<shock effect: defaitiste>` — NS *Défaitiste passif*

### while effect : nommés simples (4 patterns — NS uniquement)

- `<while effect: atout>` — NS *DD*
- `<while effect: canonl>` — NS *Michel* (Canons de Lumière)
- `<while effect: canonp>` — NS *Michel* (Canons de Pureté)
- `<while effect: influence>` — NS *Disciple*, *Influence Allié*

**Sous-total catégorie 3 : 29 patterns nommés simples**

---

## Bilan

| Catégorie | Patterns | Effort | Ordre suggéré |
|---|---:|---|---|
| **1 — Bien cadrés** | 21 | Faible, sémantique claire | ✅ **À faire en premier** |
| **2 — Named parametric** | 23 | Moyen — confirmer sémantique par nom | Après |
| **3 — Named simple** | 29 | Élevé — chaque nom = fonction Ruby dédiée | Dernier |
| **Total** | **73** | | |

### Reco d'ordre d'attaque

1. **Skill triggers** (4 patterns) — bien cadré, sémantique Yanfly standard.
2. **close effect : slip damage/heal par stat** (14 patterns) — famille homogène, formule commune `dmg = attackerStat × N%`.
3. **`timed:`, `eff: mana_shield`, `eff: share_the_pain`** (3 patterns).
4. **react effect parametric** (6 patterns) — bien cadré, on peut avancer.
5. **while effect parametric** (3 patterns) — `physical backfire` a une sémantique claire.
6. **shock effect: drain hp/mp** (2 patterns).
7. **begin effect nommés** (6 patterns) — nécessite ton input sur `antique`, `banner`, `champion`, `induct`, `turbo`, `visage`.
8. **close effect nommés paramétrés** (6 patterns).
9. **Named simple** (29 patterns) — reste pour la fin, à discuter un par un.
