After using 8ad5977ad5 for a while, I
noticed that the plugin would lose calibration seemingly at random.
Given I was sitting at Redwoods, this didn't make sense. I want to give
some context as to what was happening and why, baked permanently into
the commit history:
The plugin requires that a few things exist when it saves data, or else
it assumes that something went wrong and it resets the config. One of
these things is that the infobox object exists.
Usually, this is fine, as one is created on login with the stored
duration, as long as said duration is not negative.
However, if the user stood in the same area for 10 minutes and then
logged out somehow (either manually or through AFK), upon logging back
in the config would not create a new infobox as the stored duration is
negative.
Either toggling the plugin or restarting the client at this point would
clear the reference to the old Infobox, and a new one would not be
created on login due to the aforementioned negative duration.
If the plugin was toggled, the calibration is instantly lost, and the
user now sees the tutorial overlay.
If the client was restarted, it would appear as if the plugin is working
fine, and it would fix itself if the player moved far enough. If they
just logged out, however, it would clear its config.
Either way, in most situations, the user is now forced to recalibrate
the plugin when they've done nothing wrong, only commited the heinous
crime of XP wasting.
Most of this was due to how the plugin tracked the aggro time, which was
through its infobox. This really shouldn't be how it does it, and so now
it keeps track of the time separately, and doesn't rely on the creation
of the infobox to block the saving of data.
Annoyingly, the cannonball projectiles are not fired out of the centre
of the cannon object like the original cannon does, so how the cannon's
position is stored had to be changed to a WorldArea
The pattern for the short names of the other brews isn't being followed
here due to the similarities between the Ancient Brew and (Extended)
Super Antifire; using `An` could be confusing.
This allows for overrides on template chunks to be defined based on the
chunk's position, not where the chunk ends up in the scene. I think this
only really matters for the POH, which stores each style across all 4
planes of 3 (or 7) regions.
When interacting with another player's cannon, a completely different
message is returned. Using this, if we ever get a normal cannon message
after clicking on a cannon, we can be 100% certain that it is ours.
Since instances shift around real regions to WorldPoints that don't
match, the override system was trying to apply overrides to areas that
don't currently exist.
* world map: correct locations of quest markers
* world map: remove unneeded multi-quest support
Jagex have decided to make a marker for every quest now, instead of
reusing markers for multiple quests. This simplifies logic a lot
* world map: remove unneeded tooltip system
The update on 28/07/21 added vanilla support for quest completion
tooltips. As such, ours are no longer necessary.
* world map: update config text to better reflect quest icons new function
JSON itself doesn't natively support true comments (the official way is
to include it as data), which means that every syntax highlighter wants
to scream when it reads the file, despite the fact that GSON ignores
comments perfectly fine. JSONC however supports true comments, and is
supported by all the syntax highlighters we use (GH, IJ), while also
staying as entirely normal JSON otherwise.
turns out that thrall spells are seemingly the only arceuus spell with a
magic-level based duration that uses the boosted level, at least out of
the ones we have timers for