promotional bannermobile promotional banner

Vantage Point

Tracks enemy abilities by combat log and can expose this data to other addons.
Browse mob database

Browse mob database

Track enemy ability cooldowns

Track enemy ability cooldowns

Description

VantagePoint

Enemy ability tracker and predictor for dungeons. Install it, run dungeons, and VantagePoint does the rest. No configuration needed.

VantagePoint learns enemy ability patterns as you play. After a few pulls it shows ability timers on your target frame: countdowns for time-based casts, HP thresholds for enrages and heals, and flags for interruptable, reflectable, and stunnable abilities.

What You See

  • Ability icons on your target with real-time countdowns that turn red when a cast is imminent
  • Dungeon browser (/vp) to browse every NPC and ability you have encountered, grouped by dungeon, with timing data and combat flags
  • Smart predictions that distinguish time-based casts from HP-triggered abilities automatically
  • Combat interaction flags showing [K] interruptable, [R] reflectable, [S] stunnable, all evidence-based from your own combat logs

How It Works

VantagePoint observes enemy casts through the combat log and builds NPC profiles over multiple encounters. It tracks first-cast timers, cooldowns, HP thresholds, and combat interactions (interrupts, stuns, reflects). Data persists across sessions and gets more accurate over time.

Note: First-cast timers are most accurate when you are present from the pull.

Commands

  • /vp opens the dungeon browser
  • /vp display toggles the combat ability frame
  • /vp help lists all commands

API for other Addons

VantagePoint exposes a read-only public API through the global VantagePointAPI table. Other addons can query live predictions, NPC profiles, and combat interaction flags.

Getting Started

if not VantagePointAPI then return end -- VantagePoint not loaded

Live Predictions (during combat)

local guid = UnitGUID("target")
local preds = VantagePointAPI.GetPredictions(guid)
if preds then
    for spellID, pred in pairs(preds) do
        -- pred.status:      "EXPECTED_SOON" | "ON_COOLDOWN" | "UNKNOWN"
        -- pred.timeUntil:   seconds until next cast (nil for HP triggers)
        -- pred.hpThreshold: HP fraction 0.0-1.0 (nil for time triggers)
        -- pred.triggerType: "TIME" | "HP" | "UNKNOWN"
        -- pred.confidence:  0.0-1.0 (higher = more observations)
        -- pred.spellID:     number
        -- pred.spellName:   string
    end
end

NPC Profiles (persistent, works out of combat)

local npcID = tonumber(UnitGUID("target"):match("%-(%d+)%-[^%-]+$"))
local profile = VantagePointAPI.GetNpcProfile(npcID)
if profile then
    for spellID, ability in pairs(profile.abilities) do
        print(ability.spellName
            .. " | first cast: " .. (ability.avgFirstCast or "?") .. "s"
            .. " | cd: " .. (ability.knownCooldown or ability.avgCooldown or "?") .. "s"
            .. " | trigger: " .. ability.triggerType)
    end
end

Combat Interaction Flags

-- Can this spell be interrupted?
local kickable = VantagePointAPI.IsSpellInterruptable(npcID, spellID)
--   true  = confirmed interruptable (a successful kick was observed)
--   false = confirmed NOT interruptable (kick dealt damage but cast continued)
--   nil   = unknown

-- Is this NPC stunnable?
local stunnable = VantagePointAPI.IsNpcStunnable(npcID)
--   true = confirmed (a stun debuff landed successfully)
--   nil  = unknown

-- Can this spell be reflected?
local reflectable = VantagePointAPI.IsSpellReflectable(npcID, spellID)
--   true = confirmed (Spell Reflection reflected this spell)
--   nil  = unknown

All flags are evidence-based: VantagePoint only reports what it has seen in combat. IsSpellInterruptable is the only function that returns false. This happens when an interrupt dealt damage but the cast was not stopped, proving the spell itself is non-interruptable. Stun and reflect never return false because absence of evidence is not evidence of absence.

Additional Queries

-- Single ability profile
local ability = VantagePointAPI.GetAbilityProfile(npcID, spellID)

-- All profiles for a dungeon/raid zone (by instanceMapID)
local profiles = VantagePointAPI.GetProfilesByZone(zoneID)

-- Database stats
local npcCount = VantagePointAPI.GetProfileCount()
local abilityCount = VantagePointAPI.GetAbilityCount()

Display Suppression

If your addon provides its own ability display, you can suppress VantagePoint's built-in frame:

VantagePointAPI.consumers = VantagePointAPI.consumers or {}
VantagePointAPI.consumers["YourAddonName"] = true   -- suppress
VantagePointAPI.consumers["YourAddonName"] = nil    -- release
-- User can always re-enable with /vp display

The Vantage Point Team

profile avatar
  • 2
    Projects
  • 1.1K
    Downloads

More from luuk6999

  • Tank Suite: WaRo project image

    Tank Suite: WaRo

    • 1.0K
    • Addons

    Tank suite, main focus is lightweight. Features real-time threat, priority monitoring, and an adaptive engines.

    • 1.0K
    • May 31, 2026
    • Addons
    • +3
  • Tank Suite: WaRo project image

    Tank Suite: WaRo

    • 1.0K
    • Addons

    Tank suite, main focus is lightweight. Features real-time threat, priority monitoring, and an adaptive engines.

    • 1.0K
    • May 31, 2026
    • Addons
    • +3