Skip to content

Repro/3062 vulconus xophs blood#10030

Open
ethannguyen128 wants to merge 2 commits into
PathOfBuildingCommunity:devfrom
ethannguyen128:repro/3062-vulconus-xophs-blood
Open

Repro/3062 vulconus xophs blood#10030
ethannguyen128 wants to merge 2 commits into
PathOfBuildingCommunity:devfrom
ethannguyen128:repro/3062-vulconus-xophs-blood

Conversation

@ethannguyen128

Copy link
Copy Markdown

Fixes # .

Description of the problem being solved:

Vulconus grants Avatar of Fire only temporarily, so PoB gates its "while you (do not) have Avatar of Fire" modifiers behind a Vulconus config checkbox that sets Condition:HaveAvatarOfFire. That flag was set only by the checkbox, so when a permanent source of the Avatar of Fire keystone is equipped (e.g. Xoph's Blood, or a passive-tree allocation) the character always has Avatar of Fire yet the condition stayed unset. As a result Vulconus's +2000 Armour while you do not have Avatar of Fire line remained incorrectly active (and, conversely, the "while you have Avatar of Fire" crit/conversion lines were gated off).

The fix sets Condition:HaveAvatarOfFire whenever the Avatar of Fire keystone is actually active, keyed off env.keystonesAdded immediately after keystones are merged in calcs.perform. This reuses the existing keystone-detection idiom already used in CalcDefence/CalcOffence, and leaves the config-checkbox path untouched. Vulconus never grants the keystone permanently on its own, so the two paths compose without conflict.

Steps taken to verify a working solution:

Added a system test in spec/System/TestDefence_spec.lua reproducing the bug: with Vulconus equipped, adding a permanent Avatar of Fire source (Amber Amulet with the Avatar of Fire line, as Xoph's Blood grants) now sets Condition:HaveAvatarOfFire and drops the +2000 Armour line by exactly 2000. This test fails on the pre-fix code and passes after the fix.
Ran the full Busted suite (docker compose up): 238 passed / 0 failed / 0 errors, confirming no regressions.
Confirmed via the Vulconus unique data that it never grants the keystone permanently, so a Vulconus-only build still responds to the config checkbox exactly as before.

Link to a build that showcases this PR:

https://maxroll.gg/poe/pob/n8puug0t

Before screenshot:

pob_before

After screenshot:

pob_after

Ethan Nguyen and others added 2 commits July 12, 2026 18:59
…ldingCommunity#3062)

Adds a failing system test demonstrating that a permanent source of the
Avatar of Fire keystone (as Xoph's Blood grants) does not force Vulconus's
'while you (do not) have Avatar of Fire' state. The character always has
Avatar of Fire, yet Condition:HaveAvatarOfFire stays unset (it is only ever
set by the Vulconus config checkbox), so the '+2000 Armour while you do not
have Avatar of Fire' line remains active. The test asserts the correct
behaviour and therefore fails on current code, capturing the bug.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…athOfBuildingCommunity#3062)

PoB gated Vulconus's "while you (do not) have Avatar of Fire" modifiers on
Condition:HaveAvatarOfFire, which was only ever set by the Vulconus config
checkbox. That checkbox models Vulconus's temporary buff, but a PERMANENT
source of the Avatar of Fire keystone (Xoph's Blood, or a tree allocation)
means the character always has Avatar of Fire. In that case the condition
stayed unset, so the "+2000 Armour while you do not have Avatar of Fire"
line remained active even though the character permanently had the keystone.

Set Condition:HaveAvatarOfFire whenever the Avatar of Fire keystone is
active (env.keystonesAdded), right after keystones are merged in
calcs.perform. This mirrors the existing env.keystonesAdded idiom used for
other keystone-driven behaviour (CalcDefence, CalcOffence) and leaves the
config-checkbox path unchanged, since Vulconus never grants the keystone
permanently on its own.

Also fixes the repro test: assert.is_falsy(Flag(...)) errors when Flag
returns nil (Lua drops the trailing nil, so luassert sees zero args); use
assert.is_nil to match the codebase idiom.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ethannguyen128

Copy link
Copy Markdown
Author

Hi @Wires77 this is my first contribution to this project. I've fixed #3062 by setting the Condition:HaveAvatarOfFire flag whenever the Avatar of Fire keystone is actually active (e.g. from Xoph's Blood or the passive tree), not just when the Vulconus config checkbox is ticked so Vulconus's "while you (do not) have Avatar of Fire" modifiers now resolve correctly with a permanent keystone source. Would appreciate a review when you have time!

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.

1 participant