Commit Graph

  • 0ad627c97c fix(stats): non-attack damage now lands in damage_taken - bleed ticks, recurring spell damage (Acid Arrow) and cure-spells-damage-undead (SRD Cure Light Wounds negative-energy hit, attributed to the caster's damage_dealt) were invisible to attrition while attacks were counted; transcripts and RNG untouched ctan 2026-09-19 17:02:21 +02:00
  • 7fefce4653 fix(runner): aggregation creates per-id accumulators on demand so summoned creature ids in result.stats no longer KeyError run_encounter (totals were seeded from the deployed roster only); duplicate summons of one creature id share a stats slot - noted as a limitation, pinned by a summon-encounter report test ctan 2026-09-19 16:56:48 +02:00
  • 2e2873f331 fix(stats): channel-energy heal is no longer counted as damage_dealt (attrition tracks damage only, README 'dégâts infligés/subis'; consistent with spell HealEffect which is counted nowhere) - harm mode still records damage_dealt/damage_taken, pinned by new tests ctan 2026-09-19 16:52:04 +02:00
  • 24e208ea41 fix(rules): load_map rejects any square_size_ft other than 5 (SRD Measuring Distance: one grid square is 5 feet; the engine's 5-10-5 geometry, step costs and ranges are hard-coded to that scale) - a map declaring 10-ft squares was loaded silently and mis-scaled; now a fail-fast MapValidationError, with reject/accept tests ctan 2026-09-19 16:37:30 +02:00
  • 1e2de7f89d fix(rules): a cone/line template excludes the caster's whole footprint, not just the anchor cell (SRD aiming-a-spell.md: 'It starts from any corner of your square' - every occupied square is origin space and never inside its own area) - cone_cells/line_cells take caster_cells; combat passes caster.occupied_cells(); 1x1 casters bit-identical; documented simplification: a grazed caster cell still consumes a length slot ctan 2026-09-19 16:34:22 +02:00
  • 2e468ba619 fix(rules): point-cast cones/lines no longer demand line of effect to the aim point (SRD aiming-a-spell.md: a cone/line 'shoots away from you in the direction you designate' and 'starts from any corner of your square' - the LoE-to-the-space rule binds targets and burst origins only) - _point_target_rejection now requires in-bounds for every area and caster->point LoE only for bursts (and area-less spells, conservatively); template LoE stays enforced by cone_cells/line_cells ctan 2026-09-19 16:29:38 +02:00
  • 778d6a8620 fix(rules): a blinded creature cannot charge, run, or withdraw (SRD charge.md: 'If you don't have line of sight to the opponent at the start of your turn, you can't charge that opponent'; full-round-actions.md: 'You can't run ... if you can't see where you're going' and 'you can't withdraw from combat if you're blinded') - can_charge gates blinded with no_line_of_effect, _execute_run joins the cant_charge no-op, _withdraw rejects blinded ctan 2026-09-19 16:24:31 +02:00
  • 792cec140b fix(rules): dying-but-alive creatures still occupy their squares (SRD cover.md: soft cover from 'a square occupied by a creature'; SRD aiming-a-spell.md: a burst 'affects whatever it catches in its area, including creatures that you can't see') - soft-cover interposer sets and area templates filtered on active, so a dying creature's square was ignored; new CombatantState.occupies_space (not dead) gates both; corpses stay excluded (documented); channel energy keeps its active-only filter (pinned) ctan 2026-09-19 16:19:23 +02:00
  • aa424fa385 docs(rules): conformance journal rounds 5-6 (31 fix commits) and final residual inventory ctan 2026-09-19 15:58:53 +02:00
  • 9086038bfb fix(rules): charge clear-path tests the whole footprint for difficult terrain (SRD movement-position-and-distance-2.md: 'You can't run or charge across difficult terrain' + 'you can move only as fast as the most difficult terrain you occupy') - _charge_path_clear priced only the anchor cell, so a 2x2 creature with one trailing square in rubble charged freely; the move-descent footprint pricing is deferred (would rewrite the anchor-based Dijkstra cost field) ctan 2026-09-19 15:51:15 +02:00
  • 5e478bfd27 fix(rules): charge and run walks enforce the diagonal corner rule (SRD measuring-distance.md: 'You can't move diagonally past a corner') - _charge_path_clear and _run_line_path never checked diagonal_allowed, so a charge/run could cut diagonally through a wall corner; both walks now stop/reject a diagonal step whose flanks are not both passable, same predicate the Dijkstra descent uses ctan 2026-09-19 15:44:12 +02:00
  • 27ce33ba67 fix(rules): adjacent melee cover uses the SRD any-line rule (cover.md: 'any line from any corner of your square to the target's square goes through a wall') - the gate previously applied the ranged best-corner rule to distance-1 melee, systematically under-granting cover; non-adjacent melee (reach) keeps the ranged rule, bonus scoring aligned per branch, README 'pire coin' wording updated ctan 2026-09-19 15:35:56 +02:00
  • 9f8655da76 fix(rules): README sync for the area-of-effect line-of-effect fixes - line truncation at barriers, cone/burst LoE from the origin, terrain cover Reflex half-bonus (SRD aiming-a-spell.md, cover.md); areas.py architecture entry updated ctan 2026-09-19 14:35:17 +02:00
  • fb6f58acc1 fix(rules): document the diagonal corner rule as stricter-than-RAW (SRD measuring-distance.md: 'You can't move diagonally past a corner' vs 'You can also move diagonally past other impassable obstacles, such as pits' - RAW blocks only both-flank corners; the engine requires both flanks passable for every diagonal, an accepted conservative approximation because relaxing it would rewrite Dijkstra paths and golden positions) ctan 2026-09-19 14:32:44 +02:00
  • beb8421600 fix(rules): pin the high-ground +1 as melee-only with the SRD proof (Table 8-5 'Attack Roll Modifiers': 'On higher ground - Melee +1, Ranged +0') - engine verified conformant, no code change ctan 2026-09-19 14:30:46 +02:00
  • a2ca78fce3 fix(rules): document the blocks_los flag as LINE OF EFFECT semantics (SRD aiming-a-spell.md: 'A line of effect is canceled by a solid barrier. It's like line of sight for ranged weapons, except that it's not blocked by fog, darkness, and other factors that limit normal sight') - vision-only concealment terrain is not modeled; concealment rides conditions (miss_chance), not the map ctan 2026-09-19 14:26:26 +02:00
  • 8774e51a12 fix(rules): cover grants a Reflex-save bonus against area effects (SRD cover.md 'Cover and Reflex Saves': +2 vs standard cover - half the AC value, so +1 partial/+2 standard/+4 improved; soft cover grants none) - _area_save adds terrain cover//2 from the effect's point of origin (burst center, caster square for cone/line) to Reflex rolls; resolve_save gains an explicit flat_bonus ctan 2026-09-19 14:16:26 +02:00
  • 948edc1815 fix(rules): bursts cannot affect creatures in total cover from the point of origin (SRD aiming-a-spell.md: a burst "can't affect creatures with total cover from its point of origin (in other words, its effects don't extend around corners)"; Line of Effect: a burst affects only what it has LoE to from its origin) - _area_creatures skips creatures whose occupied cells have no line of effect from the burst center ctan 2026-09-19 14:08:24 +02:00
  • 389e160627 fix(rules): cones require line of effect from their origin (SRD aiming-a-spell.md: a cone 'affects only an area, creature, or object to which it has line of effect from its origin') - cone_cells drops geometrically-inside cells without corner-to-corner LoE from the caster square; line/cone barrier-cell semantics aligned (both templates include the barrier square the effect strikes, exclude everything behind it) ctan 2026-09-19 14:04:34 +02:00
  • 5250763c35 fix(rules): line spells stop at a line-of-effect barrier (SRD aiming-a-spell.md: a line 'extends to the limit of its range or until it strikes a barrier that blocks line of effect') - line_cells truncates at the first blocks_los cell, creatures behind a solid wall are never caught ctan 2026-09-19 13:54:25 +02:00
  • b95533d49f fix(rules): bear's endurance +2 hp per Hit Die via split flat scaling, aid morale scoped to fear-descriptor saves (SRD spells/aid.md), charm person range close per SRD spells/charm-person.md, README synced (29 conditions, acid arrow total cap, mirror image instance-level miss chance) ctan 2026-09-19 13:34:30 +02:00
  • 35ce41e5f9 fix(rules): owl's wisdom +2 Will enhancement buff (SRD spells/owl-s-wisdom.md); correct and sharpen the deferred-utility docs for guidance, resistance, virtue, stabilize, saving finale, spiritual weapon (verified SRD texts, engine-track reasons, and the cantrip-buff policy degradation that blocks encoding resistance) ctan 2026-09-19 13:27:55 +02:00
  • 56310b191a fix(rules): mirror image rolled image count with dynamic images/(images+1) concealment miss chance, bleed cantrip gated on the SRD dying-target eligibility, bane -1 fear-scoped penalty via a dedicated bane condition (SRD spells/mirror-image.md, spells/bleed.md, spells/bane.md) ctan 2026-09-19 13:22:19 +02:00
  • d9b590ebce fix(rules): acid arrow recurring total cap (1+6=7 rounds at 18th, the SRD max counts additional rounds) and ice slick flat scaling 1d6+1/level max +10 (SRD spells/acid-arrow.md, spells/ice-slick.md) ctan 2026-09-19 13:12:36 +02:00
  • 13e4a2774e fix(rules): cover the feat/trait no-op batch in test_feats (assert the eight documented inert specs, the two traced-noop names, and misty's resistances/bite data encoding) ctan 2026-09-19 12:47:40 +02:00
  • 2df9dd778c fix(rules): misty Scaled Skin electricity resist 5 and Maw or Claw bite 1d6 (SRD ARG daemon-spawn traits: resistance encoded in resistances, bite upgraded from the sheet's estimated 1d4 to the Medium 1d6 with the discrepancy recorded in notes) ctan 2026-09-19 12:43:38 +02:00
  • 7262568959 fix(rules): Esha sylph traits and invented names to documented traced no-ops (Whispering Wind/Like the Wind/Breeze-Kissed are real sylph racial traits whose SRD effects the engine cannot resolve - the coded bonuses were fabricated; Fey-touched and Pingre are not PF1e features and move to _NOOP_FEATS; descriptor gating stays covered via local probe specs) ctan 2026-09-19 12:37:32 +02:00
  • 2dd3fefa1d fix(rules): Larger Than Life / Ambitious / Focused Study to documented traced no-ops (SRD effects gate on Intimidate size, HD-differential Diplomacy, and chosen-skill bonuses the engine never resolves; the flat +1 Intimidate was the wrong effect) ctan 2026-09-19 12:27:07 +02:00
  • 17c06e18cc fix(rules): document dismissal of (D)-duration spells as out of scope (SRD Cast a Spell: Dismiss a Spell - no dismiss action nor active-spell registry exists in the engine) ctan 2026-09-19 12:06:24 +02:00
  • 1902877cfe fix(rules): document the spell_slots data convention - JSON slots are final per-encounter budgets, engine computes no bonus spells (evidence: PC sheets carry the base class table without bonus, lich slots match no RAW daily table) ctan 2026-09-19 12:04:30 +02:00
  • b2739c5747 fix(rules): document arcane spell failure as out of scope (SRD Arcane Spells and Armor - the model has no armor field nor spell components, so ASF has neither source nor filter) ctan 2026-09-19 12:01:40 +02:00
  • 22724f583f fix(rules): Extend Spell doubles SummonEffect duration (SRD extend-spell: lasts twice as long; summon's 1 round/level is neither instantaneous, concentration nor permanent) ctan 2026-09-19 11:55:30 +02:00
  • 65a5e24609 fix(rules): Combat Casting's +4 no longer applies to the entangled concentration check (SRD combat-casting: the feat covers only casting defensively or while grappled) ctan 2026-09-19 11:50:53 +02:00
  • cec3c5f459 fix(rules): summon duration scales with caster level (SRD summon-monster: 1 round/level (D)) - SummonEffect gains duration_rounds_per_level resolved at cast time, summon_monster_i/ii JSON updated ctan 2026-09-19 11:47:34 +02:00
  • 418fdc826b fix(rules): a missed melee touch attack holds the charge instead of expending the spell (SRD Holding the Charge: re-attempted at the start of later turns, dissipated by casting another spell; ranged touch still expended on a miss) ctan 2026-09-19 11:40:02 +02:00
  • 81a09c88f0 fix(rules): metamagic no longer raises the save DC - only Heighten Spell does (SRD empower-spell: saving throws not affected; heighten-spell: DCs calculated at the heightened level, modeled at its minimum +1 slot adjustment) ctan 2026-09-19 11:33:10 +02:00
  • b74baf1aa9 fix(rules): Lonely and Bitter drawbacks replace bogus +1 Will bonuses (SRD: Lonely -2 Sense Motive and -2 saves vs charm with mind_affecting standing in; Bitter reduces ally-sourced healing by 1 via engine hook) ctan 2026-09-19 10:50:50 +02:00
  • a5ebbecad8 fix(rules): Friendly Face and Extremely Fashionable become documented no-ops (SRD: animal attitude +2 steps and +1 Bluff/Diplomacy/Intimidate in fine clothing - neither attitude nor clothing state is modeled; old +1/+4 Diplomacy bonuses were wrong) ctan 2026-09-19 10:44:25 +02:00
  • 6d0ee1bfeb fix(rules): Born Damned and Axe to Grind become documented no-ops (SRD: +2 saves vs curses has no curse descriptor; +1 damage vs foes threatened only by you is not expressible - old Fort-vs-poison and axe-damage bonuses were wrong) ctan 2026-09-19 10:41:21 +02:00
  • d0db208610 fix(rules): Exalted of the Society grants +1 channel energy/day via resource_grants; Fortified Drinker becomes documented no-op (SRD: +2 saves vs mind-affecting after drinking, alcohol state not modeled) ctan 2026-09-19 10:37:23 +02:00
  • 1a68dfa6db docs(rules): conformance journal rounds 3-4 (22 fix commits) and residual inventory ctan 2026-09-17 23:28:32 +02:00
  • 0c3f5fd907 fix(rules): condition durations scale with caster level (hold person, doom, touch of fatigue, vanish) ctan 2026-09-17 23:26:45 +02:00
  • a144423522 fix(rules): total defense and fighting defensively cannot be combined (SRD Total Defense) - no stacking, second declaration rejected ctan 2026-09-17 23:13:22 +02:00
  • 980d53d80b fix(rules): aid another bonuses expire at the beginning of the aider's next turn, not the beneficiary's (SRD Aid Another) ctan 2026-09-17 23:09:44 +02:00
  • e253b03ffe fix(rules): restricted charge - a creature limited to a standard action (staggered/disabled, surprise round) can still charge at 1x speed ctan 2026-09-17 23:06:03 +02:00
  • a5bd3c5a85 fix(rules): total defense denies attacks of opportunity (SRD Total Defense: allowance drops to 0 while the bonus is active) ctan 2026-09-17 23:00:10 +02:00
  • 6d96779ded fix(rules): spear of purity and shard of chaos deliver their SRD 1d8-per-two-levels ranged-touch damage (Will half); alignment gate documented as unmodeled ctan 2026-09-17 22:45:38 +02:00
  • bee224ab37 fix(rules): divine favor grants its SRD luck bonus on attack and weapon damage (+1 per three caster levels, max +3) for 1 minute ctan 2026-09-17 22:41:00 +02:00
  • 47f563e11a fix(rules): shield of faith grants its SRD deflection AC buff (+2, +1 per six caster levels, max +5) via a new BuffEffect flat scaling ctan 2026-09-17 22:36:18 +02:00
  • 27f962920f fix(rules): small SRD data corrections - alarm close, air bubble/endure elements touch, delay poison conjuration, 10-ft/0-ft range conventions documented, daze 4 HD or fewer ctan 2026-09-17 21:44:19 +02:00
  • 48c816b303 fix(rules): delay disease is a level-2 conjuration (healing) spell, not level-3 abjuration ctan 2026-09-17 21:41:38 +02:00
  • 79d9ff0c30 fix(rules): drunkard's breath is a level-2 conjuration cone that nauseates (Fort negates), not an invented abjuration DR-vs-alcohol buff ctan 2026-09-17 21:40:27 +02:00
  • 83bbcae952 fix(rules): ray of enfeeblement applies a rolled Strength penalty (Fort half) instead of fatigued ctan 2026-09-17 21:28:00 +02:00
  • 611952cbf7 fix(rules): misty - add sheet feat Plot Armor as traced no-op so data matches the Foundry sheet ctan 2026-09-16 22:18:54 +02:00
  • 2b5b39a9f7 fix(rules): jeanne + esha mount hooves 1d4 (SRD light horse) marked natural, add Jeanne's sheet Bite as secondary ctan 2026-09-16 22:06:59 +02:00
  • b9477a2ba1 fix(rules): ierlieth - bite damage_bonus -1 per sheet STR, add secondary Tail (stored +4, runtime -5 = sheet -1) ctan 2026-09-16 22:02:10 +02:00
  • 1c94d48803 fix(rules): harvie - Wis 14 per sheet, Talons primary +2 1d4 (2x), Bite secondary +2 with runtime -5 ctan 2026-09-16 21:59:29 +02:00
  • feaab5ee41 fix(rules): celestial wolf - SRD bestiary wolf baseline (hp 13, Con 15, touch 12, Fort +5, Will +1, bite +2) + celestial DR 5/magic, ER 5, SR 6 ctan 2026-09-16 21:55:09 +02:00
  • b3a7c3787d fix(rules): add alchemical/inherent/resistance/size bonus types (UM Table 2-7) as non-stacking ctan 2026-09-16 21:48:40 +02:00
  • ae037c984f fix(rules): minimum damage - a landed hit reduced below 1 by DR/energy resistance deals 1 (CRB Damage - Minimum Damage, nonlethal approximated as normal) ctan 2026-09-16 21:46:04 +02:00
  • 1c2663d21c fix(rules): non-stacking types keep best bonus and worst penalty separately (CRB Common Terms - Stacking) ctan 2026-09-16 21:40:30 +02:00
  • fa63829385 fix(rules): trait and racial are non-stacking bonus types (APG Traits, CRB Combining Magic Effects) ctan 2026-09-16 21:37:03 +02:00
  • cc9fba3b52 fix(rules): helpless Dex-0 AC adds exactly -5 on flat-footed base; touch base strips full Dex mod when helpless (no negative-Dex double count) ctan 2026-09-16 21:32:19 +02:00
  • e0bf484394 fix(rules): firing into melee exemption measured target-to-nearest-ally, not attacker-to-target (SRD Shooting into a Melee) ctan 2026-09-16 21:24:48 +02:00
  • e6f7b1988b docs(rules): conformance journal - round 2 found 4 data/conditions/feats/maneuvers fixes and 16 engine commits ctan 2026-09-16 20:45:51 +02:00
  • e89ea42168 fix(rules): README/abilities wording - grapple applies only grappled (pin out of scope), pinned/nauseated cant_attack, confused no-AoO, Weapon Focus group matching ctan 2026-09-16 20:31:49 +02:00
  • 3a5948c35c fix(rules): CMD never adds Dex on top of a Tiny Dex-substituted pre-baked CMB ctan 2026-09-16 20:25:34 +02:00
  • 0cccea2fa1 fix(rules): combat maneuvers auto-succeed (natural 20) vs incapacitated targets ctan 2026-09-16 20:21:41 +02:00
  • 06da519fc6 fix(rules): dirty trick RAW list extended to shaken and sickened (APG), with runtime validation ctan 2026-09-16 20:16:35 +02:00
  • 2b5920c85c fix(rules): disarm drops the wielded weapon (weapon_dropped) instead of a synthetic -4 penalty ctan 2026-09-16 20:08:10 +02:00
  • fdc9127483 fix(rules): Toughness is +3 hp below 4 Hit Dice (max(3, level)) ctan 2026-09-16 19:58:30 +02:00
  • 350844fc68 fix(rules): Up Close and Deadly deed requires a firearm attack (Ultimate Combat) ctan 2026-09-16 19:55:53 +02:00
  • 2807f719ca fix(rules): any concealment denies sneak attack (SRD rogue: 'a creature with concealment') ctan 2026-09-16 19:50:40 +02:00
  • 4d45409941 fix(rules): Weapon Focus filter matches weapon names case-insensitively (substring) ctan 2026-09-16 19:45:56 +02:00
  • f31cc88124 fix(rules): pinned creatures cannot attack (definition corrected; apply-gap documented) ctan 2026-09-16 19:38:49 +02:00
  • cf8a07311d fix(rules): grappled/pinned -2 applies to non-grapple/escape combat maneuver checks ctan 2026-09-16 19:33:38 +02:00
  • 68a03a34f6 fix(rules): confused creatures make no attacks of opportunity (simplification documented) ctan 2026-09-16 19:30:08 +02:00
  • def8533197 fix(rules): nauseated creatures are denied attacks of opportunity ctan 2026-09-16 19:25:35 +02:00
  • 6220edcfd7 fix(rules): fatigued -2 Dex now costs -1 AC and -1 Reflex ctan 2026-09-16 19:22:00 +02:00
  • bfe0b767a9 fix(rules): exhausted -6 Dex now costs -3 AC and -3 Reflex ctan 2026-09-16 19:20:00 +02:00
  • 317f91a07f fix(rules): entangled casting needs DC 15+level concentration; add -4 dex_skills ctan 2026-09-16 19:17:10 +02:00
  • b03a61d8ab fix(spells): correct SRD levels, saves, schools, ranges and SR flags (11 spells) ctan 2026-09-16 19:04:14 +02:00
  • 99e9203d8c docs(rules): add the SRD conformance audit journal ctan 2026-09-16 18:10:05 +02:00
  • ea60b2e4b3 docs(rules): README - undead death, pass-through movement, squeezing limit ctan 2026-09-16 15:53:46 +02:00
  • cad35e2e13 fix(rules): cure spells damage undead instead of healing ctan 2026-09-16 15:48:36 +02:00
  • 3e19d2974e feat(rules): SRD Mage Armor spell + non-stacking armor bonus type ctan 2026-09-16 15:36:43 +02:00
  • 881f2ef9b2 fix(rules): lich data conforms to the KB stat block ctan 2026-09-16 15:22:10 +02:00
  • 9a16ca0388 fix(rules): pass through 3+ size categories apart, entry provokes AoO ctan 2026-09-16 15:10:21 +02:00
  • 437507ee2c conformance: block 5-foot step on difficult terrain (SRD Take 5-Foot Step) ctan 2026-09-16 13:47:10 +02:00
  • 7fc7a1d6ec fix(combat): Block run action when cant_charge flag is set ctan 2026-09-16 13:28:17 +02:00
  • 2cc2ba1907 fix(combat): Thread 5-10-5 diagonal parity through all budget-consuming paths ctan 2026-09-16 13:15:49 +02:00
  • e5691bdb6f fix(rules): natural weapons get no BAB iteratives, secondary attacks at -5 ctan 2026-09-16 12:25:30 +02:00
  • 59caf67909 fix(rules): undead and constructs are destroyed at hp <= 0 ctan 2026-09-16 11:45:23 +02:00
  • 5e3505dc8c fix(rules): convert bane to a 50-ft enemies-only burst ctan 2026-09-16 11:37:23 +02:00
  • e43066e0ef feat(rules): restrict bless to allies in a 50-ft burst ctan 2026-09-16 11:14:46 +02:00
  • 312f9fd6b8 fix(rules): conform aid, bladed dash, doom, bulls/bears strength to the SRD ctan 2026-09-13 18:56:17 +02:00
  • 6c4bdc5d14 docs(rules): document the bladed dash approximation ctan 2026-09-13 17:43:09 +02:00
  • 0c141414a9 feat(rules): conform bulls strength, bears endurance and shield to the SRD ctan 2026-09-13 17:39:52 +02:00
  • b84238792c feat(rules): scale healing spells with caster level ctan 2026-09-13 17:19:58 +02:00
  • a2a80b8690 feat(rules): add firearm misfire and the quick clear deed ctan 2026-09-13 16:41:40 +02:00