optolith-database-schema 0.1.27 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,664 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "/equipment/_Weapon.schema.json",
4
+ "definitions": {
5
+ "StructurePoints": {
6
+ "title": "Structure Points",
7
+ "description": "The structure points of the item. Use an array if the item consists of\nmultiple components that have individual structure points.",
8
+ "type": "array",
9
+ "items": {
10
+ "type": "object",
11
+ "properties": {
12
+ "points": {
13
+ "description": "The structure points.",
14
+ "type": "integer",
15
+ "minimum": 1
16
+ }
17
+ },
18
+ "required": [
19
+ "points"
20
+ ],
21
+ "additionalProperties": false
22
+ },
23
+ "minItems": 1
24
+ },
25
+ "SanctifiedBy": {
26
+ "description": "If the weapon is sanctified by a god and thus restricted to it's Blessed\nOnes.",
27
+ "type": "object",
28
+ "properties": {
29
+ "id": {
30
+ "description": "The tradition's identifier.",
31
+ "type": "integer",
32
+ "minimum": 1
33
+ }
34
+ },
35
+ "required": [
36
+ "id"
37
+ ],
38
+ "additionalProperties": false
39
+ },
40
+ "RestrictedToCultures": {
41
+ "description": "Define if during character creation this weapon can only be bought by\ncharacters of a specific race or culture.",
42
+ "oneOf": [
43
+ {
44
+ "type": "object",
45
+ "properties": {
46
+ "tag": {
47
+ "const": "CulturesOfRace"
48
+ },
49
+ "id": {
50
+ "description": "The race's identifier.",
51
+ "type": "integer",
52
+ "minimum": 1
53
+ }
54
+ },
55
+ "required": [
56
+ "tag",
57
+ "id"
58
+ ],
59
+ "additionalProperties": false
60
+ },
61
+ {
62
+ "type": "object",
63
+ "properties": {
64
+ "tag": {
65
+ "const": "Culture"
66
+ },
67
+ "id": {
68
+ "description": "The culture's identifier.",
69
+ "type": "integer",
70
+ "minimum": 1
71
+ }
72
+ },
73
+ "required": [
74
+ "tag",
75
+ "id"
76
+ ],
77
+ "additionalProperties": false
78
+ },
79
+ {
80
+ "type": "object",
81
+ "properties": {
82
+ "tag": {
83
+ "const": "Cultures"
84
+ },
85
+ "list": {
86
+ "description": "The cultures' identifiers.",
87
+ "type": "object",
88
+ "properties": {
89
+ "id": {
90
+ "description": "The culture's identifier.",
91
+ "type": "integer",
92
+ "minimum": 1
93
+ }
94
+ },
95
+ "required": [
96
+ "id"
97
+ ],
98
+ "additionalProperties": false
99
+ }
100
+ },
101
+ "required": [
102
+ "tag",
103
+ "list"
104
+ ],
105
+ "additionalProperties": false
106
+ }
107
+ ]
108
+ },
109
+ "PrimaryAttributeDamageThreshold": {
110
+ "description": "The primary attribute damage and threshold value. You can either use an\ninteger, an object or a pair. Use an integer if you just have to define a\nsingle threshold value for the default primary attribute of the combat\ntechnique. Use an object if you need to define the value only or if you need\nto define the value as well as a single different primary attribute than\nwhich the combat technique uses. Use the pair if you need to set the primary\nattributes to AGI and STR (the combat technique has AGI but this item has\nAGI/STR) and/or if you need to set different thresholds for AGI and STR (e.g.\nAGI 14/STR 15). If the same values are in the pair, they will be merged (AGI\n14/STR 14 will be AGI/STR 14).",
111
+ "oneOf": [
112
+ {
113
+ "type": "object",
114
+ "properties": {
115
+ "tag": {
116
+ "const": "Single"
117
+ },
118
+ "attribute": {
119
+ "description": "The primary attribute(s) if different from the default primary\nattribute(s) of the combat technique.",
120
+ "type": "array",
121
+ "items": {
122
+ "type": "object",
123
+ "properties": {
124
+ "id": {
125
+ "description": "The attribute's identifier.",
126
+ "type": "integer",
127
+ "minimum": 1
128
+ }
129
+ },
130
+ "required": [
131
+ "id"
132
+ ],
133
+ "additionalProperties": false
134
+ },
135
+ "minItems": 1,
136
+ "uniqueItems": true
137
+ },
138
+ "threshold": {
139
+ "description": "The attribute value representing the damage threshold.",
140
+ "type": "integer",
141
+ "minimum": 1
142
+ }
143
+ },
144
+ "required": [
145
+ "tag",
146
+ "threshold"
147
+ ],
148
+ "additionalProperties": false
149
+ },
150
+ {
151
+ "type": "object",
152
+ "properties": {
153
+ "tag": {
154
+ "const": "Differing"
155
+ },
156
+ "list": {
157
+ "description": "A list of primary attributes, each featuring a different threshold.",
158
+ "type": "array",
159
+ "items": {
160
+ "type": "object",
161
+ "properties": {
162
+ "attribute": {
163
+ "description": "The primary attribute.",
164
+ "type": "object",
165
+ "properties": {
166
+ "id": {
167
+ "description": "The attribute's identifier.",
168
+ "type": "integer",
169
+ "minimum": 1
170
+ }
171
+ },
172
+ "required": [
173
+ "id"
174
+ ],
175
+ "additionalProperties": false
176
+ },
177
+ "threshold": {
178
+ "description": "The attribute value representing the damage threshold.",
179
+ "type": "integer",
180
+ "minimum": 1
181
+ }
182
+ },
183
+ "required": [
184
+ "attribute",
185
+ "threshold"
186
+ ],
187
+ "additionalProperties": false
188
+ },
189
+ "minItems": 2,
190
+ "uniqueItems": true
191
+ }
192
+ },
193
+ "required": [
194
+ "tag",
195
+ "list"
196
+ ],
197
+ "additionalProperties": false
198
+ }
199
+ ]
200
+ },
201
+ "DamageMelee": {
202
+ "description": "The damage of a weapon consists of a random part using dice and an optional\nflat part.",
203
+ "type": "object",
204
+ "properties": {
205
+ "dice": {
206
+ "description": "How many dice of which type are rolled to get the damage.",
207
+ "$ref": "#/definitions/Dice"
208
+ },
209
+ "flat": {
210
+ "description": "Flat damage, if any. It gets added to the result of the dice rolls.",
211
+ "type": "integer"
212
+ }
213
+ },
214
+ "required": [
215
+ "dice"
216
+ ],
217
+ "additionalProperties": false
218
+ },
219
+ "DamageRanged": {
220
+ "description": "The damage of a ranged weapon. It consists of a random part using dice and an\noptional flat part ny default. Some ranged weapons may work different so that\ndamage is either not applicable at all or it is outlined as *Special* and\nfurther defined in a description.",
221
+ "oneOf": [
222
+ {
223
+ "type": "object",
224
+ "properties": {
225
+ "tag": {
226
+ "const": "Default"
227
+ },
228
+ "dice": {
229
+ "description": "How many dice of which type are rolled to get the damage.",
230
+ "$ref": "#/definitions/Dice"
231
+ },
232
+ "flat": {
233
+ "description": "Flat damage, if any. It gets added to the result of the dice rolls.",
234
+ "type": "integer"
235
+ }
236
+ },
237
+ "required": [
238
+ "tag",
239
+ "dice"
240
+ ],
241
+ "additionalProperties": false
242
+ },
243
+ {
244
+ "type": "object",
245
+ "properties": {
246
+ "tag": {
247
+ "const": "NotApplicable"
248
+ }
249
+ },
250
+ "required": [
251
+ "tag"
252
+ ],
253
+ "additionalProperties": false
254
+ },
255
+ {
256
+ "type": "object",
257
+ "properties": {
258
+ "tag": {
259
+ "const": "Special"
260
+ }
261
+ },
262
+ "required": [
263
+ "tag"
264
+ ],
265
+ "additionalProperties": false
266
+ }
267
+ ]
268
+ },
269
+ "Attack": {
270
+ "description": "The AT modifier.",
271
+ "type": "integer"
272
+ },
273
+ "Parry": {
274
+ "description": "The PA modifier.",
275
+ "type": "integer"
276
+ },
277
+ "Reach": {
278
+ "description": "The reach of the weapon.",
279
+ "type": "integer",
280
+ "maximum": 4,
281
+ "minimum": 1
282
+ },
283
+ "Length": {
284
+ "description": "The length of the weapon in cm/halffingers.",
285
+ "type": "integer",
286
+ "minimum": 1
287
+ },
288
+ "ShieldSize": {
289
+ "oneOf": [
290
+ {
291
+ "type": "object",
292
+ "properties": {
293
+ "tag": {
294
+ "const": "Large"
295
+ },
296
+ "attack_penalty": {
297
+ "description": "The attack penalty from the shield.",
298
+ "type": "integer"
299
+ }
300
+ },
301
+ "required": [
302
+ "tag"
303
+ ],
304
+ "additionalProperties": false
305
+ },
306
+ {
307
+ "type": "object",
308
+ "properties": {
309
+ "tag": {
310
+ "const": "Medium"
311
+ }
312
+ },
313
+ "required": [
314
+ "tag"
315
+ ],
316
+ "additionalProperties": false
317
+ },
318
+ {
319
+ "type": "object",
320
+ "properties": {
321
+ "tag": {
322
+ "const": "Small"
323
+ }
324
+ },
325
+ "required": [
326
+ "tag"
327
+ ],
328
+ "additionalProperties": false
329
+ }
330
+ ]
331
+ },
332
+ "MeleeWeapon": {
333
+ "title": "Melee Weapon",
334
+ "type": "object",
335
+ "properties": {
336
+ "tag": {
337
+ "const": "Melee"
338
+ },
339
+ "combat_technique": {
340
+ "description": "The combat techniques and dependent values.",
341
+ "oneOf": [
342
+ {
343
+ "type": "object",
344
+ "properties": {
345
+ "tag": {
346
+ "const": "ChainWeapons"
347
+ },
348
+ "damage_threshold": {
349
+ "$ref": "#/definitions/PrimaryAttributeDamageThreshold"
350
+ },
351
+ "at": {
352
+ "$ref": "#/definitions/Attack"
353
+ },
354
+ "reach": {
355
+ "$ref": "#/definitions/Reach"
356
+ },
357
+ "length": {
358
+ "$ref": "#/definitions/Length"
359
+ }
360
+ },
361
+ "required": [
362
+ "tag",
363
+ "damage_threshold",
364
+ "at",
365
+ "reach",
366
+ "length"
367
+ ],
368
+ "additionalProperties": false
369
+ },
370
+ {
371
+ "type": "object",
372
+ "properties": {
373
+ "tag": {
374
+ "const": "Whips"
375
+ },
376
+ "damage_threshold": {
377
+ "$ref": "#/definitions/PrimaryAttributeDamageThreshold"
378
+ },
379
+ "at": {
380
+ "$ref": "#/definitions/Attack"
381
+ },
382
+ "reach": {
383
+ "$ref": "#/definitions/Reach"
384
+ },
385
+ "length": {
386
+ "$ref": "#/definitions/Length"
387
+ }
388
+ },
389
+ "required": [
390
+ "tag",
391
+ "damage_threshold",
392
+ "at",
393
+ "reach",
394
+ "length"
395
+ ],
396
+ "additionalProperties": false
397
+ },
398
+ {
399
+ "type": "object",
400
+ "properties": {
401
+ "tag": {
402
+ "const": "Lances"
403
+ },
404
+ "at": {
405
+ "$ref": "#/definitions/Attack"
406
+ },
407
+ "length": {
408
+ "$ref": "#/definitions/Length"
409
+ }
410
+ },
411
+ "required": [
412
+ "tag",
413
+ "at",
414
+ "length"
415
+ ],
416
+ "additionalProperties": false
417
+ },
418
+ {
419
+ "type": "object",
420
+ "properties": {
421
+ "tag": {
422
+ "const": "Shields"
423
+ },
424
+ "size": {
425
+ "$ref": "#/definitions/ShieldSize"
426
+ },
427
+ "damage_threshold": {
428
+ "$ref": "#/definitions/PrimaryAttributeDamageThreshold"
429
+ },
430
+ "at": {
431
+ "$ref": "#/definitions/Attack"
432
+ },
433
+ "pa": {
434
+ "$ref": "#/definitions/Parry"
435
+ },
436
+ "reach": {
437
+ "$ref": "#/definitions/Reach"
438
+ }
439
+ },
440
+ "required": [
441
+ "tag",
442
+ "size",
443
+ "damage_threshold",
444
+ "at",
445
+ "pa",
446
+ "reach"
447
+ ],
448
+ "additionalProperties": false
449
+ },
450
+ {
451
+ "type": "object",
452
+ "properties": {
453
+ "tag": {
454
+ "const": "Fans"
455
+ },
456
+ "size": {
457
+ "$ref": "#/definitions/ShieldSize"
458
+ },
459
+ "damage_threshold": {
460
+ "$ref": "#/definitions/PrimaryAttributeDamageThreshold"
461
+ },
462
+ "at": {
463
+ "$ref": "#/definitions/Attack"
464
+ },
465
+ "pa": {
466
+ "$ref": "#/definitions/Parry"
467
+ },
468
+ "reach": {
469
+ "$ref": "#/definitions/Reach"
470
+ },
471
+ "length": {
472
+ "$ref": "#/definitions/Length"
473
+ }
474
+ },
475
+ "required": [
476
+ "tag",
477
+ "size",
478
+ "damage_threshold",
479
+ "at",
480
+ "pa",
481
+ "reach",
482
+ "length"
483
+ ],
484
+ "additionalProperties": false
485
+ },
486
+ {
487
+ "type": "object",
488
+ "properties": {
489
+ "tag": {
490
+ "const": "Default"
491
+ },
492
+ "id": {
493
+ "description": "The close combat technique's identifier.",
494
+ "type": "integer",
495
+ "minimum": 1
496
+ },
497
+ "damage_threshold": {
498
+ "$ref": "#/definitions/PrimaryAttributeDamageThreshold"
499
+ },
500
+ "at": {
501
+ "$ref": "#/definitions/Attack"
502
+ },
503
+ "pa": {
504
+ "$ref": "#/definitions/Parry"
505
+ },
506
+ "reach": {
507
+ "$ref": "#/definitions/Reach"
508
+ },
509
+ "length": {
510
+ "$ref": "#/definitions/Length"
511
+ }
512
+ },
513
+ "required": [
514
+ "tag",
515
+ "id",
516
+ "damage_threshold",
517
+ "at",
518
+ "pa",
519
+ "reach",
520
+ "length"
521
+ ],
522
+ "additionalProperties": false
523
+ }
524
+ ]
525
+ },
526
+ "damage": {
527
+ "$ref": "#/definitions/DamageMelee"
528
+ },
529
+ "is_parrying_weapon": {
530
+ "description": "Is the weapon a parrying weapon?",
531
+ "type": "boolean"
532
+ },
533
+ "is_two_handed_weapon": {
534
+ "description": "Is the weapon a two-handed weapon?",
535
+ "type": "boolean"
536
+ }
537
+ },
538
+ "required": [
539
+ "tag",
540
+ "combat_technique",
541
+ "damage",
542
+ "is_parrying_weapon",
543
+ "is_two_handed_weapon"
544
+ ],
545
+ "additionalProperties": false
546
+ },
547
+ "RangedWeapon": {
548
+ "title": "Ranged Weapon",
549
+ "type": "object",
550
+ "properties": {
551
+ "tag": {
552
+ "const": "Ranged"
553
+ },
554
+ "combat_technique": {
555
+ "description": "The combat techniques and dependent values.",
556
+ "oneOf": [
557
+ {
558
+ "type": "object",
559
+ "properties": {
560
+ "tag": {
561
+ "const": "ThrownWeapons"
562
+ }
563
+ },
564
+ "required": [
565
+ "tag"
566
+ ],
567
+ "additionalProperties": false
568
+ },
569
+ {
570
+ "type": "object",
571
+ "properties": {
572
+ "tag": {
573
+ "const": "Default"
574
+ },
575
+ "ammunition": {
576
+ "description": "The needed ammunition.",
577
+ "type": "object",
578
+ "properties": {
579
+ "id": {
580
+ "description": "The item's identifier.",
581
+ "type": "integer",
582
+ "minimum": 1
583
+ }
584
+ },
585
+ "required": [
586
+ "id"
587
+ ],
588
+ "additionalProperties": false
589
+ }
590
+ },
591
+ "required": [
592
+ "tag",
593
+ "ammunition"
594
+ ],
595
+ "additionalProperties": false
596
+ }
597
+ ]
598
+ },
599
+ "damage": {
600
+ "$ref": "#/definitions/DamageRanged"
601
+ },
602
+ "range": {
603
+ "description": "The range brackets for the weapon: close, medium, far. Distances in m.",
604
+ "type": "object",
605
+ "properties": {
606
+ "close": {
607
+ "description": "The close range bracket for the weapon. Distance in m.",
608
+ "type": "integer",
609
+ "minimum": 1
610
+ },
611
+ "medium": {
612
+ "description": "The medium range bracket for the weapon. Distance in m.",
613
+ "type": "integer",
614
+ "minimum": 1
615
+ },
616
+ "far": {
617
+ "description": "The far range bracket for the weapon. Distance in m.",
618
+ "type": "integer",
619
+ "minimum": 1
620
+ }
621
+ },
622
+ "required": [
623
+ "close",
624
+ "medium",
625
+ "far"
626
+ ],
627
+ "additionalProperties": false
628
+ },
629
+ "reload_time": {
630
+ "description": "One or multiple reload times.",
631
+ "type": "array",
632
+ "items": {
633
+ "type": "object",
634
+ "properties": {
635
+ "value": {
636
+ "description": "A reload time value in actions.",
637
+ "type": "integer",
638
+ "minimum": 1
639
+ }
640
+ },
641
+ "required": [
642
+ "value"
643
+ ],
644
+ "additionalProperties": false
645
+ },
646
+ "minItems": 1,
647
+ "uniqueItems": true
648
+ },
649
+ "length": {
650
+ "$ref": "#/definitions/Length"
651
+ }
652
+ },
653
+ "required": [
654
+ "tag",
655
+ "combat_technique",
656
+ "damage",
657
+ "range",
658
+ "reload_time",
659
+ "length"
660
+ ],
661
+ "additionalProperties": false
662
+ }
663
+ }
664
+ }