Commit Graph

16 Commits

Author SHA1 Message Date
Cal Corum
0325343931 Fix spell cast dialog buttons and add scrollbar support
- Remove duplicate event listeners from SpellCastDialog._onRender()
  (favor/hinder and modifier presets are handled by parent class)
- Add scrollbar support to all roll dialogs via .window-content styling
  (overflow-y: auto, max-height: 80vh, custom scrollbar)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 14:47:02 -06:00
Cal Corum
bf2cd92e93 Add Status item system and separate attack/damage rolls
Status System:
- Add StatusData model with mechanical modifiers (damageDealt, healingReceived)
- Add status item sheet with modifier configuration
- Add status-bar.hbs for displaying status chips on actor sheets
- Status chips show tooltip on hover, can be removed via click
- Add 17 status items to compendium (Blinded, Burning, Charmed, etc.)
- Frightened applies -2 damage dealt, Sickened applies -2 healing received

Attack Roll Changes:
- Separate attack and damage into two discrete rolls
- Attack hit now shows "Roll Damage" button instead of auto-rolling
- Button click rolls damage and updates the chat message in-place
- Store weapon/attack data in message flags for later damage rolling
- Fix favor/hinder and modifier preset buttons in attack dialog
- Show individual damage dice results in chat card breakdown

Mechanical Integration:
- Add _applyStatusModifiers() to VagabondActor for aggregating status effects
- Update getRollData() to include statusModifiers for roll formulas
- Update damageRoll() to automatically apply damageDealt modifier
- Update applyHealing() to respect healingReceived modifier

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 14:36:57 -06:00
Cal Corum
8d44b06f40 Add bestiary compendium - Humanlike category (21 NPCs)
First batch of bestiary creatures from Core Rulebook pp.112-114:
- Acolyte, Apothecary, Assassin, Bandit, Bard, Berserker, Brigand
- Commoner, Cultist, Gladiator, Guard, Knight
- Mage (Fire, Frost, Shock), Noble, Scout, Thug, Trader
- Veteran, Warlord

All entries include: HD, HP, TL, Armor, Morale, Zone, Speed,
Actions (with damage/type), and Abilities where applicable.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 10:21:58 -06:00
Cal Corum
8af585133b Update roadmap: mark compendium tasks 6.4-6.8 complete
- 6.4: 58 spells with full metadata
- 6.5: 103 perks with structured prerequisites
- 6.6: 43 weapons with properties
- 6.7: 5 armor items (including barding)
- 6.8: 368 equipment items with Silver Standard values

Also added system.json pack definitions and build scripts for
weapons, armor, and equipment compendiums.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 01:05:44 -06:00
Cal Corum
1a36139387 Add slotsWhenEquipped system and equipment Active Effect sync
- Add getTotalSlots() method to base-item.mjs as unified interface
- Add slotsWhenEquipped field to weapon, armor, and equipment schemas
- Implement getTotalSlots() in each item type respecting equipped state
- Update actor slot calculation to use getTotalSlots() uniformly
- Add _onUpdate hook to sync equipment effects with equipped state
- Update backpack with slotsWhenEquipped: 0 and +2 slot bonus effect

Backpack now correctly:
- Costs 1 slot when unequipped, 0 when equipped
- Grants +2 max item slots via Active Effect when equipped

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 00:34:16 -06:00
Cal Corum
77706eafe2 Add complete equipment compendium (368 items) + fix Silver Standard values
Equipment compendium:
- 286 adventuring gear items (tools, clothing, instruments, containers, etc.)
- 82 alchemical items (potions, oils, poisons, acids, explosives)
- Proper categorization (gear, tool, consumable, container, treasure)
- Comprehensive tagging for filtering
- Consumable items with uses tracking
- Container capacity for backpacks etc.

