fix(rules): condition durations scale with caster level (hold person, doom, touch of fatigue, vanish)

ConditionEffect gains duration_rounds_per_level and max_duration_rounds
(mirroring PenaltyEffect), applied as caster_level * per_level rounds capped
at max: hold person 1 rd/lvl, doom 1 min/lvl, touch of fatigue 1 rd/lvl,
vanish 1 rd/lvl (max 5). Extend Spell doubles both the per-level rate and
the cap. Tests cover scaling and the vanish cap.
This commit is contained in:
2026-09-17 23:26:45 +02:00
parent a144423522
commit 0c3f5fd907
7 changed files with 92 additions and 11 deletions
+2 -1
View File
@@ -11,8 +11,9 @@
"type": "condition",
"condition_name": "shaken",
"duration_rounds": 10,
"duration_rounds_per_level": 10,
"save_negates": true
}
],
"description": "SRD spells/doom.md: the subject is filled with horrible dread and becomes shaken (-2 on attacks and saves). Saving Throw Will negates - there is no partial success (the earlier '-1 on a successful save' wording was a D&D 3.5 rule that does not exist in PF1e). Duration 1 min/level approximated as 10 rounds."
"description": "SRD spells/doom.md: the subject is filled with horrible dread and becomes shaken (-2 on attacks and saves). Saving Throw Will negates - there is no partial success (the earlier '-1 on a successful save' wording was a D&D 3.5 rule that does not exist in PF1e). Duration 1 min/level (10 rounds per level)."
}
+3 -2
View File
@@ -10,9 +10,10 @@
{
"type": "condition",
"condition_name": "paralyzed",
"duration_rounds": 3,
"duration_rounds": 1,
"duration_rounds_per_level": 1,
"save_negates": true
}
],
"description": "The subject becomes paralyzed and freezes in place. Will negates."
"description": "The subject becomes paralyzed and freezes in place. Will negates. Duration 1 round/level."
}
+3 -2
View File
@@ -10,9 +10,10 @@
{
"type": "condition",
"condition_name": "fatigued",
"duration_rounds": 4,
"duration_rounds": 1,
"duration_rounds_per_level": 1,
"save_negates": true
}
],
"description": "A cantrip: a melee touch attack channels negative energy, making the target fatigued for 1 round/level (modeled as 4 rounds at caster level 4; the effect ends with the duration rather than by long rest). No effect on an already fatigued creature or on creatures immune to fatigue. Fortitude negates."
"description": "A cantrip: a melee touch attack channels negative energy, making the target fatigued for 1 round/level (the effect ends with the duration rather than by long rest). No effect on an already fatigued creature or on creatures immune to fatigue. Fortitude negates."
}
+3 -1
View File
@@ -10,7 +10,9 @@
{
"type": "condition",
"condition_name": "invisible",
"duration_rounds": 5,
"duration_rounds": 1,
"duration_rounds_per_level": 1,
"max_duration_rounds": 5,
"save_negates": false
}
],