vagabond-rpg-foundryvtt/.eslintrc.json
Cal Corum 51f0472d99 Implement Phase 1: Complete data model system for actors and items
Actor Data Models:
- VagabondActorBase: Shared base class with biography field
- CharacterData: Full PC schema with stats, skills, saves, resources,
  custom crit thresholds, dynamic resources, item slots, wealth tracking
- NPCData: Monster stat block with HD, HP, TL, zone, morale, actions,
  abilities, immunities/weaknesses

Item Data Models:
- VagabondItemBase: Shared base with description field
- AncestryData: Being type, size, racial traits
- ClassData: Progression tables, features, mana/casting, trained skills
- SpellData: Dynamic mana cost calculation, delivery/duration types
- PerkData: Prerequisites system, stat/skill/spell requirements
- WeaponData: Damage, grip, properties, attack types, crit thresholds
- ArmorData: Armor value, type, dodge penalty
- EquipmentData: Quantity, slots, consumables
- FeatureData: Class features with Active Effect changes

Active Effects Integration:
- Helper module for creating and managing Active Effects
- Effect key mapping for stats, saves, skills, crit thresholds
- Utilities for applying/removing item effects

Derived Value Calculations (CharacterData):
- Max HP = Might × Level
- Speed by Dexterity lookup
- Item Slots = 8 + Might - Fatigue
- Save difficulties from stat pairs
- Skill difficulties (trained doubles stat contribution)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 15:22:09 -06:00

130 lines
3.2 KiB
JSON

{
"env": {
"browser": true,
"es2022": true
},
"extends": ["eslint:recommended"],
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"globals": {
"game": "readonly",
"canvas": "readonly",
"ui": "readonly",
"CONFIG": "readonly",
"CONST": "readonly",
"Hooks": "readonly",
"Application": "readonly",
"FormApplication": "readonly",
"ActorSheet": "readonly",
"ItemSheet": "readonly",
"Actor": "readonly",
"Item": "readonly",
"ChatMessage": "readonly",
"Roll": "readonly",
"Dialog": "readonly",
"TextEditor": "readonly",
"FilePicker": "readonly",
"Handlebars": "readonly",
"foundry": "readonly",
"renderTemplate": "readonly",
"loadTemplates": "readonly",
"getTemplate": "readonly",
"fromUuid": "readonly",
"fromUuidSync": "readonly",
"duplicate": "readonly",
"mergeObject": "readonly",
"setProperty": "readonly",
"getProperty": "readonly",
"hasProperty": "readonly",
"expandObject": "readonly",
"flattenObject": "readonly",
"isObjectEmpty": "readonly",
"invertObject": "readonly",
"filterObject": "readonly",
"diffObject": "readonly",
"randomID": "readonly",
"debounce": "readonly",
"deepClone": "readonly",
"isEmpty": "readonly",
"getType": "readonly",
"ActiveEffect": "readonly",
"Token": "readonly",
"TokenDocument": "readonly",
"Scene": "readonly",
"User": "readonly",
"Folder": "readonly",
"Compendium": "readonly",
"CompendiumCollection": "readonly",
"DocumentSheetConfig": "readonly",
"ContextMenu": "readonly",
"DragDrop": "readonly",
"SearchFilter": "readonly",
"Tabs": "readonly",
"quench": "readonly"
},
"rules": {
"no-unused-vars": [
"warn",
{
"argsIgnorePattern": "^_",
"varsIgnorePattern": "^_"
}
],
"no-shadow": [
"error",
{
"builtinGlobals": true,
"hoist": "all",
"allow": [
"event",
"name",
"status",
"parent",
"top",
"close",
"open",
"print",
"origin",
"CharacterData"
]
}
],
"no-var": "error",
"prefer-const": "warn",
"eqeqeq": ["error", "smart"],
"curly": ["error", "multi-line"],
"no-console": ["warn", { "allow": ["warn", "error"] }],
"no-debugger": "warn",
"no-duplicate-imports": "error",
"no-template-curly-in-string": "warn",
"no-unreachable-loop": "error",
"no-use-before-define": [
"error",
{
"functions": false,
"classes": true,
"variables": true
}
],
"arrow-body-style": ["warn", "as-needed"],
"no-else-return": "warn",
"no-lonely-if": "warn",
"no-unneeded-ternary": "warn",
"prefer-arrow-callback": "warn",
"prefer-template": "warn",
"object-shorthand": "warn",
"spaced-comment": ["warn", "always", { "markers": ["/"] }]
},
"overrides": [
{
"files": ["**/*.test.mjs", "**/tests/**/*.mjs"],
"rules": {
"no-unused-expressions": "off"
}
}
],
"ignorePatterns": ["node_modules/", "foundrydata/", "styles/*.css", "*.min.js"]
}