promotional bannermobile promotional banner

AldorTax

A method to share when the Aldor lift will leave to avoid falling to your death

File Details

v0.9.3

  • R
  • May 12, 2026
  • 339.39 KB
  • 6
  • 11.1.0+3
  • MoP Classic + 3

File Name

AldorTax-v0.9.3.zip

Supported Versions

  • 11.1.0
  • 5.5.0
  • 2.5.5
  • 1.15.8

tag da4e2f9d2a4814ff9423d2db24e95d7c5881717f v0.9.3
Author:    Magnus Vikan <dizzi90@gmail.com>
Date:    Tue May 12 01:59:47 2026 +0200

v0.9.3 — universal fall-save alert + Colossal Parachute

Bug fixes:
- Fall-save alert no longer strands on screen after zoning out of a lift area
- Fall-save alert now fires anywhere (e.g. Feralas), not only near a lift
- Colossal Parachute (item 10684) now surfaces as a usable fall-save

Rolled-up unreleased changes since v0.9.2:
- Recalibrate tblift epochOffset (12.54 -> 12.35), based on settled clicks
  2026-04-22..2026-05-07 (n=3, circular sd 0.82s)
- Phase 3 of the UI reform: FallUI module built (Show/Hide/SetMode) but
  still unwired into ReconfigureLift / UpdateSyncUIVisibility (Phase 5)

commit 7a3e547277f6696a34e3f4b64387b7780295e6e4
Author: Magnus Vikan <dizzi90@gmail.com>
Date:   Tue May 12 01:59:30 2026 +0200

    Release v0.9.3: universal fall-save alert + Colossal Parachute

    Three fall-save-mitigation fixes driven by today's reports:

    1. Alert never dismissed after zoning out. The hide path (IsFalling-edge
       and 4s auto-dismiss) lived inside the activeLiftID early-return guard,
       so zoning to a non-lift area while the alert was up stranded it on
       screen indefinitely. Hoist the whole fall-save state machine above
       the early-return.

    2. Alert wouldn't fire outside a lift zone (e.g. Feralas hill). The show
       path was gated by `def.deathZones` and `st.isNearLift/isApproaching`.
       Drop both gates — alert now fires on any IsFalling rising edge,
       anywhere. The 4s auto-dismiss bounds nuisance from short hops.

    3. Colossal Parachute (item 10684) wasn't in the FALL_SAVES table, so
       players carrying one never saw it surface. Add it as a universal
       consumable just above Noggenfogger (vendor-bought, no random effect,
       so it ranks ahead of the elixir) for every class that already had
       Noggenfogger as a fallback.

    Also rolling up two earlier unreleased commits on main:
    - 105b51c Recalibrate tblift epochOffset from 12.54 to 12.35
    - 59267e0 Phase 3: implement FallUI Show/Hide/SetMode for fall lifts
      (frame is built but still unwired — Phase 5 plumbs it in)

    All 64 tests pass.

    Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

