fix(spells): correct the fear condition
PF1e (SRD spells/fear.md): creatures become panicked unless they succeed on a Will save - the JSON applied frightened instead. Condition fixed to panicked. The shaken-for-1-round on a successful save needs partial-save support for conditions and the 30-ft cone needs a cone template, neither of which the engine has; both documented in README as out of scope rather than built. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -1307,6 +1307,14 @@ projectiles multiples, ni sauvegarde partielle) :
|
||||
subsystem de dégâts continus par sort (ni neutralisation d'acide) ; seuls les
|
||||
2d4 de dégâts initiaux sont modélisés, les rounds de dégâts persistants sont
|
||||
hors périmètre.
|
||||
- **Fear — sauvegarde totale et pas de cône** (SRD spells/fear.md : « each
|
||||
living creature in the area [...] becomes panicked unless it succeeds on a
|
||||
Will save [...]. If the Will save succeeds, the creature is shaken for 1
|
||||
round » ; cône de 30 ft) : la condition appliquée est bien `panicked`
|
||||
(conformance D8), mais le moteur n'a pas de sauvegarde partielle pour les
|
||||
conditions — un succès annule totalement l'effet au lieu de poser `shaken`
|
||||
1 round — et le gabarit en cône n'existe pas (sort résolu sur la cible) ;
|
||||
la durée « 1 round/niveau » est fixée à 4 rounds.
|
||||
|
||||
## Architecture
|
||||
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
"effects": [
|
||||
{
|
||||
"type": "condition",
|
||||
"condition_name": "frightened",
|
||||
"condition_name": "panicked",
|
||||
"duration_rounds": 4,
|
||||
"save_negates": true
|
||||
}
|
||||
],
|
||||
"description": "The affected creature becomes frightened and flees from the caster. Will negates."
|
||||
"description": "SRD spells/fear.md: each living creature in the 30-ft. cone becomes panicked unless it succeeds on a Will save (a successful save makes it shaken for 1 round instead). Modeled as panicked for 4 rounds on a failed save; the shaken-on-success partial needs partial-save support and the cone template is absent - both documented limitations."
|
||||
}
|
||||
|
||||
@@ -522,16 +522,17 @@ class TestHoldPerson:
|
||||
|
||||
|
||||
class TestFear:
|
||||
"""Given: a caster casting Fear (will negates, frightened)
|
||||
"""Given: a caster casting Fear (SRD spells/fear.md: panicked unless the
|
||||
Will save succeeds)
|
||||
When: target fails save
|
||||
Then: frightened condition is applied."""
|
||||
Then: panicked condition is applied."""
|
||||
|
||||
def test_failed_save_applies_frightened(self) -> None:
|
||||
def test_failed_save_applies_panicked(self) -> None:
|
||||
caster = _make_caster()
|
||||
target = _make_target()
|
||||
engine, c, t = _make_engine(caster, target, [2])
|
||||
engine._cast_spell(c, t, "Fear")
|
||||
assert any(ac.condition.name == "frightened" for ac in t.active_conditions)
|
||||
assert any(ac.condition.name == "panicked" for ac in t.active_conditions)
|
||||
|
||||
|
||||
class TestCureLightWounds:
|
||||
|
||||
Reference in New Issue
Block a user