fromLocalInstance() was returning a world point using the clients plane,
however the object may not be on that, causing the plane check in
checkObjectPoints() to fail.
The west window has the same id as the east window, causing both to be marked by the agility plugin. This adds a matches() method to AgilityShortcut to allow the plugin to test specifically which window matches the shortcut.
The bank plugin is being changed to manually initiate bank searches,
by invoking the script, and the bank tabs plugin needs to be able to
detect this search too.
In some cases, it is not possible to get a combat level solely from leveling
any one stat. If this happened previously the overlay would show an empty
tooltip due to the levels required all being >99. This just shows the levels
required even if it surpasses 99.
The punctuation is not in \b or \s, so additionally include \z. Also
added \A for the beginning, which would have the same problem, which the
test also tests for.
Co-authored-by: Adam <Adam@sigterm.info>
Having all 3 sampling branches feed into one colorblind() call was
breaking some versions of Intel's drivers whenever the xbr sampling code
was merely present. Changing each branch to individually call
colorblind() seems to fix it.
Teleporting using a trailblazer leagues area teleport previously caused
a home or minigame teleport timer to be created, depending on which of
the two was most recently stored as `lastTeleportClicked`. To avoid
this, a new TeleportWidget has been registered which does not follow any
code paths in the plugin.
This catches common bugs, dead code, etc., and also performs some more advanced
code style checks compared to checkstyle.
Co-authored-by: pilino1234 <pilino@posteo.de>
Normally the client includes Widget::name in the target param, but for
widgets that don't normally have menu entries this is often empty so the
lookup string would just be `Lookup `
The options dialog never accepts space, so remapping a key to it doesn't make sense, and it is possible the original key was one of the keys actually being listened for