(288 Kb)
Updated: 04-04-20 06:44 PM
File Info
Visions of N'Zoth (8.3.0)
Updated:04-04-20 06:44 PM
Created:01-27-19 06:27 PM
Categories:Paladin, Casting Bars, Cooldowns

Hammer of Justas

Version: 0.95.5-Beta
by: PaladinJustas [More]

Hammer of Justas
a World of Warcraft add-on for Paladins
by Justas ( paladin (dot) justas (at) gmail (dot) com )

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 EXPERIMENTAL right now. Rotation should work ok. Mitigation/healing priorities have not been given much testing but they are working.

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 (Retribution Only)
Shows the number of Holy Power stacks as little glowing judgment masks. Note that this was made back when the only Holy Power indicator 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 (Retribution Only)
Shows a large glowing judgment mask whenever 3 or more 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 (Retribution Only)
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.

For Retribution this window will show:
- 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.

For Protection this window shows mitigation and healing cooldowns, based on incoming DPS and current health:
- Ardent Defender
- Guardian of Ancient Kings
- Lay on Hands
- Light / Hand of the Protector
- Gift of the Naaru
- Blessing of Protection
- Divine Shield

For Protection and Retribution it 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.

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. Nothing will show up here for Protection right now.

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

About Retribution Spec
Retribution rotation now uses a programmable rule set to select the rotation. The exact rotation may change in the future. In all cases it's implicit that the talent must be selected, off cooldown, and the target must be in range of the skill / talent. The first rule to have all condiitions satisifed is selected as the next skill for the rotation. Rules for Templar's Verdict imply either TV or Divine Storm, depending on whether or not AoE is called for. The rules are:

1. Use Inquistion if
a) holy power >= 2
b) inquisition buff will expire in the next 2 seconds (or is expired already)
Rationale: Always refresh Inquisition to ensure it's buffing damage.

2. Use Execution Sentence if
a) Holy Power >= 3
Rationale: Keep Execution sentence DoT up as often as possible. It's arguable that using ES at 3 Holy Power may be unwise for the same reason we don't use TV at 3 Holy Power.

3. Use Templar's Verdict if
a) Divine Purpose is up
b) Divine Purpose will expire in the next 2 seconds
Rationale: Divine Purpose is useful to cover dead spots in the rotation (if haste isn't high enough), so we hold it untile either there are no Holy Power generators to spend or it's about to expire. This rule will select it if it's about to expire.

4. Use Wake of Ashes if
a) Holy Power <= 1
Rationale: If Holy Power is low, use Wake to get 5 Holy Power. The old rotation would never waste a Holy Power here, instead selecting skill to fill up the Holy Power to 3 first, so that WoA could be used immediately after. That is probably better than wasting 1 Holy Power like this if there are any Holy Power generators off cooldown, but harder to do with this rule set.

5. Use Empyrean Power if
a) Empyrean Power buff is active
Rationale: Spend Empyrean Power immediately because it's free and gives generators another GCD to recharge. This could also be held to fill in rotation gaps like Divine Purpose, especially if not talented for Divine Purpose.

6. Use Judgment if
a) Holy Power >= 4
b) the Judgment buff (+25% damage to next Holy Power spender) is about it expire
Rationale: Try to always have the Judgment +damage buff on the target before spending Holy Power. Because the rule is >= 4, if Holy Power == 5, this will waste 1 Holy Power to get the buff applied before using a spender.

7. Use Templar's Verdict if
a) Holy Power >= 5
Rationale: Spend Holy Power when it's at 5 so we don't waste any Holy Power generation.

8. Use Templar's Verdict if
a) Holy Power >= 3
b) Judgment buff on target is will expire in the next 2 seconds
Rationale: If the Judgment buff is about to expire and we have 3 Holy Power, go ahead and use it to get the damage buff. This can be enhanced to only use it if Judgment was not available, however. There's no point in spending our Holy Power to get the buff if we can just refresh it and stay <= 5 Holy Power anyway. This may not be true however -- is it just better to ensure we get 1 spender with damage buff for every Judgment?

9. Use Hammer of Wrath if
a) Holy Power <= 4
b) Target's health is <= 20% of max
Rationale: If talented for HoW, use it when the target is at low health.