Value correction (Silver Standard):
- Fixed all weapon, armor, and equipment values
- Vagabond uses Silver Standard: 1g = 100s, 1s = 100c
- Previous values were 10x too low (assumed 1s = 10c)
- All 415 item values now correct

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 23:59:18 -06:00
Cal Corum
4110d79489 Add complete armor compendium (5 items)
- Light Armor: 1 armor, 500c, 2 slots, requires Might 3
- Medium Armor: 2 armor, 1000c, 2 slots, requires Might 4
- Heavy Armor: 3 armor, 2000c, 3 slots, requires Might 5
- Light Barding: 1 armor, 1000c, 2 slots (for mounts)
- Heavy Barding: 3 armor, 2500c, 3 slots (for mounts)

All values match NoteDiscovery source (1g = 10s = 100c)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 23:20:54 -06:00
Cal Corum
49b60954fe Add complete weapons compendium (43 weapons)
- Generate all 43 weapon JSON files with proper data model
- Parse damage dice, grip types, ranges, properties from source
- Convert values to copper (1g = 10s = 100c)
- Map properties: Brawl, Brutal, Cleave, Entangle, Finesse, Keen, Long, Near, Ranged, Shield, Thrown
- Calculate versatile damage (increased die size for 2H grip)
- Assign damage types: blunt/piercing/slashing based on weapon type
- Add validation script for future verification
- All weapons validated against NoteDiscovery source

Weapon categories:
- Melee: 28 (swords, axes, hammers, polearms)
- Ranged: 10 (bows, crossbows, firearms)
- Brawl: 5 (caestus, gauntlet, katar, unarmed)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 23:19:30 -06:00
Cal Corum
fae29030a2 Add complete perks compendium (103 perks)
- Generate all 103 perk JSON files with structured prerequisites
- Parse stat requirements (MIT/DEX/AWR/RSN/PRS/LUK with thresholds)
- Parse trained skill requirements (AND/OR conditions)
- Parse spell prerequisites and custom resource requirements
- Detect ritual perks (8 total) with duration parsing
- Tag repeatable perks (7 total)
- Assign context-aware tags (combat, defensive, utility, social, etc.)
- Add validation script for future verification
- All perks validated against NoteDiscovery source

Perk categories:
- Combat perks: 45
- Magic-enhancing perks: 28
- Ritual perks: 8 (Athame, Familiar, Medium, etc.)
- Repeatable perks: 7 (Advancement, Bookworm, Pack Mule, etc.)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 23:08:29 -06:00
Cal Corum
18df9e4395 Add complete spells compendium (58 spells)
- Create all 58 spell JSON files with correct data model structure
- Validate all spells against NoteDiscovery source content
- Include damage types, effects, crit effects, delivery types, duration types
- Add validation script for future compendium verification
- All spells marked as reviewed after human approval

Spells by damage type:
- Fire: Apoplex, Burn, Erupt, Light
- Cold: Fog, Freeze, Frostburn, Moon
- Shock: Disintegrate, Zap
- Acid: Enflesh, Goop, Rust
- Poison: Gas, Leech
- Blunt: Kinesis, Terraform
- None: 41 utility/buff/control spells

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 22:48:26 -06:00
Cal Corum
fa71f3b985 Implement Active Effects automation (Phase 11)
Schema & Documentation:
- Extended EFFECT_KEYS with 24 new mappings: senses (6), movement
  capabilities (5), skill training (12), focus tracking
- Created docs/ACTIVE_EFFECTS_REFERENCE.md with comprehensive guide
  for effect keys, modes, JSON format, and formula support

Ancestry Automation:
- Goblin: Darksight (darkvision), Nimble (+5 speed)
- Orc: Darksight (darkvision), Hulking (+2 item slots)
- Halfling: Nimble (+5 speed)
- Draken: Scale (+1 armor)
- Dwarf already had automation from earlier work

Class Automation:
- Wizard: Manifold Mind I/II (+1 focus.maxConcurrent each)
- Fighter Valor already automated (proof of concept)
- Gunslinger Deadeye deferred (dynamic, not static bonus)

