Commit Graph

180 Commits

Author SHA1 Message Date
ctan 31d970dd5f fix(combat): resolve touch attacks against touch AC and firearms 2026-09-05 11:28:46 +02:00
ctan 8e2753e67a chore: final green gate 2026-09-05 09:09:20 +02:00
ctan 2929045e4b feat(data): add Thrune Agent monster 2026-09-05 00:33:07 +02:00
ctan 22d76e9677 fix(combat): channel energy targets living vs undead 2026-09-05 00:16:17 +02:00
ctan 7591614460 feat(cli): add --transcript option 2026-09-04 23:34:12 +02:00
ctan cedff5b932 feat(data): add giant belostomatid monster 2026-09-04 23:22:38 +02:00
ctan 83a5250ca6 fix(combat): deed range gating 2026-09-04 23:02:27 +02:00
ctan c5f31c30d1 fix(combat): summon spawns only on passable cells 2026-09-04 23:02:27 +02:00
ctan f4fc66a6ab docs: align README with fixed behavior 2026-09-04 23:02:26 +02:00
ctan 0dcb967033 test(combat): pin ScriptedRng transcripts, unique per scenario 2026-09-04 23:02:26 +02:00
ctan 6e08df6eb6 feat(combat): class abilities from default_policy 2026-09-04 23:02:26 +02:00
ctan 66a664ad85 fix(data): lich fear aura, paralyzing touch, slot keys 2026-09-04 23:02:26 +02:00
ctan d0833c7a2c feat(data): wire all 55 PC feats 2026-09-04 23:02:25 +02:00
ctan 5353018c80 fix(combat): single roll to escape grapple 2026-09-04 23:02:25 +02:00
ctan f575c77037 fix(combat): sunder damages weapon not HP 2026-09-04 23:02:25 +02:00
ctan 6e4a9d8323 feat(combat): Combat Reflexes extra AoOs 2026-09-04 23:02:24 +02:00
ctan 679d405943 feat(combat): enforce prone/staggered/nauseated/paralyzed 2026-09-04 23:02:24 +02:00
ctan 0d61ad44ab fix(combat): bound cackle hex extension 2026-09-04 23:02:24 +02:00
ctan 735642a607 fix(combat): summoned creatures act and expire 2026-09-04 23:02:23 +02:00
ctan 2e4d192522 refactor(combat): single source active_buffs/active_conditions 2026-09-04 23:02:23 +02:00
ctan 073da40fca feat(combat): class-ability action kinds, engine RNG only 2026-09-04 23:02:22 +02:00
ctan 0058e71550 fix(combat): correct hex and AoE DCs, DR bypassed by spells 2026-09-04 23:02:22 +02:00
ctan a7729eebf1 fix(combat): correct concentration DCs by situation 2026-09-04 23:02:22 +02:00
ctan 625e8c56b9 feat(runner): wire spell registry in CLI and Monte Carlo 2026-09-04 23:02:21 +02:00
ctan fd94522546 feat(data): per-level spell slots for 8 PCs 2026-09-04 23:02:21 +02:00
ctan 1893072b5d chore(lint): restore green gate 2026-09-04 23:02:20 +02:00
ctan 31d62b39c2 feat(data): lich monster 2026-09-04 23:02:20 +02:00
ctan 510990188a feat(combat): class action patterns 2026-09-04 23:02:20 +02:00
ctan a6366edd33 feat(combat): channel energy and hexes 2026-09-04 23:02:19 +02:00
ctan 77ffad8e2f feat(data): companions and mounts 2026-09-04 23:02:19 +02:00
ctan 4d7f1b8233 feat(loaders): map 8-PC feats 2026-09-04 23:02:18 +02:00
ctan 934d443d7d feat(combat): summoning 2026-09-04 23:02:18 +02:00
ctan 136ddcf7aa feat(combat): combat maneuvers CMB/CMD 2026-09-04 23:02:18 +02:00
ctan 8ae344fd16 feat(combat): area-of-effect spells 2026-09-04 23:02:17 +02:00
ctan 09062b37ea feat(combat): spellcasting default policy 2026-09-04 23:02:17 +02:00
ctan ab2874d79b feat(combat): skills system 2026-09-04 23:02:17 +02:00
ctan d792b6e28f feat(combat): AoO and concentration on casting 2026-09-04 23:02:16 +02:00
ctan 0c2e3383d7 feat(combat): enforce behavioral condition flags 2026-09-04 23:02:16 +02:00
ctan d2c80c0d61 feat(combat): metamagic 2026-09-04 23:02:16 +02:00
ctan eb8072ace7 feat(models): combat resources 2026-09-04 23:02:15 +02:00
ctan 789d2f5396 fix(combat): correct spell DC formula 2026-09-04 23:02:15 +02:00
ctan 43303cf28e feat(combat): effect and condition durations 2026-09-04 23:01:57 +02:00
ctan 2e49aa7293 docs(handoff): add finalize-engine plan for session transfer 2026-08-29 13:37:32 +02:00
ctan 52904a0d03 docs(handoff): add session summary for pf1e-simulator transfer 2026-08-29 13:35:47 +02:00
ctan 37f07d90a7 chore(data): drop Plot Armor from misty features (non-combat feat) 2026-08-18 17:34:48 +02:00
ctan 82148cea1e test(loaders): add unit tests for combatant feat resolution and feature/spell handling
Tests for _resolve_feat (known/unknown/Toughness/Weapon Focus),
_resolve_features (filtering, empty lists), load_combatant with
features+spells integration, and backward-compat aliases.

Gate: 401 tests, ruff clean, basedpyright clean.
2026-08-18 15:11:28 +02:00
ctan 36f72dcb37 chore(clean): cleanup .codegraph 2026-08-17 22:54:53 +02:00
ctan 557bb2304a fix(git): fix gitignore for .codegraph 2026-08-17 22:53:58 +02:00
ctan c88d8fd6f4 refactor(loaders): unify combatant loader, migrate PC features/spells
Rename monster.py → combatant.py with _KNOWN_FEATS lookup table
that resolves feat name strings to AbilitySpec constants (Power Attack,
Iron Will, Toughness, Weapon Focus, etc.). Unknown feats produce
minimal AbilitySpec (data preserved for future implementation).

Migrate all 8 PC JSONs (data/pcs/) with complete feat/spell lists
extracted from Foundry sheets — including traits, racial abilities,
and all spells. Monsters (goblin, orc) unchanged (no feats/spells).

Update all imports, add backward-compatible aliases (load_monster,
MonsterLoadError), update CLI to use load_combatant.

Gate: 377 tests, ruff clean, basedpyright clean.
2026-08-17 22:49:50 +02:00
ctan e9e8c26d50 feat(loaders): extend Foundry loader with feat/spell extraction
Map Foundry feat strings to AbilitySpec constants (Power Attack, Iron Will,
Alertness, Point-Blank Shot, Precise Shot, Dodge, Weapon Focus (X)).
Extract spell names from spellcasting.spells into Combatant.spells.
Wire features and spells into load_sheet_detailed return.
Add 41 tests (unit + golden on 8 real sheets).

Gate: 377 tests, ruff clean, basedpyright clean.
2026-08-17 22:49:50 +02:00