feat(combat): apply flanking +2 bonus when ally threatens opposite side
- _flanking_bonus checks for an active same-side ally with a melee weapon at the position diametrically opposite the attacker through the target. - +2 applies to melee attack rolls and crit-confirm rolls; ranged attacks ignore flanking; allies without melee weapons don't threaten. - AttackResult gains flank_bonus field; transcript shows '+2(flank)' when active. - 6 new tests: opposite ally grants +2, no ally = no bonus, ranged ignores flanking, diagonal flanking, downed ally doesn't flank, enemy on opposite side doesn't flank. - README and module docstring updated; test count 196 -> 202.
This commit is contained in:
@@ -291,6 +291,10 @@ Règles modélisées :
|
||||
confirmation de critique ; couvert mou : une créature active entre
|
||||
l'attaquant et la cible octroie aussi +4 CA aux attaques à distance (les
|
||||
attaques de mêlée ignorent les créatures).
|
||||
- Flanquement : +2 au jet d'attaque de mêlée si un allié actif (doté d'une arme
|
||||
de mêlée) menace la cible depuis la bordure ou le coin opposé. Les attaques à
|
||||
distance ignorent le flanquement ; un allié désarmé ou à distance ne compte
|
||||
pas pour le flanquement.
|
||||
- Distance : pénalité cumulative de −2 par incrément de portée complet au-delà
|
||||
du premier, appliquée au jet d'attaque et à la confirmation de critique ;
|
||||
l'arme ranged reste utilisable jusqu'à 10 incréments. Les armes de jet
|
||||
@@ -300,7 +304,7 @@ Non modélisé en Phase 0 (couches `elevation`/`markers` présentes mais non
|
||||
appliquées dans la résolution) :
|
||||
|
||||
- Sorts, jets de sauvegarde, conditions et états.
|
||||
- Attaques d'opportunité, flanquement, manœuvres de combat.
|
||||
- Attaques d'opportunité, manœuvres de combat.
|
||||
- Effets mécaniques de hauteur/élévation.
|
||||
- Tailles Large+ (2×2), allonge > 5 ft, itératifs de BAB, actions spéciales
|
||||
(attaque à outrance, charge, pas de placement, retraite) et actions
|
||||
@@ -338,7 +342,7 @@ appliquées dans la résolution) :
|
||||
La gate de validation complète (tests + lint + types) :
|
||||
|
||||
```bash
|
||||
uv run pytest -q # 196 tests
|
||||
uv run pytest -q # 202 tests
|
||||
uv run ruff check src tests
|
||||
uv run basedpyright src # mode strict
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user