Skip to content

Add dynamic attribute passive node option support for 'instead grant' mods aka Pathfinder's Traveller's Wisdom notable.#1870

Open
Devlin1991 wants to merge 4 commits into
PathOfBuildingCommunity:devfrom
Devlin1991:feature/AttributePassiveNodesCanInsteadGrant
Open

Add dynamic attribute passive node option support for 'instead grant' mods aka Pathfinder's Traveller's Wisdom notable.#1870
Devlin1991 wants to merge 4 commits into
PathOfBuildingCommunity:devfrom
Devlin1991:feature/AttributePassiveNodesCanInsteadGrant

Conversation

@Devlin1991
Copy link
Copy Markdown
Contributor

@Devlin1991 Devlin1991 commented May 17, 2026

Description of the problem being solved:

Pathfinder ascendancy notable "Traveller's Wisdom" not supported due to no support for "Attribute Passive Skills can intead grant " mods.

Note: Close in feature set to #1665 but handles the mod more generically to support Custom Modifiers, Item Modifiers, and hopefully any changes to "Traveller's Wisdom" without need for code changes.

Steps taken to verify a working solution:

  • Character created with the "Traveller's Wisdom" allocated. Mod lines are red and appended with (not yet supported in PoB)
  • Applied this PR
  • "Traveller's Wisdom" mod lines are now blue and supported.
  • Confirmed new attribute passive node options: "5% increased damage", "5% increased defences", and "5% increased cost efficiency" appear in the dropdown menu, the right-click cycling, and the hotkey+right-click mode.
  • Confirmed that after deallocating "Traveller's Wisdom" nodes with options only enabled by it revert to their "+5 to any attribute" default state.
  • Tested that the build saves and loads correctly.
  • Tested that the build exports and imports correctly.
  • Repeated above steps with an item mod "Attribute Passive Skills can instead grant +2% movement speed"
  • Repeated above steps with a Custom Modifiers mod "Attribute Passive Skills can instead grant 8% increased Evasion Rating"

Link to a build that showcases this PR:

https://poe.ninja/poe2/pob/1b282 (PoB exported build using this PR)
https://pastebin.com/SN87XLgJ (Raw character json with alternative nodes)
^^ Note: The exported build requires this PR to load without error but this PR can load older exported builds without issue.

Youtube video of feature, right click image below -> open link in new tab

IMAGE ALT TEXT HERE
https://www.youtube.com/watch?v=hMqeedr8juI

Before screenshot:

image image

After screenshot:

image image image

Andrew Devlin and others added 2 commits May 17, 2026 14:37
… mods

Parse 'Attribute Passive Skills can instead grant <stat>' from passive
nodes, equipped items, and custom config modifiers. Discovered options
populate the Choose Attribute popup and hotkeys 4-9. Overrides save and
load by stat string and auto-revert to the node default state when their
source is removed. Supports right-click cycling and last-used
allocation. Updated Choose Attribute popup formatting with new feature.

Signed-off-by: Andrew Devlin <devlin1991@googlemail.com>
…overrides from character data. Alternative attribute node sprite now matches in-game icon.

Signed-off-by: Andrew Devlin <devlin1991@googlemail.com>
Comment thread src/Classes/ImportTab.lua Outdated
self.build.spec:ReplaceNode(node, self.build.spec.hashOverrides[id])
end
elseif nodeInfo.stats and nodeInfo.stats[1] then
local stat = nodeInfo.stats[1]:gsub("%[([^%]|]*)%|?[^%]]*%]", "%1"):lower()
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We already have escapeGGGString for this, use that instead

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed in 3af92a4

Comment thread src/Classes/PassiveSpec.lua Outdated
local attributeOverride = { elem = "AttributeOverride", attrib = { strNodes = table.concat(strList, ","), dexNodes = table.concat(dexList, ","), intNodes = table.concat(intList, ",") } }
local attrib = {
strnodes = table.concat(standard[1], ","),
dexnodes = table.concat(standard[2], ","),
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changing these instances back to dexNodes will make the spellchecker happy again

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 3af92a4

@Devlin1991
Copy link
Copy Markdown
Contributor Author

@Wires77 thanks, will make those changes shortly.

…this was a holdover from development. Updated string formatting in ImportTabClass:ImportPassiveTreeAndJewels to use escapeGGGString instead of manual formatting.

Signed-off-by: Andrew Devlin <devlin1991@googlemail.com>
…s to avoid spellchecker issue.

Signed-off-by: Andrew Devlin <devlin1991@googlemail.com>
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.

2 participants