Skip to content

fix(buff): implement QueueLogic for single-stack duration boons - #244

Merged
Roddygithub merged 3 commits into
mainfrom
fix/queue-logic-single-stack-boons
Aug 18, 2026
Merged

Roddygithub merged 3 commits into
mainfrom
fix/queue-logic-single-stack-boons

Conversation

@Roddygithub

Copy link
Copy Markdown
Owner

Implements Elite Insights' QueueLogic for 11 single-stack duration boons:

  • Boons: fury, quickness, alacrity, protection, vigor, aegis, swiftness, resistance, resolution, superspeed, stealth
  • Capacity: 9 (from BuffInfo statechange 30, was hardcoded 99/5)
  • Behavior: Only front stack counts toward uptime; overflow drops shortest duration (not front); extensions graft onto closest duration match

Refactors _advance into _advance_single, _advance_queue, _advance_intensity to reduce cyclomatic complexity (ruff PLR0912/PLR0915).

Addresses BACKLOG items:

  • Read buff capacities from the log (alacrity logs declare 99, we defaulted to 9)
  • QueueLogic parity for single-stack boons

All checks pass: ruff, mypy, pytest (341 tests).

- Add QueueLogic for 11 single-stack duration boons (fury, quickness,
  alacrity, protection, vigor, aegis, swiftness, resistance, resolution,
  superspeed, stealth) with capacity 9 per Elite Insights
- Only front stack counts toward uptime; overflow drops shortest duration
  (not front); extensions graft onto closest duration match
- Refactor _advance into _advance_single, _advance_queue, _advance_intensity
  to reduce complexity (ruff PLR0912/PLR0915)

Addresses BACKLOG: buff capacities from log (alacrity logs declare 99, was 9)
and QueueLogic parity for single-stack boons.

Signed-off-by: Roddy <r.salardon@gmail.com>
Signed-off-by: Roddygithub <roddygithub@users.noreply.github.com>
Signed-off-by: Roddygithub <roddygithub@users.noreply.github.com>
@Roddygithub
Roddygithub enabled auto-merge (squash) August 18, 2026 10:06
…nsity remove_single

QueueLogic apply and BuffApplyEvent stored absolute expiry
(time_ms + duration_ms) while _advance_single/_advance_queue treat
expirations as remaining durations, breaking fury/boon uptime tails and
extension grafting. Store duration_ms directly and graft extensions by
abs(remaining - old_duration).

The QueueLogic refactor also replaced the intensity remove_single branch
(elif event.stacks) with max_stacks==1, so might/stability removes no
longer decremented stacks. Restore it, keeping the duration-fallback
lookup for max_stacks==1 and index-0 for intensity.

Signed-off-by: Roddy <r.salardon@gmail.com>
@Roddygithub
Roddygithub merged commit 5beb115 into main Aug 18, 2026
11 checks passed
@Roddygithub
Roddygithub deleted the fix/queue-logic-single-stack-boons branch August 18, 2026 15:12
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