commit 59267e0a66a3270081236ebb010c2c2e9a9ef9ba
Author: Magnus Vikan <dizzi90@gmail.com>
Date:   Mon May 11 15:42:57 2026 +0200

    Phase 3: implement FallUI Show/Hide/SetMode for fall lifts

    Fills in the three no-op stubs of the FallUI module parked in ae46bda.
    The frame is still unwired (no ReconfigureLift / UpdateSyncUIVisibility
    hook — that's Phase 5); the legacy BuildSyncUI / syncUI remains the
    active surface in-game. This change only makes the public API contract
    real so post-Phase-4 specs and Phase 5 plumbing have something to talk
    to.

    Dual-perspective walkthrough
    ----------------------------
    World (what the player already sees): Standing on Aldor Rise, the lift
    platform is visible at the south edge of the disc — cables, timber
    deck, audio cue on cycle. From the Terrace of Light the cables are
    still visible but not the platform's phase. From across Shattrath the
    lift is gone from sight entirely. Stormspire and SSC are similar: near
    the door you can see and hear the chamber; mid-range you only know
    the structure is there. The world gives geometry, architecture, audio,
    and rough timing-by-eye.

    Addon (what only we know): the exact phase boundary — when the
    platform crosses FALL→BOTTOM (the safe-step window) or RISE→TOP. The
    precise countdown to that transition. Who in the broadcast group
    anchored the sync. None of this is visible from the world: the
    platform looks the same in the last 0.5s of FALL and the first 0.5s
    of BOTTOM, but the consequence of stepping on differs by tens of
    meters of damage. FallUI surfaces only that hidden phase information
    and does so progressively — dense (segmented bar + sweep) when the
    player is on the platform deciding now, minimal (lift name + ETA)
    when they're walking toward it and only need the next cycle boundary.

    Design decisions
    ----------------
    * Light-mode click target: plain OnMouseUp handler, not a secure
      SecureActionButton. PerformCalibrationClick is Lua-only and not
      combat-restricted; a secure binding would add complexity without
      capability. The feedback memory's "prefer type=macro+macrotext"
      guidance applies when going secure is required — here it isn't.

    * Sync button (full mode only): UIPanelButtonTemplate labeled
      "Say Warning", mirroring syncUI.sayBtn so muscle memory carries
      over. The bar segments already provide phase-specific sync clicks;
      the button broadcasts the current sync to /say via the existing
      /atax say slash dispatch. Hidden in compact and light modes to
      reduce footprint.

    * Compact-mode dimensions: bar 280×22, frame 304×56. Light-mode
      frame 160×36 — just enough for one fontstring with the lift name
      ("Aldor Lift") and breathing room. Full-mode is 484×94 to match
      the legacy syncUI's footprint so cross-mode visual scale is stable.

    * Frame positioning: persisted to AldorTaxDB.fallUIPos via GetPoint()
      on drag-stop. Different key from syncUI.windowPos so the two frames
      don't fight over the same saved point during the unwired interim.
      Default anchor TOP UIParent TOP 0 -160 (offset from syncUI's -120
      so they're visually distinct if both end up shown).

    * Hide() releases per-lift state: curLiftID → nil, barBg._w → 0.
      Layout recomputes from scratch on every Show() (segment widths are
      not cached past Hide), so Show("aldor") → Show("stormspire") →
      Hide() → Show("aldor") yields identical _w/_h/barBg._w to the
      first Show. Verified by ad-hoc smoke test against the contract in
      spec_post_phase4_ui_transitions.lua.

    Verified: all 64 tests still pass (35+15+9+5), post-Phase-4 spec
    still self-skips as expected.

commit 105b51ce2f5d7ffddd5434714987091997c04f77
Author: Magnus Vikan <dizzi90@gmail.com>
Date:   Mon May 11 15:38:06 2026 +0200

    Recalibrate tblift epochOffset from 12.54 to 12.35

    Circular mean of South settled clicks 2026-04-22..2026-05-07 (n=3, sd≈0.82).
    A second cluster at ~23.8 (n=3, ~11.5s offset) appears on Apr 25 / May 4 —
    likely a different physical platform or mis-identified bar, not folded in.
    Source: SavedVariables timing samples on PODKAST.

commit ae46bda2f7ba56c49ca2941d2b7443fec7da977d
Author: Magnus Vikan <dizzi90@gmail.com>
Date:   Sun May 10 17:08:00 2026 +0200

    Phase 3 scaffold: park AldorTaxFallUI frame + tblift_south texture

    Parks the FallUI module section below BuildSyncUI: creates the
    AldorTaxFallUI frame (hidden), exposes no-op Show/Hide/SetMode stubs,
    and annotates each with the Phase 3 build-out contract. The legacy
    BuildSyncUI / syncUI remains the active surface until Phase 5.

    Also commits tblift_south.tga, the dual-lift background texture
    already referenced at LIFTS.tblift.dualBgTexture (line 205).

    Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

commit 7203008d69f39abfc6ebeb893b5941a586fd66be
Author: Magnus Vikan <dizzi90@gmail.com>
Date:   Sat May 9 18:13:28 2026 +0200

    Release v0.9.2: fix v6 backward-compat — accept v3-v6 on receive side

    v0.9.1 bumped MSG_VERSION to 6 to identify clients with the fixed
    BroadcastSync srvPhase math. The receive guard (ver > MSG_VERSION) made
    v0.9.0 clients silently drop all v0.9.1 messages, breaking sync in
    mixed-version groups.

    Fix: replace the > MSG_VERSION guard with an explicit set of known-good
    versions (3-6). The send side stays at v6. Wire format is unchanged.

    Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>