{
  "type": "character-with-spellbook",
  "version": 1,
  "exportedAt": "2026-01-01T00:00:00.000Z",
  "_comment_top": "This is an example character template for Goblinforge. Import this file to create a pre-filled character with a linked spellbook.",
  "_comment_type": "type must be 'character' or 'character-with-spellbook' (if including a spellbook section)",
  "character": {
    "_comment_skills": "Skill values: 0 = not proficient, 1 = proficient, 2 = expertise",
    "_comment_saves": "Save values: 0 = not proficient, 1 = proficient",
    "_comment_weapons": "weaponType examples: 'Martial Melee', 'Simple Ranged', etc. Set isCustom to true for homebrew weapons",
    "_comment_special_items": "Exactly 5 slots. Leave name/desc empty for unused slots",
    "_comment_spell_slots": "Keys are spell level 1-9. Set to 0 for levels the class cannot cast",
    "_comment_deathSave": "Track current death save successes and failures (0-3 each)",
    "_comment_class_points": "Generic resource pool (e.g., Ki Points, Sorcery Points, Bardic Inspiration dice). Set both to 0 if not applicable",
    "charname": "Template McTemplateface",
    "charclass": "Bard",
    "race": "Human",
    "subrace": "",
    "subclass": "College of Lore",
    "background": "Acolyte",
    "alignment": "Chaotic Good",
    "level": 5,
    "experience": 6500,
    "inspiration": 1,
    "armor_class": 14,
    "speed": 30,
    "darkvision": 0,
    "hp_cur": 33,
    "hp_max": 38,
    "temp_hp": 0,
    "hd_cur": 5,
    "hd_max": 5,
    "deathSave": {
      "success": 0,
      "fail": 0
    },
    "class_points": {
      "cur": 3,
      "max": 3
    },
    "str": 9,
    "dex": 15,
    "con": 15,
    "intel": 11,
    "wis": 13,
    "cha": 18,
    "saves": {
      "str": 0,
      "dex": 1,
      "con": 0,
      "intel": 0,
      "wis": 0,
      "cha": 1
    },
    "skills": {
      "acrobatics": 0,
      "animal_handling": 0,
      "arcana": 1,
      "athletics": 0,
      "deception": 1,
      "history": 1,
      "insight": 1,
      "intimidation": 0,
      "investigation": 0,
      "medicine": 0,
      "nature": 0,
      "perception": 2,
      "performance": 2,
      "persuasion": 1,
      "religion": 1,
      "sleight_of_hand": 0,
      "stealth": 0,
      "survival": 0
    },
    "pinnedWeapons": [],
    "weapons": [
      {
        "name": "Rapier",
        "attack": "+5",
        "damage": "1d8+2 piercing",
        "range": "",
        "notes": "Finesse",
        "weaponType": "Martial Melee",
        "isCustom": false,
        "equipped": true
      },
      {
        "name": "Dagger",
        "attack": "+5",
        "damage": "1d4+2 piercing",
        "range": "20/60",
        "notes": "Finesse, Light, Thrown",
        "weaponType": "Simple Melee",
        "isCustom": false,
        "equipped": true
      }
    ],
    "cp": 30,
    "sp": 15,
    "gp": 120,
    "pp": 3,
    "proficiencies_other": "Lute, Flute, Drum",
    "languages": "Common, Celestial, Elvish",
    "traits": "I know a story relevant to almost every situation. I change my mood or my mind as quickly as I change key in a song.",
    "ideals": "Creativity. The world is in need of new ideas and bold action.",
    "bonds": "My instrument is my most treasured possession, and it reminds me of someone I love.",
    "flaws": "I once satirized a noble who still wants my head. It was a good song, though.",
    "appearance": "Warm brown skin, bright amber eyes, and a mane of dark curly hair tied back with a silver clasp. Always wearing a lute across the back.",
    "equipment": [
      "Leather Armor",
      "Priest's Pack"
    ],
    "features": [
      "Bardic Inspiration (d8)",
      "Jack of All Trades",
      "Song of Rest (d6)",
      "Expertise",
      "Font of Inspiration",
      "Bonus Proficiencies",
      "Cutting Words"
    ],
    "inventory": [
      "Lute",
      "Holy symbol",
      "Prayer book"
    ],
    "adventuringGear": [
      { "name": "Rope, Hempen (50 feet)", "qty": 1, "tag": "gear" },
      { "name": "Healer's Kit", "qty": 1, "tag": "gear" }
    ],
    "magicItems": [],
    "loot": [
      "Sapphire pendant (worth 100 gp)",
      "Embroidered silk handkerchief (worth 5 gp)"
    ],
    "questItems": [
      "Sheet music from a forgotten composer",
      "Sealed letter addressed to the Duke of Silverymoon"
    ],
    "pendingEquipmentChoices": [],
    "special_items": [
      { "name": "Silver Lute Pick", "desc": "A gift from your mentor. You play better with it — or at least you believe you do." },
      { "name": "Fey Songbook", "desc": "A small journal of ballads collected from the Feywild. Some melodies feel almost magical." },
      { "name": "", "desc": "" },
      { "name": "", "desc": "" },
      { "name": "", "desc": "" }
    ],
    "notes": "Party: Gorin (Dwarf Fighter), Lyriel (Elf Wizard), Thane (Human Cleric).\nNext session: perform at the Festival of Stars to win an audience with the Queen.",
    "npcs": [
      "Maestro Calloway — former mentor, retired bard living in Neverwinter",
      "Lady Ashford — noble patron who funds our adventures"
    ],
    "backstory": "Template grew up in a traveling theater troupe, learning songs and stories from every town they visited. When the troupe disbanded after a mysterious fire, Template struck out alone, armed with nothing but a lute and a silver tongue. Now they wander the Sword Coast, collecting tales worth telling — and occasionally living ones worth singing about.",
    "spell_ability": "Charisma",
    "spell_save": "15",
    "spell_attack": "+7",
    "spell_slots": { "1": 4, "2": 3, "3": 2, "4": 0, "5": 0, "6": 0, "7": 0, "8": 0, "9": 0 },
    "spell_slots_cur": { "1": 3, "2": 2, "3": 2, "4": 0, "5": 0, "6": 0, "7": 0, "8": 0, "9": 0 },
    "feats": [],
    "featureSelections": {
      "subclass": "College of Lore",
      "expertise_1": "Performance",
      "expertise_2": "Perception"
    },
    "featSelections": {},
    "classSkillProficiencies": [
      "Deception",
      "Performance",
      "Persuasion"
    ],
    "classSaveProficiencies": [
      "Dexterity",
      "Charisma"
    ],
    "backgroundChoices": {
      "language_1": "Celestial",
      "language_2": "Elvish"
    },
    "raceFeatureSelections": {},
    "asiSelections": {
      "4": {
        "choice": "asi",
        "ability1": "cha",
        "ability2": "cha"
      }
    },
    "wizardDefaults": {
      "abilities": { "str": 9, "dex": 15, "con": 15, "intel": 11, "wis": 13, "cha": 16 },
      "skills": {
        "acrobatics": 0, "animal_handling": 0, "arcana": 1, "athletics": 0,
        "deception": 1, "history": 1, "insight": 1, "intimidation": 0,
        "investigation": 0, "medicine": 0, "nature": 0, "perception": 2,
        "performance": 2, "persuasion": 1, "religion": 1, "sleight_of_hand": 0,
        "stealth": 0, "survival": 0
      },
      "saves": { "str": 0, "dex": 1, "con": 0, "intel": 0, "wis": 0, "cha": 1 },
      "languages": "Common, Celestial, Elvish",
      "proficiencies_other": "Lute, Flute, Drum"
    },
    "profileImage": "",
    "created": "2026-01-01T00:00:00.000Z",
    "updated": "2026-01-01T00:00:00.000Z"
  },
  "spellbook": {
    "_comment_spells": "Spell IDs are slugified spell names (lowercase, hyphens). Spells use the normalized internal format: camelCase keys (castingTime, attackType, saveType, damageType, effectSummary, areaOfEffect, atHigherLevels), components as array (['V', 'S', 'M (description)']), classes as array of class names.",
    "_comment_preparedSpells": "Array of spell IDs that the character currently has prepared. Bards know spells rather than prepare them, but this array still tracks active selections.",
    "_comment_combat_fields": "attackType, saveType, damage, damageType, healing, conditions, areaOfEffect, effectSummary — structured combat data for spell rows. null when not applicable, [] for empty conditions.",
    "name": "Template's Songbook",
    "className": "Bard",
    "level": 5,
    "abilityModifier": 4,
    "color": "#2A5F5B",
    "spells": [
      {
        "id": "vicious-mockery",
        "name": "Vicious Mockery",
        "level": 0,
        "school": "Enchantment",
        "classes": ["Bard"],
        "castingTime": "Action",
        "range": "60 feet",
        "components": ["V"],
        "duration": "Instantaneous",
        "concentration": false,
        "ritual": false,
        "description": "Source: Player's Handbook\n\nYou unleash a string of insults laced with subtle enchantments at a creature you can see within range. If the target can hear you (though it need not understand you), it must succeed on a Wisdom saving throw or take 1d4 psychic damage and have disadvantage on the next attack roll it makes before the end of its next turn.",
        "atHigherLevels": "This spell's damage increases by 1d4 when you reach 5th level (2d4), 11th level (3d4), and 17th level (4d4).",
        "attackType": null,
        "saveType": "WIS",
        "damage": "1d4",
        "damageType": "psychic",
        "healing": null,
        "conditions": [],
        "areaOfEffect": null,
        "effectSummary": null,
        "srd": true
      },
      {
        "id": "minor-illusion",
        "name": "Minor Illusion",
        "level": 0,
        "school": "Illusion",
        "classes": ["Bard", "Sorcerer", "Warlock", "Wizard"],
        "castingTime": "Action",
        "range": "30 feet",
        "components": ["S", "M (a bit of fleece)"],
        "duration": "1 minute",
        "concentration": false,
        "ritual": false,
        "description": "Source: Player's Handbook\n\nYou create a sound or an image of an object within range that lasts for the duration. The illusion also ends if you dismiss it as an action or cast this spell again. If you create a sound, its volume can range from a whisper to a scream. It can be your voice, someone else's voice, a lion's roar, a beating of drums, or any other sound you choose. The sound continues unabated throughout the duration, or you can make discrete sounds at different times before the spell ends. If you create an image of an object—such as a chair, muddy footprints, or a small chest—it must be no larger than a 5-foot cube. The image can't create sound, light, smell, or any other sensory effect. Physical interaction with the image reveals it to be an illusion, because things can pass through it. If a creature uses its action to examine the sound or image, the creature can determine that it is an illusion with a successful Intelligence (Investigation) check against your spell save DC. If a creature discerns the illusion for what it is, the illusion becomes faint to the creature.",
        "material": "a bit of fleece",
        "attackType": null,
        "saveType": null,
        "damage": null,
        "damageType": null,
        "healing": null,
        "conditions": [],
        "areaOfEffect": "5-foot cube",
        "effectSummary": "create sound or image",
        "srd": true
      },
      {
        "id": "healing-word",
        "name": "Healing Word",
        "level": 1,
        "school": "Evocation",
        "classes": ["Bard", "Cleric", "Druid"],
        "castingTime": "Bonus Action",
        "range": "60 feet",
        "components": ["V"],
        "duration": "Instantaneous",
        "concentration": false,
        "ritual": false,
        "description": "Source: Player's Handbook\n\nA creature of your choice that you can see within range regains hit points equal to 1d4 + your spellcasting ability modifier. This spell has no effect on undead or constructs.",
        "atHigherLevels": "When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d4 for each slot level above 1st.",
        "attackType": null,
        "saveType": null,
        "damage": null,
        "damageType": null,
        "healing": "1d4",
        "conditions": [],
        "areaOfEffect": null,
        "effectSummary": null,
        "srd": true
      },
      {
        "id": "thunderwave",
        "name": "Thunderwave",
        "level": 1,
        "school": "Evocation",
        "classes": ["Bard", "Druid", "Sorcerer", "Wizard"],
        "castingTime": "Action",
        "range": "Self (15-foot cube)",
        "components": ["V", "S"],
        "duration": "Instantaneous",
        "concentration": false,
        "ritual": false,
        "description": "Source: Player's Handbook\n\nA wave of thunderous force sweeps out from you. Each creature in a 15-foot cube originating from you must make a Constitution saving throw. On a failed save, a creature takes 2d8 thunder damage and is pushed 10 feet away from you. On a successful save, the creature takes half as much damage and isn't pushed. In addition, unsecured objects that are completely within the area of effect are automatically pushed 10 feet away from you by the spell's effect, and the spell emits a thunderous boom audible out to 300 feet.",
        "atHigherLevels": "When you cast this spell using a spell slot of 2nd level or higher, the damage increases by 1d8 for each slot level above 1st.",
        "attackType": null,
        "saveType": "CON",
        "damage": "2d8",
        "damageType": "thunder",
        "healing": null,
        "conditions": [],
        "areaOfEffect": "15-foot cube",
        "effectSummary": null,
        "srd": true
      },
      {
        "id": "faerie-fire",
        "name": "Faerie Fire",
        "level": 1,
        "school": "Evocation",
        "classes": ["Artificer", "Bard", "Druid"],
        "castingTime": "Action",
        "range": "60 feet",
        "components": ["V"],
        "duration": "Concentration, up to 1 minute",
        "concentration": true,
        "ritual": false,
        "description": "Source: Player's Handbook\n\nEach object in a 20-foot cube within range is outlined in blue, green, or violet light (your choice). Any creature in the area when the spell is cast is also outlined in light if it fails a Dexterity saving throw. For the duration, objects and affected creatures shed dim light in a 10-foot radius. Any attack roll against an affected creature or object has advantage if the attacker can see it, and the affected creature or object can't benefit from being invisible.",
        "attackType": null,
        "saveType": "DEX",
        "damage": null,
        "damageType": null,
        "healing": null,
        "conditions": [],
        "areaOfEffect": "20-foot cube",
        "effectSummary": null,
        "srd": true
      },
      {
        "id": "hold-person",
        "name": "Hold Person",
        "level": 2,
        "school": "Enchantment",
        "classes": ["Bard", "Cleric", "Druid", "Sorcerer", "Warlock", "Wizard"],
        "castingTime": "Action",
        "range": "60 feet",
        "components": ["V", "S", "M (a small, straight piece of iron)"],
        "duration": "Concentration, up to 1 minute",
        "concentration": true,
        "ritual": false,
        "description": "Source: Player's Handbook\n\nChoose a humanoid that you can see within range. The target must succeed on a Wisdom saving throw or be paralyzed for the duration. At the end of each of its turns, the target can make another Wisdom saving throw. On a success, the spell ends on the target.",
        "atHigherLevels": "When you cast this spell using a spell slot of 3rd level or higher, you can target one additional humanoid for each slot level above 2nd. The humanoids must be within 30 feet of each other when you target them.",
        "material": "a small, straight piece of iron",
        "attackType": null,
        "saveType": "WIS",
        "damage": null,
        "damageType": null,
        "healing": null,
        "conditions": ["paralyzed"],
        "areaOfEffect": null,
        "effectSummary": null,
        "srd": true
      },
      {
        "id": "shatter",
        "name": "Shatter",
        "level": 2,
        "school": "Evocation",
        "classes": ["Bard", "Sorcerer", "Warlock", "Wizard"],
        "castingTime": "Action",
        "range": "60 feet",
        "components": ["V", "S", "M (a chip of mica)"],
        "duration": "Instantaneous",
        "concentration": false,
        "ritual": false,
        "description": "Source: Player's Handbook\n\nA sudden loud ringing noise, painfully intense, erupts from a point of your choice within range. Each creature in a 10-foot-radius sphere centered on that point must make a Constitution saving throw. A creature takes 3d8 thunder damage on a failed save, or half as much damage on a successful one. A creature made of inorganic material such as stone, crystal, or metal has disadvantage on this saving throw. A nonmagical object that isn't being worn or carried also takes the damage if it's in the spell's area.",
        "atHigherLevels": "When you cast this spell using a spell slot of 3rd level or higher, the damage increases by 1d8 for each slot level above 2nd.",
        "material": "a chip of mica",
        "attackType": null,
        "saveType": "CON",
        "damage": "3d8",
        "damageType": "thunder",
        "healing": null,
        "conditions": [],
        "areaOfEffect": "10-foot sphere",
        "effectSummary": null,
        "srd": true
      },
      {
        "id": "hypnotic-pattern",
        "name": "Hypnotic Pattern",
        "level": 3,
        "school": "Illusion",
        "classes": ["Bard", "Sorcerer", "Warlock", "Wizard"],
        "castingTime": "Action",
        "range": "120 feet",
        "components": ["S", "M (a glowing stick of incense or a crystal vial filled with phosphorescent material)"],
        "duration": "Concentration, up to 1 minute",
        "concentration": true,
        "ritual": false,
        "description": "Source: Player's Handbook\n\nYou create a twisting pattern of colors that weaves through the air inside a 30-foot cube within range. The pattern appears for a moment and vanishes. Each creature in the area who sees the pattern must make a Wisdom saving throw. On a failed save, the creature becomes charmed for the duration. While charmed by this spell, the creature is incapacitated and has a speed of 0. The spell ends for an affected creature if it takes any damage or if someone else uses an action to shake the creature out of its stupor.",
        "material": "a glowing stick of incense or a crystal vial filled with phosphorescent material",
        "attackType": null,
        "saveType": "WIS",
        "damage": null,
        "damageType": null,
        "healing": null,
        "conditions": ["charmed", "incapacitated"],
        "areaOfEffect": "30-foot cube",
        "effectSummary": null,
        "srd": true
      }
    ],
    "preparedSpells": [
      "healing-word",
      "faerie-fire",
      "hold-person",
      "hypnotic-pattern"
    ]
  }
}
