Calculation by Testador de Laticínios#8027:
Assuming 10% is exactly 10.00 and 50% is exactly 50.00.
Function: f(x)=0.597015x+4.02985
Skill 10 10.00%
Skill 20 15.97%
Skill 30 21.94%
Skill 40 27,91%
Skill 50 33.88%
Skill 60 39.85%
Skill 70 50.00%
Information extracted from v7.70 files and explained by Michael#4463:
- If you fish on a tile that can contain fish, you gain 1 skill try
- If you catch a fish, the tile transforms to to another ID that cannot grant fish and will not give a skill try, but does still allow the 'splash'
- The formula being used to decide if you catch a fish is as follows: math.random(1, 100) <= math.min(math.max(10 + (player:getEffectiveSkillLevel(SKILL_FISHING) - 10) * 0.597, 10), 50)
So, lets try to put that in words:
If a random number between 1 and 100 is less than or equal to the lesser of the greater of (10+skillLevel-10)*0.597 and 10 and 50.
That is a bit wordy, and the 10+SkillLevel-10 seems kind of silly, but lets do a quick worked example.
-- Lets say you "roll" a 50 with the math.random
>> if 50 is less than or equal to
-- Lets say your skill level is also 50
>> greater of 10+50-10 (50) * 0.597 (29.85) and 10. (29.85)
-- The lesser of 29.85 and 50 is 29.85
-- Back to the first part:
>> 50 is not less than or equal to 29.85, and so you did not catch a fish