fix(rules): self-centered bursts for bless and bane - AreaEffect gains a data-driven 'centered_on_caster' flag (bless.json/bane.json set it per SRD bless.md '50-ft. burst, centered on the caster' and bane.md 'centered on you'); the burst origin is the caster's square regardless of the resolved target or a U7b target_pos, and with no chosen origin there is no primary save - every creature in the area rolls its own (mirror of the point-cast path); snapshot area key exposes centered_on_caster; golden transcript unchanged; +6 tests
This commit is contained in:
@@ -1170,7 +1170,14 @@ Règles modélisées :
|
||||
- Formes de zone (S1a) et scalage par niveau d'incanteur (S1b) :
|
||||
`AreaEffect.shape` vaut `burst` (défaut), `cone` ou `line` (CRB « Magic —
|
||||
Aiming a Spell »). Le **burst** reste un cercle centré sur la case résolue
|
||||
(cible ou `target_pos`, U7b). Le **cône** (90° — « a quarter-circle », la
|
||||
(cible ou `target_pos`, U7b) — **sauf** si l'`AreaEffect` déclare
|
||||
`"centered_on_caster": true` : le point d'origine est alors **la case du
|
||||
jeteur**, quel que soit la cible résolue ou le `target_pos` (SRD
|
||||
spells/bless.md : « The caster and all allies within a 50-ft. burst,
|
||||
centered on the caster » ; spells/bane.md : « 50-ft.-radius burst, centered
|
||||
on you ») ; faute de cible primaire désignée, la sauvegarde primaire est
|
||||
sautée et **chaque** créature de la zone jette la sienne (comme au
|
||||
point-cast U7b). `bless.json` et `bane.json` portent le drapeau.. Le **cône** (90° — « a quarter-circle », la
|
||||
largeur valant la longueur à chaque distance) et la **ligne** (5 ft de large,
|
||||
longueur = `radius_ft`) partent de la **case du jeteur** et sont pointés
|
||||
vers la cible résolue (`target_id`) ou le point désigné (`target_pos`) — le
|
||||
@@ -1201,7 +1208,7 @@ Règles modélisées :
|
||||
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`.
|
||||
d'observation expose `{shape, radius_ft, centered_on_caster}` 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
|
||||
level (maximum 10d6) », Burning Hands « 1d4 per level (maximum 5d4) »,
|
||||
@@ -1672,7 +1679,7 @@ Règles modélisées :
|
||||
spells (résumés enrichis du registre : name, level, school, range_ft,
|
||||
save, dc, summary, half_on_save, save_negates (E4), harmless (sort «
|
||||
(harmless) » du SRD — sauvegarde sautée sur cible consentante), area {shape,
|
||||
radius_ft} | None (U7a : premier AreaEffect de niveau supérieur du sort,
|
||||
radius_ft, centered_on_caster} | None (U7a : premier AreaEffect de niveau supérieur du sort,
|
||||
gabarit de zone structuré, None si le sort n'a pas de zone), cast_time
|
||||
(code de temps d'incantation, « standard » pour un sort inconnu du
|
||||
registre)),
|
||||
|
||||
Reference in New Issue
Block a user