This guide will teach you how to make the most efficient fishing system, while having the possibility of upgrading your rod!
First, we’re going to make the rod’s level. Make a player-scoped number property that’s called “rodLevel”. Make a player-scoped counter that edits the “rodLevel” property. Increase and decrease this however you want.
Storing the Probabilities
Now, we’re going to get into the meat of the guide! Basically, we’re going to store the probabilities in text properties. So first we need to store the numbers in a text property. We’re going to use a format where each probability is separated by a / from each other. Let’s look at a sample storing:
50/20/10/5/3/2/
This means that the first possibility has a 50% chance of happening, the 2nd possibility has a 20% chance of happening, and so on. You can have as many possibilities as you want, but the properties for each level must have the same number of possibilities. However, you can put 0 for some slots so you don’t have any chance to get that possibility. Note that you must have them all add up to 100.
Naming the Properties
To access these based on the rod level, we’ll be using concatenation. The format will be “fishingProbs[ROD_LEVEL]”, where you put the rod level in that spot.
Interpreting the probabilities
This part is where we start to read the properties. We’re going to loop the code because the code for reading one number is big, and we’d only be able to fit 2 or 3 inside one block. First, let’s get our looping property. It’s going to be player scoped and have a default of 0. I’m going to call it “indexingNum”. Make a counter with a default 0 and target of 2 more than however many possibilities you have. Make the target reset the counter. that edits the property. Make the “indexingNum” property broadcast on “indexingNumChange”. Make a checker receive on that channel and check if the property is greater than 0. If so, the checker should broadcast on “doIndexing”. Make a trigger receive on that channel. Add these blocks to it:
Make sure to replace the 7 in the condition for the first if statement with 1 more than however many possibilities you have. I have 6 possibilities, so I need 6+1=7 inside the condition.
Make a player-scoped text property called “ProbText”. Make player scoped number properties from “Prob0” all the way to “Prob[NUMBER_OF_POSSIBILITIES_HERE]”. Make a trigger that receives on “doRandomizer”. Add this block code to it:
Tada! You’re done!
More applications of this guide are where you can tweak the parameters of a random function however you want and such. The showcase link for this is in my bio.

