uesp-eso-build-wrapper 0.4.0 → 0.6.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 (31) hide show
  1. package/dist/lib/eso-engine/calculator.d.ts +19 -0
  2. package/dist/lib/eso-engine/calculator.d.ts.map +1 -1
  3. package/dist/lib/eso-engine/calculator.js +94 -5
  4. package/dist/lib/eso-engine/calculator.js.map +1 -1
  5. package/dist/lib/eso-engine/cp-gate.d.ts +70 -0
  6. package/dist/lib/eso-engine/cp-gate.d.ts.map +1 -0
  7. package/dist/lib/eso-engine/cp-gate.js +124 -0
  8. package/dist/lib/eso-engine/cp-gate.js.map +1 -0
  9. package/dist/lib/eso-engine/cp-tree.d.ts +24 -0
  10. package/dist/lib/eso-engine/cp-tree.d.ts.map +1 -0
  11. package/dist/lib/eso-engine/cp-tree.js +165 -0
  12. package/dist/lib/eso-engine/cp-tree.js.map +1 -0
  13. package/dist/lib/eso-engine/engine-globals.d.ts +12 -0
  14. package/dist/lib/eso-engine/engine-globals.d.ts.map +1 -1
  15. package/dist/lib/eso-engine/engine-globals.js.map +1 -1
  16. package/dist/lib/eso-engine/index.d.ts +6 -2
  17. package/dist/lib/eso-engine/index.d.ts.map +1 -1
  18. package/dist/lib/eso-engine/index.js +3 -1
  19. package/dist/lib/eso-engine/index.js.map +1 -1
  20. package/dist/lib/eso-engine/loader.d.ts.map +1 -1
  21. package/dist/lib/eso-engine/loader.js +21 -0
  22. package/dist/lib/eso-engine/loader.js.map +1 -1
  23. package/dist/lib/eso-engine/types.d.ts +87 -3
  24. package/dist/lib/eso-engine/types.d.ts.map +1 -1
  25. package/dist/lib/uesp-data/extract.d.ts.map +1 -1
  26. package/dist/lib/uesp-data/extract.js +44 -0
  27. package/dist/lib/uesp-data/extract.js.map +1 -1
  28. package/dist/lib/uesp-data/seed.d.ts.map +1 -1
  29. package/dist/lib/uesp-data/seed.js +37 -0
  30. package/dist/lib/uesp-data/seed.js.map +1 -1
  31. package/package.json +14 -4
@@ -71,6 +71,25 @@ export declare function listAvailableBuffs(group?: string): BuffInfo[];
71
71
  * Ex: "High Elf", "Nord", "Khajiit"
72
72
  */
73
73
  export declare function listRacialPassives(race: string): PassiveSkillInfo[];