Added Phase 11 to PROJECT_ROADMAP.json with 18 tasks (10 complete,
8 deferred for conditional flags/UI/state tracking).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 22:13:18 -06:00
Cal Corum
828cfed006 Review and correct perk compendium JSONs, delete fabricated perk
Perks corrected:
- Sharpshooter: Fixed prereq DEX 4 → AWR 7, effect now correctly
  reduces crit roll by 1 when skipping Move (was +1 damage)
- Situational Awareness: Added missing Detect training prereq,
  fixed effect to Favor on surprise checks + flanking doesn't Hinder
- Tough: Fixed prereq MIT 4 → MIT 7, effect now +Level HP scaling
  (was flat +5 HP)

Deleted:
- Weapon Mastery: Completely fabricated perk not in source material

Also marked all 7 ancestries as reviewed (were already correct except
Dwarf's Tough trait which was fixed in previous session).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 16:36:41 -06:00
Cal Corum
e8370afcc3 Review and correct all 18 class compendium JSONs
- Add skillTraining schema: supports fixed grants and player choices
  e.g., [{ type: "fixed", skills: ["arcana"], count: 1 },
         { type: "choice", skills: ["detect", "influence"], count: 3 }]
- Add weaponTraining schema: ["melee", "ranged"] or []
- Correct all class features, progressions, and descriptions from source
- Fix mana progressions (accumulating values, not flat)
- Replace fabricated D&D-style features with actual Vagabond features
- Add official flavor text from rulebook
- Mark all classes as reviewed: true
- Add reviewed: false to ancestry and perk JSONs for upcoming review
- Add castingMax formula TODO to PROJECT_ROADMAP.json (task 2.15)

Classes corrected: Alchemist, Barbarian, Bard, Dancer, Druid, Fighter,
Gunslinger, Hunter, Luminary, Magus, Merchant, Pugilist, Revelator,
Rogue, Sorcerer, Vanguard, Witch, Wizard

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 16:24:59 -06:00
Cal Corum
36a1e501f2 Add compendium data review requirement and checklist
- CLAUDE.md: Added mandatory human review process for all packs/_source/ changes
- REVIEW_CHECKLIST.md: Detailed validation checklist for classes, ancestries, perks, spells

Prevents hallucinated flavor text and incorrect game mechanics from being committed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 14:49:40 -06:00
Cal Corum
06e0dc01c0 Complete P2-P5: Perks, Feature Choices, Ancestry Traits, Caster Progression
- P2: Perks with changes[] arrays create Active Effects on drop/delete
- P3: Feature choice UI for Fighting Style (auto-grants Situational
  Awareness + selected training perk, ignoring prerequisites)
- P4: Ancestry traits apply Active Effects (Dwarf Darksight/Tough working)
- P5: Caster progression accumulates mana from class progression table

Key patterns:
- Manual UUID construction: Compendium.${pack.collection}.Item.${entry._id}
- ignorePrereqs flag for specific choices bypassing all prerequisites
- Mode 5 (OVERRIDE) for boolean senses like darkvision
- Form data merging with direct DOM reading for reliable selection capture

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 14:23:44 -06:00
Cal Corum
a7862bedd5 Implement class level-up system with Active Effects
- Add level-up dialog (ApplicationV2) showing features gained per level
- Class features with `changes` arrays auto-create Active Effects
- Valor I/II/III on Fighter reduces crit threshold cumulatively (-1/-2/-3)
- Perk selection UI in dialog (awaits perk compendium content)
- Fix duplicate item creation bug (was double drop handling)
- Configure proper dragDrop in ActorSheetV2 DEFAULT_OPTIONS
- Add ancestries and classes compendium packs with LevelDB format
- Docker compose PUID/PGID for proper file permissions

Key patterns established:
- Class progression stored in item.system.progression[]
- Features with changes[] become ActiveEffects on level-up
- applyClassFeatures() is idempotent (checks existing effects)
- updateClassFeatures() handles level changes incrementally

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 12:14:08 -06:00