v3.0.0-alpha15
Pre-release
Pre-release
·
8 commits
to main
since this release
ReforgeLite Classic
v3.0.0-alpha15 (2026-06-18)
Full Changelog Previous Releases
- fix tooltip stat parsing on non-comma locales
getTooltipPatterns hardcoded [%d,] for the stat value, so it only
handled the enUS thousands separator. On deDE (separator '.') a value
like '+1.038 Willenskraft' captured just '1' and failed the match,
leaving the stat undetected -- corrupting GetItemStatsFromTooltip for
upgraded items (wrong reforge, and a stuck reforge from the bad index
count in DoReforgeUpdate). Build the digit class from the client's
LARGE_NUMBER_SEPERATOR so it works on every locale. - make GetStatScore iterate caps instead of hardcoding two
- avoid per-branch stat-table copy in B&B search
Apply each reforge to currentStats in place and undo it after recursing,
instead of CopyTable-ing the whole stat table for every branch. Search
is unchanged (same node count, same result == DP); per-node cost drops
~8% from eliminating the per-option allocation. - remove dead GetSmartReforgeOptions
B&B now uses GetFullReforgeOptions exclusively; the old smart-options
generator and its references are gone. - add best-effort B&B pass for infeasible cap configs
When the caps are unreachable (e.g. Hit AtMost below the reforge floor),
the constrained search prunes every branch and finds no solution, which
previously dropped to the full DP (~6min). Add a second pass with
constraint pruning relaxed: every complete path becomes a candidate and
the score bound keeps the highest-scoring (closest) one. Validated to
return the exact same best-effort solution as the DP (matching score) in
623 nodes vs the DP's 367s. - make Branch & Bound exact with a tighter joint bound
B&B previously searched only GetSmartReforgeOptions (one source stat per
item plus a few destinations), which excludes reforges the optimum needs
-- so it returned suboptimal results. Switch to full reforge enumeration
(GetFullReforgeOptions, deduped by cap effect) so B&B searches the same
space as the DP and reaches the true optimum.
To keep that tractable, add a joint per-item upper bound: each remaining
item is credited only its single best reforge (score + linear cap gains),
which is far tighter than the old frankenitem bound that summed
independently-maxed score/cap1/cap2 a single reforge can't all achieve.
Both bounds are kept and pruned on the min. Validated equal to DP on a
dual-AtLeast case in ~1/4 the time. Also guard a debug-only nil deref
when no feasible solution exists. - delete whitespace
- fix amplification factor and trim rpp table
Derive the Amplify equip bonus from the actual in-game spell (146051,
coefficient 0.00177 on the Epic_0 budget) and floor to match the
truncated tooltip percent, replacing the Round(rpp/420) approximation
that overshot at ilvl 528 (1.06 vs 1.05). Move the logic into
GetAmplificationFactor, and trim RandPropPoints to the single Epic_0
value per ilvl since that column was the only one ever read. - method window height is now dynamic
- cata: include ranged slot in calc
- grant contents:write so packager can create GitHub releases
The default GITHUB_TOKEN is read-only on newer repos, which would block
release creation; explicit permission ensures the tag release and zip
asset are published. - add GitHub Actions workflow to package and release on tag push
Runs the BigWigs packager on tag push (same release.sh path proven
working locally), uploading to CurseForge via CF_API_KEY and creating
a GitHub release via the built-in GITHUB_TOKEN. - add release to git ignore
- fix cap optimizer targeting 1 below displayed cap
The engine re-derived preset cap values with floor() while the UI
display/storage used ceil(), so the optimizer solved for AtLeast 960
when the cap shown was 961. Align the engine to max(0, ceil(getter())). - use currentlocale
- ignore release folder
- cleanup
- refresh conversion before running calc
- moved locales folder
- unused in cata
- revert
- test
- rename root file
- rename cata toc