Skip to content

SabineWren/Quiver

Repository files navigation

Important

$${\color{red}* \color{orange}* \color{yellow}*}$$ Installation Methods $${\color{yellow}* \color{orange}* \color{red}*}$$

Use /Quiver or /qq to open the configuration menu.

Features

Aspect Tracker

Never lose track of your current aspect

None Pack Cheetah
  • No UI while in Aspect of the Hawk
  • Displays Hawk texture when no aspect enabled
  • Shows border while Pack active (potentially other hunters)

Auto Shot Timer

Shooting

Reloading

Inspired by:

  • HSK -- Ignores instant spells such as Arcane Shot
  • YaHT -- Resets swing timer while casting a shot

Castbar

  • Shows Aimed Shot, Multi-Shot, and Steady Shot

Lua Functions

CastNoClip

Cast spell by name if it won't clip a shot. Requires the Auto Shot module enabled in the config menu.

/script Quiver.CastNoClip("Steady Shot")

CastPetAction

Find and cast pet action if possible.

/script Quiver.CastPetAction("Furious Howl"); CastSpellByName("Multi-Shot")

FdPrepareTrap

  • Spammable FD-Trap macro
  • Checks: FD CD, Trap CD, is-player-in-combat, is-pet-in-combat
  • Casts: FD, petPassive, petFollow
/script CastSpellByName("Frost Trap"); Quiver.FdPrepareTrap()

Warning

this will pull your pet even if you're stunned etc.

GetSecondsRemainingReload

GetSecondsRemainingShoot

Timing functions return true/false (isShooting/isReloading) and the time remaining (zero if false).

-- This macro detects when the auto shot timer bugs out by more than
-- 0.25 seconds, and switches from CastNoClip to CastSpellByName.
-- Steady Shot can hang a while before firing, so tune the cutoff.
/script local a, b = Quiver.GetSecondsRemainingShoot(); local c = a and b < -0.25; local f = c and CastSpellByName or Quiver.CastNoClip; f("Steady Shot")

PredMidShot – Low level predicate for no-clip behavior. Used internally to implement CastNoClip.

/script if not Quiver.PredMidShot() then DEFAULT_CHAT_FRAME:AddMessage("Reloading") end

Range Indicator

  • Based on Egnar
  • Automatically locates action bar slots
  • Warns you when abilities missing from action bar

Requires corresponding spellbook abilities on your action bars. Hidden action bars work fine, but macros are ignored.

Tranq Shot Announcer

Shows the Tranquilizing Shot cooldown of every hunter. Announces when casting Tranq, and again if the shot misses.

Trueshot Aura Alarm

None Expiring

This checks if you have Trueshot Aura talented. If so, Quiver tracks the buff and duration, and warns you to recast it.

Installation

Option 1 - Pre-bundled release zip

Simplest installation, but doesn't automate version updates.

  1. Download latest version
  2. Extract the Zip file
  3. Change the folder name from Quiver-x.x.x to Quiver
  4. Move folder into <WoW install>/Interface/AddOns/
  5. Restart WoW

Tip

Release zip filenames ends with a version -x.x.x and contain the file Quiver.bundle.lua.

Option 2 - Clone latest release

Requires Git. Easy to update with addon managers or git pull --rebase

  1. Open a terminal in your addons directory
  2. git clone https://github.com/SabineWren/Quiver --branch latest-release
  3. Restart WoW

Tip

If you download Quiver through an addon manager, it may default to source code. Change the branch to latest-release.

Addon managers do not warn you about breaking changes. See the changelog or release notes after updating.

Option 3 - Build from source

Do you live on the bleeding edge?

  1. Open a terminal in your addons directory
  2. git clone https://github.com/SabineWren/Quiver
  3. npm install
  4. npm run bundle-once
  5. Restart WoW

Contributing

Localization

Quiver is fully localized. If you want to contribute a new locale, see zhCN for reference in /Locale/:

  1. <locale>.client.lua for values that exactly correspond to the client, ex. "Multi-Shot". Should be identical values to what other addons use.
  2. <locale>.translations.lua for Quiver-specific text that requires translation.

Dependencies

Type definitions are gitignored, so clone them separately.

See package.json for everything else.

Custom Events

Files in /Events hook into game functions. Use these events if possible instead of declaring your own hooks.

  • Spellcast: CastSpell, CastSpellByName, UseAction

Module Lifecycle

Feature are packaged and enabled as 'modules' that implement lifecycle hooks. See the type definitions for details.