Skip to content

SabineWren/Quiver

Repository files navigation

Important

$${\color{red}* \color{orange}* \color{yellow}*}$$ Installation Instructions $${\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

Quiver exposes timer state (GlobalFunctions.lua). I recommend a no-clip macro:

-- This macro fires Steady Shot unless doing so will interrupt an auto shot.
-- Steady Shot can hang a while before firing, so tune the cutoff (default -0.25).
-- Negative values prevent interrupting, while positive account for latency.
/run local a, b = Quiver.GetSecondsRemainingShoot(); local c = a and b < -0.25; local f = c and CastSpellByName or Quiver.CastNoClip; f("Steady Shot")

Castbar

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

Lua Functions

CastPetAction

Find and cast pet action if possible.

/run 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
-- Standard trap macro for most servers
/run CastSpellByName("Frost Trap"); Quiver.FdPrepareTrap()

-- Workaround for Turtle WoW CC2
/run --CastSpellByName("Freezing Trap")
/run Quiver.FdPrepareTrap(); CastSpellByName("Freezing Trap")

Warning

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

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

This installation option is a manual install (i.e. no automated updates)

  1. Download latest version
  2. Extract folder from the Zip
  3. Rename folder 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 numeric version -x.x.x and contain the file Quiver.bundle.lua. If the name isn't versioned, then you downloaded a source code branch.

Option 2 - Clone latest release

For use with Git updates git pull --rebase or addon managers.

  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. cd Quiver
  4. npm install
  5. npm run bundle-once
  6. 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

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

Possible Codebase Improvements

  • Layout engine 1 2
  • Full type safety
  • FD macro LoseControl integration (state not exposed, and no license provided)

Possible Extra Features

  • Better pet training UI (ex. see Wowhead pet talent calculator)
  • Optional sound alerts (pet happiness, ammo low, pet dismiss)
  • UI to select favourite food per pet. One-button command to feed any pet.
  • Aspect change API with cancellation and debouncing for Cheetah/Pack
  • Quickshots proc watch
  • Warn when pet attacking a different target
  • Stateful action API with current state indicator. ex. cycle between: Tranq Shot and Distracting Shot, pet-passive-follow and pet-passive-stay, mouseover-petattack and target-petattack, etc.