William Sezo
Rookie but passionate
Hi!
I'm trying to make it possible for the player to catch other kinds of fish (as well as trash) from the fishing on regular water areas.
I managed to make it possible to fish other stuff, in this case i'm testing with worn boots, fish remains, fish tail, etc.
This is my fishing.lua:
Everything works fine on TFS 1.2, but I can't quite understand the formula
if math.random(1, 100) <= math.min(math.max(1 + (player:getEffectiveSkillLevel(SKILL_FISHING) - 10) * 0.597, 10), 50)
Without understanding of this formula, I'm having trouble setting up the right chance for those new drops, If an expert lua coder could give me a hand with this.
Thank you.
I'm trying to make it possible for the player to catch other kinds of fish (as well as trash) from the fishing on regular water areas.
I managed to make it possible to fish other stuff, in this case i'm testing with worn boots, fish remains, fish tail, etc.
This is my fishing.lua:
Code:
local waterIds = {493, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 7236, 10499, 15401, 15402}
local lootTrash = {2234, 2238, 2376, 2509, 2667}
local lootCommon = {2152, 2167, 2168, 2669, 7588, 7589}
local lootRare = {2143, 2146, 2149, 7158, 7159}
local lootVeryRare = {7632, 7633, 10220}
local useWorms = false
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
local targetId = target.itemid
if not isInArray(waterIds, target.itemid) then
return false
end
if targetId == 10499 then
local owner = target:getAttribute(ITEM_ATTRIBUTE_CORPSEOWNER)
if owner ~= 0 and owner ~= player:getId() then
player:sendTextMessage(MESSAGE_STATUS_SMALL, "You are not the owner.")
return true
end
toPosition:sendMagicEffect(CONST_ME_WATERSPLASH)
target:remove()
local rareChance = math.random(1, 100)
if rareChance == 1 then
player:addItem(lootVeryRare[math.random(#lootVeryRare)], 1)
player:say("I'm the luckiest! WOW!!!", TALKTYPE_MONSTER_SAY)
elseif rareChance <= 3 then
player:addItem(lootRare[math.random(#lootRare)], 1)
player:say("Feeling lucky today! Iiiha!!!", TALKTYPE_MONSTER_SAY)
elseif rareChance <= 10 then
player:addItem(lootCommon[math.random(#lootCommon)], 1)
player:say("I Guess it's Ok!", TALKTYPE_MONSTER_SAY)
else
player:addItem(lootTrash[math.random(#lootTrash)], 1)
player:say("Well... Better than nothing...", TALKTYPE_MONSTER_SAY)
end
return true
end
if targetId ~= 7236 then
toPosition:sendMagicEffect(CONST_ME_LOSEENERGY)
end
if targetId == 493 or targetId == 15402 then
return true
end
player:addSkillTries(SKILL_FISHING, 1)
if math.random(1, 100) <= math.min(math.max(10 + (player:getEffectiveSkillLevel(SKILL_FISHING) - 10) * 0.597, 10), 50) then
if useWorms and not player:removeItem("worm", 1) then
return true
end
if targetId == 15401 then
target:transform(targetId + 1)
target:decay()
if math.random(1, 100) >= 97 then
player:addItem(15405, 1)
return true
end
elseif targetId == 7236 then
target:transform(targetId + 1)
target:decay()
local rareChance = math.random(1, 100)
if rareChance <= 2 then
player:addItem(7158, 1)
player:say("I caught a Rainbow Trout! WoooW!!!", TALKTYPE_MONSTER_SAY)
return true
elseif rareChance <= 5 then
player:addItem(2669, 1)
player:say("I caught a Northern Pike!!!", TALKTYPE_MONSTER_SAY)
return true
elseif rareChance == 1 then
player:addItem(7963, 1)
player:say("I caught a Legendary Marlin! Holy shit!!!", TALKTYPE_MONSTER_SAY)
return true
elseif rareChance <= 15 then
player:addItem(7159, 1)
player:say("I caught a Green Perch!", TALKTYPE_MONSTER_SAY)
return true
end
end
player:addItem("fish", 1)
player:say("Hooked!", TALKTYPE_MONSTER_SAY)
elseif math.random(1, 100) <= math.min(math.max(5 + (player:getEffectiveSkillLevel(SKILL_FISHING) - 170) * 0.597, 10), 50) then
if useWorms and not player:removeItem("worm", 1) then
return true
end
player:addItem(2238, 1)
player:say("Stinky!", TALKTYPE_MONSTER_SAY)
elseif math.random(1, 100) <= math.min(math.max(2 + (player:getEffectiveSkillLevel(SKILL_FISHING) - 150) * 0.597, 10), 50) then
if useWorms and not player:removeItem("worm", 1) then
return true
end
player:addItem(5951, 1)
player:say("It will have to go on without a tail...", TALKTYPE_MONSTER_SAY)
elseif math.random(1, 100) <= math.min(math.max(1 + (player:getEffectiveSkillLevel(SKILL_FISHING) - 250) * 0.597, 10), 50) then
if useWorms and not player:removeItem("worm", 1) then
return true
end
player:addItem(8713, 1)
player:say("Wow! A glowing fish, must be worth something...", TALKTYPE_MONSTER_SAY)
elseif math.random(1, 100) <= math.min(math.max(1 + (player:getEffectiveSkillLevel(SKILL_FISHING) - 170) * 0.597, 10), 50) then
if useWorms and not player:removeItem("worm", 1) then
return true
end
player:addItem(2240, 1)
player:say("Guess I shouldn't have pulled this hard...", TALKTYPE_MONSTER_SAY)
end
return true
end
Everything works fine on TFS 1.2, but I can't quite understand the formula
if math.random(1, 100) <= math.min(math.max(1 + (player:getEffectiveSkillLevel(SKILL_FISHING) - 10) * 0.597, 10), 50)
Without understanding of this formula, I'm having trouble setting up the right chance for those new drops, If an expert lua coder could give me a hand with this.
Thank you.