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