74
+ /**
75
+ * Returns the game's inherent passives — the entries of the UESP
76
+ * `ESO_FREE_PASSIVES` list that are passives (Light/Medium/Heavy Armor Bonuses
77
+ * and Penalties, racial, craft). The UESP Build Editor loads them by itself;
78
+ * pass `BuildInput.autoInherentPassives: true` to apply them here, or use this
79
+ * list to mark them as owned in a UI.
80
+ *
81
+ * The list carries one racial passive per race. Pass `race` to keep only the
82
+ * character's own race (non-racial entries are always kept); omitting it returns
83
+ * every race's entries.
84
+ *
85
+ * Free-list entries that are actives/ultimates (Soul Trap, Werewolf
86
+ * Transformation, Scribing/Volendrung skills) are not passives and are omitted.
87
+ *
88
+ * Must be called after initEsoEngineFromData().
89
+ *
90
+ * @param race - Race name as passed to BuildInput.character.race. Ex: "High Elf".
91
+ */
92
+ export declare function listInherentPassives(race?: string): PassiveSkillInfo[];
74
93
  /**
75
94
  * Returns all class passive skills for the given class.
76
95
  * Each passive may appear in multiple ranks (rank 1, 2, 3).
@@ -1 +1 @@
1
- {"version":3,"file":"calculator.d.ts","sourceRoot":"","sources":["../../../src/lib/eso-engine/calculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EAEV,aAAa,EAEb,gBAAgB,EAEhB,eAAe,EAEhB,MAAM,YAAY,CAAC;AAMpB,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AAqCD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,CA6f/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE,CA6B7D;AA2BD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAKnE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAKvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAK7E;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CASlD;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,IAAI,eAAe,EAAE,CA6B7D"}
1
+ {"version":3,"file":"calculator.d.ts","sourceRoot":"","sources":["../../../src/lib/eso-engine/calculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EAEV,aAAa,EAEb,gBAAgB,EAEhB,eAAe,EAEhB,MAAM,YAAY,CAAC;AAMpB,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AAwDD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,CA8hB/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE,CA6B7D;AA2BD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAKnE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAiBtE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAKvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAK7E;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CASlD;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,IAAI,eAAe,EAAE,CA6B7D"}
@@ -61,6 +61,24 @@ function normalizeItemData(item) {
61
61
  }
62
62
  return { ...defaults, ...item };
63
63
  }
64
+ /**
65
+ * Strips HTML tags and ESO color codes (|cHHHHHH...|r) from a CP node
66
+ * description so the engine's regex matching works on plain text.
67
+ *
68
+ * The tag pattern is applied repeatedly until stable to rule out the
69
+ * incomplete multi-character sanitization class (a single pass could leave
70
+ * a tag re-exposed from inside another match). Each pass only removes
71
+ * characters, so the loop always terminates.
72
+ */
73
+ function stripDescriptionFormats(desc) {
74
+ let plainDesc = desc;
75
+ let previousDesc;
76
+ do {
77
+ previousDesc = plainDesc;
78
+ plainDesc = plainDesc.replace(/<[^>]+>/g, '');
79
+ } while (plainDesc !== previousDesc);
80
+ return plainDesc.replace(/\|c[0-9a-fA-F]{6}|\|r/g, '');
81
+ }
64
82
  /**
65
83
  * Calculates the Computed Character Statistics for the given build.
66
84
  *
@@ -89,7 +107,7 @@ function normalizeItemData(item) {
89
107
  * ```
90
108
  */
91
109
  export function calculateBuild(input) {
92
- const { character, items, championPointNodes, activeBuffs, toggleSkills, skillBars, activeWeaponBar, passiveSkills, autoPassives, enchantOverrides, toggledSetBonuses, } = input;
110
+ const { character, items, championPointNodes, activeBuffs, toggleSkills, skillBars, activeWeaponBar, passiveSkills, autoPassives, autoInherentPassives, enchantOverrides, toggledSetBonuses, } = input;
93
111
  // ─── GLOBAL STATE RESET ───────────────────────────────────────────────────
94
112
  // All resets in one place — makes leaks between calls easier to spot.
95
113
  // g_EsoComputedStats: zero value/preCapValue before computing.
@@ -204,7 +222,9 @@ export function calculateBuild(input) {
204
222
  setDomValue('esotbTargetPenetrationFactor', '0');
205
223
  setDomValue('esotbTargetDefenseBonus', '0');
206
224
  setDomValue('esotbTargetAttackBonus', '0');
207
- setDomValue('esotbTargetCritDamage', '0');
225
+ // UESP default target crit damage: 50% (base). Feeds DefenseCritDmg; with 0 the stat went
226
+ // negative (-0.1848) instead of the UESP's 0.3152 (exact -0.5 delta).
227
+ setDomValue('esotbTargetCritDamage', '50');
208
228
  setDomValue('esotbTargetCritChance', '0');
209
229
  setDomValue('esotbTargetPercentHealth', '100');
210
230
  // -------------------------------------------------------------------------
@@ -298,9 +318,22 @@ export function calculateBuild(input) {
298
318
  }
299
319
  if (desc) {
300
320
  // Strip HTML tags and ESO color codes (|cHHHHHH...|r) so the engine's regex matching works on plain text
301
- const plainDesc = desc.replace(/<[^>]+>/g, '').replace(/\|c[0-9a-fA-F]{6}|\|r/g, '');
302
- // isUnlocked: use explicit value from fixture when present; default true for old fixtures without it
303
- const isUnlocked = nodeData.isUnlocked !== undefined ? nodeData.isUnlocked : true;
321
+ const plainDesc = stripDescriptionFormats(desc);
322
+ // isUnlocked: explicit value wins. Otherwise derive from the node
323
+ // metadata: passives (skillType 0) are active from jumpPointDelta up;
324
+ // slottable nodes (skillType 1/2) default to false because the wrapper
325
+ // cannot know whether they are on the Champion bar.
326
+ let isUnlocked;
327
+ if (nodeData.isUnlocked !== undefined) {
328
+ isUnlocked = nodeData.isUnlocked;
329
+ }
330
+ else {
331
+ const meta = cpSkills[nodeId];
332
+ const points = nodeData.points ?? 0;
333
+ const delta = Number(meta?.jumpPointDelta ?? 0);
334
+ const skillType = Number(meta?.skillType ?? 0);
335
+ isUnlocked = points >= delta && skillType === 0;
336
+ }
304
337
  cpDataGlobal[nodeId] = { type: 'skill', isUnlocked, description: plainDesc, name };
305
338
  }
306
339
  // no resolvable description → node ignored (no engine effect)
@@ -407,6 +440,26 @@ export function calculateBuild(input) {
407
440
  }
408
441
  }
409
442
  }
