Download
(348Kb)
Download
Updated: 06-22-22 12:19 PM
WL
(283kB)
Download
Updated: 05-09-23 12:30 PM
Pictures
File Info
Compatibility:
WOTLK Patch (3.4.1)
Updated:06-22-22 12:19 PM
Created:05-06-22 06:03 AM
Downloads:1,845
Favorites:1
MD5:
Categories:The Burning Crusade Classic, Casting Bars, Cooldowns, Paladin

SwedgeTimer

Version: 1.3.1
by: Swedge [More]

A ret paladin seal twisting bar for BCC.

https://github.com/hypernormalisation/SwedgeTimer

# swedgetimer
Retribution Paladin seal twisting swing timer for WoW Classic TBC.
Based on some code and assets from the WeaponSwingTimer addon.

## What is SwedgeTimer?

SwedgeTimer is a standalone swing timer bar to help Retribution Paladins seal twist more effectively.
It is not a WeakAura, it is built from the ground up in lua, and does not use the WeakAura API in any way.

SwedgeTimer replicates all the standard features of the current WeakAura state-of-the-art, including the GCD overlay, timing markers, and colour coding.

It does not aim to replace any of the other components of a typical Ret UI or heads-up-display; it is simply a moderately configurable swing timer bar at present, meant to be used in conjunction with more conventional weak auras for Retribution paladins like seal indicators and cooldown/proc trackers.

## Why use this over a WeakAura swing timer?

There are some advantages in using the SwedgeTimer addon over a traditional weak aura bar.

### Seal of the Crusader snapshotting

Seal of the Crusader uses haste snapshotting to prevent taking advantage of the shortened attack timer by switching to (or from) another seal mid-swing.
This has been brought to the attention of the weak aura developers by members of the ret community but they refuse to incorporate a fix.
As such, rets commonly use a patched version of weak auras, with the patched `generictrigger.lua` file being available on the Light Club and other paladin discords.

SwedgeTimer handles Seal of the Crusader haste snapshotting implicitly, meaning no need to manually patch weak auras after every release, and no need for the patch maintainers to ensure compatibility with new WeakAura versions.

### Accurate in Retribution edge cases

Traditional WeakAura swing timers do not recognise that the player's swing timer is reset by some of our abilities.
The most notable of these is Repentance, a crucial ability in PvP play.
Players must guess themselves when a swing is up after casting Repentence, impacting the player's ability to promptly re-open with a twist following a cast.

SwedgeTimer correctly resets the paladin's swing timer upon any relevant ability cast. These include:
- Repentance
- Holy Wrath
- Hammer of Justice

### Customisable

WeakAuras allows for extensive customisation of the appearance of a given WA, but there is no way to easily persist a player's customisation when the WA is updated.
Instead a player must re-implement any cosmetic changes each time their WA of choice is updated.

SwedgeTimer features in-built and persistent customisation options.
At present, the bar width, bar height, and font size are all customisable in the built-in settings panel.

