@archivist-gg/dnd5e 0.3.5 → 0.3.6
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/dist/{chunk-UMWIPLLM.js → chunk-2BI5NAXK.js} +1 -1
- package/dist/{chunk-V2MJE6NC.js → chunk-3BMVVNCS.js} +1 -1
- package/dist/{chunk-UXPGW4TI.js → chunk-4ISR76DH.js} +5 -0
- package/dist/{chunk-N3A5ICBO.js → chunk-7MRW4RTH.js} +1 -1
- package/dist/{chunk-WHVLNFTG.js → chunk-7WNQJAZW.js} +19 -2
- package/dist/{chunk-UQ3ZFCWD.js → chunk-A6YL53NC.js} +1 -1
- package/dist/{chunk-KK33PIDN.js → chunk-ABQ6ZWAF.js} +1 -1
- package/dist/{chunk-CV5XDJKU.js → chunk-B4TQTJVC.js} +1 -1
- package/dist/{chunk-RVXC6ZHY.js → chunk-BJFL4KYG.js} +1 -1
- package/dist/{chunk-EHDATXP7.js → chunk-BS355LND.js} +1 -1
- package/dist/{chunk-3JOTQW7A.js → chunk-CQAL67R3.js} +1 -1
- package/dist/{chunk-CGRLQ34U.js → chunk-DTCR4DBF.js} +2 -2
- package/dist/{chunk-I2NDWFDD.js → chunk-E4KG7HXO.js} +9 -0
- package/dist/{chunk-2VDTW7QO.js → chunk-EYZCCWG2.js} +50 -1
- package/dist/{chunk-5RKLL2AD.js → chunk-H4VEMVOO.js} +1 -1
- package/dist/{chunk-Y4AGLCY6.js → chunk-JKLRBILX.js} +1 -1
- package/dist/{chunk-W74BCA7V.js → chunk-JOVMV2X5.js} +1 -1
- package/dist/{chunk-OAXWSVJB.js → chunk-MT4RWROQ.js} +2 -2
- package/dist/{chunk-RF4TYCA2.js → chunk-MYW7AOUE.js} +1 -1
- package/dist/{chunk-6BFWZW6T.js → chunk-NNAQ4KQF.js} +1 -1
- package/dist/{chunk-KADJZGZY.js → chunk-RWZTGMSN.js} +1 -1
- package/dist/{chunk-YLL2QXY2.js → chunk-UA3I2YSO.js} +4 -0
- package/dist/class/class.codec.js +5 -5
- package/dist/class/class.parser.js +4 -4
- package/dist/class/class.schema.d.ts +5 -0
- package/dist/class/class.schema.js +3 -3
- package/dist/feat/feat.codec.js +4 -4
- package/dist/feat/feat.parser.js +3 -3
- package/dist/feat/feat.schema.d.ts +5 -0
- package/dist/feat/feat.schema.js +2 -2
- package/dist/index.js +19 -19
- package/dist/monster/monster.parser.js +4 -4
- package/dist/monster/monster.schema.js +3 -3
- package/dist/optional-feature/optional-feature.codec.js +4 -4
- package/dist/optional-feature/optional-feature.parser.js +3 -3
- package/dist/optional-feature/optional-feature.schema.d.ts +23 -0
- package/dist/optional-feature/optional-feature.schema.js +2 -2
- package/dist/pc/pc.decision-engine.js +2 -2
- package/dist/pc/pc.parser.js +1 -1
- package/dist/pc/pc.proficiencies.js +2 -2
- package/dist/pc/pc.recalc.js +2 -2
- package/dist/pc/pc.resolver.d.ts +14 -0
- package/dist/pc/pc.resolver.js +4 -2
- package/dist/pc/pc.resource-seed.js +1 -1
- package/dist/pc/pc.resources.d.ts +6 -0
- package/dist/pc/pc.resources.js +1 -1
- package/dist/pc/pc.rest.js +1 -1
- package/dist/pc/pc.schema.d.ts +1 -0
- package/dist/pc/pc.schema.js +1 -1
- package/dist/pc/pc.types.d.ts +8 -0
- package/dist/race/race.codec.js +5 -5
- package/dist/race/race.parser.js +4 -4
- package/dist/race/race.schema.js +3 -3
- package/dist/schemas/feature-schema.js +2 -2
- package/dist/schemas/resource-schema.d.ts +5 -0
- package/dist/schemas/resource-schema.js +1 -1
- package/dist/subclass/subclass.codec.js +5 -5
- package/dist/subclass/subclass.parser.js +4 -4
- package/dist/subclass/subclass.schema.d.ts +5 -0
- package/dist/subclass/subclass.schema.js +3 -3
- package/dist/types/optional-feature.types.d.ts +2 -0
- package/dist/types/resource.d.ts +5 -0
- package/package.json +1 -1
|
@@ -42,6 +42,8 @@ function toResolvedResource(r, fallbackName, owner) {
|
|
|
42
42
|
...r.die ? { die: r.die } : {},
|
|
43
43
|
...r.scales_at ? { scalesAt: r.scales_at } : {},
|
|
44
44
|
...((_b = r.recovery) == null ? void 0 : _b.length) ? { recovery: r.recovery.map(resolveRecovery) } : {},
|
|
45
|
+
...r.rendering_hint ? { renderingHint: r.rendering_hint } : {},
|
|
46
|
+
...r.surface ? { surface: r.surface } : {},
|
|
45
47
|
owner
|
|
46
48
|
};
|
|
47
49
|
}
|
|
@@ -72,11 +74,14 @@ function resolveResourceIndex(resolved) {
|
|
|
72
74
|
warnOnce(`pool-uses:${entry.slug}`, `optional feature "${entry.slug}" has a prose uses.max (${JSON.stringify(uses.max)}); no tracker`);
|
|
73
75
|
continue;
|
|
74
76
|
}
|
|
77
|
+
const pres = entry.entity;
|
|
75
78
|
out.set(entry.slug, {
|
|
76
79
|
id: entry.slug,
|
|
77
80
|
name: entry.entity.name,
|
|
78
81
|
reset: uses.recharge,
|
|
79
82
|
maxFormula,
|
|
83
|
+
...pres.rendering_hint ? { renderingHint: pres.rendering_hint } : {},
|
|
84
|
+
...pres.surface ? { surface: pres.surface } : {},
|
|
80
85
|
owner: { kind: "pool", poolId: pool.id, poolLabel: pool.label, source: { kind: "class", slug: classSlug, level: pool.anchorLevel } }
|
|
81
86
|
});
|
|
82
87
|
}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
actionCostEnum,
|
|
6
6
|
resetTriggerEnum,
|
|
7
7
|
resourceConsumptionSchema
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-UA3I2YSO.js";
|
|
9
9
|
import {
|
|
10
10
|
featureEffectSchema
|
|
11
11
|
} from "./chunk-X3D6LXUU.js";
|
|
@@ -33,7 +33,18 @@ var prerequisiteSchema = z.discriminatedUnion("kind", [
|
|
|
33
33
|
]);
|
|
34
34
|
var usesSchema = z.object({
|
|
35
35
|
max: z.union([z.number(), z.string()]),
|
|
36
|
-
recharge: resetTriggerEnum
|
|
36
|
+
recharge: resetTriggerEnum,
|
|
37
|
+
/** Partial recovery, for a pool a rest does NOT fully refill (a sanity track that regains 1 per long
|
|
38
|
+
* rest). Same shape a feature's `resources[].recovery` uses, so `ResolvedResource.recovery` — which
|
|
39
|
+
* has carried the field since R4-G4 — is populated identically from either side. Optional: all 35
|
|
40
|
+
* shipped `uses` carriers omit it and parse unchanged. */
|
|
41
|
+
recovery: z.array(z.object({
|
|
42
|
+
id: z.string().min(1),
|
|
43
|
+
name: z.string().min(1),
|
|
44
|
+
amount: z.union([z.number(), z.string()]),
|
|
45
|
+
reset: resetTriggerEnum,
|
|
46
|
+
restores: z.enum(["uses", "spell-slots"]).optional()
|
|
47
|
+
})).optional()
|
|
37
48
|
});
|
|
38
49
|
var optionalFeatureEntitySchema = z.object({
|
|
39
50
|
slug: z.string().min(1),
|
|
@@ -55,6 +66,12 @@ var optionalFeatureEntitySchema = z.object({
|
|
|
55
66
|
activatable: z.boolean().optional(),
|
|
56
67
|
rendering_hint: z.string().optional(),
|
|
57
68
|
// the ONE root with load-bearing VALUES (88 records, G4's)
|
|
69
|
+
/** WHERE this resource is drawn. `band` puts it in the header strip beside HP; anything else, and the
|
|
70
|
+
* default, leaves it to the Resources tab. The tab ALWAYS lists every resource — it is the complete
|
|
71
|
+
* inventory of what the character can spend, and a row missing from it would read as a bug — so this
|
|
72
|
+
* key only ever ADDS a second, curated home. Opt-in on purpose: the band's whole value is being short,
|
|
73
|
+
* which an opt-out flag would erode one new grant at a time. */
|
|
74
|
+
surface: z.enum(["band", "tab"]).optional(),
|
|
58
75
|
additional_spells: z.array(additionalSpellsEntrySchema).optional(),
|
|
59
76
|
// 54
|
|
60
77
|
is_class_feature_variant: z.boolean().optional(),
|
|
@@ -8,10 +8,10 @@ import {
|
|
|
8
8
|
} from "./chunk-CJYCVNW2.js";
|
|
9
9
|
import {
|
|
10
10
|
featureSchema
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-JOVMV2X5.js";
|
|
12
12
|
import {
|
|
13
13
|
resourceSchema
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-UA3I2YSO.js";
|
|
15
15
|
import {
|
|
16
16
|
startingEquipmentEntrySchema,
|
|
17
17
|
startingGoldSchema
|
|
@@ -284,6 +284,15 @@ var characterSchema = z.object({
|
|
|
284
284
|
gp: z.number().int().nonnegative(),
|
|
285
285
|
pp: z.number().int().nonnegative()
|
|
286
286
|
}).optional(),
|
|
287
|
+
/** Features granted directly to this character by the DM — a campaign boon, a sanity track, hero
|
|
288
|
+
* points. Each entry names an `optional-feature` entity; the engine resolves it exactly the way a
|
|
289
|
+
* pool pick resolves, but with no pool and no class choice behind it.
|
|
290
|
+
*
|
|
291
|
+
* WHERE a grant is drawn is the declaring NOTE's business, not the character's: the note's
|
|
292
|
+
* `surface: band` opts it into the header strip. A character-side opt-OUT flag lived here briefly
|
|
293
|
+
* and was removed — two mechanisms for one job, and the opt-out eroded the band's shortness one
|
|
294
|
+
* grant at a time. */
|
|
295
|
+
additional_features: z.array(z.string().min(1)).default([]),
|
|
287
296
|
notes: z.string().optional(),
|
|
288
297
|
defenses: z.object({
|
|
289
298
|
resistances: z.array(z.string()).default([]),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveFeatureResources,
|
|
3
3
|
resolveResourceIndex
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-4ISR76DH.js";
|
|
5
5
|
import {
|
|
6
6
|
attributeUnclassedSpell,
|
|
7
7
|
effectiveSpellcastingAbility,
|
|
@@ -51,6 +51,9 @@ import {
|
|
|
51
51
|
FEATURE_TYPE_FOR_CATEGORY,
|
|
52
52
|
featProgressionCategory
|
|
53
53
|
} from "./chunk-YBLDE5CG.js";
|
|
54
|
+
import {
|
|
55
|
+
isValidMaxFormula
|
|
56
|
+
} from "./chunk-EVMUJYUD.js";
|
|
54
57
|
import {
|
|
55
58
|
mirrorSpellShapes
|
|
56
59
|
} from "./chunk-OZP6JFGT.js";
|
|
@@ -1089,6 +1092,7 @@ var PCResolver = class {
|
|
|
1089
1092
|
const features = collectResolvedFeatures(race, classes, background, feats, featVia);
|
|
1090
1093
|
const extraFeatures = collectChosenGrantedFeatures(character, classes, this.entities, race, background);
|
|
1091
1094
|
features.push(...extraFeatures);
|
|
1095
|
+
features.push(...collectAdditionalFeatures(character, this.entities, warnings));
|
|
1092
1096
|
const casters = [];
|
|
1093
1097
|
classes.forEach((c, i) => {
|
|
1094
1098
|
const profile = c.entity ? resolveSpellcasting(c) : null;
|
|
@@ -1349,6 +1353,50 @@ function collectChosenGrantedFeatures(character, classes, registry, race = null,
|
|
|
1349
1353
|
}
|
|
1350
1354
|
return out;
|
|
1351
1355
|
}
|
|
1356
|
+
function collectAdditionalFeatures(character, entities, warnings) {
|
|
1357
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
1358
|
+
const out = [];
|
|
1359
|
+
for (const entry of (_a = character.additional_features) != null ? _a : []) {
|
|
1360
|
+
const slug = (_b = stripSlug(entry)) != null ? _b : entry;
|
|
1361
|
+
const reg = entities.getByTypeAndSlug("optional-feature", slug);
|
|
1362
|
+
if (!reg) {
|
|
1363
|
+
warnings.push(`Granted feature [[${slug}]] not found in compendium as optional-feature.`);
|
|
1364
|
+
continue;
|
|
1365
|
+
}
|
|
1366
|
+
const d = reg.data;
|
|
1367
|
+
const feature = {
|
|
1368
|
+
id: (_c = d.slug) != null ? _c : slug,
|
|
1369
|
+
name: (_d = d.name) != null ? _d : slug,
|
|
1370
|
+
description: d.description,
|
|
1371
|
+
...((_e = d.effects) == null ? void 0 : _e.length) ? { effects: d.effects } : {},
|
|
1372
|
+
...d.action_cost ? { action: d.action_cost } : {},
|
|
1373
|
+
...d.passive !== void 0 ? { passive: d.passive } : {},
|
|
1374
|
+
...d.activatable !== void 0 ? { activatable: d.activatable } : {},
|
|
1375
|
+
...d.duration ? { duration: d.duration } : {},
|
|
1376
|
+
...d.consumes ? { consumes: d.consumes } : {}
|
|
1377
|
+
};
|
|
1378
|
+
const uses = d.uses;
|
|
1379
|
+
if (uses) {
|
|
1380
|
+
const maxFormula = String(uses.max);
|
|
1381
|
+
if (isValidMaxFormula(maxFormula)) {
|
|
1382
|
+
feature.resources = [{
|
|
1383
|
+
id: (_f = d.slug) != null ? _f : slug,
|
|
1384
|
+
name: (_g = d.name) != null ? _g : slug,
|
|
1385
|
+
max_formula: maxFormula,
|
|
1386
|
+
reset: uses.recharge,
|
|
1387
|
+
...((_h = uses.recovery) == null ? void 0 : _h.length) ? { recovery: uses.recovery } : {},
|
|
1388
|
+
// Presentation rides the resource, so the band and the tab read one object.
|
|
1389
|
+
...d.rendering_hint ? { rendering_hint: d.rendering_hint } : {},
|
|
1390
|
+
...d.surface ? { surface: d.surface } : {}
|
|
1391
|
+
}];
|
|
1392
|
+
} else {
|
|
1393
|
+
warnings.push(`Granted feature "${slug}" has a prose uses.max (${JSON.stringify(uses.max)}); no tracker.`);
|
|
1394
|
+
}
|
|
1395
|
+
}
|
|
1396
|
+
out.push({ feature, source: { kind: "campaign", slug } });
|
|
1397
|
+
}
|
|
1398
|
+
return out;
|
|
1399
|
+
}
|
|
1352
1400
|
function walkChoiceGrants(choices, atLevel, emit, registry) {
|
|
1353
1401
|
var _a, _b, _c, _d, _e;
|
|
1354
1402
|
for (const ch of choices != null ? choices : []) {
|
|
@@ -1570,6 +1618,7 @@ export {
|
|
|
1570
1618
|
collectItemGrantedSpells,
|
|
1571
1619
|
dedupeResolvedSpells,
|
|
1572
1620
|
collectChosenGrantedFeatures,
|
|
1621
|
+
collectAdditionalFeatures,
|
|
1573
1622
|
collectResolvedFeatures,
|
|
1574
1623
|
collectProficiencyGrants,
|
|
1575
1624
|
__matchesFilterForTest,
|
|
@@ -8,10 +8,10 @@ import {
|
|
|
8
8
|
} from "./chunk-CJYCVNW2.js";
|
|
9
9
|
import {
|
|
10
10
|
featureSchema
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-JOVMV2X5.js";
|
|
12
12
|
import {
|
|
13
13
|
resourceSchema
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-UA3I2YSO.js";
|
|
15
15
|
import {
|
|
16
16
|
additionalSpellsEntrySchema,
|
|
17
17
|
imageField,
|
|
@@ -19,6 +19,10 @@ var resourceSchema = z.object({
|
|
|
19
19
|
resource: z.string().min(1),
|
|
20
20
|
amount: z.number().int().positive()
|
|
21
21
|
}).optional(),
|
|
22
|
+
/** Presentation, carried and never interpreted by the engine: which control draws this resource, and
|
|
23
|
+
* whether it also appears in the header band. The renderer owns the hint → component table. */
|
|
24
|
+
rendering_hint: z.string().optional(),
|
|
25
|
+
surface: z.enum(["band", "tab"]).optional(),
|
|
22
26
|
recovery: z.array(z.object({
|
|
23
27
|
id: z.string().min(1),
|
|
24
28
|
name: z.string().min(1),
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
classCodec
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-BS355LND.js";
|
|
4
|
+
import "../chunk-H4VEMVOO.js";
|
|
5
5
|
import "../chunk-4U55VNC7.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-DTCR4DBF.js";
|
|
7
7
|
import "../chunk-23LZLBJK.js";
|
|
8
8
|
import "../chunk-CJYCVNW2.js";
|
|
9
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-JOVMV2X5.js";
|
|
10
10
|
import "../chunk-WYGD2UGN.js";
|
|
11
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-UA3I2YSO.js";
|
|
12
12
|
import "../chunk-IN4M4X7P.js";
|
|
13
13
|
import "../chunk-IWRVOCT5.js";
|
|
14
14
|
import "../chunk-X3D6LXUU.js";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parseClass
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-H4VEMVOO.js";
|
|
4
4
|
import "../chunk-4U55VNC7.js";
|
|
5
|
-
import "../chunk-
|
|
5
|
+
import "../chunk-DTCR4DBF.js";
|
|
6
6
|
import "../chunk-23LZLBJK.js";
|
|
7
7
|
import "../chunk-CJYCVNW2.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-JOVMV2X5.js";
|
|
9
9
|
import "../chunk-WYGD2UGN.js";
|
|
10
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-UA3I2YSO.js";
|
|
11
11
|
import "../chunk-IN4M4X7P.js";
|
|
12
12
|
import "../chunk-IWRVOCT5.js";
|
|
13
13
|
import "../chunk-X3D6LXUU.js";
|
|
@@ -146,6 +146,11 @@ export declare const classEntitySchema: z.ZodObject<{
|
|
|
146
146
|
resource: z.ZodString;
|
|
147
147
|
amount: z.ZodNumber;
|
|
148
148
|
}, z.core.$strip>>;
|
|
149
|
+
rendering_hint: z.ZodOptional<z.ZodString>;
|
|
150
|
+
surface: z.ZodOptional<z.ZodEnum<{
|
|
151
|
+
band: "band";
|
|
152
|
+
tab: "tab";
|
|
153
|
+
}>>;
|
|
149
154
|
recovery: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
150
155
|
id: z.ZodString;
|
|
151
156
|
name: z.ZodString;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
classEntitySchema
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-DTCR4DBF.js";
|
|
4
4
|
import "../chunk-23LZLBJK.js";
|
|
5
5
|
import "../chunk-CJYCVNW2.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-JOVMV2X5.js";
|
|
7
7
|
import "../chunk-WYGD2UGN.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-UA3I2YSO.js";
|
|
9
9
|
import "../chunk-IN4M4X7P.js";
|
|
10
10
|
import "../chunk-IWRVOCT5.js";
|
|
11
11
|
import "../chunk-X3D6LXUU.js";
|
package/dist/feat/feat.codec.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
featCodec
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-JKLRBILX.js";
|
|
4
|
+
import "../chunk-RWZTGMSN.js";
|
|
5
|
+
import "../chunk-BJFL4KYG.js";
|
|
6
|
+
import "../chunk-UA3I2YSO.js";
|
|
7
7
|
import "../chunk-IWRVOCT5.js";
|
|
8
8
|
import "../chunk-X3D6LXUU.js";
|
|
9
9
|
import "../chunk-UA5KS2PL.js";
|
package/dist/feat/feat.parser.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parseFeat
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-RWZTGMSN.js";
|
|
4
|
+
import "../chunk-BJFL4KYG.js";
|
|
5
|
+
import "../chunk-UA3I2YSO.js";
|
|
6
6
|
import "../chunk-IWRVOCT5.js";
|
|
7
7
|
import "../chunk-X3D6LXUU.js";
|
|
8
8
|
import "../chunk-UA5KS2PL.js";
|
|
@@ -394,6 +394,11 @@ export declare const featEntitySchema: z.ZodObject<{
|
|
|
394
394
|
resource: z.ZodString;
|
|
395
395
|
amount: z.ZodNumber;
|
|
396
396
|
}, z.core.$strip>>;
|
|
397
|
+
rendering_hint: z.ZodOptional<z.ZodString>;
|
|
398
|
+
surface: z.ZodOptional<z.ZodEnum<{
|
|
399
|
+
band: "band";
|
|
400
|
+
tab: "tab";
|
|
401
|
+
}>>;
|
|
397
402
|
recovery: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
398
403
|
id: z.ZodString;
|
|
399
404
|
name: z.ZodString;
|
package/dist/feat/feat.schema.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -5,9 +5,9 @@ import "./chunk-HZA7OE7N.js";
|
|
|
5
5
|
import "./chunk-2DFENQIJ.js";
|
|
6
6
|
import {
|
|
7
7
|
subclassCodec
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-B4TQTJVC.js";
|
|
9
|
+
import "./chunk-ABQ6ZWAF.js";
|
|
10
|
+
import "./chunk-MT4RWROQ.js";
|
|
11
11
|
import {
|
|
12
12
|
spellInputSchema
|
|
13
13
|
} from "./chunk-656QCX4U.js";
|
|
@@ -19,9 +19,9 @@ import {
|
|
|
19
19
|
} from "./chunk-WSVMLNTO.js";
|
|
20
20
|
import {
|
|
21
21
|
raceCodec
|
|
22
|
-
} from "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
22
|
+
} from "./chunk-CQAL67R3.js";
|
|
23
|
+
import "./chunk-7MRW4RTH.js";
|
|
24
|
+
import "./chunk-2BI5NAXK.js";
|
|
25
25
|
import "./chunk-OZP6JFGT.js";
|
|
26
26
|
import "./chunk-VQAXTIBW.js";
|
|
27
27
|
import {
|
|
@@ -34,14 +34,14 @@ import {
|
|
|
34
34
|
} from "./chunk-6PXTNCBP.js";
|
|
35
35
|
import {
|
|
36
36
|
parseMonster
|
|
37
|
-
} from "./chunk-
|
|
38
|
-
import "./chunk-
|
|
37
|
+
} from "./chunk-3BMVVNCS.js";
|
|
38
|
+
import "./chunk-A6YL53NC.js";
|
|
39
39
|
import "./chunk-IKSMX4TN.js";
|
|
40
40
|
import {
|
|
41
41
|
optionalFeatureCodec
|
|
42
|
-
} from "./chunk-
|
|
43
|
-
import "./chunk-
|
|
44
|
-
import "./chunk-
|
|
42
|
+
} from "./chunk-MYW7AOUE.js";
|
|
43
|
+
import "./chunk-NNAQ4KQF.js";
|
|
44
|
+
import "./chunk-7WNQJAZW.js";
|
|
45
45
|
import {
|
|
46
46
|
itemCodec
|
|
47
47
|
} from "./chunk-4XTNPNQB.js";
|
|
@@ -64,23 +64,23 @@ import {
|
|
|
64
64
|
} from "./chunk-LSLSG67V.js";
|
|
65
65
|
import {
|
|
66
66
|
featCodec
|
|
67
|
-
} from "./chunk-
|
|
68
|
-
import "./chunk-
|
|
69
|
-
import "./chunk-
|
|
67
|
+
} from "./chunk-JKLRBILX.js";
|
|
68
|
+
import "./chunk-RWZTGMSN.js";
|
|
69
|
+
import "./chunk-BJFL4KYG.js";
|
|
70
70
|
import "./chunk-DEEHHLAP.js";
|
|
71
71
|
import "./chunk-PDJSUH24.js";
|
|
72
72
|
import "./chunk-WELIKLZF.js";
|
|
73
73
|
import {
|
|
74
74
|
classCodec
|
|
75
|
-
} from "./chunk-
|
|
76
|
-
import "./chunk-
|
|
75
|
+
} from "./chunk-BS355LND.js";
|
|
76
|
+
import "./chunk-H4VEMVOO.js";
|
|
77
77
|
import "./chunk-4U55VNC7.js";
|
|
78
|
-
import "./chunk-
|
|
78
|
+
import "./chunk-DTCR4DBF.js";
|
|
79
79
|
import "./chunk-23LZLBJK.js";
|
|
80
80
|
import "./chunk-CJYCVNW2.js";
|
|
81
|
-
import "./chunk-
|
|
81
|
+
import "./chunk-JOVMV2X5.js";
|
|
82
82
|
import "./chunk-WYGD2UGN.js";
|
|
83
|
-
import "./chunk-
|
|
83
|
+
import "./chunk-UA3I2YSO.js";
|
|
84
84
|
import {
|
|
85
85
|
parseCondition
|
|
86
86
|
} from "./chunk-6X2NV665.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
migrateLegacy,
|
|
3
3
|
parseMonster
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-3BMVVNCS.js";
|
|
5
|
+
import "../chunk-A6YL53NC.js";
|
|
6
|
+
import "../chunk-JOVMV2X5.js";
|
|
7
7
|
import "../chunk-WYGD2UGN.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-UA3I2YSO.js";
|
|
9
9
|
import "../chunk-IWRVOCT5.js";
|
|
10
10
|
import "../chunk-X3D6LXUU.js";
|
|
11
11
|
import "../chunk-UA5KS2PL.js";
|
|
@@ -11,10 +11,10 @@ import {
|
|
|
11
11
|
monsterSpeedSchema,
|
|
12
12
|
monsterSpellcastingSchema,
|
|
13
13
|
monsterTypeSchema
|
|
14
|
-
} from "../chunk-
|
|
15
|
-
import "../chunk-
|
|
14
|
+
} from "../chunk-A6YL53NC.js";
|
|
15
|
+
import "../chunk-JOVMV2X5.js";
|
|
16
16
|
import "../chunk-WYGD2UGN.js";
|
|
17
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-UA3I2YSO.js";
|
|
18
18
|
import "../chunk-IWRVOCT5.js";
|
|
19
19
|
import "../chunk-X3D6LXUU.js";
|
|
20
20
|
import "../chunk-UA5KS2PL.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
optionalFeatureCodec
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-MYW7AOUE.js";
|
|
4
|
+
import "../chunk-NNAQ4KQF.js";
|
|
5
|
+
import "../chunk-7WNQJAZW.js";
|
|
6
6
|
import "../chunk-WYGD2UGN.js";
|
|
7
|
-
import "../chunk-
|
|
7
|
+
import "../chunk-UA3I2YSO.js";
|
|
8
8
|
import "../chunk-X3D6LXUU.js";
|
|
9
9
|
import "../chunk-UA5KS2PL.js";
|
|
10
10
|
export {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parseOptionalFeature
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-NNAQ4KQF.js";
|
|
4
|
+
import "../chunk-7WNQJAZW.js";
|
|
5
5
|
import "../chunk-WYGD2UGN.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-UA3I2YSO.js";
|
|
7
7
|
import "../chunk-X3D6LXUU.js";
|
|
8
8
|
import "../chunk-UA5KS2PL.js";
|
|
9
9
|
export {
|
|
@@ -342,6 +342,25 @@ export declare const optionalFeatureEntitySchema: z.ZodObject<{
|
|
|
342
342
|
round: "round";
|
|
343
343
|
custom: "custom";
|
|
344
344
|
}>;
|
|
345
|
+
recovery: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
346
|
+
id: z.ZodString;
|
|
347
|
+
name: z.ZodString;
|
|
348
|
+
amount: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
|
|
349
|
+
reset: z.ZodEnum<{
|
|
350
|
+
"short-rest": "short-rest";
|
|
351
|
+
"long-rest": "long-rest";
|
|
352
|
+
either: "either";
|
|
353
|
+
dawn: "dawn";
|
|
354
|
+
dusk: "dusk";
|
|
355
|
+
turn: "turn";
|
|
356
|
+
round: "round";
|
|
357
|
+
custom: "custom";
|
|
358
|
+
}>;
|
|
359
|
+
restores: z.ZodOptional<z.ZodEnum<{
|
|
360
|
+
uses: "uses";
|
|
361
|
+
"spell-slots": "spell-slots";
|
|
362
|
+
}>>;
|
|
363
|
+
}, z.core.$strip>>>;
|
|
345
364
|
}, z.core.$strip>>>;
|
|
346
365
|
consumes: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
347
366
|
source: z.ZodOptional<z.ZodEnum<{
|
|
@@ -386,6 +405,10 @@ export declare const optionalFeatureEntitySchema: z.ZodObject<{
|
|
|
386
405
|
passive: z.ZodOptional<z.ZodBoolean>;
|
|
387
406
|
activatable: z.ZodOptional<z.ZodBoolean>;
|
|
388
407
|
rendering_hint: z.ZodOptional<z.ZodString>;
|
|
408
|
+
surface: z.ZodOptional<z.ZodEnum<{
|
|
409
|
+
band: "band";
|
|
410
|
+
tab: "tab";
|
|
411
|
+
}>>;
|
|
389
412
|
additional_spells: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
390
413
|
name: z.ZodOptional<z.ZodString>;
|
|
391
414
|
ability: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
optionalFeatureEntitySchema
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-7WNQJAZW.js";
|
|
4
4
|
import "../chunk-WYGD2UGN.js";
|
|
5
|
-
import "../chunk-
|
|
5
|
+
import "../chunk-UA3I2YSO.js";
|
|
6
6
|
import "../chunk-X3D6LXUU.js";
|
|
7
7
|
import "../chunk-UA5KS2PL.js";
|
|
8
8
|
export {
|
|
@@ -4,8 +4,8 @@ import {
|
|
|
4
4
|
collectChosenAbilityPoints,
|
|
5
5
|
collectChosenProficiencies,
|
|
6
6
|
computeEffectiveProficiencies
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-EYZCCWG2.js";
|
|
8
|
+
import "../chunk-4ISR76DH.js";
|
|
9
9
|
import "../chunk-DPUJDOKV.js";
|
|
10
10
|
import "../chunk-O4SRD3J5.js";
|
|
11
11
|
import "../chunk-PP2UHLBA.js";
|
package/dist/pc/pc.parser.js
CHANGED
|
@@ -2,8 +2,8 @@ import {
|
|
|
2
2
|
collectChosenProficiencies,
|
|
3
3
|
collectProficiencyGrants,
|
|
4
4
|
computeEffectiveProficiencies
|
|
5
|
-
} from "../chunk-
|
|
6
|
-
import "../chunk-
|
|
5
|
+
} from "../chunk-EYZCCWG2.js";
|
|
6
|
+
import "../chunk-4ISR76DH.js";
|
|
7
7
|
import "../chunk-DPUJDOKV.js";
|
|
8
8
|
import "../chunk-O4SRD3J5.js";
|
|
9
9
|
import "../chunk-PP2UHLBA.js";
|
package/dist/pc/pc.recalc.js
CHANGED
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
collectChosenAbilityPoints,
|
|
6
6
|
collectChosenProficiencies
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-EYZCCWG2.js";
|
|
8
8
|
import {
|
|
9
9
|
resourceLevelFor
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-4ISR76DH.js";
|
|
11
11
|
import {
|
|
12
12
|
computeSpellLimits,
|
|
13
13
|
deriveSpellSlots,
|
package/dist/pc/pc.resolver.d.ts
CHANGED
|
@@ -127,4 +127,18 @@ export declare function collectChosenGrantedFeatures(character: Character, class
|
|
|
127
127
|
data: Record<string, unknown>;
|
|
128
128
|
} | undefined;
|
|
129
129
|
}, race?: RaceEntity | null, background?: BackgroundEntity | null): ResolvedFeature[];
|
|
130
|
+
/**
|
|
131
|
+
* `character.additional_features` → ResolvedFeatures (the DM-grant path).
|
|
132
|
+
*
|
|
133
|
+
* Deliberately NOT routed through `walkChoiceGrants`: that converter emits
|
|
134
|
+
* `{id, name, description, effects, action}` and DROPS `uses`, which is correct there because a pool
|
|
135
|
+
* pick's tracker is built separately by `resolveResourceIndex`'s pools loop. A campaign grant has no
|
|
136
|
+
* pool, so nothing would ever build its tracker — the feature would render as a card with no counter.
|
|
137
|
+
* This walk therefore converts `uses` into the feature's own `resources[]`, which
|
|
138
|
+
* `resolveFeatureResources` already indexes, and the grant gets a tracker with no pool involved.
|
|
139
|
+
*
|
|
140
|
+
* A prose `uses.max` (the 4 shipped carriers that have one) yields no resource rather than a broken
|
|
141
|
+
* tracker, matching the pools loop's rule; the feature still renders.
|
|
142
|
+
*/
|
|
143
|
+
export declare function collectAdditionalFeatures(character: Character, entities: EntityRegistry, warnings: string[]): ResolvedFeature[];
|
|
130
144
|
export declare function collectResolvedFeatures(race: RaceEntity | null, classes: ResolvedClass[], background: BackgroundEntity | null, feats: FeatEntity[], featVia?: ReadonlyMap<string, FeatVia>): ResolvedFeature[];
|
package/dist/pc/pc.resolver.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PCResolver,
|
|
3
|
+
collectAdditionalFeatures,
|
|
3
4
|
collectChosenGrantedFeatures,
|
|
4
5
|
collectChosenWeaponMasteries,
|
|
5
6
|
collectFeatGrantedSpells,
|
|
@@ -9,8 +10,8 @@ import {
|
|
|
9
10
|
dedupeResolvedSpells,
|
|
10
11
|
resolveOriginFeat,
|
|
11
12
|
stripSlug
|
|
12
|
-
} from "../chunk-
|
|
13
|
-
import "../chunk-
|
|
13
|
+
} from "../chunk-EYZCCWG2.js";
|
|
14
|
+
import "../chunk-4ISR76DH.js";
|
|
14
15
|
import "../chunk-DPUJDOKV.js";
|
|
15
16
|
import "../chunk-O4SRD3J5.js";
|
|
16
17
|
import "../chunk-PP2UHLBA.js";
|
|
@@ -37,6 +38,7 @@ import "../chunk-4U55VNC7.js";
|
|
|
37
38
|
import "../chunk-UA5KS2PL.js";
|
|
38
39
|
export {
|
|
39
40
|
PCResolver,
|
|
41
|
+
collectAdditionalFeatures,
|
|
40
42
|
collectChosenGrantedFeatures,
|
|
41
43
|
collectChosenWeaponMasteries,
|
|
42
44
|
collectFeatGrantedSpells,
|
|
@@ -50,6 +50,12 @@ export interface ResolvedResource {
|
|
|
50
50
|
scalesAt?: ResourceScaleStep[];
|
|
51
51
|
recovery?: ResolvedRecovery[];
|
|
52
52
|
owner: ResourceOwner;
|
|
53
|
+
/** Which control draws this resource — the declaring note's `rendering_hint`, carried verbatim and
|
|
54
|
+
* never interpreted here. The renderer owns the hint → component table; the engine only delivers the
|
|
55
|
+
* string, so adding a component is a change in ONE table and adding a resource is no code at all. */
|
|
56
|
+
renderingHint?: string;
|
|
57
|
+
/** `band` = also drawn in the header strip. Absent = the Resources tab alone. */
|
|
58
|
+
surface?: "band" | "tab";
|
|
53
59
|
}
|
|
54
60
|
export type ResourceIndex = ReadonlyMap<string, ResolvedResource>;
|
|
55
61
|
/** KIND first (the schema key; absent = `uses`, UR2), FLAVOUR second (`action` / `reset`): a
|
package/dist/pc/pc.resources.js
CHANGED
package/dist/pc/pc.rest.js
CHANGED
package/dist/pc/pc.schema.d.ts
CHANGED
|
@@ -389,6 +389,7 @@ export declare const characterSchema: z.ZodObject<{
|
|
|
389
389
|
gp: z.ZodNumber;
|
|
390
390
|
pp: z.ZodNumber;
|
|
391
391
|
}, z.core.$strip>>;
|
|
392
|
+
additional_features: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
392
393
|
notes: z.ZodOptional<z.ZodString>;
|
|
393
394
|
defenses: z.ZodOptional<z.ZodObject<{
|
|
394
395
|
resistances: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString>>>;
|
package/dist/pc/pc.schema.js
CHANGED
package/dist/pc/pc.types.d.ts
CHANGED
|
@@ -279,6 +279,9 @@ export interface Character {
|
|
|
279
279
|
gp: number;
|
|
280
280
|
pp: number;
|
|
281
281
|
};
|
|
282
|
+
/** DM grants: optional-feature slugs resolved onto the character with no class, level or pool behind
|
|
283
|
+
* them. Placement is the declaring note's `surface`, never a flag here. */
|
|
284
|
+
additional_features?: string[];
|
|
282
285
|
notes?: string;
|
|
283
286
|
defenses?: {
|
|
284
287
|
resistances?: string[];
|
|
@@ -317,6 +320,11 @@ export type FeatureSource = {
|
|
|
317
320
|
kind: "feat";
|
|
318
321
|
slug: string;
|
|
319
322
|
via?: FeatVia;
|
|
323
|
+
}
|
|
324
|
+
/** A DM grant listed in `character.additional_features`. No class, no level, no pool behind it. */
|
|
325
|
+
| {
|
|
326
|
+
kind: "campaign";
|
|
327
|
+
slug: string;
|
|
320
328
|
};
|
|
321
329
|
export interface ResolvedFeature {
|
|
322
330
|
feature: Feature;
|
package/dist/race/race.codec.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
raceCodec
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-CQAL67R3.js";
|
|
4
|
+
import "../chunk-7MRW4RTH.js";
|
|
5
|
+
import "../chunk-2BI5NAXK.js";
|
|
6
6
|
import "../chunk-4U55VNC7.js";
|
|
7
|
-
import "../chunk-
|
|
7
|
+
import "../chunk-JOVMV2X5.js";
|
|
8
8
|
import "../chunk-WYGD2UGN.js";
|
|
9
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-UA3I2YSO.js";
|
|
10
10
|
import "../chunk-IWRVOCT5.js";
|
|
11
11
|
import "../chunk-X3D6LXUU.js";
|
|
12
12
|
import "../chunk-UA5KS2PL.js";
|
package/dist/race/race.parser.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parseRace
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-7MRW4RTH.js";
|
|
4
|
+
import "../chunk-2BI5NAXK.js";
|
|
5
5
|
import "../chunk-4U55VNC7.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-JOVMV2X5.js";
|
|
7
7
|
import "../chunk-WYGD2UGN.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-UA3I2YSO.js";
|
|
9
9
|
import "../chunk-IWRVOCT5.js";
|
|
10
10
|
import "../chunk-X3D6LXUU.js";
|
|
11
11
|
import "../chunk-UA5KS2PL.js";
|
package/dist/race/race.schema.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
fixedAsiSchema,
|
|
3
3
|
raceEntitySchema
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-2BI5NAXK.js";
|
|
5
|
+
import "../chunk-JOVMV2X5.js";
|
|
6
6
|
import "../chunk-WYGD2UGN.js";
|
|
7
|
-
import "../chunk-
|
|
7
|
+
import "../chunk-UA3I2YSO.js";
|
|
8
8
|
import "../chunk-IWRVOCT5.js";
|
|
9
9
|
import "../chunk-X3D6LXUU.js";
|
|
10
10
|
import "../chunk-UA5KS2PL.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
featureObjectSchema,
|
|
3
3
|
featureSchema
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-JOVMV2X5.js";
|
|
5
5
|
import "../chunk-WYGD2UGN.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-UA3I2YSO.js";
|
|
7
7
|
import "../chunk-IWRVOCT5.js";
|
|
8
8
|
import "../chunk-X3D6LXUU.js";
|
|
9
9
|
export {
|
|
@@ -42,6 +42,11 @@ export declare const resourceSchema: z.ZodObject<{
|
|
|
42
42
|
resource: z.ZodString;
|
|
43
43
|
amount: z.ZodNumber;
|
|
44
44
|
}, z.core.$strip>>;
|
|
45
|
+
rendering_hint: z.ZodOptional<z.ZodString>;
|
|
46
|
+
surface: z.ZodOptional<z.ZodEnum<{
|
|
47
|
+
band: "band";
|
|
48
|
+
tab: "tab";
|
|
49
|
+
}>>;
|
|
45
50
|
recovery: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
46
51
|
id: z.ZodString;
|
|
47
52
|
name: z.ZodString;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
subclassCodec
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-B4TQTJVC.js";
|
|
4
|
+
import "../chunk-ABQ6ZWAF.js";
|
|
5
|
+
import "../chunk-MT4RWROQ.js";
|
|
6
6
|
import "../chunk-4U55VNC7.js";
|
|
7
7
|
import "../chunk-23LZLBJK.js";
|
|
8
8
|
import "../chunk-CJYCVNW2.js";
|
|
9
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-JOVMV2X5.js";
|
|
10
10
|
import "../chunk-WYGD2UGN.js";
|
|
11
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-UA3I2YSO.js";
|
|
12
12
|
import "../chunk-IWRVOCT5.js";
|
|
13
13
|
import "../chunk-X3D6LXUU.js";
|
|
14
14
|
import "../chunk-UA5KS2PL.js";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parseSubclass
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-ABQ6ZWAF.js";
|
|
4
|
+
import "../chunk-MT4RWROQ.js";
|
|
5
5
|
import "../chunk-4U55VNC7.js";
|
|
6
6
|
import "../chunk-23LZLBJK.js";
|
|
7
7
|
import "../chunk-CJYCVNW2.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-JOVMV2X5.js";
|
|
9
9
|
import "../chunk-WYGD2UGN.js";
|
|
10
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-UA3I2YSO.js";
|
|
11
11
|
import "../chunk-IWRVOCT5.js";
|
|
12
12
|
import "../chunk-X3D6LXUU.js";
|
|
13
13
|
import "../chunk-UA5KS2PL.js";
|
|
@@ -61,6 +61,11 @@ export declare const subclassEntitySchema: z.ZodObject<{
|
|
|
61
61
|
resource: z.ZodString;
|
|
62
62
|
amount: z.ZodNumber;
|
|
63
63
|
}, z.core.$strip>>;
|
|
64
|
+
rendering_hint: z.ZodOptional<z.ZodString>;
|
|
65
|
+
surface: z.ZodOptional<z.ZodEnum<{
|
|
66
|
+
band: "band";
|
|
67
|
+
tab: "tab";
|
|
68
|
+
}>>;
|
|
64
69
|
recovery: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
65
70
|
id: z.ZodString;
|
|
66
71
|
name: z.ZodString;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
subclassEntitySchema
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-MT4RWROQ.js";
|
|
4
4
|
import "../chunk-23LZLBJK.js";
|
|
5
5
|
import "../chunk-CJYCVNW2.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-JOVMV2X5.js";
|
|
7
7
|
import "../chunk-WYGD2UGN.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-UA3I2YSO.js";
|
|
9
9
|
import "../chunk-IWRVOCT5.js";
|
|
10
10
|
import "../chunk-X3D6LXUU.js";
|
|
11
11
|
import "../chunk-UA5KS2PL.js";
|
|
@@ -78,6 +78,8 @@ export interface OptionalFeatureEntity {
|
|
|
78
78
|
* `rendering_hint` is the ONE of these whose VALUES are load-bearing (88 records carry a
|
|
79
79
|
* real marker such as `dice-pool`); reading it is G4's row, declaring it is this one's. */
|
|
80
80
|
rendering_hint?: string;
|
|
81
|
+
/** `band` = also drawn in the header strip. Absent/`tab` = the Resources tab only. */
|
|
82
|
+
surface?: "band" | "tab";
|
|
81
83
|
additional_spells?: AdditionalSpellsEntry[];
|
|
82
84
|
is_class_feature_variant?: boolean;
|
|
83
85
|
has_fluff_images?: boolean;
|
package/dist/types/resource.d.ts
CHANGED
|
@@ -41,6 +41,11 @@ export interface Resource {
|
|
|
41
41
|
scales_at?: ResourceScaleStep[];
|
|
42
42
|
die?: ResourceDie;
|
|
43
43
|
reset: ResetTrigger;
|
|
44
|
+
/** Presentation, carried and never interpreted by the engine: which control draws this resource.
|
|
45
|
+
* The renderer owns the hint → component table. */
|
|
46
|
+
rendering_hint?: string;
|
|
47
|
+
/** `band` = also drawn in the header strip; absent = the Resources tab alone. */
|
|
48
|
+
surface?: "band" | "tab";
|
|
44
49
|
consumes?: ResourceConsumesLink;
|
|
45
50
|
recovery?: ResourceRecovery[];
|
|
46
51
|
}
|