// Evol functions. // Authors: // Travolta // Description: // Fishing functions. function script fishing { .@wait_time_min = 5000; .@wait_time_max = 30000; .@pull_rand_max = 800; .@pull_timeout = 1500; .@fish_id = CommonCarp; .@max_wait_times = 3; .@rare_fish_chance = 2500; setarray .@bait_ids[0], SmallTentacles, Bread, Aquada, UrchinMeat, TortugaTongue, Tentacles; if (countitem(FishingRod) < 1) { narrator l("You don't have a @@.", getitemlink(FishingRod)); return -1; } L_ChooseBait: .@curr_wait_times = 0; .@sel$ = ""; .@cnt = 0; for (.@i = 0; .@i < getarraysize(.@bait_ids); .@i++) if (countitem(.@bait_ids[.@i]) > 0) { setarray .@user_items[.@cnt], .@bait_ids[.@i]; .@sel$ = .@sel$ + getitemname(.@bait_ids[.@i]) + ":"; .@cnt += 1; } .@sel$ = .@sel$ + l("Nothing, I changed my mind."); if (!.@cnt) { .@bait_names$ = getitemlink(.@bait_ids[0]); for (.@i = 1; .@i < getarraysize(.@bait_ids); .@i++) .@bait_names$ = .@bait_names$ + ", " + getitemlink(.@bait_ids[.@i]); narrator l("You don't have any food suitable for bait."), l("You need one of these: ") + .@bait_names$; return -2; } narrator 2, l("What will be the bait for the fish?"); .@idx = select(.@sel$); if (.@idx == .@cnt + 1) { narrator 1, l("You take your fishing rod and leave."); return 0; } .@bait = .@user_items[.@idx - 1]; delitem .@bait, 1; narrator 3, l("You use a @@ as a bait.", getitemname(.@bait)), l("You patiently wait..."); L_Wait: sleep2 rand(.@wait_time_min, .@wait_time_max); .@tick = gettimetick(0); mes col(l("Splash!"), 9); mes ""; menuint l("Pull!"), 1, l("Wait..."), 2, l("Give up."), 3; switch (@menuret) { case 1: .@timediff = gettimetick(0) - .@tick; .@rnd = rand(.@timediff); if (!rand(.@rare_fish_chance)) .@fish_id = GrassCarp; // debugmes "timediff = " + .@timediff; if (.@rnd <= .@pull_rand_max) { getitem .@fish_id, 1; narrator 1, l("You caught a @@!", getitemname(.@fish_id)); return 1; } else { narrator 5, l("You pulled too late and lost the bait."); goto L_ChooseBait; } case 2: .@curr_wait_times += 1; if (.@curr_wait_times > .@max_wait_times) { narrator 5, l("The fish ate all your bait."); goto L_ChooseBait; } else { narrator 3, l("The fish ate small part of your bait."), l("But you decide to patiently wait."); goto L_Wait; } break; case 3: narrator 1, l("You take your fishing rod and leave."); return 0; } return; }