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.
- package/dist/lib/eso-engine/calculator.d.ts +19 -0
- package/dist/lib/eso-engine/calculator.d.ts.map +1 -1
- package/dist/lib/eso-engine/calculator.js +94 -5
- package/dist/lib/eso-engine/calculator.js.map +1 -1
- package/dist/lib/eso-engine/cp-gate.d.ts +70 -0
- package/dist/lib/eso-engine/cp-gate.d.ts.map +1 -0
- package/dist/lib/eso-engine/cp-gate.js +124 -0
- package/dist/lib/eso-engine/cp-gate.js.map +1 -0
- package/dist/lib/eso-engine/cp-tree.d.ts +24 -0
- package/dist/lib/eso-engine/cp-tree.d.ts.map +1 -0
- package/dist/lib/eso-engine/cp-tree.js +165 -0
- package/dist/lib/eso-engine/cp-tree.js.map +1 -0
- package/dist/lib/eso-engine/engine-globals.d.ts +12 -0
- package/dist/lib/eso-engine/engine-globals.d.ts.map +1 -1
- package/dist/lib/eso-engine/engine-globals.js.map +1 -1
- package/dist/lib/eso-engine/index.d.ts +6 -2
- package/dist/lib/eso-engine/index.d.ts.map +1 -1
- package/dist/lib/eso-engine/index.js +3 -1
- package/dist/lib/eso-engine/index.js.map +1 -1
- package/dist/lib/eso-engine/loader.d.ts.map +1 -1
- package/dist/lib/eso-engine/loader.js +21 -0
- package/dist/lib/eso-engine/loader.js.map +1 -1
- package/dist/lib/eso-engine/types.d.ts +87 -3
- package/dist/lib/eso-engine/types.d.ts.map +1 -1
- package/dist/lib/uesp-data/extract.d.ts.map +1 -1
- package/dist/lib/uesp-data/extract.js +44 -0
- package/dist/lib/uesp-data/extract.js.map +1 -1
- package/dist/lib/uesp-data/seed.d.ts.map +1 -1
- package/dist/lib/uesp-data/seed.js +37 -0
- package/dist/lib/uesp-data/seed.js.map +1 -1
- 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;
|
|
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
|
-
|
|
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
|
|
302
|
-
// isUnlocked:
|
|
303
|
-
|
|
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"}
|