Skip to content

Add opt-in Full DPS auto-count for Totem skills#9849

Open
mcagnion wants to merge 1 commit into
PathOfBuildingCommunity:devfrom
mcagnion:feature/full-dps-auto-max-totems
Open

Add opt-in Full DPS auto-count for Totem skills#9849
mcagnion wants to merge 1 commit into
PathOfBuildingCommunity:devfrom
mcagnion:feature/full-dps-auto-max-totems

Conversation

@mcagnion
Copy link
Copy Markdown
Contributor

@mcagnion mcagnion commented May 12, 2026

Description of the problem being solved:

Power Report, Compare tab, anoint sorting, trade query scoring and similar comparison tools all read Full DPS to evaluate "what does this change buy me?". For Totem skills, a source of +1 to maximum number of Summoned Totems only contributes to Full DPS today if the user remembers to bump the manual skill Count on every relevant socket group. Otherwise totem-limit sources are invisible to comparison tooling -- e.g. the anoint dropdown sorted by Full DPS does not surface "Watchtowers" or other "+1 max totem" notables ahead of plain damage notables.

This PR adds an opt-in Configuration option, "Auto-count Totems in Full DPS?". When enabled and the skill's manual Count is 1, the Full DPS loop treats the active count as output.TotemsSummoned or output.ActiveTotemLimit. Manual Count > 1 always wins. Default is off, behavior for everyone else is unchanged. The option is only visible when the build has at least one Totem skill (ifSkillFlag = "totem").

ActiveTotemLimit is a global slot pool, so auto-counting is only safe when a single Totem skill is included in Full DPS. With multiple Totem skills included, applying the global limit to each one would overcount the same slots; in that case auto-scaling is suppressed and each skill keeps its manual Count. The tooltip states this limitation, and a regression test covers the multi-source case.

Steps taken to verify a working solution:

  • Targeted busted spec passes: spec/System/TestFullDPSAutoTotems_spec.lua -- 6 successes, 0 failures, 0 errors. The spec covers: default-off keeps SkillDPS.count = 1; option-on scales by ActiveTotemLimit for a single Totem source; manual Count > 1 wins; the output.TotemsSummoned config override wins over output.ActiveTotemLimit; and auto-scaling is suppressed when more than one Totem socket group is included in Full DPS, so each skill keeps its manual Count.
  • Manual verification on a Totem build (see screenshots below):
    • The new option appears in the Configuration tab only when at least one Totem skill is present in the build.
    • With the option ON and a totem skill at Count 1, the anoint dropdown sorted by Full DPS surfaces "Watchtowers" (+1 max totem) at the top, ahead of damage notables; with the option OFF, "Watchtowers" sinks well below them, as expected.
    • With a manual socket-group Count of 5 on the totem skill, Full DPS reports 5x <skill> and toggling the option has no effect on the value -- manual Count wins.
    • A non-totem skill included in Full DPS is unaffected by the toggle; only the totem skill's count moves.
    • Explosive Arrow Ballista exclusion (not activeSkill.activeEffect.grantedEffect.explosiveArrowFunc) is a single defensive guard so the existing explosiveArrowFunc custom DPS path -- which already accounts for active totems internally -- is not double-counted. Verified by code review against src/Data/Skills/act_dex.lua.

Build used for the screenshots below:

Example totem build (Hierophant): https://pobb.in/-3AWBE9QE4FU. The change itself is not specific to any build -- any build with a single Totem skill marked Include in Full DPS will exhibit the same behavior. Builds with multiple Totem skills included in Full DPS leave auto-scaling suppressed, as documented above.

Anoint Item dropdown sorted by Full DPS, option OFF (baseline -- "Watchtowers" not in the top 6, only damage / crit notables surface):

full-dps-option-off

Same Anoint Item dropdown, option ON ("Watchtowers" jumps to #1):

full-dps-option-on

Configuration tab -- new option in the totem section:

auto-count-totems-option

Add a Configuration option "Auto-count Totems in Full DPS?" that lets
Full DPS treat a Totem skill's count as the build's current
TotemsSummoned (falling back to ActiveTotemLimit) when the skill's
manual Count is 1.

Behavior:
- Default off: Full DPS uses the manual skill Count, unchanged.
- Option on, Count == 1, skill has skillFlags.totem, not Explosive
  Arrow, and exactly one Totem source is included in Full DPS: Full
  DPS uses output.TotemsSummoned or output.ActiveTotemLimit.
- Option on, Count > 1: manual Count wins.
- Explosive Arrow is excluded from scaling because its custom DPS
  function already accounts for active totems, but it still counts
  as a Full DPS totem source for the multi-source guard.
- Two or more Totem sources included in Full DPS (including Explosive
  Arrow): auto-count is suppressed and each skill keeps its manual
  Count, because ActiveTotemLimit is a global slot pool that cannot
  be allocated automatically across multiple sources.

The implementation keeps two predicates intentionally separate:
isIncludedFullDPSTotemSource (broader, used by the source counter)
matches every included Totem skill that occupies a global totem slot;
isFullDPSAutoTotemScalable (narrower, used by the per-skill scaling
gate) additionally excludes Explosive Arrow.

The option is gated by ifSkillFlag = "totem" so it only appears for
builds containing at least one Totem skill, making it useful for
comparison tools (Power Report, Compare tab, anoint sorting, trade
query) to surface "+1 to maximum number of Summoned Totems" sources
in single-totem-source Full DPS setups.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@mcagnion mcagnion marked this pull request as ready for review May 12, 2026 21:41
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