// Evol functions. // Authors: // Travolta // Description: // Fishing functions. function script fishing { if (countitem(FishingRod) < 1) { narrator l("You don't have a @@.", getitemlink(FishingRod)); return -1; } if (Fishing_Tick > gettimetick(2) - 20) { closedialog; return -3; } .@wait_time_min = 8000; .@wait_time_max = 35000; .@pull_rand_max = 800; .@pull_timeout = 1500; .@fish_id = CommonCarp; .@max_wait_times = 3; .@rare_fish_chance = 25; setarray .@bait_ids[0], SmallTentacles, Bread, Aquada, UrchinMeat, TortugaTongue, Tentacles; 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; } Fishing_Tick = gettimetick(2); .@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: getmapxy (.@map$, .@x, .@y, 0); sleep2 rand(.@wait_time_min, .@wait_time_max); .@tick = gettimetick(0); Fishing_Tick = 0; getmapxy (.@mapbis$, .@xbis, .@ybis, 0); if (.@xbis != .@x || .@ybis != .@y || !compare (.@map$, .@mapbis$)) { narrator l("You left your fishing spot!"); close; } 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) == 0) .@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; }