10. Use Hammer of Wrath if
a) Crusade or Avenging Wrath is active
Rationale: If talented for HoW, use it when wings are up.

11. Use Blade of Justice if
a) Holy Power <= 3
Rationale: Use Blade of Justice as are preferred Holy Power generator, as long as it won't overflow 5 Holy Power.

12. Use Judgment if
a) Holy Power <= 4
Rationale: Judgment is our second-best Holy Power generator.

13. Use Consecration if
(implicit) talendted and off cooldown
Rationale: If talented for Consecration, use it before Crusader Strike. All rotation references I've seen recommend this.

14. Use Crusader Strike if
a) Holy Power <= 4
Rationale: Use CS if nothing else is available.

15. Use Templar's Verdict if
a) Holy Power >= 3
b) Divine Purpose buff is active
Rationale: We have no Holy Power generators off cooldown. If we have >= 3 Holy Power, or we have Divine Purpose proc up, we can use a Holy Power spender to fill in the rotation.

About Protection Spec (Protected Mode 8-D )
When the character is in Protection spec, a health history is kept for 3 seconds and this is used to determine how much healing and damage the character has taken over the last 3 seconds. Using this history the addon tries to predict how much damage will occur in the future and whether or not the character will die in the next couple of seconds. This, along with the current health and status of cooldowns and some buffs, is used the select mitigation skills and/or healing spells. This is really rough right now and is likely to become significantly more complex. This was re-written entirely from WoD, which was the last time I bothered to handle mitigation skills in the addon.

Known Issues
- There is no Holy support and I have no plans to add it.
- Blessings are tracked when cast on other players. However, for players not in the party, the ability to track them is limited. WoW addons cannot inspect the buffs on a player that is not in the player's party. In such a case, the addon uses the original cast time to track the blessing until such time as the buff expires or the blessing is re-cast. This could result in the addon not showing that a blessing needs to be cast if the buff is removed from a non-party player in any way other than expiring due to time.
- 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.

- Added addon messaging to communicate versions and inform users of when new versions are available.
- minor bug fixes.
- minor cleanup of some chat messaging.

- fixed Empyrean power not showing an icon in the next rotation skill due to being set as "don't show" in the UI config.
- cleaned up range checking code.

- cleaned up an accidental nested loop in buff check
- fixed issue with max party member being out of range
- reset buff update index when group size changes to prevent out-of-range unit ids
- reset buff update index when resetting a buff

- Added tracking for Greater Blessing of Wisdom and Greater Blessing of Kings buffs places on player targets.
- Added checks for disabled spells to accommodate party syncing.

- updated version to 8.3
- fixed Blessing of Kings and Blessing of Wisdom min level.
- fixed Wake of Ashes not showing in rotation suggestions because it wasn't configured as ROLE_DPS

- Avenger's Shield will show up as a interrupt skill on the cooldowns list if Rebuke is on CD or out of range
- Hammer of Justice should now show up correctly on cooldowns bar when Fist of Justice is talented
- Fixed 10 yard range being calculated using Fist of Justice when FoJ talent was selected
- Added frame alpha configuration to addon menu

- Fixed a bug with caching of buffs that was causing Inquisition timer frame to be active even when Inquisition was up.

- Lots of optimizations. Performs better in Raids when tons of mobs are pulled. I cannot guarantee this is 100% fixed, but a number of routines received significant optimization for execution time.
- Frames no longer use buttons so they aren't clickable. This is a minor annoyance when not in combat (i.e. for buffs) but makes the frame hide and show way more reliable. It seems this was only working before because of a race condition -- the addon's update rate was very high and seems to have been beating the combat lockout taking effect.
- Major health history refactor:
- Optimized health history update.
- Fixed some incorrect math when predicting upcoming death and near death
- Death prediction up to 8 seconds in the the future based on 3 second health history.
- Fixed issue where changing roles could cause death prediction to trigger.
- Added frame number for profiling to limit output of stats to frames where they changed.
- Changed UpdateIcons to use pre-initialized table to set the sorted list. This is significantly faster than creating an empty list an iterating to add indices.
- Cleaned up UpdateIcons to not use off-by-one frameNum
- Changed HoJ_Update, HoJ_UpdateGlow, HoJ_UpdateRender to member functions.
- Changed profiling to only output whe threshold is met.
- Added "/hoj func" command to restrict profiling output to matching functions.
- Changed update rate to 15 times per second.
- Added profiling functions.
- Optimized UpdateIcons. List iteration is painfully slow. Calling into WoW is painfully slow, too.
- Optimized some table initialization so the size can be pre-determined by Lua's compiler.
- Removed 6th frame on cooldowns to make it the same as buffs.

