Commit Graph

134 Commits

Author SHA1 Message Date
ctan 9aee4f6f6b fix(rules): correct P2/P3 PF1e conformance bugs (flanking, touch, blinded, disabled, death, maneuvers, DR, sneak) 2026-09-10 21:45:50 +02:00
ctan 5afe495c4a fix(rules): correct P1 PF1e conformance bugs (area saves, concentration, prone, slots, helpless, nauseated) 2026-09-10 20:52:28 +02:00
ctan 1ca5aed758 data(spells): add batch 3 of PC spell list (32 spells) 2026-09-10 19:43:07 +02:00
ctan 543da6a931 data(spells): add batch 2 of PC spell list (32 spells) 2026-09-10 19:12:57 +02:00
ctan 07e0d83300 data(spells): add batch 1 of PC spell list (32 spells) 2026-09-10 18:49:54 +02:00
ctan 91f70f19ca feat(conditions): add bleeding and confused rules 2026-09-10 18:15:35 +02:00
ctan b3bff85215 feat(conditions): add blinded/invisible/helpless/fascinated combat rules 2026-09-10 18:00:41 +02:00
ctan 79ac190728 feat(combat): use fly speed for movement
Movement budget is now max(land, fly) speed. Updates the harvie golden: Harvie (land 10 / fly 80) is a flyer and now flies at 80 ft, so he wins vs the goblin instead of being pinned crawling at 10 ft.
2026-09-10 17:46:57 +02:00
ctan ec0397351a test(rules): lock in that size is baked into attack/AC values 2026-09-10 17:25:05 +02:00
ctan 582b6c60d1 feat(observation): expose ranged threat grid 2026-09-10 17:12:54 +02:00
ctan f637f87a8c feat(combat): add aid another and run actions 2026-09-10 16:56:38 +02:00
ctan 06555f7b49 test(llm): demonstrate unblocked engine capabilities via observation-only policy 2026-09-10 15:56:21 +02:00
ctan 26f86f416d feat(combat): allow point-targeted spell areas 2026-09-10 15:19:36 +02:00
ctan 7fafbe43cf feat(observation): expose structured spell areas 2026-09-10 14:14:54 +02:00
ctan 61c9b7fa47 feat(observation): expose remaining attacks of opportunity 2026-09-10 14:08:25 +02:00
ctan 6abd29cbc5 feat(observation): expose attack failure reasons 2026-09-10 13:57:34 +02:00
ctan 8f3bd0d0e0 feat(observation): expose per-pair cover bonus 2026-09-10 13:46:05 +02:00
ctan ed04052244 feat(combat): allow selecting the attacking weapon 2026-09-10 13:36:27 +02:00
ctan b91e1ac215 feat(combat): allow explicit movement destinations 2026-09-10 13:21:54 +02:00
ctan 468c22ff57 feat(combat): add stand up and drop prone 2026-09-10 13:07:58 +02:00
ctan ebdff4f7e5 feat(combat): add total defense and fighting defensively 2026-09-10 12:52:47 +02:00
ctan ab02597bc4 feat(combat): add ready action with triggers 2026-09-10 12:39:28 +02:00
ctan f83e4b8016 feat(combat): add delay action 2026-09-10 12:20:33 +02:00
ctan c5cfa78f87 feat(observation): expose initiative order and totals 2026-09-10 12:04:10 +02:00
ctan 4e115f9176 feat(combat): surface explicit action results and reject invalid actions 2026-09-10 11:51:02 +02:00
ctan e6125b04f6 feat(combat): support partial and improved cover levels 2026-09-10 11:32:08 +02:00
ctan 2eed752f7f feat(combat): add dying stabilization and Improved Critical 2026-09-10 10:43:02 +02:00
ctan 97f4429c2b feat(combat): add concealment miss chance, sneak attack, and Precise Shot 2026-09-10 10:22:50 +02:00
ctan a1c43e83af feat(combat): enforce spell resistance checks and energy resistances 2026-09-06 19:18:10 +02:00
ctan a9ccdd3a56 feat(combat): add activate_power_attack action and consume Up Close and Deadly deed
- New Action kind activate_power_attack: free action that sets
  state.power_attack = True when the combatant has the Power Attack feat;
  logged no-op otherwise. Routed via _execute_movement (free-action branch)
  to keep _execute under the C901 complexity ceiling.
- Consume deed_up_close_and_deadly in resolve_attack: the first attack
  resolved while the flag is set gains +1d6 if it is a ranged attack within
  30 ft; the flag is reset in all cases (benefit lost if out of range or
  not ranged). Extracted into _consume_up_close_and_deadly helper.
- Document activate_power_attack, corrected deed semantics, and the
  power_attack snapshot key in README.
- Add tests/test_engine_fixes.py (5 tests): PA activation, no-feat no-op,
  deed+ranged within 30ft, deed out-of-range, deed melee.
2026-09-06 18:37:58 +02:00
ctan e29c472a67 feat(combat): expose DR, conditions, creature type, features, and spell save semantics in observation 2026-09-06 18:18:13 +02:00
ctan d2cd6f0702 docs: document enriched observation snapshot and add LLM demo test 2026-09-06 16:50:42 +02:00
ctan bfb8d0a30c feat(combat): expose threat grid and terrain semantics in observation 2026-09-06 14:10:16 +02:00
ctan cfeb28e336 feat(combat): expose per-pair movement and threat info in observation 2026-09-06 14:01:34 +02:00
ctan 90c71bbeb0 feat(combat): expose class features and spell data in observation snapshot 2026-09-06 13:54:26 +02:00
ctan f3d874790a feat(combat): expose weapon reference in observation snapshot 2026-09-06 13:46:12 +02:00
ctan cd8051f2c4 feat(combat): expose combat stats in observation snapshot 2026-09-06 13:38:53 +02:00
ctan cd796ecffb docs: document LLM observation contract and expanded action options 2026-09-06 11:14:18 +02:00
ctan e75ab58055 feat(combat): add serializable Observation snapshot and LLMPolicy adapter 2026-09-06 11:07:30 +02:00
ctan 7843756de2 feat(combat): expose charge failure reasons via ChargeResult 2026-09-06 10:47:36 +02:00
ctan 56c8970d5b feat(combat): expose threatened squares and movement cost fields for LLM policy
Rename _threatened_squares -> threatened_squares and
_enemies_threatening -> enemies_threatening (public read-only API for a
future LLM policy), and add reachable_ft(state, budget) and
movement_cost_ft(state, target) accessors returning movement costs in
feet. Pure exposure: no behavior change, resolution engine untouched,
goldens bit-identical.
2026-09-06 10:36:48 +02:00
ctan 9c49f85af8 feat(combat): resolve all natural melee weapons in full_attack 2026-09-06 10:22:58 +02:00
ctan fdcd103e8a feat(combat): add repair_weapon action to fix broken weapons 2026-09-06 10:05:55 +02:00
ctan 8e957c9fac feat(combat): add retrieve_weapon action to recover stolen weapons 2026-09-06 10:01:07 +02:00
ctan b640e29a91 feat(combat): add trick_condition field to Action for dirty trick 2026-09-05 18:49:56 +02:00
ctan 7fbf3988e9 feat(combat): add direction field to Action for directional maneuvers 2026-09-05 18:37:26 +02:00
ctan febd408f29 docs: document B5 engine hardening - reach, sizes, elevation, immediate actions 2026-09-05 18:04:35 +02:00
ctan 66b6d1f387 feat(combat): support off-turn immediate actions via reaction policy 2026-09-05 17:03:51 +02:00
ctan ab99ab67e3 feat(grid): apply elevation to movement cost and high ground 2026-09-05 16:18:56 +02:00
ctan 30f8905a3e feat(combat): support multi-cell occupancy for large and larger creatures 2026-09-05 16:01:28 +02:00