# actor.rpg.stats

> Published by [rpg.actor](https://lexicon.garden/identity/did:plc:kwgllf365cwmxbnxitx4pjdj)

✓ This is the authoritative definition for this NSID.

## Description

RPG character statistics for multiple game systems.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:kwgllf365cwmxbnxitx4pjdj/actor.rpg.stats)
- [Documentation](https://lexicon.garden/lexicon/did:plc:kwgllf365cwmxbnxitx4pjdj/actor.rpg.stats/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:kwgllf365cwmxbnxitx4pjdj/actor.rpg.stats/examples)

## Definitions

### `actor.rpg.stats#hp`

**Type**: `object`

Hit point tracking

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `max` | `integer` | No | Maximum HP |
| `temp` | `integer` | No | Temporary HP |
| `current` | `integer` | No | Current HP |

### `actor.rpg.stats`

**Type**: `record`

A user's RPG character statistics. One record per user (rkey: self).

**Key**: `literal:self`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `dcc` | `ref` → `#dccStats` | No | Dungeon Crawl Classics RPG character sheet |
| `dnd` | `ref` → `#dndStats` | No | Dungeons & Dragons 5th Edition character sheet |
| `rmmz` | `ref` → `#rmmzStats` | No | RPG Maker MZ engine character parameters |
| `custom` | `ref` → `#customStats` | No | User-defined custom stat system |
| `reverie` | `ref` → `#reverieStats` | No | Reverie House philosophical alignment |
| `createdAt` | `string` (datetime) | Yes | Timestamp when this record was created |
| `playtopia` | `ref` → `#playtopiaStats` | No | Playtopia Quest character sheet |
| `updatedAt` | `string` (datetime) | No | Timestamp when this record was last modified |

### `actor.rpg.stats#dccHp`

**Type**: `object`

Hit points (0-level characters use 1d4 + STA mod)

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `max` | `integer` | No | Maximum HP |
| `current` | `integer` | No | Current HP |

### `actor.rpg.stats#saves`

**Type**: `object`

Saving throw modifiers (actual values, not proficiency flags)

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `cha` | `integer` | No | Charisma save modifier |
| `con` | `integer` | No | Constitution save modifier |
| `dex` | `integer` | No | Dexterity save modifier |
| `int` | `integer` | No | Intelligence save modifier |
| `str` | `integer` | No | Strength save modifier |
| `wis` | `integer` | No | Wisdom save modifier |

### `actor.rpg.stats#attack`

**Type**: `object`

An attack action

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `name` | `string` | Yes | Attack name |
| `bonus` | `string` | No | Attack bonus (e.g., +5) |
| `damage` | `string` | No | Damage dice (e.g., 1d8) |
| `damageType` | `string` | No | Damage type |
| `damageBonus` | `integer` | No | Damage bonus |

### `actor.rpg.stats#combat`

**Type**: `object`

Combat and defensive stats

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `ac` | `integer` | No | Armor Class |
| `speed` | `integer` | No | Speed in feet |
| `hitDice` | `string` | No | Hit dice (e.g., 5d10) |
| `initiative` | `integer` | No | Initiative modifier |
| `hitDiceUsed` | `integer` | No | Hit dice expended |

### `actor.rpg.stats#skills`

**Type**: `object`

Skill modifiers (actual values, not proficiency flags)

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `arcana` | `integer` | No | Arcana (INT) |
| `nature` | `integer` | No | Nature (INT) |
| `history` | `integer` | No | History (INT) |
| `insight` | `integer` | No | Insight (WIS) |
| `stealth` | `integer` | No | Stealth (DEX) |
| `medicine` | `integer` | No | Medicine (WIS) |
| `religion` | `integer` | No | Religion (INT) |
| `survival` | `integer` | No | Survival (WIS) |
| `athletics` | `integer` | No | Athletics (STR) |
| `deception` | `integer` | No | Deception (CHA) |
| `acrobatics` | `integer` | No | Acrobatics (DEX) |
| `perception` | `integer` | No | Perception (WIS) |
| `persuasion` | `integer` | No | Persuasion (CHA) |
| `performance` | `integer` | No | Performance (CHA) |
| `intimidation` | `integer` | No | Intimidation (CHA) |
| `investigation` | `integer` | No | Investigation (INT) |
| `sleightOfHand` | `integer` | No | Sleight of Hand (DEX) |
| `animalHandling` | `integer` | No | Animal Handling (WIS) |

### `actor.rpg.stats#coinage`

**Type**: `object`

Currency

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `cp` | `integer` | No | Copper pieces |
| `ep` | `integer` | No | Electrum pieces |
| `gp` | `integer` | No | Gold pieces |
| `pp` | `integer` | No | Platinum pieces |
| `sp` | `integer` | No | Silver pieces |

### `actor.rpg.stats#dccLuck`

**Type**: `object`

Birth augur and luck mechanics

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `birthAugur` | `string` | No | Birth augur name (e.g., Harsh Winter, The Bull, Fortunate Date) |
| `luckyWeapon` | `string` | No | Weapon type that luck applies to (Dwarves/Halflings) |
| `startingLuck` | `integer` | No | Starting luck score (for tracking burned luck) |
| `birthAugurEffect` | `string` | No | What the luck modifier applies to |

### `actor.rpg.stats#dccSaves`

**Type**: `object`

DCC saving throws (3 saves, not 6)

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `ref` | `integer` | No | Reflex save modifier |
| `fort` | `integer` | No | Fortitude save modifier |
| `will` | `integer` | No | Willpower save modifier |

### `actor.rpg.stats#dccStats`

**Type**: `object`

Dungeon Crawl Classics RPG character sheet. Supports 0-level funnel characters through 10th level.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `hp` | `ref` → `#dccHp` | No | Hit points |
| `luck` | `ref` → `#dccLuck` | No | Birth augur and luck tracking |
| `notes` | `string` | No | Character notes, backstory, and special abilities |
| `saves` | `ref` → `#dccSaves` | No | Saving throws (Reflex, Fortitude, Willpower) |
| `thief` | `ref` → `#dccThief` | No | Thief skills and abilities |
| `cleric` | `ref` → `#dccCleric` | No | Cleric spellcasting (disapproval, turn unholy, lay on hands) |
| `combat` | `ref` → `#dccCombat` | No | Combat stats (AC, speed, action die, initiative, crit die/table) |
| `wizard` | `ref` → `#dccWizard` | No | Wizard/Elf spellcasting (spellburn, corruption, mercurial magic) |
| `attacks` | `array` | No | Weapon attacks |
| `coinage` | `ref` → `#dccCoinage` | No | Currency (cp, sp, gp) |
| `warrior` | `ref` → `#dccWarrior` | No | Warrior/Dwarf class features (deed die, mighty deeds) |
| `halfling` | `ref` → `#dccHalfling` | No | Halfling luck-sharing and dual wielding |
| `identity` | `ref` → `#dccIdentity` | No | Character identity (occupation, class, level, alignment) |
| `abilities` | `ref` → `#dccAbilities` | No | The six ability scores (STR, AGI, STA, INT, PER, LUK) |
| `equipment` | `ref` → `#dccEquipment` | No | Gear, treasure, and trade goods |
| `languages` | `string` | No | Languages known |
| `abilitiesNotes` | `string` | No | Notes about special abilities, class features, and racial traits |

### `actor.rpg.stats#dccThief`

**Type**: `object`

Thief class features and skills

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `skills` | `ref` → `#dccThiefSkills` | No | Thief skill modifiers |
| `backstab` | `integer` | No | Backstab damage die level (+1, +2, etc.) |
| `alignment` | `string` | No | Alignment (affects some skill targets) |
| `luckyWeapon` | `string` | No | Weapon type that luck applies to (one type only) |

### `actor.rpg.stats#dndStats`

**Type**: `object`

D&D 5e character sheet. All sub-objects are optional.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `hp` | `ref` → `#hp` | No | Hit points (current, max, temp) |
| `saves` | `ref` → `#saves` | No | Saving throw modifiers |
| `combat` | `ref` → `#combat` | No | Combat stats (AC, speed, initiative, hit dice) |
| `skills` | `ref` → `#skills` | No | Skill modifiers |
| `attacks` | `array` | No | Attack actions |
| `coinage` | `ref` → `#coinage` | No | Currency (cp, sp, ep, gp, pp) |
| `features` | `string` | No | Class features, racial traits, and feats |
| `identity` | `ref` → `#identity` | No | Character identity (race, class, level, background) |
| `passives` | `ref` → `#passives` | No | Passive scores (Perception, Investigation, Insight) |
| `abilities` | `ref` → `#abilities` | No | The six ability scores (STR, DEX, CON, INT, WIS, CHA) |
| `equipment` | `ref` → `#equipment` | No | Gear and inventory |
| `languages` | `string` | No | Languages known |
| `conditions` | `ref` → `#conditions` | No | Status conditions (inspiration, exhaustion, death saves) |
| `personality` | `ref` → `#personality` | No | Traits, ideals, bonds, flaws, backstory |
| `spellcasting` | `ref` → `#spellcasting` | No | Spellcasting details (for casters) |
| `proficiencies` | `string` | No | Armor, weapon, and tool proficiencies |

### `actor.rpg.stats#identity`

**Type**: `object`

Character identity and progression

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `xp` | `integer` | No | Experience points |
| `race` | `string` | No | Race (e.g., Human, Elf, Dwarf) |
| `class` | `string` | No | Class and subclass (e.g., Fighter (Champion)) |
| `level` | `integer` | No | Character level |
| `alignment` | `string` | No | Alignment (e.g., Lawful Good) |
| `background` | `string` | No | Background (e.g., Soldier, Sage) |
| `proficiency` | `integer` | No | Proficiency bonus |

### `actor.rpg.stats#passives`

**Type**: `object`

Passive scores (10 + skill modifier)

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `insight` | `integer` | No | Passive Insight |
| `perception` | `integer` | No | Passive Perception |
| `investigation` | `integer` | No | Passive Investigation |

### `actor.rpg.stats#abilities`

**Type**: `object`

The six ability scores (1-30 per SRD)

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `cha` | `integer` | No | Charisma |
| `con` | `integer` | No | Constitution |
| `dex` | `integer` | No | Dexterity |
| `int` | `integer` | No | Intelligence |
| `str` | `integer` | No | Strength |
| `wis` | `integer` | No | Wisdom |

### `actor.rpg.stats#dccAttack`

**Type**: `object`

A weapon attack (includes deed die for warriors)

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `name` | `string` | Yes | Weapon name |
| `type` | `string` | No | Attack type (melee, ranged, etc.) |
| `notes` | `string` | No | Special properties (backstab, trained weapon, etc.) |
| `range` | `string` | No | Range (melee or distance) |
| `damage` | `string` | No | Damage dice (e.g., 1d8+2, 1d6+d3) |
| `attackMod` | `string` | No | Attack modifier (e.g., +2, d16+2 for deed die) |
| `damageBonus` | `string` | No | Damage bonus (e.g., +2, +d3 for deed die) |

### `actor.rpg.stats#dccCleric`

**Type**: `object`

Cleric spellcasting features

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `deity` | `string` | No | Deity or supernatural patron |
| `unholy` | `boolean` | No | Serves a Chaotic deity (unholy instead of holy) |
| `holySymbol` | `string` | No | Holy symbol description |
| `knownSpells` | `array` | No | Known cleric spells |
| `layOnHandsDie` | `string` | No | Lay on hands die (e.g., d14, d16) |
| `maxSpellLevel` | `integer` | No | Highest spell level accessible |
| `spellCheckMod` | `integer` | No | Spell check modifier (PER mod + level) |
| `turnUnholyDie` | `string` | No | Turn unholy die (e.g., d14, d16) |
| `disapprovalRange` | `integer` | No | Current disapproval range (starts at 1, accumulates) |
| `disapprovalTable` | `string` | No | Deity-specific disapproval table if any |

### `actor.rpg.stats#dccCombat`

**Type**: `object`

Combat statistics

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `ac` | `integer` | No | Armor Class (10 + armor + AGI mod + shield) |
| `speed` | `integer` | No | Speed in feet (typically 30, Dwarves 20) |
| `critDie` | `string` | No | Critical hit die (e.g., d8, d12, d14) |
| `actionDie` | `string` | No | Primary action die (e.g., d20, d20+d14) |
| `attackMod` | `integer` | No | Base attack modifier (level-based for non-warriors) |
| `critTable` | `string` | No | Critical hit table (I, II, III, IV, V) |
| `fumbleDie` | `string` | No | Fumble die (typically d4 for 0-level, varies by armor) |
| `initiative` | `integer` | No | Initiative modifier (AGI mod) |

### `actor.rpg.stats#dccWizard`

**Type**: `object`

Wizard and Elf spellcasting features

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `patron` | `string` | No | Supernatural patron (if any) |
| `spellburn` | `ref` → `#dccSpellburn` | No | Current spellburn status |
| `corruption` | `array` | No | Corruption effects suffered (structured) |
| `patronBond` | `string` | No | Patron bond description and effects |
| `knownSpells` | `array` | No | Known spells with mercurial magic effects |
| `maxSpellLevel` | `integer` | No | Highest spell level accessible |
| `spellCheckMod` | `integer` | No | Spell check modifier (INT mod + level) |
| `corruptionText` | `string` | No | Corruption effects as free-form text |

### `actor.rpg.stats#equipment`

**Type**: `object`

Gear and inventory

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `gear` | `string` | No | Other equipment |
| `armor` | `string` | No | Armor |
| `weapons` | `string` | No | Weapons |
| `treasure` | `string` | No | Valuables and treasure |

### `actor.rpg.stats#rmmzStats`

**Type**: `object`

RPG Maker MZ character parameters

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `hp` | `integer` | No | Current HP |
| `mp` | `integer` | No | Current MP |
| `tp` | `integer` | No | Current TP |
| `xp` | `integer` | No | Experience |
| `agi` | `integer` | No | Agility |
| `atk` | `integer` | No | Attack |
| `cri` | `integer` | No | Critical % |
| `def` | `integer` | No | Defense |
| `eva` | `integer` | No | Evasion % |
| `hit` | `integer` | No | Hit Rate % |
| `luk` | `integer` | No | Luck |
| `mat` | `integer` | No | Magic Attack |
| `mdf` | `integer` | No | Magic Defense |
| `class` | `string` | No | Class |
| `level` | `integer` | No | Level |
| `maxHp` | `integer` | No | Max HP |
| `maxMp` | `integer` | No | Max MP |
| `maxTp` | `integer` | No | Max TP |

### `actor.rpg.stats#spellList`

**Type**: `object`

Spells organized by level

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `l1` | `array` | No | 1st-level spells |
| `l2` | `array` | No | 2nd-level spells |
| `l3` | `array` | No | 3rd-level spells |
| `l4` | `array` | No | 4th-level spells |
| `l5` | `array` | No | 5th-level spells |
| `l6` | `array` | No | 6th-level spells |
| `l7` | `array` | No | 7th-level spells |
| `l8` | `array` | No | 8th-level spells |
| `l9` | `array` | No | 9th-level spells |
| `cantrips` | `array` | No | Cantrips (at-will) |

### `actor.rpg.stats#spellslot`

**Type**: `object`

Spell slot entry

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `used` | `integer` | No | Slots used |
| `level` | `integer` | Yes | Spell level |
| `total` | `integer` | Yes | Total slots |

### `actor.rpg.stats#conditions`

**Type**: `object`

Status conditions and effects

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `deathSaves` | `ref` → `#deathSaves` | No | Death saving throw progress |
| `exhaustion` | `integer` | No | Exhaustion level (0-6) |
| `inspiration` | `boolean` | No | Has inspiration |

### `actor.rpg.stats#customStat`

**Type**: `object`

A custom stat

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `max` | `integer` | No | Maximum (optional) |
| `min` | `integer` | No | Minimum (optional) |
| `name` | `string` | Yes | Stat name |
| `value` | `integer` | Yes | Value |
| `category` | `string` | No | Category (optional) |

### `actor.rpg.stats#dccCoinage`

**Type**: `object`

DCC uses cp, sp, gp (10cp = 1sp, 10sp = 1gp)

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `cp` | `integer` | No | Copper pieces |
| `gp` | `integer` | No | Gold pieces |
| `sp` | `integer` | No | Silver pieces |

### `actor.rpg.stats#dccWarrior`

**Type**: `object`

Warrior and Dwarf class features

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `deedDie` | `string` | No | Current deed die (d3, d4, d5, d6, d7, d8, d10+d3, etc.) |
| `smellGold` | `boolean` | No | Can smell gold/gems (Dwarves) |
| `shieldBash` | `boolean` | No | Can use shield bash (Dwarves) |
| `infravision` | `integer` | No | Infravision range in feet (Dwarves: 60) |
| `luckyWeapon` | `string` | No | Weapon type luck modifier applies to |
| `mightyDeeds` | `array` | No | Signature mighty deeds of arms |
| `undergroundSkills` | `integer` | No | Underground detection bonus (Dwarves: equal to level) |

### `actor.rpg.stats#deathSaves`

**Type**: `object`

Death saving throw successes and failures

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `failures` | `integer` | No | Failures (0-3) |
| `successes` | `integer` | No | Successes (0-3) |

### `actor.rpg.stats#customStats`

**Type**: `object`

User-defined custom stat system

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `stats` | `array` | No | Custom stat entries |
| `systemName` | `string` | No | System name |
| `systemVersion` | `string` | No | Version |

### `actor.rpg.stats#dccHalfling`

**Type**: `object`

Halfling class features

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `infravision` | `integer` | No | Infravision range in feet (30) |
| `luckyWeapon` | `string` | No | Weapon type luck modifier applies to |
| `sneakAndHide` | `integer` | No | Bonus to sneak/hide when in natural environment |
| `goodLuckCharm` | `boolean` | No | Can spend luck to aid nearby allies |
| `luckSpentOnAllies` | `integer` | No | Total luck points spent helping allies |
| `twoWeaponFighting` | `boolean` | No | Can dual-wield without penalty |

### `actor.rpg.stats#dccIdentity`

**Type**: `object`

DCC character identity and progression

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `xp` | `integer` | No | Experience points |
| `class` | `string` | No | Class (Warrior, Wizard, Cleric, Thief, Elf, Dwarf, Halfling) |
| `level` | `integer` | No | Character level (0 for funnel characters) |
| `title` | `string` | No | Level title (e.g., Squire, Cutpurse, Acolyte) |
| `alignment` | `string` | No | Alignment (Lawful, Neutral, Chaotic) |
| `occupation` | `string` | No | 0-level occupation (e.g., Blacksmith, Farmer) |

### `actor.rpg.stats#personality`

**Type**: `object`

Personality and backstory

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `bonds` | `string` | No | Bonds |
| `flaws` | `string` | No | Flaws |
| `ideals` | `string` | No | Ideals |
| `traits` | `string` | No | Personality traits |
| `backstory` | `string` | No | Backstory |

### `actor.rpg.stats#dccAbilities`

**Type**: `object`

DCC ability scores (3-18 standard, can be modified by corruption/spellburn)

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `agi` | `integer` | No | Agility |
| `int` | `integer` | No | Intelligence |
| `luk` | `integer` | No | Luck (can be permanently burned) |
| `per` | `integer` | No | Personality |
| `sta` | `integer` | No | Stamina |
| `str` | `integer` | No | Strength |
| `agiBase` | `integer` | No | Agility base (before spellburn) |
| `staBase` | `integer` | No | Stamina base (before spellburn) |
| `strBase` | `integer` | No | Strength base (before spellburn) |

### `actor.rpg.stats#dccEquipment`

**Type**: `object`

Equipment and inventory

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `gear` | `string` | No | Other equipment |
| `armor` | `string` | No | Armor worn (affects fumble die) |
| `shield` | `string` | No | Shield (if any) |
| `weapons` | `string` | No | Weapons carried |
| `treasure` | `string` | No | Valuables and treasure |
| `tradeGoods` | `string` | No | Trade goods from occupation |
| `armorCheckPenalty` | `integer` | No | Armor check penalty (affects skills) |

### `actor.rpg.stats#dccSpellburn`

**Type**: `object`

Current spellburn (temporary ability score sacrifice)

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `agiBurned` | `integer` | No | Agility points currently burned |
| `staBurned` | `integer` | No | Stamina points currently burned |
| `strBurned` | `integer` | No | Strength points currently burned |
| `recoveryRate` | `integer` | No | Points recovered per day |

### `actor.rpg.stats#reverieStats`

**Type**: `object`

Reverie House philosophical alignment

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `octant` | `string` | No | Philosophical octant |
| `entropy` | `integer` | No | Entropy (0-100) |
| `liberty` | `integer` | No | Liberty (0-100) |
| `skeptic` | `integer` | No | Skeptic (0-100) |
| `oblivion` | `integer` | No | Oblivion (0-100) |
| `authority` | `integer` | No | Authority (0-100) |
| `receptive` | `integer` | No | Receptive (0-100) |

### `actor.rpg.stats#spellcasting`

**Type**: `object`

Spellcasting details

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `dc` | `integer` | No | Spell save DC |
| `slots` | `array` | No | Spell slots by level |
| `attack` | `integer` | No | Spell attack bonus |
| `spells` | `ref` → `#spellList` | No | Known/prepared spells by level |
| `ability` | `string` | No | Spellcasting ability (INT, WIS, CHA) |

### `actor.rpg.stats#dccCorruption`

**Type**: `object`

A corruption effect from failed spell checks

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `string` | No | Corruption severity (minor, major, greater) |
| `effect` | `string` | No | Description of the corruption |
| `source` | `string` | No | What spell caused this corruption |
| `permanent` | `boolean` | No | Whether this corruption is permanent |

### `actor.rpg.stats#dccClericSpell`

**Type**: `object`

A cleric spell

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `name` | `string` | Yes | Spell name |
| `level` | `integer` | Yes | Spell level |
| `notes` | `string` | No | Additional spell notes |
| `sinful` | `boolean` | No | Casting may cause additional disapproval |

### `actor.rpg.stats#dccThiefSkills`

**Type**: `object`

Thief skill bonuses (roll d20 + skill vs target)

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `backstab` | `integer` | No | Backstab attack bonus |
| `findTrap` | `integer` | No | Find trap bonus |
| `pickLock` | `integer` | No | Pick lock bonus |
| `pickPocket` | `integer` | No | Pick pocket bonus |
| `disableTrap` | `integer` | No | Disable trap bonus |
| `disguiseSelf` | `integer` | No | Disguise self bonus |
| `handlePoison` | `integer` | No | Handle poison bonus |
| `forgeDocument` | `integer` | No | Forge document bonus |
| `hideInShadows` | `integer` | No | Hide in shadows bonus |
| `readLanguages` | `integer` | No | Read languages bonus |
| `sneakSilently` | `integer` | No | Sneak silently bonus |
| `climbSheerSurfaces` | `integer` | No | Climb sheer surfaces bonus |
| `castSpellFromScroll` | `integer` | No | Cast spell from scroll bonus |

### `actor.rpg.stats#dccWizardSpell`

**Type**: `object`

A wizard spell with mercurial magic effect

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `lost` | `boolean` | No | Spell is currently lost (must be re-learned) |
| `name` | `string` | Yes | Spell name |
| `level` | `integer` | Yes | Spell level |
| `notes` | `string` | No | Additional spell notes |
| `mercurialRoll` | `integer` | No | The d100 roll for mercurial magic |
| `mercurialMagic` | `string` | No | Unique mercurial magic effect (d100 roll result) |

### `actor.rpg.stats#playtopiaStats`

**Type**: `object`

Playtopia Quest character sheet

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `class` | `string` | No | Character class |
| `level` | `integer` | No | Character level |
| `health` | `integer` | No | Health (0-3 hearts) |
| `traits` | `array` | No | Personal trait names (e.g. Empathic, Courageous, …) |
| `alignment` | `string` | No | Character alignment |
| `bestFriend` | `string` | No | Best friend (Bluesky handle) |
| `faveColour` | `string` | No | Favourite colour hex code |
| `worstEnemy` | `string` | No | Worst enemy (Bluesky handle) |
| `catchphrase` | `string` | No | Character catchphrase |

## Examples

The following examples demonstrate valid data for this lexicon. [View all examples](https://lexicon.garden/lexicon/did:plc:kwgllf365cwmxbnxitx4pjdj/actor.rpg.stats/examples)

### Example 1 (`#main`)

**Description**: Reverie Spectrum character alignment.

```json
{
  "$type": "actor.rpg.stats",
  "reverie": {
    "octant": "chaotic",
    "entropy": 72,
    "liberty": 80,
    "skeptic": 60,
    "oblivion": 35,
    "authority": 15,
    "receptive": 45
  },
  "createdAt": "2026-01-15T10:30:00.000Z"
}
```

### Example 2 (`#main`)

**Description**: A DCC RPG cleric with spells and equipment.

```json
{
  "dcc": {
    "hp": {
      "max": 12,
      "current": 12
    },
    "luck": {
      "birthAugur": "Guardian Angel",
      "birthAugurEffect": "-1 to Saving Throws vs Traps"
    },
    "saves": {
      "ref": 0,
      "fort": 2,
      "will": 2
    },
    "cleric": {
      "deity": "Saint-Soûlard",
      "knownSpells": [
        {
          "name": "Holy Sanctuary",
          "level": 1,
          "notes": "Creates a safe space"
        },
        {
          "name": "Resist Cold and Heat",
          "level": 1
        },
        {
          "name": "Word of Command",
          "level": 1
        }
      ],
      "maxSpellLevel": 1,
      "spellCheckMod": 2,
      "turnUnholyDie": "d14",
      "disapprovalRange": 5
    },
    "combat": {
      "ac": 13,
      "speed": 30,
      "critDie": "1d8",
      "actionDie": "d20",
      "attackMod": 0,
      "critTable": "III",
      "fumbleDie": "d8",
      "initiative": 0
    },
    "attacks": [
      {
        "name": "Katana",
        "type": "slashing",
        "range": "melee",
        "damage": "1d6",
        "attackMod": "+0",
        "damageBonus": "+1"
      }
    ],
    "coinage": {
      "cp": 35,
      "gp": 42,
      "sp": 12
    },
    "identity": {
      "xp": 10,
      "class": "Cleric",
      "level": 1,
      "title": "Flâneur",
      "alignment": "Chaotic",
      "occupation": "Tax Collector"
    },
    "abilities": {
      "agi": 10,
      "int": 13,
      "luk": 8,
      "per": 14,
      "sta": 15,
      "str": 12
    },
    "equipment": {
      "gear": "Small Sack, Thieves' Tools",
      "armor": "Padded Gambeson (+1 bonus, -1 check penalty)",
      "shield": "Le Mûr (+2)",
      "weapons": "Katana",
      "treasure": "Le Botte de Saint-Soûlard",
      "tradeGoods": "Cheese Dip, Beaver Pelt"
    },
    "languages": "Common, Elvish"
  },
  "$type": "actor.rpg.stats",
  "createdAt": "2026-02-12T15:50:16.728Z",
  "updatedAt": "2026-03-18T14:51:34.567Z"
}
```

## Raw Schema

```json
{
  "id": "actor.rpg.stats",
  "defs": {
    "hp": {
      "type": "object",
      "properties": {
        "max": {
          "type": "integer",
          "minimum": 1,
          "description": "Maximum HP"
        },
        "temp": {
          "type": "integer",
          "minimum": 0,
          "description": "Temporary HP"
        },
        "current": {
          "type": "integer",
          "minimum": 0,
          "description": "Current HP"
        }
      },
      "description": "Hit point tracking"
    },
    "main": {
      "key": "literal:self",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "createdAt"
        ],
        "properties": {
          "dcc": {
            "ref": "#dccStats",
            "type": "ref",
            "description": "Dungeon Crawl Classics RPG character sheet"
          },
          "dnd": {
            "ref": "#dndStats",
            "type": "ref",
            "description": "Dungeons & Dragons 5th Edition character sheet"
          },
          "rmmz": {
            "ref": "#rmmzStats",
            "type": "ref",
            "description": "RPG Maker MZ engine character parameters"
          },
          "custom": {
            "ref": "#customStats",
            "type": "ref",
            "description": "User-defined custom stat system"
          },
          "reverie": {
            "ref": "#reverieStats",
            "type": "ref",
            "description": "Reverie House philosophical alignment"
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "Timestamp when this record was created"
          },
          "playtopia": {
            "ref": "#playtopiaStats",
            "type": "ref",
            "description": "Playtopia Quest character sheet"
          },
          "updatedAt": {
            "type": "string",
            "format": "datetime",
            "description": "Timestamp when this record was last modified"
          }
        }
      },
      "description": "A user's RPG character statistics. One record per user (rkey: self)."
    },
    "dccHp": {
      "type": "object",
      "properties": {
        "max": {
          "type": "integer",
          "minimum": 1,
          "description": "Maximum HP"
        },
        "current": {
          "type": "integer",
          "minimum": 0,
          "description": "Current HP"
        }
      },
      "description": "Hit points (0-level characters use 1d4 + STA mod)"
    },
    "saves": {
      "type": "object",
      "properties": {
        "cha": {
          "type": "integer",
          "description": "Charisma save modifier"
        },
        "con": {
          "type": "integer",
          "description": "Constitution save modifier"
        },
        "dex": {
          "type": "integer",
          "description": "Dexterity save modifier"
        },
        "int": {
          "type": "integer",
          "description": "Intelligence save modifier"
        },
        "str": {
          "type": "integer",
          "description": "Strength save modifier"
        },
        "wis": {
          "type": "integer",
          "description": "Wisdom save modifier"
        }
      },
      "description": "Saving throw modifiers (actual values, not proficiency flags)"
    },
    "attack": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 100,
          "description": "Attack name"
        },
        "bonus": {
          "type": "string",
          "maxLength": 20,
          "description": "Attack bonus (e.g., +5)"
        },
        "damage": {
          "type": "string",
          "maxLength": 20,
          "description": "Damage dice (e.g., 1d8)"
        },
        "damageType": {
          "type": "string",
          "maxLength": 30,
          "description": "Damage type"
        },
        "damageBonus": {
          "type": "integer",
          "description": "Damage bonus"
        }
      },
      "description": "An attack action"
    },
    "combat": {
      "type": "object",
      "properties": {
        "ac": {
          "type": "integer",
          "minimum": 0,
          "description": "Armor Class"
        },
        "speed": {
          "type": "integer",
          "minimum": 0,
          "description": "Speed in feet"
        },
        "hitDice": {
          "type": "string",
          "maxLength": 20,
          "description": "Hit dice (e.g., 5d10)"
        },
        "initiative": {
          "type": "integer",
          "description": "Initiative modifier"
        },
        "hitDiceUsed": {
          "type": "integer",
          "minimum": 0,
          "description": "Hit dice expended"
        }
      },
      "description": "Combat and defensive stats"
    },
    "skills": {
      "type": "object",
      "properties": {
        "arcana": {
          "type": "integer",
          "description": "Arcana (INT)"
        },
        "nature": {
          "type": "integer",
          "description": "Nature (INT)"
        },
        "history": {
          "type": "integer",
          "description": "History (INT)"
        },
        "insight": {
          "type": "integer",
          "description": "Insight (WIS)"
        },
        "stealth": {
          "type": "integer",
          "description": "Stealth (DEX)"
        },
        "medicine": {
          "type": "integer",
          "description": "Medicine (WIS)"
        },
        "religion": {
          "type": "integer",
          "description": "Religion (INT)"
        },
        "survival": {
          "type": "integer",
          "description": "Survival (WIS)"
        },
        "athletics": {
          "type": "integer",
          "description": "Athletics (STR)"
        },
        "deception": {
          "type": "integer",
          "description": "Deception (CHA)"
        },
        "acrobatics": {
          "type": "integer",
          "description": "Acrobatics (DEX)"
        },
        "perception": {
          "type": "integer",
          "description": "Perception (WIS)"
        },
        "persuasion": {
          "type": "integer",
          "description": "Persuasion (CHA)"
        },
        "performance": {
          "type": "integer",
          "description": "Performance (CHA)"
        },
        "intimidation": {
          "type": "integer",
          "description": "Intimidation (CHA)"
        },
        "investigation": {
          "type": "integer",
          "description": "Investigation (INT)"
        },
        "sleightOfHand": {
          "type": "integer",
          "description": "Sleight of Hand (DEX)"
        },
        "animalHandling": {
          "type": "integer",
          "description": "Animal Handling (WIS)"
        }
      },
      "description": "Skill modifiers (actual values, not proficiency flags)"
    },
    "coinage": {
      "type": "object",
      "properties": {
        "cp": {
          "type": "integer",
          "minimum": 0,
          "description": "Copper pieces"
        },
        "ep": {
          "type": "integer",
          "minimum": 0,
          "description": "Electrum pieces"
        },
        "gp": {
          "type": "integer",
          "minimum": 0,
          "description": "Gold pieces"
        },
        "pp": {
          "type": "integer",
          "minimum": 0,
          "description": "Platinum pieces"
        },
        "sp": {
          "type": "integer",
          "minimum": 0,
          "description": "Silver pieces"
        }
      },
      "description": "Currency"
    },
    "dccLuck": {
      "type": "object",
      "properties": {
        "birthAugur": {
          "type": "string",
          "maxLength": 100,
          "description": "Birth augur name (e.g., Harsh Winter, The Bull, Fortunate Date)"
        },
        "luckyWeapon": {
          "type": "string",
          "maxLength": 100,
          "description": "Weapon type that luck applies to (Dwarves/Halflings)"
        },
        "startingLuck": {
          "type": "integer",
          "maximum": 24,
          "minimum": 1,
          "description": "Starting luck score (for tracking burned luck)"
        },
        "birthAugurEffect": {
          "type": "string",
          "maxLength": 200,
          "description": "What the luck modifier applies to"
        }
      },
      "description": "Birth augur and luck mechanics"
    },
    "dccSaves": {
      "type": "object",
      "properties": {
        "ref": {
          "type": "integer",
          "description": "Reflex save modifier"
        },
        "fort": {
          "type": "integer",
          "description": "Fortitude save modifier"
        },
        "will": {
          "type": "integer",
          "description": "Willpower save modifier"
        }
      },
      "description": "DCC saving throws (3 saves, not 6)"
    },
    "dccStats": {
      "type": "object",
      "properties": {
        "hp": {
          "ref": "#dccHp",
          "type": "ref",
          "description": "Hit points"
        },
        "luck": {
          "ref": "#dccLuck",
          "type": "ref",
          "description": "Birth augur and luck tracking"
        },
        "notes": {
          "type": "string",
          "maxLength": 5000,
          "description": "Character notes, backstory, and special abilities"
        },
        "saves": {
          "ref": "#dccSaves",
          "type": "ref",
          "description": "Saving throws (Reflex, Fortitude, Willpower)"
        },
        "thief": {
          "ref": "#dccThief",
          "type": "ref",
          "description": "Thief skills and abilities"
        },
        "cleric": {
          "ref": "#dccCleric",
          "type": "ref",
          "description": "Cleric spellcasting (disapproval, turn unholy, lay on hands)"
        },
        "combat": {
          "ref": "#dccCombat",
          "type": "ref",
          "description": "Combat stats (AC, speed, action die, initiative, crit die/table)"
        },
        "wizard": {
          "ref": "#dccWizard",
          "type": "ref",
          "description": "Wizard/Elf spellcasting (spellburn, corruption, mercurial magic)"
        },
        "attacks": {
          "type": "array",
          "items": {
            "ref": "#dccAttack",
            "type": "ref"
          },
          "maxLength": 20,
          "description": "Weapon attacks"
        },
        "coinage": {
          "ref": "#dccCoinage",
          "type": "ref",
          "description": "Currency (cp, sp, gp)"
        },
        "warrior": {
          "ref": "#dccWarrior",
          "type": "ref",
          "description": "Warrior/Dwarf class features (deed die, mighty deeds)"
        },
        "halfling": {
          "ref": "#dccHalfling",
          "type": "ref",
          "description": "Halfling luck-sharing and dual wielding"
        },
        "identity": {
          "ref": "#dccIdentity",
          "type": "ref",
          "description": "Character identity (occupation, class, level, alignment)"
        },
        "abilities": {
          "ref": "#dccAbilities",
          "type": "ref",
          "description": "The six ability scores (STR, AGI, STA, INT, PER, LUK)"
        },
        "equipment": {
          "ref": "#dccEquipment",
          "type": "ref",
          "description": "Gear, treasure, and trade goods"
        },
        "languages": {
          "type": "string",
          "maxLength": 500,
          "description": "Languages known"
        },
        "abilitiesNotes": {
          "type": "string",
          "maxLength": 1000,
          "description": "Notes about special abilities, class features, and racial traits"
        }
      },
      "description": "Dungeon Crawl Classics RPG character sheet. Supports 0-level funnel characters through 10th level."
    },
    "dccThief": {
      "type": "object",
      "properties": {
        "skills": {
          "ref": "#dccThiefSkills",
          "type": "ref",
          "description": "Thief skill modifiers"
        },
        "backstab": {
          "type": "integer",
          "minimum": 0,
          "description": "Backstab damage die level (+1, +2, etc.)"
        },
        "alignment": {
          "type": "string",
          "maxLength": 20,
          "description": "Alignment (affects some skill targets)"
        },
        "luckyWeapon": {
          "type": "string",
          "maxLength": 100,
          "description": "Weapon type that luck applies to (one type only)"
        }
      },
      "description": "Thief class features and skills"
    },
    "dndStats": {
      "type": "object",
      "properties": {
        "hp": {
          "ref": "#hp",
          "type": "ref",
          "description": "Hit points (current, max, temp)"
        },
        "saves": {
          "ref": "#saves",
          "type": "ref",
          "description": "Saving throw modifiers"
        },
        "combat": {
          "ref": "#combat",
          "type": "ref",
          "description": "Combat stats (AC, speed, initiative, hit dice)"
        },
        "skills": {
          "ref": "#skills",
          "type": "ref",
          "description": "Skill modifiers"
        },
        "attacks": {
          "type": "array",
          "items": {
            "ref": "#attack",
            "type": "ref"
          },
          "maxLength": 20,
          "description": "Attack actions"
        },
        "coinage": {
          "ref": "#coinage",
          "type": "ref",
          "description": "Currency (cp, sp, ep, gp, pp)"
        },
        "features": {
          "type": "string",
          "maxLength": 5000,
          "description": "Class features, racial traits, and feats"
        },
        "identity": {
          "ref": "#identity",
          "type": "ref",
          "description": "Character identity (race, class, level, background)"
        },
        "passives": {
          "ref": "#passives",
          "type": "ref",
          "description": "Passive scores (Perception, Investigation, Insight)"
        },
        "abilities": {
          "ref": "#abilities",
          "type": "ref",
          "description": "The six ability scores (STR, DEX, CON, INT, WIS, CHA)"
        },
        "equipment": {
          "ref": "#equipment",
          "type": "ref",
          "description": "Gear and inventory"
        },
        "languages": {
          "type": "string",
          "maxLength": 500,
          "description": "Languages known"
        },
        "conditions": {
          "ref": "#conditions",
          "type": "ref",
          "description": "Status conditions (inspiration, exhaustion, death saves)"
        },
        "personality": {
          "ref": "#personality",
          "type": "ref",
          "description": "Traits, ideals, bonds, flaws, backstory"
        },
        "spellcasting": {
          "ref": "#spellcasting",
          "type": "ref",
          "description": "Spellcasting details (for casters)"
        },
        "proficiencies": {
          "type": "string",
          "maxLength": 1000,
          "description": "Armor, weapon, and tool proficiencies"
        }
      },
      "description": "D&D 5e character sheet. All sub-objects are optional."
    },
    "identity": {
      "type": "object",
      "properties": {
        "xp": {
          "type": "integer",
          "minimum": 0,
          "description": "Experience points"
        },
        "race": {
          "type": "string",
          "maxLength": 100,
          "description": "Race (e.g., Human, Elf, Dwarf)"
        },
        "class": {
          "type": "string",
          "maxLength": 100,
          "description": "Class and subclass (e.g., Fighter (Champion))"
        },
        "level": {
          "type": "integer",
          "minimum": 1,
          "description": "Character level"
        },
        "alignment": {
          "type": "string",
          "maxLength": 50,
          "description": "Alignment (e.g., Lawful Good)"
        },
        "background": {
          "type": "string",
          "maxLength": 100,
          "description": "Background (e.g., Soldier, Sage)"
        },
        "proficiency": {
          "type": "integer",
          "minimum": 0,
          "description": "Proficiency bonus"
        }
      },
      "description": "Character identity and progression"
    },
    "passives": {
      "type": "object",
      "properties": {
        "insight": {
          "type": "integer",
          "description": "Passive Insight"
        },
        "perception": {
          "type": "integer",
          "description": "Passive Perception"
        },
        "investigation": {
          "type": "integer",
          "description": "Passive Investigation"
        }
      },
      "description": "Passive scores (10 + skill modifier)"
    },
    "abilities": {
      "type": "object",
      "properties": {
        "cha": {
          "type": "integer",
          "maximum": 30,
          "minimum": 1,
          "description": "Charisma"
        },
        "con": {
          "type": "integer",
          "maximum": 30,
          "minimum": 1,
          "description": "Constitution"
        },
        "dex": {
          "type": "integer",
          "maximum": 30,
          "minimum": 1,
          "description": "Dexterity"
        },
        "int": {
          "type": "integer",
          "maximum": 30,
          "minimum": 1,
          "description": "Intelligence"
        },
        "str": {
          "type": "integer",
          "maximum": 30,
          "minimum": 1,
          "description": "Strength"
        },
        "wis": {
          "type": "integer",
          "maximum": 30,
          "minimum": 1,
          "description": "Wisdom"
        }
      },
      "description": "The six ability scores (1-30 per SRD)"
    },
    "dccAttack": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 100,
          "description": "Weapon name"
        },
        "type": {
          "type": "string",
          "maxLength": 20,
          "description": "Attack type (melee, ranged, etc.)"
        },
        "notes": {
          "type": "string",
          "maxLength": 200,
          "description": "Special properties (backstab, trained weapon, etc.)"
        },
        "range": {
          "type": "string",
          "maxLength": 30,
          "description": "Range (melee or distance)"
        },
        "damage": {
          "type": "string",
          "maxLength": 30,
          "description": "Damage dice (e.g., 1d8+2, 1d6+d3)"
        },
        "attackMod": {
          "type": "string",
          "maxLength": 30,
          "description": "Attack modifier (e.g., +2, d16+2 for deed die)"
        },
        "damageBonus": {
          "type": "string",
          "maxLength": 30,
          "description": "Damage bonus (e.g., +2, +d3 for deed die)"
        }
      },
      "description": "A weapon attack (includes deed die for warriors)"
    },
    "dccCleric": {
      "type": "object",
      "properties": {
        "deity": {
          "type": "string",
          "maxLength": 100,
          "description": "Deity or supernatural patron"
        },
        "unholy": {
          "type": "boolean",
          "description": "Serves a Chaotic deity (unholy instead of holy)"
        },
        "holySymbol": {
          "type": "string",
          "maxLength": 100,
          "description": "Holy symbol description"
        },
        "knownSpells": {
          "type": "array",
          "items": {
            "ref": "#dccClericSpell",
            "type": "ref"
          },
          "maxLength": 50,
          "description": "Known cleric spells"
        },
        "layOnHandsDie": {
          "type": "string",
          "maxLength": 10,
          "description": "Lay on hands die (e.g., d14, d16)"
        },
        "maxSpellLevel": {
          "type": "integer",
          "maximum": 5,
          "minimum": 1,
          "description": "Highest spell level accessible"
        },
        "spellCheckMod": {
          "type": "integer",
          "description": "Spell check modifier (PER mod + level)"
        },
        "turnUnholyDie": {
          "type": "string",
          "maxLength": 10,
          "description": "Turn unholy die (e.g., d14, d16)"
        },
        "disapprovalRange": {
          "type": "integer",
          "maximum": 20,
          "minimum": 1,
          "description": "Current disapproval range (starts at 1, accumulates)"
        },
        "disapprovalTable": {
          "type": "string",
          "maxLength": 100,
          "description": "Deity-specific disapproval table if any"
        }
      },
      "description": "Cleric spellcasting features"
    },
    "dccCombat": {
      "type": "object",
      "properties": {
        "ac": {
          "type": "integer",
          "minimum": 0,
          "description": "Armor Class (10 + armor + AGI mod + shield)"
        },
        "speed": {
          "type": "integer",
          "minimum": 0,
          "description": "Speed in feet (typically 30, Dwarves 20)"
        },
        "critDie": {
          "type": "string",
          "maxLength": 10,
          "description": "Critical hit die (e.g., d8, d12, d14)"
        },
        "actionDie": {
          "type": "string",
          "maxLength": 20,
          "description": "Primary action die (e.g., d20, d20+d14)"
        },
        "attackMod": {
          "type": "integer",
          "description": "Base attack modifier (level-based for non-warriors)"
        },
        "critTable": {
          "type": "string",
          "maxLength": 20,
          "description": "Critical hit table (I, II, III, IV, V)"
        },
        "fumbleDie": {
          "type": "string",
          "maxLength": 10,
          "description": "Fumble die (typically d4 for 0-level, varies by armor)"
        },
        "initiative": {
          "type": "integer",
          "description": "Initiative modifier (AGI mod)"
        }
      },
      "description": "Combat statistics"
    },
    "dccWizard": {
      "type": "object",
      "properties": {
        "patron": {
          "type": "string",
          "maxLength": 100,
          "description": "Supernatural patron (if any)"
        },
        "spellburn": {
          "ref": "#dccSpellburn",
          "type": "ref",
          "description": "Current spellburn status"
        },
        "corruption": {
          "type": "array",
          "items": {
            "ref": "#dccCorruption",
            "type": "ref"
          },
          "maxLength": 20,
          "description": "Corruption effects suffered (structured)"
        },
        "patronBond": {
          "type": "string",
          "maxLength": 500,
          "description": "Patron bond description and effects"
        },
        "knownSpells": {
          "type": "array",
          "items": {
            "ref": "#dccWizardSpell",
            "type": "ref"
          },
          "maxLength": 50,
          "description": "Known spells with mercurial magic effects"
        },
        "maxSpellLevel": {
          "type": "integer",
          "maximum": 5,
          "minimum": 1,
          "description": "Highest spell level accessible"
        },
        "spellCheckMod": {
          "type": "integer",
          "description": "Spell check modifier (INT mod + level)"
        },
        "corruptionText": {
          "type": "string",
          "maxLength": 2000,
          "description": "Corruption effects as free-form text"
        }
      },
      "description": "Wizard and Elf spellcasting features"
    },
    "equipment": {
      "type": "object",
      "properties": {
        "gear": {
          "type": "string",
          "maxLength": 2000,
          "description": "Other equipment"
        },
        "armor": {
          "type": "string",
          "maxLength": 200,
          "description": "Armor"
        },
        "weapons": {
          "type": "string",
          "maxLength": 500,
          "description": "Weapons"
        },
        "treasure": {
          "type": "string",
          "maxLength": 1000,
          "description": "Valuables and treasure"
        }
      },
      "description": "Gear and inventory"
    },
    "rmmzStats": {
      "type": "object",
      "properties": {
        "hp": {
          "type": "integer",
          "minimum": 0,
          "description": "Current HP"
        },
        "mp": {
          "type": "integer",
          "minimum": 0,
          "description": "Current MP"
        },
        "tp": {
          "type": "integer",
          "minimum": 0,
          "description": "Current TP"
        },
        "xp": {
          "type": "integer",
          "minimum": 0,
          "description": "Experience"
        },
        "agi": {
          "type": "integer",
          "minimum": 1,
          "description": "Agility"
        },
        "atk": {
          "type": "integer",
          "minimum": 1,
          "description": "Attack"
        },
        "cri": {
          "type": "integer",
          "maximum": 100,
          "minimum": 0,
          "description": "Critical %"
        },
        "def": {
          "type": "integer",
          "minimum": 1,
          "description": "Defense"
        },
        "eva": {
          "type": "integer",
          "maximum": 100,
          "minimum": 0,
          "description": "Evasion %"
        },
        "hit": {
          "type": "integer",
          "maximum": 100,
          "minimum": 0,
          "description": "Hit Rate %"
        },
        "luk": {
          "type": "integer",
          "minimum": 1,
          "description": "Luck"
        },
        "mat": {
          "type": "integer",
          "minimum": 1,
          "description": "Magic Attack"
        },
        "mdf": {
          "type": "integer",
          "minimum": 1,
          "description": "Magic Defense"
        },
        "class": {
          "type": "string",
          "maxLength": 100,
          "description": "Class"
        },
        "level": {
          "type": "integer",
          "minimum": 1,
          "description": "Level"
        },
        "maxHp": {
          "type": "integer",
          "minimum": 1,
          "description": "Max HP"
        },
        "maxMp": {
          "type": "integer",
          "minimum": 0,
          "description": "Max MP"
        },
        "maxTp": {
          "type": "integer",
          "minimum": 0,
          "description": "Max TP"
        }
      },
      "description": "RPG Maker MZ character parameters"
    },
    "spellList": {
      "type": "object",
      "properties": {
        "l1": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 100
          },
          "maxLength": 30,
          "description": "1st-level spells"
        },
        "l2": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 100
          },
          "maxLength": 30,
          "description": "2nd-level spells"
        },
        "l3": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 100
          },
          "maxLength": 30,
          "description": "3rd-level spells"
        },
        "l4": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 100
          },
          "maxLength": 30,
          "description": "4th-level spells"
        },
        "l5": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 100
          },
          "maxLength": 30,
          "description": "5th-level spells"
        },
        "l6": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 100
          },
          "maxLength": 20,
          "description": "6th-level spells"
        },
        "l7": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 100
          },
          "maxLength": 20,
          "description": "7th-level spells"
        },
        "l8": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 100
          },
          "maxLength": 20,
          "description": "8th-level spells"
        },
        "l9": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 100
          },
          "maxLength": 20,
          "description": "9th-level spells"
        },
        "cantrips": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 100
          },
          "maxLength": 20,
          "description": "Cantrips (at-will)"
        }
      },
      "description": "Spells organized by level"
    },
    "spellslot": {
      "type": "object",
      "required": [
        "level",
        "total"
      ],
      "properties": {
        "used": {
          "type": "integer",
          "minimum": 0,
          "description": "Slots used"
        },
        "level": {
          "type": "integer",
          "maximum": 9,
          "minimum": 1,
          "description": "Spell level"
        },
        "total": {
          "type": "integer",
          "minimum": 0,
          "description": "Total slots"
        }
      },
      "description": "Spell slot entry"
    },
    "conditions": {
      "type": "object",
      "properties": {
        "deathSaves": {
          "ref": "#deathSaves",
          "type": "ref",
          "description": "Death saving throw progress"
        },
        "exhaustion": {
          "type": "integer",
          "maximum": 6,
          "minimum": 0,
          "description": "Exhaustion level (0-6)"
        },
        "inspiration": {
          "type": "boolean",
          "description": "Has inspiration"
        }
      },
      "description": "Status conditions and effects"
    },
    "customStat": {
      "type": "object",
      "required": [
        "name",
        "value"
      ],
      "properties": {
        "max": {
          "type": "integer",
          "description": "Maximum (optional)"
        },
        "min": {
          "type": "integer",
          "description": "Minimum (optional)"
        },
        "name": {
          "type": "string",
          "maxLength": 50,
          "description": "Stat name"
        },
        "value": {
          "type": "integer",
          "description": "Value"
        },
        "category": {
          "type": "string",
          "maxLength": 50,
          "description": "Category (optional)"
        }
      },
      "description": "A custom stat"
    },
    "dccCoinage": {
      "type": "object",
      "properties": {
        "cp": {
          "type": "integer",
          "minimum": 0,
          "description": "Copper pieces"
        },
        "gp": {
          "type": "integer",
          "minimum": 0,
          "description": "Gold pieces"
        },
        "sp": {
          "type": "integer",
          "minimum": 0,
          "description": "Silver pieces"
        }
      },
      "description": "DCC uses cp, sp, gp (10cp = 1sp, 10sp = 1gp)"
    },
    "dccWarrior": {
      "type": "object",
      "properties": {
        "deedDie": {
          "type": "string",
          "maxLength": 10,
          "description": "Current deed die (d3, d4, d5, d6, d7, d8, d10+d3, etc.)"
        },
        "smellGold": {
          "type": "boolean",
          "description": "Can smell gold/gems (Dwarves)"
        },
        "shieldBash": {
          "type": "boolean",
          "description": "Can use shield bash (Dwarves)"
        },
        "infravision": {
          "type": "integer",
          "minimum": 0,
          "description": "Infravision range in feet (Dwarves: 60)"
        },
        "luckyWeapon": {
          "type": "string",
          "maxLength": 100,
          "description": "Weapon type luck modifier applies to"
        },
        "mightyDeeds": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 200
          },
          "maxLength": 20,
          "description": "Signature mighty deeds of arms"
        },
        "undergroundSkills": {
          "type": "integer",
          "minimum": 0,
          "description": "Underground detection bonus (Dwarves: equal to level)"
        }
      },
      "description": "Warrior and Dwarf class features"
    },
    "deathSaves": {
      "type": "object",
      "properties": {
        "failures": {
          "type": "integer",
          "maximum": 3,
          "minimum": 0,
          "description": "Failures (0-3)"
        },
        "successes": {
          "type": "integer",
          "maximum": 3,
          "minimum": 0,
          "description": "Successes (0-3)"
        }
      },
      "description": "Death saving throw successes and failures"
    },
    "customStats": {
      "type": "object",
      "properties": {
        "stats": {
          "type": "array",
          "items": {
            "ref": "#customStat",
            "type": "ref"
          },
          "description": "Custom stat entries"
        },
        "systemName": {
          "type": "string",
          "maxLength": 100,
          "description": "System name"
        },
        "systemVersion": {
          "type": "string",
          "maxLength": 50,
          "description": "Version"
        }
      },
      "description": "User-defined custom stat system"
    },
    "dccHalfling": {
      "type": "object",
      "properties": {
        "infravision": {
          "type": "integer",
          "minimum": 0,
          "description": "Infravision range in feet (30)"
        },
        "luckyWeapon": {
          "type": "string",
          "maxLength": 100,
          "description": "Weapon type luck modifier applies to"
        },
        "sneakAndHide": {
          "type": "integer",
          "description": "Bonus to sneak/hide when in natural environment"
        },
        "goodLuckCharm": {
          "type": "boolean",
          "description": "Can spend luck to aid nearby allies"
        },
        "luckSpentOnAllies": {
          "type": "integer",
          "minimum": 0,
          "description": "Total luck points spent helping allies"
        },
        "twoWeaponFighting": {
          "type": "boolean",
          "description": "Can dual-wield without penalty"
        }
      },
      "description": "Halfling class features"
    },
    "dccIdentity": {
      "type": "object",
      "properties": {
        "xp": {
          "type": "integer",
          "minimum": 0,
          "description": "Experience points"
        },
        "class": {
          "type": "string",
          "maxLength": 100,
          "description": "Class (Warrior, Wizard, Cleric, Thief, Elf, Dwarf, Halfling)"
        },
        "level": {
          "type": "integer",
          "maximum": 10,
          "minimum": 0,
          "description": "Character level (0 for funnel characters)"
        },
        "title": {
          "type": "string",
          "maxLength": 100,
          "description": "Level title (e.g., Squire, Cutpurse, Acolyte)"
        },
        "alignment": {
          "type": "string",
          "maxLength": 20,
          "description": "Alignment (Lawful, Neutral, Chaotic)"
        },
        "occupation": {
          "type": "string",
          "maxLength": 100,
          "description": "0-level occupation (e.g., Blacksmith, Farmer)"
        }
      },
      "description": "DCC character identity and progression"
    },
    "personality": {
      "type": "object",
      "properties": {
        "bonds": {
          "type": "string",
          "maxLength": 500,
          "description": "Bonds"
        },
        "flaws": {
          "type": "string",
          "maxLength": 500,
          "description": "Flaws"
        },
        "ideals": {
          "type": "string",
          "maxLength": 500,
          "description": "Ideals"
        },
        "traits": {
          "type": "string",
          "maxLength": 1000,
          "description": "Personality traits"
        },
        "backstory": {
          "type": "string",
          "maxLength": 5000,
          "description": "Backstory"
        }
      },
      "description": "Personality and backstory"
    },
    "dccAbilities": {
      "type": "object",
      "properties": {
        "agi": {
          "type": "integer",
          "maximum": 24,
          "minimum": 1,
          "description": "Agility"
        },
        "int": {
          "type": "integer",
          "maximum": 24,
          "minimum": 1,
          "description": "Intelligence"
        },
        "luk": {
          "type": "integer",
          "maximum": 24,
          "minimum": 1,
          "description": "Luck (can be permanently burned)"
        },
        "per": {
          "type": "integer",
          "maximum": 24,
          "minimum": 1,
          "description": "Personality"
        },
        "sta": {
          "type": "integer",
          "maximum": 24,
          "minimum": 1,
          "description": "Stamina"
        },
        "str": {
          "type": "integer",
          "maximum": 24,
          "minimum": 1,
          "description": "Strength"
        },
        "agiBase": {
          "type": "integer",
          "maximum": 24,
          "minimum": 1,
          "description": "Agility base (before spellburn)"
        },
        "staBase": {
          "type": "integer",
          "maximum": 24,
          "minimum": 1,
          "description": "Stamina base (before spellburn)"
        },
        "strBase": {
          "type": "integer",
          "maximum": 24,
          "minimum": 1,
          "description": "Strength base (before spellburn)"
        }
      },
      "description": "DCC ability scores (3-18 standard, can be modified by corruption/spellburn)"
    },
    "dccEquipment": {
      "type": "object",
      "properties": {
        "gear": {
          "type": "string",
          "maxLength": 2000,
          "description": "Other equipment"
        },
        "armor": {
          "type": "string",
          "maxLength": 200,
          "description": "Armor worn (affects fumble die)"
        },
        "shield": {
          "type": "string",
          "maxLength": 100,
          "description": "Shield (if any)"
        },
        "weapons": {
          "type": "string",
          "maxLength": 500,
          "description": "Weapons carried"
        },
        "treasure": {
          "type": "string",
          "maxLength": 1000,
          "description": "Valuables and treasure"
        },
        "tradeGoods": {
          "type": "string",
          "maxLength": 500,
          "description": "Trade goods from occupation"
        },
        "armorCheckPenalty": {
          "type": "integer",
          "minimum": 0,
          "description": "Armor check penalty (affects skills)"
        }
      },
      "description": "Equipment and inventory"
    },
    "dccSpellburn": {
      "type": "object",
      "properties": {
        "agiBurned": {
          "type": "integer",
          "minimum": 0,
          "description": "Agility points currently burned"
        },
        "staBurned": {
          "type": "integer",
          "minimum": 0,
          "description": "Stamina points currently burned"
        },
        "strBurned": {
          "type": "integer",
          "minimum": 0,
          "description": "Strength points currently burned"
        },
        "recoveryRate": {
          "type": "integer",
          "minimum": 0,
          "description": "Points recovered per day"
        }
      },
      "description": "Current spellburn (temporary ability score sacrifice)"
    },
    "reverieStats": {
      "type": "object",
      "properties": {
        "octant": {
          "type": "string",
          "maxLength": 50,
          "description": "Philosophical octant",
          "knownValues": [
            "adaptive",
            "chaotic",
            "prepared",
            "intended",
            "contented",
            "assertive",
            "ordered",
            "guarded",
            "equilibrium",
            "singling",
            "confused"
          ]
        },
        "entropy": {
          "type": "integer",
          "maximum": 100,
          "minimum": 0,
          "description": "Entropy (0-100)"
        },
        "liberty": {
          "type": "integer",
          "maximum": 100,
          "minimum": 0,
          "description": "Liberty (0-100)"
        },
        "skeptic": {
          "type": "integer",
          "maximum": 100,
          "minimum": 0,
          "description": "Skeptic (0-100)"
        },
        "oblivion": {
          "type": "integer",
          "maximum": 100,
          "minimum": 0,
          "description": "Oblivion (0-100)"
        },
        "authority": {
          "type": "integer",
          "maximum": 100,
          "minimum": 0,
          "description": "Authority (0-100)"
        },
        "receptive": {
          "type": "integer",
          "maximum": 100,
          "minimum": 0,
          "description": "Receptive (0-100)"
        }
      },
      "description": "Reverie House philosophical alignment"
    },
    "spellcasting": {
      "type": "object",
      "properties": {
        "dc": {
          "type": "integer",
          "minimum": 1,
          "description": "Spell save DC"
        },
        "slots": {
          "type": "array",
          "items": {
            "ref": "#spellslot",
            "type": "ref"
          },
          "maxLength": 9,
          "description": "Spell slots by level"
        },
        "attack": {
          "type": "integer",
          "description": "Spell attack bonus"
        },
        "spells": {
          "ref": "#spellList",
          "type": "ref",
          "description": "Known/prepared spells by level"
        },
        "ability": {
          "type": "string",
          "maxLength": 3,
          "description": "Spellcasting ability (INT, WIS, CHA)"
        }
      },
      "description": "Spellcasting details"
    },
    "dccCorruption": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "maxLength": 20,
          "description": "Corruption severity (minor, major, greater)"
        },
        "effect": {
          "type": "string",
          "maxLength": 500,
          "description": "Description of the corruption"
        },
        "source": {
          "type": "string",
          "maxLength": 100,
          "description": "What spell caused this corruption"
        },
        "permanent": {
          "type": "boolean",
          "description": "Whether this corruption is permanent"
        }
      },
      "description": "A corruption effect from failed spell checks"
    },
    "dccClericSpell": {
      "type": "object",
      "required": [
        "name",
        "level"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 100,
          "description": "Spell name"
        },
        "level": {
          "type": "integer",
          "maximum": 5,
          "minimum": 1,
          "description": "Spell level"
        },
        "notes": {
          "type": "string",
          "maxLength": 500,
          "description": "Additional spell notes"
        },
        "sinful": {
          "type": "boolean",
          "description": "Casting may cause additional disapproval"
        }
      },
      "description": "A cleric spell"
    },
    "dccThiefSkills": {
      "type": "object",
      "properties": {
        "backstab": {
          "type": "integer",
          "description": "Backstab attack bonus"
        },
        "findTrap": {
          "type": "integer",
          "description": "Find trap bonus"
        },
        "pickLock": {
          "type": "integer",
          "description": "Pick lock bonus"
        },
        "pickPocket": {
          "type": "integer",
          "description": "Pick pocket bonus"
        },
        "disableTrap": {
          "type": "integer",
          "description": "Disable trap bonus"
        },
        "disguiseSelf": {
          "type": "integer",
          "description": "Disguise self bonus"
        },
        "handlePoison": {
          "type": "integer",
          "description": "Handle poison bonus"
        },
        "forgeDocument": {
          "type": "integer",
          "description": "Forge document bonus"
        },
        "hideInShadows": {
          "type": "integer",
          "description": "Hide in shadows bonus"
        },
        "readLanguages": {
          "type": "integer",
          "description": "Read languages bonus"
        },
        "sneakSilently": {
          "type": "integer",
          "description": "Sneak silently bonus"
        },
        "climbSheerSurfaces": {
          "type": "integer",
          "description": "Climb sheer surfaces bonus"
        },
        "castSpellFromScroll": {
          "type": "integer",
          "description": "Cast spell from scroll bonus"
        }
      },
      "description": "Thief skill bonuses (roll d20 + skill vs target)"
    },
    "dccWizardSpell": {
      "type": "object",
      "required": [
        "name",
        "level"
      ],
      "properties": {
        "lost": {
          "type": "boolean",
          "description": "Spell is currently lost (must be re-learned)"
        },
        "name": {
          "type": "string",
          "maxLength": 100,
          "description": "Spell name"
        },
        "level": {
          "type": "integer",
          "maximum": 5,
          "minimum": 1,
          "description": "Spell level"
        },
        "notes": {
          "type": "string",
          "maxLength": 500,
          "description": "Additional spell notes"
        },
        "mercurialRoll": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "The d100 roll for mercurial magic"
        },
        "mercurialMagic": {
          "type": "string",
          "maxLength": 500,
          "description": "Unique mercurial magic effect (d100 roll result)"
        }
      },
      "description": "A wizard spell with mercurial magic effect"
    },
    "playtopiaStats": {
      "type": "object",
      "properties": {
        "class": {
          "type": "string",
          "maxLength": 50,
          "description": "Character class",
          "knownValues": [
            "Artist",
            "Coder",
            "Gamer",
            "Suit",
            "Weirdo"
          ]
        },
        "level": {
          "type": "integer",
          "minimum": 1,
          "description": "Character level"
        },
        "health": {
          "type": "integer",
          "maximum": 3,
          "minimum": 0,
          "description": "Health (0-3 hearts)"
        },
        "traits": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 50
          },
          "maxLength": 16,
          "description": "Personal trait names (e.g. Empathic, Courageous, …)"
        },
        "alignment": {
          "type": "string",
          "maxLength": 20,
          "description": "Character alignment",
          "knownValues": [
            "Ordered",
            "Neutral",
            "Chaotic"
          ]
        },
        "bestFriend": {
          "type": "string",
          "maxLength": 253,
          "description": "Best friend (Bluesky handle)"
        },
        "faveColour": {
          "type": "string",
          "maxLength": 7,
          "description": "Favourite colour hex code"
        },
        "worstEnemy": {
          "type": "string",
          "maxLength": 253,
          "description": "Worst enemy (Bluesky handle)"
        },
        "catchphrase": {
          "type": "string",
          "maxLength": 200,
          "description": "Character catchphrase"
        }
      },
      "description": "Playtopia Quest character sheet"
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1,
  "description": "RPG character statistics for multiple game systems."
}
```
