Restore scenario ult values after Back To Basics battle calculation
The augment branch zeroed battletheoryR on the shared battleSet scenarios
and never restored it. The no-items baseline was computed before that
write, so later item evaluations lost the Ult AOE scenario's damage, most
items scored negative, and the build search collapsed to ~14 builds.
Record the original values and restore them at the end of
Calculate_Battle, plus a regression test.
Show damage score as a multiplier instead of a percentage
The damage score is a priority-weighted sum of (withItems / noItems - 1).
Shown as a percent it reads as inflated values (e.g. 28205%). Priorities sum
to 1, so 1 + score is the average damage multiplier versus no items; display
that as e.g. 3.83x on the top build card and the Compare score row.
Reset item stats before rebuilding the no-items baseline
Calculations_Without_Items() called addItemsToBuild([]) without clearing the
item registry first, so the last evaluated build's items were folded into the
"no items" baseline. Comparing a build against that baseline gave a damage
score of 0 (and skewed the Compare tab's details after any prior evaluation).
Add the same reset Compare_Relative_to_No_Items already performs, plus a
regression test that the refreshed baseline evaluates a build identically.
Show Lee Sin W shield in the W breakdown
Scale Lee Sin's W shield by the scenario's actual W casts and record the
total shield in Heal_Shield.W. Pass it through the damage scenario as
healShield and show the W row when it has a heal/shield value, even when
W deals no damage.
Implement Upgrade Stormsurge Mayhem augment
Squall blasts also hit the area around each enemy, dealing 10% max HP
plus 2% per 100 AP as magic damage, scaled by Stormsurge proficiency.
Adds unit tests for the upgrade math.
Also narrow the ItemId set in build-ranking.spec.ts to numeric ids so
the spec type-checks.
Treat Draw Your Sword as melee in the damage model
Draw Your Sword makes the champion melee in game (Arena and ARAM Mayhem).
Set the calculated melee flag from the augment so proficiency, champion
stats and item restrictions agree. Ranged-only Runaan's Hurricane is now
rejected with the augment. The Melee toggle in settings is unchanged.
Fix Mayhem augments that disagree with the wiki
- The Boom and the Bass: ranged champions use the 25-100 base with
+25% bonus AD and +15% AP instead of the melee scaling.
- Mercy's Strike: grant +300 range and +75% bonus AS while the
empowered attack is pending.
- Mind to Matter: cap the bonus health at 99,999.
- Add specs for ranged Boom and Mercy's Strike range/AS.
Add 26.21 Mayhem augments and fix augments against the wiki
Adds proc augments (Armored Impact, Sap Magic, BEES!!!, Salvation, Third
Times the Harm, etc.) and updates scraped Mayhem augment data.
Audited implemented augments against the wiki's MayhemAugmentData:
- Tickle Monster, No Mana No Problem, Gift of the Drowned now remove the
converted stat (bonus AD, item mana, bonus health)
- Juiced 7%/5.6% max mana with crit; Magic Missile procs per cast
- From Beginning to End and Symphony of War use the Mayhem rune values
- Firebrand burns stack; Glass Cannon uses pre-mitigation damage
- Third Times the Harm ranged values, Critical Rhythm stacks per crit,
Upgrade IE average Excoriate roll with no crit chance, Mighty Shield
uptime, Phenomenal Evil +40 starting stacks, Upgrade Immolate 12 gold,
Infernal Conduit AD ratio
- Remove augments disabled in game: Adamant, Perseverance, Quantum
Computing, Vampirism, Void Dash, Snap Back, Double Strike
Make build ranking test independent of auto-updated data
The ranking spec pinned exact top-20 builds and scores, so every
[AUTO] JSON refresh failed it and kept master red. The determinism
checks already compare full results across two scans and stay.
- Replace exact top-20 snapshots with checks that hold for any data
version: non-empty builds, at most 7 items, known item IDs
- Replace fixed score snapshots with finite, positive checks
- Remove the golden snapshot file
Fix NA account lookups and clarify rate-limit errors
- Account lookups now go to the Riot cluster for the selected region
(Americas for NA) instead of always Europe
- Rate-limit messages say whether the limit came from Riot or from the
lookup proxy, so it's clear what to wait for
- The lookup proxy only forwards the Riot endpoints the app uses, and
limits requests per client
Speed up homepage search and lazy-load champion presets
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Fix Lich Bane AS uptime, Dusk and Dawn on-hit procs, Kayle passive ramp
- Lich Bane: +50% AS now applies only to Spellblade attacks (scenario procs,
capped by 1.5s ICD) instead of assuming a proc every 1.5s
- Dusk and Dawn: extra on-hit per Spellblade proc, not once per fight;
also re-applies Kayle's E on-hit
- Kayle: passive starts at 0 stacks (no minion pre-stack), Q/E grant stacks
- Update KogMaw ranking snapshot (Lich Bane no longer inflated)
Update build ranking snapshots after the formula corrections.
The locked scores and sample builds changed because the item and rune math changed. The tests were checking the old numbers.
Correct item and rune formulas that were changing build scores.
Lethal Tempo, Spellblade, Force of Nature, Cloak of Starry Night, Kraken Slayer, Blade of the Ruined King, Titanic Hydra, Muramana, Heartsteel, Kaenic Rookern, Shadowflame, Lich Bane, Bramble Vest, Actualizer, and Guardian's Horn now follow the wiki. Legend: Haste no longer shortens your ultimate. A broken gold interpolation no longer ranks a build as if the gap were zero.
Stop retrying Riot 429s when Retry-After is missing.
A null header became a 0s wait, so the extra fetch hit the shared proxy key immediately.
Allow multiple hydras during Ultra Hydra quest.
Skip the unique hydra limit when the Mayhem quest is active so a second hydra in inventory does not empty the scan. Guard live-client skill-order reads when abilities are missing.
Throttle Riot API calls and skip 429 retries.
Serializes proxy requests and honors Retry-After so game two does not burn the rate limit with parallel league lookups.
Migrate to lol wiki for mode balance stat overrides, add arena mode stat overrides, expected enemy build are always 6 items, enemy stats don't have runes in non-runes modes.
Replace the Meraki champion scrape with League wiki ChampionData parsing, including a new Lua table parser, Arena schema/output, and updated ARAM/Arena mode overrides. This also normalizes scraped expected builds to six non-Tear items, applies Arena stat modifiers in combat calculations, and clears enemy runes in special modes like Arena and ARAM Mayhem.
Scrape popular builds from op.gg and lolalytics.
League of Graphs answers the CI runner with a Cloudflare challenge. Those two sites return the build page.
