-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinterfaces.ts
141 lines (115 loc) · 2.19 KB
/
interfaces.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
export interface StarterObject {
classType?: string
raceType?: string
subRace?: string
}
export interface RaceData {
name: string
link: string
disposition: string[]
speed: number
size: string
maxAge: number
minAge: number
stats: Stats
}
export interface RoleData {
name: string
link: string
stats: Stats
inventory: Inventory
disposition: string[]
backgrounds: string[]
}
export interface WeaponTags {
names: string[]
simple: boolean
martial: boolean
}
export interface ArmorTags {
types: string[]
shield: boolean
}
export interface Stat {
total: number
prof: number
}
export interface Stats {
strength: number
dexterity: number
constitution: number
intelligence: number
wisdom: number
charisma: number
}
export interface StatDistribution {
strength: Stat
dexterity: Stat
constitution: Stat
intelligence: Stat
wisdom: Stat
charisma: Stat
}
export type statType = "strength" | "dexterity" | "constitution" | "intelligence" | "wisdom" | "charisma";
export interface AbilityPriority {
mainStat: statType
secondStat: statType | false
saveThrow: statType
miscStats: statType[]
}
export interface WeaponData {
name: string
link: string
damageType: string
damage: string
versatileDamage?: string
simple: boolean
ranged: boolean
allowsShield: boolean
properties: string[]
}
export interface ArmorData {
name: string
link: string
type: string
armorClass: number
scalesWithDex: Boolean
maxDexBonus: number
isStealthy: Boolean
strengthReq: number
}
export interface ToolData {
name: string
link: string
}
export interface CharacterData {
name: string
gender: string
alignment: string
age: number
background: string
level: number
}
export interface Race {
name: string
link: string
speed: number
size: string
}
export interface Role {
name: string
link: string
stats: StatDistribution
}
export interface Inventory {
weapon: WeaponData
armor: ArmorData | undefined
shield: string | false
tools: ToolData[]
}
export interface Character {
character: CharacterData
race: Race
class: Role
inventory: Inventory
}