-
v4.5.0 — Enemy summoner-spell cooldowns
StableAll checks were successfulCI / build-and-test (push) Successful in 1m32sreleased this
2026-09-05 21:49:40 -05:00 | 22 commits to main since this releaseAdded
-
Enemy summoner-spell cooldowns in the in-game overlay, driven by the chat
lines your team's scoreboard pings post. Holding Tab and clicking an enemy's
summoner spell writes02:19 Name (Champ): Pantheon Flashto team chat; the
overlay now reads that off the HUD and counts the spell down.Chat is the only signal available. Riot's Live Client Data API publishes no
summoner-cast events and no champion positions, and the Tab scoreboard shows
no enemy cooldowns, so nothing can detect a Flash automatically — a teammate
still has to ping it. What is automated is the duration, which is the part
every manual tracker gets wrong.Three properties of the chat line carry the design. It timestamps itself
with the game clock, so OCR latency is irrelevant — a line read eight seconds
late still yields an exact remaining cooldown, and there is deliberately no
freshness gate (unlike the CS/clock fusion, which has one). That timestamp
also dedupes: the same line is re-read every poll while it sits on screen,
andchampion|spell|timeis stable across those reads. And both fields come
from closed vocabularies — five enemy champions, nine spell names — so
every parse is validated against a known set rather than trusting raw OCR,
which is what makes fuzzy matching safe (Panlheon Fiashresolves; noise
does not). -
Haste-aware durations. Two sources are folded in, and they are not equally
knowable. Ionian Boots of Lucidity (+10) is observed —itemsis
published for every player on both teams, across the base, Arena and Classic
Rift id blocks. Cosmic Insight (+18) is assumed: the live API exposes
only the keystone and the two tree names for other players and never the minor
runes, so the rune is inferred whenever Inspiration appears in either tree.
The assumption is deliberately pessimistic — a timer that expires early is
safe, one that expires late gets you killed — and the overlay marks those rows
with a°and a footnote so an assumed number is never mistaken for a
measured one. Flash therefore reads 5:00, 4:33, 4:14 or 3:54 depending on what
they have: a 66-second spread.Remaining time is derived per snapshot from current haste rather than stored
as a deadline, so an enemy who buys Ionian Boots while Flash is down has the
running countdown shorten itself the moment the boots appear in their
inventory — which is what the game actually does.
Changed
LivePlayerSchemanow carries the payload'srunesandsummonerSpells
blocks (both optional, matching the schema's deliberately lenient posture).- The chat OCR reader thresholds on the value channel (
max(R,G,B)) rather
than the CS reader's luminance. Pure red has a luminance of 76, below the
existing threshold of 130, so a luma pass would have erased exactly the field
that names the champion. regions.jsongains achatbox, calibrated on 3440x1440. It is optional in
the schema, so an older calibration file still loads and simply leaves the
tracker idle.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-