The command could not work before because the capitalize in
longBossName would produce a capital Of causing the hiscore
skill name to not match.
This normalizes from the hiscore name by removing : to compare
it to our internal boss names.
getVarbitValue was originally for external plugins which could not
modify the varbits enum, but now ints are used everywhere it is no
longer necessary for two separate methods
This adds a Varbit magic constant annotation which is used now on
varbit parameters and fields.
This is roughly the same type-safety wise, with IDE support, but the ids
can be inlined by the compiler and it avoids having to have a large enum
class with many fields.
The Slayer plugin highlights target monsters based on their name rather
than NPC ID, as many common monsters (skeletons, zombies, etc.) have
nearly endless variations for different models and combat levels.
Previously, this name matching was done via a simple
`String#contains()`, which led to some incorrect matches such as pirates
being highlighted while on rat tasks and Jonny the beard being
highlighted while on bear tasks.
This commit changes matching to use regex to match string boundaries or
whitespace at either end of the task string, ensuring these substring
matches can only happen when word breaks occur. The only known existing
case where this would apply is for baby dragons and brutal dragons,
which are valid alternatives for their respective chromatic dragon
tasks.
If one plugin has multiple dependencies this would throw a concurrent
modification exception due to iterating the successors after removing
the edge
Fill out javadoc for topologicalSort
Co-authored-by: Adam <Adam@sigterm.info>
This allows different final messages being built for split chat vs
normal chat, fixing <colNORMAL> incorrectly applying the default chatbox
color to split chat.
The client has been recreated with a new builder off of the http-api
client for awhile anyway since runelite-client has multiple other
requirements (caching, tls, etc). This fully moves creation of the
okhttp client into both http-service and runelite-client separately.
I've kept the CLIENT field in http-api for now since a few external
plugins depend on it currently.
Thie removes the http-service hiscore api, which we haven't used in
awhile and doesn't work in practice due to upstream rate limits, as well
as the xp tracker which also hasn't been used in a long time since there
are now multiple quality community run xptrackers.