@cobbled-creators/cobblemon-schemas 1.7.0

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.
Files changed (85) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +68 -0
  3. package/bin/cobblemon-schemas.mjs +51 -0
  4. package/dist/bundle.json +1 -0
  5. package/dist/validators.mjs +3 -0
  6. package/package.json +66 -0
  7. package/schemas/_shared/common.schema.json +89 -0
  8. package/schemas/_shared/defs/collections.schema.json +32 -0
  9. package/schemas/_shared/defs/drops.schema.json +89 -0
  10. package/schemas/_shared/defs/expressions.schema.json +82 -0
  11. package/schemas/_shared/defs/identifiers.schema.json +24 -0
  12. package/schemas/_shared/defs/npc.schema.json +76 -0
  13. package/schemas/_shared/defs/pokemon.schema.json +41 -0
  14. package/schemas/_shared/defs/ranges.schema.json +70 -0
  15. package/schemas/_shared/defs/ride.schema.json +77 -0
  16. package/schemas/_shared/defs/spawning.schema.json +183 -0
  17. package/schemas/_shared/defs/vectors.schema.json +44 -0
  18. package/schemas/action_effects/schema.json +123 -0
  19. package/schemas/bedrock_pokemon_resolvers/schema.json +184 -0
  20. package/schemas/bedrock_posers/schema.json +367 -0
  21. package/schemas/behaviours/schema.json +145 -0
  22. package/schemas/berries/schema.json +178 -0
  23. package/schemas/cosmetic_items/schema.json +55 -0
  24. package/schemas/dex_additions/schema.json +22 -0
  25. package/schemas/dex_entries/schema.json +83 -0
  26. package/schemas/dex_entry_additions/schema.json +63 -0
  27. package/schemas/dexes/schema.json +89 -0
  28. package/schemas/dialogues/schema.json +260 -0
  29. package/schemas/fossils/schema.json +22 -0
  30. package/schemas/global_species_features/schema.json +6 -0
  31. package/schemas/index.json +244 -0
  32. package/schemas/marks/schema.json +49 -0
  33. package/schemas/mechanics/aprijuices.schema.json +25 -0
  34. package/schemas/mechanics/berries.schema.json +35 -0
  35. package/schemas/mechanics/potions.schema.json +23 -0
  36. package/schemas/mechanics/remedies.schema.json +31 -0
  37. package/schemas/mechanics/slowpoke_tails.schema.json +17 -0
  38. package/schemas/natural_materials/schema.json +40 -0
  39. package/schemas/npc_presets/schema.json +6 -0
  40. package/schemas/npcs/schema.json +443 -0
  41. package/schemas/pokemon_interactions/schema.json +169 -0
  42. package/schemas/pokerods/schema.json +19 -0
  43. package/schemas/ride_settings/bird.schema.json +48 -0
  44. package/schemas/ride_settings/boat.schema.json +45 -0
  45. package/schemas/ride_settings/burst.schema.json +11 -0
  46. package/schemas/ride_settings/dolphin.schema.json +45 -0
  47. package/schemas/ride_settings/glider.schema.json +18 -0
  48. package/schemas/ride_settings/helicopter.schema.json +21 -0
  49. package/schemas/ride_settings/horse.schema.json +36 -0
  50. package/schemas/ride_settings/hover.schema.json +33 -0
  51. package/schemas/ride_settings/jet.schema.json +42 -0
  52. package/schemas/ride_settings/minekart.schema.json +33 -0
  53. package/schemas/ride_settings/rocket.schema.json +36 -0
  54. package/schemas/ride_settings/submarine.schema.json +33 -0
  55. package/schemas/ride_settings/vehicle.schema.json +45 -0
  56. package/schemas/seasonings/schema.json +124 -0
  57. package/schemas/spawn_bait_effects/schema.json +42 -0
  58. package/schemas/spawn_detail_presets/schema.json +79 -0
  59. package/schemas/spawn_pool_world/schema.json +455 -0
  60. package/schemas/spawn_rules/schema.json +217 -0
  61. package/schemas/species/schema.json +1043 -0
  62. package/schemas/species_additions/schema.json +22 -0
  63. package/schemas/species_feature_assignments/schema.json +25 -0
  64. package/schemas/species_features/schema.json +139 -0
  65. package/schemas/starters/schema.json +28 -0
  66. package/schemas/unlockable_pc_box_wallpapers/schema.json +29 -0
  67. package/src/errors/format.mjs +46 -0
  68. package/src/errors/pointer.mjs +30 -0
  69. package/src/errors/simplify.mjs +58 -0
  70. package/src/errors/type-branches.mjs +65 -0
  71. package/src/errors/values.mjs +7 -0
  72. package/src/index.d.ts +74 -0
  73. package/src/index.mjs +6 -0
  74. package/src/json/line-index.mjs +21 -0
  75. package/src/json/parse-json.mjs +28 -0
  76. package/src/json/syntax-errors.mjs +56 -0
  77. package/src/node/load-engine.mjs +30 -0
  78. package/src/node/load-schemas.mjs +35 -0
  79. package/src/node/package-info.mjs +10 -0
  80. package/src/node/read-pack.mjs +18 -0
  81. package/src/node.d.ts +13 -0
  82. package/src/node.mjs +5 -0
  83. package/src/schema-engine.mjs +43 -0
  84. package/src/schema-index.mjs +54 -0
  85. package/src/validate-pack.mjs +28 -0
