|
|
|
@ -1,33 +1,76 @@
@@ -1,33 +1,76 @@
|
|
|
|
|
$id: https://hyperboria.babyl.ca/character.json |
|
|
|
|
title: Hyperboria character sheet |
|
|
|
|
type: object |
|
|
|
|
additionalProperties: false |
|
|
|
|
type: object |
|
|
|
|
required: |
|
|
|
|
- name |
|
|
|
|
- player |
|
|
|
|
- statistics |
|
|
|
|
- class |
|
|
|
|
- level |
|
|
|
|
- health |
|
|
|
|
- name |
|
|
|
|
- player |
|
|
|
|
- statistics |
|
|
|
|
- class |
|
|
|
|
- level |
|
|
|
|
- health |
|
|
|
|
- experience |
|
|
|
|
- age |
|
|
|
|
- height |
|
|
|
|
- appearance |
|
|
|
|
- alignment |
|
|
|
|
properties: |
|
|
|
|
name: &string |
|
|
|
|
type: string |
|
|
|
|
player: *string |
|
|
|
|
class: { $ref: "/classes.json" } |
|
|
|
|
statistics: |
|
|
|
|
type: object |
|
|
|
|
allRequired: true |
|
|
|
|
properties: |
|
|
|
|
strength: &stat |
|
|
|
|
$ref: "#/$defs/statistic" |
|
|
|
|
dexterity: *stat |
|
|
|
|
constitution: *stat |
|
|
|
|
intelligence: *stat |
|
|
|
|
wisdom: *stat |
|
|
|
|
charisma: *stat |
|
|
|
|
level: { type: number, minimum: 1 } |
|
|
|
|
health: { $ref: "#/$defs/health" } |
|
|
|
|
name: &string |
|
|
|
|
type: string |
|
|
|
|
player: *string |
|
|
|
|
class: { $ref: "/classes.json" } |
|
|
|
|
statistics: |
|
|
|
|
type: object |
|
|
|
|
allRequired: true |
|
|
|
|
properties: |
|
|
|
|
strength: &stat |
|
|
|
|
$ref: "#/$defs/statistic" |
|
|
|
|
dexterity: *stat |
|
|
|
|
constitution: *stat |
|
|
|
|
intelligence: *stat |
|
|
|
|
wisdom: *stat |
|
|
|
|
charisma: *stat |
|
|
|
|
level: { type: number, minimum: 1 } |
|
|
|
|
health: { $ref: "#/$defs/health" } |
|
|
|
|
experience: { $ref: '#/$defs/experience' } |
|
|
|
|
gender: *string |
|
|
|
|
age: &number |
|
|
|
|
type: number |
|
|
|
|
height: *string |
|
|
|
|
appearance: *string |
|
|
|
|
alignment: *string |
|
|
|
|
race: { $ref: /races.json } |
|
|
|
|
languages: |
|
|
|
|
type: array |
|
|
|
|
minItems: 1 |
|
|
|
|
items: |
|
|
|
|
$ref: /languages.json |
|
|
|
|
spells: |
|
|
|
|
type: array |
|
|
|
|
items: { $ref: /spells.json } |
|
|
|
|
maxSpells: |
|
|
|
|
class: { $data: /class } |
|
|
|
|
level: { $data: /level } |
|
|
|
|
gear: { $ref: '#/$defs/gear' } |
|
|
|
|
|
|
|
|
|
$defs: |
|
|
|
|
gear: |
|
|
|
|
type: array |
|
|
|
|
items: |
|
|
|
|
oneOf: |
|
|
|
|
- *string |
|
|
|
|
- type: object |
|
|
|
|
properties: |
|
|
|
|
desc: |
|
|
|
|
type: string |
|
|
|
|
description: description of the equipment |
|
|
|
|
qty: |
|
|
|
|
type: number |
|
|
|
|
description: quantity of the item in the character's possession |
|
|
|
|
required: [ desc ] |
|
|
|
|
additionalProperties: false |
|
|
|
|
examples: |
|
|
|
|
- { desc: 'lamp oil', qty: 2 } |
|
|
|
|
statistic: |
|
|
|
|
type: number |
|
|
|
|
minimum: 1 |
|
|
|
@ -43,6 +86,22 @@ $defs:
@@ -43,6 +86,22 @@ $defs:
|
|
|
|
|
log: |
|
|
|
|
type: array |
|
|
|
|
description: history of health rolls |
|
|
|
|
items: { type: number } |
|
|
|
|
items: &number { type: number } |
|
|
|
|
minItems: { $data: /level } |
|
|
|
|
maxItems: { $data: /level } |
|
|
|
|
experience: |
|
|
|
|
type: object |
|
|
|
|
properties: |
|
|
|
|
total: |
|
|
|
|
type: number |
|
|
|
|
sumOf: |
|
|
|
|
list: { $data: '1/log' } |
|
|
|
|
map: amount |
|
|
|
|
log: |
|
|
|
|
type: array |
|
|
|
|
items: |
|
|
|
|
type: object |
|
|
|
|
properties: |
|
|
|
|
date: *string |
|
|
|
|
amount: *number |
|
|
|
|
notes: *string |
|
|
|
|