People doing long, monotonous, semi-direct grinds for rare items, such as killing Bryophyta for the essence.
Certain items can only be obtained as a drop indirectly, meaning that instead of a "kill a monster, pick up its loot" gameplay-loop, we get something more complex.
A simple example is grinding for Bryophyta's essence, where you first have to grind for keys, then you can use those to open a chest.
Making things even more complicated, not only are there multiple sources of keys (Moss Giants, Bryophyta, Bryophyta's chest), the probabilities of getting a key from a source can vary with the context (e.g. task, wilderness).
Once one picks a method that seems bearable, one can calculate how many times a source of keys has to be killed, on average, for an essence; for example, if you stick to only killing Bryophyta, you can expect to need 1770 kills.
However, there is no standard feature to show how far along you are with your self-defined grind; there is no standard-boss-like kill-count for Byrophyta (especially none for wilderness Moss Giants on a slayer task, should you pick that option), and the grind is bad enough that one may reasonably start to wander soon enough as to how lucky one is within the grind.
Following the KISS principle, this plugin achieves the following.
- For specified items, it tracks the number of times an item was received as loot (with multiplicities).
- For specified NPCs, it tracks the number of kills.
- When specified NPCs are killed, it injects a game message that shows
- the kill-count,
- and for relevant (NPC, item) pairs, with grind-specific probabilities configured, some statistics as to your luck.
As to the statistics, more precisely, a CDF-value and a z-score is calculated for the binomial model,
Binomial(number_of_kills, npc_item_true_probability) at item_loot_count.
The first gives you an idea of how many people on the same grind are in no better position than you, the second tells you how far behind or ahead you are of the average, in standard deviations.
To keep the plugin as simple and universal as possible, the plugin
- exposes its entire data through an editable configuration option, in JSON,
- syncs data only on (plugin) startup/shutdown,
- does not handle mixed strategies.
Simply put, the tool is dumb on purpose. Use it intelligently.
Mainly consist of the three maps describing kill-counts, drop-counts, and probabilities.
In order to handle non-unique NPC/item ids (such as different versions of a Moss Giant), ids are first resolved to user-selected strings, which are also keys for the aforementioned 3 main maps. A side effect is that the in-game message which uses the same strings, is more readable.
The plugin comes pre-configured to track grinds
- for a Giant Club through only killing Obor,
- for a Bryophyta's essence through only killing Bryophyta.
- This plugin tracks loots independently of NPC kills.
- This plugin is not meant to be a sole method of loot/kill tracking.
- This plugin will only recognize kills/loots that prompted a
ServerNpcLootevent.
I couldn't find an existing solution that could handle chained grinds. The loot tracker plugin is great for simple grinds (where a monster drops the coveted item). But even that doesn't provide a unified measure of how lucky you've been so far in the grind, although there is at least one plugin that you can manually query to figure out your "dryness".
I manually calculated the probabilities by looking at the long-term behavior of a tiny Markov-chain.
One could write a plugin that is dependency-aware and then it could
- arrive at the probabilities describing long-term-behavior given the nominal probabilities (e.g. 1/118, 1/16), and
- handle grinds that use mixed strategies (e.g. some moss giants on a slayer task then some Bryo).
It seems that identifying what probabilities apply in any given context seems too much of a hassle once the probabilities depend on things beyond the actual id of the NPC killed.