@archivist-gg/dnd5e 0.3.11 → 0.3.17
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/LICENSES/SRD.md +38 -3
- package/dist/armor/armor.codec.js +3 -3
- package/dist/armor/armor.parser.js +2 -2
- package/dist/armor/armor.schema.d.ts +1 -0
- package/dist/armor/armor.schema.js +1 -1
- package/dist/armor/armor.types.d.ts +2 -0
- package/dist/background/background.codec.js +5 -5
- package/dist/background/background.parser.js +4 -4
- package/dist/background/background.schema.js +3 -3
- package/dist/{chunk-XTRDCSJB.js → chunk-2JSQE3DD.js} +15 -1
- package/dist/chunk-2LULMQTF.js +14 -0
- package/dist/{chunk-MAH6DCRI.js → chunk-2UDSN6VW.js} +1 -1
- package/dist/chunk-3LWMFYKS.js +57 -0
- package/dist/{chunk-JCEV7KYN.js → chunk-3MGQFFNE.js} +1 -1
- package/dist/chunk-3VZZDKRA.js +1014 -0
- package/dist/{chunk-2DFENQIJ.js → chunk-5GKJAUMX.js} +2 -0
- package/dist/{chunk-2M34FLAY.js → chunk-5MXFW4O3.js} +9 -3
- package/dist/{chunk-4DOMDEBZ.js → chunk-6EI737IO.js} +1 -1
- package/dist/{chunk-G247QXWW.js → chunk-7ATNGKBS.js} +1 -1
- package/dist/{chunk-XY6X2APM.js → chunk-7Q2VPKCD.js} +17 -0
- package/dist/{chunk-T2SNEJOE.js → chunk-7QN7XSAK.js} +1 -1
- package/dist/{chunk-DNAJRMNN.js → chunk-A54HHCWW.js} +6 -7
- package/dist/{chunk-7YU4NPKR.js → chunk-AZRGFUSR.js} +1 -1
- package/dist/{chunk-PP2UHLBA.js → chunk-B3DP42OM.js} +5 -0
- package/dist/chunk-CM5CWO4K.js +735 -0
- package/dist/{chunk-MQ747UCR.js → chunk-DOXSFYLH.js} +70 -2
- package/dist/chunk-EJP263OP.js +186 -0
- package/dist/{chunk-SMLXZUBH.js → chunk-EYX4JMAU.js} +4 -1
- package/dist/{chunk-V6LJFP4R.js → chunk-FANQVQ3D.js} +2 -2
- package/dist/{chunk-AW3EHF3L.js → chunk-FC4IGH5Y.js} +1 -1
- package/dist/{chunk-23LZLBJK.js → chunk-G6MHJDVT.js} +6 -2
- package/dist/{chunk-JANNRGJC.js → chunk-G6PBI2BU.js} +1 -1
- package/dist/chunk-H5PTKYXL.js +101 -0
- package/dist/{chunk-LWFTHJIE.js → chunk-HHBD4SQ6.js} +1 -1
- package/dist/{chunk-JC5UNIVM.js → chunk-HS6FIOLP.js} +2 -0
- package/dist/chunk-HTYMW5CH.js +228 -0
- package/dist/chunk-IHE6KVC3.js +13 -0
- package/dist/{chunk-QHMWA3SZ.js → chunk-JCMUVZIK.js} +1 -1
- package/dist/{chunk-V373TRJE.js → chunk-JSM6JFZR.js} +198 -125
- package/dist/{chunk-LDDCNPHD.js → chunk-K5NJBTE2.js} +1 -1
- package/dist/chunk-KR6JF3BF.js +14 -0
- package/dist/{chunk-4ISR76DH.js → chunk-KSTV7J2U.js} +9 -3
- package/dist/chunk-LBEXLN6I.js +91 -0
- package/dist/{chunk-BLRW2UU6.js → chunk-LF5AGJA4.js} +2 -2
- package/dist/{chunk-UBBKSYBY.js → chunk-LHZXYFBU.js} +30 -1
- package/dist/{chunk-BIA32MQ5.js → chunk-MBX25B6D.js} +1 -1
- package/dist/{chunk-R2ZV233X.js → chunk-MYY2C5MB.js} +3 -3
- package/dist/{chunk-J77CKYV3.js → chunk-OFCSP6MT.js} +1 -1
- package/dist/{chunk-2INMRR3Q.js → chunk-ONTGZR5T.js} +326 -149
- package/dist/{chunk-MWCCGPG3.js → chunk-OOSRUJBI.js} +3 -2
- package/dist/{chunk-U3BABVJF.js → chunk-PKX6TGRE.js} +2 -2
- package/dist/{chunk-PJMG5XV3.js → chunk-PQZ4LM4Z.js} +1 -1
- package/dist/chunk-PXVNAY7T.js +84 -0
- package/dist/chunk-QH36K2PU.js +158 -0
- package/dist/{chunk-R747YKS7.js → chunk-QZSWN2KT.js} +1 -1
- package/dist/{chunk-CHUALUIX.js → chunk-RYLXAYIQ.js} +1 -1
- package/dist/{chunk-GFZ7PITJ.js → chunk-S3YUXDSC.js} +6 -1
- package/dist/{chunk-PZCE7DJM.js → chunk-T6QIF5XR.js} +31 -1
- package/dist/{chunk-CBEKVAX4.js → chunk-TULQ4FFX.js} +41 -13
- package/dist/{chunk-S56D6B6C.js → chunk-UUBJCNQU.js} +12 -3
- package/dist/{chunk-5N2GW72F.js → chunk-UZXG6QSY.js} +2 -1
- package/dist/{chunk-4XTNPNQB.js → chunk-VPYBK2MG.js} +1 -1
- package/dist/{chunk-3HX5VLWP.js → chunk-VRV3NNTA.js} +2 -2
- package/dist/{chunk-HZA7OE7N.js → chunk-XCFC7LGF.js} +2 -1
- package/dist/{chunk-BL3VELKP.js → chunk-Y5VVP73C.js} +1 -1
- package/dist/{chunk-PI4LLJG4.js → chunk-YD2VAHA6.js} +2 -2
- package/dist/{chunk-UIRMA5KM.js → chunk-YDGMBMYI.js} +1 -1
- package/dist/{chunk-NWDF5HG3.js → chunk-YKL6SHRJ.js} +1 -1
- package/dist/{chunk-6X4KUDMU.js → chunk-ZCTUYGNV.js} +7 -2
- package/dist/chunk-ZUQW5VBZ.js +89 -0
- package/dist/class/class.codec.js +7 -7
- package/dist/class/class.parser.js +6 -6
- package/dist/class/class.schema.d.ts +18 -0
- package/dist/class/class.schema.js +5 -5
- package/dist/class/class.standard-array.d.ts +16 -0
- package/dist/class/class.standard-array.js +20 -0
- package/dist/class/class.types.d.ts +3 -0
- package/dist/dnd/amount-text.d.ts +38 -0
- package/dist/dnd/amount-text.js +13 -0
- package/dist/dnd/resource-words.d.ts +4 -0
- package/dist/dnd/resource-words.js +30 -0
- package/dist/entities/base-item-resolver.js +2 -2
- package/dist/entities/slug.d.ts +18 -8
- package/dist/entities/slug.js +3 -1
- package/dist/feat/feat.codec.js +5 -5
- package/dist/feat/feat.parser.js +4 -4
- package/dist/feat/feat.schema.d.ts +41 -3
- package/dist/feat/feat.schema.js +3 -3
- package/dist/index.js +7513 -4177
- package/dist/item/item.actions-map.d.ts +40 -5
- package/dist/item/item.actions-map.js +5 -84
- package/dist/item/item.attunement.js +3 -9
- package/dist/item/item.bonuses.js +5 -2
- package/dist/item/item.codec.js +3 -3
- package/dist/item/item.conditions.js +4 -1
- package/dist/item/item.conditions.types.d.ts +4 -0
- package/dist/item/item.cost.d.ts +3 -0
- package/dist/item/item.cost.js +29 -0
- package/dist/item/item.icon.d.ts +15 -0
- package/dist/item/item.icon.js +211 -0
- package/dist/item/item.parser.js +2 -2
- package/dist/item/item.schema.d.ts +16 -1
- package/dist/item/item.schema.js +3 -1
- package/dist/item/item.types.d.ts +9 -2
- package/dist/monster/monster.parser.js +5 -5
- package/dist/monster/monster.schema.js +4 -4
- package/dist/optional-feature/optional-feature.codec.js +5 -4
- package/dist/optional-feature/optional-feature.parser.js +4 -3
- package/dist/optional-feature/optional-feature.schema.d.ts +255 -3
- package/dist/optional-feature/optional-feature.schema.js +7 -2
- package/dist/pc/pc.additional-spells.js +3 -3
- package/dist/pc/pc.amount-bindings.d.ts +32 -0
- package/dist/pc/pc.amount-bindings.js +23 -0
- package/dist/pc/pc.asi-flatten.d.ts +62 -1
- package/dist/pc/pc.asi-flatten.js +16 -0
- package/dist/pc/pc.conditions.js +1 -1
- package/dist/pc/pc.containment.d.ts +45 -0
- package/dist/pc/pc.containment.js +24 -0
- package/dist/pc/pc.decision-engine.d.ts +24 -3
- package/dist/pc/pc.decision-engine.js +26 -16
- package/dist/pc/pc.entry-overrides.d.ts +79 -0
- package/dist/pc/pc.entry-overrides.js +40 -0
- package/dist/pc/pc.equipment.d.ts +2 -2
- package/dist/pc/pc.equipment.js +19 -7
- package/dist/pc/pc.feature-effects.d.ts +12 -0
- package/dist/pc/pc.feature-effects.js +2 -2
- package/dist/pc/pc.infusions.d.ts +228 -0
- package/dist/pc/pc.infusions.js +64 -0
- package/dist/pc/pc.member-choices.d.ts +90 -0
- package/dist/pc/pc.member-choices.js +32 -0
- package/dist/pc/pc.parser.js +18 -1
- package/dist/pc/pc.pools.d.ts +8 -1
- package/dist/pc/pc.pools.js +13 -3
- package/dist/pc/pc.proficiencies.js +23 -15
- package/dist/pc/pc.proficiency-query.js +6 -0
- package/dist/pc/pc.recalc.d.ts +39 -36
- package/dist/pc/pc.recalc.js +115 -70
- package/dist/pc/pc.resolver.d.ts +2 -1
- package/dist/pc/pc.resolver.js +22 -14
- package/dist/pc/pc.resource-seed.js +1 -1
- package/dist/pc/pc.resources.d.ts +6 -1
- package/dist/pc/pc.resources.js +3 -1
- package/dist/pc/pc.rest.d.ts +21 -1
- package/dist/pc/pc.rest.js +52 -19
- package/dist/pc/pc.schema.d.ts +43 -2
- package/dist/pc/pc.schema.js +1 -1
- package/dist/pc/pc.slotting.d.ts +36 -3
- package/dist/pc/pc.slotting.js +13 -5
- package/dist/pc/pc.tool-picks.d.ts +51 -0
- package/dist/pc/pc.tool-picks.js +18 -0
- package/dist/pc/pc.types.d.ts +115 -14
- package/dist/pc/pc.weapon-grant.d.ts +15 -0
- package/dist/pc/pool-layout.d.ts +8 -0
- package/dist/pc/pool-layout.js +5 -3
- package/dist/pc/resource-equivalents.d.ts +44 -0
- package/dist/pc/spell-source.js +4 -9
- package/dist/race/race.codec.js +6 -6
- package/dist/race/race.parser.js +5 -5
- package/dist/race/race.schema.js +4 -4
- package/dist/schemas/attack-schema.d.ts +1 -1
- package/dist/schemas/choice-schema.js +2 -2
- package/dist/schemas/feature-effect-schema.d.ts +41 -3
- package/dist/schemas/feature-effect-schema.js +1 -1
- package/dist/schemas/feature-schema.js +3 -3
- package/dist/schemas/selection-pool-schema.d.ts +10 -0
- package/dist/schemas/selection-pool-schema.js +1 -1
- package/dist/spell/spell.codec.js +2 -2
- package/dist/spell/spell.parser.d.ts +6 -1
- package/dist/spell/spell.parser.js +5 -3
- package/dist/spell/spell.types.d.ts +10 -0
- package/dist/srd/retired-items.d.ts +14 -0
- package/dist/srd/retired-items.js +11 -0
- package/dist/subclass/subclass.codec.js +7 -7
- package/dist/subclass/subclass.parser.js +6 -6
- package/dist/subclass/subclass.schema.d.ts +10 -0
- package/dist/subclass/subclass.schema.js +5 -5
- package/dist/types/choice.d.ts +13 -0
- package/dist/types/equipment-grant.d.ts +18 -1
- package/dist/types/equipment-grant.js +12 -0
- package/dist/types/feature-effect.d.ts +12 -1
- package/dist/types/optional-feature.types.d.ts +84 -1
- package/dist/types/selection-pool.d.ts +18 -3
- package/dist/weapon/weapon.classify.d.ts +10 -8
- package/dist/weapon/weapon.classify.js +2 -2
- package/dist/weapon/weapon.codec.js +3 -3
- package/dist/weapon/weapon.parser.js +2 -2
- package/dist/weapon/weapon.schema.d.ts +1 -0
- package/dist/weapon/weapon.schema.js +1 -1
- package/dist/weapon/weapon.types.d.ts +2 -0
- package/package.json +1 -1
- package/dist/chunk-O4SRD3J5.js +0 -165
- package/dist/chunk-WXWPK3LI.js +0 -55
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
weaponCodec
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-K5NJBTE2.js";
|
|
4
|
+
import "../chunk-XCFC7LGF.js";
|
|
5
|
+
import "../chunk-5GKJAUMX.js";
|
|
6
6
|
import "../chunk-UA5KS2PL.js";
|
|
7
7
|
export {
|
|
8
8
|
weaponCodec
|
|
@@ -31,6 +31,7 @@ export declare const weaponEntitySchema: z.ZodObject<{
|
|
|
31
31
|
}>;
|
|
32
32
|
entries: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
33
33
|
rendering_hint: z.ZodOptional<z.ZodString>;
|
|
34
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
34
35
|
has_fluff: z.ZodOptional<z.ZodBoolean>;
|
|
35
36
|
has_fluff_images: z.ZodOptional<z.ZodBoolean>;
|
|
36
37
|
image: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
@@ -36,6 +36,8 @@ export interface WeaponEntity {
|
|
|
36
36
|
entries?: unknown[];
|
|
37
37
|
/** Carried as the empty string on every converter weapon carrier today (98). */
|
|
38
38
|
rendering_hint?: string;
|
|
39
|
+
/** The icon key (I3): a key of the renderer's icon set or a Lucide name. */
|
|
40
|
+
icon?: string;
|
|
39
41
|
has_fluff?: boolean;
|
|
40
42
|
has_fluff_images?: boolean;
|
|
41
43
|
/** One wikilink, or an array for >= 2 fluff images (images-ON emit). */
|
package/package.json
CHANGED
package/dist/chunk-O4SRD3J5.js
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
derivePoolLayout
|
|
3
|
-
} from "./chunk-PP2UHLBA.js";
|
|
4
|
-
import {
|
|
5
|
-
readTableColumn
|
|
6
|
-
} from "./chunk-IUAAXXNO.js";
|
|
7
|
-
import {
|
|
8
|
-
warnOnce
|
|
9
|
-
} from "./chunk-LVQLWRCU.js";
|
|
10
|
-
import {
|
|
11
|
-
bareEntitySlug,
|
|
12
|
-
wikilinkTailSlug
|
|
13
|
-
} from "./chunk-6X4KUDMU.js";
|
|
14
|
-
|
|
15
|
-
// src/pc/pc.pools.ts
|
|
16
|
-
function levelPrereqMax(d) {
|
|
17
|
-
var _a;
|
|
18
|
-
return ((_a = d.prerequisites) != null ? _a : []).filter((p) => p.kind === "level").reduce((m, p) => Math.max(m, p.min), 0);
|
|
19
|
-
}
|
|
20
|
-
function resolvePool(rc, classIndex, pool, registry, index) {
|
|
21
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
22
|
-
const entity = rc.entity;
|
|
23
|
-
const level = rc.level;
|
|
24
|
-
const ownerBare = bareEntitySlug(entity.slug);
|
|
25
|
-
const ownerPrefix = entity.slug.split("_")[0];
|
|
26
|
-
const col = pool.count.column;
|
|
27
|
-
const count = (_a = readTableColumn(entity.table, level, [col])) != null ? _a : 0;
|
|
28
|
-
let anchorLevel = 1;
|
|
29
|
-
let columnSeen = false;
|
|
30
|
-
for (let l = 1; l <= 20; l++) {
|
|
31
|
-
const c = readTableColumn(entity.table, l, [col]);
|
|
32
|
-
if (c != null) columnSeen = true;
|
|
33
|
-
if (c != null && c >= 1) {
|
|
34
|
-
anchorLevel = l;
|
|
35
|
-
break;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
if (!columnSeen) {
|
|
39
|
-
warnOnce(
|
|
40
|
-
`pool-column:${pool.id}`,
|
|
41
|
-
`Archivist: pool "${pool.id}" declares count column "${col}", which "${entity.slug}"'s class table carries at no level; the pool resolves count 0 at anchor level 1`
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
const ft = pool.source.where.feature_type;
|
|
45
|
-
const all = registry.search("", "optional-feature", Number.POSITIVE_INFINITY).slice().sort((a, b) => a.name.localeCompare(b.name) || a.slug.localeCompare(b.slug));
|
|
46
|
-
const byBare = /* @__PURE__ */ new Map();
|
|
47
|
-
const candidates = /* @__PURE__ */ new Map();
|
|
48
|
-
for (const e of all) {
|
|
49
|
-
const d = e.data;
|
|
50
|
-
const entry = { slug: e.slug, entity: d, ...e.compendium ? { compendium: e.compendium } : {} };
|
|
51
|
-
const bare = bareEntitySlug(e.slug);
|
|
52
|
-
byBare.set(bare, entry);
|
|
53
|
-
if (d.feature_type !== ft) continue;
|
|
54
|
-
if (!((_b = d.available_to) != null ? _b : []).some((l) => wikilinkTailSlug(l) === ownerBare)) continue;
|
|
55
|
-
if (levelPrereqMax(d) > level) continue;
|
|
56
|
-
const group = candidates.get(bare);
|
|
57
|
-
if (group) group.push(entry);
|
|
58
|
-
else candidates.set(bare, [entry]);
|
|
59
|
-
}
|
|
60
|
-
const available = [];
|
|
61
|
-
for (const [bare, group] of candidates) {
|
|
62
|
-
if (group.length === 1) {
|
|
63
|
-
available.push(group[0]);
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
const owned = group.find((e) => e.slug.split("_")[0] === ownerPrefix);
|
|
67
|
-
if (!owned) {
|
|
68
|
-
warnOnce(
|
|
69
|
-
`pool-collapse:${bare}`,
|
|
70
|
-
`Archivist: pool "${pool.id}" holds ${group.length} cross-edition entries for "${bare}" and none shares the owner's compendium prefix "${ownerPrefix}"; keeping "${group[0].slug}"`
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
available.push(owned != null ? owned : group[0]);
|
|
74
|
-
}
|
|
75
|
-
const grantDecls = [
|
|
76
|
-
...(_d = (_c = rc.entity) == null ? void 0 : _c.pool_grants) != null ? _d : [],
|
|
77
|
-
...(_f = (_e = rc.subclass) == null ? void 0 : _e.pool_grants) != null ? _f : []
|
|
78
|
-
];
|
|
79
|
-
const grantsRaw = grantDecls.filter((g) => g.pool === pool.id).flatMap((g) => g.grants).filter((g) => g.at_level <= level).map((g) => byBare.get(wikilinkTailSlug(g.feature))).filter((e) => e != null);
|
|
80
|
-
const grantedBare = /* @__PURE__ */ new Set();
|
|
81
|
-
const grants = grantsRaw.filter((e) => {
|
|
82
|
-
const key = bareEntitySlug(e.slug);
|
|
83
|
-
if (grantedBare.has(key)) return false;
|
|
84
|
-
grantedBare.add(key);
|
|
85
|
-
return true;
|
|
86
|
-
});
|
|
87
|
-
const bySlugAvailable = new Map(available.map((e) => [e.slug, e]));
|
|
88
|
-
const byBareAvailable = new Map(available.map((e) => [bareEntitySlug(e.slug), e]));
|
|
89
|
-
const resolveStored = (s) => {
|
|
90
|
-
const exact = bySlugAvailable.get(s);
|
|
91
|
-
if (exact) return exact;
|
|
92
|
-
const survivor = byBareAvailable.get(bareEntitySlug(s));
|
|
93
|
-
if (survivor) return survivor;
|
|
94
|
-
const full = registry.getByTypeAndSlug("optional-feature", s);
|
|
95
|
-
if (full) {
|
|
96
|
-
const d = full.data;
|
|
97
|
-
return { slug: full.slug, entity: d, ...full.compendium ? { compendium: full.compendium } : {} };
|
|
98
|
-
}
|
|
99
|
-
return byBare.get(bareEntitySlug(s));
|
|
100
|
-
};
|
|
101
|
-
const raw = (_g = rc.choices[anchorLevel]) == null ? void 0 : _g[pool.id];
|
|
102
|
-
const selectedSlugs = Array.isArray(raw) ? raw : typeof raw === "string" ? [raw] : [];
|
|
103
|
-
const selected = [];
|
|
104
|
-
const seenBare = /* @__PURE__ */ new Set();
|
|
105
|
-
for (const s of selectedSlugs) {
|
|
106
|
-
const entry = resolveStored(s);
|
|
107
|
-
if (!entry) continue;
|
|
108
|
-
const bare = bareEntitySlug(entry.slug);
|
|
109
|
-
if (grantedBare.has(bare) || seenBare.has(bare)) continue;
|
|
110
|
-
seenBare.add(bare);
|
|
111
|
-
selected.push(entry);
|
|
112
|
-
}
|
|
113
|
-
const members = [...available, ...grants];
|
|
114
|
-
const layout = derivePoolLayout(members);
|
|
115
|
-
const votes = /* @__PURE__ */ new Map();
|
|
116
|
-
for (const e of members) {
|
|
117
|
-
const id = (_h = e.entity.consumes) == null ? void 0 : _h.resource;
|
|
118
|
-
if (!id || !index.has(id)) continue;
|
|
119
|
-
votes.set(id, ((_i = votes.get(id)) != null ? _i : 0) + 1);
|
|
120
|
-
}
|
|
121
|
-
let resource;
|
|
122
|
-
let bestN = 0;
|
|
123
|
-
for (const [id, n] of votes) if (n > bestN) {
|
|
124
|
-
resource = id;
|
|
125
|
-
bestN = n;
|
|
126
|
-
}
|
|
127
|
-
return {
|
|
128
|
-
id: pool.id,
|
|
129
|
-
label: pool.label,
|
|
130
|
-
classIndex,
|
|
131
|
-
count,
|
|
132
|
-
anchorLevel,
|
|
133
|
-
selected,
|
|
134
|
-
available,
|
|
135
|
-
grants,
|
|
136
|
-
...layout ? { layout } : {},
|
|
137
|
-
...resource ? { resource } : {}
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
function resolveAllPools(resolved, registry, index) {
|
|
141
|
-
const out = [];
|
|
142
|
-
resolved.classes.forEach((rc, classIndex) => {
|
|
143
|
-
var _a, _b, _c;
|
|
144
|
-
if (!rc.entity) return;
|
|
145
|
-
const decls = [...(_a = rc.entity.selection_pools) != null ? _a : [], ...(_c = (_b = rc.subclass) == null ? void 0 : _b.selection_pools) != null ? _c : []];
|
|
146
|
-
const seen = /* @__PURE__ */ new Set();
|
|
147
|
-
for (const pool of decls) {
|
|
148
|
-
if (seen.has(pool.id)) continue;
|
|
149
|
-
seen.add(pool.id);
|
|
150
|
-
out.push(resolvePool(rc, classIndex, pool, registry, index));
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
return out;
|
|
154
|
-
}
|
|
155
|
-
function strandedPicks(pool) {
|
|
156
|
-
const inAvailable = new Set(pool.available.map((e) => e.slug));
|
|
157
|
-
return pool.selected.filter((e) => !inAvailable.has(e.slug));
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
export {
|
|
161
|
-
levelPrereqMax,
|
|
162
|
-
resolvePool,
|
|
163
|
-
resolveAllPools,
|
|
164
|
-
strandedPicks
|
|
165
|
-
};
|
package/dist/chunk-WXWPK3LI.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
slugify
|
|
3
|
-
} from "./chunk-6X4KUDMU.js";
|
|
4
|
-
|
|
5
|
-
// src/entities/base-item-resolver.ts
|
|
6
|
-
function unwrapWikilink(input) {
|
|
7
|
-
const m = /^\[\[([^\]]+)\]\]$/.exec(input.trim());
|
|
8
|
-
if (!m) return null;
|
|
9
|
-
const inner = m[1];
|
|
10
|
-
const pipe = inner.indexOf("|");
|
|
11
|
-
return pipe === -1 ? inner : inner.slice(0, pipe);
|
|
12
|
-
}
|
|
13
|
-
var FOLDER_TO_TYPE = {
|
|
14
|
-
Weapons: "weapon",
|
|
15
|
-
Armor: "armor",
|
|
16
|
-
"Magic Items": "item"
|
|
17
|
-
};
|
|
18
|
-
function vaultPathToSlug(target) {
|
|
19
|
-
const segments = target.split("/").map((s) => s.trim()).filter((s) => s.length > 0);
|
|
20
|
-
if (segments.length === 0) return "";
|
|
21
|
-
if (segments.length === 1) {
|
|
22
|
-
return slugify(segments[0]);
|
|
23
|
-
}
|
|
24
|
-
const compendiumName = segments[0];
|
|
25
|
-
const typeFolder = segments[segments.length - 2];
|
|
26
|
-
const basename = segments[segments.length - 1];
|
|
27
|
-
const prefix = slugify(compendiumName);
|
|
28
|
-
const nameSlug = slugify(basename);
|
|
29
|
-
if (!prefix || !nameSlug) return nameSlug;
|
|
30
|
-
const type = FOLDER_TO_TYPE[typeFolder];
|
|
31
|
-
return type ? `${prefix}_${type}_${nameSlug}` : `${prefix}_${nameSlug}`;
|
|
32
|
-
}
|
|
33
|
-
function resolveBaseItem(baseItem, registry) {
|
|
34
|
-
var _a, _b;
|
|
35
|
-
if (typeof baseItem !== "string" || baseItem.length === 0) return null;
|
|
36
|
-
const target = (_a = unwrapWikilink(baseItem)) != null ? _a : baseItem.trim();
|
|
37
|
-
if (target.length === 0) return null;
|
|
38
|
-
if (!target.includes("/")) {
|
|
39
|
-
const direct = registry.getBySlug(target);
|
|
40
|
-
if (direct) return direct;
|
|
41
|
-
}
|
|
42
|
-
const slug = vaultPathToSlug(target);
|
|
43
|
-
if (!slug) return null;
|
|
44
|
-
return (_b = registry.getBySlug(slug)) != null ? _b : null;
|
|
45
|
-
}
|
|
46
|
-
function resolveBaseItemOfType(baseItem, entityType, registry) {
|
|
47
|
-
const found = resolveBaseItem(baseItem, registry);
|
|
48
|
-
return found && found.entityType === entityType ? found : null;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export {
|
|
52
|
-
vaultPathToSlug,
|
|
53
|
-
resolveBaseItem,
|
|
54
|
-
resolveBaseItemOfType
|
|
55
|
-
};
|