promotional bannermobile promotional banner

Lapper - Lap counter

A lightweight lap timer for your WoW hamster wheel.

File Details

Lapper2.1.zip

  • R
  • Mar 9, 2026
  • 17.01 KB
  • 10
  • 12.0.1
  • Retail

File Name

Lapper2.1.zip

Supported Versions

  • 12.0.1

Changelog


v2.1

Lap timeout and timer safety

Lap Timeout

  • A lap is now automatically abandoned if no gate is touched for 30 minutes
  • All in-progress lap state is cleared (gates hit, pip indicators, overlays) and gate overlays reset to their active state
  • A chat message is printed when the timeout fires (respects the Notifications toggle)
  • The 30-minute clock resets on every gate touch — only counts idle time between gate crossings

Timer Overflow Protection

  • FmtTime now clamps all time values to \[0, 30 minutes\] before formatting — displayed times can never be negative or exceed the timeout ceiling
  • Lap times recorded in FinishLap are clamped at the same bounds before being saved to bestLap — no impossible times can enter saved data
  • The /lap debug elapsed time display inherits the same clamp via FmtTime

Internal

  • Added lastGateTime state variable — tracks GetTime() of the most recent gate touch
  • lastGateTime is cleared in all reset paths: /lap reset, Reset Stats confirmation, and the new timeout handler
  • Added LAP\_TIMEOUT = 1800 constant

v2.0

Settings panel overhaul and UI polish

Settings Panel — Layout

  • Rebuilt the entire settings panel layout from scratch using a shared column grid
  • All sections (Gates, Gate Colours) now share the same column positions — headers align top-to-bottom across sections
  • All content has equal left and right padding — right edges of every row are flush across the full panel
  • Panel width reduced from 560px to 490px, auto-fit to content
  • Removed dark background bands from sub-section headers — cleaner, lighter appearance
  • Panel height auto-calculated from content cursor position

Settings Panel — Gate Overlay Section

  • Added X/Y position boxes showing the current overlay offset — always populated on login from saved data, no longer blank until first move
  • Added Set button — type X/Y values directly and apply them
  • Added Center H and Center V buttons — snap overlay to horizontal or vertical screen centre independently
  • Added x1 label restored to nudge row; nudge buttons aligned with position boxes above
  • Reset button moved from the position row to the end of the nudge row
  • All overlay section content uses the available panel width with consistent spacing

Settings Panel — Gate Colours Section

  • Colour swatches are now 1:1 squares (22×22px) matching button height
  • R/G/B column positions aligned with X/Y/SetP columns in the Gates section

Settings Panel — Gates Section

  • Gate colour swatches span full row block height and align flush with name boxes

ElvUI Colour Hook

  • Text colours are now derived from the ElvUI theme at login
    • textHi (section titles) scales with backdrop brightness
    • textMid (row labels) scales with backdrop brightness
    • textDim (column headers) scales with backdrop brightness
  • Previously all text used hardcoded grey values regardless of ElvUI theme
  • Introduced TH() / TM() / TD() style sheet helpers — all label sites in the settings panel use these consistently

Bug Fixes

  • Fixed RefreshOverlayBoxes scoping error (nil call on login) — forward-declared as a module-level upvalue so it is visible to LoadOverlayOffset which runs at PLAYER\_LOGIN
  • Fixed overlay X/Y boxes not showing saved position until the panel was manually opened — boxes now populate immediately after saved data is loaded

v1.0

Initial release

Core Detection

  • Four-gate lap detection — any gate starts and any order completes a lap
  • 3-second per-gate cooldown prevents double-counting
  • Mid-lap state saved per character and restored on reload
  • Pending lap finish mechanic — all four gates must be crossed before a final crossing records the lap
  • Detection scoped to a configurable zone map ID (default: 2393)

HUD

  • Compact flat draggable panel
  • Live lap timer, last lap time, personal best, character count, account-wide total
  • Four gate progress pips that light up in gate colour as each checkpoint is crossed
  • Close button; reopenable with /lap show

Gate Overlay

  • Four screen-space gate bars rendered as coloured labelled lines
  • All gates move as a single unit — drag any bar or label to reposition
  • Overlay offset saved per character and restored on login
  • Gate bars fade when crossed during a lap; restore on lap completion or reset
  • Show/hide toggle in settings

Settings Panel

  • Gate names, P1/P2 coordinates (set from current position or typed manually), per-gate Apply
  • Sensor width and zone map ID
  • Gate colours with R/G/B input, live swatch, Apply and Default per gate
  • Chat notification toggle
  • Reset Gates and Reset Stats (with confirmation)

Persistence

  • Per-character: coordinates, colour overrides, HUD position, overlay offset, lap counts, best lap, mid-lap state
  • Account-wide: total laps, per-character bests, zone map ID, sensor width

ElvUI Integration

  • Auto-detects ElvUI; reads backdrop, border, and accent colours
  • Falls back to neutral defaults without ElvUI

Slash Commands

  • /lap, /lap hide, /lap settings, /lap reset, /lap stats
  • /lap mycount, /lap acctcount, /lap debug, /lap help, /lapper