local fishing = {
["Charmander"] = {skill = 0, level = -2},
["Vulpix"] = {skill = 18, level = 3},
["Ponyta"] = {skill = 16, level = 2},
["Growlithe"] = {skill = 20, level = 6},
["Charmeleon"] = {skill = 50, level = 7},
["Arcanine"] = {skill = 60, level = 100},
["Rapidash"] = {skill = 60, level = 100},
["Charizard"] = {skill = 80, level = 100},
["Cyndaquil"] = {skill = 20, level = 3},
["Quilava"] = {skill = 50, level = 100},
["Ninetales"] = {skill = 60, level = 100},
["Flareon"] = {skill = 80, level = 100},
["Typhlosion"] = {skill = 80, level = 100},
["Shiny Charizard"] = {skill = 200, level = 100},
["Shiny Arcanine"] = {skill = 200, level = 100},
["Shiny Growlithe"] = {skill = 150, level = 100},
["Magmar"] = {skill = 100, level = 100},
["Magby"] = {skill = 50, level = 100},
}

local storage = 15458
local bonus = 1
local limite = 200


local function doFish(cid, pos, ppos, chance, interval, number)


        if not isCreature(cid) then return false end

        if getThingPos(cid).x ~= ppos.x or getThingPos(cid).y ~= ppos.y then
        return false end

        if getPlayerStorageValue(cid, storage) ~= number then return false end

        doSendMagicEffect(pos, CONST_ME_LOSEENERGY)

local peixe = 0
local playerpos = getClosestFreeTile(cid, getThingPos(cid))
local fishes = {}
local randomfish = ""

                                                                  --alterado!!
	if getPlayerSkillLevel(cid, 6) < limite then
	doPlayerAddSkillTry(cid, 6, bonus)
	end

for a, b in pairs (fishing) do
	if getPlayerSkillLevel(cid, 6) >= b.skill then
		table.insert(fishes, a)
	end
end

	if math.random(1, 10) <= chance then
		if getPlayerSkillLevel(cid, 6) < limite then
		doPlayerAddSkillTry(cid, 6, bonus)
		end
		randomfish = fishes[math.random(#fishes)]
	    peixe = doSummonCreature(randomfish, playerpos)
		if not isCreature(peixe) then
			addEvent(doFish, interval, cid, pos, ppos, chance, interval, number)
		return true
		end
	doSetMonsterPassive(peixe)
	doWildAttackPlayer(peixe, cid)
		if #getCreatureSummons(cid) >= 1 then
        		doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 173)
			doChallengeCreature(getCreatureSummons(cid)[1], peixe)
        	else
			doSendMagicEffect(getThingPos(cid), 173)
			doChallengeCreature(cid, peixe)
        	end
	return true
	end
addEvent(doFish, interval, cid, pos, ppos, chance, interval, number)
return true
end

local waters = {599, 598, 600, 601}

function onUse(cid, item, fromPos, itemEx, toPos)

if getPlayerGroupId(cid) == 11 then
return true
end

local checkPos = toPos
checkPos.stackpos = 0

if getTileThingByPos(checkPos).itemid <= 0 then
doPlayerSendCancel(cid, '!')
return true
end

if not isInArray(waters, getTileInfo(toPos).itemid) then
return true
end

if (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1) and not canFishWhileSurfingOrFlying then
doPlayerSendCancel(cid, "You can't fish while surfing/flying.")
return true
end

if (getPlayerStorageValue(cid, 25695) >= 1 or getPlayerStorageValue(cid, 25696) >= 1) and not canFishWhileSurfingOrFlying then
doPlayerSendCancel(cid, "Vocę é muito chata.")
return true
end


if isInArray(waters, getTileInfo(getThingPos(cid)).itemid) then
doPlayerSendCancel(cid, "You can\'t fish while surfing neither flying above water.")
return true
end

if getTileInfo(getThingPos(getCreatureSummons(cid)[1] or cid)).protection then
	doPlayerSendCancel(cid, "You can't fish pokémons if you or your pokémon is in protection zone.")
return true
end

if not tonumber(getPlayerStorageValue(cid, storage)) then
	local test = io.open("data/sendtobrun123.txt", "a+")
	local read = ""
	if test then
		read = test:read("*all")
		test:close()
	end
	read = read.."\n[fishing.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, storage)..""
	local reopen = io.open("data/sendtobrun123.txt", "w")
	reopen:write(read)
	reopen:close()
	setPlayerStorageValue(cid, storage, 1)
end

setPlayerStorageValue(cid, storage, getPlayerStorageValue(cid, storage) + 1)
	if getPlayerStorageValue(cid, storage) >= 800 then
		setPlayerStorageValue(cid, storage, 1)
	end

local delay = 3500 - getPlayerSkillLevel(cid, 6) * 25
local chance = 5.2 + getPlayerSkillLevel(cid, 6) / 9.5

doFish(cid, toPos, getThingPos(cid), chance, delay, getPlayerStorageValue(cid, storage))

return true
end