Skip to content

Implement Blood Shrines - #10186

Merged
LocalIdentity merged 3 commits into
PathOfBuildingCommunity:devfrom
moxaj:blood-shrines
Aug 23, 2026
Merged

LocalIdentity merged 3 commits into
PathOfBuildingCommunity:devfrom
moxaj:blood-shrines

Conversation

@moxaj

@moxaj moxaj commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Description of the problem being solved:

This PR implements support for Blood Shrines from the unique Waxen Soul.

Steps taken to verify a working solution:

  • Equip Waxen Soul
  • Verify that you can see the config options for the various blood shrines

After screenshot:

image

@LocalIdentity LocalIdentity added the enhancement New feature, calculation, or mod label Aug 23, 2026
Fix Shrine of Crows applying to DoT damage instead of just hits
Fix Trigger chance on toad shrine not including 25% chance to trigger
@LocalIdentity
LocalIdentity merged commit 06e1e6f into PathOfBuildingCommunity:dev Aug 23, 2026
end,
["BloodShrineUniqueTriggeredExplodingToad"] = function(env)
local triggerChance = env.player.mainSkill.activeEffect.srcInstance.triggerChance + env.player.modDB:Sum("BASE", nil, "BloodShrineExplodingToadTriggerChance")
return {assumingEveryHitKills = true, triggerChance = m_min(triggerChance, 100),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

[P1] Preserve the configured chance for charge-based Toad triggers

Explosive Toad has stored uses, so the generic handler sets ignoresTickRate and enters the charge-based branch; that branch computes the trigger rate from EffectiveSourceRate without applying this triggerChance. A focused reproduction with a 0.13175/s source reports 0.13175/s here instead of 0.013175/s for Waxen Soul's 10%, and still reports 0.13175/s instead of 0.0461125/s when the Shrine's 25% is present in modDB. This can overstate the granted skill's DPS by up to 10x. Could the charge-based path consume the effective chance while preserving stored-use and rate-cap behavior, with coverage for 10%, 35%, the 100% sum cap, other charge-based triggers, and an isolated multi-hit comparison? Manual UI behavior was not exercised; the calculation failure reproduces headlessly.

AI-assisted review disclosure: This finding was identified during a review using OpenAI Codex and confirmed with a focused reproduction.

modDB:NewMod("ChaosResistMax", "BASE", m_floor(2 * shrineEffectMod), "Lesser Resistance Shrine")
end
if modDB:Flag(nil, "BloodShrineOfRats") then
modDB:NewMod("ElementalDamageGainAsChaos", "BASE", m_floor(30 * shrineEffectMod), "Blood Shrine of Rats")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

[P1] Include Waxen Soul's reserved-life Shrine Effect

These values use the shared shrineEffectMod, but Waxen Soul's PerStat(LifeReservedPercent) lookup receives a nil skill config before per-skill and aggregate reservation values are populated, so it contributes zero. With Waxen Soul and a Blasphemy curse reserving life, a focused reproduction keeps Rats at 30% instead of floor(30 * 1.14) = 34%; all five Blood Shrines are affected, and direct inspection predicts the same shared, potentially pre-existing omission for ordinary Shrines. Could the reservation-derived portion be made available here or applied after reservation, while preserving Massive Shrine's early life-pool dependency, and covered with both Blood and ordinary Shrine cases? Manual UI behavior was not exercised; the calculation failure reproduces headlessly.

AI-assisted review disclosure: This finding was identified during a review using OpenAI Codex and confirmed with a focused reproduction.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature, calculation, or mod

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants