vagabond-rpg-foundryvtt/packs/_source/classes/hunter.json
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

93 lines
3.5 KiB
JSON
Executable File

{
"_id": "vagabondClsHunter",
"_key": "!items!vagabondClsHunter",
"name": "Hunter",
"type": "class",
"img": "icons/svg/pawprint.svg",
"system": {
"description": "<p>Hunters are expert trackers and survivalists who mark their prey for destruction. Their ability to focus on a single target makes them deadly strikers who rarely miss their mark.</p>",
"keyStat": "awareness",
"actionStyle": "attack",
"zone": "midline",
"trainedSkills": ["survival"],
"startingPack": "<p>Scout or Warrior</p>",
"isCaster": false,
"progression": [
{
"level": 1,
"mana": 0,
"castingMax": 0,
"spellsKnown": 0,
"features": ["Hunter's Mark", "Survivalist"]
},
{ "level": 2, "mana": 0, "castingMax": 0, "spellsKnown": 0, "features": ["Rover"] },
{ "level": 3, "mana": 0, "castingMax": 0, "spellsKnown": 0, "features": ["Perk"] },
{ "level": 4, "mana": 0, "castingMax": 0, "spellsKnown": 0, "features": ["Overwatch"] },
{ "level": 5, "mana": 0, "castingMax": 0, "spellsKnown": 0, "features": ["Perk"] },
{ "level": 6, "mana": 0, "castingMax": 0, "spellsKnown": 0, "features": ["Quarry"] },
{ "level": 7, "mana": 0, "castingMax": 0, "spellsKnown": 0, "features": ["Perk"] },
{
"level": 8,
"mana": 0,
"castingMax": 0,
"spellsKnown": 0,
"features": ["Lethal Precision"]
},
{ "level": 9, "mana": 0, "castingMax": 0, "spellsKnown": 0, "features": ["Perk"] },
{ "level": 10, "mana": 0, "castingMax": 0, "spellsKnown": 0, "features": ["Apex Predator"] }
],
"features": [
{
"name": "Hunter's Mark",
"level": 1,
"description": "<p>You can mark a Being either when you attack it, or by skipping your Move if you can sense it. When you do: You must Focus on the mark. When you make an attack against it, roll two d20s and use the highest for the Check.</p>",
"passive": false,
"changes": []
},
{
"name": "Survivalist",
"level": 1,
"description": "<p>You gain the <strong>Padfoot Perk</strong>, you have Favor on Checks to track and navigate, and you can Forage while Traveling at a Normal Pace.</p>",
"passive": true,
"changes": []
},
{
"name": "Rover",
"level": 2,
"description": "<p>Difficult Terrain does not impede your walking Speed, and you have Climb and Swim.</p>",
"passive": true,
"changes": []
},
{
"name": "Overwatch",
"level": 4,
"description": "<p>Your additional d20 for attacks with your Hunter's Mark also applies to your Saves provoked by the marked Target.</p>",
"passive": true,
"changes": []
},
{
"name": "Quarry",
"level": 6,
"description": "<p>You can sense Beings that are missing any HP within Far or that are marked by your Hunter's Mark as if by Blindsight.</p>",
"passive": true,
"changes": []
},
{
"name": "Lethal Precision",
"level": 8,
"description": "<p>You now roll three d20s with your Hunter's Mark and Overwatch Features and use the highest result of the three for the result.</p>",
"passive": true,
"changes": []
},
{
"name": "Apex Predator",
"level": 10,
"description": "<p>Damage dealt to the Target of your Hunter's Mark ignores Immune and 1 of its Armor.</p>",
"passive": true,
"changes": []
}
],
"customResource": {}
}
}