fix(rules): README sync for the area-of-effect line-of-effect fixes - line truncation at barriers, cone/burst LoE from the origin, terrain cover Reflex half-bonus (SRD aiming-a-spell.md, cover.md); areas.py architecture entry updated
This commit is contained in:
@@ -1108,10 +1108,29 @@ Règles modélisées :
|
||||
jeteur et n'affecte **pas** sa propre case (CRB « Aiming a Spell » : « It
|
||||
starts from any corner of your square » — SRD Lightning Bolt : « The bolt
|
||||
begins at your fingertips », le trait quitte la case du jeteur au lieu de la
|
||||
remplir ; un viseur dégénéré origine==cible n'affecte personne). Toute
|
||||
remplir ; un viseur dégénéré origine==cible n'affecte personne). **Ligne
|
||||
d'effet des zones** (SRD « Aiming a Spell — Line of Effect ») : la **ligne**
|
||||
s'arrête à la première case qui bloque la ligne d'effet (« extends to the
|
||||
limit of its range or until it strikes a barrier that blocks line of
|
||||
effect ») — la case-barrière est la dernière du gabarit, rien au-delà ;
|
||||
le **cône** exclut toute case sans ligne d'effet depuis sa case d'origine
|
||||
(« a cone... affects only an area, creature, or object to which it has
|
||||
line of effect from its origin ») ; le **burst** n'affecte aucune créature
|
||||
en couvert total depuis son centre (« It can't affect creatures with total
|
||||
cover from its point of origin (in other words, its effects don't extend
|
||||
around corners) »). Toute
|
||||
créature dont une case occupée intersecte
|
||||
le gabarit subit l'effet, avec sauvegarde et RS par créature comme pour un
|
||||
burst (application partagée, géométrie dans `areas.py`). Le snapshot
|
||||
burst (application partagée, géométrie dans `areas.py`). **Couvert et
|
||||
sauvegardes de Réflexes** (SRD « Cover and Reflex Saves ») : une créature
|
||||
dans la zone qui a du couvert **terrain** entre elle et le point d'origine
|
||||
de l'effet (centre du burst, case du jeteur pour cône/ligne) ajoute à son
|
||||
jet de Réflexes la moitié de son bonus de couvert CA (+1 partiel / +2
|
||||
standard / +4 amélioré) ; le couvert mou des créatures n'accorde **aucun**
|
||||
bonus de sauvegarde (SRD « Soft Cover »). Simplification documentée : la
|
||||
sauvegarde primaire de la cible résolue, jetée sur le chemin générique des
|
||||
sorts avant la résolution de la zone, ne rejoue pas ce bonus (nul pour un
|
||||
burst centré sur la cible, l'origine étant sa propre case). Le snapshot
|
||||
d'observation expose `{shape, radius_ft}` via la clé `area`.
|
||||
Un `DamageEffect` peut déclarer `"scaling": {"dice": "1d6", "per_levels": 1,
|
||||
"max_dice": 10}` (dés par niveau — Fireball/Lightning Bolt « 1d6 per caster
|
||||
@@ -1773,9 +1792,12 @@ Limites de sorts (conformance D6-D9, documentées plutôt que bricolées) :
|
||||
`cover_bonus`, +4 couvert mou des créatures) dans `resolve_attack`.
|
||||
- `areas.py` — géométrie des gabarits de zone cône et ligne (CRB « Magic —
|
||||
Aiming a Spell ») : `cone_cells` (quart de cercle de 90°, test d'angle ±45°
|
||||
en arithmétique entière exacte, case d'origine exclue) et `line_cells`
|
||||
(raie de Bresenham de 5 ft de large, longue de `radius_ft`, partant de la
|
||||
case du jeteur). Les bursts restent gérés par `_creatures_in_range`.
|
||||
en arithmétique entière exacte, case d'origine exclue, cases sans ligne
|
||||
d'effet depuis l'origine exclues via `los.has_line_of_effect`) et
|
||||
`line_cells` (raie de Bresenham de 5 ft de large, longue de `radius_ft`,
|
||||
partant de la case du jeteur, tronquée à la première case `blocks_los`).
|
||||
Les bursts restent gérés par `_area_creatures` (filtrés par ligne d'effet
|
||||
depuis le centre).
|
||||
- `combat.py` — `CombatEngine` déterministe : initiative, actions, résolution
|
||||
des attaques (couvert, ligne d'effet, pénalités de portée, CA de contact
|
||||
pour les attaques touch et firearms), tailles et allonges (occupation
|
||||
|
||||
Reference in New Issue
Block a user