Hammer of Justas
----------------
a World of Warcraft add-on for Paladins
by Justas ( paladin (dot) justas (at) gmail (dot) com )
version 0.93
Copyright (c) 2010-18 by Jonathan E. Wright

Summary
--------
Hammer of Justas is a utility add-on for Retribution and Protection paladins, providing:

- Rotation optimization
- Highly visible holy power meter.
- Highly visible Templar's Verdict indicator.
- An Inquisition timer.
- Buff reminders.
- Cooldown reminders.
- Unique rules based on current paladin role (prot or ret).
- A chat ignore system that allows silent and stealth ignoring and keeps ignored messages in a special history that can be viewed later.
- Easy-to-move invisible windows (just hold control and mouse over a window to unhide it, then click to drag it anywhere).
- Ability to toggle individual windows off if not needed or desired.
- Cooldowns that need to be refreshed are shown on a separate, clickable bar that can be placed anywhere. The add-on is smart enough to only show some of these skills when an enemy is targeted, so that it's not constantly nagging about them in towns, etc.
- Interoperable with OmniCC. If OmniCC is not available HoJ will show its own cooldown text in some places, otherwise it will let OmniCC do it.

All meters and reminder windows are easy to move around (hold control and mouse over, click to drag) so that they can be placed anywhere on the screen, and easily adjusted for different scenarios (for instance raids vs. PvP).

NOTE: Protection mode is disabled right now because I haven't updated it for BFA.

Usage
-----
When the addon starts the first time, hold control and mouse over the windows in the center. Drag the windows to the desired locations while holding control. Windows can be turned on and off entirely in the addon settings.

It's a good idea to try a target using a target dummy when deciding where to place the windows.

Which skills are display in the bars can be toggled in the addon settings. Note this does not affect if they are chosen in the rotation, so there may be rotation gaps if certain rotation skills are disabled. For buffs and other skills that aren't part of the normal rotation, they just won't appear on the skill or buffs bar.

User Interface
--------------
The addon adds several window frames. Each of these can be toggled on or off in the AddOn settings. When holding control and mousing over a window, the name of the windows is shown as "HoJ:" plus the window name.

In general, windows are context sensitive and will become active targetting a mob that is attackable and in range, or when the character is in combat.

HoJ: Holy Power
Shows the number of Holy Power stacks as little glowing judgment masks. Note that this was made back when the only Holy Power indicater was on the player portrait frame. It's not as useful today if "Personal Resource Display" under "Names" is turned on in the WoW Interface settings.

HoJ: Templar's Verdict
Shows a large glowing judgment mask whenever 3 Holy Power is available. Note that this is decoupled from the rotation frame, in that it will become visible whether or not it is the best time to use Holy Power. Situationally, it can be good to know when a Holy Power skill is available. This can be considered redundant with the Holy Power Frame or Personal Resource Display option, so it can be turned off.

HoJ: Rotation
Shows the icon of the best current skill in the DPS rotation. For Ret, this is currently based on Icy Veins rotation here (https://www.icy-veins.com/wow/retribution-paladin-pve-dps-rotation-cooldowns-abilities) which looks similar to the rotation Wowhead here (https://www.wowhead.com/retribution-paladin-rotation-guide). 
- whether or not the target is within range of the skill.
- whether or not using the skill will overflow five Holy Power.
- If Wake of Ashes available and there is a a choice of Holy Power generators:
  - If less than 3 holy power, choose a generator that will result in 3 Holy Power
  - Then choose a Holy Power consuming skill
  - Then Wake is available without any loss of Holy Power generation.
- There may be other rules added in the future, such as inserting Divine Shield or Lay on Hands into the rotation when death appears to be imminent.

HoJ: Inquisition
This shows the Inquisition icon with a countdown timer for keeping track of this important buff. This window is only visible with control + mouse over or when Inquisition is talented.

HoJ: Cooldowns
This windows shows situational cooldowns. These are generally skills that are not part of the DPS rotation. This window will show:
- Interrupts when the target is casting an interruptible spell.
- Avenging Wrath / Crusade when it is off cooldown and the character is in combat.
- Selfless Healer when it has 4 stacks, or if it has any stacks and character health is lower than a threshold.
- Shield of Vengeance when it is off cooldown and the character is in combat.

In the future:
- Shield of Vengeance, Divine Shield, Lay on Hands when they are available and character health is lower than a threshold, or incoming damage predicts death in a short time.

HoJ: Buffs
This window shows buffs that need to be refreshed. Currently this is just Greater Blessing of Kings and Greater Blessing of Wisdon. Buff spells can be cast by clicking the icon in the buffs bar when not in combat.

Caveats
-------
I make no claims about the fitness of this add-on for any particular purpose. I only decided to finally release it because some paladins may find it useful.


Using the Ignore List
---------------------
The main reason for the ignore list was so that I could stealth ignore people -- not get any message from them at all, or even a message telling me I had received a message from them, and not have WoW tell them that I was ignoring them. I could not find any other add-on that would do exactly this and still keep a history of the ignored messages for later inspection.

This predates BattleTags and RealID -- it works with toon names only right now.

Commands (always preceded by /hoj):
/hoj ignore <player name>  - ignores the player with the specified name
/hoj add <player name> - same as /ignore
/hoj unignore <player name> - removes the specified player from the ignore list
/hoj remove <player name> - same as /unignore
/hoj list -- lists all player names in the ignore list
/hoj silent -- toggle silent mode, which, when enabled, stops HoJ from printing the "Whisper from <player name> blocked." message. The only way to know if a message was received from a blocked player is by checking the ignore history.
/hoj stealth -- toggles stealth ignore. With stealth ignore on, some innocuous message will be printed when a message is received an ignored player (currently something like "Isle of Quel'Danas is under attack!"). "silent" will override this behavior. If silent is on nothing will be seen when an incoming message arrives from a blocked player.
/hoj history -- show the history of ignored messages since logging on
/hoj clear -- clear the ignore history
/hoj - show command list help

Known Issues
------------
- Protection paladin is disabled. I haven't bothered to fix it for BFA yet.
- There is no Holy support and I have no plans to add it.
- Skills and Buffs cannot reliably be clicked on in combat. This is because these buttons are set up dynamically based on the current circumstances and some of the functions required to do this are protected in combat. If all skills are to keys or surfaced on other buttons this shouldn't matter. I am considering just making these bars non-clickable, but it is useful to click them outside of combat (which works reliably).
- blessings might appear on the skill bar even though the character has some equivalent blessing from another class. I'm not sure if this is an issue with current class buffs, but it used to be in MoP / WoD.
- blessings will appear on the buffs if it was cast on on another player. Probably the best that could be done here is remember when it was cast on someone else and set a timer, but that may be problematic in other ways since certain things can make the buff expire without the addon knowing. If this is annoying, these buffs (or the buffs bar) can be turned off in the addon settings.
- When running an addon module Swatter, some very infrequent warnings about protected functions being called in combat may appear. Please let me know the circumstances and error, preferably with a screenshot of the dialog.
- Can't currently turn off the Templar's Verdict, Holy Power and Inquisition windows. I will add this soon.
- Control is used for mouseing over the windows. I'm not sure what would happen if control is bound to some skill, but it's probably not good.

TODO (note this is not exhaustive):
- Show GCD / lockouts in the rotation frame.
- Mitigation skills:
  - Show Lay on Hands and Divine Shield in the cooldowns bar.
  - Show Lay on Hands, Divine Shield in the rotation frame when incoming damage is extreme and or death is predicted within X seconds (based on incoming damage).