443
+ if (autoInherentPassives) {
444
+ // The UESP page loads its own ESO_FREE_PASSIVES baseline (armor bonuses/
445
+ // penalties, racial, craft, a few free actives). Mirror it. The list carries
446
+ // one racial passive per race, so keep only the character's own race; IDs
447
+ // missing from g_SkillsData are ignored downstream and armor effects are
448
+ // gated per equipped piece.
449
+ const freePassives = g.ESO_FREE_PASSIVES;
450
+ const skillsData = g.g_SkillsData;
451
+ if (freePassives) {
452
+ for (const id of Object.keys(freePassives)) {
453
+ const abilityId = Number(id);
454
+ if (!Number.isFinite(abilityId) || abilityId <= 0)
455
+ continue;
456
+ const raceType = skillsData?.[abilityId]?.raceType;
457
+ if (raceType && raceType !== character.race)
458
+ continue;
459
+ allPassiveIds.add(abilityId);
460
+ }
461
+ }
462
+ }
410
463
  if (allPassiveIds.size > 0) {
411
464
  const passiveData = {};
412
465
  for (const abilityId of allPassiveIds) {
@@ -612,6 +665,42 @@ function buildPassiveSkillInfos(filter, sortKey) {
612
665
  export function listRacialPassives(race) {
613
666
  return buildPassiveSkillInfos((v) => v.raceType === race, (v) => v.baseName);
614
667
  }
668
+ /**
669
+ * Returns the game's inherent passives — the entries of the UESP
670
+ * `ESO_FREE_PASSIVES` list that are passives (Light/Medium/Heavy Armor Bonuses
671
+ * and Penalties, racial, craft). The UESP Build Editor loads them by itself;
672
+ * pass `BuildInput.autoInherentPassives: true` to apply them here, or use this
673
+ * list to mark them as owned in a UI.
674
+ *
675
+ * The list carries one racial passive per race. Pass `race` to keep only the
676
+ * character's own race (non-racial entries are always kept); omitting it returns
677
+ * every race's entries.
678
+ *
679
+ * Free-list entries that are actives/ultimates (Soul Trap, Werewolf
680
+ * Transformation, Scribing/Volendrung skills) are not passives and are omitted.
681
+ *
682
+ * Must be called after initEsoEngineFromData().
683
+ *
684
+ * @param race - Race name as passed to BuildInput.character.race. Ex: "High Elf".
685
+ */
686
+ export function listInherentPassives(race) {
687
+ const g = engineGlobals();
688
+ const freePassives = g.ESO_FREE_PASSIVES;
689
+ if (!freePassives || typeof freePassives !== 'object')
690
+ return [];
691
+ const skillsData = g.g_SkillsData;
692
+ const freeIds = new Set();
693
+ for (const id of Object.keys(freePassives)) {
694
+ const abilityId = Number(id);
695
+ if (!Number.isFinite(abilityId) || abilityId <= 0)
696
+ continue;
697
+ const raceType = skillsData?.[abilityId]?.raceType;
698
+ if (race && raceType && raceType !== race)
699
+ continue;
700
+ freeIds.add(abilityId);
701
+ }
702
+ return buildPassiveSkillInfos((v) => freeIds.has(Number(v.abilityId)), (v) => (v.skillLine ?? '') + v.baseName);
703
+ }
615
704
  /**
616
705
  * Returns all class passive skills for the given class.
617
706
  * Each passive may appear in multiple ranks (rank 1, 2, 3).
@@ -1 +1 @@
1
- {"version":3,"file":"calculator.js","sourceRoot":"","sources":["../../../src/lib/eso-engine/calculator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calculator.js","sourceRoot":"","sources":["../../../src/lib/eso-engine/calculator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Champion Points purchaseability gate — a faithful port of the UESP esolog
3
+ * algorithm.
4
+ *
5
+ * This module is intentionally PURE: it imports only types, never the engine
6
+ * globals or Node APIs, so it can run both in Node and in the browser
7
+ * (published as the `uesp-eso-build-wrapper/cp-gate` subpath).
8
+ *
9
+ * References (vendored UESP sources):
10
+ * - `vendor/uesp-esolog/viewCps.class.php:164` `CreateCp2LinksData()`
11
+ * - `vendor/uesp-esolog/viewCps.class.php:214` `CreateCp2UnlockData()`
12
+ * - `vendor/uesp-esolog/resources/esocp_simple.js:684` `UpdateCP2SkillPurchaseable()`
13
+ *
14
+ * Semantics (mirrors UESP):
15
+ * A node is purchaseable when it is reachable from a root along the
16
+ * (symmetric) link graph, where every node you traverse *through* must have
17
+ * `points >= jumpPointDelta`. Visiting a node always marks it purchaseable,
18
+ * even when it has no points yet (that is how you buy it).
19
+ */
20
+ import type { CpLink, CpNode } from './types.js';
21
+ /** Minimal node fields required by the gate. */
22
+ export interface CpGateNode {
23
+ abilityId: number;
24
+ isRoot: boolean;
25
+ jumpPointDelta: number;
26
+ }
27
+ /** Raw link row in `skillId` space (`cp2SkillLinks`). */
28
+ export interface CpRawLink {
29
+ parentSkillId: number;
30
+ skillId: number;
31
+ }
32
+ /**
33
+ * Maps raw `cp2SkillLinks` rows (skillId space) to the abilityId adjacency
34
+ * graph — the equivalent of the UESP `g_EsoCpLinks` global
35
+ * (`CreateCp2LinksData`). Kept symmetric: each edge appears in both directions,
36
+ * exactly as the dump provides it.
37
+ */
38
+ export declare function buildCpLinks(links: readonly CpRawLink[], skillIdToAbilityId: ReadonlyMap<number, number>): Record<number, number[]>;
39
+ /** `childAbilityId → [parentAbilityIds]` (inverse of a children map). */
40
+ export declare function buildCpParentMap(children: Readonly<Record<number, number[]>>): Map<number, number[]>;
41
+ /**
42
+ * Flood-fill from every root, returning the set of purchaseable abilityIds for
43
+ * the current allocation.
44
+ *
45
+ * `visited` is reset at each root (as in UESP), so a node reachable from any
46
+ * root counts. Traversal stops at a node whose points are below its
47
+ * `jumpPointDelta`.
48
+ */
49
+ export declare function computePurchaseableNodes(nodes: readonly CpGateNode[], graph: Readonly<Record<number, number[]>>, getPoints: (abilityId: number) => number): Set<number>;
50
+ /**
51
+ * Convenience single-node check. Prefer {@link createCpGate} /
52
+ * {@link computePurchaseableNodes} when checking more than one node, since this
53
+ * recomputes the whole flood-fill per call.
54
+ */
55
+ export declare function isCpNodePurchaseable(abilityId: number, nodes: readonly CpGateNode[], graph: Readonly<Record<number, number[]>>, getPoints: (abilityId: number) => number): boolean;
56
+ /** A reusable, stateless gate built from a tree's nodes and links. */
57
+ export interface CpGate {
58
+ /** All nodes purchaseable for the current allocation. */
59
+ purchaseable(getPoints: (abilityId: number) => number): Set<number>;
60
+ /** Whether a single node is purchaseable for the current allocation. */
61
+ isPurchaseable(abilityId: number, getPoints: (abilityId: number) => number): boolean;
62
+ }
63
+ /**
64
+ * Builds a reusable gate from a tree's nodes and links.
65
+ *
66
+ * The link graph is translated from `skillId` space to `abilityId` space using
67
+ * the nodes' own mapping, so callers only need the tree — not `cpLinksData`.
68
+ */
69
+ export declare function createCpGate(nodes: readonly CpNode[], links: readonly CpLink[]): CpGate;
70
+ //# sourceMappingURL=cp-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cp-gate.d.ts","sourceRoot":"","sources":["../../../src/lib/eso-engine/cp-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEjD,gDAAgD;AAChD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,yDAAyD;AACzD,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAS1B;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,GAC3C,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAYvB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACzC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GACvC,GAAG,CAAC,MAAM,CAAC,CA0Bb;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACzC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GACvC,OAAO,CAET;AAED,sEAAsE;AACtE,MAAM,WAAW,MAAM;IACrB,yDAAyD;IACzD,YAAY,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACpE,wEAAwE;IACxE,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC;CACtF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAwBvF"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Champion Points purchaseability gate — a faithful port of the UESP esolog
3
+ * algorithm.
4
+ *
5
+ * This module is intentionally PURE: it imports only types, never the engine
6
+ * globals or Node APIs, so it can run both in Node and in the browser
7
+ * (published as the `uesp-eso-build-wrapper/cp-gate` subpath).
8
+ *
9
+ * References (vendored UESP sources):
10
+ * - `vendor/uesp-esolog/viewCps.class.php:164` `CreateCp2LinksData()`
11
+ * - `vendor/uesp-esolog/viewCps.class.php:214` `CreateCp2UnlockData()`
12
+ * - `vendor/uesp-esolog/resources/esocp_simple.js:684` `UpdateCP2SkillPurchaseable()`
13
+ *
14
+ * Semantics (mirrors UESP):
15
+ * A node is purchaseable when it is reachable from a root along the
16
+ * (symmetric) link graph, where every node you traverse *through* must have
17
+ * `points >= jumpPointDelta`. Visiting a node always marks it purchaseable,
18
+ * even when it has no points yet (that is how you buy it).
19
+ */
20
+ /**
21
+ * Maps raw `cp2SkillLinks` rows (skillId space) to the abilityId adjacency
22
+ * graph — the equivalent of the UESP `g_EsoCpLinks` global
23
+ * (`CreateCp2LinksData`). Kept symmetric: each edge appears in both directions,
24
+ * exactly as the dump provides it.
25
+ */
26
+ export function buildCpLinks(links, skillIdToAbilityId) {
27
+ const graph = {};
28
+ for (const { parentSkillId, skillId } of links) {
29
+ const parentAbilityId = skillIdToAbilityId.get(parentSkillId);
30
+ const childAbilityId = skillIdToAbilityId.get(skillId);
31
+ if (parentAbilityId == null || childAbilityId == null)
32
+ continue;
33
+ (graph[parentAbilityId] ?? (graph[parentAbilityId] = [])).push(childAbilityId);
34
+ }
35
+ return graph;
36
+ }
37
+ /** `childAbilityId → [parentAbilityIds]` (inverse of a children map). */
38
+ export function buildCpParentMap(children) {
39
+ const parents = new Map();
40
+ for (const [parentKey, childIds] of Object.entries(children)) {
41
+ const parentId = Number(parentKey);
42
+ if (Number.isNaN(parentId))
43
+ continue;
44
+ for (const childId of childIds) {
45
+ const list = parents.get(childId) ?? [];
46
+ list.push(parentId);
47
+ parents.set(childId, list);
48
+ }
49
+ }
50
+ return parents;
51
+ }
52
+ /**
53
+ * Flood-fill from every root, returning the set of purchaseable abilityIds for
54
+ * the current allocation.
55
+ *
56
+ * `visited` is reset at each root (as in UESP), so a node reachable from any
57
+ * root counts. Traversal stops at a node whose points are below its
58
+ * `jumpPointDelta`.
59
+ */
60
+ export function computePurchaseableNodes(nodes, graph, getPoints) {
61
+ const nodeById = new Map();
62
+ for (const node of nodes)
63
+ nodeById.set(node.abilityId, node);
64
+ const visited = new Set();
65
+ const purchaseable = new Set();
66
+ const visit = (abilityId) => {
67
+ if (visited.has(abilityId))
68
+ return;
69
+ visited.add(abilityId);
70
+ purchaseable.add(abilityId);
71
+ const node = nodeById.get(abilityId);
72
+ if (!node)
73
+ return;
74
+ if (getPoints(abilityId) < node.jumpPointDelta)
75
+ return;
76
+ for (const neighbor of graph[abilityId] ?? [])
77
+ visit(neighbor);
78
+ };
79
+ for (const node of nodes) {
80
+ if (!node.isRoot)
81
+ continue;
82
+ visited.clear();
83
+ visit(node.abilityId);
84
+ }
85
+ return purchaseable;
86
+ }
87
+ /**
88
+ * Convenience single-node check. Prefer {@link createCpGate} /
89
+ * {@link computePurchaseableNodes} when checking more than one node, since this
90
+ * recomputes the whole flood-fill per call.
91
+ */
92
+ export function isCpNodePurchaseable(abilityId, nodes, graph, getPoints) {
93
+ return computePurchaseableNodes(nodes, graph, getPoints).has(abilityId);
94
+ }
95
+ /**
96
+ * Builds a reusable gate from a tree's nodes and links.
97
+ *
98
+ * The link graph is translated from `skillId` space to `abilityId` space using
99
+ * the nodes' own mapping, so callers only need the tree — not `cpLinksData`.
100
+ */
101
+ export function createCpGate(nodes, links) {
102
+ const abilityBySkill = new Map();
103
+ const gateNodes = nodes.map((node) => {
104
+ abilityBySkill.set(node.skillId, node.abilityId);
105
+ return {
106
+ abilityId: node.abilityId,
107
+ isRoot: node.isRoot,
108
+ jumpPointDelta: node.jumpPointDelta,
109
+ };
110
+ });
111
+ const graph = {};
112
+ for (const { parentSkillId, skillId } of links) {
113
+ const parentAbilityId = abilityBySkill.get(parentSkillId);
114
+ const childAbilityId = abilityBySkill.get(skillId);
115
+ if (parentAbilityId == null || childAbilityId == null)
116
+ continue;
117
+ (graph[parentAbilityId] ?? (graph[parentAbilityId] = [])).push(childAbilityId);
118
+ }
119
+ return {
120
+ purchaseable: (getPoints) => computePurchaseableNodes(gateNodes, graph, getPoints),
121
+ isPurchaseable: (abilityId, getPoints) => computePurchaseableNodes(gateNodes, graph, getPoints).has(abilityId),
122
+ };
123
+ }
124
+ //# sourceMappingURL=cp-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cp-gate.js","sourceRoot":"","sources":["../../../src/lib/eso-engine/cp-gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Champion Points tree builder.
3
+ *
4
+ * `buildCpTree()` is a pure function over the extracted `cp2*` data.
5
+ * `getCpTree()` is the public, lazily-memoized accessor used at runtime:
6
+ * it reads the engine globals injected by the loader and builds the tree once
7
+ * per process (the engine is a per-process singleton, so the globals never
8
+ * change after init).
9
+ */
10
+ import type { CpTree, UespInitData } from './types.js';
11
+ /** Subset of `UespInitData` needed to assemble a {@link CpTree}. */
12
+ export type CpTreeSource = Pick<UespInitData, 'cpSkillsData' | 'cpSkillDescData' | 'cpDisciplinesData' | 'cpClusterRootsData' | 'cpLinksData'>;
13
+ /** Assembles a {@link CpTree} from extracted `cp2*` data. Pure and testable. */
14
+ export declare function buildCpTree(source: CpTreeSource): CpTree;
15
+ /**
16
+ * Returns the Champion Points tree, built once per process from the engine
17
+ * globals. Must be called after `initEsoEngineFromData()`.
18
+ *
19
+ * The returned object is read-only — treat it as immutable (it is shared).
20
+ */
21
+ export declare function getCpTree(): CpTree;
22
+ /** Clears the memoized tree — called when the engine is (re)loaded. */
23
+ export declare function resetCpTreeCache(): void;
24
+ //# sourceMappingURL=cp-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cp-tree.d.ts","sourceRoot":"","sources":["../../../src/lib/eso-engine/cp-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAA2C,MAAM,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEhG,oEAAoE;AACpE,MAAM,MAAM,YAAY,GAAG,IAAI,CAC7B,YAAY,EACZ,cAAc,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,aAAa,CAChG,CAAC;AAiBF,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA6HxD;AAID;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAQlC;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}