feat(conditions): add blinded/invisible/helpless/fascinated combat rules
This commit is contained in:
@@ -592,12 +592,29 @@ Règles modélisées :
|
||||
chemin de la RD. La résistance énergétique s'applique au dégât final (même étape
|
||||
que la RD), y compris aux dégâts de sorts et aux composantes énergétiques des
|
||||
armes.
|
||||
- Concealment (chance de rater) : les conditions `blurred` (20 %, sort flou) et
|
||||
`displaced` (50 %, concealment total) portent un champ `miss_chance` ; quand la
|
||||
- Concealment (chance de rater) : les conditions `blurred` (20 %, sort flou),
|
||||
`displaced` (50 %, concealment total) et `invisible` (50 %, concealment total)
|
||||
portent un champ `miss_chance` ; quand la
|
||||
cible en porte une, après la touche et la confirmation de critique, le moteur
|
||||
tire un d100 : si `d100 ≤ miss_chance`, l'attaque rate complètement (aucun
|
||||
dégât, pas de critique, deed non consommé — journalisé « concealment »). Une
|
||||
cible avec concealment ne peut pas être la victime d'une attaque sournoise.
|
||||
Attaquant aveugle (V5a) : un attaquant portant `blinded` considère tous ses
|
||||
adversaires comme ayant un concealment total — le même jet unique de d100 est
|
||||
tiré avec `miss_chance = max(concealment de la cible, 50)` et journalisé
|
||||
« attacker blinded » ; l'attaque peut donc rater même contre une cible sans
|
||||
concealment.
|
||||
- Attaquant invisible (V5a) : un attaquant portant `invisible` gagne **+2 à ses
|
||||
jets d'attaque et de confirmation de critique** et sa cible **perd son bonus
|
||||
de Dextérité à la CA** (même chemin `denies_dex_to_ac` que flat-footed/course).
|
||||
L'invisibilité est symétrique : subi comme cible, la condition accorde le
|
||||
concealment total de 50 % ci-dessus.
|
||||
- Cible inerme (helpless, V5a) : les attaques de **mêlée** contre une cible
|
||||
`helpless` gagnent **+4 au jet d'attaque et à la confirmation** (aucun bonus à
|
||||
distance) ; `helpless` porte `denies_dex_to_ac` (CA flat-footed) + `cant_act`.
|
||||
Simplification documentée : l'attaque sournoise automatique du roublard sur
|
||||
cible inerme n'est pas modélisée (la cible, privée de Dextérité, la déclenche
|
||||
déjà via le chemin `denies_dex_to_ac`).
|
||||
- Attaque sournoise : un combattant avec la capacité « Sneak Attack » inflige des
|
||||
d6 de dégâts de précision ((niveau + 1) // 2 dés : 1d6 au niveau 1, 2d6 au
|
||||
niveau 3…) si la cible est flanquée (attaque de mêlée uniquement) ou privée de
|
||||
@@ -619,15 +636,20 @@ Règles modélisées :
|
||||
- Invocation : les créatures invoquées agissent (calées sur la case d'initiative de
|
||||
leur conjurateur via `_build_round_order`) puis expirent après leur `summon_duration`
|
||||
(`_expire_summons` décrémente puis retire).
|
||||
- Conditions effectives : 23 conditions prédéfinies (`conditions.py`). Leurs drapeaux
|
||||
- Conditions effectives : 26 conditions prédéfinies (`conditions.py`). Leurs drapeaux
|
||||
comportementaux sont appliqués par le moteur : `cant_act` (étourdi, paralysé, dazed,
|
||||
endormi) annule le tour ; `cant_attack` (nauséeux) n'autorise qu'une unique action
|
||||
endormi, inerme, fasciné) annule le tour ; `cant_attack` (nauséeux) n'autorise qu'une unique action
|
||||
simple et bloque toute attaque / manœuvre ; `staggered` restreint à une action
|
||||
simple (pas d'attaque à outrance) ; `cant_move` bloque le déplacement ;
|
||||
`denies_dex_to_ac` (à plat ventre, paralysé…) fait perdre le bonus de Dextérité à
|
||||
la CA (CA flat-footed) ; `miss_chance` (flou 20 %, déplacement 50 %) impose la
|
||||
la CA (CA flat-footed) ; `miss_chance` (flou 20 %, déplacement 50 %, invisible
|
||||
50 %) impose la
|
||||
chance de rater du concealment. À plat ventre : −4 CA et −4 aux attaques à distance.
|
||||
Agrippé : −4 Dextérité, −2 attaque/CA/Réflexes, sans déplacement ni AoO.
|
||||
Inerme (`helpless`) : ne peut pas agir, perd sa Dextérité à la CA, +4 en mêlée
|
||||
contre lui (voir « Cible inerme »). Fasciné (`fascinated`) : ne peut pas agir.
|
||||
Invisible (`invisible`) : concealment total subi +2 attaquant / perte de Dex
|
||||
de la cible (voir « Attaquant invisible »).
|
||||
- Manœuvres de combat : trip, disarm, bull_rush, sunder, grapple, escape,
|
||||
overrun, dirty trick, steal, reposition et drag sont modélisées, chacune
|
||||
comme une tentative unique (1d20 + CMB contre CMD) :
|
||||
@@ -759,7 +781,7 @@ Règles modélisées :
|
||||
case de leur conjurateur),
|
||||
terrain_semantics (un dict par type de terrain : type, move_cost,
|
||||
blocks_los, cover, cover_bonus), condition_definitions (C2 : tuple trié de (nom,
|
||||
{mods, flags, speed_mult, miss_chance}) — définitions complètes des 23
|
||||
{mods, flags, speed_mult, miss_chance}) — définitions complètes des 26
|
||||
conditions de CONDITIONS_BY_NAME pour que la LLM interprète les drapeaux,
|
||||
les modificateurs et les chances de rater (concealment)).
|
||||
Les helpers publics du moteur (L5) sont désormais embarqués EN DONNÉES dans
|
||||
@@ -819,10 +841,11 @@ la lecture mais non appliquée dans la résolution.
|
||||
enhancement…) gardent la valeur la plus élevée. Les pénalités suivent les
|
||||
mêmes règles. Fondation pour sorts, conditions, dons et capacités de classe.
|
||||
- `conditions.py` — conditions PF1e : `Condition` (dataclass avec
|
||||
modificateurs + flags comportementaux + `miss_chance`) et 23 conditions prédéfinies
|
||||
modificateurs + flags comportementaux + `miss_chance`) et 26 conditions prédéfinies
|
||||
(shaken, sickened, fatigued, exhausted, entangled, dazzled, blinded,
|
||||
deafened, flat-footed, prone, stunned, paralyzed, nauseated, dazed,
|
||||
staggered, frightened, panicked, cowering). Les modificateurs sont intégrés
|
||||
staggered, frightened, panicked, cowering, helpless, fascinated, invisible).
|
||||
Les modificateurs sont intégrés
|
||||
à `resolve_attack` (attaque, dégâts, CA) et `resolve_save` (jets de
|
||||
sauvegarde) via `_stat_modifiers` qui collecte effets + conditions ; les
|
||||
drapeaux comportementaux (`cant_act`, `cant_attack`, `cant_move`, staggered,
|
||||
|
||||
Reference in New Issue
Block a user