@@ -0,0 +1,1043 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://cobblemon-schema.local/species/schema.json",
4
+ "title": "Cobblemon Species",
5
+ "type": "object",
6
+ "properties": {
7
+ "nationalPokedexNumber": {
8
+ "type": "integer",
9
+ "minimum": 1
10
+ },
11
+ "name": {
12
+ "type": "string"
13
+ },
14
+ "primaryType": {
15
+ "type": "string"
16
+ },
17
+ "secondaryType": {
18
+ "type": "string"
19
+ },
20
+ "maleRatio": {
21
+ "type": "number"
22
+ },
23
+ "height": {
24
+ "type": "number",
25
+ "minimum": 0
26
+ },
27
+ "weight": {
28
+ "type": "number",
29
+ "minimum": 0
30
+ },
31
+ "pokedex": {
32
+ "type": "array",
33
+ "items": {
34
+ "type": "string"
35
+ }
36
+ },
37
+ "labels": {
38
+ "type": "array",
39
+ "items": {
40
+ "type": "string"
41
+ }
42
+ },
43
+ "aspects": {
44
+ "type": "array",
45
+ "items": {
46
+ "type": "string"
47
+ }
48
+ },
49
+ "abilities": {
50
+ "oneOf": [
51
+ {
52
+ "type": "array",
53
+ "items": {
54
+ "type": "string"
55
+ }
56
+ },
57
+ {
58
+ "type": "object",
59
+ "additionalProperties": true
60
+ }
61
+ ]
62
+ },
63
+ "eggGroups": {
64
+ "type": "array",
65
+ "items": {
66
+ "$ref": "#/$defs/eggGroup"
67
+ }
68
+ },
69
+ "baseStats": {
70
+ "$ref": "#/$defs/stats"
71
+ },
72
+ "evYield": {
73
+ "$ref": "#/$defs/evYields"
74
+ },
75
+ "baseExperienceYield": {
76
+ "type": "integer",
77
+ "minimum": 0
78
+ },
79
+ "experienceGroup": {
80
+ "type": "string"
81
+ },
82
+ "catchRate": {
83
+ "type": "integer",
84
+ "minimum": 0
85
+ },
86
+ "eggCycles": {
87
+ "type": "integer",
88
+ "minimum": 0
89
+ },
90
+ "baseFriendship": {
91
+ "type": "integer"
92
+ },
93
+ "baseScale": {
94
+ "type": "number",
95
+ "exclusiveMinimum": 0
96
+ },
97
+ "hitbox": {
98
+ "oneOf": [
99
+ {
100
+ "type": "object",
101
+ "properties": {
102
+ "width": {
103
+ "type": "number",
104
+ "exclusiveMinimum": 0
105
+ },
106
+ "height": {
107
+ "type": "number",
108
+ "exclusiveMinimum": 0
109
+ },
110
+ "fixed": {
111
+ "type": "boolean"
112
+ },
113
+ "standingEyeHeight": {
114
+ "type": "number"
115
+ }
116
+ },
117
+ "required": [
118
+ "width",
119
+ "height"
120
+ ],
121
+ "additionalProperties": false
122
+ },
123
+ {
124
+ "type": "string"
125
+ }
126
+ ]
127
+ },
128
+ "shoulderMountable": {
129
+ "type": "boolean"
130
+ },
131
+ "shoulderEffects": {
132
+ "type": "array",
133
+ "items": {
134
+ "oneOf": [
135
+ {
136
+ "type": "string"
137
+ },
138
+ {
139
+ "type": "object",
140
+ "additionalProperties": true
141
+ }
142
+ ]
143
+ }
144
+ },
145
+ "moves": {
146
+ "type": "array",
147
+ "items": {
148
+ "type": "string"
149
+ }
150
+ },
151
+ "features": {
152
+ "type": "array",
153
+ "items": {
154
+ "type": "string"
155
+ }
156
+ },
157
+ "standingEyeHeight": {
158
+ "type": "number"
159
+ },
160
+ "swimmingEyeHeight": {
161
+ "type": "number"
162
+ },
163
+ "flyingEyeHeight": {
164
+ "type": "number"
165
+ },
166
+ "behaviour": {
167
+ "$ref": "#/$defs/pokemonBehaviour"
168
+ },
169
+ "drops": {
170
+ "$ref": "../_shared/defs/drops.schema.json#/$defs/dropTable"
171
+ },
172
+ "dynamaxBlocked": {
173
+ "type": "boolean"
174
+ },
175
+ "implemented": {
176
+ "type": "boolean"
177
+ },
178
+ "battleOnly": {
179
+ "type": "boolean"
180
+ },
181
+ "baseAI": {
182
+ "type": "array",
183
+ "items": {
184
+ "$ref": "#/$defs/behaviourConfig"
185
+ }
186
+ },
187
+ "ai": {
188
+ "type": "array",
189
+ "items": {
190
+ "$ref": "#/$defs/behaviourConfig"
191
+ }
192
+ },
193
+ "forms": {
194
+ "type": "array",
195
+ "items": {
196
+ "$ref": "#/$defs/form"
197
+ }
198
+ },
199
+ "riding": {
200
+ "$ref": "#/$defs/riding"
201
+ },
202
+ "evolutions": {
203
+ "type": "array",
204
+ "items": {
205
+ "$ref": "#/$defs/evolution"
206
+ }
207
+ },
208
+ "preEvolution": {
209
+ "$ref": "../_shared/defs/pokemon.schema.json#/$defs/pokemonProperties"
210
+ },
211
+ "battleTheme": {
212
+ "$ref": "../_shared/defs/identifiers.schema.json#/$defs/identifier"
213
+ },
214
+ "lightingData": {
215
+ "type": "object",
216
+ "properties": {
217
+ "lightLevel": {
218
+ "type": "integer",
219
+ "minimum": 0,
220
+ "maximum": 15
221
+ },
222
+ "liquidGlowMode": {
223
+ "type": "string",
224
+ "enum": [
225
+ "LAND",
226
+ "UNDERWATER",
227
+ "BOTH"
228
+ ]
229
+ }
230
+ },
231
+ "required": [
232
+ "lightLevel",
233
+ "liquidGlowMode"
234
+ ],
235
+ "additionalProperties": false
236
+ }
237
+ },
238
+ "required": [
239
+ "nationalPokedexNumber",
240
+ "name",
241
+ "primaryType",
242
+ "maleRatio",
243
+ "height",
244
+ "weight",
245
+ "pokedex",
246
+ "labels",
247
+ "abilities",
248
+ "eggGroups",
249
+ "baseStats",
250
+ "evYield",
251
+ "baseExperienceYield",
252
+ "experienceGroup",
253
+ "catchRate",
254
+ "eggCycles",
255
+ "baseFriendship",
256
+ "behaviour",
257
+ "moves"
258
+ ],
259
+ "additionalProperties": false,
260
+ "$defs": {
261
+ "eggGroup": {
262
+ "type": "string",
263
+ "enum": [
264
+ "monster",
265
+ "water_1",
266
+ "bug",
267
+ "flying",
268
+ "field",
269
+ "fairy",
270
+ "grass",
271
+ "human_like",
272
+ "water_3",
273
+ "mineral",
274
+ "amorphous",
275
+ "water_2",
276
+ "ditto",
277
+ "dragon",
278
+ "undiscovered"
279
+ ]
280
+ },
281
+ "stats": {
282
+ "type": "object",
283
+ "properties": {
284
+ "hp": {
285
+ "type": "integer"
286
+ },
287
+ "attack": {
288
+ "type": "integer"
289
+ },
290
+ "defence": {
291
+ "type": "integer"
292
+ },
293
+ "special_attack": {
294
+ "type": "integer"
295
+ },
296
+ "special_defence": {
297
+ "type": "integer"
298
+ },
299
+ "speed": {
300
+ "type": "integer"
301
+ }
302
+ },
303
+ "required": [
304
+ "hp",
305
+ "attack",
306
+ "defence",
307
+ "special_attack",
308
+ "special_defence",
309
+ "speed"
310
+ ],
311
+ "additionalProperties": false
312
+ },
313
+ "evYields": {
314
+ "type": "object",
315
+ "properties": {
316
+ "hp": {
317
+ "type": "integer"
318
+ },
319
+ "attack": {
320
+ "type": "integer"
321
+ },
322
+ "defence": {
323
+ "type": "integer"
324
+ },
325
+ "special_attack": {
326
+ "type": "integer"
327
+ },
328
+ "special_defence": {
329
+ "type": "integer"
330
+ },
331
+ "speed": {
332
+ "type": "integer"
333
+ }
334
+ },
335
+ "additionalProperties": false
336
+ },
337
+ "behaviourConfig": {
338
+ "oneOf": [
339
+ {
340
+ "type": "string"
341
+ },
342
+ {
343
+ "type": "object",
344
+ "properties": {
345
+ "type": {
346
+ "type": "string"
347
+ }
348
+ },
349
+ "required": [
350
+ "type"
351
+ ],
352
+ "additionalProperties": true
353
+ }
354
+ ]
355
+ },
356
+ "pokemonBehaviour": {
357
+ "type": "object",
358
+ "properties": {
359
+ "resting": {
360
+ "type": "object",
361
+ "properties": {
362
+ "canSleep": {
363
+ "type": "boolean"
364
+ },
365
+ "times": {
366
+ "oneOf": [
367
+ {
368
+ "$ref": "../_shared/defs/ranges.schema.json#/$defs/intRange"
369
+ },
370
+ {
371
+ "type": "array",
372
+ "items": {
373
+ "type": "string"
374
+ }
375
+ }
376
+ ]
377
+ },
378
+ "blocks": {
379
+ "type": "array",
380
+ "items": {
381
+ "type": "string"
382
+ }
383
+ },
384
+ "biomes": {
385
+ "type": "array",
386
+ "items": {
387
+ "type": "string"
388
+ }
389
+ },
390
+ "fluids": {
391
+ "type": "array",
392
+ "items": {
393
+ "type": "string"
394
+ }
395
+ },
396
+ "light": {
397
+ "$ref": "../_shared/defs/ranges.schema.json#/$defs/intRange"
398
+ },
399
+ "depth": {
400
+ "oneOf": [
401
+ {
402
+ "type": "string"
403
+ },
404
+ {
405
+ "type": "integer"
406
+ }
407
+ ]
408
+ },
409
+ "canSeeSky": {
410
+ "type": "boolean"
411
+ },
412
+ "skyLight": {
413
+ "$ref": "../_shared/defs/ranges.schema.json#/$defs/intRange"
414
+ },
415
+ "drowsyChance": {
416
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
417
+ },
418
+ "rouseChance": {
419
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
420
+ },
421
+ "willSleepOnBed": {
422
+ "type": "boolean"
423
+ },
424
+ "sleepChance": {
425
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
426
+ }
427
+ },
428
+ "additionalProperties": true
429
+ },
430
+ "moving": {
431
+ "type": "object",
432
+ "properties": {
433
+ "walk": {
434
+ "type": "object",
435
+ "properties": {
436
+ "canWalk": {
437
+ "type": "boolean"
438
+ },
439
+ "avoidsLand": {
440
+ "type": "boolean"
441
+ },
442
+ "walkSpeed": {
443
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
444
+ }
445
+ },
446
+ "additionalProperties": true
447
+ },
448
+ "walking": {
449
+ "type": "object",
450
+ "additionalProperties": true
451
+ },
452
+ "swim": {
453
+ "type": "object",
454
+ "properties": {
455
+ "avoidsWater": {
456
+ "type": "boolean"
457
+ },
458
+ "canSwimInWater": {
459
+ "type": "boolean"
460
+ },
461
+ "swimSpeed": {
462
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
463
+ },
464
+ "canBreatheUnderwater": {
465
+ "type": "boolean"
466
+ },
467
+ "canWalkOnWater": {
468
+ "type": "boolean"
469
+ },
470
+ "canSwimInLava": {
471
+ "type": "boolean"
472
+ },
473
+ "canBreatheUnderlava": {
474
+ "type": "boolean"
475
+ },
476
+ "canWalkOnLava": {
477
+ "type": "boolean"
478
+ }
479
+ },
480
+ "additionalProperties": true
481
+ },
482
+ "fly": {
483
+ "type": "object",
484
+ "properties": {
485
+ "canFly": {
486
+ "type": "boolean"
487
+ },
488
+ "flySpeedHorizontal": {
489
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
490
+ }
491
+ },
492
+ "additionalProperties": true
493
+ },
494
+ "stepHeight": {
495
+ "type": "number"
496
+ },
497
+ "wanderChance": {
498
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
499
+ },
500
+ "wanderSpeed": {
501
+ "type": "number"
502
+ },
503
+ "canLook": {
504
+ "type": "boolean"
505
+ }
506
+ },
507
+ "additionalProperties": true
508
+ },
509
+ "idle": {
510
+ "type": "object",
511
+ "additionalProperties": true
512
+ },
513
+ "fireImmune": {
514
+ "type": "boolean"
515
+ },
516
+ "dampensVibrations": {
517
+ "type": "boolean"
518
+ },
519
+ "entityInteract": {
520
+ "type": "object",
521
+ "properties": {
522
+ "avoidedByCreeper": {
523
+ "type": "boolean"
524
+ },
525
+ "avoidedByPhantom": {
526
+ "type": "boolean"
527
+ },
528
+ "avoidedByFox": {
529
+ "type": "boolean"
530
+ },
531
+ "avoidedBySkeleton": {
532
+ "type": "boolean"
533
+ }
534
+ },
535
+ "additionalProperties": true
536
+ },
537
+ "lightningHit": {
538
+ "type": "object",
539
+ "properties": {
540
+ "rotateFeatures": {
541
+ "type": "array",
542
+ "items": {
543
+ "type": "object",
544
+ "properties": {
545
+ "key": {
546
+ "type": "string"
547
+ },
548
+ "chain": {
549
+ "type": "array",
550
+ "items": {
551
+ "type": "string"
552
+ }
553
+ }
554
+ },
555
+ "required": [
556
+ "key",
557
+ "chain"
558
+ ],
559
+ "additionalProperties": false
560
+ }
561
+ }
562
+ },
563
+ "additionalProperties": true
564
+ },
565
+ "blockInteract": {
566
+ "type": "object",
567
+ "additionalProperties": true
568
+ },
569
+ "combat": {
570
+ "type": "object",
571
+ "properties": {
572
+ "willDefendSelf": {
573
+ "type": "boolean"
574
+ },
575
+ "willFlee": {
576
+ "type": "boolean"
577
+ },
578
+ "willDefendOwner": {
579
+ "type": "boolean"
580
+ },
581
+ "fightsMelee": {
582
+ "type": "boolean"
583
+ }
584
+ },
585
+ "additionalProperties": true
586
+ },
587
+ "herd": {
588
+ "type": "object",
589
+ "properties": {
590
+ "toleratedLeaders": {
591
+ "type": "array",
592
+ "items": {
593
+ "type": "object",
594
+ "properties": {
595
+ "pokemon": {
596
+ "$ref": "../_shared/defs/pokemon.schema.json#/$defs/pokemonProperties"
597
+ },
598
+ "tier": {
599
+ "type": "integer"
600
+ },
601
+ "ignoresLevel": {
602
+ "type": "boolean"
603
+ },
604
+ "followDistance": {
605
+ "$ref": "../_shared/defs/ranges.schema.json#/$defs/intRange"
606
+ }
607
+ },
608
+ "required": [
609
+ "pokemon",
610
+ "tier"
611
+ ],
612
+ "additionalProperties": false
613
+ }
614
+ },
615
+ "maxSize": {
616
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
617
+ },
618
+ "followDistance": {
619
+ "$ref": "../_shared/defs/ranges.schema.json#/$defs/intRange"
620
+ }
621
+ },
622
+ "additionalProperties": true
623
+ },
624
+ "characteristicRainbow": {
625
+ "type": "boolean"
626
+ },
627
+ "itemInteract": {
628
+ "type": "object",
629
+ "properties": {
630
+ "desiredItems": {
631
+ "type": "array",
632
+ "items": {
633
+ "type": "object",
634
+ "properties": {
635
+ "item": {
636
+ "oneOf": [
637
+ {
638
+ "type": "string"
639
+ },
640
+ {
641
+ "type": "object",
642
+ "additionalProperties": true
643
+ }
644
+ ]
645
+ },
646
+ "pickupPriority": {
647
+ "type": "integer"
648
+ },
649
+ "fullnessValue": {
650
+ "type": "integer"
651
+ },
652
+ "returnItem": {
653
+ "$ref": "../_shared/defs/identifiers.schema.json#/$defs/identifier"
654
+ },
655
+ "onUseEffect": {
656
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
657
+ }
658
+ },
659
+ "additionalProperties": true
660
+ }
661
+ }
662
+ },
663
+ "additionalProperties": true
664
+ }
665
+ },
666
+ "required": [],
667
+ "additionalProperties": true
668
+ },
669
+ "riding": {
670
+ "type": "object",
671
+ "properties": {
672
+ "seats": {
673
+ "type": "array",
674
+ "items": {
675
+ "$ref": "../_shared/defs/ride.schema.json#/$defs/seat"
676
+ }
677
+ },
678
+ "conditions": {
679
+ "type": "array",
680
+ "items": {
681
+ "$ref": "../_shared/defs/expressions.schema.json#/$defs/expressionLike"
682
+ }
683
+ },
684
+ "behaviour": {
685
+ "oneOf": [
686
+ {
687
+ "type": "null"
688
+ },
689
+ {
690
+ "type": "object",
691
+ "properties": {
692
+ "key": {
693
+ "$ref": "../_shared/defs/identifiers.schema.json#/$defs/identifier"
694
+ },
695
+ "transitionStrategy": {
696
+ "$ref": "../_shared/defs/identifiers.schema.json#/$defs/identifier"
697
+ },
698
+ "defaultBehaviour": {
699
+ "type": "object",
700
+ "additionalProperties": true
701
+ },
702
+ "alternateBehaviour": {
703
+ "type": "object",
704
+ "additionalProperties": true
705
+ }
706
+ },
707
+ "required": [
708
+ "key"
709
+ ],
710
+ "additionalProperties": true
711
+ }
712
+ ]
713
+ },
714
+ "behaviours": {
715
+ "type": "object",
716
+ "properties": {
717
+ "LAND": {
718
+ "type": "object",
719
+ "additionalProperties": true
720
+ },
721
+ "AIR": {
722
+ "type": "object",
723
+ "additionalProperties": true
724
+ },
725
+ "LIQUID": {
726
+ "type": "object",
727
+ "additionalProperties": true
728
+ }
729
+ },
730
+ "additionalProperties": true
731
+ },
732
+ "stats": {
733
+ "type": "object",
734
+ "additionalProperties": {
735
+ "type": "object",
736
+ "properties": {
737
+ "displayName": {
738
+ "type": "string"
739
+ },
740
+ "description": {
741
+ "type": "string"
742
+ },
743
+ "ranges": {
744
+ "oneOf": [
745
+ {
746
+ "$ref": "../_shared/defs/ranges.schema.json#/$defs/intRange"
747
+ },
748
+ {
749
+ "type": "object",
750
+ "additionalProperties": {
751
+ "$ref": "../_shared/defs/ranges.schema.json#/$defs/intRange"
752
+ }
753
+ }
754
+ ]
755
+ }
756
+ },
757
+ "required": [
758
+ "ranges"
759
+ ],
760
+ "additionalProperties": false
761
+ }
762
+ }
763
+ },
764
+ "required": [],
765
+ "additionalProperties": false
766
+ },
767
+ "requirement": {
768
+ "type": "object",
769
+ "properties": {
770
+ "variant": {
771
+ "type": "string"
772
+ }
773
+ },
774
+ "required": [
775
+ "variant"
776
+ ],
777
+ "additionalProperties": true
778
+ },
779
+ "evolution": {
780
+ "type": "object",
781
+ "properties": {
782
+ "id": {
783
+ "type": "string"
784
+ },
785
+ "variant": {
786
+ "type": "string",
787
+ "enum": [
788
+ "level_up",
789
+ "passive",
790
+ "trade",
791
+ "item_interact",
792
+ "block_click"
793
+ ]
794
+ },
795
+ "result": {
796
+ "$ref": "../_shared/defs/pokemon.schema.json#/$defs/pokemonProperties"
797
+ },
798
+ "shedder": {
799
+ "$ref": "../_shared/defs/pokemon.schema.json#/$defs/pokemonProperties"
800
+ },
801
+ "requiredContext": {
802
+ "oneOf": [
803
+ {
804
+ "type": "string"
805
+ },
806
+ {
807
+ "type": "object",
808
+ "additionalProperties": true
809
+ }
810
+ ]
811
+ },
812
+ "optional": {
813
+ "type": "boolean"
814
+ },
815
+ "consumeHeldItem": {
816
+ "type": "boolean"
817
+ },
818
+ "requirements": {
819
+ "type": "array",
820
+ "items": {
821
+ "$ref": "#/$defs/requirement"
822
+ }
823
+ },
824
+ "learnableMoves": {
825
+ "type": "array",
826
+ "items": {
827
+ "type": "string"
828
+ }
829
+ },
830
+ "drops": {
831
+ "$ref": "../_shared/defs/drops.schema.json#/$defs/dropTable"
832
+ },
833
+ "permanent": {
834
+ "type": "boolean"
835
+ }
836
+ },
837
+ "required": [
838
+ "id",
839
+ "variant",
840
+ "result",
841
+ "consumeHeldItem",
842
+ "learnableMoves"
843
+ ],
844
+ "additionalProperties": false
845
+ },
846
+ "form": {
847
+ "type": "object",
848
+ "properties": {
849
+ "name": {
850
+ "type": "string"
851
+ },
852
+ "primaryType": {
853
+ "type": "string"
854
+ },
855
+ "secondaryType": {
856
+ "type": "string"
857
+ },
858
+ "maleRatio": {
859
+ "type": "number"
860
+ },
861
+ "height": {
862
+ "type": "number"
863
+ },
864
+ "weight": {
865
+ "type": "number"
866
+ },
867
+ "labels": {
868
+ "type": "array",
869
+ "items": {
870
+ "type": "string"
871
+ }
872
+ },
873
+ "aspects": {
874
+ "type": "array",
875
+ "items": {
876
+ "type": "string"
877
+ }
878
+ },
879
+ "battleOnly": {
880
+ "type": "boolean"
881
+ },
882
+ "baseStats": {
883
+ "$ref": "#/$defs/stats"
884
+ },
885
+ "abilities": {
886
+ "oneOf": [
887
+ {
888
+ "type": "array",
889
+ "items": {
890
+ "type": "string"
891
+ }
892
+ },
893
+ {
894
+ "type": "object",
895
+ "additionalProperties": true
896
+ }
897
+ ]
898
+ },
899
+ "behaviour": {
900
+ "$ref": "#/$defs/pokemonBehaviour"
901
+ },
902
+ "moves": {
903
+ "type": "array",
904
+ "items": {
905
+ "type": "string"
906
+ }
907
+ },
908
+ "evolutions": {
909
+ "type": "array",
910
+ "items": {
911
+ "$ref": "#/$defs/evolution"
912
+ }
913
+ },
914
+ "pokedex": {
915
+ "type": "array",
916
+ "items": {
917
+ "type": "string"
918
+ }
919
+ },
920
+ "drops": {
921
+ "$ref": "../_shared/defs/drops.schema.json#/$defs/dropTable"
922
+ },
923
+ "evYield": {
924
+ "$ref": "#/$defs/stats"
925
+ },
926
+ "baseScale": {
927
+ "type": "number"
928
+ },
929
+ "hitbox": {
930
+ "oneOf": [
931
+ {
932
+ "type": "object",
933
+ "properties": {
934
+ "width": {
935
+ "type": "number"
936
+ },
937
+ "height": {
938
+ "type": "number"
939
+ },
940
+ "fixed": {
941
+ "type": "boolean"
942
+ }
943
+ },
944
+ "required": [
945
+ "width",
946
+ "height"
947
+ ],
948
+ "additionalProperties": false
949
+ },
950
+ {
951
+ "type": "string"
952
+ }
953
+ ]
954
+ },
955
+ "dynamaxBlocked": {
956
+ "type": "boolean"
957
+ },
958
+ "baseExperienceYield": {
959
+ "type": "integer"
960
+ },
961
+ "preEvolution": {
962
+ "$ref": "../_shared/defs/pokemon.schema.json#/$defs/pokemonProperties"
963
+ },
964
+ "lightingData": {
965
+ "type": "object",
966
+ "properties": {
967
+ "lightLevel": {
968
+ "type": "integer",
969
+ "minimum": 0,
970
+ "maximum": 15
971
+ },
972
+ "liquidGlowMode": {
973
+ "type": "string",
974
+ "enum": [
975
+ "LAND",
976
+ "UNDERWATER",
977
+ "BOTH"
978
+ ]
979
+ }
980
+ },
981
+ "required": [
982
+ "lightLevel",
983
+ "liquidGlowMode"
984
+ ],
985
+ "additionalProperties": false
986
+ },
987
+ "riding": {
988
+ "$ref": "#/$defs/riding"
989
+ },
990
+ "eggCycles": {
991
+ "type": "integer"
992
+ },
993
+ "eggGroups": {
994
+ "type": "array",
995
+ "items": {
996
+ "$ref": "#/$defs/eggGroup"
997
+ }
998
+ },
999
+ "catchRate": {
1000
+ "type": "integer"
1001
+ },
1002
+ "baseFriendship": {
1003
+ "type": "integer"
1004
+ },
1005
+ "standingEyeHeight": {
1006
+ "type": "number"
1007
+ },
1008
+ "shoulderMountable": {
1009
+ "type": "boolean"
1010
+ },
1011
+ "requiredMove": {
1012
+ "type": "string"
1013
+ },
1014
+ "requiredItem": {
1015
+ "type": "string"
1016
+ },
1017
+ "requiredItems": {
1018
+ "type": "array",
1019
+ "items": {
1020
+ "type": "string"
1021
+ }
1022
+ },
1023
+ "gigantamaxMove": {
1024
+ "type": "string"
1025
+ },
1026
+ "battleTheme": {
1027
+ "$ref": "../_shared/defs/identifiers.schema.json#/$defs/identifier"
1028
+ }
1029
+ },
1030
+ "required": [
1031
+ "name",
1032
+ "primaryType",
1033
+ "maleRatio",
1034
+ "height",
1035
+ "weight",
1036
+ "labels",
1037
+ "aspects",
1038
+ "evolutions"
1039
+ ],
1040
+ "additionalProperties": false
1041
+ }
1042
+ }
1043
+ }