ctan
88ef9f39be
feat(rules): support multi-projectile spells
...
SRD Magic Missile fires one missile +1 per two caster levels beyond 1st (max 5, 1d4+1 force, auto-hit); Scorching Ray fires one ray +1 per four levels beyond 3rd (max 3, 4d6 fire, ranged touch each). DamageEffect gains a ProjectileScaling spec (JSON 'projectiles'); _apply_damage_effect loops count_for(caster_level) projectiles, each rolling its own damage and (for a declared-projectile ray) its own ranged touch attack, with the target-drops-mid-sequence convention losing the rest. Updated magic_missile.json/scorching_ray.json, the golden lich transcript (CL 11 now fires 5 missiles, Tammara dies round 1: 43 damage), the scripted MM queues in test_spells/test_conformance_spellflow, added tests/test_multi_projectile.py, and the README.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-09-13 12:05:56 +02:00
..
2026-09-11 15:01:42 +02:00
2026-09-12 13:03:11 +02:00
2026-09-11 20:19:03 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-12 12:46:53 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-13 11:01:07 +02:00
2026-09-11 15:01:42 +02:00
2026-09-13 11:01:07 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 20:19:03 +02:00
2026-09-11 15:01:42 +02:00
2026-09-12 15:11:56 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-13 11:01:07 +02:00
2026-09-13 10:48:09 +02:00
2026-09-13 11:01:07 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-13 10:48:09 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-13 11:01:07 +02:00
2026-09-11 15:01:42 +02:00
2026-09-13 12:05:56 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 20:19:03 +02:00
2026-09-11 20:19:03 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-13 12:05:56 +02:00
2026-09-11 20:19:03 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-13 10:48:09 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-12 12:31:06 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 20:19:03 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00
2026-09-11 15:01:42 +02:00