a59ebee37a
Acid Arrow (SRD spells/acid-arrow.md) deals 2d4 acid, then 2d4 again at the start of each of the target's turns for 1 round + 1 per three caster levels (max 6). DamageEffect gains a RecurringDamageSpec (JSON 'recurring'); a landed hit attaches a RecurringDamage source to CombatantState.recurring_damage, ticked in _turn_gate (after bleed), reduced by energy resistance/immunity but never DR (spell damage), cleared at expiry, and exposed in the observation snapshot. Extracted _resolve_one_projectile to keep _apply_damage_effect under the complexity ceiling. Updated acid_arrow.json, added tests/test_recurring_damage.py, and the README. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
27 lines
783 B
JSON
27 lines
783 B
JSON
{
|
|
"name": "Acid Arrow",
|
|
"level": 2,
|
|
"school": "evocation",
|
|
"range": "long",
|
|
"save": "none",
|
|
"base_dc": 10,
|
|
"requires_ranged_touch": true,
|
|
"cast_time": "standard",
|
|
"effects": [
|
|
{
|
|
"type": "damage",
|
|
"formula": "2d4",
|
|
"types": ["acid"],
|
|
"half_on_save": false,
|
|
"recurring": {
|
|
"formula": "2d4",
|
|
"types": ["acid"],
|
|
"base_rounds": 1,
|
|
"per_levels": 3,
|
|
"max": 6
|
|
}
|
|
}
|
|
],
|
|
"description": "SRD spells/acid-arrow.md: ranged touch attack dealing 2d4 acid damage, plus another 2d4 acid damage at the start of each of the target's turns for 1 round + 1 round per three caster levels (maximum 6 additional rounds). Recurring damage is reduced by energy resistance/immunity, not by DR. No save."
|
|
}
|