Skip to content

SabineWren/Quiver

Repository files navigation

Important

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

Features

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

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

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. 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

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.