0.94.6-Beta: (Not released)
- Added data-driven rotation selection for Retribution

- Fixed spam when in Ret mode and taking damage.

- Added a charge counter on rotation frame
- Added saved var versioning. This might reset some of your show / not show settings in the UI to correct a bug in earlier versions.
- Added Word of Glory and Justicar's Vengeance to Ret cooldowns
- Also added Flash of Light to cooldowns if nothing else is available
- Fixed problem with Prot Consecration cooldown check not taking GCD into account. This is why Consecration didn't always show up when you weren't standing in it.
- Cleaned up cooldown checking in general. There were some invalid uses of prediction in some places.
- Refactored the way current buffs are checked to use less CPU time.
- Added Avenger's Valor buff check (but not used yet for Shield of the Righteous)
- Ret rotation wll now look ahead to the next skill coming off cooldown when no skills are available in the rotation.
- Divine Purpose is now taken into account in the rotation.
- Fixed Ret to use the correct Consecration spell ID for Ret.
- Forbearance is now be handled correctly.
- Fixed problems with Blessed Hammer/Hammer of the Righteous coming up in the rotation when one or the other wasn't available.

- Added a cooldown timer to the rotation frame.
- Renamed some of the addon frames internally to better-match their current uses. Unfortunately this will reset your frame positions if you were already using the addon.

- Amortized some of the update logic to remove most of performance issues I was seeing.

- Fixed check for interruptible spells not working because the return values from UnitChannelInfo and UnitCastingInfo changed since this was last used (WoD or early Legion). This mean Rebuke didn't show up when it should.
- Fixed interrupt checks not accounting for spells being on cooldown. Not sure when this broke.
- Added health history.
- Only show Shield of Vengeance when in combat and taking damage > 10% of health per second.
- Changed cooldowns to only update every 0.25 seconds
- Added changes.txt to archive (this file)
- Updated readme.txt for Protection.
- fixed Hammer of Wrath not showing on the rotatoin when Crusade / Avenging Wrath was active.
- Added skill rotation.
- Added damage mitigation and healing cooldowns: Light/Hand of the Protector, Divine Shield, Lay On Hands, Blessing of Protection, Gift of the Naaru, Guardian of Ancient Kings, Ardent Defender, Shield of the Righteous.

- Fix issue where sometimes a rotation skill is shown when everything is on cooldown. Usually this was Crusader Strike. Global Cooldown was using the wrong spell. Not sure when I broke that, but maybe when I was initially doing 8.1 update. This caused the rotation to sometimes suggest a skill that was actually on cooldown. This only seemed to happen when all skills were on cooldown.

- Added Selfless Healer to cooldowns. Currently shows with 4 stacks or health <= 50%.
- Updated readme.txt
- Restricted buff updates to every 0.25 seconds.
- Renamed windows to reflect current usage and documentation.

- fixed Hammer of Wrath to not show when target health is above 50%
- added Shield of Vengeance to the cooldowns bar. This will show if SoV is off cooldown and you're in combat or targetting an attackable mob.

0.93.4-Beta: First Beta:
- removed some debug output.

- Fixed Empyrean Power buff to show as Divine Storm on the rotation frame, instead of the Empyrean Power buff, since when this buff is active you want to use the Divine Storm skill.

- Fixed a bug where the Crusader Strike icon was incorrect if the add-on loaded while in protection spec.

- Fixed an issue where the cooldown timer on one of the cooldown frame buttons was visible if the add-on loaded in protection.

0.93.0: Initial release:
- updated for BFA 8.1
Archived Files (5)
File Name
04-03-20 04:15 AM
03-25-20 01:23 AM
02-03-19 04:03 PM
01-27-19 07:33 PM
01-27-19 06:27 PM

There have been no comments posted to this file.
Be the first to add one.

Category Jump: