@alpaca-software/40kdc-data 0.5.11 → 0.5.14
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.
- package/README.md +10 -0
- package/dist/author-input-pack.d.ts +27 -0
- package/dist/author-input-pack.d.ts.map +1 -0
- package/dist/author-input-pack.js +198 -0
- package/dist/author-input-pack.js.map +1 -0
- package/dist/codegen-data.js +1 -0
- package/dist/codegen-data.js.map +1 -1
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +3 -1
- package/dist/commands/import.js.map +1 -1
- package/dist/convert-faction.d.ts.map +1 -1
- package/dist/convert-faction.js +22 -2
- package/dist/convert-faction.js.map +1 -1
- package/dist/data/bundle.generated.js +1 -1
- package/dist/data/bundle.generated.js.map +1 -1
- package/dist/data/dataset.d.ts +2 -1
- package/dist/data/dataset.d.ts.map +1 -1
- package/dist/data/dataset.js +2 -0
- package/dist/data/dataset.js.map +1 -1
- package/dist/data/entities.d.ts +22 -0
- package/dist/data/entities.d.ts.map +1 -1
- package/dist/data/entities.js +28 -0
- package/dist/data/entities.js.map +1 -1
- package/dist/data/index.d.ts +3 -1
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +3 -1
- package/dist/data/index.js.map +1 -1
- package/dist/data/roster-resolve.d.ts +16 -1
- package/dist/data/roster-resolve.d.ts.map +1 -1
- package/dist/data/roster-resolve.js +19 -0
- package/dist/data/roster-resolve.js.map +1 -1
- package/dist/data/types.d.ts +3 -1
- package/dist/data/types.d.ts.map +1 -1
- package/dist/data/types.js +1 -0
- package/dist/data/types.js.map +1 -1
- package/dist/export/newrecruit-json.d.ts.map +1 -1
- package/dist/export/newrecruit-json.js +4 -3
- package/dist/export/newrecruit-json.js.map +1 -1
- package/dist/export/newrecruit-simple.js +2 -2
- package/dist/export/newrecruit-simple.js.map +1 -1
- package/dist/export/newrecruit-wtc.d.ts.map +1 -1
- package/dist/export/newrecruit-wtc.js +3 -1
- package/dist/export/newrecruit-wtc.js.map +1 -1
- package/dist/export/rosterizer.d.ts.map +1 -1
- package/dist/export/rosterizer.js +6 -7
- package/dist/export/rosterizer.js.map +1 -1
- package/dist/extract-faction-pack.d.ts +61 -0
- package/dist/extract-faction-pack.d.ts.map +1 -0
- package/dist/extract-faction-pack.js +318 -0
- package/dist/extract-faction-pack.js.map +1 -0
- package/dist/gen-conformance.js +37 -4
- package/dist/gen-conformance.js.map +1 -1
- package/dist/generated.d.ts +46 -2
- package/dist/generated.d.ts.map +1 -1
- package/dist/generated.js.map +1 -1
- package/dist/import/gw-headerless.d.ts +70 -0
- package/dist/import/gw-headerless.d.ts.map +1 -0
- package/dist/import/gw-headerless.js +343 -0
- package/dist/import/gw-headerless.js.map +1 -0
- package/dist/import/gw.js +1 -1
- package/dist/import/gw.js.map +1 -1
- package/dist/import/import-roster.d.ts.map +1 -1
- package/dist/import/import-roster.js +8 -0
- package/dist/import/import-roster.js.map +1 -1
- package/dist/import/listforge-text.js +1 -1
- package/dist/import/listforge-text.js.map +1 -1
- package/dist/import/listforge.d.ts.map +1 -1
- package/dist/import/listforge.js +18 -3
- package/dist/import/listforge.js.map +1 -1
- package/dist/import/newrecruit-json.d.ts.map +1 -1
- package/dist/import/newrecruit-json.js +21 -3
- package/dist/import/newrecruit-json.js.map +1 -1
- package/dist/import/newrecruit-simple.js +1 -1
- package/dist/import/newrecruit-simple.js.map +1 -1
- package/dist/import/newrecruit-wtc.js +1 -1
- package/dist/import/newrecruit-wtc.js.map +1 -1
- package/dist/import/resolve.d.ts.map +1 -1
- package/dist/import/resolve.js +46 -18
- package/dist/import/resolve.js.map +1 -1
- package/dist/import/roster-json.d.ts +5 -3
- package/dist/import/roster-json.d.ts.map +1 -1
- package/dist/import/roster-json.js +8 -4
- package/dist/import/roster-json.js.map +1 -1
- package/dist/import/rosterizer.js +3 -3
- package/dist/import/rosterizer.js.map +1 -1
- package/dist/import/types.d.ts +15 -4
- package/dist/import/types.d.ts.map +1 -1
- package/dist/import/types.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/merge-faction-pack.d.ts +2 -0
- package/dist/merge-faction-pack.d.ts.map +1 -0
- package/dist/merge-faction-pack.js +157 -0
- package/dist/merge-faction-pack.js.map +1 -0
- package/dist/pack-blocks.d.ts +32 -0
- package/dist/pack-blocks.d.ts.map +1 -0
- package/dist/pack-blocks.js +99 -0
- package/dist/pack-blocks.js.map +1 -0
- package/dist/rube-goldberg.js +1 -1
- package/dist/rube-goldberg.js.map +1 -1
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +33 -1
- package/dist/runner.js.map +1 -1
- package/dist/scope.d.ts +31 -0
- package/dist/scope.d.ts.map +1 -0
- package/dist/scope.js +34 -0
- package/dist/scope.js.map +1 -0
- package/dist/seed-detachment-abilities.d.ts +2 -0
- package/dist/seed-detachment-abilities.d.ts.map +1 -0
- package/dist/seed-detachment-abilities.js +137 -0
- package/dist/seed-detachment-abilities.js.map +1 -0
- package/dist/translate/effect.d.ts +17 -3
- package/dist/translate/effect.d.ts.map +1 -1
- package/dist/translate/effect.js +23 -4
- package/dist/translate/effect.js.map +1 -1
- package/dist/translate/index.d.ts +1 -1
- package/dist/translate/index.d.ts.map +1 -1
- package/dist/translate/index.js +1 -1
- package/dist/translate/index.js.map +1 -1
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +1 -0
- package/dist/validate.js.map +1 -1
- package/package.json +3 -1
- package/schemas/core/detachment.schema.json +6 -0
- package/schemas/core/hull-shape.schema.json +30 -0
- package/schemas/core/roster.schema.json +24 -8
- package/schemas/core/stratagem.schema.json +2 -2
- package/schemas/core/unit-composition.schema.json +7 -0
- package/schemas/enrichment/ability-dsl/ability.schema.json +14 -0
|
@@ -39,12 +39,10 @@
|
|
|
39
39
|
],
|
|
40
40
|
"description": "Resolved primary faction; null when the source faction could not be matched."
|
|
41
41
|
},
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
],
|
|
47
|
-
"description": "Resolved detachment; null when absent or unmatched."
|
|
42
|
+
"detachments": {
|
|
43
|
+
"type": "array",
|
|
44
|
+
"description": "Resolved detachments. 11e lists may field several detachments under a detachment-point cap; pre-11e lists carry zero or one. Order is load-bearing (source/parse order). Empty when the source declared no detachment.",
|
|
45
|
+
"items": { "$ref": "#/$defs/roster-detachment" }
|
|
48
46
|
},
|
|
49
47
|
"battle_size": {
|
|
50
48
|
"oneOf": [
|
|
@@ -61,6 +59,10 @@
|
|
|
61
59
|
"oneOf": [{ "type": "integer", "minimum": 0 }, { "type": "null" }],
|
|
62
60
|
"description": "Points ceiling parsed from the battle size (e.g. 2000), if known."
|
|
63
61
|
},
|
|
62
|
+
"detachment_cap": {
|
|
63
|
+
"oneOf": [{ "type": "integer", "minimum": 0 }, { "type": "null" }],
|
|
64
|
+
"description": "11e detachment-point budget derived from the battle size (strike-force 3, incursion 2); null when the battle size is unknown. The sum of each detachment's `dp_cost` is meant to fit within this cap."
|
|
65
|
+
},
|
|
64
66
|
"total_reported": {
|
|
65
67
|
"oneOf": [{ "type": "integer", "minimum": 0 }, { "type": "null" }],
|
|
66
68
|
"description": "Total points as reported by the source roster's cost block."
|
|
@@ -71,7 +73,7 @@
|
|
|
71
73
|
"description": "Sum of this roster's per-unit point values."
|
|
72
74
|
}
|
|
73
75
|
},
|
|
74
|
-
"required": ["declared_limit", "total_reported", "total_computed"],
|
|
76
|
+
"required": ["declared_limit", "detachment_cap", "total_reported", "total_computed"],
|
|
75
77
|
"additionalProperties": false
|
|
76
78
|
},
|
|
77
79
|
"units": {
|
|
@@ -81,7 +83,7 @@
|
|
|
81
83
|
"game_version": { "$ref": "../defs/game-version-ref.schema.json" },
|
|
82
84
|
"diagnostics": { "$ref": "#/$defs/roster-diagnostics" }
|
|
83
85
|
},
|
|
84
|
-
"required": ["name", "source", "faction_id", "
|
|
86
|
+
"required": ["name", "source", "faction_id", "detachments", "battle_size", "points", "units", "game_version", "diagnostics"],
|
|
85
87
|
"additionalProperties": false,
|
|
86
88
|
"$defs": {
|
|
87
89
|
"roster-resolved-ref": {
|
|
@@ -122,6 +124,19 @@
|
|
|
122
124
|
"required": ["id", "raw_name", "resolved", "candidates"],
|
|
123
125
|
"additionalProperties": false
|
|
124
126
|
},
|
|
127
|
+
"roster-detachment": {
|
|
128
|
+
"type": "object",
|
|
129
|
+
"description": "One detachment selected on the roster, paired with its resolved detachment-point cost.",
|
|
130
|
+
"properties": {
|
|
131
|
+
"ref": { "$ref": "#/$defs/roster-resolved-ref" },
|
|
132
|
+
"dp_cost": {
|
|
133
|
+
"oneOf": [{ "type": "integer", "minimum": 0 }, { "type": "null" }],
|
|
134
|
+
"description": "Detachment-point cost (1–3) looked up from the resolved detachment entity's `detachment_points`. Null when the detachment is unresolved or the entity records no cost."
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
"required": ["ref", "dp_cost"],
|
|
138
|
+
"additionalProperties": false
|
|
139
|
+
},
|
|
125
140
|
"roster-unit": {
|
|
126
141
|
"type": "object",
|
|
127
142
|
"properties": {
|
|
@@ -193,6 +208,7 @@
|
|
|
193
208
|
"weapon-unresolved",
|
|
194
209
|
"enhancement-unresolved",
|
|
195
210
|
"detachment-unresolved",
|
|
211
|
+
"detachment-points-exceeded",
|
|
196
212
|
"battle-size-unmapped",
|
|
197
213
|
"points-mismatch",
|
|
198
214
|
"leader-attachment-inferred",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"type": {
|
|
16
16
|
"type": "string",
|
|
17
17
|
"enum": ["battle-tactic", "strategic-ploy", "epic-deed", "wargear"],
|
|
18
|
-
"description": "GW-printed stratagem category from the card"
|
|
18
|
+
"description": "GW-printed stratagem category from the card. Optional: 11e faction packs omit it for newly introduced detachments, and the category has no in-game effect; absent when the source does not state one."
|
|
19
19
|
},
|
|
20
20
|
"detachment_id": {
|
|
21
21
|
"oneOf": [
|
|
@@ -53,6 +53,6 @@
|
|
|
53
53
|
},
|
|
54
54
|
"game_version": { "$ref": "../defs/game-version-ref.schema.json" }
|
|
55
55
|
},
|
|
56
|
-
"required": ["id", "name", "category", "
|
|
56
|
+
"required": ["id", "name", "category", "cp_cost", "phases", "player_turn", "timing", "game_version"],
|
|
57
57
|
"additionalProperties": false
|
|
58
58
|
}
|
|
@@ -28,6 +28,13 @@
|
|
|
28
28
|
"base_size_mm": {
|
|
29
29
|
"description": "This model's base. Absent when no base could be resolved for the model.",
|
|
30
30
|
"$ref": "../defs/common.schema.json#/$defs/base-size"
|
|
31
|
+
},
|
|
32
|
+
"hull_shape_id": {
|
|
33
|
+
"description": "Optional reference to a hull-shape entity giving this model's 2D collision polygon, used instead of the circular/oval base footprint. By convention a model carrying this should set `base_size_mm.shape` to \"hull\".",
|
|
34
|
+
"oneOf": [
|
|
35
|
+
{ "$ref": "../defs/common.schema.json#/$defs/entity-id" },
|
|
36
|
+
{ "type": "null" }
|
|
37
|
+
]
|
|
31
38
|
}
|
|
32
39
|
},
|
|
33
40
|
"required": ["name", "min", "max"],
|
|
@@ -39,6 +39,20 @@
|
|
|
39
39
|
},
|
|
40
40
|
"effect": { "$ref": "effect.schema.json" },
|
|
41
41
|
"scope": { "$ref": "scope.schema.json" },
|
|
42
|
+
"applies_to": {
|
|
43
|
+
"description": "Static, human-curated keyword filter naming which datasheet units this ability benefits, for roster-side highlighting. A unit matches when it carries every keyword in `required_keywords` (across its `keywords` + `faction_keywords`) and none in `excluded_keywords`. This is a denormalized projection distinct from the runtime `effect` condition tree (which mixes static class, runtime-granted markers, and timing gates and must not be scraped for scope). Absent/null means no resolvable unit scope — consumers render no highlight rather than guess.",
|
|
44
|
+
"oneOf": [
|
|
45
|
+
{
|
|
46
|
+
"type": "object",
|
|
47
|
+
"properties": {
|
|
48
|
+
"required_keywords": { "$ref": "../../defs/common.schema.json#/$defs/keyword-list" },
|
|
49
|
+
"excluded_keywords": { "$ref": "../../defs/common.schema.json#/$defs/keyword-list" }
|
|
50
|
+
},
|
|
51
|
+
"additionalProperties": false
|
|
52
|
+
},
|
|
53
|
+
{ "type": "null" }
|
|
54
|
+
]
|
|
55
|
+
},
|
|
42
56
|
"interactions": {
|
|
43
57
|
"type": "array",
|
|
44
58
|
"items": {
|