![](https://i.imgur.com/6LIzzDK.png)

In a future update, font and bar texture customisation will also be implemented.

### Lag Detection

At high haste, many rets will be familiar with the experience of attempting a twist that your swing timer indicates that you can make, only to end up landing a Seal of Command swing due to lag, with the Seal of Blood cast taking you out of SoC and denying your ability to twist.

SwedgeTimer features an experimental lag detection feature, whereby the roundtrip latency to the world server is cross-checked against the time window for a twist to be made at the end of a close swing.
When the addon detects that lag is likely to push the Seal of Blood cast into the next swing, the bar turns yellow.
This indicates to the player that they should either stopattack to land the twist, or to instead filler and ride the SoC swing into a twist on the next attempt, optimising dps output.

This feature works best on connections where the latency is relatively stable, as it relies on the WoW API's `GetNetStats` endpoint which only updates once every 30s.
More experimental methods of maintaining a more up-to-date measurement of the lag are being looked into, so stay tuned.

Due to the way the server batches actions from the client, this is not a hard guarantee that your twist attempt will be possible or impossible.
You may still get lucky and land a miracle late twist, or miss one that seemed a sure thing.
However, testing has shown a high rate of prediction for missed twists, with very few false positives being identified.


## Usage Instructions

SwedgeTimer's config can be opened with the slashcommand `\st` in the chat box.
The bar itself can be clicked and dragged, and then locked inplace when the player is happy with the positioning via. the config menu.

The lag detection settings are experimental, but to ensure the best result a player may wish to experiment with the following options:
- "Lag Multiplier" is the value the world latency roundtrip can be multiplied by, defaulting to 1.5. In internal testing, this value was found to result in the most consistent prediction of impossible twists that the client and traditional weak aura bars believed possible.
- "Lag Threshold" is a flat value of latency the player can add, in seconds, defaulting to 0.0. This might be useful in fine tuning for some player's connections to the game world.

Changelog

[2.0.8] -- 2023-05-09

Added
  • Swing timers can now be enabled or disabled depending on which Dual-Specialization group the player is using.
  • Further to the above, Warriors now have the option to disable the swing timer when in Arms or Protection spec.

Fixed
  • Fixed a bug where indeterminate ordering of event callbacks was makinng the weapon checks for offhand and ranged lag behind equipment changes. This will fix a bug for warriors where ElvUI being loaded causes equipping a shield to break the offhand timer.
  • Fixed an issue where an outdated version of LibCustomGlow was being used (if any other addon loaded by the user included the more up to date version of this library, the bug would not have occurred).

[2.0.7] -- 2023-01-19

Changed
  • The addon has been confirmed to function properly in 3.4.1 and the Interface tag updated to reflect this.

[2.0.6] - 2022-12-25

Fixed
  • The LibRangeCheck-2.0 library takes a finite amount of time on first client load to gather the information it needs to function properly. Previously, the code to show and hide bars was blocked until the range checking was functional. Now show/hide checks will be run immediately.
  • Added some additional cross-checks to ensure bars show and hide when necessary.

[2.0.5] - 2022-12-24

Fixed
  • Fixed an issue with warrior shields where the offhand timer bar initialisation was being broken by a zero attack speed. This might fix a bug warriors have experiencing with the offhand timer bar breaking during swaps, but still unclear.
  • Timer bar elements are now properly recalculated in full when the player's weapon changes.

[2.0.4] - 2022-11-24

Added
  • Seal of Justice custom timer bar color added for Paladins.
  • Druids can now enable custom bar visibilities based on their current form.
  • Druids can now enable custom bar colours for travel and flight form.

Fixed
  • Druid forms now properly respect the adaptive form index for Moonkin and Tree form depending on if Moonkin and Tree forms are currently talented.

[2.0.3] - 2022-11-15

Fixed
  • Addon now uses an updated version of LibClassicSwingTimerAPI, which fixes some lua errors around C_Timers.

[2.0.2] - 2022-10-11

Added
  • Warrior Bloodsurge glow proc options added
  • Bar Positioning menus now also lets the user change bar dimensions there

Fixed
  • Typo in GCD marker settings fixed

[2.0.1] - 2202-10-08

Fixed
  • Removed an eroneous debug print when druids cast Maul.
  • Fixed typo in the settings UI's info panel.

[2.0.0] - 2022-10-07

The TBC Ret Paladin version of the Addon has been re-written from the ground up to support every class in WotLK.

Added
  • Support for mainhand/offhand/ranged swing timers.
  • Ships tailored and customisable timer configurations for every class in WotLK.
  • Some classes (Druid/Hunter/Paladin/Warrior) ship with specific aura/proc monitors that are configurable in the settings menu.
  • Support for adjustable scale with the mousewheel when the timers are not locked.
  • A range finder is now included that can dim the timer when the player is out of range. The range estimation is now an option for timer texts, with a new central text option to support it.
  • GCD markers now support showing the physical or spell GCD duration, and can be anchored to both the end of the swing timer bar, or to the progress bar itself, moving with the timer progress.

Changed
  • SwedgeTimer no longer implements its own Swing Timer engine, it now uses LibClassicSwingTimerAPI, a project by Ralgathor (with contributions from Swedge and Buds) that produces a standardised swing timer API. It takes account of the many different edge cases the WoW swing timer has for each class.
  • Timer border and background customisation has been improved.
  • Improved timer positioning within the UI powered by LibWindow-1.1.

Removed
  • With the demise of Seal Twisting, some of the Ret Paladin functionality to help with seal twisting has been removed. Much of that functionality is generally useful, and has been adapted into the rest of the addon.
Archived Files (13)
File Name
Version
Size
Author
Date
1.3.1
348kB
Swedge
06-22-22 12:19 PM
1.3.1
348kB
Swedge
06-22-22 12:19 PM
1.3.1
348kB
Swedge
06-22-22 12:19 PM
1.3.1
348kB
Swedge
06-22-22 12:19 PM
1.3.1
348kB
Swedge
06-22-22 12:19 PM
1.3.1
348kB
Swedge
06-22-22 12:19 PM
1.3.1
348kB
Swedge
06-22-22 12:19 PM
1.3.1
348kB
Swedge
06-22-22 12:19 PM
1.3.1
348kB
Swedge
06-22-22 12:19 PM
1.3.0
347kB
Swedge
06-15-22 03:01 PM
1.2.2
346kB
Swedge
06-01-22 10:55 PM
1.2.2
346kB
Swedge
06-01-22 10:48 PM
0.1.8
38kB
Swedge
05-08-22 07:54 AM


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



Category Jump: