This is a code project I have been working on for some time now, and I still haven’t quite finished it, like most code projects I will probably never truly finish it. But I have been called a “Professional Abyssal Point Roller” once so far, so I think I am at a point where I might as well write an article about it.
Mechanics of Rolling Modules
So the gist of abyssal rolling is pretty simple. You get a Module that has some stats and a corresponding Mutaplasmid that has a minimum and maximum multiplier for each of those stats, then combine them, and now you have a module that has random stats somewhere between the minimum and maximum multipliers. This might now be better, or worse than that what you had at the start.
Example
You might buy a Warp Disruptor II that has a range of 24 km, and you buy a Decayed Warp Disruptor Mutaplasmid that has a range multiplier between 0.95 and 1.08. If you now combine the two the resulting abyssal warp disruptor will have a range somewhere between 22.8 km and 25.92 km, completely at random (And the same thing will happen for a few other stats independently as well).
Calculating Probabilities
The interesting thing about this mechanic is that the chance of the module landing anywhere in the range is the same (or at least nobody has discovered anything different so far). This means that if we want the module to be within a certain range in a said stat, we can easily calculate the probability that it lands there, it is in fact just the fraction of the likable range over the total range.
Example
Before buying a Warp Disruptor II and Decayed Warp Disruptor Mutaplasmid as above, you want to calculate the chance that you get an abyssal module that has over 25km range when you roll the combination. So you find out that the useful range is 25km to 25.92km, while the total range that it might get is 22.8km to 25.92km. The chance that the module is in the useful range is 0.92km / 3.12 km, about 29.5%.
This is neat because we can now find out how many modules it will take to get our desired module on average, and about how much it will cost. The average cost to get our desired module is just the average times of rolls it takes (inverse of the chance) times the price per roll (sum of prices of your mutaplasmid and module).
Example
Continuing with o_ur abyssal warp disruptor from above, it takes 1 / 29.5% = 3.4 rolls on average, the Warp Disruptor II costs 1’849’000 ISK, and the Decayed Warp Disruptor Mutaplasmid 15’000 ISK. So our roll cost is 1’864’000 ISK. Multiplying these two things, on average we need to spend 6’337’600 ISK to get our desired module (and a bunch of crap ones that we don’t consider further)._
There are however a few caveats to this method. First, this is only on average, and if you only want to roll one module then it might take significantly longer or shorter to get your desired module. The actual chance of getting the example abyssal warp disruptor looks more like this:
Rolls | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
Chance of getting the Module | 29% | 50% | 65% | 75% | 83% | 88% | 91% | 94% | 96% | 97% |
Formula: 1 - (1-chance of module) ^ rolls
The second big thing is that just ignoring whatever modules don’t fit your needs is not very efficient. Someone else might have paid ISK for that right? So your module might be a lot cheaper than expected.
Automated Script
This whole method explained above works with multiple stats at the same time as well, you can just multiply their possibilities since they are independent. Now if you check every single module + mutaplasmid combination for the price that you will get your module you will eventually find out which module and mutaplasmid is the cheapest to roll on average that fits your requirements. This is quite a bit of calculation you have to do, especially if you want to consider every single meta/faction/deadpsace module, every mutaplasmid, and every stat.
Luckily for you I already wrote a google collab script for it where you can pretty much just put in the stats and module type you want and it will give you the desired information and also print out a lot of things so that you can double-check what is actually going on, and what prices it pulled from ESI.
I did spend a lot of time parsing every single mutaplasmid and rollable module in there, the only thing missing, for now, is shield boosters, because I got tired of my SDE having the wrong names in there. It also looks kinda bulky but I at one point gave up on trying to really make it look pretty. I am sure that some more dev time can make it work in a browser, or give it a fancy frontend, but for now, I am happy with the functionality it provided..
Market considerations
As stated above just trashing all the modules that you don’t need might not be worth it for you, and you might want to sell all the possible modules. This was my idea in the first place as well and I tried to reasonably gauge the prices of every single possible roll and then integrate over all the possibilities. However abyssal modules are a lot like antiques in the sense that they aren’t compared to mainline products most of the time. So people only search for them when they want something specific, and not on every single occasion where they need a module. This means that generally, you can’t just create a ton of abyssal modules and then sell them. It is also pretty hard to gauge prices before you roll the module. I had some ideas of interpolating between past module sales and never really found any precise enough information to make a business form for me.
Conclusion
So I hope you now have the tools to evaluate what modules you should roll for your purpose, and how much it is going to cost you - on average at least. You should however always also consult mutaplasmid.space to see if someone that didn’t do the math is selling it for cheaper there. As an added bonus zkillboard is always going to just put a 0.01 ISK pricetag on your abyssals so you can put pretty blingy stuff on ships and still claim to have won the ISK war if you are so inclined. Just hope the thing drops and Squizz Caphinator doesn’t see this post xD.