Skip to content

Add Path of Exile 2 BuildPlanner (.build) export - #2

Closed
vaisest wants to merge 15 commits into
devfrom
build-file
Closed

vaisest wants to merge 15 commits into
devfrom
build-file

Conversation

@vaisest

@vaisest vaisest commented Aug 25, 2026

Copy link
Copy Markdown
Owner

Writes a .build JSON file to the in-game BuildPlanner folder
(Documents/My Games/Path of Exile 2/BuildPlanner/) from a new section in
the Import tab. Tree specs, item sets and skill sets export as
level-bracketed loadouts via the format's level_interval field, with
per-set Lvl Min/Max in each tab's Manage popup. The New Loadout dialog
also takes a level range that propagates across the matching tree spec,
item set and skill set on save. New sets auto-preset on a 30-level
cadence (1-30, 30-60, 60-90, 90-100).

Per-passive and per-gem author notes via Shift+Right-Click on the Tree
and Skills tabs. The keybind hint and any existing note are shown in
the respective tooltips. Notes flow into the exported additional_text;
the format's Custom Text markup ({}, {}, {},
<rgb(R,G,B)>{}) is preserved in the input.

Non-unique items render rolled title + base type + mod list using the
same markup (italic implicits, plain explicits). Active skills carry a
"Level N[, Q% Quality]" hint when no note is set; trivial Level 1 /
0% Quality on uncustomised support gems is suppressed to avoid noise.

Skill IDs use the Gems.lua table key to work around the singular
"Metadata/Items/Gem/" typo on the gameId field of ~486 auto-generated
entries.

Passive IDs are emitted as PassiveSkills.Id strings (e.g.
"projectiles18", "AscendancyMercenary2Notable5"). This required adding
stringId to src/Export/Scripts/passivetree.lua and regenerating
src/TreeData/0_4/tree.lua against GGPK. Older tree versions (0_1, 0_2,
0_3) still carry numeric IDs and fall back accordingly with a one-time
console warning until they're regenerated too.Fixes # .

Description of the problem being solved:

Steps taken to verify a working solution:

Link to a build that showcases this PR:

Before screenshot:

After screenshot:

Writes a .build JSON file to the in-game BuildPlanner folder
(Documents/My Games/Path of Exile 2/BuildPlanner/) from a new section in
the Import tab. Tree specs, item sets and skill sets export as
level-bracketed loadouts via the format's level_interval field, with
per-set Lvl Min/Max in each tab's Manage popup. The New Loadout dialog
also takes a level range that propagates across the matching tree spec,
item set and skill set on save. New sets auto-preset on a 30-level
cadence (1-30, 30-60, 60-90, 90-100).

Per-passive and per-gem author notes via Shift+Right-Click on the Tree
and Skills tabs. The keybind hint and any existing note are shown in
the respective tooltips. Notes flow into the exported additional_text;
the format's Custom Text markup ({}, {}, {},
<rgb(R,G,B)>{}) is preserved in the input.

Non-unique items render rolled title + base type + mod list using the
same markup (italic implicits, plain explicits). Active skills carry a
"Level N[, Q% Quality]" hint when no note is set; trivial Level 1 /
0% Quality on uncustomised support gems is suppressed to avoid noise.

Skill IDs use the Gems.lua table key to work around the singular
"Metadata/Items/Gem/" typo on the gameId field of ~486 auto-generated
entries.

Passive IDs are emitted as PassiveSkills.Id strings (e.g.
"projectiles18", "AscendancyMercenary2Notable5"). This required adding
stringId to src/Export/Scripts/passivetree.lua and regenerating
src/TreeData/0_4/tree.lua against GGPK. Older tree versions (0_1, 0_2,
0_3) still carry numeric IDs and fall back accordingly with a one-time
console warning until they're regenerated too.

TheClassified and others added 15 commits August 22, 2026 15:04
Writes a .build JSON file to the in-game BuildPlanner folder
(Documents/My Games/Path of Exile 2/BuildPlanner/) from a new section in
the Import tab. Tree specs, item sets and skill sets export as
level-bracketed loadouts via the format's level_interval field, with
per-set Lvl Min/Max in each tab's Manage popup. The New Loadout dialog
also takes a level range that propagates across the matching tree spec,
item set and skill set on save. New sets auto-preset on a 30-level
cadence (1-30, 30-60, 60-90, 90-100).

Per-passive and per-gem author notes via Shift+Right-Click on the Tree
and Skills tabs. The keybind hint and any existing note are shown in
the respective tooltips. Notes flow into the exported additional_text;
the format's Custom Text markup (<bold>{}, <italic>{}, <red>{},
<rgb(R,G,B)>{}) is preserved in the input.

Non-unique items render rolled title + base type + mod list using the
same markup (italic implicits, plain explicits). Active skills carry a
"Level N[, Q% Quality]" hint when no note is set; trivial Level 1 /
0% Quality on uncustomised support gems is suppressed to avoid noise.

Skill IDs use the Gems.lua table key to work around the singular
"Metadata/Items/Gem/" typo on the gameId field of ~486 auto-generated
entries.

Passive IDs are emitted as PassiveSkills.Id strings (e.g.
"projectiles18", "AscendancyMercenary2Notable5"). This required adding
stringId to src/Export/Scripts/passivetree.lua and regenerating
src/TreeData/0_4/tree.lua against GGPK. Older tree versions (0_1, 0_2,
0_3) still carry numeric IDs and fall back accordingly with a one-time
console warning until they're regenerated too.
@vaisest vaisest closed this Aug 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants